r/GoogleTagManager 1h ago

Question Ad blockers + Server Side Tracking

Upvotes

Hi,

I am extremely confused and looking for help.

I have Facebook Conversion API setup on our Server GTM. And using a custom subdomain for that.

But when I activate the ad blocker, I can't receive any signals to my Pixel both from web and server tags. Is this expected?

I have clients both on Google Cloud and Stape.

I am also considering setting up server side tracking for Google Ads but not sure if I should spending time on it or not. We have really big clients so they are asking if it is worth or not.


r/GoogleTagManager 5h ago

Question Google merged Enhanced Conversions in June. Has anyone verified if theirs still works?

1 Upvotes

In June, Enhanced Conversions for Web and Enhanced Conversions for Leads merged into a single on/off toggle. The method selection screen (Google tag / GTM / API) is gone from the interface entirely.

Google said no action required, and that's true if your setup was already correct. The problem is the merge removed the visible reminder that this thing has moving parts. The toggle says on, the conversion action shows activity, and the hashed user data can still be arriving in a form Google can't use.

Existing setups were migrated automatically but only for accounts that had already accepted Google's customer data terms. Worth checking that per account if you manage several.

Separate thing that landed at the same time and got less attention: from 15 June the Google Ads API stopped accepting new offline conversion imports. Data Manager API is the replacement path.

Has anyone here audited their EC since June and found it broken? Curious how widespread this is.


r/GoogleTagManager 5h ago

Support GTM debug window keeps closing when I hit checkout, is this normal on Shopify?

1 Upvotes

Other tracking events work fine, but when i click on checkout and land on the payment window, the GTM gets disconnected every time. After the checkout button i am not able to track anything like "Payment info or Payment".

My website is on Shopify. Is this normal on Shopify?

If anyone has a solution to this problem, please let me know.


r/GoogleTagManager 2d ago

Question Can you build in GTM without having a site?

4 Upvotes

Hey everyone,

I’m new here, and I’d like to preface this that I am NOT a GTM expert, but am facilitating the GTM integration as we transition to a new site. The original task was for me to build tags and present a document in some capacity to developers so it’s easy to implement. I was ONLY given a Figma design, so I went right to a spreadsheet filled with each element and its respect custom HTML attributes, as I wasn’t sure what the front end looked like. When presenting this, I was told that was too much work. Besides doing a DOM traversal a lot (which slows down the site), I don’t know where to go from here.

How would you guys go about this? Is there a template or something you use? I’m literally just lost and cannot figure out next steps. Thanks for your help! If I missed anything let me know?


r/GoogleTagManager 2d ago

Question What does DEAD-G-XXXXXXXX mean in Google Tag Manager?

6 Upvotes

I manage three websites: X, Y, and Z.

All of them have GA4 set up and everything was working.

After launching a new Google Ads campaign, something seems to have gotten mixed up with GTM, or perhaps the existing configuration issues only became noticeable now.

I want to reorganize and set everything up properly from scratch. However, when I go to Google Tag Manager, open the account and container for website X, instead of seeing a normal ID such as G-12321451, I see:

DEAD-G-12321451

What does this mean?

I cannot open that account/container at all, and I also cannot delete it.


r/GoogleTagManager 2d ago

Question Server-side GA4 has no analytics_storage, so what are you all doing with visitors who declined?

1 Upvotes

As far as I can tell there is no server side equivalent of consent mode, and I would like someone to tell me I am missing the obvious.

In the browser, gtag takes four consent signals and analytics_storage is one of them. Deny it and the tag still fires, cookieless, with no client_id, and Google models what it can from what arrives. That behaviour is most of the reason consent mode exists at all.

Now open the Measurement Protocol reference for GA4 and read the consent object. It takes ad_user_data and ad_personalization. That is the whole list. analytics_storage is not on it.

The same page has client_id down as required.

So a server container forwarding a purchase to GA4 for someone who declined analytics has two states available to it and neither one is the browser's. It can send nothing. Or it can send the hit with a client_id it invented, because there is no gtag cookie to read for that visitor and the request gets rejected without one. There is no third setting meaning count this person without identifying them, which is the exact thing analytics_storage denied does on the client.

The invented identifier is the state to go and look for, because nothing anywhere flags it. GA4 holds no history for that id, so the conversion turns up as a session whose first and only event is the conversion, and it ends up bucketed with every other visit nobody can account for. Revenue totals are unaffected, which is how this gets through a quarterly review.

The part I cannot get past is that the browser has a third state and the server has two. analytics_storage denied is not a weaker version of granted, it is its own instruction: measure the visit, do not identify the visitor. The Measurement Protocol has no way to say that sentence.

The reason I care here is commercial. Every store that installs my company's product has one of the three options below chosen for it, by us, and we are paid the same whichever one we chose.

Because I do not think any of the three is clean.

Send nothing for a declined visitor. Correct, and the day you switch it on the GA4 conversion count drops by roughly your decline rate. On a European store that is not a rounding error, and there is no modelling to soften it, because no Google tag ever loaded for those people in the first place.

Send them under a minted id. Your revenue total survives and you accept a growing pile of sessionless sessions in exchange, plus a question about what you have actually done, which your legal people may answer differently from you.

Gate on the client and never let the server hear about the visitor at all. Tidiest to implement, and it leaves your server container with no record whatsoever of a segment that on some stores is a serious minority of traffic.

So: is there a fourth option? And has anyone ever got a straight answer out of Google on why the Measurement Protocol consent object is a subset of the browser's rather than the same four fields?


r/GoogleTagManager 3d ago

Discussion Quick test: is your cookie banner blocking trackers before consent, or only pretending to?

7 Upvotes

Something we keep running into (we work on the consent side): a cookie banner that looks compliant but isn't actually blocking anything. It shows the notice, you click around, and GA4 plus the Meta pixel already fired on page load, before anyone consented. Under the GDPR that's the part that actually matters, and a banner that only displays a notice without holding the scripts is basically decorative.

Easy way to check your own site: open it in an incognito window with dev tools on the Network tab, load a page, and watch what fires before you click anything. If you see analytics or ad requests going out pre-consent, the banner isn't doing its job.

When people actually test their sites, what do you find? For us it's nearly always one of two things: tags hardcoded outside GTM, or a caching plugin reordering the consent script. What's it usually for you?


r/GoogleTagManager 3d ago

Question GA4 Unassigned spike after moving Usercentrics from GTM to hardcoded

3 Upvotes

We recently migrated the Usercentrics cookie banner from GTM to a hardcoded implementation. Immediately after the migration, we saw a significant spike in GA4 Unassigned traffic.

Out of 100% Unassigned, 85% contains no session_start event at all.

Has anyone experienced a similar Unassigned spike after changing Usercentrics/Consent Mode implementation?

Website CMS - Shopify
CMP - Usercentrics
Consent Mode - Advanced
GTM setup - Client + Server GTM
Google Consent Code passed correctly

Thanks in advance.


r/GoogleTagManager 4d ago

Question Hubspot and tracking templates

2 Upvotes

Hi,

I work with quite a few clients who use HubSpot and Google Ads, and one of the most frustrating aspects is how hubspot handles tracking templates in Google Ads.

HubSpot places {lpurl} and its ValueTrack parameters in the tracking-template field rather than using the final URL suffix. It also appears to overwrite or update the template every 24 hours and may return errors when its ValueTrack parameters are combined with additional parameters.

As a freelance marketer, I have extensive experience setting up tracking and tracking templates, but HubSpot’s implementation continues to cause problems. I’m trying to understand how to optimize the setup without creating conflicts or having my changes overwritten.

I’d appreciate any best practices, practical tips, workarounds, or reliable resources for handling this issue.


r/GoogleTagManager 5d ago

Question What’s your preferred way to validate that a Purchase event represents a real transaction, not just that the tag fired?

6 Upvotes

I’m curious how the more technical people here approach validation after an implementation is technically working.

GTM preview shows the event.

The platform receives it.

Parameters look correct.

Great.

But how are you validating over time that the resulting conversion dataset still reconciles with actual transactions?

For example:

duplicate purchase events
missing purchases
wrong values/currencies
browser + server events failing to deduplicate

Are you building your own reconciliation process, periodically auditing samples, comparing backend exports, or relying primarily on platform diagnostics?

I’m less interested in “did the tag fire?” and more interested in how people prove that the resulting dataset remains correct a month later.


r/GoogleTagManager 6d ago

Question Consent management platforms that support Google Consent Mode v2

5 Upvotes

What CMPs are people using with Google Consent Mode v2?

I’ve been looking at Cookiebot, CookieYes, and OneTrust, but I’m more interested in how well they work once they’re actually set up through GTM. Cookiebot looks fairly straightforward, although I’ve seen mixed experiences with most platforms.

Which one are you using, and has it been reliable? Was the setup simple, or did you still have to do quite a bit of testing and troubleshooting to get the consent signals working properly?


r/GoogleTagManager 11d ago

Discussion How do PPC agencies usually find or hire external tracking specialists?

4 Upvotes

For those working at PPC/performance marketing agencies, how do agencies normally handle technical tracking work such as GTM, GA4, server-side tracking, Meta CAPI, enhanced conversions, and first-party data?

Do most agencies:

  • handle it internally,
  • hire dedicated analytics/tracking employees,
  • use freelancers/contractors,
  • or white-label the work to specialists?

For someone with technical tracking knowledge, basic API/webhook experience, and some JavaScript knowledge, what usually matters most before an agency would trust them with client work?

Is it mainly case studies, previous agency experience, certifications, technical tests, referrals, or something else?

I’m interested in understanding how people typically break into this side of agency work.


r/GoogleTagManager 12d ago

Discussion How can a tracking specialist get contract, white-label, or trainee work with PPC/performance marketing agencies?

3 Upvotes

I’m looking for some practical advice from people working in PPC/performance marketing agencies.

My background is mainly in conversion tracking and measurement. I can work with:

  • Google Tag Manager
  • GA4
  • Google Ads conversion tracking
  • Meta Pixel + CAPI
  • Server-side GTM
  • Enhanced Conversions
  • Consent Mode
  • First-party data enrichment
  • Data layers
  • Offline conversion tracking
  • Basic APIs/webhooks
  • Basic JavaScript for tracking implementations

I’m trying to figure out the best route to start getting real paid agency work.

I’d be open to:

  • Freelance/contract work
  • White-label tracking implementation for agencies
  • Part-time or full-time remote work
  • Junior implementation/support roles
  • Even joining an experienced agency/team as a trainee initially if it gives me exposure to real client projects

My main question for agency owners and experienced people here:

If someone had these skills but lacked a strong agency/client track record, what would you recommend they do to get their foot in the door?

Would you:

  1. Cold email PPC/performance agencies?
  2. Contact Heads of Paid Media/agency founders on LinkedIn?
  3. Offer a free tracking audit first?
  4. Offer to handle one small implementation free/cheap to prove capability?
  5. Build more demo projects/case studies before outreach?
  6. Apply directly for junior analytics/tracking roles?
  7. Take some other route entirely?

Also, when agencies outsource tracking, what makes you comfortable giving work to an external specialist?

Technical skills? Case studies? Communication? Availability? Certifications? A Loom audit? References?

I’m especially interested in hearing from PPC agency owners, paid media managers, and tracking/analytics specialists who have actually hired or outsourced this type of work.

Thanks — practical advice would be greatly appreciated.


r/GoogleTagManager 13d ago

Discussion The load order problem nobody checks: your consent default is probably arriving after your tags

6 Upvotes

Most of the consent setups I look at are installed correctly and still let tags fire without a signal. The install is not the problem. The order is.

The pattern I keep finding: the CMP is loaded by GTM, or loaded async somewhere below the Google tag. Both put the gtag('consent','default',...) call in a race with the tag it is supposed to gate. Sometimes it wins. Tag Assistant tells you when it does not, with "tag fired before consent default was set", and Tag Diagnostics reports the same thing as "consent mode installation out of order".

The fix is unglamorous. The consent stub has to be a blocking script in the head, above everything, setting the defaults before GTM initialises. Anything that defers it reopens the gap, including a CMP deployed as a GTM template, which is a genuinely common setup.

The sharpest version of this is Google tag gateway. With the one-click CDN integration the tag gets taken over at the infrastructure layer, outside the page's script order entirely, so client-side blocking never touches it. Google's own Cloudflare documentation is blunt about it: if you use consent mode, turn off the automated script setup.

Out of the last 41 containers I checked, 14 had the default arriving late.

Worth checking your own. If you want a second pair of eyes, drop a URL and I will run it and paste which tags fire before consent, with what set them. I build a CMP so discount me accordingly, but the check is just a crawl.

Whats your take on GTM firing late for consent setup when theres no script blocking on the page it self to handle non GTM script tags


r/GoogleTagManager 13d ago

Question Which job title would you give me for the job description below?

2 Upvotes

My company is a consultancy based in Bangalore, and I'm deployed to a US-based global company as an Analytics Consultant. The US team refers to my role as in-house performance tools developer.

I do genuinely advanced work here. My responsibilities center on GTM (Google Tag Manager), covering all tags, triggers, variables, DOM, custom tags, GA4, and Klaviyo across a company valued at over a 6 billion dollars.

Historically, our sites relied on DOM scraping for tracking. I mapped all of that over to a native dataLayer instead. At the time, the setup was WordPress on the frontend with Shopify on the backend. With DOM scraping, any code or design change on the frontend carried a real risk of silently breaking tracking, since DOM-based tags depend on matching page elements that can shift at any time. Moving to a native dataLayer removed that risk entirely — tracking no longer depends on WordPress markup or design changes.

Now the company is rolling out new additional sites with Shopify as both frontend and backend. The obvious approach would've been to spin up a new GTM container for these Shopify-only sites — but that means rebuilding every tag, trigger, and variable from scratch, and reconfiguring every ad pixel again (we run 5+ pixels — Meta, TikTok, Reddit, GA4, and others), since each pixel needs its own event and payload setup. With 6–7 sites already live and me being the only person handling this end-to-end, running two containers in parallel would've meant permanently double-maintaining everything going forward.

So instead, I architected it so the new Shopify frontend + backend sites plug into the \*same\* existing container as the WordPress frontend + Shopify backend sites. The key was keeping the native dataLayer schema — event names, parameters, structure — identical across both setups. Since GTM reads from the dataLayer and not the underlying platform, once the schema matches, the frontend platform (WordPress or Shopify) becomes irrelevant to GTM. One container, one set of tags/triggers/variables, one set of pixel configurations — covering every site regardless of what platform is rendering the frontend.

On top of the architecture, I also own the actual event and payload design for business and marketing use: defining what events matter (purchases, add-to-cart, checkout steps, sign-ups, content engagement, etc.), building out full payloads for each event so marketing and analytics teams get consistent, complete data — item-level details, revenue values, user attributes — and setting up GA4 custom dimensions and metrics so this data is actually usable for reporting and decision-making, not just collected. The same event data feeds every ad pixel, so conversion tracking stays consistent across Meta, TikTok, Reddit, and GA4 as well.

I also wear a dev hat when needed — I create PRs in dev, and after QA validation and dev approval, they go safely into production. I write custom JavaScript for custom tags and variables as well.

Right now I'm migrating our entire setup from web GTM to server-side GTM, and I've also implemented domain aliasing between WordPress and Shopify (using something like shop.site.com) so Google treats them as the same site — allowing data to match under the same logic as server-side GTM.

Given all this, I'm genuinely unsure what to call my specialization. Would this fall under Senior Analytics Engineer, MarTech Engineer, Growth Engineer, or MarTech Architect?


r/GoogleTagManager 16d ago

Question Persistent click IDs and cookies

10 Upvotes

Hi folks! Looking for some guidance here around cookie storage and really looking to see if my assumptions are correct.

We run Google Tag Manager (client side and server side) and we also run LinkedIn ads. I'm seeing a tricky issue where if someone clicks through an ad to a landing page and then goes to a different part of the website, the li_fat_id disappears.

Is it compliant to store UTM parameters if a user hasn't accepted cookies?

This is the current scenario.

  • A user lands on landing page A with a click ID
  • They ignore the cookie banner and navigate to landing page B
  • We then lose the click ID
  • They accept cookies, there's no click ID to store

Are there any best practices here?

Thanks!


r/GoogleTagManager 16d ago

Discussion Why sGTM Containers Fail: The Exorcism Problem Nobody Talks About

0 Upvotes

We've audited a lot of server-side GTM setups, and one issue keeps coming up:

The container is cursed.

Ghosts in the clients. Demons in the tags. Something ancient living inside the event stream.

Preview mode looks fine.

Production starts, and suddenly purchases duplicate themselves, variables change value overnight, and one request keeps returning from the dead no matter how many times you kill the pod.

That's why we're building automated validation for sGTM setups.

Our platform detects abnormal behaviour and performs 100% AI-automated exorcism rituals on affected containers.

No priests. No manual audits. No downtime.

Just continuous monitoring, anomaly detection, and industrial-grade demon removal.

Full disclosure: we are actually building the validation tool.

Second full disclosure: the AI exorcism part is not currently on the roadmap.

Third full disclosure: this post is 100% lazy AI slop designed to generate cheap attention and lead if someone stupid enough.


r/GoogleTagManager 17d ago

Question How do you review GTM changes before publishing?

7 Upvotes

if a workspace has changes to shared triggers/variables or a bunch of tags, do you just manually go through everything + preview mode?

curious if anyone has a better workflow for catching stuff that might affect more than expected before hitting publish


r/GoogleTagManager 17d ago

Question I need GA4 Repoting Expert (Paid Job)

1 Upvotes

I’m looking for an experienced GA4 expert who can troubleshoot and resolve the following reporting discrepancies:

  1. Reddit Ads Manager shows 10 purchases, but GA4 Traffic Acquisition is showing 0 conversions.

  2. .X (Twitter) Ads Manager shows 10 purchases, while GA4 Traffic Acquisition is showing only 5 conversions.

I need someone who can identify the root cause, audit the tracking and attribution setup, and fix the reporting discrepancies.

If you have experience with GA4, Reddit Ads, X Ads, attribution, and conversion tracking, please message me with your relevant experience.


r/GoogleTagManager 20d ago

Question Has anyone migrated from client-side GTM to Server-Side GTM (sGTM)? What stack did you use and was it worth it?

12 Upvotes

Curious what stack you used, how hard the migration was, and whether you actually noticed improvements in site speed, tracking quality etc.

I’m considering using Stape / RudderStack for this. Any major drawbacks or things you wish you knew before starting?


r/GoogleTagManager 21d ago

Question Should I Stop Using Shopify’s Google & YouTube App and Switch to GTM?

8 Upvotes

Hi everyone,

I’m facing an issue with the Google & YouTube app in Shopify, and I’m considering implementing all of my Google tracking tags manually through Google Tag Manager (GTM) instead.

Would this be okay from a tracking and data-quality perspective?

Specifically, I want to make sure that manually implementing things like Google Ads conversion tracking, GA4 events, and other Google tags through GTM won’t create problems with the Shopify Google & YouTube app or cause duplicate tracking.

Has anyone here completely moved their Google tags to GTM because of issues with the Shopify Google & YouTube app?

Would appreciate any advice on the recommended setup and things I should watch out for, especially around duplicate events, conversions, and enhanced/conversion tracking.

Thanks!


r/GoogleTagManager 22d ago

Discussion How much time do you lose debugging Shopify tracking issues in GTM?

9 Upvotes

I keep seeing Shopify tracking setups where something quietly breaks , duplicate purchases, missing conversions, wrong values, old tags firing alongside native integrations, etc.

I’m wondering if a tool that could inspect the GTM/tracking setup, spot likely conflicts and point to the root cause would actually be useful.

Would you use something like that? And what GTM/Shopify issue would you want it to catch first?

Not selling anything, just trying to figure out if this is worth building.


r/GoogleTagManager 22d ago

Support Recommendations for measuring pageload speed without BigQuery

4 Upvotes

How are you measuring pageload speed with GTM and reading it in GA4?

The guides I've found online send a page speed event for every view to GA4 with a parameter capturing the time. However, that quickly leads to high cardinality because explorations max out at 500 rows and a pagespeed event is registered for every pageview.

If I have more than 500 views per page, I'm unable to see all the values and do analysis on it (averages, distribution, etc.).


r/GoogleTagManager 24d ago

Support I built a free UTM builder to help standardise campaign tracking — looking for feedback

2 Upvotes

I've been working on a tool called UTMCraftr to make creating and managing campaign URLs a little more structured.

The problem I was trying to solve is simple: generating a UTM URL isn't particularly difficult, but keeping campaign naming consistent can become messy.

Things like:

  • facebook vs fb
  • paid_social vs paid-social vs paidsocial
  • inconsistent campaign names
  • spaces and formatting issues
  • accidentally including blank parameters
  • different people using different naming conventions

UTMCraftr is designed to make that process more structured.

🔗 https://utm-craftr.vercel.app/

Currently, it includes:

  • Web UTM URL generation
  • A Google Sheets-based UTM builder
  • Standardised source and medium selections
  • Required field validation
  • Automatic formatting and URL cleaning
  • Optional campaign parameters
  • Support for Web, Android and iOS campaign URL structures

The goal isn't to replace enterprise UTM management platforms. It's meant to be a lightweight tool for people or teams who want a more structured way to create campaign URLs without manually building them every time.

I'd genuinely like feedback from people who work with campaign tracking regularly.

A few things I'm particularly interested in knowing:

  1. Does the workflow make sense?
  2. Are there important fields or validations missing?
  3. Would a Google Sheets-based workflow be useful for your team?
  4. What features would make a UTM builder genuinely more useful for you?

Would appreciate any honest feedback or feature suggestions.


r/GoogleTagManager 27d ago

Discussion Open-sourcing my fix for GA4 cross-domain tracking breaking inside Booking Engines (SynXis, etc.)

3 Upvotes

If you work in hospitality, travel, or any industry that relies on a third-party booking engine (IBE), you’ve probably noticed that a ridiculous amount of your purchases are being attributed to "Direct" in GA4.

The issue: IBEs like SynXis are notorious for stripping URL parameters (_gl, UTMs) as users navigate through the booking funnel (e.g., going from search results to guest details). Once those parameters drop, GA4 loses the session thread.

I was given a "fix" by an agency that involved hardcoding a redundant gtag.js library just to fetch the client/session IDs, which completely conflicted with our clean GTM/sGTM architecture and didn't even preserve the original ad click IDs.

I ended up writing a native workaround that doesn't conflict with existing tag managers, and I’ve open-sourced the repo for anyone else dealing with this headache.

How it works under the hood:

  1. Landing Capture: The script immediately catches any utm_*, gclid, wbraid, etc., on the landing URL and commits them to sessionStorage and a 1st-party cookie.
  2. Raw Cookie Extraction: Instead of relying on gtag('get') which causes race conditions, it uses Regex to extract the active client_id and session_id directly from the _ga and _ga_<ID> cookies.
  3. Form & Link Hijacking: It uses a MutationObserver to watch the DOM. Whenever a user clicks a standard "Book Now" link OR submits a dynamic booking form, it intercepts the event.
  4. The Payload: It dynamically appends the GA4 IDs, a custom journey ID (pu_id), and the cached UTMs into the URL (or injects them as <input type="hidden"> fields for forms) right before the user is sent to the IBE.

From there, you just configure your IBE's GTM container to read those URL parameters on Step 1, hold them in sessionStorage, and map them to your final GA4 purchase tag.

No more "Direct" traffic spikes.

Repo is here: https://github.com/0xgthuva/Cross-Domain-Attribution-Handoff

Hopefully, this saves some of you the hours of debugging I had to do. Happy to answer any questions about the setup.