In this guide
- HubSpot can store Google and Meta click IDs on the contact, and its workflows can call a webhook on a stage change.
- HubSpot also has native ad-platform integrations. They depend on your plan, so check what you have before building a custom route.
- A server container lets you reuse the same stage data for both Meta and Google Ads.
HubSpot is where many small and mid-size teams keep their leads, deals and marketing e-mail. It is also where the truth about which leads became customers lives. The ad platforms do not see it unless you send it. This page covers what HubSpot stores, the native options and the server-side route. For the general pattern see CRM data to Meta with webhooks.
What to capture at the form
- Click IDs. HubSpot can store the Google click ID and the Meta click ID on the contact when the ad integrations are connected, in properties such as the Google click ID and Facebook click ID. If you use your own forms, add hidden fields.
- Hashed e-mail and phone. Compute them in the server or the data layer if you will send them from outside HubSpot.
- The page URL and UTM values, so you can report by campaign.
- The
fbpcookie for Meta, saved in a hidden field.
Connected in minutes
Add your domain, install the pixel, connect your ad platforms and watch the first events land.
Native options
HubSpot offers ad integrations that sync audiences and, on some plans, send conversions back to Google Ads and Meta based on lifecycle stages or deal stages. Availability and limits depend on your HubSpot subscription and change, so check HubSpot's current documentation. If a native option does what you need, use it first. Build a server route when you need more control, more platforms or stage data that the native option does not send.
The server route
Define the stages
Pick the lifecycle or deal stages that predict revenue, such as sales qualified and closed won.
Build a workflow
Trigger it when a contact reaches a stage or a deal moves. HubSpot's "send a webhook" action posts a JSON message; it is available on higher-tier plans.
Include identifiers
Send the click IDs, hashed e-mail, stage name, deal value and a stable event ID.
Receive it in your server container
A client accepts the webhook and the Meta and Google Ads tags send the conversions.
Test
Move a test contact through each stage and check Meta Test Events and the Google Ads conversion status.
Watch events arrive, live
A sample feed. In Open Tracked you see the same stream for your own store.
Meta and Google Ads details
Meta
Send a Conversions API event for each stage, with fbc, fbp, hashed e-mail and phone. See how to set up the Conversions API.
Google Ads
Upload the stage as an offline conversion with the Google click ID, or with enhanced conversions for leads using hashed e-mail. See Google Ads offline conversions.
Open Tracked
The Data Store and Enricher remember hashed identifiers for returning visitors, and Click ID Restorer and Cookie Keeper keep click IDs and cookies alive until the form is sent. All are on every plan.
Common problems
A worked example: a B2B software company
A software company runs ads on Google and Meta, and every demo request creates a HubSpot contact. Marketing used to report cost per demo request. Sales reported that only one in ten was a good fit. The team added hidden fields for the click IDs, made sure HubSpot stored them, and built a workflow that sends a webhook when a contact becomes a sales qualified lead and another when a deal is won. The server container turns the first into a qualified-lead conversion and the second into a purchase with the deal value. After two months the ad platforms had real signals about which clicks were valuable, and the team could report cost per qualified lead and cost per customer, which was the number the business actually cared about.
Their first attempt failed for a simple reason: the click ID property was empty for most contacts because their forms were not HubSpot forms. Check this before anything else. Create a test lead through the real form and open the contact record. If the click ID is not there, nothing that follows will work.
Runs on your domain, anywhere
Your tracking runs on your own domain, so a visit from any country is handled the same way.
Frequently asked questions
Can HubSpot send conversions to Google Ads and Meta?
HubSpot has native integrations on some plans and supports webhooks for a custom route. Check the current features on your plan.
Where does HubSpot store the Google click ID?
In a contact property filled when the Google Ads integration is connected, or in a hidden field you add.
Which stage should I send?
The ones that predict revenue: sales qualified and closed won are common.
Do I need a server container?
Not always. It helps when you want one route for several platforms and more control.
Can Open Tracked replace HubSpot?
Open Tracked has a CRM pipeline for lead stages and offline conversions. It is not a full marketing suite. Many teams keep HubSpot and use Open Tracked for the tracking.
Do I need spreadsheets to read my results?
No. Once tracking is live, the Open Tracked analytics shows spend, revenue, ROAS and profit, and you can ask Ari, the built-in AI assistant, questions about your own numbers in plain words. Ari's allowance depends on your analytics plan.
Is Open Tracked different from Open Track or Open Space Track?
No. Open Tracked is the official name of our server-side tracking platform, and the website is opentracked.io. Many people search for it as Open Track, OpenTrack or Open Space Track. All of them lead to the same product: server-side Google Tag Manager hosting, first-party analytics and a CRM pipeline.

Fix your tracking at the source
Open Tracked hosts your server-side Tag Manager, keeps first-party cookies alive and shows what each ad is really worth.
The Open Tracked team
We build Open Tracked: server-side tracking hosting, analytics and the tools around them, for stores that spend on ads. Questions about this guide, or an idea for the next one?
Comments
Loading comments...

