Meta Conversions API setup for HubSpot
Meta from HubSpot follows the same path — fbclid on the contact, CAPI events fired from a workflow on stage change. The complication is HubSpot forms in iframes, which cannot read your page's URL.
Free30 minutesNo obligation
HubSpot + Meta CAPI · what breaks
What goes wrong on HubSpot
- 01
Iframed forms can't see the parent URL
So hidden fields need populating by script, not by URL inheritance.
- 02
HubSpot-hosted pages are a different origin
Session continuity needs handling deliberately.
- 03
Click ID missing on most contacts
Which caps every offline import you'll ever run.
- 04
Deal outcomes never leaving HubSpot
Where they're invisible to bidding.
HubSpot + Meta CAPI · the fix
What changes — HubSpot + Meta CAPI
Click IDs on contact and deal records
All four parameters.
Deal stages sent back as conversions
So bidding optimizes toward pipeline.
Real deal value in the platforms
Rather than a placeholder.
HubSpot + Meta CAPI · architecture
How Meta tracking behaves on HubSpot
Same plumbing, different destination.
- 1
fbclid as a contact property
Captured on landing, populated by script.
- 2
CAPI events from workflows
Lead and stage changes.
- 3
Deal ID as event_id
Stable and unique per deal.
- 4
Customer data from the contact
Normalized before hashing.
- 5
Iframe form paths tested
Where fbclid is most often lost.
HubSpot + Meta CAPI · diagnose
Where HubSpot tracking breaks, in diagnostic order
Each check rules out a class of cause, so by the last one there is usually a single explanation standing.
- 01
Measure the share of contacts with a click ID
This is the finding that determines everything.
- 02
Submit a test lead and follow it
Landing to contact to deal.
- 03
Check whether forms are iframed
It changes how hidden fields get values.
- 04
Confirm properties exist on both contact and deal
And that association carries them.
- 05
Measure median days from click to close
Against the import window.
HubSpot + Meta CAPI · prove
The QA evidence — HubSpot + Meta CAPI
Run on HubSpot specifically, on a live conversion rather than in preview mode.
Source of truth
your HubSpot deal records
- Click ID present on a live contact and its associated deal.
- All four parameters captured, not just gclid.
- Workflow confirmed firing on stage change.
- Uploads confirmed by match rate rather than a success message.
- Deal counts reconciled against HubSpot for a closed month.
- Reconciled over a fully closed window, matched per record rather than on totals.
- Re-checked 30 days later, and after any platform update.
HubSpot + Meta CAPI · free audit
What we check in the free audit
- Measure the share of contacts with a click ID
- Submit a test lead and follow it
- Check whether forms are iframed
- Confirm properties exist on both contact and deal
- Measure median days from click to close
Checked against
your HubSpot deal records
Free30 minutesNo obligation
HubSpot + Meta CAPI · when not to buy
When you don't need this on HubSpot
Worth reading before you buy anything, from us or anyone.
- If your contacts already carry click IDs and deal outcomes reach your ad platforms, this is done and you don't need us.
- Counting how many of your last hundred contacts carry a click ID takes ten minutes and tells you the ceiling on this whole project.
- If your sales cycle routinely exceeds the import window, closed-won cannot drive bidding regardless of how well this is built. Optimize on an earlier stage and say so.
- HubSpot's own ads integration covers some of this. Check what it already does before building a parallel path.
HubSpot + Meta CAPI · what we deliver
What gets built for Meta on HubSpot
A shared event ID on both paths
The HubSpot deal ID, stable and available to any workflow-triggered event.
Standard event names, exactly cased
Meta matches on name and ID together, so a case difference alone produces two events.
Customer data normalized then hashed
Lowercase and trimmed email, phone in E.164. This is where nearly every low match quality score comes from.
fbc and fbp forwarded from the browser
fbc only exists if fbclid was captured on landing — a very common gap.
Written guarantee
95%+ tracking accuracy
Measured against your HubSpot deal records. Miss it and we keep working at no cost.
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
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
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
FAQ
HubSpot + Meta CAPI questions, answered
CAPI events fired from a workflow on stage change, referencing the click ID on the contact.
The deal ID. Stable, unique, and available to the workflow.
Usually an iframed form that couldn't read the parent URL. Populate the hidden field by script.
Meta can match on hashed customer data, at lower quality. The click ID is materially better where it exists.
Free · 30 min
Get Pixel and CAPI counting once on HubSpot
Free30 minutesNo obligation
