How to Audit Your Attribution Setup: A GA4 Checklist
By Joris van Huët
Enterprise Interim CMO & Marketing Leader · 15+ years · 50+ orgs
Published
2026-10-27
The short answer: look at Direct and Unassigned before you argue about models. If they hold a visible slice of your GA4 credit, fix the inputs first. The illustrative read on Causality Engine's pricing page shows 31% of last-click credit sitting on Direct, and an Unassigned row whose only next step is "Fix tagging". Run the free checklist below on GA4 tagging, UTMs, consent mode and channel grouping. Then let Causality Engine score every channel's data health from 0 to 100 on your own export. The first finding is free on the start page, and the full read is €99 once. In order: match purchases to orders, standardise UTMs, chase the causes of Direct and exclude payment referrals. Then verify consent mode, check the channel rules and read the score per channel.
Disclosure: I founded Causality Engine and own it, and this page recommends it. Every claim about it links to Causality Engine's own pages.
Red flags worth an hour of your week:
- Orders without a source. For example, 2,000 purchases a month with 14% landing in Direct is 280 orders whose origin GA4 never saw (2,000 x 0.14). At a €70 average order value, that is €19,600 of revenue (280 x 70) that no channel gets credit for. Every budget split inherits the hole.
- Reports you already have will find most of it. Traffic acquisition in GA4 shows session source and medium, per Google's URL builder page. Tag Assistant shows what your consent banner does to the tags. No new tool is needed for steps 1 to 6.
- The proof the audit worked. After the fixes, the Unassigned and (not set) rows shrink in the next export, and the read's data-health scores rise on the channels you retagged.
The checklist, and what you need for it
- In: GA4 editor access, the store's order counts for one week, a list of every link you place (ads, emails, influencer posts, QR codes), and access to the consent banner's settings.
- Out: a fixed tagging plan, a referral exclusion list, verified consent states, and a channel-by-channel score of how far each number can be trusted.
Causality Engine also publishes a longer attribution audit template with questions per section, if you want a written record for the team.
Step 1: Do GA4's purchases match the store's orders?
Compare GA4 transactions with store orders across a full week. A clear shortfall is a tracking gap to close before any model, as Causality Engine's Shopify guide puts it. Every later step builds on this one.
Step 2: Are UTMs complete and spelled one way?
Google's URL builder page says four things. Always set utm_source, utm_medium and utm_campaign. Values are case-sensitive. One source per platform and one medium per channel keeps reports whole. And missing parameters show as (not set). Write the spellings into one shared sheet and use lowercase.
Step 3: What is feeding Direct?
Google's direct traffic page lists the causes: links without UTMs, redirects that strip parameters, URL shorteners, links in PDFs and other offline documents, typed visits, and ad blockers. Only one of those is a person typing your address. Click every link on your list once, from the ad or email itself, and check that the landing URL still carries its tags.
Step 4: Are payment pages stealing the sale?
If buyers leave for a third-party payment page and come back, the return can count as a referral. The payment page then takes the credit. Add those domains as unwanted referrals, up to 50 per web data stream, under Admin, Data streams, Configure tag settings, per Google's referral page.
Step 5: Does consent mode behave as configured?
Open Tag Assistant and check four things the troubleshooting guide names. First the default consent state before tags fire, then the update after a visitor chooses. Then which tags check which consent types, and whether each tag had the consent it needed when it fired. Repeat with a simulated location if your banner varies by region. Google's consent mode page adds that tags should load before the dialog opens.
Step 6: Do the channel rules see what you meant?
GA4's default channel group sorts manual traffic by source and medium. Paid Social needs a social source plus a medium that contains cp, equals ppc or retargeting, or starts with paid. Email needs email as the source or the medium. Anything no rule matches becomes Unassigned, per the default channel group page. Custom channel groups look like the fix, and they even apply to reports retroactively. They cannot be used in the key events paths report, per Google's custom groups page. So when the paths export is what you read, fix the tag, not the grouping.
Step 7: Let an agent list the leaks, and a person approve the fixes
Google's experimental Analytics MCP server gives an AI agent read-only access to GA4 reports through the Data API. Ask it for sessions and purchase revenue by session source and medium over the last 90 days. Filter to rows whose channel is Unassigned or whose medium is (not set), and have it draft a retagging list. A person approves each line before any link changes. With the read-only scope, the agent cannot alter the property.
Step 8: Score each channel's data health
Export Key event attribution paths and drop the CSV on the start page. The privacy policy says the free preview reads it in your browser and does not upload it. The full read gives every channel a data-health score from 0 to 100. It grades the read, not the channel, and under 90 the causal attribution page says to move budget in steps. Unassigned is flagged so you fix tagging before acting on it, per the agents page. That turns the audit from a list of fixes into a ranking of which numbers can carry a decision today.
Step 9: Repeat when the setup changes
Causality Engine's checkup page names the triggers: each quarter close, before peak season, and after a theme, checkout, consent banner or tag change. Also after adding or cutting a channel, and when a platform's numbers and revenue disagree.
Mistakes that undo an audit
- Two spellings of one source. Google treats Meta and meta as different values.
- Repairing the grouping instead of the link. The paths report ignores custom channel groups.
- Funding Direct. Causality Engine's audit template points out that Direct is not a channel at all. It is where buyers arrive when the source got lost.
GA4 sorts Google Ads clicks into channels from Google's own campaign data (source platform, ad network type and campaign type), per the channel group page. A Meta or TikTok click is sorted only by the UTMs someone remembered to add. So an untagged setup sees the analytics vendor's own ads more clearly than anyone else's. Nobody on your team chose that asymmetry. It comes with the default.
Free checklist first, then the score
Steps 1 to 6 cost nothing and fix most of what makes attribution argue with itself. Causality Engine, which I founded, adds the part a checklist cannot: a data-health score per channel on your own export. The first finding is free on the start page, and the full read is €99 once, refundable within 30 days, on the pricing page (checked on 27 October 2026). How the read works is on the how-it-works page, and the product is summarised in the Causality Engine entry.
FAQ
How often should I audit attribution?
Once a quarter, and after any tracking, site or channel change. That is the rhythm on Causality Engine's checkup page, where four reads a year cost €396.
What does the data-health score measure?
How far the read holds for that channel, not how good the channel is. The causal attribution page says to move budget in steps when it is under 90.
Does fixing UTMs repair past data?
No. A tag cannot be added to a visit that already happened, so the next reads improve from the date of the fix. Custom channel groups do apply retroactively, per Google's custom groups page, but they do not reach the paths report.
ABOUT THE AUTHOR
I am Joris van Huët, an enterprise interim CMO. 15+ years, 50+ organizations, including ING, P&G, Nestlé, BNP Paribas, WeTransfer and Vinted. I take on innovation projects (venture building, design sprints), agentic marketing (setting up and running AI agents) and hands-on multi-channel work. See the track record.
I wrote and published this with AI assistance, and I answer for it. Claims about my own experience are limited to the track record above, and a statistic links to its source or is labelled as an example. I sell interim and fractional CMO work, which is why this site exists. How this site is written.
A senior operator doing the work: campaigns, channels, CRM and AI agents, live from day one.