Work · Tracking & attribution

Relaunching Google Ads and LinkedIn after a new CMS and months of inactivity

Paid campaigns had been paused for a few months. The relaunch came with new campaigns, new lead magnets and a new web CMS platform, so the tracking built for the old setup no longer matched what was live.

Rather than patch it, we refreshed the whole measurement layer before the first dollar went out. Here is every piece, in the order it was built.

One confirmed lead event flows through GTM to the ad platforms that bid on iteventGTMadsone lead, counted once

01 · The problem

Most teams can’t trace a lead to revenue

And every ad platform optimizes on whatever you tell it a conversion is

Only 9% of B2B SaaS sites use Google’s own recommended lead event, and only 18% of B2B marketers track all the way to closed revenue (TagManifest, 2026; Anteriad and Ascend2, 2026). A relaunch is the moment to get this right, before bidding starts learning from the wrong signal.

In the animation: two unit charts. 9 of 100 squares fill in for B2B SaaS sites that use Google’s recommended generate_lead event, and 18 of 100 fill in for B2B marketers who track leads all the way to closed revenue.

02 · The build

One confirmed event drives every tag

Fire on the lead, not on the click

Each site pushes a single event once a lead is real: lead_confirmed on the landing pages, contact_submit on the main site after the server accepts the form. Two GTM containers listen for those events and fan them out to GA4, Google Ads and LinkedIn.

In the animation: the landing page pushes lead_confirmed and the main site pushes contact_submit into Google Tag Manager, which fans each event out to GA4, Google Ads and LinkedIn, with LinkedIn firing only after consent.

03 · Consent

Consent loads before any tag fires

One cookie, shared by both sites

Consent defaults load ahead of GTM: on by default in the US, opt-in for the EEA, UK and Switzerland, and Global Privacy Control always honored. LinkedIn waits for consent and fires the moment a visitor opts in.

In the animation: one shared consent layer loads ahead of Google Tag Manager on both sites. GA4 and Google Ads follow the regional defaults, and the LinkedIn tags wait until the visitor opts in.

04 · The wiring

Two events, every tag accounted for

Variables, triggers and tags, mapped end to end

Data layer and DOM variables carry the lead magnet and the qualified flag, custom-event triggers listen for each event, and every conversion tag hangs off one of them. Base tags load on every page; conversions fire only on a confirmed event.

In the animation: events (lead_confirmed, contact_submit) feed variables (a data layer variable for the lead magnet, a DOM variable for the qualified flag), which feed custom-event triggers, which fire the GA4, Google Ads and LinkedIn conversion tags. Base tags load on every page.

05 · Bidding

Each lead counts once, in the goal that bids

Tracking only pays off when bidding uses it

Contact Lead and Sign-up are the Primary goals. Qualified Lead and the GA4 import stay Secondary, so nothing is counted twice, and the landing-page campaign bids only on its own Sign-up conversion.

In the animation: the Google Ads conversion goals. Contact Lead and Sign-up are Primary, Qualified Lead and the GA4 lead import are Secondary, and the landing-page campaign bids only on its own Sign-up conversion.

06 · The result

Shipped and tested in under 3 hours

Every step verified in Preview before launch

Two sites, two GTM containers, conversions in Google Ads and LinkedIn, and consent on both sites, all QA’d end to end before the relaunch.

In the animation: a checklist of what shipped. Two sites, two Google Tag Manager containers, conversions in Google Ads and LinkedIn, consent on both sites, one confirmed event per lead, and every step tested in GTM Preview, in under 3 hours.

ValueEvery ad dollar in the relaunch optimizes on a real, deduplicated lead from day one.

Recognize one of these?

Most conversations start with someone describing situation one or situation three without knowing which it is. A thirty-minute call is usually enough to tell you, honestly, including when the answer isn't us.