My method isn’t going to help with organic traffic. But for paid search, here’s what I do:
I’m using Clickfunnels for landing pages. The method my Infusionsoft mentor taught me was to create a unique landing page for each traffic source. Each unique landing page is integrated with a unique Infusionsoft web form (in a unique campaign). So the link doesn’t need a utm code for source. The web form is only processing one lead source.
A contact comes into one of these unique campaigns (via the web form). Subsequent sequences set three leadsource identifiers: a tag for that specific leadsource is applied, the built-in Leadsource field is set (without overwrite), and a custom field for Latest Leadsource is set (with overwrite).
This is considerably more work to set up than the utm code method, and is definitely not as elegant. However, it is much more robust. Because I now can look for contacts who have no leadsource (i.e., where Infusionsoft intermittently failed to set it) and, by looking either the leadsource tags I applied or the latest leadsource custom field, I can tell what their leadsource field SHOULD be. And then I can set the leadsource field manually (usually done in bulk).
Although setting the built-in Leadsource field fails intermittently, application of a tag has never failed. So while the intermittent failures are annoying and frustrating, at least I am able to recover.
As an aside, the other benefit of the method I’m using is that I can customize the landing page and TY page for each lead source if I want to. This is helpful for increasing relevancy on AdWords landing pages, for example. I don’t need to change the overall look of the landing page, but I can tweak the text to better match my keyword.
Hope this helps!