Library / Wire / A form is a writer, not a lead vault

WireHow to wire it

A form is a writer, not a lead vaultIf the thank-you does not change the contact, the page was a brochure.

Native GHL forms, landing forms, and 'just a Typeform we will import' all fail the same way: fields do not match the spec, UTMs die, and the thank-you is a dead end. Wiring a form means the submit creates or updates one contact, one opportunity, source and offer as separate tags, and a spine that starts the same day.

00

The short version

Intern through CEO

Native GHL forms, landing forms, and 'just a Typeform we will import' all fail the same way: fields do not match the spec, UTMs die, and the thank-you is a dead end. Wiring a form means the submit creates or updates one contact, one opportunity, source and offer as separate tags, and a spine that starts the same day.

  1. 01

    One form per job. A 'contact us' that also books, downloads, and applies is four writers fighting. Name the conversion: inquiry, application start, or magnet — not all three.

  2. 02

    Field names on the form must equal field names in GHL. 'Company' vs 'organisation' vs 'business name' is how reporting becomes folklore. The spec page is the dictionary.

  3. 03

    Hidden fields for utm_source, utm_medium, utm_campaign, utm_content, and a page_slug. If they are missing, every lead is 'direct' and you will argue with ads.

  4. 04

    Thank-you is an operating step. It can confirm, set expectations, and start the sequence. It cannot be a second CTA farm that never writes.

  5. 05

    Test as a stranger with UTMs in the URL. If the contact has no source, the form is vanity. Do not add a popup until the primary form writes.

Who

Same system. Three jobs.

Read your row

Intern

What you actually do

You own the test URL with UTMs and the screenshot of the contact. Do not redesign the form. Map it.

Operator

What you protect

Every public form is a writer. If it cannot be named on the spec, it goes unpublished. Protect first-touch vs last-touch UTM rules so ads arguments stop.

CEO

What you refuse to fund

Traffic to a form that does not change CRM state is a content hobby. Write-in % on test submits is the gate before more pages.

Wire

How to connect it

Objects, then edges

GHL form (or mapped equivalent), hidden UTM fields, named custom fields, contact, opportunity, source:* and offer:* tags, thank-you state, workflow enrollment, Conversations.

  1. 01

    Submit → contact created/updated on email match; fields map 1:1 to the spec, not to notes

  2. 02

    Hidden UTMs → custom fields + source tag; never dropped on redirect

  3. 03

    Submit → opportunity on New inquiry (or the stage the sale map named)

  4. 04

    Thank-you → spine enrolls; contact state changed, not a static thanks HTML

Steps

Do this in order

Why, then done when
  1. 01

    Bind the form to the sale map

    Write which pipeline and stage this form is allowed to create. If it is a magnet, it may create a contact without an opportunity — say so. Do not let every form open a deal.

    Why: Magnet downloads sitting in New inquiry destroy close rate and sales attention.

    Done when: Form name, job, and stage are one line on the spec.

  2. 02

    Map visible fields to the spec

    Each input → named custom field or standard field. Required only what you will use this week. Phone format agreed. No duplicate 'how can we help' that lands in notes.

    Why: Optional junk fields become unread novels. Required junk fields kill conversion and still do not write useful data.

    Done when: Test submit shows every answer on the contact in the named place.

  3. 03

    Install hidden UTMs and page context

    Hidden fields: utm_source, utm_medium, utm_campaign, utm_content, gclid/msclkid if you use them, page_slug, lane. JavaScript copies from the query string on load.

    Why: Without this, source tags are guesses and campaign ROI is a campfire story.

    Done when: Submit from ?utm_source=test_google writes source:google (or the spec equivalent) on the contact.

  4. 04

    Create or update, never a second person

    Match on email. Update fields that are empty or that this form is allowed to overwrite (UTMs on first touch only, or last-touch — write the rule).

    Why: Duplicate contacts on every submit is how you look careless and how workflows double-send.

    Done when: Second submit from the same email updates the same contact. No merge required.

  5. 05

    Start the spine from thank-you

    Enrollment on submit, not on a human importing. Magnet vs inquiry vs apply get different spines. Replies to Conversations on that contact.

    Why: Waiting until Friday to 'add them to the campaign' is how intent dies.

    Done when: Throwaway submit receives email or SMS one within an hour.

What an intern should wire first

Open the live URL with test UTMs. Submit. Land on thank-you. Confirm one contact, mapped fields, UTMs present, opportunity only if this form is allowed to open a deal, and the first spine message. If any of that fails, do not edit headline copy. Fix the writer.

What a CEO should refuse to fund

Another landing page, a popup tool, or a form builder outside GHL until the primary form writes 100% of test submits. More pages with dead thank-yous multiply the leak.

The usual failure

Snapshot form still named 'Form A'. Fields from a demo. No hidden UTMs. Thank-you is a GIF. Workflow listens to a leftover tag. Marketing celebrates form fills in page analytics. GHL is empty or full of duplicates. That is a brochure with a button.

The test that proves it

Stranger email, UTM in URL, submit twice. One contact. Fields and source true. Spine started. Opportunity exists only if the spec said this form opens a deal. Conversations would receive a reply on that contact.

Why

Questions people actually ask

Pushback is normal

Why not dump extra questions into notes 'for now'?

Now becomes never. Notes cannot trigger, filter, or report. If the question matters, it is a field. If it does not, delete it from the form.

Can two landings share one form?

Yes if the job is the same and page_slug is hidden so you know which page. No if one is a magnet and one is an application.

What about GHL surveys vs forms?

Same rule: writers to the spec. Surveys that do not map fields are ScoreApp-without-ScoreApp. Pick one writer per job.

This week

This week: one live form, field map, hidden UTMs, test submit with query string, spine same day. Pause extra forms.

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

Stripe is how Won becomes a fact

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

Read ↗
Wire

Meta lead ads expire in minutes. GHL must be the router.

A lead sitting in Ads Manager is already someone else's booking.

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.