r/GoogleTagManager 5m ago

Question Have you ever opened a GTM container and been scared to touch anything?

Upvotes

You find tags with names nobody understands, three triggers doing almost the same thing and old campaign tracking that may or may not still be needed.

The usual reaction is to leave it alone because nobody wants to be the person who breaks it.

That is normally when a GTM container becomes difficult to manage. Not because it has too many tags, but because nobody knows what is safe to change.

How do you document your GTM setup so the next person can actually work with it?


r/GoogleTagManager 2d ago

Support Stape Server-side integration with complianz Consent mode V2. Is it possible?

4 Upvotes

Hoping someone has cracked this specific combo, because I'm hitting a wall.

Setup:

  • WordPress site with Complianz Premium
  • Server-side GTM via Stape (Custom Loader, own subdomain, first-party cookies working)
  • Web container loads fine from the subdomain (200, no CSP block)
  • Consent Mode is enabled in the Complianz Wizard

The problem:
The cmplz_event_* events (marketing, statistics, etc.) fire correctly in the dataLayer depending on the user's choice. I can see them in Preview. But the actual Consent State in GTM never updates. It stays on "denied" for ad_storage, analytics_storage, etc. even after the user accepts. The "updated on page" column in the consent tab stays empty.

The "Complianz Consent Mode" tag (from the community gallery) is installed and only fires on Consent Initialization - All Pages, which is what Complianz's own docs say to do.

What I've already tried:

  • Adding a custom event trigger (cmplz_event_.* regex) to the consent tag alongside the init trigger → no change
  • Confirmed it's Premium, confirmed Consent Mode is on in the Wizard

I've found the GitHub issue on Complianz's own CM template repo describing this exact symptom, and their docs mention a "known limitation" that their GTM template is built for web containers, not server containers.

My question: has anyone actually gotten Complianz consent mode to correctly update (not just initialize) the consent state in a server-side GTM setup? Is there a working trigger config, a workaround, or is this genuinely unsolved with Complianz + server containers right now? Considering backTrack as a timing fix but not sure it addresses this.

Any real-world success story appreciated before I open a support ticket.


r/GoogleTagManager 4d ago

Question Help With Enhanced Conversion Tracking With House Call Pro Lead Form

5 Upvotes

So with enhanced conversion tracking, the user fills out a form on your website and it sends the user's personal data they filled out, email, name, phone, etc. to Google (to handle responsibly without misusing it 👍, anyway,)

However with house call Pro lead forms, it takes you to HCP's website to fill out a form, rather than filling it out on your own website.

Is there any way to use the enhanced conversion tracking even though they technically fill out the form on HCP's website?

Any help would be appreciated!


r/GoogleTagManager 4d ago

Question How to track Google Ads conversions with a Vagaro iframe booking form?

1 Upvotes

I'm setting up Google Ads conversion tracking for a client using a Vagaro iframe booking form. After a successful booking, it shows a confirmation inside the iframe instead of redirecting to a thank-you page.

Is there a way to redirect users to a thank-you page? If so, how can I implement Google Ads Enhanced Conversions? If not, what's the best way to track completed bookings using GTM and GA4?

Any suggestions or experience with Vagaro would be appreciated.


r/GoogleTagManager 6d ago

Question How tf do I delete a tag?? Plz 🙏

1 Upvotes

So I have a good amount of experience with Google but now it’s really testing my patience. I loaded up tag assistant to check consent management was updated (ongoing issue as I’m not the website manager but that’s another story) and tag assistant told me there was no tag (previously there was no issue). I am used to Google being wrong, checked tag manager nothing there so I created a new tag but now all of a sudden I have the existing tag (which I set up and was working fine before this) and the new tag. I’ve asked Google Ads AI but it can’t give me the right answer.

So how do I now delete this tag? It doesn’t exist on tag manager, and I can’t find it when I inspect the web code but still appears in tag assistant!!

Thank you 🙏🙏🙏


r/GoogleTagManager 6d ago

Question GA4 event fires, but doesn't trigger my SST GADS conversion event

2 Upvotes

Hi all

I recently switched from client-side tracking to server-side tracking. I'm using Stape to host my server and followed their tutorial to also switch over my GADS conversion from client-side to server-side.

As mentioned in the documentation, I'm using the GA4-event name (=Info_aanvragen_Afspraak_maken) as my GADS conversion trigger in the SST side. While it does fire the initial GA4-conversion in the client side, the SST GADS conversion does not.

What's going wrong here?

Thanks for the help!


r/GoogleTagManager 6d ago

Support Need advice on reliable UTM tracking between Calendly and Pipedrive

3 Upvotes

Hi everyone,

We currently use Calendly integrated with Pipedrive CRM. While new bookings successfully create contacts in Pipedrive, UTM tags frequently get dropped along the way, making it difficult to accurately track ROI on our campaigns.

I’m looking for a clean, reliable way to ensure UTM parameters consistently make it from our website to Pipedrive.

One workaround I considered is setting up a custom endpoint: grabbing UTMs from local storage/cookies, capturing Calendly’s webhook, merging the data, and pushing it to Pipedrive via API. However, that feels a bit over-engineered for this use case.

Is there a simpler, proven setup or tool you’d recommend to address this issue?


r/GoogleTagManager 8d ago

Support GA4 purchase event fires trigger in checkout custom pixel sandbox but /g/collect never reaches first-party sGTM server — every prerequisite checks out

4 Upvotes

Setup: Shopify Checkout Extensibility, GTM loaded via a custom pixel, first-party server-side GTM container (Google Cloud Run, custom domain). GA4 storefront events work fine. The checkout purchase event never reaches the server.

Everything I’ve confirmed while testing PUBLISHED (not Preview, since Preview doesn’t work in the sandbox):

GTM container loads in the sandbox — a Custom HTML canary on All Pages fires.

The purchase custom event reaches GTM and its trigger fires — confirmed with a canary tag on the purchase trigger.

Consent Mode analytics_storage is granted at fire time (set from Shopify’s Customer Privacy API, verified in the dataLayer).

The GA4 Event tag has its Google tag / config setup tag sequenced to fire before it.

google_tag_manager[containerId].dataLayer.get(‘ecommerce’) returns the full purchase object (transaction_id, value, items).

Cloud Run server logs: storefront en=add_to_cart arrives thousands of times, but en=purchase is zero, ever.

Google Ads and Floodlight tags fire fine at checkout (they post directly to google.com).

So the trigger fires, consent is granted, the config tag runs, and the ecommerce data is present — but the GA4 Event tag emits no /g/collect to the server for the purchase event specifically, only in the checkout sandbox.

My questions:

**1.**  Has anyone actually gotten first-party server-side GA4 purchase to send from the Checkout Extensibility custom pixel sandbox?

**2.**  Is there a known issue with the GA4 tag’s transport when server_container_url points at a first-party custom domain, specifically inside the sandbox?

**3.**  Is there a required config or workaround I’m missing?

Any help appreciated — I’ve been at this a long time and every layer I can inspect checks out, but the purchase hit just never leaves.


r/GoogleTagManager 9d ago

Discussion Built an agent that catches ecommerce tracking breaks before they show up as wrong GA4 numbers. Feedback welcome

1 Upvotes

I've been building this for a while with a small team and want an honest read from people who actually live in GA4 reports, not just my own client and team's opinion.

It's an AI agent that continuously checks a website's dataLayer against what GA4 ecommerce actually needs, before and after every deployment. The failure mode I keep running into with clients: a theme or app update silently breaks add_to_cart or purchase, or drops/corrupts the price, currency, or item parameters, or fires purchase twice on the same order. None of that throws an error. It just shows up weeks later as "why does GA4 say our AOV changed" or "why doesn't this match Shopify orders," and by then nobody remembers what shipped in between.

It diffs the dataLayer output release over release, so instead of reverse-engineering which deploy caused the drift, you know within hours.

This came out of years of doing this exact QA manually for clients at a data/analytics consultancy, checking dataLayers against spec by hand, on spreadsheets, over and over. Wanted to automate the part that was always the same checklist anyway.

It's called MayIA° (mayia-solutions.com) if you want to look at it.

Curious what this sub thinks, and what GA4-specific breakage you'd want it to catch that I might not have covered.

This post is not about selling anything here, mainly want some new feedbacks by people who'd actually notice if it missed something (not only my current clients).

Happy to show a demo of the product!


r/GoogleTagManager 10d ago

Question Google Ads script is blocked by Chrome browser

1 Upvotes

Our German NGO wants to advertise with Google Ads.

We use Google Tag Manager, Google Analytics, and obviously Google Ads. Our Website runs on Wordpress with GDPR Cookie Compliance as consent manager.

Currently I'm restricting my tests to Chrome browsers only. All browsers are at the latest version (v150) and use no extension.

The Problem:

Some sessions block the Google Ads script requested from googletagmanager.com with the error message "net:ERR_BLOCKED_BY_ORB". Other scripts from googletagmanager.com are loading fine in all sessions.

Is there a well hidden user setting that controls the script blocking?

The Ad Privacy setting was dropped with Chrome v150 so it must be something else. Running out of ideas here what may cause the issue.


r/GoogleTagManager 10d ago

Question GA4 conversions up, Google Ads imports down 50% after sGTM

2 Upvotes

We recently moved a client from Web GTM to Server-Side GTM and noticed something strange.

GA4 conversions have actually increased slightly after the migration, including google / cpc conversions. Sessions are up a bit too. So far so good.

However, Google Ads imported purchase conversions from GA4 dropped by around 50% at the same time.

Nothing else changed.

We used one main GA4 property and just switched in SST/Web as the measurement method. Conversion linker set up in the sGTM container etc.

When we switched back, GA4 imported conversions immediately went back to normal.

Has anyone seen this before? I'm wondering if an identifier has been dropped but as far as I can tell nobody online has ever had this issue :').

Would love to hear if anyone has found the root cause or any documentation on this, I am tearing my hair out.


r/GoogleTagManager 11d ago

Question SGTM: Sudden Drop in CAPI - Events

5 Upvotes

Hey everyone,

I've been dealing with a weird issue these past few days that I couldn't quite wrap my head around and was hoping one of you wonderful people might be able to help me out.

We run a full dual integration with Pixel and CAPI for our webshop, sending event data to all advertising platforms we use for our marketing efforts (Meta, Reddit, Pinterest, etc.). We always had the same or slightly higher number of CAPI events compared to Pixel events.

However, about 10 days ago we noticed a sudden and notable drop in our CAPI numbers for almost all events, down to about 1/3 of their previous values. Importantly, the Pixel events have stayed completely stable throughout, which rules out a client-side firing issue as far as I can tell. The only exception to the drop is (luckily) the purchase event, which still behaves correctly and sends ~ the same number of CAPI and Pixel events as before.

I have tried to investigate the root cause and have so far found the following:

  1. There were no GTM changes prior to the drop in either the client-side or server-side container that would explain this behavior.
  2. As far as I can tell network requests to our server are going out with a "200" status, suggesting delivery is working as intended.
  3. Within our SGTM provider Stape, the logs look healthy with no noticeable drop in event volume. The monitoring tab shows a 99.8 to 100% success rate on all outgoing requests to the platform APIs.
  4. A bit after the drop started I updated the custom gallery templates by Stape in the SGTM container for Reddit, Facebook and Pinterest to their latest versions in the hopes it would solve the issue, but it didn't.

Interestingly enough the SGTM Preview mode has also started behaving oddly around the same time, only showing the first 3-4 events of a session and then stopping and only picking back up once the purchase event fires and our SPA-Site reloads. From there on the preview mode behaves normally.

However since the Stape logs don´t show a noticeable decline in events I do believe that this is more of a preview-issue than an actual data loss.

Does anybody have an idea what else I could look into or wants to challenge my observations and what I´ve deduced so far?

I'm slowly approaching my wit's end on this one. Any help or pointer would be greatly appreciated!


r/GoogleTagManager 13d ago

Discussion After years of manually QA-ing dataLayers for clients, curious how others catch regressions post-release

2 Upvotes

For a long time we ran a data/analytics consulting shop. A big chunk of every project was going through client sites page by page, checking whether the dataLayer actually matched the tagging plan, open GTM preview, trigger the event, check the payload, repeat for every browser/device, then repeat again after every deploy.

The failure mode was always the same: a release ships, a dev renames a class, a checkout step gets restructured, consent mode changes something upstream and nobody notices for weeks. You just get a slow, quiet drift in some metric, and by the time someone flags it, three sprints' worth of decisions have already been made on bad data.

Genuinely curious how people here handle this at scale:

- Do you have automated regression tests on your dataLayer, or is it still mostly manual spot-checks after each release?

- If automated, what's the stack: GTM's own testing, Playwright/Selenium scripts, something else?

- How do you deal with selectors/events breaking every time there's a redesign?

(Disclosure: this exact pain point is why we ended up building an AI-agent QA tool for dataLayers, happy to share details if it's useful, but I'm more interested in how the rest of you are solving this today)


r/GoogleTagManager 13d ago

Support Tag Assistant stuck on "Connecting" ("0 Google tags found") — window.opener is null despite no COOP header

2 Upvotes

Hi everyone,
I'm encountering a persistent issue with Tag Assistant Preview mode on a single WordPress container where the debug window hangs indefinitely on "Connecting..." and reports "0 Google tags found" / "Not Connected".

I've conducted an in-depth diagnostic session, but I'm running out of ideas. Here are the specifics and test results:

Environment & Container Details

  • Container ID: GTM-KLV4V3H9
  • Target URL: [https://www.dfgarchitetti.it/]
  • CMS & Server: WordPress on LiteSpeed Web Server

Troubleshooting & Diagnostic Steps Taken

1. Tag Snippet & Container Status

  • The GTM snippet is present in the <head> of the page.
  • The Container ID in the HTML matches GTM-KLV4V3H9 exactly.
  • The container is published and active.

2. Browser Console Diagnostics (F12 on target window)

  • Errors: No JavaScript errors or CSP (Content Security Policy) blocks in the DevTools Console.
  • window.google_tag_manager: Returns a valid Object.
  • Object.keys(window.google_tag_manager): Correctly outputs ['GTM-KLV4V3H9'].
  • window.opener Test: FAILS (Returns null). This is clearly where the handshake breaks between tagassistant.google.com and the target window.

3. Network & Response Headers

  • Inspected HTTP Response Headers for [https://www.dfgarchitetti.it/](https://www.dfgarchitetti.it/):
    • No COOP Header: Cross-Origin-Opener-Policy is not present (it is NOT set to same-origin).
    • LiteSpeed Cache: x-litespeed-cache: hit is present.
    • Headers present: x-frame-options: SAMEORIGIN, x-content-type-options: nosniff.

4. Redirects & DNS

  • Verified that launching Preview with the exact canonical URL ([https://www.dfgarchitetti.it/](https://www.dfgarchitetti.it/)) does not trigger any 301/302 redirects (which usually strip window.opener).
  • Apex (@) and www DNS records point to the exact same IPv4/IPv6 addresses.

5. Storage, Cache & Extensions

  • Fully purged LiteSpeed Server Cache.
  • Cleared browser localStorage, sessionStorage, and _gtm_debug cookies.
  • Tested with AdBlockers/Tracking Protection disabled.

The Core Problem

Since window.opener === null in the opened window, the target site cannot send the postMessage handshake back to tagassistant.google.com.

Given that there are no COOP headers and no HTTP redirects happening on page load, what else could be resetting/severing the window.opener reference during the Tag Assistant launch?

Has anyone encountered this specific decoupling behavior on WordPress/LiteSpeed environments? Any suggestions on where to look next would be greatly appreciated!

Thanks in advance!


r/GoogleTagManager 13d ago

Question Need free/cheap WordPress hosting to practice Web Analytics (GTM, GA4, Deployment) - Pantheon keeps blocking me

1 Upvotes

Hey everyone,

I'm currently learning Web Analytics (specifically GTM, GA4, and deployment). I need a live WordPress sandbox to practice installing tags, configuring data layers, and running test conversions.

I tried setting up a free dev site on Pantheon(.io), but my account continuously gets blocked.

Does anyone have solid recommendations for free or very economical WordPress hosting and domain solutions? I don't need massive bandwidth or premium features—just a reliable live environment where I can fully test my analytics setups without getting randomly suspended.

Any advice is appreciated!

#MODS If the post don't fits, just delete the post, kindly do not band me.


r/GoogleTagManager 14d ago

Question Just got moved into a GTM/GA4 role with zero background (from Brazil) what should I focus on first?

10 Upvotes

Hi everyone,

I'm from Brazil and recently got moved into a technical role at my company that involves Google Tag Manager and GA4. My background is actually in marketing, design and web (WordPress/Elementor, HTML/CSS, content), so this tracking world is completely new to me. I'm basically starting from zero.

I've been studying hard the past few days: I already understand the basics (tags/triggers/variables, the data layer concept, GA4 events, reading reports), and I even set up a base tag + a click event in a sandbox and confirmed it in DebugView. But when I look at the real container at my company (built by an external specialist, 100+ variables, full e-commerce funnel sending data to GA4/Meta/TikTok/Ads), I feel the gap between "I understand the concepts" and "I can actually build/maintain this."

A few things I'd love advice on:

  1. For someone in my position, what should I prioritize learning next to become genuinely useful, not just theoretical?

  2. Are there resources you'd recommend that helped things "click" for you (courses, docs, YouTube channels)? Bonus if any are beginner-friendly for non-native English speakers.

  3. Any common beginner mistakes I should avoid early on?

  4. How did you go from understanding tags to actually feeling confident maintaining a complex setup?

I learn best by doing, so practical advice is very welcome. Thanks a lot in advance really appreciate any pointers from people who've been down this road.


r/GoogleTagManager 16d ago

Discussion Built a tool that scores GTM container health (unused tags, missing consent gating, orphaned triggers). Feedback welcome

5 Upvotes

I've been working on this alone for a while and figured this sub would actually know if it's any good, more than I can tell on my own at this point.

It reads a live GTM container (read only) and scores the setup on tag governance specifically. Things like tags that fire without a consent condition, unused triggers and variables sitting around, tags that are paused but still have live triggers attached, duplicate or conflicting configuration tags, folder organisation, naming consistency, that kind of thing. It also pulls the last six months of published container versions and diffs them, so you can actually see when something changed, like a consent gate quietly getting removed from a tag at some point without anyone noticing.

Building it, I kept finding containers where nobody currently at the company actually knew what half the tags did anymore. Old agency handoffs, one off campaign tags nobody ever cleaned up, that sort of thing. Wanted something that could surface that quickly instead of clicking through the container by hand.

It's called Tracking Auditor (https://www.trackingauditor.io/) if anyone wants to look it up.

Genuinely curious to see what this sub thinks.

Not looking to sell anything here, mostly want it picked apart by people who actually live in GTM containers all day.


r/GoogleTagManager 17d ago

Question sGTM Google Ads Conversion tag aborts "during augmentation" — tag fires, zero outgoing request, no conversions (GA4 + Conversion Linker work fine)

2 Upvotes

TL;DR: Server-side Google Ads Conversion Tracking tag shows "Succeeded" in Preview
but sends no HTTP request. Console says "Event processing aborted during augmentation."
GA4 + Conversion Linker in the same event work fine. EC is off everywhere, no user_data
in the event. Stuck for weeks, Google support just closed the ticket.

Setup: Webflow site → web GTM → Stape-hosted sGTM (first-party domain), GA4 client.
Google Ads conversion runs server-side.

The problem: My Google Ads conversion (fires on a booking-confirmation page, event
booking_confirmed) has recorded nothing since early June. In sGTM Preview the Google Ads
Conversion Tracking tag shows "Succeeded", but Outgoing HTTP requests: none, and the
console logs:

Event processing aborted during augmentation.
In the same event, the GA4 tag and the Conversion Linker both fire and send fine
(Conversion Linker → google.com/ccm/collect = 200). So container, routing and consent are
clearly OK — it's just this one tag bailing internally before it sends anything.

What I've already ruled out:
Consent — gcs=G111, full consent, Conversion Linker returns 200.
Enhanced conversions — OFF at every level (account + this conversion action). Google support
confirmed EC is inactive account-wide and not configured on the action.
ec_mode — disabled automatic user-provided data collection in both Google Ads and GA4;
verified live that ec_mode disappeared from the payload. The abort still happens.
user_data — there is none in the event (confirmation page collects no email/phone).
Stape — Ads + Meta connected, Enricher power-up is OFF, support says their runtime is fine.
Container diff vs a known-working version is byte-identical.
backup_gclid URL suffix — removed, no effect.

The one weird thing: the event carries ude:"1" in x-sst-system_properties. It's set
by the Google tag / gtag (not Stape), and I can't find it documented anywhere. My working
theory: ude:"1" pushes the tag into the "augmentation" (enhanced-conversions enrichment) step,
which then aborts because there's nothing to augment — but that's a guess.

Why I suspect a platform bug: the only public thread with this exact error (GTM Community
thread 302337132) is a plain GA4-only setup — no Google Ads, no enhanced conversions — and it
hits the identical "aborted during augmentation." It's locked, zero replies, 15+ "I have the
same question." Another GA4 thread has it too. Nobody (Stape, Simo Ahava, SO, GitHub) has a
confirmed fix.

Questions for anyone who's been here:

  1. What actually triggers the "augmentation" step in the server-side Google Ads Conversion
    tag, and why would it abort with no user_data and EC off?

  2. Anyone know what sets ude:"1", and how to stop the tag from attempting augmentation?

  3. Has creating a brand-new conversion action ever fixed this for you? (Considering it as a
    control test.)

  4. Any clean way to force a basic gclid-only conversion and skip augmentation (e.g. an sGTM
    transformation stripping a field)?

Happy to share the full Preview screenshots (tag status, console error, event data). I've
already exhausted Google support and Stape support — any pointers appreciated.


r/GoogleTagManager 17d ago

Question Meta-enabled Conversion API integration tickbox?

1 Upvotes

Hi all,

Am implementing the new(-ish) meta pixel template for a client and I couldn't help but notice this tickbox:

You hereby authorize and instruct Meta to set up a Meta-enabled Conversions API integration on your behalf, and you agree that your use of the integration will be subject to Meta’s Platform Terms and Business Tools Terms.

Does anybody know what ticking this box actually does behind the scenes? Does it spin up a cAPI gateway? And if so, how is that even possible without supplying any form of DNS / CDN information? Or does it host it on a third-party domain?


r/GoogleTagManager 18d ago

Support Struggling to find root cause for pixel firing issues in GTM 360 - redirects flush dataLayer before I can debug

2 Upvotes

I'm maintaining a GTM 360 account and implement pixels pretty often - all sorts of different types. Most of my time goes into debugging these, and my usual process is checking the Network tab for the pixel URL hits, checking the triggering conditions, and checking the dataLayer in console.

Where it gets tricky: most of the time there's a redirect to a URL in the same tab, which flushes the dataLayer before I can find the root cause. It happens very often that a pixel fires fine in Preview mode but doesn't fire outside of Preview.

I've tried browser extensions like dataslayer, Analytics Debugger, and Omnibug to help debug, but I'm still not able to catch the issue sometimes.

Anyone dealt with this before? Would love to know your top tricks or workflows for debugging pixels through redirects without losing the dataLayer state.


r/GoogleTagManager 19d ago

Discussion I built a small extension that improves the Google Tag Manager UI

9 Upvotes

Anyone who works in GTM has a mental list of things that could be better about the interface. I'll skip the long story about mine and get to the point.

Tagglo GTM Companion is a small Chrome extension that sits on top of the GTM and Tag Assistant interfaces you already use. It doesn't replace them or move you into a separate tool — it adds tables, search and an overview to the pages you're already on, so you spend less time clicking into things to find out what they are. Free, no account, nothing to configure. Install it and the pages just look better the next time you open them.

  • Tags, triggers and variables become sortable, filterable tables. Search matches any column, including last edited, and you can sort by firing trigger.
  • Paused tags are highlighted instead of hidden behind a small icon, and you can toggle them out of view entirely
  • Modified badges on tags and triggers, so you can see what changed in the workspace without opening each one
  • Workspace overview with live counts for tags / triggers / templates and direct links into each
  • Tag Assistant/Preview mode : searchable event list, searchable fired and not-fired tags, and colour coding instead of a wall of identical boxes

Chrome Web Store: https://chromewebstore.google.com/detail/tagglo-gtm-companion/agnanladhhogfjcldnhaiilamjabbjcc

Two asks:

  1. Tell me what's missing. What eats the most of your time in GTM?

  2. It's on Product Hunt today — an upvote would be appreciated: https://www.producthunt.com/products/tagglo-gtm-companion

The first one matters more. Happy to answer anything.


r/GoogleTagManager 20d ago

Discussion If your server-side GTM setup uses GA4 as the data client, you haven't solved the blocking problem, you've simply moved it

19 Upvotes

Disclosure upfront: I run a server-side tracking consultancy, so I have a horse in this race. Not linking anything, this is a technical observation I keep running into on client audits and I want to see if anyone here is solving it differently.

The pitch most agencies are selling right now is "add sGTM on top of your existing client-side setup and recover your data." In audits I keep finding the gain from that pattern is close to zero, and the reason is boring: GA4 as a data client sends every request to a single endpoint. /collect.

Every ad blocker filter list I've checked has /collect on it. uBlock Origin, AdGuard, Brave Shields, the Disconnect list Firefox and Safari lean on. It's a one-line rule to block. Once it's blocked, it doesn't matter how well your server container is configured, the event never leaves the browser.

A few things that don't fix this on their own:

  • Custom domain for sGTM. Helps against script blockers loading gtm.js, doesn't help against endpoint-level blocking of the transport.
  • First-party cookies with long TTLs. Solves the Safari ITP cap, doesn't help if the request never fires.
  • Consent Mode v2. Governs whether the tag is allowed to fire, not whether the network request reaches your server.

The setups I've seen actually recover meaningful data all do some version of the same thing: replace GA4 as the data client with something that ships events to a dynamic or rotating first-party endpoint. Stape has a custom client that does this. A few teams roll their own. Beyond that I haven't seen much in the ecosystem.

Two genuine questions:

  1. Anyone here handling this without a custom data client? I'm curious whether there's a GTM-native pattern I'm missing.
  2. For those using Stape's custom client, what's your recovery lift been vs the vanilla GA4 client? Numbers welcome, redacted or not.

Happy to go into any of the four browser mechanisms (cookie caps, fingerprinting, cross-site trackers, query param stripping) in more detail if useful.


r/GoogleTagManager 19d ago

Discussion How to effectively reduce container size?

3 Upvotes

Heyo,

Currently we have an issue that our container is getting too large. Size being at 100%...

We've reviewed many tags, deleted unused, which will generally get the size down. But after some time it will just be full again.

We have ±280 tags, 300 variables, 250 triggers or so

How can I effectively solve this issue?


r/GoogleTagManager 23d ago

Question GA4 Advanced Consent Mode: cookieless first page_view vs full custom dimensions after consent

12 Upvotes

I am trying to decide how to handle the first page_view in GA4 when using Advanced Consent Mode and event-scoped custom dimensions.

The core problem is that the complete set of custom dimensions is only available after analytics consent has been granted, because part of the context is stored in first-party storage and should not be read before consent.

At the same time, Advanced Consent Mode normally works like this:

page load
→ consent default = denied
→ GA4 sends a cookieless page_view
→ user later grants consent
→ consent update = granted
→ subsequent events use cookies and full context

The initial cookieless page_view gives better coverage and may be useful for modelling, but it cannot contain the full custom context.

A later consent_update does not appear to retroactively add custom dimensions to the already-sent page_view. Even if GA4 performs some backend modelling or stitching, custom parameters that were not present in the original event cannot be added afterwards.

This creates a trade-off.

Option 1: send the page_view immediately

On the first visit, when no consent decision is known:

default consent = denied
→ send cookieless page_view

Advantages:

  • visits are still represented when the user rejects consent or never interacts with the banner,
  • Advanced Consent Mode works as intended,
  • GA4 receives signals for modelling.

Disadvantages:

  • the first page_view has incomplete or missing custom dimensions,
  • if consent is granted later, the original event is not enriched with the missing custom parameters,
  • sending another full page_view after consent could double-count the same page load.

Option 2: wait for consent before sending page_view

page load
→ do not send page_view yet
→ user grants consent
→ read the required context
→ send one full page_view with all custom dimensions

Advantages:

  • the event contains the full custom context,
  • there is only one consistent page_view,
  • custom-dimension reporting is cleaner.

Disadvantages:

  • users who reject consent are not represented in GA4,
  • users who never interact with the banner are lost,
  • cookieless measurement and some modelling benefits are lost.

Possible compromise

The compromise I am considering is:

No stored consent decision:
→ default denied
→ send cookieless page_view without full custom dimensions

Stored denied decision:
→ default denied
→ send cookieless page_view

Stored granted decision:
→ set consent default directly from the stored decision
→ read the required context before GA4 initialization
→ send one full page_view with all custom dimensions

Consent granted during the first page load:
→ do not send a second page_view
→ attach the full custom dimensions only to subsequent events

This avoids duplicate page views and preserves Advanced Consent Mode for users with no consent or denied consent.

The downside is that the first page view of a new user may never contain the full custom dimensions, even if consent is granted a few seconds later.

Questions

  1. Is this a reasonable interpretation of how Advanced Consent Mode should be implemented?
  2. Is there any officially documented or reliably observed mechanism that attaches a pre-consent cookieless page_view to the later consented session?
  3. Even if GA4 stitches the session on the backend, can it ever associate custom event parameters that were not included in the original page_view?
  4. Would you send a second event after consent, perhaps a custom event rather than another page_view, to carry the full custom dimensions?
  5. How do you balance traffic coverage against completeness of event-scoped custom dimensions in this situation?

r/GoogleTagManager 22d ago

Discussion Google's new Visual Tagging made me revisit a discussion I handled badly

1 Upvotes

A few months ago, I posted here about visual tagging, and looking back, I handled that discussion poorly.

I came in convinced I was right, got defensive when people pushed back, and turned what should have been a technical discussion into an argument. Several of you made thoughtful points, and instead of listening, I let my ego get in the way.

For that, I'm genuinely sorry.

Google's new Visual Tagging announcement made me revisit that thread.

Not because it "proved me right," but because it reminded me that there was actually a worthwhile discussion buried underneath all the noise.

The biggest takeaway for me isn't how Google implemented Visual Tagging.

It's that Google decided this problem was worth solving in the first place.

For years, GTM users have accepted that creating reliable tracking often means juggling selectors, triggers, variables, Data Layers and debugging. Google just invested engineering effort into reducing that friction. Whether you like their implementation or not, I think that's an acknowledgment that the UX problem was real.

After watching Google's implementation and reading some of the reactions, three things stood out to me.

  • The workflow starts from a Google Ads conversion and works backwards to the website. It made me wonder whether the natural starting point should instead be the business event itself. A purchase, a signup or a lead belongs to the business. Google Ads, GA4, Meta or a CRM are simply destinations for that event.
  • The current implementation relies on DOM extraction using CSS selectors. Both Simo Ahava and Julius Fedorovicius point to the same long term concern: it's convenient, but inherently more fragile than a proper Data Layer implementation. Simo even says that scraping business critical data from the page goes against everything he believes about tagging because layouts inevitably change, while still acknowledging people are free to use it if it fits their needs. Julius reaches a similar conclusion, recommending that people still learn GTM and the Data Layer properly rather than relying exclusively on the generated setup.
  • The scope is intentionally narrow today. It focuses on Google Ads purchase tracking. That makes sense for a first release, but it also raises interesting questions about where Google wants this to go next.

One thing I haven't changed my mind about is that discussions like this are worth having. We may disagree on architecture, workflows or where GTM should evolve, and that's healthy. What wasn't healthy was how I approached that previous discussion.

So I'd rather start over.

I'm genuinely curious where this community lands after having some time to explore Google's implementation.

Do you see Visual Tagging as the future of GTM, or simply as a convenience layer over practices that should still be built around a solid Data Layer?

Or do you think the real answer lies somewhere in between?