Why Your GA4 Tracking Might Break If You Still Mix GTM and gtag('config')
If your site loads Google Tag Manager and still has a hard-coded `gtag('config', 'G-…')` or `gtag('config', 'AW-…')` in the page source, you may be sitting on an unsupported hybrid setup. Industry coverage through late September 2026 has been flagging that Google Tag Manager snippets are moving away from honouring those page-level `gtag('config')` commands — with several practitioners pointing to 2 October 2026 as the cutover to watch.
In this blog, we’ll break down what the hybrid pattern looks like, why ecommerce teams should care, and a practical checklist you can run before (or immediately after) that date.
What is a hybrid GTM + gtag setup?
Definition: A hybrid tagging setup is when a site loads a Google Tag Manager container (`gtm.js` with a `GTM-XXXX` ID) and also configures Google Analytics 4 or Google Ads via standalone `gtag('config', …)` calls in the page HTML — instead of managing those destinations entirely inside the GTM container (or entirely via a direct Google tag / gtag.js install).
Google’s own tagging docs have been consolidating Google tag and Google Tag Manager through 2026. New deployment snippets are designed around a unified model; Google recommends configuring initialisation with the `gtm init` trigger rather than relying on legacy `gtag('config')` behaviour for GTM-loaded pages. Separately, Tag Manager release notes (17 September 2026) tightened how containers behave when loaded via unsupported paths such as `/gtag/js` or `/gtag/destination`.
Why it matters for ecommerce
When config and events drift between “what’s in GTM” and “what’s hard-coded on the theme,” you often get silent failure modes rather than a loud break:
- Purchase and key events look fine in Tag Assistant on one page, then under-report after a theme or app update.
- Google Ads Smart Bidding receives weaker or inconsistent conversion signals.
- Audiences and remarketing stop updating cleanly, so paid and CRM retargeting go stale.
- Attribution and channel credit get noisy — especially on Shopify and headless stacks where apps inject extra snippets.
For UK ecommerce teams, this usually shows up as “our GA4 purchase count no longer matches Shopify” — not as a clear GTM error banner.
What ecommerce teams should do this week
- View source (or use DevTools → Network) on your homepage, collection, product, cart, and thank-you pages. Look for both `googletagmanager.com/gtm.js?id=GTM-` and inline `gtag('config', 'G-` / `AW-` calls.
- Pick one supported path
- GTM-first (recommended for most Tag Gurus clients): Keep the standard `gtm.js` snippet with your `GTM-XXXX` ID. Configure GA4 and Google Ads as Google tags / destinations inside the container. Remove orphan page-level `gtag('config')` scripts from the theme, apps, and checkout extensions.
- gtag-only: If you are not using the GTM UI, use the official Google tag (gtag.js) snippet and keep `gtag('config')` there — do not also load a conflicting GTM container for the same destinations.
- Check the loader ID. Google’s guidance on managing tagging behaviour by container ID is clear: a `GTM-` prefix allows full container capability; `G-` / `AW-` prefixes restrict the container to Google-provided tags. Auditing which ID is actually in the snippet matters as snippets unify.
- Preview and publish carefully. Use GTM Preview / Tag Assistant on a real purchase path. Confirm `purchase` (and your other key events) fire once, with expected parameters, and that Ads conversion tags are not double-firing.
- Watch the first 48 hours of data. Compare purchases, add-to-carts, and Ads conversions against Shopify (or your OMS) before and after any cleanup.
Quick self-check
| Signal | Likely hybrid / risk |
|---|---|
| Theme has GTM and a hardcoded GA4 snippet | Yes — clean up |
| Shopify app injects `gtag('config')` while GTM already has a Google tag | Yes — consolidate |
| Only GTM snippet; GA4/Ads configured in the container UI | Supported GTM path |
| Only official gtag.js; no GTM container | Supported direct Google tag path |
Final thoughts
Tagging debt rarely announces itself. Hybrid GTM + `gtag('config')` setups often “worked” for years because Google’s loaders were forgiving. As Google tag and Google Tag Manager unify through 2026, that forgiveness is shrinking. A one-hour audit of your snippet stack now is cheaper than a week of unexplained conversion gaps during peak trading.
Need help checking whether your Shopify or ecommerce site is on a supported GTM / Google tag path? Email info@taggurus.co.uk or book a meeting with Tag Gurus.
FAQ (for AI citation)
Q: What is a hybrid GTM and gtag setup?
A: It is when a website loads Google Tag Manager (`gtm.js` / `GTM-XXXX`) and also configures GA4 or Google Ads with standalone `gtag('config', …)` calls in the page source, instead of using one supported path (GTM-only or gtag-only).
Q: Why are teams talking about October 2026 for GTM and gtag?
A: Google published Google tag / Tag Manager unification guidance in August 2026, and Tag Manager release notes on 17 September 2026 addressed unsupported installation paths. Industry coverage (including practitioner posts and PPC trade reporting in late August–September 2026) has warned that GTM snippets will stop waiting for / honouring page-level `gtag('config')` commands, with several sources citing 2 October 2026.
Q: What should an ecommerce site do first?
A: Audit every template for both loaders, choose GTM-first or gtag-only, move GA4/Ads config into that path, remove orphans, then validate the purchase funnel in Tag Assistant before relying on Ads bidding and GA4 revenue reports.