We run a live scan against one of the most credible sites in the compliance industry: cookiebot.com. It's the corporate homepage of Cookiebot, a major CMP vendor. They write the textbook on Consent Mode v2. And yet — the very first check our audit engine runs turns up a finding: their homepage sends GA4 page_view events to 3 distinct GA4 properties in parallel.
ga4 pv: tid=G-WX15RJ0HZZ dl=cookiebot.com/ cid=56482879.1776368458
ga4 pv: tid=G-4SBCRNPYYR dl=cookiebot.com/ cid=56482879.1776368458
ga4 pv: tid=G-6L1221E6ET dl=cookiebot.com/ cid=56482879.1776368458Three measurement IDs. Same page. Same visitor. Every session is counted three times across three GA4 properties. Every conversion fires three times. If any of those properties feeds a Google Ads Smart Bidding campaign, the campaign is optimizing on 3× inflated conversion counts.
This is cross-tag duplication— and it's the single most common misconfiguration we see in production audits. Most tracking audit tools miss it entirely because they only look for duplicate firings of the same measurement ID.
Why cross-tag duplication happens
There are four common paths to this state:
- Consultant audit IDs left live. An agency runs a trial or audit on your site using their own GA4 property, then offboards without removing the tag. Their ID keeps firing alongside yours for months.
- Rebrand or property migration.A site migrates from one GA4 property to another. The old gtag.js snippet gets missed during cleanup, or the GTM container keeps a legacy "GA4 Config" tag active.
- Parallel properties by design. Marketing runs one property, product analytics runs another, and nobody thinks about the double-counting problem — until the numbers stop lining up with revenue.
- A/B testing gone wrong. A team runs a test where a variant sends to a second GA4 property for isolation. The test ends, the variant ships to 100% of traffic, the second property is never decommissioned.
Why standard audits miss it
Most automated audits (GA4's own Debug View, basic browser extensions, older SaaS tools) group page_view hits by measurement ID, then look for multiple hits on the same ID. That correctly catches the case where two gtag('config') calls fire the same property twice — but it silently passes when two different property IDs each fire exactly once.
Google itself doesn't flag this in GA4's own UI. The two properties look independently clean. The duplication is only visible when you inspect the browser's outbound network layer across properties.
How to detect it in under 10 seconds
There are three practical methods:
1. Run a free scan on Check My Tracking
Our audit engine checks the set of distinct G-* measurement IDs that receive page_view requests on your homepage. If more than one appears, the check DC_03 fails immediately with reason: multiple-measurement-ids and lists every ID seeing data. Run a scan against your own URL →
2. Chrome DevTools Network tab
Open DevTools, go to Network, filter by google-analytics.com/g/collect. Load your page. Look at the tid query parameter on each request. If you see more than one G-prefixed value, that's cross-tag duplication.
3. GTM Preview mode
If you use GTM, Preview mode shows every tag that fires on a given trigger. Filter tags by type "GA4 Configuration." If more than one is firing on page_view, and they point at different Measurement IDs, you have cross-tag duplication.
How to fix it
Two outcomes are legitimate: either one of the IDs is the authoritative property and the other is abandoned, or both IDs are intentionally receiving data for a reason (A/B, separate teams). If it's abandoned:
- gtag.js installs: remove the
gtag('config', 'G-OLD_ID')call from your HTML template. - GTM installs: pause or delete the legacy GA4 Configuration tag. Verify with Preview mode before publishing.
- Third-party injected: check for a consultant or agency script still loading. These often sit in a CMP blocklist exception.
If both IDs are intentional, you should at minimum not feed both properties to Google Ads Smart Bidding simultaneously. Pick one as the ad-attribution source and stop the other from firing conversion events.
What "near-identical retry" looks like vs a real duplicate
Worth distinguishing: some sites fire the same measurement ID twice within a second or two, with identical cid, sid, and dl. This is typically a GTM sequencing artifact — the tag is configured to fire on both gtm.init and gtm.dom, for example. GA4 dedupes this server-side, so the metric impact is usually zero.
Our audit flags it as a warn rather than a fail — worth investigating if your reports look inflated, but not a critical issue.
What IS a critical issue:
- Multiple distinct
G-*measurement IDs firing on the same page. - Same measurement ID firing with different
cidvalues within the same session. - Same ID firing twice with a gap longer than ~10 seconds.
Quick summary
If you manage a site with meaningful ad spend or have ever used a tracking consultant, check for cross-tag duplication today. It's the most common silent failure in GA4 production, and it affects every metric downstream: sessions, conversions, revenue attribution, and bidding. Most standard audit tools miss it. Ours specifically tests for it.