Skip to content
Automated · Reads

Cross-domain tracking verified across every checkout hop.

When a user moves from your blog to your checkout on a different domain, GA4 should treat that as one session — not two. The audit walks every step a user could take across your domains and flags where the linker is dropping.

By hand
3–6 hours per domain pair per quarter
With the audit
60 seconds
Why it's painful

Cross-domain tracking is the single most common reason a healthy-looking GA4 property has nonsense conversion attribution. The classic break: someone clicks a Facebook ad → lands on yourdomain.com → adds to cart → gets handed off to checkout.yourdomain.com or pay.stripe.com → returns. Without the linker plugin passing the GA4 client ID across that boundary, GA4 sees two users, two sessions, and the original Facebook source disappears at exactly the moment the conversion fires. Self-referrals balloon. Direct/none traffic balloons. Paid social ROAS looks like garbage. The marketing leader gets blamed for "wasting ad spend" when the real cause is a missing field on a single GTM tag. The audit catches this in the first pass.

How the audit handles it
  • Reads every distinct hostname GA4 has seen in the last 30 days. If you operate more than one domain (yourdomain.com + checkout.yourdomain.com + brand-b.com), the audit knows which boundary needs cross-domain config.
  • Inspects your GTM container for the linker plugin — both as a tag-level field on GA4 Configuration and as a Google tag setting. Surfaces the exact tag and exact field where the domain list is missing.
  • Cross-references self-referral counts in GA4 against the missing-linker finding. A high self-referral rate on a domain that should be in your linker list is a near-certain confirmation that the boundary is leaking.
  • Checks for the "linker accept_incoming" flag on the receiving domain — half the broken setups have the sending side configured but forgot the inbound side, which silently halves the fix.
  • Names the exact Stripe / Shopify / payment-processor / subdomain pattern in the finding, so the marketing leader handing this to a developer knows what to fix without reading GA4 docs.
Real audit checks
Every check below is a real rule in our audit engine — not a marketing bullet.
Multiple hostnames seen, cross-domain not configured
Self-referrals indicate cross-domain leak
Linker plugin missing from GA4 Configuration tag
Linker domains list incomplete
Duplicate web streams instead of cross-domain config
Sample finding
What a real audit report looks like for this chore.
Critical

4 domains share traffic but the GA4 linker only lists 2

Business impact

Every user who moves between checkout.yourdomain.com and pay.stripe.com (the two missing) starts a new session and loses their original traffic source. That is roughly 38% of your purchases over the last 30 days getting attributed to direct/none instead of the paid social campaign that actually drove them. Your Meta Ads ROAS report is understating real return by an estimated 2.4×. The CFO who sees this thinks ads aren't working.

Recommendation

In your web GTM container → Tags → GA4 Configuration tag → Configuration parameters, add a parameter `linker` with value `{"domains":["yourdomain.com","checkout.yourdomain.com","pay.stripe.com","brand-b.com"],"accept_incoming":true}`. Publish the container. Verify in the Realtime report that a test user moving from yourdomain.com → checkout.yourdomain.com lands as a single session with the original source preserved. Re-run the audit to confirm the check turns green.

Hire a web analyst. Or install one.

Cross-domain tracking is one of 10 high-stakes chores the agent covers end-to-end. Your first audit is free — and the agent keeps watching every night, so the next time cross-domain tracking drifts, you hear it from us before it costs you.