> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Zapier and ClickFlare Integration Guide

> Connect Zapier to ClickFlare: send ClickFlare events to a Zap with a Catch Hook, and report conversions from any Zapier app to ClickFlare's JSON postback.

![Zapier and ClickFlare Integration](https://mintcdn.com/clickflare/gS923ib4WFySqxSL/images/integrations/covers/zapier.png?fit=max\&auto=format\&n=gS923ib4WFySqxSL\&q=85\&s=c0f61f823bd99a3026df08717fb7fd5c)

Zapier connects thousands of apps through automated workflows called Zaps. Each Zap starts with a trigger and runs one or more actions. Its **Webhooks by Zapier** app lets a Zap receive data from any tool and send data to any URL, and that's how it talks to ClickFlare.

The connection works in both directions:

* **ClickFlare → Zapier.** ClickFlare's [Custom Webhook](/docs/en/integrations/custom-webhook-integration.md) sends an event (a conversion, a purchase, a click) to a Zapier **Catch Hook**. The Zap passes it on to Google Sheets, your CRM, Slack or any other app.
* **Zapier → ClickFlare.** A **Webhooks by Zapier** POST step sends a conversion to ClickFlare's postback endpoint as JSON. Any app Zapier connects to (a form tool, a CRM, a payment platform, a partner program) can then report conversions to ClickFlare, as long as it has the click ID.

***

## At a glance

To set up Zapier with ClickFlare:

1. Create a Catch Hook in Zapier.
2. Map the event in ClickFlare.
3. Set up the conversion trigger.
4. Add the POST to ClickFlare.

| | Zapier + ClickFlare |
| - | - |
| **How it connects** | Custom Webhook out, Webhooks by Zapier POST in |
| **What reaches ClickFlare** | ClickFlare events out; conversions with payout in |
| **Timing** | Real time, per event |
| **Key parameters** | `cf_click_id`, `payout`, `ct`, param1 to param20 |
| **Works with** | Visits, clicks, conversions, custom conversions |
| **Good to know** | No click ID in the trigger app, no conversion in ClickFlare. |

***

## How the data flows

```text theme={null}
ClickFlare → Zapier
  Conversion recorded in ClickFlare
  → Custom Webhook fires (POST, with macros)
     https://hooks.zapier.com/hooks/catch/123456/abcde/
  → Catch Hook trigger parses the body
  → Actions: Google Sheets row, CRM record, Slack message...

Zapier → ClickFlare
  Trigger in any app (new deal, new payment, partner webhook)
  → Webhooks by Zapier: POST, payload type JSON
     https://trk.yourdomain.com/cf/cv
     {"cf_click_id": "CF_CLICK_ID", "payout": 25, "ct": "sale"}
  → ClickFlare matches the conversion to the original click
```

| Direction | Zapier side | ClickFlare side | Use it for |
| - | - | - | - |
| **Out of ClickFlare** | Catch Hook trigger | Custom Webhook (Integrations → Conversion API) | Logging conversions, alerts, CRM sync |
| **Into ClickFlare** | Webhooks by Zapier POST action | JSON POST to `/cf/cv` | Conversions from apps with no postback of their own |
| **Reading data** | Webhooks by Zapier GET or Custom Request | REST API at `public-api.clickflare.io` | Pulling reports or lists into a Zap |

***

## What you'll need

* A ClickFlare account with your **own tracking domain** for postbacks. See [Tracking domains](/docs/en/settings/tracking-domains.md).
* A Zapier account. Zapier's help pages list Webhooks by Zapier as available on its Free, Professional, Team and Enterprise plans. Check your own account for what your plan includes, and for task limits.
* For Zapier → ClickFlare: the click ID stored somewhere the trigger app can return it, for example a hidden form field or a CRM field.
* For API calls: an API key from **Settings → API Keys**.

***

## Send ClickFlare events to Zapier

**1. Create a Catch Hook in Zapier**

In the Zap editor, click the trigger step, search for **Webhooks by Zapier** and pick the **Catch Hook** event. Click **Continue**. Leave **Pick Off A Child Key** empty to use the whole body. In the **Test** tab, click **Copy** to copy the webhook URL.

Use **Catch Raw Hook** instead only if you need the request headers or the unparsed body. Its limit is 2MB, against 10MB for Catch Hook.

**2. Add a Webhooks integration in ClickFlare**

Go to **Integrations**, click **Conversion API → New integration** and choose **Webhooks**. Pick the **Workspace** and give it a **Name**, for example "Purchases to Zapier".

**3. Map the event**

Under **Event Type Mapping**:

1. Pick the **ClickFlare Event**, for example the conversion or a custom conversion such as Purchase.
2. Set the **Request Method** to **POST**.
3. Paste the Zapier URL as the **Webhook URL**.
4. Add the values you need with ClickFlare macros, in the URL or the body. For example:

```text theme={null}
https://hooks.zapier.com/hooks/catch/123456/abcde/?click_id={cf_click_id}&payout={payout_currency}
```

ClickFlare replaces each macro with the real value when the event fires. With a POST and a JSON body, it sets `Content-Type: application/json` for you.

![A ClickFlare Webhooks integration for Zapier: the Sale event, POST, the Zapier webhook URL and a JSON body with click\_id, payout and campaign macros](https://mintcdn.com/clickflare/b2lpDlx8sR69TsUK/images/integrations/zapier/clickflare-zapier-webhook-event-mapping.png?fit=max\&auto=format\&n=b2lpDlx8sR69TsUK\&q=85\&s=204fc598bd865380ec7d2c2e24762e1c)

**4. Filter, save and test**

To fire only on some events, click **Add Conditions**: for example payout greater than 0, one campaign or offer, or one country. Click **Next**, then **Save**.

Trigger a real event, go back to the Zap's **Test** tab and click **Test trigger**. Zapier splits the request into fields you can map in the next steps. Then add your actions and turn the Zap on.

You can map up to 10 events per Webhooks integration, and the same event more than once. A Purchase can go to Zapier and to your CRM at the same time, each with its own URL and headers. For per-campaign Zaps, set the webhook on the campaign instead. See [Custom Webhook](/docs/en/integrations/custom-webhook-integration.md).

***

## Report conversions from Zapier to ClickFlare

ClickFlare accepts conversions as a JSON POST on the same endpoint as its postback:

```bash theme={null}
curl -X POST 'https://trk.yourdomain.com/cf/cv' \
  -H 'Content-Type: application/json' \
  --data '{"cf_click_id": "abc", "ct": "search", "param1": "test", "payout": 1}'
```

The body keys are `cf_click_id` (required), `payout`, `ct`, `txid` and `param1` to `param20`. `ct` must match a custom conversion created under **Settings → Custom Conversions**. See [Custom conversions](/docs/en/settings/custom-conversions.md).

**1. Make sure the click ID reaches the other app**

The app that triggers the Zap must know the ClickFlare click ID. Pass `{cf_click_id}` in the offer or lander URL and store it, for example in a hidden form field, a CRM field or a partner platform's sub ID. Without it, ClickFlare has nothing to match.

**2. Set up the trigger**

Pick the trigger that means "conversion" in that app: a new form entry, a deal moved to Won, a new payment. For a platform that sends its own webhook, use a **Catch Hook** trigger and paste its URL into that platform, as in the [Hotmart](/docs/en/integrations/hotmart-click-flare-integration-guide.md) and [PartnerStack](/docs/en/integrations/partnerstack-click-flare-integration-guide.md) guides.

**3. Add a Webhooks by Zapier POST action**

Click **+**, search for **Webhooks by Zapier** and choose the **POST** event. Fill in:

| Field | Value |
| - | - |
| **URL** | `https://trk.yourdomain.com/cf/cv` with no parameters. Zapier recommends putting values in Data, not in the URL. |
| **Payload Type** | **JSON** |
| **Data** | `cf_click_id` → the click ID from the trigger. `payout` → the amount. `ct` → your custom conversion name. `txid` → the order or transaction ID, if the trigger has one. Add `param1` and up if you need them. |

Leave nothing else in **Data**. If Data is empty, Zapier sends every field from the previous step.

**4. Test the step**

Run the step test with a real click ID from a recent ClickFlare click. The conversion should appear on that campaign and in **Logs → Event Logs**.

> [!TIP]
>
> Need the conversion to replace or stay apart from an earlier one on the same click? Send `txid` in **Data**: a different `txid` adds a conversion, the same `txid` replaces the earlier one. A Webhooks by Zapier **GET** to `/cf/cv` with `click_id`, `payout`, `ct` and `txid` in the query works too. See [Postback parameters](/docs/en/tracking/click-flare-parameters-in-postback-urls.md).

***

## Read ClickFlare data in a Zap

A Zap can also call the ClickFlare REST API. Authentication is one header, `api-key`, with a key from **Settings → API Keys**. See [API overview](/docs/en/api/clickflare-api-overview.md).

* For a simple read, use a Webhooks by Zapier **GET** step to `https://public-api.clickflare.io/api/campaigns/list` with the `api-key` header in **Headers**.
* For the report endpoint, `POST /api/report`, use **Custom Request**. Its body has nested arrays (`groupBy`, `metrics`), and Custom Request sends raw JSON exactly as you type it. Check it with a JSON validator first: Zapier doesn't format it for you.

```json theme={null}
{
  "startDate": "2026-11-01 00:00:00",
  "endDate": "2026-11-01 23:59:59",
  "timezone": "UTC",
  "groupBy": ["campaignID"],
  "metrics": ["campaignID", "campaignName", "visits", "conversions", "revenue", "cost", "roi"],
  "sortBy": "revenue",
  "orderType": "desc",
  "page": 1,
  "pageSize": 100,
  "includeAll": false
}
```

> [!WARNING]
>
> The API key has the same rights as your account. Anyone who can edit the Zap can see it.

***

## Limits and behavior worth knowing

* **Turned-off Zaps.** When a Zap is off or deleted, Zapier answers its Catch Hook URL with a 404, after a delay of up to several hours. Turn it back on and it returns 200 again.
* **Ownership.** The hook URL contains the owner's Zapier ID. It only changes if the Zap moves to another user, and then you must paste the new URL into ClickFlare.
* **Arrays.** If a request body is a JSON array of objects, Zapier runs the Zap once per object.
* **Payload size.** 10MB for Catch Hook, 2MB for Catch Raw Hook, 5MB for webhook actions. Rate limits apply to Webhooks by Zapier.
* **Several Zaps from one event.** Zapier can combine hook URLs owned by the same user, but it's simpler to map the event several times in ClickFlare.

***

## Verify the setup

**1. ClickFlare → Zapier**

Fire a test event in ClickFlare, then open the Zap's history. The run should show the click ID and payout as real values, not as `{cf_click_id}`.

**2. Zapier → ClickFlare**

Run the POST step with a recent click ID. Check that the conversion appears in ClickFlare under the right custom conversion and payout.

***

## Troubleshooting

> [accordion] The Zap doesn't run when ClickFlare fires
>
> * The Zap is off. Turned-off Zaps return 404 to ClickFlare.
> * An event filter in ClickFlare blocks the event. Check the conditions.
> * The Zap was transferred to another user and the URL changed.

> [accordion] The Zap shows the macro text instead of a value
>
> The macro is misspelled, or the event you mapped doesn't have that value. Check the macro name in the ClickFlare event mapping.

> [accordion] The POST to ClickFlare runs but no conversion appears
>
> * `cf_click_id` is empty or isn't a ClickFlare click ID. Check the field you mapped.
> * `ct` doesn't match a custom conversion exactly.
> * The URL isn't your tracking domain with `/cf/cv`.
> * **Payload Type** isn't JSON.
>
> See [Troubleshooting S2S postbacks](/docs/en/tracking/troubleshooting-s2s-postback-url-in-clickflare.md).

> [accordion] The payout arrives as 0
>
> The amount field from the trigger is empty or has a currency symbol. Send the amount without a currency symbol, for example `25.00`. A Formatter by Zapier step can clean it up.

***

## FAQ

> [accordion] Does ClickFlare integrate with Zapier?
>
> Yes, both ways. ClickFlare's Custom Webhook sends events to a Zapier Catch Hook, and a Webhooks by Zapier POST step sends conversions to ClickFlare's /cf/cv as JSON.

> [accordion] Which ClickFlare events can trigger a Zap?
>
> Any event you can map in the Webhooks integration: visits, clicks, conversions and custom conversions. Up to 10 mappings per integration.

> [accordion] Can Zapier send ClickFlare conversions without a click ID?
>
> No. ClickFlare matches every conversion to a click by its click ID. Make sure the trigger app stores it.

> [accordion] Should I use GET or POST to send conversions?
>
> POST with JSON for most cases. Both carry the same values, `txid` included. Use the GET postback if you prefer a URL.

***

## Related

> [card] [Custom Webhook](/docs/en/integrations/custom-webhook-integration.md)
>
> Send any event out

> [card] [Make](/docs/en/integrations/make-click-flare-integration-guide.md)
>
> The same with Make

> [card] [API overview](/docs/en/api/clickflare-api-overview.md)
>
> Keys and endpoints


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.