hello@datascale.de+49 89 921 35 623tracked cookie-free · /openDEEN

Search services, integrations and blog posts.

DatascaleResourcesChecksDuplicate Google IDs

Check · C03 · Tracking core

Duplicate Google IDs: two properties count twice

Two GA4 properties or two GTM containers on the same page double-count pageviews. The check lists every ID it finds, including dead UA leftovers, and the deep scan counts the page_view pings per property.

What we check

The check pulls every Google ID from the executable parts of the HTML: GA4 properties (G-…), GTM containers (GTM-…) and Universal Analytics leftovers (UA-…). Prose does not count, so a blog article showing an example ID never triggers the finding, and case matters: g-recaptcha or a CSS class such as gtm-button are not IDs. More than one distinct ID of the same type, or any UA ID, yields "to review". One ID: ok.

When the deep scan runs, measurement joins in. The scan browser accepts the banner and counts the page_view pings per property (tid), split by page URL and consent stamp (gcs). More than one ping for the same combination: critical, because GA4 then counts the page load twice, whether a second tag or a trigger firing twice is behind it. What the scan cannot see: events GA4 batches into the POST body, and pages without an operable banner. There it stays with the code check.

Why it matters

Two GA4 properties on the same page can count the same pageview twice. Sessions, engagement rates and conversion rates drift systematically, and the error only surfaces when GA4 and backend numbers stop matching. A second GTM container additionally means two teams can deploy tags independently without knowing of each other.

Common causes

  • Relaunch or agency change: the new container arrived, the old one was never removed.
  • A theme or plugin ships its own Google tag on top of the centrally managed one.
  • The GA4 migration left the UA ID in the code; since July 2023 it does nothing.
  • Multi-property setups without documentation: set up deliberately, but nobody remembers.

The fix

Assign every found ID a purpose. Whatever has no documented purpose goes: delete surplus containers, remove UA leftovers, and write the remaining assignment (which property, which container, what for) into the tracking concept. Then verify in DebugView that every pageview arrives exactly once.

Matching template

GA4 and Google Ads Consent Mapping

Documents which data flows from GA4 to Google Ads and which signal governs each flow.

Get the worksheet →

Check it yourself first

The Tracking Check tests this point along with all the others, in seconds.

Start the Tracking Check →
What does the "duplicate Google IDs" finding mean?

The executable part of the page carries several IDs of the same type, say two G properties or two GTM containers. Every additional ID of the same type can count the same pageview twice; sessions and conversion rates in GA4 stop adding up.

Are two IDs always a mistake?

No. Corporate groups deliberately send to a country and a group property, agencies measure into a test property in parallel. That is why duplicate IDs in the code stay at "to review". The finding only turns critical when the deep scan watches the same property send the same page load as page_view more than once. What matters is that any duplication is documented and deliberate.

How does the scan detect duplicate page_view pings?

The deep scan clicks "Accept all" on the cookie banner and logs the requests. If one property sends more than one page_view for the same page URL in the same consent state, GA4 counts the page load twice. The cookieless ping before consent (Consent Mode advanced) and the ping after it carry different consent stamps and do not count as duplicates.

What about old UA IDs?

Universal Analytics shut down in July 2023; since then a UA property processes no hits at all. A UA ID in the code is dead weight, costs payload, and points to a setup nobody has touched in a while.

The fix, delivered

Wired up in days, not sprints.

Findings from the Tracking Check go into a ranked sequence with effort estimates in the Audit Sprint, every module with an acceptance criterion.