
click_id, payout, txid, ct. So a small relay sits in between: Zapier, Make, n8n or a short script receives CallRail’s webhook, picks out the fields and calls the ClickFlare postback.
- Into CallRail: your lander URL carries
cf_click_id={cf_click_id}. CallRail stores the URL with the call aslanding_page_url. - Back to ClickFlare: CallRail’s webhook → your relay → ClickFlare postback with the click ID, the call value and CallRail’s call ID.
At a glance
To set up CallRail with ClickFlare:- Create custom conversions for calls.
- Add the lander as the offer.
- Track the lander with a session tracker.
- Create the relay.
- Point a CallRail webhook at it.
How the data flows
What you’ll need
- A ClickFlare account with your own tracking domain. See Tracking domains.
- A CallRail account with a Website (Session) tracker for the lander, and CallRail’s website tracking code on the lander. Only calls to session trackers carry
landing_page_url. - A relay that can receive a JSON POST and send an HTTP request: a Zapier, Make or n8n workflow, or a script on your own server or a serverless function.
Setup
Set up your own tracking domain
trk.yourdomain.com. Your relay calls the postback on this domain. See Tracking domains.Create custom conversions for calls
call for every answered call and good_lead_call for qualified calls. Your relay sends one of these as ct, so the spelling must match. See Custom conversions.Create the campaign and add the lander as the offer
payout your relay sends. Keep the braces in {cf_click_id}.Track the lander with a Website (Session) tracker
Create the relay
- Accept a POST with a JSON body and answer 2xx quickly.
- Read the fields in Map CallRail fields to ClickFlare.
- Call the ClickFlare postback.
Point a CallRail webhook at the relay
Webhooks with post_call_webhook and updated_call_webhook in its config. A company can have only one Webhooks integration, but each event takes a list of URLs, so your relay can sit next to existing webhooks.Launch
Map CallRail fields to ClickFlare
CallRail’s webhook body is the call object from its API. These are the fields the relay needs:Relay script example
A minimal Node.js relay. Adapt it to your server or serverless platform:Signature header: a Base64 HMAC-SHA1 of the request body, made with your company’s signing key from the webhooks page. Check it in your relay if the URL is public.
Post-Call or Call Modified
id as txid every time: ClickFlare keeps one conversion per click ID and txid, and a later postback replaces the earlier one. A changed value then updates the conversion instead of adding a second one.
Good leads only
If you only want qualified calls in ClickFlare, filter onlead_status in the relay. If you want both, send every call with ct=call and good leads with ct=good_lead_call, as two postbacks with different txids, for example CALLRAIL_ID and CALLRAIL_ID-lead.
How a call gets its lead status depends on your CallRail setup and plan. Check on a test call that the event you rely on, Post-Call or Call Modified, carries the status you expect.
Verify the setup
Click through the campaign
cf_click_id= followed by a real click ID, and the number must be a CallRail session number.Place a test call
Check the call in CallRail
cf_click_id.Check the relay and ClickFlare
txid is CallRail’s call ID.Troubleshooting
landing_page_url is empty
landing_page_url is empty
The relay never receives anything
The relay never receives anything
- Check the webhook URL in CallRail and the events selected on it.
- Wait the full 20 minutes for Post-Call.
- If earlier requests failed, CallRail may have disabled the webhook integration. Fix the relay, then check the integration is active.
The relay runs but ClickFlare shows nothing
The relay runs but ClickFlare shows nothing
- Log the postback URL the relay builds.
click_idmust be the real click ID, not empty. ctmust match a custom conversion exactly.- If you used the JSON POST, the key is
cf_click_id, notclick_id, and theContent-Typeheader must beapplication/json.
The same call counts twice
The same call counts twice
txid, or sends a different value each time. Send CallRail’s id.The click ID belongs to an older visit
The click ID belongs to an older visit
landing_page_url is the URL the caller first landed on. CallRail keeps the visitor’s source in a cookie, so a returning visitor’s call can carry the click ID of their first visit. ClickFlare then credits the first click.FAQ
Does ClickFlare integrate with CallRail?
Does ClickFlare integrate with CallRail?
Why can't CallRail post straight to ClickFlare?
Why can't CallRail post straight to ClickFlare?
cf_click_id, payout and ct as top-level keys, and the click ID is inside a URL in CallRail’s body. Something has to extract and rename it.Can I use CallRail's query string parameters instead of the JSON?
Can I use CallRail's query string parameters instead of the JSON?
Can I pass the call duration or source?
Can I pass the call duration or source?
param1…param20 in the relay, for example duration or source_name.What about form submissions?
What about form submissions?
ct, if the form submission carries the landing page in your account. Check one payload before building on it.Can I send the call to my traffic source?
Can I send the call to my traffic source?