This article describes issues related to Google Analytics 4, if your issue concerns Universal Google Analytics please read the Universal Analytics - Troubleshooting.
If you cannot find the reason for your mismatch in this article, you can try troubleshooting your data source using the Query Explorer as described in this article.
Data doesn't match the UI
Funnel fetches Google Analytics 4 (GA4) data from the Analytics Data API by querying the dimensions and metrics you select upon connecting a data source. Depending on the selected dimensions and their values, the API can sometimes filter data. The Google Analytics API will in some cases only return data for rows that have values for all dimensions queried. When data is missing for one or more of the dimensions, Google will not return that row, hence filtering of the data occurs. The API should however be consistent with the UI. This means that you can confirm if the data for a certain Google Analytics data source in Funnel is correct by creating a custom report containing the same dimensions in the UI that you selected when connecting your data source.
If the custom report matches the numbers you are seeing in Funnel we suggest that you either remove the dimension(s) that are filtering the data from your data source, or if these dimensions are necessary for your reporting, that you connect another data source without them. If you choose to connect a new data source, please be mindful of double counting and remember to filter your data on data source if you choose overlapping metrics.
Missing recent data
If the numbers for the most recent data are too low that can be due to Google's data freshness (the delay before the data is available). The same delay applies to the Google Analytics UI but depending on when you look in GA vs Funnel or if Funnel hasn't received that data yet this can still happen. For standard properties this delay is up to 12h before all data has been processed. For 360 properties, Google Analytics processing time can be up to 24+ hours depending on what type of premium user you are.
Read about the limits limit in Google help article here:
Missing older data
If you get data for recent time periods but completely lack historical data after a certain point, this is most commonly caused by custom dimensions. If a custom dimension lacks values before a certain point in time, it will cause all data to be filtered out for that time period. You can test this by looking up the custom dimension in Google Analytics for the affected time period and see if you get any values.
By default, Funnel only downloads data for 2 years back when connecting a data source. It is not expected to see data older than that in Funnel.
see also: Data retention
Inflated Sessions and Engaged sessions
The grand total sessions count can differ between Funnel and GAs platform. Sessions are often subject to some double counting. Some reasonable and known dimensions causes double counting such as Event name, Page path and Page title, this is because one session can be associated with several events and visited pages.
The Date dimension can also cause double counting of sessions. All data in Funnel is associated with a date. In UA a session that come to pass over midnight will be considered as two sessions while in GA4 it will only be considered as one session. However it will still be counted for both days and cause double counting when date is included in the request.
Since September 12th 2023 Engaged sessions are affected by this behaviour as well.
Google Analytics handle double counting by adjusting the total row for sessions in the platform while the total row in Funnel shows the actual sum of all the rows. If it appears that individual rows match between Funnel and GA while the total does not you can double check this yourself in GA by calculating sessions in each row manually or in another tool to see if it actually matches the total row that GA shows.
Important note is also that the total row for sessions in GA is actually estimated, read more at Googles site, Unique count approximation in Google Analytics. This could be the reason for why the total row in GA4 does not match the sum of the individual rows even when the setup does not include any reasonable session double counting dimensions.
You can find out more on this subject in our Measuring GA4 Sessions article.
How you can tackle this in Funnel:
Sessions (event based)
Since GA4 is more based on events than sessions, an alternative way to escape this can be to use Funnels metric Sessions (event based). Sessions (event based) counts events filtered on "session_start". This can avoid double counting when Event name is included in the setup or when you have a lot of sessions passing over midnight. This will often not match the numbers exactly between Funnel and Google Analytics UI but could be close enough. You can read more about it in this article.
Sessions (session based)
If Sessions is needed in the setup, it can be escaped by using the Funnel metric Sessions (session based). Sessions (session based) counts sessions filtered on "session_start".
However there are currently no Funnel workaround for Engaged sessions but it is possible to setup custom metrics for Engaged sessions with the same behaviour as the Funnel metrics mentioned above.
Unfortunately there are currently no workaround for when Page Path and/or Page Title is included in the setup. Two data sources can always be connected, one with Page Path and/or Page Title and one without it.
GA4 Explorations, Reports, Data API and the “(other)” row
In Google Analytics platform there are two ways to view data, Reports and Explorations. The data in Reports and Explorations often matches each other, but it is not always the case as explained in GAs documentation, Data differences between reports and explorations.
Funnel fetches data via Google Analytics Data API which should always match the data shown in Reports.
One difference between Reports and Explorations is how a high amount of underlaying data is handled by GA. Reports and the API are subject to something called the “(other)” row. This is a behaviour where less common values are grouped under a common row where all dimensions will get the value (other). Read more in GAs documentation, About the (other) row.
If some dimension values are missed in Funnel they might have ended up in this (other) row. Explorations do not have this behaviour (instead they are subject to sampling), this is why some dimension values might be visible in an exploration but not in Funnel.
What you can do to avoid the (other) row in Funnel:
Use as few dimensions as possible in the setup.
Custom dimensions are more prone to cause the (other) row.
Avoid dimensions with a high cardinality.
Metrics returning zero values
If you have selected any of the the following Attribution dimensions on your data source, the Google Analytics API will return 0 for the metrics Sessions, Views, Item views and Add-to-carts:
Default channel grouping
Event campaign creative ID
Google Ads account name
Google Ads ad group ID
Google Ads ad group name
Google Ads ad network type
Google Ads campaign type
Google Ads keyword text
Google Ads query
Manual ad content
In this case we suggest that you either replace the Attribution dimensions with corresponding Traffic source dimensions, or remove the metrics from the data source and connect a second data source for these metrics, without any Attribution dimensions selected.
The metric New Users can cause some event types to be filtered out. If your metric values are lower than expected, or you're missing values for Event name, try removing New Users from your data source.
E-commerce purchases are too high
The dimension Item Name can in some cases multiply the totals of E-commerce purchases.
The data retention setting on the property will limit how far back Funnel fetch certain types of data. User-level data is limited to 2-months or 14-months depending on the property's setting. The 2-month retention period is always applied to age, gender, and interest data regardless of your settings.
Read more in GA:s documentation, Data retention.
Data thresholds are applied by Google Analytics to prevent anyone viewing data inferring the identity of individual users based on demographics, interests, or other signals present in the data. If data is subject to thresholding, a warning will be displayed in GA4's platform. More information can be found in GAs Data thresholds documentation.
Thresholding is also applied in Funnel in the same way as in GA4's platform. Please keep in mind that the data in Funnel is often downloaded together with the date dimension which can trigger thresholding in greater occurrence than if you look at a wider date span in the GA4 platform. If the Users template is used during setup in Funnel it's possible to load data in wider date spans.
In Google Analytics some fields are incompatible in the same data source setup. This is a limit on Googles side and occasionally Google introduces new incompatibilities between fields that have been compatible in the past.
When a data source in Funnel has incompatible fields it needs to be reconfigured. In most cases incompatible fields will be highlighted with a warning in the reconfigure dialog. If there are no warnings it could be one or more custom fields that are incompatible. If you struggle to figure out a what’s incompatible, the GA4 Query Explorer tool could be helpful. Make sure you select the right property in the tool to be able to see your custom fields. For further guidance how to use the tool, follow the How to troubleshoot your Google Analytics data source using GA's Query Explorer guide.