
- ClickFlare → HubSpot: ClickFlare passes its click ID to your page, and a hidden HubSpot form field saves it on the contact.
- HubSpot → ClickFlare: when the contact reaches the stage you choose, a HubSpot workflow sends the conversion to ClickFlare with that click ID.
At a glance
To set up HubSpot with ClickFlare:- Create a custom conversion per stage.
- Create the property and hidden field.
- Add your page as the offer.
- Build the workflow webhook.
- Test, then turn it on.
How the data flows
What you’ll need
- A ClickFlare account with your own tracking domain, served over HTTPS. HubSpot only sends webhooks to URLs that begin with
https. See Tracking domains. - A HubSpot form on the page your ads send traffic to. HubSpot says filling form fields from a query string works on all products and plans.
- A HubSpot subscription that includes workflow webhooks. HubSpot’s own article lists Data Hub Professional or Enterprise for webhooks in workflows.
- Edit permission for workflows (or Super Admin) to add the webhook, and Publish permission to turn the workflow on.
Setup
Set up your own tracking domain
trk.yourdomain.com, under Tracking domains. The webhook URL in HubSpot is built on it, so changing it later means editing every workflow.Create a custom conversion for each stage
ct value HubSpot sends. It must match exactly. See Custom conversions.Create the click ID property in HubSpot
cf_click_id.Add the property to your form as a hidden field
Create the campaign and add your page as the offer
cf_click_id on the left of the =. Keep {cf_click_id} with its braces on the right. Set the offer payout to Auto so ClickFlare uses the payout HubSpot sends.Save the campaign and copy the campaign URL for your ads.Build the workflow
Configure the webhook as a JSON POST
- Set Method to POST.
- Set the webhook URL to
https://trk.yourdomain.com/cf/cv. - Leave authentication off. ClickFlare’s postback doesn’t need it.
- Select Customize request body, then add these keys:
txid with a value unique per conversion, such as a record ID.HubSpot sends these keys in the request body. ClickFlare reads cf_click_id, ct, payout, txid and param1 to param20 from a JSON body:Test the action, then turn the workflow on
ct.Option: GET postback with query parameters
Use a GET webhook if you prefer the URL postback, or if the POST test doesn’t send a clean JSON body. It carries the same values,txid included.
In Send a webhook, set Method to GET and the URL to https://trk.yourdomain.com/cf/cv. Under Query parameters, add each key and pick a property or enter a static value:
click_id in the URL and cf_click_id in a JSON body.
Stages, payout and duplicates
One stage, onect. A conversion with a different ct on the same click is added as a new conversion, not a replacement. So a contact that fills the form, qualifies and buys shows once in each of the three columns. Your reports then show cost per lead, cost per qualified lead and cost per customer side by side.
Send the traffic source only what matters. Each custom conversion is mapped to your traffic source’s postback separately. You can keep form fills in ClickFlare and send only qualified or won to the ad platform to optimize on.
Payout from the deal amount. In a contact-based workflow, payout can only use contact properties or a static value. To send the deal Amount, build the won webhook in a deal-based workflow (for example, deal stage is closed won). The click ID has to be on the deal for that, so copy it from the contact to a deal property first. Check which property-copy options your HubSpot account offers, and test with one deal.
Repeats. If HubSpot sends the same ct for the same click again (a contact re-enrolled in the workflow), it counts as the same conversion. To count a second purchase separately, send a unique txid in the JSON body or the GET query.
Retries and rate limits
- HubSpot retries a failed webhook for up to three days, starting one minute after the failure, with up to eight hours between tries. A short outage doesn’t lose the conversion.
- HubSpot does not retry 4XX responses, except 429. A wrong URL fails once and stays failed.
- Configure rate limit on the action slows the webhook and every action after it. You only need it if you enroll many contacts at once.
Verify the setup
Click through the campaign
cf_click_id= followed by a real click ID, not the text {cf_click_id}.Submit the form
Move the contact to the stage
Check ClickFlare
ct and payout, on the campaign you clicked through.Send ClickFlare conversions to HubSpot (optional)
The setup above sends HubSpot stages to ClickFlare. To go the other way, for example to tag a HubSpot contact when ClickFlare records a purchase from another system, use the Custom Webhook integration:- Go to Integrations → Conversion API → New integration and choose Webhooks.
- Map the ClickFlare event you want to send, choose POST, and enter the endpoint that receives it.
- Put macros such as
{cf_click_id}and{payout}in the body. ClickFlare addsContent-Type: application/jsonto POST webhooks with JSON.
Troubleshooting
The webhook ran but no conversion shows in ClickFlare
The webhook ran but no conversion shows in ClickFlare
- The body uses
click_idinstead ofcf_click_id, or the GET URL usescf_click_idinstead ofclick_id. - The
ctvalue doesn’t match a custom conversion’s parameter exactly. - The webhook URL isn’t on your tracking domain, or the path isn’t
/cf/cv. - Include all contact properties is selected instead of Customize request body.
HubSpot won't save the webhook URL
HubSpot won't save the webhook URL
https. Use your tracking domain with SSL.The payout is 0
The payout is 0
payout is mapped to a number property with a value on that record, and that the offer payout is set to Auto in ClickFlare.FAQ
Does ClickFlare integrate with HubSpot?
Does ClickFlare integrate with HubSpot?
Can I track the form fill without HubSpot?
Can I track the form fill without HubSpot?
ct=lead, and use HubSpot workflows only for the later stages.Which HubSpot plan do I need?
Which HubSpot plan do I need?
My HubSpot plan has no webhook action. What then?
My HubSpot plan has no webhook action. What then?
Can I send extra data, like the deal name?
Can I send extra data, like the deal name?
param1 to param20 as keys in the body or the query parameters. ClickFlare stores them with the conversion.