Here a comprehensive Google Analytics GA4 Audit Checklist!

This resource is designed to help you optimize your Google Analytics setup, ensuring accurate data collection and insightful reporting. Our checklist covers essential areas such as data collection methods, time zone and currency settings, duplicate tracking issues, data retention policies, and the use of Google Signals. It also provides guidance on handling referral traffic, custom dimensions, and cross-domain tracking. Whether you’re a beginner or an experienced user, this checklist will help you maintain the integrity of your analytics data and enhance your reporting capabilities.

IssueHow to Find
Data is collected in GA4 via a connection to UAGo to Admin > Data collection and modification > Data Streams > (click your data stream) > Manage Connected Site Tags. If you see anything connected here, you'll need to evaluate how data is getting into GA4 -- do you need to add it to your website or Google Tag Manager? Fix this before removing the connection.
The GA4 time zone is set incorrectlyGo to Admin > Property > Property details. Check the time zone, does is correspond with your time zone or the time zone of the majority of your customers? If not, you may wish to change it. Note that time zone chages are not retroactive so you may see some gaps or extra traffic in your reports, depending on how you change the time zone.
The GA4 currency is set incorrectlyThis is most important for ecommerce sites. Go to Admin > Property > Property details and check the currency, then make any changes required.
GA4 is on your website more than once, or you have GA4 on your website and also running via Google Tag ManagerFind the Measurement ID for your GA4 property -- to go Admin > Data collection and modification > Data Streams > (click your data stream) and note the Measurement ID (not the Stream ID!). Check your site using Omnibug and see if you have duplicate page_view events come up with the same Measurement ID when you've only viewed a single page on your website.

You can also check your website source code for your Measurement ID, and also check for "GTM-" (without the quotes) and that will tell you if Google Tag Manager is on your site. What you want to avoid is having GA4 delivered directly on your site and via GTM.

To see if this is negatively impacting your data, go to Admin > Data collection and modification > Data Streams > (click your data stream) > Configure Tag Settings > Admin (at top) > Manage Google Tag. On this screen, see if "ignore duplicate instances of on-page configuration" is on or off. If it's on, you aren't double recording information, but if you have an older GA4 it may be off. If it's off, then you are likely double counting your data (sorry!).
There is more than one web data streamIt's rarely recommended to have more than one web data stream, unless you have two completely separate websites where users wouldn't move from one site to the other. This is very unlikely.

Go to Admin > Data collection and modification > Data Streams. All web data streams have a little globe at the left. You should only see one.
The data retention period is set to 2 months.Your data retention period should be set to 14 months, 2 months is the default. Go to Admin > Data collection and modification > Data Retention, set the Event Data drop down to 14 months, click Save.

Note that this doesn't mean that your data is removed from GA4 after 2 or 14 months, it only affects Exploration data.
Google Signals is enabled and should not be because of privacy concerns (or you don't have it enabled and should for Google Ads remarketing)Go to Admin > Data collection and modification > Data collection. If you need to use GA4 data for Google Ads remarketing, you will need to turn this on, but it can cause privacy issues. See the lesson GA4 and Privacy.
Traffic is showing up attributed to "Unassigned", which could mean that you are incorrectly tagging incoming traffic.Use the GA4 Audit Dashboard, check Acquisition > How many sessions are "Unassigned"?

Change your date range to end earlier than 2 days ago -- recent traffic may show up as Unassigned until GA4 properly attributes it. If you see source and medium both listed as (not set), that is fine -- see the Red Flags lesson to learn why it happens.

Also check the "Do you have uppercase letters in your sources and/or mediums" table as that can cause traffic to be labeled as Unassigned.
You are running ads on social media but do not see Paid Social traffic showing up in GA4Use the GA4 Audit Dashboard, check Acquisition > Are you separating paid social from organic social?

If you don't see Paid Social listed as a channel here, you need to tag your paid social traffic correctly. View the GA4's Default Channel Groups lesson for more information.
URLs are being sent to GA4 that have both lowercase and uppercase versionsUse the GA4 Audit Dashboard, check Pages > Do you have case issues?

Your website should only resolve one "version" of each webpage -- you don't want to have both yoursite.com/about/ and yoursite.com/About/ both working, for example. This is also a technical SEO issue.
Personal information is being collectedUse the GA4 Audit Dashboard, check Pages > Are you collecting personal information?

If you are, go to Admin > Data collection and modification > Data Streams > (click your data stream) > Configure Tag Settings > Redact Data, and enable the options that will stop GA4 from collecting this information. Email is the most common one and we recommend turning it on even if you aren't seeing anything show up in this table.

Based on the type of personal information you have been collecting, you may need to request that GA4 delete some of your data.
There are too many/too few events

There are duplicate versions of events with different cases

Not all events follow the snake_case naming convention
Use the GA4 Audit Dashboard, check Events & Conversions > How many events are you recording?

Look at the different event names and make sure that they are all lowercase, using snake_case (snake_case replaces spaces with underscores).

If you only see a few events (first_visit, session_start, page_view but not much else), you will need to turn on enhanced measurement. Go to Admin > Data Streams > (click your data stream), turn on Enhanced Measurement, and/or click the settings wheel and make sure that all events are turned on. See the lesson GA4's Built-In (Enhanced) Events for more details.
Events are marked as conversions that shouldn't be a conversionUse the GA4 Audit Dashboard, check Events & Conversions > How many events are you recording?

Look for events that are marked as conversions that aren't helping you meet your organization's goals. For example, Google's demo data GA4 has first_visit configured as a conversion -- we would never recommend setting that as a conversion!
There are spikes in event counts or conversion counts that don't correspond with traffic increasesUse the GA4 Audit Dashboard, check Events & Conversions, and the two charts on the right (top is events, bottom is conversions).

If the event/conversion lines don't track with the session line, you may have a measurement or configuration issue. See if someone on your team has made any changes to your analytics configuration in that time period. You can check that by going to Admin > Property > Property change history.
Your website has on-site search, but you don't see the view_search_results event in GA4Use the GA4 Audit Dashboard, check Events & Conversions, and look for view_search_results events in the How many events are you recording? table.

If you have on-site search and you don't see this event coming up, see the lesson Event: view_search_results.
Data is collecting from your staging or testing domains along with the data from your live siteIdeally you'd have separate GA4s for your staging or testing domains, separate from your live GA4 as conversions etc from those staging/test domains can show up as real conversions in your live GA4 property and throw off your data. This is particularly an issue with low-volume websites.

Either ask your web developer to remove GA4 from your website if they are using a staging/test domain, or you can use filters in your GA4 reports to remove this traffic (that is tedious, though!). If you're using GTM, you can use a lookup variable to redirect traffic to a different GA4 based on the hostname.
There are live filters but you aren't sure how the traffic is added to those filtersFirst, go to Admin > Data collection and modification > Data filters and see if any of the items listed here have a Current State of "active". If so, that means that data is filtered out of GA4 and you should double-check the criteria for that filter. Next, go to Admin > Data collection and modification > Data Streams > (click your data stream) > Configure Tag Settings > Show More > Define internal traffic. Click on each of the traffic rules here and see if they make sense. If you aren't sure, check with whomever set up GA4 for you!
Cross-domain tracking isn't set up and should beIf you have more than one domain name that you use (e.g. mysite.com and myshopsite.com) you'll need to set up cross-domain tracking. Go to Admin > Data collection and modification > Data Streams > (click your data stream) > Configure tag settings > Configure your domains. Add your domains here and be careful to use the right conditions! For example, if your site is www.myshopsite.com, don't set the condition to be exactly matches myshopsite.com as it won't work -- you'd need to include the www.

Note that this does not need to be done for subdomains (e.g. mysite.com and shop.mysite.com).
There are sites that are showing up as referral traffic and should not beThis is most common when you're using a third-party site for landing pages or payment processing. Check the GA4 Audit dashboard, Overall Data Quality > Do you have self-referral issues? Check the domain names listed here -- if any of them belong to you, you may need to either add them as cross-domain tracking (see row above) or as a referral exclusion.

A referral exclusion means that traffic from this URL will never show up as referral traffic. To set this up, go to Admin > Data collection and modification > Data Streams > (click your data stream) > Configure Tag Settings >Show more > List unwanted referrals. Add your domains here and be careful to use the right conditions! See the row above for more information on setting domain conditions.
There are no custom dimensions or metrics added, or there are too many custom dimensions and metrics added.Custom dimensions and metrics are how you can view additional event parameter information in GA4. To see what is set up, go to Admin > Data display > Custom definitions, and check both custom dimensions (shown by default) and custom metrics. If you don't have anything added here, you probably want to add some -- check the lesson Registering Event Parameters as Custom Dimensions and Metrics in GA4.

If you see lots of dimensions and metrics added, click the Quota Information button (at top right) to see if you are coming close to or hitting any limits. If dimensions and metrics do not have descriptions, you may want to add those to help someone else out!
The reporting identity is blended or observed when it doesn't need to beWe typically only recommend using the blended or observed reporting identity if you are either using modeled data with consent mode (see the lesson GA4 and Privacy), or if you have on-site logins and are sending login information to GA4. Otherwise, we recommend using the Device-Only reporting identity. To check, go to Admin > Data display > Reporting identity. If you don't see Device Only, click Show all. You can change your reporting identity as often as you wish, but it does affect everyone using your GA4 property.
Google Ads is not linkedDo you see Ad Group Names coming up on the GA4 Audit dashboard, under Overall Data Quality > Is Google Ads linked correctly? If you see an Ad Group Name of (not set), you need to link your Google Ads account. See the lesson Linking to Google Ads for a walkthrough.

If you have Google Ads running and you don't see any data showing up in that table, this means that the landing pages for your Google Ads campaigns are not tracked in your GA4 property, and you'll need to add tracking to those pages.
Google Search Console is not linkedGo to Admin > Product links > Search Console links and see if you have a link set up. If you don't, go to the lesson Linking to Google Search Console.

If you do see a link there, check your Reports menu for a collection named Search Console. If you don't see that, click on Library (bottom of the Reports menu), and look at the list of Collections to find the one named Search Console, click the three dots, then click Publish. You may need to refresh. To view a walkthrough of this, go to the lesson Linking to Google Search Console.
BigQuery is not linkedGo to Admin > Product links > BigQuery links. If you don't see a link here, go to the lesson Linking to BigQuery.
GA4 access levels are not managedYou only want to grant editor and admin-level access to GA4 to people who actually need to build custom reports or make admin-level changes, otherwise keep access to Marketer or lower. Go to Admin > Property > Property access management. You may also wish to check Admin > Account > Account access management.