The Happy Tagger blog

GTM Guides & Tutorials

Clear, practical walkthroughs of the things that actually trip people up in Google Tag Manager. Read the guide here, then practice it on your own container in the playground.

FundamentalsHow-toTroubleshootingPrivacy & consent
How to Set Up Google Tag Manager on Shopify (Storefront + Checkout)the storefrontStorefrontGTM installedthe checkout (sandboxed)Checkoutsandbox — no DOMcustom pixelCustomer Events → GA4product_viewedview_itemcheckout_startedbegin_checkoutcheckout_completedpurchase$129
How-to10 min read

How to Set Up Google Tag Manager on Shopify (Storefront + Checkout)

Shopify GTM is two jobs, not one: the storefront installs normally, but the sandboxed checkout needs a custom pixel. The full storefront + checkout setup, GA4 mapping and testing.

Read →
What Is the dataLayer in Google Tag Manager? A Plain-English Guidepush()your sitedataLayer [ ]{ user_type: 'member' }event: 'page_view'event: 'add_to_cart'event: 'purchase'GTMlistensfires tagstags
Fundamentals7 min read

What Is the dataLayer in Google Tag Manager? A Plain-English Guide

The dataLayer is the bridge between your website and your tags. Here's what it actually is, why it exists, and how to push and read values without the jargon.

Read →
How to Track Form Submissions in Google Tag Manager (Without Losing Conversions)Contact usSubmitevent:generate_leaddataLayer.push()the gotchapage unloads beforethe hit is sentbeaconnavigation
How-to8 min read

How to Track Form Submissions in Google Tag Manager (Without Losing Conversions)

Form submissions are leads, and the easiest tracking to get wrong. Three reliable methods, plus the redirect gotcha that silently loses conversions and how to beat it.

Read →
How to Set Up GA4 Ecommerce Tracking with Google Tag ManagerGA4 ecommerce eventsview_itemadd_to_cartbegin_checkoutpurchasevalue$129.00
How-to9 min read

How to Set Up GA4 Ecommerce Tracking with Google Tag Manager

GA4 ecommerce is one pattern repeated across a few events. Walk the full funnel in GTM (from the base tag to a deduplicated purchase with revenue) with copy-paste dataLayer examples.

Read →
Why Isn't My GTM Tag Firing? A 6-Step Debugging ChecklistTag Assistant — debug checklistContainer published?Trigger conditions met?Variable has a value?Blocked by an exception?Consent granted?Tag did not fire0 of 1 triggers matched
Troubleshooting8 min read

Why Isn't My GTM Tag Firing? A 6-Step Debugging Checklist

Tags that won't fire almost always come down to six causes. Here's the exact order to check them in Tag Assistant, from 'did you publish?' to 'did the hit actually leave the browser?'.

Read →
Google Consent Mode v2 Explained (and How to Set It Up in GTM)consentthe four signalsanalytics_storagegrantedad_storagedeniedad_user_datadeniedad_personalizationgranted
Privacy & consent8 min read

Google Consent Mode v2 Explained (and How to Set It Up in GTM)

Consent Mode v2 isn't just 'block the tag', it changes how Google's tags behave under consent. The four signals, defaults vs updates, basic vs advanced, and the GTM setup.

Read →
GTM vs GA4: What's the Difference (and Do You Need Both)?GTMthe delivery systemmanages tagsdecides when (triggers)reads page datasends data outsendsGA4the analytics toolreceives + storesbuilds reportsdefines conversionsbuild audiencesreportsvs
Fundamentals6 min read

GTM vs GA4: What's the Difference (and Do You Need Both)?

Both come from Google, both involve a snippet, but GTM and GA4 aren't alternatives. One delivers data, the other analyzes it. The difference, and why you use both together.

Read →
What Is Google Tag Manager? A Plain-English Guide for Marketerstriggers inpage viewclickform submitGTMone containertags outGA4Google AdsMeta Pixel
Fundamentals6 min read

What Is Google Tag Manager? A Plain-English Guide for Marketers

Everyone's told to 'just set up GTM' with no explanation of what it does. In plain terms: it's a control panel for your site's tracking, so you change tags without editing code.

Read →
How to Set Up Google Ads Conversion Tracking with GTMad click → conversionAdgclid storedconversionvalue$129.00
How-to7 min read

How to Set Up Google Ads Conversion Tracking with GTM

Google Ads only optimizes toward conversions it can see. The reliable GTM setup (Conversion Linker plus the conversion tag, with value and dedup), and the mistakes that quietly cost you.

Read →
GTM Preview Not Working? 6 Fixes That Actually ConnectTag Assistant — debug checklistContainer published?Trigger conditions met?Variable has a value?Blocked by an exception?Consent granted?Tag did not fire0 of 1 triggers matched
Troubleshooting6 min read

GTM Preview Not Working? 6 Fixes That Actually Connect

Preview won't connect or Tag Assistant keeps spinning? It's almost always an environment issue, not a broken container. The fixes in the order worth trying them.

Read →
Shopify Checkout Tracking Not Working? Missing & Doubled Purchases, FixedTag Assistant — debug checklistContainer published?Trigger conditions met?Variable has a value?Blocked by an exception?Consent granted?Tag did not fire0 of 1 triggers matched
Troubleshooting7 min read

Shopify Checkout Tracking Not Working? Missing & Doubled Purchases, Fixed

Missing purchases, doubled purchases, wrong revenue, Shopify checkout tracking fails in predictable ways, almost all of them environmental. Here's how to find which one you hit.

Read →
Offline Conversion Tracking Explained (Click → CRM → Sale)close the loopgclid carried throughAd clickgclidLeadstore idCRMdeal closesImport→ Ads
How-to8 min read

Offline Conversion Tracking Explained (Click → CRM → Sale)

For anything with a sales cycle, the real conversion happens later, on a call or in the CRM. Offline conversion tracking ties the closed deal back to the click that started it, using an identifier that survives the cookieless future.

Read →
Enhanced Conversions Explained (and How to Set Them Up in GTM)hashed first-party matchuser providedname@email.comconsent ✓SHA-256hashed in browsera91f3c… 7b2matched
How-to6 min read

Enhanced Conversions Explained (and How to Set Them Up in GTM)

Cookies and consent make real conversions invisible. Enhanced Conversions recover some by matching on hashed first-party data. What they are, Web vs Leads, and the GTM setup.

Read →
Meta Pixel + Conversions API in GTM (Deduplicated the Right Way)two paths, one conversionBrowserMeta Pixelevent_id: 10492ServerConversions APIevent_id: 10492Metadeduplicatedcountedonce
How-to7 min read

Meta Pixel + Conversions API in GTM (Deduplicated the Right Way)

The Meta Pixel alone loses conversions to blockers and privacy. Pair it with the Conversions API and dedupe with a shared event_id, the browser + server setup in GTM.

Read →
Server-Side GTM Explained: Is It Worth It?one stream, your container forwards itBrowserone requestyour serverreshape + enrichreshape + enrichreshape + enrichGA4Google AdsMeta
How-to7 min read

Server-Side GTM Explained: Is It Worth It?

Server-side GTM moves tag execution off the browser to a container you run. Better data quality and control, but real cost. An honest guide to whether it's worth it.

Read →
Tracking Phone Calls as Conversions: CallRail + HubSpot + GTMa call becomes a conversionInbound callCallRail(800) swapHubSpotqualify ✓Google Adsconversion
How-to7 min read

Tracking Phone Calls as Conversions: CallRail + HubSpot + GTM

If phone calls are a real channel, your best conversions never touch a form. Connect CallRail, HubSpot and GTM to attribute, qualify and feed qualified calls back to Google Ads.

Read →
How Web Tracking Actually Works: Pixels, Cookies & Hitspage → hit → identityexample.compurchasethe hit/g/collect?en=purchase200 OK_ga = client_id
Fundamentals7 min read

How Web Tracking Actually Works: Pixels, Cookies & Hits

Most tracking bugs get easier once you know what's happening under the hood: how a page load becomes a hit, how cookies create identity, and why two tools never agree.

Read →
A Measurement Plan Before You Tag: The TemplateMeasurement planGoalEventParametersgrow revenuepurchasevalue, itemscapture leadsgenerate_leadform_id, valuesite searchsearchsearch_term
Fundamentals7 min read

A Measurement Plan Before You Tag: The Template

Teams with clean analytics started with a plan, not GTM. A short doc, goals → events → dataLayer schema → developer spec, that keeps your container from filling with events nobody trusts.

Read →
Event Naming Conventions That Don't Fall ApartDo — snake_caseview_itemadd_to_cartbegin_checkoutpurchaseAvoid — driftviewItemAdd-to-CartBeginCheckoutPurchase_Done
Fundamentals6 min read

Event Naming Conventions That Don't Fall Apart

Event names feel trivial until you have 300 of them, half signup and half sign_up, splitting one action across three report lines. A simple naming convention that scales.

Read →
Why GA4 and Google Ads Conversions Don't Match (and When to Worry)Google Ads142click-basedGA4119session-baseddifferent windows + models = expected
Troubleshooting6 min read

Why GA4 and Google Ads Conversions Don't Match (and When to Worry)

142 conversions in Ads, 119 in GA4, same week, before assuming it's broken, know the two tools are supposed to differ. Why they drift, and how to spot a real bug.

Read →
Duplicate GA4 Purchases: Causes & Fixessame id → one salepurchasetransaction_id: T-1042purchasetransaction_id: T-10421sale
Troubleshooting6 min read

Duplicate GA4 Purchases: Causes & Fixes

GA4 revenue too high and counts that don't match your orders? Duplicate purchase events quietly corrupt the metric you care about most. The five causes and how to stop them.

Read →
How to Audit a GTM/GA4 Setup (Free Checklist)Container auditTags inventoriedConversions fire once!Consent gating correct!No PII in hitsNaming consistentinventorytags34triggers21variables47paused / orphaned6
Troubleshooting7 min read

How to Audit a GTM/GA4 Setup (Free Checklist)

Inherited a messy container or unsure your data is trustworthy? A structured audit turns 'I think it's fine' into a documented fix list. A free checklist you can run in an afternoon.

Read →
Consent Mode v2: Basic vs Advanced (and Regional Defaults)consentthe four signalsanalytics_storagegrantedad_storagedeniedad_user_datadeniedad_personalizationgranted
Privacy & consent7 min read

Consent Mode v2: Basic vs Advanced (and Regional Defaults)

Basic and advanced Consent Mode behave very differently under a reject, and the choice affects how much data you recover. The comparison, plus the regional defaults most setups get wrong.

Read →
Is Google Tag Manager Safe? The Custom HTML Security Questionpower = risk<Custom HTML><script>runs on your domain…</script>!govern accessPublish rights2+ 2FA
Privacy & consent6 min read

Is Google Tag Manager Safe? The Custom HTML Security Question

Can someone do damage through GTM? Honestly, yes, if you're careless. GTM can inject JavaScript on your site. The real risks, and how to run it safely.

Read →
Cross-Domain Tracking in GA4 with GTMkeep it one sessionsite.comcheckout →checkout.comsame session ✓?_gl=1a2b3c
How-to6 min read

Cross-Domain Tracking in GA4 with GTM

If your funnel spans two domains, GA4 often counts one visitor as two and credits the conversion to the wrong source. How cross-domain tracking stitches it back together in GTM.

Read →
How to Track Core Web Vitals (LCP, CLS, INP) with GTMfield data from real usersLCP2.1sCLS0.06INP240ms
How-to6 min read

How to Track Core Web Vitals (LCP, CLS, INP) with GTM

Your PageSpeed score is one lab run; your users are on real devices. Send Core Web Vitals to GA4 via GTM for field data segmented by page, device and browser, so you fix what really hurts.

Read →
Track Scroll Depth, Outbound Clicks & Downloads with GTMscroll deptharticle25%50%75%100%outbound clickpartner-site.comfile downloadguide.pdf ↓
How-to6 min read

Track Scroll Depth, Outbound Clicks & Downloads with GTM

Pageviews say someone arrived; engagement events say whether they did anything. Track scroll depth, outbound clicks and downloads with GTM's built-in triggers, cleanly.

Read →
Track YouTube, Calendly, Typeform & HubSpot Embeds with GTMiframe — GTM can't read insideYouTube · Calendly · TypeformpostMessagelisten → pushdataLayer.push(event: 'booking' )
How-to7 min read

Track YouTube, Calendly, Typeform & HubSpot Embeds with GTM

Embeds are valuable interactions and hard to track, they run in someone else's iframe. The universal listen-read-push pattern for YouTube, Calendly, Typeform and HubSpot in GTM.

Read →

Reading is step one. Doing is step two.

Every guide links into a hands-on lesson where you load your own GTM container, run a realistic scenario, and debug it in Tag Assistant — nothing to install, nothing that touches a production site.

Browse the learning path →