Analytics8 min
Google Tag Manager setup: what to check, what doubles up
Installing Google Tag Manager is easy. Setup mistakes stay for years. The most common one: GA4 is installed through a plugin and through Tag Manager, so every purchase is counted twice. Below are six checks for EU stores, before and after you publish. Audit €200 + VAT.
In short
- GA4 goes through one path: the Google tag or Tag Manager, not both
- Before installing, check whether a theme or plugin already added GA4
- Consent Mode v2 defaults are set before any other tag fires
- Every purchase carries a unique transaction_id
- Publish only after Preview and one test order
Google tag or Google Tag Manager: which path to choose
The Google tag (gtag.js) is a single code snippet that sends data to Google products only. Google Tag Manager is a container: it manages Google, third-party and custom tags without changing the site code. If you already use Tag Manager, Google recommends keeping it.
What matters is not which path you pick but that you pick one. Google's GA4 help page says it plainly: using both at once overcounts data. On a small site with one goal, Tag Manager often just adds a layer someone has to maintain.
How to install the Tag Manager container in one place
The container has two snippets. The first goes as high in the page head as possible, the second right after the opening body tag. WordPress, Shopify or Wix do the same through an integration or a plugin, but choose one place: the theme or the plugin.
Before adding the container, check what is already there. Open the page source and search for GTM- and G- IDs:
- two different GTM- IDs mean two containers
- a G- next to a GTM- means GA4 already arrives by another path
- on WordPress the usual sources are the theme, Site Kit, a WooCommerce analytics plugin and the consent platform
Why GA4 counts purchases twice
In our audits the most common cause is two paths into the same GA4 property: a plugin with its own Google tag and Tag Manager with a GA4 tag. Other causes:
- two Tag Manager containers on the same page
- a purchase tag with two triggers, e.g. a page view and a custom event
- leftover Universal Analytics or old Google Ads conversion tags
Reloading the thank-you page sends the purchase again. GA4 merges such duplicates only when the purchase carries the same transaction_id, and only for web streams. In one store we found a third path: a second website mixed its traffic into the same property through a shared container.
Consent Mode v2 in Tag Manager: what has to fire first
Since March 2024 Google requires consent signals if you want to use data from EEA (European Economic Area) visitors for ad measurement and audiences. Version 2 adds ad_user_data and ad_personalization to ad_storage and analytics_storage. The default state must be set before any tag, and Tag Manager has the Consent Initialization trigger for that, which fires first.
Google tags check consent on their own, Custom HTML tags do not. They need a separate consent condition, otherwise they load even after the visitor declines. In one store Consent Mode was switched on, but another plugin renamed the data layer, and the signal never reached Google.
How to test before publishing: Preview and one order
Preview mode opens the site as if the draft were already published. Tag Assistant shows which tags fired and in what order. The Consent tab shows the default and updated consent state: if it is empty, Consent Mode is not installed.
The last test is one real order. Count how many purchase events reached GA4, Google Ads and Meta, whether the amount matches and whether a transaction_id was sent. Publish the version with a clear name, so there is something to roll back to.
Server-side Tag Manager: when it pays off and what it does not fix
A server-side container processes data on a server you control, not in the visitor's browser. That means a separate server and separate costs. It makes sense for a store with several ad platforms, not for a brochure site.
Consent is still set by the web container. A server-side path without a consent check is the hardest violation to spot, because nothing shows in the browser, and that is exactly what we found in one store. Start with an audit: €200, and the fix is quoted from the findings. Get in touch.
Related services
Services related to this topic.
- Analytics and ad trackingGA4, Google Tag Manager, Meta Pixel with the Conversions API, and ChatGPT Ads. Tracking that counts one purchase once, and only with consent. Quoted from the audit findings + VAT.
- GDPR and cookie consentA cookie banner that actually blocks: zero cookies before consent, withdrawal that deletes, and documents written against the real configuration. Quoted from the audit findings + VAT.
- Website auditOne audit that checks everything: consent, tracking, technical SEO, speed, security and copy. Fixed price €200 + VAT.
End