folder_open Analytics & Attribution

Event tracking that survives a website redesign

Martin Marinov Martin Marinov
15 min read
Topics gtm-redesigndata-layer-eventsconversion-deduplicationconsent-modeevent-id

The night a Sydney marketing lead ships a new site, the brief is visual: faster templates, a cleaner nav, a form that no longer looks like 2019. The job that actually decides whether next week’s Google Ads ROAS holds is quieter. Google Tag Manager still has to fire the same booked-work events after every class name, header, and CMS swap. If those events drift, Smart Bidding keeps spending against a conversion that no longer exists.

Australian teams feel this in AUD, not in theory. Search CPC pressure is already up, Google Ads still prints an industry-wide 4.2x average ROAS while Meta sits nearer 2.8x (WordStream 2023 AU paid search benchmarks, retail-weighted; ROAS varies widely by vertical), and 20% or more of conversion signal already leaks to blockers and consent. A redesign that breaks GTM does not just scramble a dashboard. It starves Performance Max of the first-party events that keep CPL honest while GST-inclusive media budgets keep running.

This playbook is for the person who owns the marketing number: CMO, head of growth, founder running demand. You already know what GTM is. The work is making one data layer, durable triggers, and a single generate_lead (or equivalent) survive the next Webflow, Shopify, or custom rebuild without counting the same enquiry three times.

When paid conversions vanish after go-live while spend keeps clearing in AUD

The failure is almost never “we forgot to install the container.” The container is still in the head. What dies is the contract between the page and the tags. Designers rename btn-primary to cta-solid. The thank-you URL moves from /thanks to /enquiry-received. The consent banner ships a new CMP that delays gtag until after the first click. Monday’s Google Ads export still shows spend. Conversions sit at zero, or they explode because every header click now matches an old CSS trigger.

You see it in mixed stacks across Melbourne and Brisbane more than in greenfield sites. GA4 says sessions held. Google Ads says conversions collapsed. Meta’s pixel, if it was bound to the same brittle selectors, disagrees with both. Last-click already double-counts across Search and PMax. Broken GTM makes that worse: one form submit fires a GA4 event, an Ads conversion, and a duplicate on the thank-you page view. Smart Bidding then optimises toward noise. Teams pull back to manual bidding on new accounts because the automated bid “inflated budget without improving quality.” Often the quality signal was just gone.

Mobile is the other quiet killer. In most AU lead-gen accounts we audit, mobile accounts for 60-70% of paid clicks, and conversion rates still lag desktop. Redesigns love sticky call bars and click-to-call chips. If those taps are not named events in the data layer, you either miss the lead or you count a tap that never became a booked job. Call tracking numbers change on the new theme. WhatsApp deep links get rewritten. None of that is a “tracking project” after launch. It is the same GTM system, or it is not.

Privacy and consent in Australia add a third break. A new cookie banner that is not wired to Consent Mode means tags fire before a grant, or they never fire. You lose another slice of the 20%+ conversion data already missing. Enhanced Conversions and first-party matching cannot rescue an event that never left the browser. If you are about to brief a rebuild, lock Google Tag Manager and events as a workstream with design, not as a Friday-night checklist.

A GTM contract Australian teams freeze before the DOM changes

Treat the data layer as the product the redesign must ship, not as a developer leftover. You name a small set of business events once: generate_lead, call_click, whatsapp_click, maybe book_consult. Each event carries the same keys every time: event_id, lead_type, page_location, form_id, value in AUD if you pass value, and a consent state. Triggers listen to those names. They do not listen to button copy or a unique class the new theme will delete.

Push the layer from the application, not from GTM scraping the DOM. On a successful form POST, the CMS or SPA emits dataLayer.push({ event: “generate_lead”, event_id: ”…” }). Thank-you pages can confirm, they should not be the only conversion. Deduplicate in Google Ads with a transaction ID or event_id so the same enquiry is not a form event plus a page view. That is how you stop last-click from counting the lead twice across PMax and Search while CFOs still ask why in-platform CPA does not match the CRM.

Consent Mode v2 belongs in the same freeze. Default denied, update on grant, ads and analytics storage as separate signals. Do not let the new banner vendor inject a second gtag. One Google tag in GTM, Enhanced Conversions on, server-side if you already have the pipeline. You will still lose some events to blockers. You will not lose the rest to a redesign that forgot the CMP.

GTM cutover playbook

  1. Inventory every conversion Google Ads, GA4, and Meta currently count as a lead. Write the business name next to each (qualified form, click-to-call, WhatsApp, booking). Kill any that are scroll depth, outbound PDF, or header clicks.

  2. Publish a one-page data layer spec: event names, required keys, AUD value rules, and a unique event_id. Design and engineering sign it before they freeze templates.

  3. Move every conversion trigger off CSS and copy. Listen only to data layer events or stable IDs that the new theme is required to keep.

  4. Wire Consent Mode once. Confirm the new banner updates consent types and that tags wait. Preview with a denied state and a granted state on a phone, not only desktop Chrome.

  5. Turn on Enhanced Conversions / first-party matching on the generate_lead event. Hash emails the form already collects. Do not add a second pixel “just in case.”

  6. Staging: fire each event, confirm one hit in GA4 DebugView, one conversion in Ads (with event_id), and zero extras on thank-you. Then repeat on iOS Safari with the consent banner.

  7. Go-live window: keep the old container ID if the DNS cut is staged, or publish the new container with a named version. Do not edit live tags during the first business day.

  8. Reconcile 48 hours of Ads conversions to CRM or inbox booked work. If Ads is 2x the CRM, you still have a duplicate. If Ads is near zero and spend is not, the layer never fired.

  9. Only then re-enable automated bidding. Training on a broken event is how you get the “AI inflated budget” complaint.

  10. Watch Core Web Vitals on the new templates. Aim for INP under 200ms on the enquiry template. A heavy GTM dump plus a chat widget can wreck INP and hide mobile conversion problems inside blended reports.

After the click, GTM only proves the event fired. It does not tell you why the new form dies on mobile. Pair the cutover with session evidence. HeyLead Insights is how you see scroll depth, rage clicks on the new CTA, and abandon on the GST-inclusive quote field without guessing from bounce rate. One pass of recordings on the new enquiry template usually finds the friction the data layer cannot name.

If the rebuild is already in Figma and nobody owns the event spec, pause the visual freeze for a day. That day is cheaper than two weeks of PMax learning on a dead conversion. A partner can run the container cleanup while your team stays on offer and creative, which is still the lever once signals are clean.

Not sure where your funnel leaks?
Get a free marketing audit - we review your search, ads, and landing pages and send back what to fix first.
Get a free audit

How to keep GTM event tracking alive through a website redesign

Two Australian cutovers: Gold Coast held the layer, Canberra counted the sticky bar

A Gold Coast operator rebuilt a lead-gen site on a Friday deploy. Engineering had already agreed to push generate_lead from the form handler with an event_id. GTM in staging showed one GA4 event and one Ads conversion per submit. Call taps used a tel: listener bound to a data attribute the theme kept. Monday Ads vs CRM was 11 booked enquiries against 12 Ads conversions. The extra one was a double submit they later blocked in the form. Spend did not blink. Automated bidding stayed on because the signal never went dark.

Canberra went the other way. The agency rebuilt the header with a sticky “Call now” chip. An old GTM trigger still matched any element whose text contained “Call”. Every tap on the chip, including people opening hours, fired generate_lead. Google Ads looked like a 37% conversion-rate miracle for 11 days. The inbox did not. They paused Smart Bidding, rebuilt triggers on the data layer only, and volume looked “worse” for a week while CPL actually returned to something a human would pay for. The mechanism was a CSS leftover, not a media strategy.

Both teams now run the same weekly check - Ads conversions vs CRM bookings - not because it is on a calendar but because the gap is visible: Ads conversions versus CRM or calendar bookings, duplicate event_ids, consent granted rate, and mobile vs desktop conversion gap. If mobile lags 30-40% as it often does, look at the new form and tap targets before you rewrite keywords. Traffic to an unoptimised homepage is still a bad handoff. Dedicated landing pages should emit the same events as the rest of the site, with UTMs intact from the UTM link builder.

If your redesign is also a CRO pass, keep proof and form fields aligned to the ad. Teams that only “send traffic to the homepage” learn this the expensive way. Clean conversion setup plus a page that matches the query still beats adding another ad platform while attribution already feels unreliable.

What marketing leaders are seeing

“We signed off the new theme in staging, then found Google Ads had been converting on the old thank-you URL for six days while PMax kept buying. The data layer was never in the brief.” - Head of Growth, B2B services, Melbourne

“The sticky call bar looked like a 4.2x week until we matched event_ids to the CRM. Half were taps, not jobs.” - Founder, multi-location operator, Brisbane

Prefer to just ask? Message Martin directly on WhatsApp: Chat with us on WhatsApp

How to keep GTM event tracking alive through a website redesign

FAQs

Should we keep the old GTM container ID through an Australian redesign?

Yes if the domain and property stay the same. Keep one container, publish a named version at cutover, and point the new templates at the same ID. A second container is how you get duplicate conversions and two consent implementations. Only split if you are truly splitting brands or properties.

Do thank-you page views still count as conversions?

Use them as a backup confirmation, not the primary lead. Primary should be the data layer event at successful submit, with event_id passed to Google Ads. Page views fire on refresh, back button, and shared links. That is how you inflate ROAS on paper and confuse bidding.

The banner must update consent types before ads storage tags fire. Default denied is the safe start in AU. Test denied and granted on iOS. If the CMP vendor injects its own Google tags, remove them and keep GTM as the only injector.

How soon can we turn Smart Bidding back on?

After you reconcile a few days of Ads conversions to real booked work, not after the first green DebugView hit. Training on duplicates or zeros is worse than a short manual-bid window. Realistic paid programs still take months to judge, not a weekend.

What if engineering will not push a data layer?

Then you are still on CSS and copy triggers, and the next theme update will break you again. Treat the layer as a launch criterion. If that is blocked, at least bind to stable IDs the design system owns, and plan the proper events for the following sprint.

Putting it to work

Execution sprint

This week

  1. Pull 30-90 days of performance for event tracking that survives a website redesign (Search Console, ads, CRM, or call logs - whatever you have).
  2. Flag the top leak: wrong intent, weak page, slow response, or dirty conversion tracking.
  3. Ship one fix on the highest-traffic money path (page, campaign split, or response rule).
  4. Run the free tools below on that same URL or account and log the findings.

Next 30 days

  1. Expand the fix to the next one or two money paths only after the first one shows cleaner bookings.
  2. Align creative, keywords, or content with the same offer the page now states.
  3. Review booked outcomes weekly; cut anything that still only produces unqualified volume.

This week

  • Export 14 days of Google Ads conversions and line them up against CRM or inbox booked work. Note duplicates and zeros.

  • List every GTM trigger that still uses Click Text, Click Classes, or a thank-you URL.

  • Draft the data layer spec (event names, event_id, AUD value, consent) and send it to whoever owns the rebuild.

  • Run the new templates through a Core Web Vitals check and preview GTM on a phone with the banner denied, then granted.

  • Tag one staging form submit and confirm a single hit in GA4 and Ads.

Next 30 days

  • Ship generate_lead, call_click, and WhatsApp from the application, not the DOM.

  • Turn on Enhanced Conversions on the surviving lead event only.

  • Reconcile weekly Ads vs booked work until they stay within a tight band.

  • Re-enable automated bidding only after that band holds.

Pull your last 14 days of conversions against booked work before the next design freeze, and rewrite any trigger that still depends on a class name. HeyLead can own the GTM contract, consent wiring, and event_id deduplication so a website redesign in Australia does not zero out paid conversions while spend keeps clearing. Chat with us on WhatsApp

Work with HeyLead
Free marketing audit, or reach Martin directly:
Get a free audit Connect on WhatsApp · martin@heylead.com