Why Google Ads and Google Analytics data don’t match & how to fix it
I am often asked this question:
“Why don’t my Google Ads and Google Analytics 4 data match?”
and my answer is usually,
“I can’t say for sure without first diving into your Google Ads account and Google Analytics 4 property and checking your website tracking setup”
And this is true.
There is no single straightforward answer to this question, and depending on your expertise, finding a solution could take several hours or days.
First things first.
It is common and normal to have data discrepancies between Google Ads and Google Analytics, so there is no need to panic.
However, it is not normal to have a very large data discrepancy between Google Ads and GA4 data.
For example, your Google Ads campaign reports 100 clicks, but your GA4 property reports only 10 sessions from that campaign in the same time period.
Before you take any action, you need to first measure the level of data discrepancies between Google Ads and GA4.
Measure the level of data discrepancy between Google Ads and Google Analytics 4
In order to measure the level of discrepancy between Google Ads and GA4 data, follow the steps below:
Step-1: Create a new exploration report with the following dimensions and metrics:
Dimensions: Google Ads Campaign
Metrics: Google Ads Clicks, Sessions
Step-2: Measure the level of discrepancy between Google Ads clicks and GA4 sessions for all campaigns or for each individual Google Ads campaign.
A small data discrepancy is normal.
But if you see a lot of difference (like in the screenshot above), it is a cause for concern.
From the screenshot above, we can conclude that Google Ads clicks are far more than Google Analytics sessions.
So, there is clearly a huge data discrepancy between Google Ads and Google Analytics, and we need to dig deeper to find the cause.
21 causes of data discrepancy between Google Ads and Google Analytics 4 data
The following are the most common reasons for data discrepancies between Google Ads and Google Analytics 4 data:
- Google Ads account is not linked to GA4 property.
- Wrong Google Ads account linked to GA4 property.
- Multiple Google Ads accounts linked to the same GA4 property.
- Google Ads Clicks and GA4 sessions are fundamentally different metrics.
- Differences in invalid traffic filtering.
- GA4 tracking code missing from landing pages.
- GA4 tracking code does not fire on landing pages.
- Multiple GA4 tracking codes fire on landing pages.
- Data filters exclude Google Analytics session data.
- Manual tagging is not configured correctly.
- Use of both manual tagging and auto-tagging for destination URLs of Google Ads.
- GCLID parameter dropped because of redirect.
- Google Analytics cannot read the GCLID value.
- GCLID parameters throw error pages.
- Bookmark contains GCLID parameter.
- Differences between Google Ads and GA4 conversion tracking.
- Data sampling issue creating data discrepancies.
- Use of different conversion windows for comparison.
- Use of different attribution models for comparison.
- Use of different time zones for comparison.
- Use of different time periods for comparison.
Now, you have got a pretty good idea of why there is no single straightforward answer.
Get weekly practical tips on GA4 and/or BigQuery to accurately track and read your analytics data.
#1 Google Ads account is not linked to GA4 property.
If your Google Ads account is not linked to your GA4 property then all of the traffic from Google Ads can be reported as organic traffic from Google in GA4.
You may not see any Google Ads traffic data being reported in your GA4 reports.
If you have this issue, you need to link your Google Ads account to your GA4 property.
#2 Wrong Google Ads account linked to GA4 property.
If you have access to multiple Google Ads accounts, you may have accidentally linked the wrong one to GA4.
Make sure that the correct Google Ads account is linked to your GA4 property.
This mistake is often overlooked.
#3 Multiple Google Ads accounts linked to the same GA4 property.
Linking multiple Google Ads accounts to the same GA4 property can create discrepancies between GA4 and Google Ads data.
For example,
Different conversion settings across Google Ads accounts (such as conversion windows and counting methods) can result in discrepancies when data is aggregated in GA4.
Incorrect or inconsistent tagging (like auto-tagging enabled in some Google Ads accounts and not others or manual tagging is inconsistent) can result in data discrepancies.
Avoid linking multiple Google Ads accounts to the same GA4 property.
#4 Google Ads Clicks and GA4 sessions are fundamentally different metrics.
There is always a very strong probability that the number of clicks reported by Google ads does not match the number of resulting GA4 sessions.
This is because ‘clicks’ and ‘sessions’ are fundamentally different metrics.
A click is a hit (user interaction), whereas a GA4 session is a group of events recorded for a user over a given time period.
If a user clicks the ad multiple times within a single GA4 session period (typically 30 minutes), GA4 may only register one session, but Google Ads can register multiple clicks.
The following scenarios illustrate how ad clicks can result in different numbers of GA4 sessions:
One Ad Click Results in Multiple GA4 Sessions
A user clicks an ad, visits the website, and then leaves. Later, within the same day, they return directly to the website.
If the user returns after the session timeout period (usually 30 minutes of inactivity), GA4 may start a new session.
However, because of the non-direct click attribution model, the new session will still be attributed to the last Google Ad click, which can lead to one click, resulting in multiple GA4 sessions.
Ad Clicks Greater Than GA4 Sessions
A user clicks on an ad multiple times within the same GA4 session.
Google Ads records each ad click, but GA4 may only register one session, which can lead to ad clicks greater than GA4 sessions.
Ad Clicks Equal to GA4 Sessions
Ad clicks could be equal to the number of GA4 sessions if each ad click resulted in a distinct GA4 session initiation.
So, here, we assume that a user does not click on the same ad multiple times and visits the website only once after clicking on an ad.
Ad Clicks Lower Than GA4 Sessions
Google Ads filters out invalid clicks, but GA4 can’t filter invalid sessions resulting from such ad clicks, which could lead to ad clicks being lower than GA4 sessions.
#5 Differences in invalid traffic filtering.
Google Ads and GA4 have different criteria for filtering invalid traffic, which could create discrepancies between GA4 and Google Ads data.
Google Ads filter out invalid clicks, but GA4 can’t filter invalid sessions resulting from such ad clicks.
So GA4 will track and report sessions even for invalid clicks.
If your Google Ads account is getting a lot of invalid clicks (maybe because of click fraud or a spambot attack), you may see a lot more GA4 sessions than ad clicks.
GA4 also has mechanisms to identify and not register bot traffic.
So, there could be a case that the session resulted from a valid Google Ads click is not registered by GA4.
As a result, fewer sessions could be recorded in GA4 compared to the clicks reported in Google Ads.
#6 GA4 tracking code missing from landing pages.
If the Google Ad’s landing page doesn’t contain a valid GA4 tracking code, GA4 will not be able to track sessions, but Google Ads can still track and report on ad clicks.
In that case, the number of ad clicks could be more than the number of GA4 sessions.
Make sure to add a valid GA4 tracking code on all your Google Ads’s landing pages.
Use a website crawler like ‘Screaming frog SEO Spider’ to find pages with missing GA44 tracking code.
For more details, check out this article: Learn to fix “Some of your pages are not tagged” in GTM.
#7 GA4 tracking code does not fire on landing pages.
Whenever the GA4 tracking code does not fire for some reason on the landing page of a Google ad, GA4 does not track the session that resulted from an ad click, but Google Ads can still track and report on the ad click.
In that case, the number of ad clicks could be more than the number of GA4 sessions.
Following are the events in which your Google Analytics 4 tracking code may not fire:
- Google Analytics tracking code is not a valid code.
- A user is using a web browser like ‘Brave’ or ‘DuckDuckGo’ that automatically block third-party trackers, including GA4 and GTM.
- The user has disabled JavaScript, Cookies or using a browser setting that automatically block third-party trackers like GA4.
- The user is using a browser privacy extension (such as ‘Ghostery’, ‘Privacy Badger’, etc.) that blocks GA4/GTM by default.
- The user is using an Ad Blocker that prevents the GA4 tracking code from firing.
- The automatic rejection or blocking of cookie consent notices by browser extensions, ad blockers, VPNs, etc, can also result in GA4 tracking not firing on landing pages.
- A server-side or client-side error(s) could prevent the GA4 tracking code from being executed.
For more details, check out this article: GA4 data not matching? Here is why.
#8 Multiple GA4 tracking codes fire on landing pages.
This issue has become more common lately as more marketers have started using Google Tag Manager (GTM).
Often, marketers forget to remove the hardcoded GA4 tracking code from the website once they start using GTM.
As a result, the tracking code is fired twice on each landing page, once via the code, hardcoded on the page and once via GTM.
So, every click on a Google ad could trigger two GA4 sessions. In that case, you may see a lot more sessions than ad clicks.
Make sure that the Google Analytics tracking code is fired only once on a page.
You can identify this issue by using ‘Google Tag Assistant’ and by learning to install Google Tag Manager correctly via this article: Google Tag Manager Implementation and Deployment Guide.
#9 Data filters exclude Google Analytics session data.
If the data filters are not set up correctly in your GA4 property, they could remove some or all of the GA4 session data from your reports.
So, when you compare the GA4 session data with Google Ads click data, you are more likely to see many data discrepancies.
For more details, see this article: How to create and test filters in Google Analytics 4 (GA4).
#10 Manual tagging is not configured correctly.
You need to tag the Google Ads destination URLs in order to import Google Ads data into GA4 property.
You can do that either manually or through auto-tagging.
If the manual tagging of destination URLs is not correct, GA4 may choose to ignore the campaign tracking parameters and treat Google Ads traffic as Google organic traffic.
This could result in many discrepancies between Google Ads and GA4 data.
The solution to this problem is to avoid manual tagging and use auto-tagging instead.
Google also strongly recommends using auto-tagging for Google Ads campaigns.
If you have to use manual tagging then make sure the UTM parameters are correct: GA4 UTM parameters not working? Here is how to fix it.
#11 Use of both manual tagging and auto-tagging for destination URLs of Google Ads.
Using both manual tagging and auto-tagging for destination URLs of Google Ads can create discrepancies between GA4 and Google Ads data.
Following is an example of an Ad URL which uses both manual and auto-tagging:
https://www.abc.com/?utm_source=google&utm_medium=ppc&utm_term=car-insurance&utm_content=text-ad&utm_campaign=car-insurance-promo-feb&gclid=CLjTpNrg8NIC
When using auto-tagging, Google consistently tags the campaign source and medium as “google / cpc” (lowercase).
But if you are also using manual tagging, you may, over a long period of time, tag the same campaign source and medium differently as google/ppc, google/PPC, google/CPC, Google/CPC, etc.
In GA4, traffic source names are case-sensitive.
So Google is different from google and Google.
Similarly, traffic medium names are case-sensitive.
So cpc is different from CPC, Cpc.
If you are inconsistent with the names and spellings of the values of your campaign tracking variables, you are most likely to see multiple/duplicate entries in your GA4 reports.
In GA4, when both manual and auto-tagging are present, the auto-tagged information (GCLID) generally takes precedence, which means that the manual UTM parameters you added to your destination URLs will be ignored, potentially leading to the loss of custom campaign information you might have included in the UTM parameters.
The best practice is to avoid using both manual and auto-tagging at the same time.
If you are using auto-tagging, make sure that no URL is manually tagged.
#12 GCLID parameter dropped because of redirect.
Sometimes, redirects can cause a GCLID parameter to be dropped from the landing page URLs (this is quite common when redirecting from a desktop to a mobile website).
When the GLCID parameter is dropped, the auto-tagging doesn’t work and Google Ads campaign data is not sent to GA4.
In order to test whether the GCLID parameter is dropped or not, follow the steps below:
Step-1: Add ‘?gclid=test’ to the end of the original destination URL of your Google Ads Ad.
For e.g. https://www.abc.com/?gclid=test.
If glcid=test is not the first parameter, then add ‘&gclid=test’ to the end of the destination URL of your Google Ads Ad.
For e.g. https://www.abc.com/?source=google&gclid=test
Step-2: Copy-paste the modified URL into the address bar of your browser window and then press the ‘enter’ key:
Step-3: If the URL of the resulting page does not display ‘gclid=test’ then it means the redirect did not carry the GCLID parameter from the original URL to the final URL.
For example,
Let say the destination URL with auto-tagging is:
https://www.abc.com/?gclid=test
when the redirect occurs, the final URL becomes:
https://www.abc.com/tops/
instead of:
https://www.abc.com/tops/?gclid=test
To resolve this issue, you can do two things:
#1 Prevent the redirect from occurring.
You can do that by manually updating all of your original ad destination URLs to final URLs.
For example, if your original ad destination URL is https://www.abc.com/ but it redirects to https://www.abc.com/tops/ then use the later URL as your ad destination URL.
This way, when a user clicks on an ad, no redirect will take place, and hence, no GCLID parameter will be dropped.
#2 Configure your server to allow redirects to carry the GCLID parameter from the original URL to the final URL.
For example:
Let’s say the destination URL with auto-tagging is:
https://www.abc.com/?gclid=test
when the redirect occurs, the final URL becomes:
https://www.abc.com/tops/?gclid=test
Here the URL has changed but the GCLID parameter remains intact.
That means your redirect is able to carry the GCLID parameter from the original to the destination URL.
#13 Google Analytics cannot read the GCLID value.
Sometimes, GA4 can not read the GCLID value even when you can see the value in the browser address bar.
This can happen when:
#1 GA4 Tracking code on the landing page is not valid.
#2 GA4 tracking code is valid but is not fired for some reason.
#3 GA4 tracking code is embedded in an IFRAME and the IFRAME is not a parent frame.
If the GA4 tracking code is embedded in a child frame, it can not read the GCLID value, just as a child frame can not read the address URL of a parent frame.
So, make sure the GA4 tracking code is always embedded in the parent frame.
#4 Your web server is altering or truncating the GCLID parameter. In order to test whether or not your server is truncating the GCLID parameter, follow the steps below:
Step-1: Add the following GCLID parameter to the end of the destination URL of your Google ad:
gclid=TeSter-123-ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-0123456789-AaBbCcDdEeFfGgHhIiJjKkLl
For example:
gclid=TeSter-123-ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-0123456789-AaBbCcDdEeFfGgHhIiJjKkLl
The value of this GCLID parameter is 100 characters, which is the maximum value a GCLID parameter can store.
Step-2: Copy-paste the modified URL into the address bar of your browser window and press enter.
Step-3: If the entire value of the GCLID parameter remains intact, then it means your server is not truncating the GCLID value.
#14 GCLID parameters throw error pages.
This can happen when the presence of the GCLID parameter in a URL breaks the URL rewrite rule.
You would need to configure your web server so that it accepts the GCLID parameters.
Update the URL rewrite rules to ensure they retain the GCLID parameter. This prevents the parameter from being stripped, which can cause errors.
For example:
RewriteCond %{QUERY_STRING} ^gclid=([^&]+)
RewriteRule ^product/(.*)$ /product.php?id=$1&gclid=%1 [QSA,L]
#15 Bookmark contains GCLID parameter.
Sometimes, a user bookmarks a landing page, and the page URL also contains the GCLID parameter.
In that case, when a user returns to your website via the bookmark, Google Analytics records a session resulting from an ad click, but Google Ads does not record and report an ad click.
If many users return to the website via such bookmarks, GA4 can record more sessions than ad clicks reported by Google Ads.
#16 Differences between Google Ads and GA4 conversion tracking.
Certain purchases and conversions can be recorded in GA4 but not Google Ads and vice versa.
This can create data discrepancies between GA4 and Google Ads.
For example, if GA4 and Google Ads use different attribution models, they can attribute the same conversion differently.
Similarly, GA4 can experience delays in processing and importing conversion data, leading to temporary discrepancies when compared to the more immediate reporting in Google Ads.
I have explained the difference between Google Ads and analytics conversion tracking in this article: Difference between Google Ads and Google Analytics Conversion Tracking
#17 Data sampling issue creating data discrepancies.
Data sampling in GA4 can easily skew your GA4 sessions data and as a result, you may see a lot of discrepancy between Google Ads clicks and GA4 sessions.
Unlike GA4, Google Ads data is not sampled.
So, you could be in a situation where you compare heavily sampled GA4 data with unsampled Google Ads data leading to discrepancies.
#18 Use of different conversion windows for comparison.
The use of different conversion windows between GA4 and Google Ads can cause data discrepancy.
If GA4 and Google Ads have different conversion windows, they may count conversions differently.
For example, a longer conversion window in GA4 might capture conversions that occur after the window in Google Ads has closed, leading to discrepancies in conversion counts.
Make sure you use the same conversion window for both platforms.
#19 Use of different attribution models for comparison.
The use of different attribution models between GA4 and Google Ads can cause data discrepancy.
Different attribution models can lead to variations in how conversions are credited.
For example, GA4’s default data-driven attribution model distributes credit across multiple touchpoints, while Google Ads might use a last-click model, attributing all credit to the final interaction.
This can result in different conversion numbers and insights into which ads are driving conversions.
Make sure you use the same attribution model for both platforms.
#20 Use of different time zones for comparison.
The use of different time zones between GA4 and Google Ads can cause data discrepancy.
These discrepancies are most noticeable around midnight and at the start/end of reporting periods.
To mitigate these issues align time zones between GA4 and Google Ads.
If time zones can’t be changed, be aware of the discrepancy and account for it in your data analysis.
Use longer reporting periods (e.g., weekly or monthly) to minimize the impact of daily discrepancies.
#21 Use of different time periods for comparison.
Using different time periods for comparison between GA4 and Google Ads can lead to significant data discrepancies.
Even a one-day difference can significantly impact the comparison, especially for high-traffic websites.
I am often asked this question:
“Why don’t my Google Ads and Google Analytics 4 data match?”
and my answer is usually,
“I can’t say for sure without first diving into your Google Ads account and Google Analytics 4 property and checking your website tracking setup”
And this is true.
There is no single straightforward answer to this question, and depending on your expertise, finding a solution could take several hours or days.
First things first.
It is common and normal to have data discrepancies between Google Ads and Google Analytics, so there is no need to panic.
However, it is not normal to have a very large data discrepancy between Google Ads and GA4 data.
For example, your Google Ads campaign reports 100 clicks, but your GA4 property reports only 10 sessions from that campaign in the same time period.
Before you take any action, you need to first measure the level of data discrepancies between Google Ads and GA4.
Measure the level of data discrepancy between Google Ads and Google Analytics 4
In order to measure the level of discrepancy between Google Ads and GA4 data, follow the steps below:
Step-1: Create a new exploration report with the following dimensions and metrics:
Dimensions: Google Ads Campaign
Metrics: Google Ads Clicks, Sessions
Step-2: Measure the level of discrepancy between Google Ads clicks and GA4 sessions for all campaigns or for each individual Google Ads campaign.
A small data discrepancy is normal.
But if you see a lot of difference (like in the screenshot above), it is a cause for concern.
From the screenshot above, we can conclude that Google Ads clicks are far more than Google Analytics sessions.
So, there is clearly a huge data discrepancy between Google Ads and Google Analytics, and we need to dig deeper to find the cause.
21 causes of data discrepancy between Google Ads and Google Analytics 4 data
The following are the most common reasons for data discrepancies between Google Ads and Google Analytics 4 data:
- Google Ads account is not linked to GA4 property.
- Wrong Google Ads account linked to GA4 property.
- Multiple Google Ads accounts linked to the same GA4 property.
- Google Ads Clicks and GA4 sessions are fundamentally different metrics.
- Differences in invalid traffic filtering.
- GA4 tracking code missing from landing pages.
- GA4 tracking code does not fire on landing pages.
- Multiple GA4 tracking codes fire on landing pages.
- Data filters exclude Google Analytics session data.
- Manual tagging is not configured correctly.
- Use of both manual tagging and auto-tagging for destination URLs of Google Ads.
- GCLID parameter dropped because of redirect.
- Google Analytics cannot read the GCLID value.
- GCLID parameters throw error pages.
- Bookmark contains GCLID parameter.
- Differences between Google Ads and GA4 conversion tracking.
- Data sampling issue creating data discrepancies.
- Use of different conversion windows for comparison.
- Use of different attribution models for comparison.
- Use of different time zones for comparison.
- Use of different time periods for comparison.
Now, you have got a pretty good idea of why there is no single straightforward answer.
#1 Google Ads account is not linked to GA4 property.
If your Google Ads account is not linked to your GA4 property then all of the traffic from Google Ads can be reported as organic traffic from Google in GA4.
You may not see any Google Ads traffic data being reported in your GA4 reports.
If you have this issue, you need to link your Google Ads account to your GA4 property.
#2 Wrong Google Ads account linked to GA4 property.
If you have access to multiple Google Ads accounts, you may have accidentally linked the wrong one to GA4.
Make sure that the correct Google Ads account is linked to your GA4 property.
This mistake is often overlooked.
#3 Multiple Google Ads accounts linked to the same GA4 property.
Linking multiple Google Ads accounts to the same GA4 property can create discrepancies between GA4 and Google Ads data.
For example,
Different conversion settings across Google Ads accounts (such as conversion windows and counting methods) can result in discrepancies when data is aggregated in GA4.
Incorrect or inconsistent tagging (like auto-tagging enabled in some Google Ads accounts and not others or manual tagging is inconsistent) can result in data discrepancies.
Avoid linking multiple Google Ads accounts to the same GA4 property.
#4 Google Ads Clicks and GA4 sessions are fundamentally different metrics.
There is always a very strong probability that the number of clicks reported by Google ads does not match the number of resulting GA4 sessions.
This is because ‘clicks’ and ‘sessions’ are fundamentally different metrics.
A click is a hit (user interaction), whereas a GA4 session is a group of events recorded for a user over a given time period.
If a user clicks the ad multiple times within a single GA4 session period (typically 30 minutes), GA4 may only register one session, but Google Ads can register multiple clicks.
The following scenarios illustrate how ad clicks can result in different numbers of GA4 sessions:
One Ad Click Results in Multiple GA4 Sessions
A user clicks an ad, visits the website, and then leaves. Later, within the same day, they return directly to the website.
If the user returns after the session timeout period (usually 30 minutes of inactivity), GA4 may start a new session.
However, because of the non-direct click attribution model, the new session will still be attributed to the last Google Ad click, which can lead to one click, resulting in multiple GA4 sessions.
Ad Clicks Greater Than GA4 Sessions
A user clicks on an ad multiple times within the same GA4 session.
Google Ads records each ad click, but GA4 may only register one session, which can lead to ad clicks greater than GA4 sessions.
Ad Clicks Equal to GA4 Sessions
Ad clicks could be equal to the number of GA4 sessions if each ad click resulted in a distinct GA4 session initiation.
So, here, we assume that a user does not click on the same ad multiple times and visits the website only once after clicking on an ad.
Ad Clicks Lower Than GA4 Sessions
Google Ads filters out invalid clicks, but GA4 can’t filter invalid sessions resulting from such ad clicks, which could lead to ad clicks being lower than GA4 sessions.
#5 Differences in invalid traffic filtering.
Google Ads and GA4 have different criteria for filtering invalid traffic, which could create discrepancies between GA4 and Google Ads data.
Google Ads filter out invalid clicks, but GA4 can’t filter invalid sessions resulting from such ad clicks.
So GA4 will track and report sessions even for invalid clicks.
If your Google Ads account is getting a lot of invalid clicks (maybe because of click fraud or a spambot attack), you may see a lot more GA4 sessions than ad clicks.
GA4 also has mechanisms to identify and not register bot traffic.
So, there could be a case that the session resulted from a valid Google Ads click is not registered by GA4.
As a result, fewer sessions could be recorded in GA4 compared to the clicks reported in Google Ads.
#6 GA4 tracking code missing from landing pages.
If the Google Ad’s landing page doesn’t contain a valid GA4 tracking code, GA4 will not be able to track sessions, but Google Ads can still track and report on ad clicks.
In that case, the number of ad clicks could be more than the number of GA4 sessions.
Make sure to add a valid GA4 tracking code on all your Google Ads’s landing pages.
Use a website crawler like ‘Screaming frog SEO Spider’ to find pages with missing GA44 tracking code.
For more details, check out this article: Learn to fix “Some of your pages are not tagged” in GTM.
#7 GA4 tracking code does not fire on landing pages.
Whenever the GA4 tracking code does not fire for some reason on the landing page of a Google ad, GA4 does not track the session that resulted from an ad click, but Google Ads can still track and report on the ad click.
In that case, the number of ad clicks could be more than the number of GA4 sessions.
Following are the events in which your Google Analytics 4 tracking code may not fire:
- Google Analytics tracking code is not a valid code.
- A user is using a web browser like ‘Brave’ or ‘DuckDuckGo’ that automatically block third-party trackers, including GA4 and GTM.
- The user has disabled JavaScript, Cookies or using a browser setting that automatically block third-party trackers like GA4.
- The user is using a browser privacy extension (such as ‘Ghostery’, ‘Privacy Badger’, etc.) that blocks GA4/GTM by default.
- The user is using an Ad Blocker that prevents the GA4 tracking code from firing.
- The automatic rejection or blocking of cookie consent notices by browser extensions, ad blockers, VPNs, etc, can also result in GA4 tracking not firing on landing pages.
- A server-side or client-side error(s) could prevent the GA4 tracking code from being executed.
For more details, check out this article: GA4 data not matching? Here is why.
#8 Multiple GA4 tracking codes fire on landing pages.
This issue has become more common lately as more marketers have started using Google Tag Manager (GTM).
Often, marketers forget to remove the hardcoded GA4 tracking code from the website once they start using GTM.
As a result, the tracking code is fired twice on each landing page, once via the code, hardcoded on the page and once via GTM.
So, every click on a Google ad could trigger two GA4 sessions. In that case, you may see a lot more sessions than ad clicks.
Make sure that the Google Analytics tracking code is fired only once on a page.
You can identify this issue by using ‘Google Tag Assistant’ and by learning to install Google Tag Manager correctly via this article: Google Tag Manager Implementation and Deployment Guide.
#9 Data filters exclude Google Analytics session data.
If the data filters are not set up correctly in your GA4 property, they could remove some or all of the GA4 session data from your reports.
So, when you compare the GA4 session data with Google Ads click data, you are more likely to see many data discrepancies.
For more details, see this article: How to create and test filters in Google Analytics 4 (GA4).
#10 Manual tagging is not configured correctly.
You need to tag the Google Ads destination URLs in order to import Google Ads data into GA4 property.
You can do that either manually or through auto-tagging.
If the manual tagging of destination URLs is not correct, GA4 may choose to ignore the campaign tracking parameters and treat Google Ads traffic as Google organic traffic.
This could result in many discrepancies between Google Ads and GA4 data.
The solution to this problem is to avoid manual tagging and use auto-tagging instead.
Google also strongly recommends using auto-tagging for Google Ads campaigns.
If you have to use manual tagging then make sure the UTM parameters are correct: GA4 UTM parameters not working? Here is how to fix it.
#11 Use of both manual tagging and auto-tagging for destination URLs of Google Ads.
Using both manual tagging and auto-tagging for destination URLs of Google Ads can create discrepancies between GA4 and Google Ads data.
Following is an example of an Ad URL which uses both manual and auto-tagging:
https://www.abc.com/?utm_source=google&utm_medium=ppc&utm_term=car-insurance&utm_content=text-ad&utm_campaign=car-insurance-promo-feb&gclid=CLjTpNrg8NIC
When using auto-tagging, Google consistently tags the campaign source and medium as “google / cpc” (lowercase).
But if you are also using manual tagging, you may, over a long period of time, tag the same campaign source and medium differently as google/ppc, google/PPC, google/CPC, Google/CPC, etc.
In GA4, traffic source names are case-sensitive.
So Google is different from google and Google.
Similarly, traffic medium names are case-sensitive.
So cpc is different from CPC, Cpc.
If you are inconsistent with the names and spellings of the values of your campaign tracking variables, you are most likely to see multiple/duplicate entries in your GA4 reports.
In GA4, when both manual and auto-tagging are present, the auto-tagged information (GCLID) generally takes precedence, which means that the manual UTM parameters you added to your destination URLs will be ignored, potentially leading to the loss of custom campaign information you might have included in the UTM parameters.
The best practice is to avoid using both manual and auto-tagging at the same time.
If you are using auto-tagging, make sure that no URL is manually tagged.
#12 GCLID parameter dropped because of redirect.
Sometimes, redirects can cause a GCLID parameter to be dropped from the landing page URLs (this is quite common when redirecting from a desktop to a mobile website).
When the GLCID parameter is dropped, the auto-tagging doesn’t work and Google Ads campaign data is not sent to GA4.
In order to test whether the GCLID parameter is dropped or not, follow the steps below:
Step-1: Add ‘?gclid=test’ to the end of the original destination URL of your Google Ads Ad.
For e.g. https://www.abc.com/?gclid=test.
If glcid=test is not the first parameter, then add ‘&gclid=test’ to the end of the destination URL of your Google Ads Ad.
For e.g. https://www.abc.com/?source=google&gclid=test
Step-2: Copy-paste the modified URL into the address bar of your browser window and then press the ‘enter’ key:
Step-3: If the URL of the resulting page does not display ‘gclid=test’ then it means the redirect did not carry the GCLID parameter from the original URL to the final URL.
For example,
Let say the destination URL with auto-tagging is:
https://www.abc.com/?gclid=test
when the redirect occurs, the final URL becomes:
https://www.abc.com/tops/
instead of:
https://www.abc.com/tops/?gclid=test
To resolve this issue, you can do two things:
#1 Prevent the redirect from occurring.
You can do that by manually updating all of your original ad destination URLs to final URLs.
For example, if your original ad destination URL is https://www.abc.com/ but it redirects to https://www.abc.com/tops/ then use the later URL as your ad destination URL.
This way, when a user clicks on an ad, no redirect will take place, and hence, no GCLID parameter will be dropped.
#2 Configure your server to allow redirects to carry the GCLID parameter from the original URL to the final URL.
For example:
Let’s say the destination URL with auto-tagging is:
https://www.abc.com/?gclid=test
when the redirect occurs, the final URL becomes:
https://www.abc.com/tops/?gclid=test
Here the URL has changed but the GCLID parameter remains intact.
That means your redirect is able to carry the GCLID parameter from the original to the destination URL.
#13 Google Analytics cannot read the GCLID value.
Sometimes, GA4 can not read the GCLID value even when you can see the value in the browser address bar.
This can happen when:
#1 GA4 Tracking code on the landing page is not valid.
#2 GA4 tracking code is valid but is not fired for some reason.
#3 GA4 tracking code is embedded in an IFRAME and the IFRAME is not a parent frame.
If the GA4 tracking code is embedded in a child frame, it can not read the GCLID value, just as a child frame can not read the address URL of a parent frame.
So, make sure the GA4 tracking code is always embedded in the parent frame.
#4 Your web server is altering or truncating the GCLID parameter. In order to test whether or not your server is truncating the GCLID parameter, follow the steps below:
Step-1: Add the following GCLID parameter to the end of the destination URL of your Google ad:
gclid=TeSter-123-ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-0123456789-AaBbCcDdEeFfGgHhIiJjKkLl
For example:
gclid=TeSter-123-ABCDEFGHIJKLMNOPQRSTUVWXYZ-abcdefghijklmnopqrstuvwxyz-0123456789-AaBbCcDdEeFfGgHhIiJjKkLl
The value of this GCLID parameter is 100 characters, which is the maximum value a GCLID parameter can store.
Step-2: Copy-paste the modified URL into the address bar of your browser window and press enter.
Step-3: If the entire value of the GCLID parameter remains intact, then it means your server is not truncating the GCLID value.
#14 GCLID parameters throw error pages.
This can happen when the presence of the GCLID parameter in a URL breaks the URL rewrite rule.
You would need to configure your web server so that it accepts the GCLID parameters.
Update the URL rewrite rules to ensure they retain the GCLID parameter. This prevents the parameter from being stripped, which can cause errors.
For example:
RewriteCond %{QUERY_STRING} ^gclid=([^&]+)
RewriteRule ^product/(.*)$ /product.php?id=$1&gclid=%1 [QSA,L]
#15 Bookmark contains GCLID parameter.
Sometimes, a user bookmarks a landing page, and the page URL also contains the GCLID parameter.
In that case, when a user returns to your website via the bookmark, Google Analytics records a session resulting from an ad click, but Google Ads does not record and report an ad click.
If many users return to the website via such bookmarks, GA4 can record more sessions than ad clicks reported by Google Ads.
#16 Differences between Google Ads and GA4 conversion tracking.
Certain purchases and conversions can be recorded in GA4 but not Google Ads and vice versa.
This can create data discrepancies between GA4 and Google Ads.
For example, if GA4 and Google Ads use different attribution models, they can attribute the same conversion differently.
Similarly, GA4 can experience delays in processing and importing conversion data, leading to temporary discrepancies when compared to the more immediate reporting in Google Ads.
I have explained the difference between Google Ads and analytics conversion tracking in this article: Difference between Google Ads and Google Analytics Conversion Tracking
#17 Data sampling issue creating data discrepancies.
Data sampling in GA4 can easily skew your GA4 sessions data and as a result, you may see a lot of discrepancy between Google Ads clicks and GA4 sessions.
Unlike GA4, Google Ads data is not sampled.
So, you could be in a situation where you compare heavily sampled GA4 data with unsampled Google Ads data leading to discrepancies.
#18 Use of different conversion windows for comparison.
The use of different conversion windows between GA4 and Google Ads can cause data discrepancy.
If GA4 and Google Ads have different conversion windows, they may count conversions differently.
For example, a longer conversion window in GA4 might capture conversions that occur after the window in Google Ads has closed, leading to discrepancies in conversion counts.
Make sure you use the same conversion window for both platforms.
#19 Use of different attribution models for comparison.
The use of different attribution models between GA4 and Google Ads can cause data discrepancy.
Different attribution models can lead to variations in how conversions are credited.
For example, GA4’s default data-driven attribution model distributes credit across multiple touchpoints, while Google Ads might use a last-click model, attributing all credit to the final interaction.
This can result in different conversion numbers and insights into which ads are driving conversions.
Make sure you use the same attribution model for both platforms.
#20 Use of different time zones for comparison.
The use of different time zones between GA4 and Google Ads can cause data discrepancy.
These discrepancies are most noticeable around midnight and at the start/end of reporting periods.
To mitigate these issues align time zones between GA4 and Google Ads.
If time zones can’t be changed, be aware of the discrepancy and account for it in your data analysis.
Use longer reporting periods (e.g., weekly or monthly) to minimize the impact of daily discrepancies.
#21 Use of different time periods for comparison.
Using different time periods for comparison between GA4 and Google Ads can lead to significant data discrepancies.
Even a one-day difference can significantly impact the comparison, especially for high-traffic websites.
My best selling books on Digital Analytics and Conversion Optimization
Maths and Stats for Web Analytics and Conversion Optimization
This expert guide will teach you how to leverage the knowledge of maths and statistics in order to accurately interpret data and take actions, which can quickly improve the bottom-line of your online business.
Master the Essentials of Email Marketing Analytics
This book focuses solely on the ‘analytics’ that power your email marketing optimization program and will help you dramatically reduce your cost per acquisition and increase marketing ROI by tracking the performance of the various KPIs and metrics used for email marketing.
Attribution Modelling in Google Analytics and BeyondSECOND EDITION OUT NOW!
Attribution modelling is the process of determining the most effective marketing channels for investment. This book has been written to help you implement attribution modelling. It will teach you how to leverage the knowledge of attribution modelling in order to allocate marketing budget and understand buying behaviour.
Attribution Modelling in Google Ads and Facebook
This book has been written to help you implement attribution modelling in Google Ads (Google AdWords) and Facebook. It will teach you, how to leverage the knowledge of attribution modelling in order to understand the customer purchasing journey and determine the most effective marketing channels for investment.