Because Lead Source and Came From are based on entirely different information than the Campaign fields. If there's a difference, trust the Campaign fields as they will be accurate virtually all of the time. The Lead Source and Came From fields, however, are dependent on the information the visitor's web browsers passes us. There's a lot of reasons it will pass us no information. So when you see Lead Source showing Web Direct, and Came From as blank, but the Campaign fields claim something else, this means that your lead arrived at your site to a URL with utm_ variables populated, but the browser didn't pass any information on the referrer.
The Campaign variables are simply a one to one mapping of the utm_ query strings, which can be populated by using our Super URL Builder, or Google's URL Builder (each of which produces identical results, but ours is pre-tagged for Google Adwords, Bing Ads and Yahoo Ads). So if you provide those tools with a desired landing page and five variables, and create a URL using the tool, and a visitor clicks on that URL and submits a form, then those five values appear as Campaign variables. This works virtually every time.
Longer, Technical Answer
However, the Lead Source and Came From depend on something entirely different. Whenever a visitor lands on your page, their browser is supposed to tell the web server (and various analytics tools) when they came from, if anywhere. This is known as the Referrer.
So if your visitor clicked on a link from www.someblog.com/somepage/ to your website, in theory, the visitor's web browser is supposed to inform the server (and analytics tools) that the visitor came from www.someblog.com/somepage/.
Most of the time, this is what happens, but very often the browser does not provide anything. Depending on the nature of your web traffic, the referrer can be blank from 20-50% of the time, even when it shouldn't be.
And when the browser doesn't provide anything (i.e., the referrer is blank), all we can do is leave Came From as a blank value, and set Lead Source as Web Direct.
Why would the visitor's browser not provide a referrer? There are a lot of reasons why.
- The visitor's computer has security software installed (antivirus/firewall/etc) which strips the referrer from all requests
- The visitor is behind a proxy server or a corporate firewall
- The visitor installed a plugin to their browser to hide their referrer (plugins for Chrome & Firefox are available)
- The visitor was on a secure (SSL / HTTPS) site and your site is not a secure site (no SSL / HTTP)
- The link was through a URL shortening service, like bit.ly (though URL shortening will work fine with utm_ tagged links)
- IE drops referrer information when a visitor clicks on a link in a Flash application
- The user initially views your page in a mobile app and then clicks the link such that it "Opens in Safari"
- If your site is on HTTP, and your visitors come through Google's Encrypted Search, or iOS Safari's Google Search bar, you won't get either the keyword or the referrer (though you will if your site is on https)