An audit answers one question: can the business trust its numbers? This is the checklist I work through, in order, on every audit. Each section has the checks, what good looks like, and how to record findings so the report is actionable rather than a list of complaints.
Setup for the Audit
- A clean browser profile with no ad blocker, plus a second profile with a blocker.
- GTM Preview access, a tag debugger such as the Insighter Debugger extension, the Meta Pixel Helper.
- Read access to GTM, GA4, Google Ads and Meta Events Manager.
- The business's own source of truth for the last 30 days: orders, leads, bookings.
- A spreadsheet with columns: area, check, finding, severity, evidence, recommendation.
Part 1: Tag Inventory
- List every tag loading on the homepage, a product or service page, the contact page and the thank-you or order confirmation page, using the tag debugger and the page source.
- Count GTM containers. More than one needs a reason.
- Count GA4 measurement IDs, Google Ads conversion IDs, Meta pixel IDs. Duplicates of any are a finding.
- Identify sources: GTM, hard-coded, plugins, platform channel apps.
- Note any tags for platforms the business no longer uses.
Good: one container, one of each ID, every tag from GTM.
Part 2: GTM Container
- Naming and folders: can a stranger read the tag list?
- Workspaces open with unpublished changes.
- Tags with no trigger or paused for more than a quarter.
- Triggers that fire on clicks for conversion tags.
- Custom HTML tags without comments.
- A Conversion Linker on All Pages.
- A Google tag or Google Analytics destination loaded on Initialization.
- Consent requirements on non-Google tags.
- Exceptions for admin pages.
- The dataLayer: are business events pushed by the site, or scraped from the DOM?
Part 3: GA4 Configuration
- Data retention at 14 months.
- Internal traffic defined and the filter active.
- Unwanted referrals listed: payment gateways, own domains.
- Cross-domain configured where the journey crosses domains.
- Key events marked, and do they match the business's actual outcomes?
- Google Ads linked with personalised advertising on.
- BigQuery linked.
- Enhanced measurement options reviewed; form interactions off unless validated.
- Google Signals status and whether thresholding affects reports.
- Consent signals received if EU or UK traffic exists.
- Unassigned traffic share in the last 30 days and its causes.
- Not set values in key dimensions.
- Custom dimensions registered for the parameters in use.
- Session and user counts plausible against server or CDN data.
Part 4: Conversion Reproduction
For every primary conversion, perform it in Preview and the clean profile:
- Fires once per real action.
- Fires only after confirmed success.
- Does not fire on failed or incomplete attempts.
- Carries the right value, currency and transaction ID.
- Carries user-provided data for Enhanced Conversions and Advanced Matching.
- Reaches GA4 DebugView, the Google Ads request, Meta Test Events.
- Survives a page refresh without a duplicate.
- Repeat with the blocker profile and note what is lost.
Part 5: Google Ads
- Conversion actions list: which are primary, which secondary, and does that match the business?
- Each action's Diagnostics status.
- Enhanced Conversions on and match rate healthy.
- Count settings: One for leads, Every for purchases.
- Attribution and windows sensible for the sales cycle.
- Duplicate sources: GA4 import plus native tag for the same action.
- Auto-tagging on; no manual UTMs on final URLs.
- Call reporting on for call assets if calls matter.
- Offline conversion or Enhanced Conversions for Leads in place where leads convert later, and uploads on the Data Manager path since June 2026.
Part 6: Meta
- One dataset, connected to the ad account.
- Standard events in use match the funnel; nothing custom where a standard name exists.
- Purchase and Lead carry value, currency, content IDs where relevant.
- Advanced Matching on with fields populated.
- Conversions API active, deduplicated by event ID; Diagnostics clean.
- Event Match Quality per event against realistic targets.
- Events Manager Diagnostics warnings reviewed.
Part 7: Consent and Privacy
- A consent platform present where required, firing on Consent Initialization.
- Default consent state denied for applicable regions.
- Google tags in Advanced or Basic mode as intended; non-Google tags blocked until consent.
- No personal data in GA4 parameters, URLs or user properties.
- Privacy policy mentions the tools in use.
Part 8: Reconciliation
- Last 30 days: GA4 key events vs the business's orders or leads; Google Ads conversions vs the same; Meta purchases vs the same. Record the gaps and the likely causes.
- Revenue in GA4 vs the platform's order total.
Scoring and the Report
Score each area from one to five, where five means nothing to fix. Weight conversion reproduction and reconciliation highest, because they are what the business pays for. Then write the report in three sections:
- Fix now: anything causing wrong numbers or lost conversions: duplicates, click-based conversions, missing Conversion Linker, broken purchase values.
- Fix this month: retention, filters, Enhanced Conversions, consent configuration, Unassigned clean-up.
- Improve later: server-side, offline conversions, dashboards, engagement events.
Each item: finding, evidence such as a screenshot or Preview event, business impact in one sentence, recommendation, effort estimate.
Outcome
A business that knows exactly where its numbers are wrong and by roughly how much, a prioritised plan to fix them, and a baseline to re-audit against in six months.
