Library / Wire / UTMs that die on thank-you make revenue a campfire story

WireHow to wire it

UTMs that die on thank-you make revenue a campfire storyIf source is always 'direct', you are arguing with ads in the dark.

UTM discipline is not a marketing-ops hobby. It is how GHL tells you which door paid. Hidden fields must survive redirects, calendars, and lead ads. First-touch vs last-touch must be a written rule. This is the field spec and the test URL — not a lecture about tagging philosophy.

00

The short version

Intern through CEO

UTM discipline is not a marketing-ops hobby. It is how GHL tells you which door paid. Hidden fields must survive redirects, calendars, and lead ads. First-touch vs last-touch must be a written rule. This is the field spec and the test URL — not a lecture about tagging philosophy.

  1. 01

    Standardize names. google vs Google vs Google Ads is three sources. A one-page UTM spec: allowed sources, campaign naming, who generates links.

  2. 02

    Thank-you redirects that drop query strings are the usual killer. Test the live path, not the form in isolation.

  3. 03

    Calendly/GHL calendar links from emails must append UTMs or the booking looks organic. Email is a source too.

  4. 04

    If you overwrite first-touch every time they click a new campaign, you will think the last email 'caused' a deal that Google started. Write first vs last.

  5. 05

    Offline doors (phone, walk-in, partner) get a source field from the tracking number or a required intake question. Do not leave them blank as 'direct'.

Who

Same system. Three jobs.

Read your row

Intern

What you actually do

Production tests with query strings. First/last. You are not 'doing attribution modeling'. You are proving fields.

Operator

What you protect

Source is a field, not a debate. Protect first-touch. Make calendars and ads speak the same columns.

CEO

What you refuse to fund

If you cannot name where paying customers came from without a story, you cannot allocate. UTM write-in is the cheap system. Buy it before more media.

Wire

How to connect it

Objects, then edges

utm_source, utm_medium, utm_campaign, utm_content, utm_term, gclid/msclkid, landing page_slug, GHL hidden fields, first_source vs last_source, tags source:*, ads platforms.

  1. 01

    Landing URL query → hidden form fields on load → GHL custom fields on submit

  2. 02

    Calendar booking links carry the same query or stored fields from the contact

  3. 03

    First-touch locked; last-touch updated only if you wrote that rule — never silent overwrite both

  4. 04

    Lead ads and call tracking write equivalent source fields even without UTMs

Steps

Do this in order

Why, then done when
  1. 01

    Publish the UTM spec

    Allowed utm_source values. Campaign naming. Content for ads vs email. Ban random casing. Owners who may create links.

    Why: Without a spec, every contractor invents a dialect.

    Done when: One page. Examples of good and bad URLs.

  2. 02

    Hidden fields on every public form

    Five UTM fields + gclid + page_slug. JS copy from URL and from first-party storage if they browse then convert later (session or 7-day — write it).

    Why: People often land, leave, convert on a clean URL. If you only read the last URL, you lose the ad.

    Done when: Land with UTMs, navigate, submit: fields still present.

  3. 03

    Prove the thank-you path

    Live convert with a test query. Open GHL. If empty, fix redirect, GHL form settings, or the page builder stripping params.

    Why: Builders love pretty thank-you URLs. Pretty and empty is the leak.

    Done when: Production path writes UTMs. Not only staging.

  4. 04

    First-touch vs last-touch fields

    first_utm_* set if empty. last_utm_* always update — or the reverse, but written. Tags: usually first-touch source for reporting, last for debug.

    Why: One field doing both jobs is how arguments never end.

    Done when: Two visits, two campaigns: first stays, last changes (if that is your rule).

  5. 05

    Non-UTM doors get equivalent fields

    Meta lead ads, Google lead forms, call tracking, partners: map to source and campaign fields. Same reporting views.

    Why: UTM-perfect web and 'facebook' as a blob for ads is still folklore.

    Done when: A lead ad test fills source/campaign comparable to a UTM form submit.

What an intern should wire first

Write three test URLs from the spec. Convert on production. Check first and last fields. Click an email booking link. Submit a lead ad if you have one. Screenshot empties — those are tickets. Do not generate 40 campaign names this week.

What a CEO should refuse to fund

More ad spend or a new channel until production forms keep UTMs and first-touch is locked. Spend without source on the contact is a campfire.

The usual failure

Someone added UTMs once. Page builder thank-you dropped them. Calendly links are clean. First-touch overwritten. Direct is 60% of contacts. Marketing and sales each have a story. That is not attribution. That is weather.

The test that proves it

Production form keeps params through thank-you. Browse-then-convert keeps stored UTMs. First vs last behaves. Email booking carries source. Offline doors mapped.

Why

Questions people actually ask

Pushback is normal

Can’t we just look at Google Analytics?

GA4 does not own your pipeline, show rate, or revenue by offer. GHL must carry source or sales and ads will never share a number.

What about UTM tools and shorteners?

Fine if they preserve params to the landing. Shorteners that strip query strings are vandalism.

Is auto-tagging enough?

gclid helps Google. It does not name your campaign in language the team understands. Keep UTMs plus click ids.

This week

This week: UTM spec page, hidden fields, production thank-you test, first vs last, one offline door mapped. No new campaign names until the path works.

Continue

Other connections

Same job: write-in
Wire

Calendly only counts when GoHighLevel sees the booking

A full calendar and an empty pipeline is two databases.

Read ↗
Wire

ScoreApp is a door. GoHighLevel is the follow-up.

A high score in a CSV is not a qualified opportunity.

Read ↗
Wire

A form is a writer, not a lead vault

If the thank-you does not change the contact, the page was a brochure.

Read ↗
Wire

Stripe is how Won becomes a fact

If paid lives in Stripe and the opportunity is still open, reporting is theatre.

Read ↗

Working notes

GHL Engine Checklist

The minimum CRM, pipeline, and nurture spec before you add more pages. Request the file. It arrives by email — not a public dump, not a drip of slogans.

Request the notes ↗
Next

If the leak is expensive, talk.

Email and WhatsApp stay open. A call is for installing the system — not for a tour of tools.