Under-reporting of organic traffic

  • 30 January 2023
  • 8 replies

Userlevel 5
Badge +9

As part of our migration away from Google Analytics to Amplitude as our primary tool for websites/ apps I'm doing some validation of marketing channel/ campaign data from UTM parameters.

In our "utm_medium" parameter we have a value of "organic"; this has a value of 6,791 sessions in Amplitude for a particular time period....but over in Google Analytics it's vastly higher at 20,803 for the same time period. I've set saveParamsReferrerOncePerSession to false in our Amplitude tags in GTM, and also left unsetParamsReferrerOnNewSession set to false....this configuration I believe should reflect the Google Analytics default "last non-direct click" attribution, so I'm struggling to understand why Amplitude is reporting so much lower?

One thing that did cross my mind is that I don't see utm_medium = organic passed in the URL query string for all clicks from Google organic results for our site. Which suggests to me, perhaps, that Google Analytics might have some automatic config somewhere to be able to assign utm_medium = organic even when that query parameter is absent in this scenario. If that is indeed the case this would explain the drastically different which case how can we configure Amplitude to replicate this?


Best answer by r0bbieWa11ace 30 January 2023, 23:35

View original

8 replies

Userlevel 2
Badge +3

Hey @dangrainger !  In Google Analytics, have you checked how your Channel Groupings are set so they match what you have set in Amplitude? This would be a good place to start as there might be other rules beyond the UTMs that could be defining organic traffic for you in Google Analytics.

Userlevel 6
Badge +9

Thanks for chiming in @r0bbieWa11ace. Super helpful! 😃

Userlevel 5
Badge +9

Thanks...I’ve aligned our channel setup in Amplitude to that used in GA. For “organic search” GA uses “medium exactly matches organic” as the identifier ( This is where I’m getting the discrepancy though in that “organic” values in Amplitude for utm_medium are way lower volume that in GA….which is where I have the suspicion that GA could be injecting that value when a user comes from a Google organic link reagrdless of whether “utm_medium=organic” is present in the URL query string or not.

Assuming this is the case I think I should just be able to get alignment (or close to) in Amplitude by classifying anything with Google as the referrer but no gclid present as organic….in principal this should work as it would ignore paid search (which has gclid parameter). Will give it a try and see where I get to!

Userlevel 2
Badge +3

Hey @dangrainger : I am not aware or have seen anything from that indicates that they add UTM parameters to URLs. What Google does consider as Organic Traffic, based on my experience and documentation reviewed, Organic Traffic is the referral traffic that comes to your site through unpaid search results such as Yahoo, Google, or Bing. This traffic can come from links where no UTMS are present that are indexed by search bots. 

One point of clarification, are you indexing all pages with your utm_medium=organic query string parameter? This could be a factor. 

With regards to your logic above, I agree with your definition of excluding any links containing gclid params from Organic but also make sure you are also taking into consideration with all potential referrers.


Also important to note, you should not expect your traffic metrics to match 100% as both Amplitude and Google have different have different data processing procedures but the metrics should be within an acceptable marginal difference.

Userlevel 5
Badge +9

I did some further testing simply by using dev console to edit the URL of a Google organic result to our website such that it had “dantest” in the query string...note that I did not specify utm_source or utm_medium. In GA I got the below...

...confirming my suspicion. While the source and medium values may not be appended to the query string, there is most definitely something occurring behind the scenes such that medium=organic appears for my traffic in GA. Over in the GA default channel config ( it specifies Organic Search as anything with “medium exactly matches organic”, hence the above test traffic being classified as such.

Over in Amplitude this behind-the-scenes addition of the source and medium doesn’t happen. So for anyone like me migrating from GA to Amplitude and trying to get (near) alignment of channels, the solution should be to have an extra level in the channel creation config to assign “referrer = google (or other engine)” as Organic. Ensure that this happens later than the channel config for PPC or that’ll get collared as Organic too!

As you rightly point out @r0bbieWa11ace , they won’t perfectly align….but I’m happy with a “reasonable” level of difference such that our digital marketing colleagues have comfort with the transition of the tools.

Userlevel 5
Badge +9


Userlevel 2
Badge +3

Hey @dangrainger : 

Thank you for this additional context and the screenshot. Based on your logic, If your Channel rules are looking for UTM Medium, these links do make sense that they are populating in Organic since the channel definition is dependent on if the utm_medium is present and your tests links as you are using utm_campaign to test. Since it is not present then it assumes that this is organic for the Source/Medium based on its processing rules logic to look for the utm_medium to classify which channel to attribute the traffic metrics towards.

In Amplitude, if your Channel Classifiers are set to look for either no UTMs OR where utm_medium=organic then then your traffic attribution should look fairly similar to GAs.


Userlevel 1
Badge +1

Hi @dangrainger

On this post for this part: I should just be able to get alignment (or close to) in Amplitude by classifying anything with Google as the referrer but no gclid present as organic….in principal this should work as it would ignore paid search (which has gclid parameter). Will give it a try and see where I get to!


Did this work well and where did you put that into your channel logic? I can add gclid as a property but then it goes across all channels. Could you share where you placed that more specifically?

We are also seeing the above where most traffic gets attributed correctly but we need fine tuning as some seems to be miscategorized between Direct and Organic. Difficult to delineate in Amplitude