1. Duplicate Transactions
This is the most damaging single error in GA4 ecommerce setups. Duplicate purchase events mean your revenue figures are artificially inflated — sometimes by double, sometimes more. The result is false confidence in campaign performance and incorrect budget decisions.
Duplicates happen when:
- Your purchase event fires from multiple sources simultaneously — a GTM tag, a Shopify native integration, and a direct gtag.js snippet on the confirmation page
- Order confirmation pages are reloaded or navigated back to, re-firing the event
- Multiple tracking implementations are active from different historical setups that were never cleaned up
How to spot it: compare your GA4 transaction count to your actual platform order count for the last 90 days. A discrepancy of more than 5% in either direction is a red flag. Fix: deduplication logic at the data layer using the order ID as the deduplication key, or moving to server-side GA4 with centralised deduplication.
2. Self-Referral Traffic
Self-referral appears when a user session is incorrectly broken and your own domain shows up as a traffic source in your channel breakdown. You'll see your own domain name listed under referral sources, and your direct traffic figures may appear inflated.
Common causes: cross-domain issues where your checkout is on a separate subdomain that isn't included in the cross-domain linking configuration; payment gateway redirects that break the session; or missing session stitching after returning from an external checkout processor. The fix is correct cross-domain configuration and adding payment gateway domains to your referral exclusion list.
3. Consent Mode Misconfiguration
With Consent Mode v2, GA4 uses modelled conversions to fill in gaps for users who declined cookies. This modelling is genuinely useful — but only if Consent Mode is configured correctly. Common problems:
- Consent Mode configured in Basic mode when Advanced mode is required for full modelling
- The consent pings firing with incorrect values (always granted or always denied regardless of user choice)
- Modelled conversions significantly over- or under-representing actual conversion volume
If you're using Consent Mode and haven't verified that consent signals are passing correctly to GA4, your conversion data should not be trusted until you've done that audit. In GTM, check your consent initialisation tag and look for the ad_storage and analytics_storage consent states in preview mode.
4. Auto-Migration Issues
Google's UA to GA4 migration tool did a reasonable job for simple setups. For anything more complex — custom dimensions, modified event schemas, ecommerce setups, GTM container configurations — it frequently produced GA4 properties with incorrect event mappings, missing parameters, or duplicated tags.
Specific things to check:
- Is your transaction_id parameter being passed correctly on purchase events? Missing or null transaction IDs make deduplication impossible.
- Are your custom dimensions mapped to the correct GA4 event parameters in the GA4 property settings?
- Is your GA4 data stream connected to the correct GTM container, or did the migration create a duplicate stream?
- Are enhanced measurement events (scroll, outbound clicks, site search) creating noise in your events report that's being confused with custom events?
5. The Wrong Attribution Model (And Not Realising It)
GA4 defaults to data-driven attribution. Universal Analytics defaulted to last-click. If you're comparing GA4 numbers to historical UA figures, some of the difference is this model change — not a tracking error. Data-driven attribution is generally more accurate, but it distributes credit across more touchpoints. Your paid social channels will typically receive more credit in data-driven attribution than they did in last-click. Your organic and direct channels may receive slightly less.
This isn't a problem to fix — it's a context to understand. If you're making budget decisions based on GA4 channel attribution and comparing against historical UA data, make sure you're comparing like with like.
6. Missing Internal Traffic Filters
GA4 properties created via auto-migration frequently don't have internal traffic filters applied. This means your own office IP addresses, developer traffic, and your own browsing sessions are included in your data. For smaller businesses with lower traffic volumes, this can meaningfully distort engagement metrics, session duration, and conversion rates.
Check Admin > Data Streams > your stream > Configure Tag Settings > Define Internal Traffic. Add your office IP ranges and apply the filter in Admin > Data Settings > Data Filters.
How to Audit Your Own Setup
Start with these five checks in order:
- Compare transactions to actual orders. Pull GA4 transaction count against actual platform orders for the last 90 days. More than 5% discrepancy — investigate.
- Check Sources report for self-referral. In GA4, go to Acquisition > Traffic Acquisition. Look for your own domain or checkout subdomain as a session source.
- Count purchase event tags in GTM. In Google Tag Manager, filter tags by "purchase" or "transaction". More than one tag configured to fire on your order confirmation page is a problem.
- Verify consent state pings in GTM preview. In GTM preview mode, check that consent state is being sent correctly — not always "granted" by default.
- Check data retention settings. GA4 defaults to 2 months for event data. In Admin > Data Settings > Data Retention, set this to 14 months for user and event data to retain enough history for year-on-year comparisons.
We offer a full GA4 audit that covers all of the above and more, with a written report of every issue found and specific fixes. If you're making marketing decisions based on GA4, it's worth knowing your data is right.
See Our Tracking & Analytics Service →Frequently Asked Questions
How do I know if I have Consent Mode set up correctly?
In GTM preview mode, look for the consent initialisation tag and check that it fires before any measurement tags. Verify that the consent state for analytics_storage and ad_storage changes based on your test user's consent choice in the banner. If the state is always "granted" regardless of choice, your implementation is incorrect.
Is GA4 worth the complexity compared to Universal Analytics?
Yes. Despite the setup challenges, GA4's event-based model, cross-device tracking, BigQuery export, and integration with Google's advertising suite are genuinely more powerful than Universal Analytics. The data quality depends entirely on the implementation quality. A correctly set up GA4 property is a significant asset for data-driven marketing.
How long does a full GA4 audit take?
A thorough audit covers the data stream configuration, GTM setup, event tracking, ecommerce implementation, consent setup, filters, and attribution model. That takes 2–3 days for most setups. We provide a written report with every issue found and specific steps to fix each one.
Is Your GA4 Data Reliable?
We audit GA4 setups and fix everything from duplicate transactions to broken Consent Mode — with a full written report of every issue found.
Get a Free Audit →