Currently working through this right now! We're enhancing the current stamping that Marketo does—taking the normal stamped fields and calculating Lead Source and Lead Source Details from them.
Here are some warnings:
Social—those will work, but you also need to add the common social shorteners as referrers (t.co, l.facebook.com, etc.).
"Original Referrer"—when this field contains your domain name, it's actually Direct. This happens a lot.
Organic—the best way is to sort out "original referrer contains" and put in the common search engine URLs. "Search Engine Phrase" and the other one are stamped based on certain queries, but it's unreliable because if sites haves internal search bars, these values are falsely populated.
The best route we've found for this is to have one smart campaign triggered which then uses choices (cascading logic) to find the first fit. We watch for "member of smart list" and have different smart lists for each of the common inbound lead sources—direct, organic, web referral, [utm parameters], social. Then the requested smart campaign assigns actual Lead Source and Lead Source Detail.
If you have a UTM framework, then you can program the choices into your cascading logic and assign your own popular Lead Source values. A good example is organic social—if hidden field "UTM Medium" contains "social," then request the "Social" lead source assignment campaign.
We're going to publish an article about this in the next few weeks with more details, but that's a good starting point! Mostly, be wary of Marketo's system stamping, because it's not perfectly intuitive/accurate out of the box.
Cheers,
Edward UnthankFounder and Lead Marketing Technology Consultant
Etumos