How to use this checklist
Install Tag Manager first, then GA4 through it, then the events, then the QA. Do not skip the QA: almost every broken analytics setup I inherit was installed correctly and then never tested, so it counts a purchase twice, counts a form submission on page load, or does not count anything at all from mobile.
If your data already looks wrong, start at section 6 and work backwards. Historical GA4 data cannot be corrected retrospectively, so the sooner a fault is found the less of the year is lost.
1. Decide what you are measuring first
- Write down the actions that are worth money: form submission, call, WhatsApp message, booking, purchase, quote request, brochure download.
- For each one, note where it happens, how you know it happened, and what it is worth.
- Note the micro-actions worth watching but not worth calling a conversion: pricing page views, video completion, scroll depth.
- Agree naming conventions before you build anything: lowercase, underscores, verb_noun, and a document listing every event and parameter.
- Decide who owns the account. It must be the business, not an agency’s personal Google account.
2. GA4 account and property settings
- Property created under the business’s own Google account, with at least two admins.
- Reporting time zone and currency set correctly. Changing them later splits your reporting.
- Data retention set to the longest available option, since the default discards user-level data sooner than most businesses expect.
- Internal traffic filter defined by IP and switched from testing to active, so your own team is excluded.
- Developer or staging traffic excluded, or sent to a separate property.
- Unwanted referrals configured for payment gateways and booking tools, so a purchase is not attributed to the payment provider.
- Cross-domain measurement configured if the booking or checkout lives on another domain.
- Enhanced measurement reviewed rather than left at defaults: decide whether automatic outbound clicks, site search, scrolls and file downloads are useful or noise for you.
- Google Signals turned on or off deliberately, with the reporting identity you want.
- Data streams created for the web property, and for the app if you have one.
3. Tag Manager container
- One container per website, installed with both the head snippet and the noscript body snippet on every page.
- Container installed once. Search the rendered source for the container ID and confirm there is exactly one.
- Folder structure and naming convention agreed: tag type, platform, purpose (for example “GA4 – Event – form_submit”).
- Built-in variables enabled for clicks, forms, scroll, visibility and history change.
- A GA4 configuration tag fires on all pages, with the measurement ID stored as a constant variable rather than pasted into every tag.
- Preview mode used for every change, and workspace changes published with a version name and a description of what changed.
- Publish access limited to people who know what they are doing; everyone else gets edit rights in a workspace.
- No hard-coded gtag snippet left in the theme alongside the Tag Manager version, which is the most common cause of doubled pageviews.
4. Events and key events
- An event for each action from section 1, fired from a real signal: a form success callback or thank-you page, not a button click that also fires when the form fails validation.
- Thank-you page conversions guarded so a refresh does not count a second time.
- Click-to-call links tracked, and WhatsApp link clicks tracked as their own event.
- Chat widget and booking tool events captured, using the tool’s own data layer where it has one.
- Parameters attached that you will actually use: form name, page location, service or product, location or branch.
- Custom dimensions registered in GA4 for the parameters you want to report on, since unregistered parameters cannot be used in reports.
- Only genuine outcomes marked as key events. Marking scroll depth as a key event corrupts every conversion report and every ad platform that imports it.
- No personal data sent to GA4: no email addresses, phone numbers or names in event parameters or page URLs.
- For health, finance or similarly sensitive businesses, events record that an enquiry happened, not what it was about.
5. Ecommerce, if you sell online
- The full funnel is implemented: view_item, add_to_cart, begin_checkout, add_payment_info, purchase.
- Purchase events include transaction_id, value, currency and items, and the transaction_id deduplicates repeat fires.
- Revenue in GA4 reconciles with the store’s own order report within a small margin. If it does not, fix it before anyone builds a report on it.
- Refunds are sent, so revenue reporting is not permanently inflated.
- Item-level data uses the same product IDs as the Merchant Center feed and the Meta catalogue.
6. Platform links and imports
- Google Ads linked to GA4, with the conversions you want imported chosen deliberately rather than importing everything.
- The same conversion is not counted twice into bidding: once from the Google Ads tag and again from an imported GA4 key event.
- Search Console linked so query data appears alongside behaviour.
- Merchant Center, BigQuery and any dashboard tool linked if you use them; the BigQuery export is worth enabling early because it only collects data from the day you turn it on.
- Meta Pixel and Conversions API set up in parallel, with their own event names, and not confused with GA4 events.
- UTM parameters applied to every paid, email and social link using one convention. The UTM builder keeps them consistent, and inconsistent capitalisation is what splits one campaign into four rows.
7. Consent and privacy
- If you serve markets where a consent banner is required, a consent management platform is in place and Consent Mode is configured so tags respect the visitor’s choice.
- Consent defaults are set before any tag fires, not after.
- The privacy policy describes what you collect and why, and matches what is actually installed.
- IP anonymisation and data-sharing settings reviewed.
- Sensitive parameters checked once more: nothing that identifies an individual is leaving the site in a URL, an event or a page title.
8. QA before you trust the data
- Use GTM Preview and the GA4 DebugView together, on desktop and on a real phone.
- Perform every tracked action yourself and watch the event arrive once, with the right parameters.
- Submit a form that fails validation and confirm no conversion is recorded.
- Refresh a thank-you page and confirm the conversion does not fire again.
- Check Realtime for duplicate pageviews, which show up as two events per page load.
- Compare a week of GA4 sessions with server logs or another source for a sanity check.
- Confirm the ad platforms report roughly the conversions you see in GA4; differences are expected, but an order of magnitude is a fault.
- Document what is installed, where, and who to call. Put it somewhere the next person will find it.
9. Reporting and maintenance
- One report that answers the only question that matters: how many enquiries came from each channel, and from which pages.
- Explorations or a dashboard saved rather than rebuilt each month.
- Alerts set for a sudden drop in conversions, which is how you find a broken tag within days rather than at month end.
- Tracking retested after every website change, theme update, form plugin change or checkout change.
- A quarterly review that removes tags nobody uses, since each one costs page speed.
Faults I find most often
Two GA4 installations on the same page. A key event that is really a button click. Payment gateways appearing as the top referral source. Internal traffic never excluded, so the office is the biggest city. UTM tags with mixed capitalisation splitting one campaign across four rows. Every one of them is caught by an hour of the QA in section 8.
If you want this checked or built, the services are GA4 setup, Google Tag Manager and the wider analytics and tracking work, with ad-side tracking under Google Ads conversion tracking and Meta Pixel and Conversions API. A free tracking audit will tell you which of these items are failing on your site. Other checklists are on the resources page.
Last updated 2026-09-03.
Updated