Skip to main content
Form trackingLocal business

Count the form leads you can actually call back

Google Ads says 60 form conversions; your inbox holds 14 real inquiries and a pile of gibberish. Tags that fire on a button or a thank-you page count double clicks, reloads and bots, while a quote form embedded from your CRM may not count at all. Fixed means one conversion per lead your server accepted, with the ad click saved on the CRM record.

Free30 minutesNo obligation

Form tracking · what breaks

What your form numbers are hiding

  1. 01

    Clicks and reloads counted as leads

    A tag on the submit button or thank-you URL counts failed submits, double clicks and refreshes, so cost per lead looks cheaper than it is.

  2. 02

    The quote form lives on someone else's domain

    A form embedded from your CRM or scheduler runs in a frame your tags cannot read. You see zero conversions while the inbox fills, or a page-view stand-in that bidding treats as a lead.

  3. 03

    Bots and fake names trained as wins

    A standard conversion tag never checks whether the name and number are real, so it counts bot submits too. Smart Bidding then hunts for more visitors like the bot.

  4. 04

    Every CRM record says "website"

    The click ID never reaches the lead, so nobody knows which campaign produced the customer who signed. Budget follows form volume, not revenue.

Form tracking · the fix

What fixed looks like — Form tracking

  • One conversion per accepted lead

    Fired from the server's success response, with the lead ID as Google's transaction ID and Meta's event ID. Google Ads rejects a repeat with the same ID, and Meta keeps one copy when browser and server both report the lead.

  • Junk kept away from bidding

    Checked before anything is sent, rejects counted on their own line, and leads your team later marks as junk retracted in Google Ads inside its adjustment window.

  • Each lead tied to its click and outcome

    Click IDs on the CRM record, so qualified, booked and won leads go back to Google and Meta with a value.

Form tracking · architecture

How a form submit gets counted, by method

The right method depends on where the form actually runs. Most sites need two or three together.

  1. 1

    M1: Your own form, confirmed by your backend

    Fires from the success response or the dataLayer push your plugin makes after the server accepts the entry, never from the button.

  2. 2

    M2: The embed vendor's documented callback

    A page cannot read inside another origin's frame, so we use only signals the vendor publishes, such as Typeform's onSubmit, which returns a response ID. Message origins are checked.

  3. 3

    M3: Cross-domain hand-off

    If the form sits on the vendor's domain and the vendor lets you add your own Google tag there, the same tag ID on both sites carries the visitor across in the _gl link parameter.

  4. 4

    M4: Server relay or webhook

    A webhook from the form tool or CRM pushes the lead to Google and Meta from a server, sharing the lead ID with any browser event so the pair counts once.

  5. 5

    M6: CRM outcomes back to the platforms

    Enhanced conversions for leads matches hashed email or phone from the form to later CRM uploads; a stored gclid adds a second key.

  6. 6

    M8: Export reconciliation

    No callback and no API means counting from the vendor's lead export on a schedule.

Form tracking · diagnose

Our order of checks on a broken form

Over-counting hides under-counting, so duplicates come first.

  1. 01

    Count conversions from one test lead

    Per platform and conversion action, over 24 hours.

  2. 02

    Find what triggers each tag

    Button, thank-you URL or a real success signal.

  3. 03

    Check counting and Primary actions

    Lead actions on Every, or a tag and a GA4 import both Primary.

  4. 04

    Open the CRM record the test created

    No click ID means no outcome can be sent back.

  5. 05

    Audit the last 20 leads

    Count fakes, then check which fired a conversion.

Form tracking · prove

The checks you get signed off — Form tracking

Run on your live form with test data you approve, never a preview.

Source of truth

Leads accepted by your form backend, joined to the CRM records they created, with lead ID, click ID and current stage

  • One test lead from a tagged URL registers once in Google Ads and once in Meta, with the same event ID on the browser and server copies.
  • A failed validation, a double click and a thank-you reload each add nothing.
  • A submit that fails the junk screen is logged as rejected and sends no conversion.
  • Click ID and UTMs appear on the matching CRM record.
  • A lead moved to qualified reaches both platforms as its own conversion.
  • Every lead your backend accepted in a finished date range lined up against platform conversions, with each gap given a reason.
  • Rerun after 30 days, plus any time the form, its plugin or the site theme is updated.

Form tracking · free audit

What we check in the free audit

  • Count conversions from one test lead
  • Find what triggers each tag
  • Check counting and Primary actions
  • Open the CRM record the test created
  • Audit the last 20 leads

Checked against

Leads accepted by your form backend, joined to the CRM records they created, with lead ID, click ID and current stage

Get my free conversion tracking audit

Free30 minutesNo obligation

Form tracking · when not to buy

When form tracking is not your problem

We would rather point you elsewhere.

  • Most new customers phone you: start with call tracking, since forms are the minority.
  • Your leads come from Meta Instant Forms, Local Services Ads or a marketplace: there is no website form to fix, and visibility ends at that platform's lead report.
  • You get a handful of form leads a month: asking each one is cheaper and accurate enough.
  • One native integration already reports one conversion per lead and matches your CRM: leave it alone.

Form tracking · what we deliver

The rungs of the lead we instrument — Form tracking

  • Form started (interest)

    A secondary signal for diagnosis, never a Primary conversion that bidding chases.

  • Lead accepted (enquiry)

    The conversion itself, sent only once your backend returns success and a lead ID, both from the browser and from a server container you own on a subdomain of your site.

  • Junk screen (before the enquiry counts)

    A reCAPTCHA score verified on your server, phone and email format checks, and a repeat-contact check.

  • Source on the record

    Google and Meta click IDs plus UTM tags, read from the landing URL, kept for the visit and passed into hidden fields so the CRM saves them beside the contact.

  • Qualified and booked

    CRM stage changes sent as offline conversions to Google Ads and Conversions API events to Meta, matched on click ID or hashed contact data.

  • Won, paid and corrected

    Job value from the CRM, with spam and duplicates found later retracted instead of left in the count.

Written guarantee

95%+ tracking accuracy

Measured against Leads accepted by your form backend, joined to the CRM records they created, with lead ID, click ID and current stage. Miss it and we keep working at no cost.

Get my free conversion tracking audit

Pricing

Pick the package that fits your ad spend

Browser-side starter

$400One-time fee · lifetime ownership

Repairs and verifies the browser-side setup you already have, on a live conversion. Honest about its ceiling on this platform.

  • Root cause fixed, not worked around
  • Verified on a live conversion
  • Reconciled against your own records
  • Written handover
Fix what I have

1st-party server-side

Recommended

$800One-time fee · most popular

Money events sent from your own records through a first-party container on your subdomain, so the browser can no longer lose them.

  • First-party server container on your own subdomain
  • Money events from your records, not the browser
  • Deduplicated on a shared event ID at every destination
  • First-party cookies beyond Safari's 7-day cap
  • 95%+ accuracy and 8+ Meta EMQ, guaranteed in writing
Rebuild it server-side

Full 1st-party stack

$1,800One-time fee · lifetime ownership

Every paid channel server-side plus the offline loop, with monitoring so the next break surfaces in days.

  • Everything in 1st-party server-side
  • Pinterest, Snapchat, Reddit and LinkedIn CAPI
  • CRM and offline conversion loop
  • Refunds and cancellations corrected wherever each platform allows it
  • Monitoring on every destination
Get the full stack

FAQ

Form tracking questions, answered

Usually duplicates: a thank-you page firing on every reload, lead actions counting Every instead of One, or two Primary actions on the same form. Google recommends One for leads, and a lead ID sent as the transaction ID removes repeats.

Free · 30 min

See what your forms really report

Free30 minutesNo obligation