<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Guides — Tag Master</title>
    <link>https://tagmaster.dev/blog/</link>
    <atom:link href="https://tagmaster.dev/feed.xml" rel="self" type="application/rss+xml" />
    <description>Practical guides on debugging server-side GTM, Consent Mode V2, GTM containers and non-Google tracking pixels.</description>
    <language>en</language>
    <lastBuildDate>Thu, 20 Aug 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>The email that left in plain text</title>
      <link>https://tagmaster.dev/blog/enhanced-conversions-not-hashed</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/enhanced-conversions-not-hashed</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description>How to verify Google Ads Enhanced Conversions on the wire: the two shapes a hashed field takes, the four ways it goes wrong, and why the UI cannot tell you.</description>
    </item>
    <item>
      <title>Your shop does not say add_to_cart</title>
      <link>https://tagmaster.dev/blog/datalayer-event-name-dialects</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/datalayer-event-name-dialects</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description>Shopify, VTEX, Adobe Commerce and WooCommerce each spell the same funnel differently. The mapping to GA4 names, and why your validator reports nothing.</description>
    </item>
    <item>
      <title>The shop whose dataLayer is empty</title>
      <link>https://tagmaster.dev/blog/shopify-datalayer-empty</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/shopify-datalayer-empty</guid>
      <pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate>
      <description>Why a Shopify, Tealium or Adobe shop shows an empty dataLayer even though tracking works. Which layer each platform really uses, and where to read the events.</description>
    </item>
    <item>
      <title>Finding every tracking tag on a page</title>
      <link>https://tagmaster.dev/blog/find-every-tracking-tag</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/find-every-tracking-tag</guid>
      <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
      <description>Why a tag scanner that reads the HTML misses tags loaded after the page does, and how to get the real list by reading the requests instead.</description>
    </item>
    <item>
      <title>GA4 counting everything twice</title>
      <link>https://tagmaster.dev/blog/ga4-duplicate-events</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/ga4-duplicate-events</guid>
      <pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate>
      <description>How to tell whether GA4 is really double counting: read the measurement ID on each hit, not just how many hits there are. The four setups that cause it.</description>
    </item>
    <item>
      <title>One click, three pushes: picking the right dataLayer event</title>
      <link>https://tagmaster.dev/blog/pick-a-datalayer-event</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/pick-a-datalayer-event</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description>Adding to cart rarely fires one event. What a real storefront pushes, which of them a trigger should use, and the four kinds of push that are never the answer.</description>
    </item>
    <item>
      <title>Turning captured dataLayer pushes into a GTM container you can import</title>
      <link>https://tagmaster.dev/blog/gtm-container-export-from-datalayer</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/gtm-container-export-from-datalayer</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description>What a container export file has to contain, the two fields that make GTM refuse the whole import, and why placeholders beat blanks.</description>
    </item>
    <item>
      <title>How a visual element picker works on a page that fights back</title>
      <link>https://tagmaster.dev/blog/visual-element-picker</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/visual-element-picker</guid>
      <pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate>
      <description>Pointing at an element sounds simple until the page navigates under you. What a picker has to intercept, what it snaps to, and the selector call that throws.</description>
    </item>
    <item>
      <title>Tracking inside an embedded widget</title>
      <link>https://tagmaster.dev/blog/iframe-widget-tracking</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/iframe-widget-tracking</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>A booking widget or payment step in an iframe has its own dataLayer. Why Preview shows one event where the log shows two, and what crosses the boundary.</description>
    </item>
    <item>
      <title>When GA4 says the traffic came from somewhere else</title>
      <link>https://tagmaster.dev/blog/utm-campaign-attribution-debugging</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/utm-campaign-attribution-debugging</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>Campaign parameters go missing between the click and the hit more often than anyone checks. Six places they disappear, and how to read the hit itself.</description>
    </item>
    <item>
      <title>Google Tag Gateway: checking that it actually works</title>
      <link>https://tagmaster.dev/blog/google-tag-gateway-debugging</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/google-tag-gateway-debugging</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>Tag Gateway serves Google's scripts from your own domain. What changes on the wire, how it differs from server-side GTM, and the four ways it quietly half-works.</description>
    </item>
    <item>
      <title>A GTM click trigger the next deploy will not break</title>
      <link>https://tagmaster.dev/blog/gtm-click-trigger-css-selector</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/gtm-click-trigger-css-selector</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>Why a copied CSS selector stops matching, which attributes are worth anchoring to, and the Tailwind class that silently makes a selector invalid.</description>
    </item>
    <item>
      <title>Testing tracking without polluting production analytics</title>
      <link>https://tagmaster.dev/blog/block-tracking-hits-while-testing</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/block-tracking-hits-while-testing</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>Test purchases end up in real reports. How to stop the hits at the browser, in one tab only, and still see everything that would have been sent.</description>
    </item>
    <item>
      <title>Test Events for TikTok, Snap, UET and five more</title>
      <link>https://tagmaster.dev/blog/pixel-test-events-debug-modes</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/pixel-test-events-debug-modes</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>Everyone knows about DebugView and Tag Assistant. Every other platform has the same thing, switched on by a cookie almost nobody documents — here is the full list.</description>
    </item>
    <item>
      <title>How to debug GTM without Preview mode</title>
      <link>https://tagmaster.dev/blog/gtm-debugging-without-preview-mode</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/gtm-debugging-without-preview-mode</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>Preview needs container access, changes the page, and only speaks for one container. Here is how to verify GTM from the requests it actually produces.</description>
    </item>
    <item>
      <title>Meta Pixel and CAPI: why purchases are counted twice</title>
      <link>https://tagmaster.dev/blog/meta-pixel-capi-deduplication</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/meta-pixel-capi-deduplication</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>How deduplication actually works, what eid looks like in the browser request, and the five mistakes that turn a single order into two conversions.</description>
    </item>
    <item>
      <title>Debugging GA4 when DebugView shows nothing</title>
      <link>https://tagmaster.dev/blog/ga4-debugview-alternative</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/ga4-debugview-alternative</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>Why the debug stream stays empty, what a /g/collect request actually contains, and how to check GA4 on production without switching debug mode on.</description>
    </item>
    <item>
      <title>How to inject a GTM container into any website</title>
      <link>https://tagmaster.dev/blog/gtm-container-injector</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/gtm-container-injector</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Test a container before it ships — on a client site, a staging build, or a page you do not control — without touching the codebase.</description>
    </item>
    <item>
      <title>Tag Assistant alternative in 2026</title>
      <link>https://tagmaster.dev/blog/tag-assistant-alternative</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/tag-assistant-alternative</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>What Google Tag Assistant is good at, where it stops, and what to use for the tags it will never show you.</description>
    </item>
    <item>
      <title>Debugging Consent Mode V2: gcs, gcd and the violations nobody catches</title>
      <link>https://tagmaster.dev/blog/consent-mode-v2-debugging</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/consent-mode-v2-debugging</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Read consent parameters straight from the hits, tell a default apart from an update, and find the vendors that fire regardless of what the banner says.</description>
    </item>
    <item>
      <title>How to debug server-side GTM</title>
      <link>https://tagmaster.dev/blog/server-side-gtm-debugging</link>
      <guid isPermaLink="true">https://tagmaster.dev/blog/server-side-gtm-debugging</guid>
      <pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate>
      <description>Why proxied hits vanish from most debuggers, the four signals that reveal an sGTM setup, and how to connect a server preview session.</description>
    </item>
  </channel>
</rss>
