Skip to content

Design studioClient work

27 Changes, Each With Its Own Undo: Fixing Lead Tracking on a Site I Never Logged Into

Rebuilding lead tracking on a Webflow site I never logged into: 27 changes, each with its own undo, and 15 of 15 negative tests passing.

The brief

Problem

A B2B design studio on Webflow gets its leads from an enquiry form and a booking page, and could not measure either. The old Tag Manager container listened for form events from a site build that no longer existed, so the conversion had quietly stopped firing. Google Ads was bidding on form_submit, which fires on the attempt — including rejected submissions — not on a delivered enquiry. Bookings went unmeasured: 321 sessions reached the booking page in 90 days, five reached confirmation. A second Google Ads account with no code of its own fired on every page including 404s.

Client details anonymised. Figures read from live platform APIs in August 2026.

Handover

Fix

Delivery noteDelivered Aug 2026

I never had CMS access. The only site-side change — the GTM container snippet — went out as paste-ready instructions the client pasted and published himself. The container build, Analytics and Ads changes I did directly through their APIs.

I rebuilt lead tracking with a layered, deduplicated listener: the primary signal is the endpoint answering success, with a DOM fallback, a once-per-page guard, survival across in-page navigation, and no personal data in the data layer. I made generate_lead a GA4 key event and restructured Ads — generate_lead primary, form_submit secondary — switching only after a live enquiry proved the new event end to end. Ads tags are now held off 404 pages by the page’s own structural identifier. Booking measurement came from zero with a postMessage bridge: the booking widget runs in a sandboxed cross-origin iframe that browsers forbid from navigating the top window, so the documented redirect could never fire. The stray second Ads account rode the Google tag as a destination, so no code removal could stop it; I traced it and had it detached.

Before → after

Result

Client work Done for real clients. Client details are anonymised.

All five written acceptance conditions met on the live site. Fifteen of fifteen negative tests passed: the hidden second form does not fire, a failed submission does not fire, a page loaded after success does not re-fire. Every change carries its own one-step undo. Enquiries count on confirmed success, bookings on real confirmation, no Ads tag fires on a 404, and the stray account is gone.

  • Signal Google Ads bids on for leads

    Aug 2026

    Before
    form_submit — fires on the attempt, including failed submissions
    After
    generate_lead — fires on a confirmed enquiry
  • Google Ads tags firing on 404 pages

    Aug 2026

    Before
    fired on every 404
    After
    zero
  • Booking measurement

    Aug 2026

    Before
    none recorded
    After
    book_a_call, on real confirmation
  • Written acceptance conditions met

    Aug 2026

    5 of 5

    After
    5 of 5
Daniil Maximkin

Hi, I’m Daniil.

I work with you from defining the problem to implementation and handover. You talk to the person who does the work. I work in English and Russian.

Have a similar task?

Describe your task

The first answer is free, within one working day. Or write directly: next@taskfordaniel.com