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

# Impact.com and ClickFlare Integration Guide

> Track Impact.com offers in ClickFlare: pass the click ID in subId1, add one global Action Life Cycle postback, and use ActionId as the transaction ID.

![Impact.com and ClickFlare Integration](https://mintcdn.com/clickflare/Yhae9Jga7DowS_ZL/images/integrations/covers/impact.png?fit=max\&auto=format\&n=Yhae9Jga7DowS_ZL\&q=85\&s=7ac74eeda75f851b1f12b05e5f424e01)

Impact.com is a partnership platform, not a classic CPA network. Each **brand** runs its own program on Impact, and you apply to and contract with each brand separately, so payouts and event types differ per brand. Tracking links sit on each brand's tracking domain, for example `https://brand.sjv.io/c/111111/222222/33344`, where the path holds your partner ID, the ad ID and the program ID.

To track Impact.com offers in ClickFlare, two links have to carry the ClickFlare click ID in both directions:

* **The offer URL** sends the ClickFlare click ID to Impact in `subId1`.
* **The postback URL** sends it back to ClickFlare with every action, together with the payout and Impact's action ID.

This guide covers the setup, Impact's global and event-level postbacks, and what happens when a brand modifies or reverses an action.

> [!TIP]
>
> Only need the two values? The [Click ID & postback macros](/docs/en/integrations/click-id-and-postback-macros.md?q=impact) page has them ready to copy with your tracking domain.

***

## How the data flows

```text theme={null}
Ad click
  → https://trk.yourdomain.com/cf/r/CAMPAIGN?...
     (ClickFlare records the click and generates the click ID)
  → [optional lander → CTA uses the ClickFlare click URL]
  → https://brand.sjv.io/c/111111/222222/33344?subId1=CF_CLICK_ID
     (Impact stores the ClickFlare click ID in Sub ID 1)
  → Visitor buys or signs up on the brand's site
  → Impact sends your Action Life Cycle event notification:
     https://trk.yourdomain.com/cf/cv?click_id=CF_CLICK_ID&payout=18.40&txid=IMPACT_ACTION_ID
     (ClickFlare matches the conversion to the original click)
```

The two links mirror each other:

| Link | Built from | Impact side | ClickFlare side |
| - | - | - | - |
| **Offer URL** (in ClickFlare) | Impact's parameter + ClickFlare's token | `subId1` | `{cf_click_id}` |
| **Postback URL** (in Impact) | ClickFlare's parameter + Impact's macro | `{SubId1}`, `{Payout}`, `{ActionId}` | `click_id`, `payout`, `txid` |

> [!NOTE]
>
> **Offer URL = their parameter + your token. Postback URL = your parameter + their macro.** Impact writes the click ID into Sub ID 1 on the way in and reads it back with `{SubId1}` on the way out. Postback macros are case-sensitive: `{subid1}` and `{SubID1}` don't work. Impact calls postbacks **event notifications**.

***

## What you'll need

* An active ClickFlare account with your **own tracking domain** set up. Shared domains get flagged by networks and blocked by browsers. See [Tracking domains](/docs/en/settings/tracking-domains.md).
* An Impact.com partner account, accepted into the brand's program. Some brands turn off the link generator or deep linking. Postbacks need no approval.

***

## What the Impact.com template contains

ClickFlare has an **Impact.com** affiliate network template. It fills in the Impact macros ClickFlare needs.

![The Impact.com template in ClickFlare: Click Id is \{SubId1}, Payout is \{Payout} and Transaction ID is \{ActionId}](https://mintcdn.com/clickflare/Y5cTPxKs4V1QeWDx/images/integrations/impact/clickflare-impact-template-parameters.png?fit=max\&auto=format\&n=Y5cTPxKs4V1QeWDx\&q=85\&s=b1d2a43082cd2e31b8c67295e0de6e92)

| Field | Impact macro (AN Token) | ClickFlare parameter | What it does |
| - | - | - | - |
| **Click Id** | `{SubId1}` | `click_id` | Returns the ClickFlare click ID that the offer URL put in `subId1`. |
| **Payout** | `{Payout}` | `payout` | Your commission for the action, in the brand's currency. Not the sale amount. |
| **Transaction ID** | `{ActionId}` | `txid` | Impact's own ID for the action. It stays the same when the brand modifies or reverses the action. Pre-filled by the template. See [why](#why-actionid-is-the-transaction-id). |
| **Event Type** | leave empty | `ct` | The conversion type. See [Brands with several event types](#brands-with-several-event-types). |

> [!WARNING]
>
> Leave **Append Click ID to Offer Url** off and add `subId1` yourself. The toggle adds `subid1` in lowercase. Impact documents the parameter as `subId1` and doesn't say whether the name is case-sensitive.

***

## Setup

Everything in ClickFlare is done from inside the campaign editor. Create the offer and the affiliate network inline as you go.

**1. Set up your own tracking domain**

Add a custom tracking domain before anything else, for example `trk.yourdomain.com`. The postback URL is built on this domain, so changing it later means updating the postback in Impact too. See [Tracking domains](/docs/en/settings/tracking-domains.md).

**2. Report conversions by postback time**

Go to **Settings → General Settings** and set **Conversion registration time reporting** to **Postback Timestamp**.

Impact reports an action on the day it happened. With the default **Visit Timestamp**, ClickFlare reports it on the day of the original click, so a sale that comes in days later lands on a different date in each platform. See [Conversion registration time](/docs/en/settings/conversion-registration-time-reporting.md).

> [!NOTE]
>
> This is an account-wide setting. It changes the date conversions are reported on for every campaign.

**3. Create the campaign**

Go to **Campaigns → New Campaign**, choose **Redirect tracking**, pick your traffic source and select your tracking domain. See [Creating a campaign](/docs/en/campaigns/creating-a-campaign-in-click-flare.md).

**4. Create the Impact.com affiliate network**

While creating the offer for the campaign, create a new affiliate network in its **Affiliate Network** field. You can also create it first under **Affiliate Networks → + New**. Either way:

1. Search for **Impact** and pick the **Impact.com** template.
2. Keep the name. One global postback in Impact covers every brand you work with, so one affiliate network in ClickFlare is enough.
3. Leave **Event Type** empty.
4. Under **Conversion tracking**, select your own **Tracking Domain** and keep **S2S Postback URL** as the tracking method.
5. Set **Payout currency** to the currency your brands pay in. See [Payout and currency](#payout-and-currency).

ClickFlare builds the postback URL from these fields:

```text theme={null}
https://trk.yourdomain.com/cf/cv?click_id={SubId1}&payout={Payout}&txid={ActionId}
```

![The Conversion tracking section of the Impact.com network in ClickFlare, with the generated postback URL](https://mintcdn.com/clickflare/Y5cTPxKs4V1QeWDx/images/integrations/impact/clickflare-impact-postback-url.png?fit=max\&auto=format\&n=Y5cTPxKs4V1QeWDx\&q=85\&s=7b83093013671b99c51917e47d6a66cb)

Copy the postback URL and save the network.

**5. Get the brand's tracking link from Impact**

In Impact, you can copy a brand's tracking link in several places:

* **Dashboard**: in the **Create a link** widget, search for the brand or paste a landing page URL, then click **Copy Link**.
* **Manage → My Brands → My Brands**: hover over the program and click **Copy Link**.
* **Manage → Brand Creatives**: select an ad, click **Get Tracking Link**, then **Copy Tracking Link**.

Leave the Sub ID fields empty. Copy the regular, long link, which looks like this:

```text theme={null}
https://brand.sjv.io/c/111111/222222/33344
```

Brands use different tracking domains, such as `*.sjv.io`, `*.pxf.io` or their own. Deep links add the target page as a percent-encoded `u` parameter, if the brand allows deep linking.

> [!WARNING]
>
> Don't type `{cf_click_id}` into Impact's **Sub ID 1** field. Impact URL-encodes it to `%257Bcf_click_id%257D`, which ClickFlare never replaces with the click ID.

Don't use a **short link** or a **vanity link** as the offer URL. Parameters added to a short link don't appear in the shareable version, and Sub IDs on a vanity link are fixed when you create it, so they can't carry a new click ID on every click.

**6. Create the offer in ClickFlare**

In the offer form:

1. Name the offer, for example after the brand.
2. Select the Impact.com affiliate network you just created.
3. Paste the Impact link into **Offer URL** and add `?subId1={cf_click_id}` at the end. If the link already has a `?`, use `&subId1={cf_click_id}` instead:

```text theme={null}
https://brand.sjv.io/c/111111/222222/33344?subId1={cf_click_id}
```

![The ClickFlare New Offer form with the Impact.com affiliate network selected and subId1=\{cf\_click\_id} in the Offer URL](https://mintcdn.com/clickflare/Y5cTPxKs4V1QeWDx/images/integrations/impact/clickflare-impact-offer-url.png?fit=max\&auto=format\&n=Y5cTPxKs4V1QeWDx\&q=85\&s=1573b3e0b3484e05f4397918f2f00c61)

Leave **Append Click ID to Offer Url** off. Keep every parameter the brand already put on the link. Impact warns against removing them.

> [!WARNING]
>
> Write `{cf_click_id}` with braces. Without them Impact stores the literal text `cf_click_id`, the postback returns that text, and the conversion cannot be matched to a click.

Set the payout to **Auto** so ClickFlare uses the `payout` value from the postback. Create one offer per brand, all on the same Impact.com affiliate network.

**7. Add the global postback in Impact**

Back in Impact:

1. In the top navigation, open your **user profile** menu and choose **Settings**.
2. Under **Technical**, select **Event Notifications**.
3. Next to **Action Life Cycle Events**, click **Edit**.
4. Paste the ClickFlare postback URL.
5. Choose **GET** as the HTTP method.
6. Leave the optional settings as they are and click **Save**.

This one postback covers every brand you work with. Use **Action Life Cycle Events**, not the Action Inquiry, Action Clearing or Completed Job events.

**8. Add a lander (optional)**

If you send traffic through a lander before the offer, the lander's CTA must use the **ClickFlare click URL**, not the Impact link. ClickFlare then adds the click ID when it redirects to the offer. See [Paths with landers and offers](/docs/en/campaigns/campaign-s-path-destination-to-landers-offers.md).

**9. Save the campaign and launch**

Save the campaign, copy the campaign URL from the **Tracking** tab and use it in your ads. Before you spend money on traffic, run the checks in [Verify the setup](#verify-the-setup).

***

## Global postback or event-level postback

Impact has two places for a postback. They don't behave the same way:

| | Global (Action Life Cycle Events) | Event-level |
| - | - | - |
| **Where** | **Settings → Technical → Event Notifications** | **Discover → Brands** → brand → **More → Tracking Integration → Add Postback** |
| **Covers** | Every brand and every event type | One brand, one event type |
| **Fires on new actions** | Yes | Yes |
| **Fires on modifications and reversals** | Yes | **No** |
| **Test button** | No | Yes |

Use the global postback. Impact warns that event-level postbacks never fire for modifications or reversals, so ClickFlare would never hear about a cut commission or a reversed sale. With the global postback you don't need event-level ones, except briefly for the **Test** button (see [Verify the setup](#verify-the-setup)).

***

## Modifications and reversals

After Impact tracks an action, the brand can still change it:

| What happens to the action | Postback sent? | What ClickFlare does |
| - | - | - |
| **Tracked** (status `PENDING`) | Yes | Records the conversion with `{Payout}` |
| **Modified** by the brand, for example a partial return | Yes, same `{ActionId}` | Replaces the earlier record with the new payout |
| **Reversed** by the brand | Yes, same `{ActionId}` | Replaces the earlier record. The conversion still counts. |
| **Locked** | No | Nothing |
| **Paid out** | No | Nothing |

ClickFlare keeps **one conversion per click ID and transaction ID**. `{ActionId}` stays the same when the brand modifies or reverses the action, so each later postback replaces the earlier one (the last one received). Impact retries a failed postback up to 15 times with the same `{ActionId}`, so retries can't double count either.

> [!WARNING]
>
> ClickFlare doesn't read Impact's status, so a **reversed** action still counts as a conversion. Its payout is probably 0, but Impact doesn't document the value. Compare reversals in Impact with ClickFlare before you judge a campaign on conversion counts. To see the status, add `&param1={Status}` to the postback: Impact sends `PENDING`, `APPROVED`, `REVERSED` or `CLOSED`.

Impact doesn't list approval as a trigger, so don't expect a postback when a pending action is approved.

***

## Why ActionId is the transaction ID

By default ClickFlare keeps **one conversion per click ID**. If several postbacks arrive with the same click ID and no transaction ID, ClickFlare treats them as the same conversion, and you only see one of them (the last one received). The `txid` value has to be **different on every conversion**, but the **same for every update of one conversion**.

| Impact macro | Value | Use it as txid? |
| - | - | - |
| `{ActionId}` | Impact's ID for the action. The same on modifications and reversals. | **Yes**: the template's default |
| `{ActionModificationId}` | A new ID for every modification | No: each modification would count as a new conversion |
| `{SubId1}` | The ClickFlare click ID | No: the same for every action on the click |

With `{ActionId}`, a second sale on the same click, or a lead followed by a sale, arrives with its own ID and counts as its own conversion.

***

## Brands with several event types

Each brand defines its own **event types** (formerly action trackers), such as a lead, a sale or a subscription. The global postback fires for all of them, and with `txid={ActionId}` each one is a separate conversion.

To report each event type as its own column in ClickFlare, add `&ct={ActionTrackerName}` to the postback and create a [custom conversion](/docs/en/settings/custom-conversions.md) for every event type name the brand uses:

```text theme={null}
https://trk.yourdomain.com/cf/cv?click_id={SubId1}&payout={Payout}&txid={ActionId}&ct={ActionTrackerName}
```

Brands name event types themselves, and names can contain spaces. `{ActionTrackerId}` sends the numeric ID instead, which differs per brand. There is no `{EventTypeId}` macro.

> [!WARNING]
>
> The `ct` value must **exactly match** a parameter of a custom conversion in ClickFlare. If it doesn't, ClickFlare records a regular conversion instead.

***

## Payout and currency

`{Payout}` is your commission, a decimal such as `18.40`, in the **brand's** currency. `{Amount}` is the sale amount. ClickFlare reads the number in the affiliate network's **Payout currency**, so a EUR payout on a network set to USD is read as USD. Add `&param2={Currency}` to the postback to see each brand's 3-letter currency code, and if your brands pay in different currencies, compare revenue per brand with Impact's reports.

***

## Verify the setup

**1. Click through the campaign**

Open the ClickFlare campaign URL (with a lander, also click the CTA). Check that the request to the brand's Impact tracking domain has `subId1=` followed by a real ClickFlare click ID, not the literal text `{cf_click_id}` or an encoded `%257Bcf_click_id%257D`.

**2. Test the postback**

The global postback has no test button. You have two options:

* **Real conversion.** Complete the action through your campaign if the brand allows it, wait about 15 minutes, and check Impact's **Pending Actions** screen. Asking the brand to reverse it afterwards also tests the reversal postback.
* **Event-level test.** Under **Discover → Brands** → brand → **More → Tracking Integration**, add an event-level postback with `{SubId1}` replaced by the real click ID from the previous step. Open **Actions → Launch Test** and click **Start test**. Delete that postback afterwards.

**3. Check the conversion in ClickFlare**

The conversion should appear on the campaign with the payout from Impact. In **Logs → Event Logs**, check that it arrived with a numeric `txid` (Impact's action ID). If you see `{SubId1}` or another macro literally, Impact didn't replace it: check the spelling and case.

***

## Troubleshooting

> **Actions show in Impact but not in ClickFlare**
>
> Work through these in order:
>
> * **The postback isn't saved as Action Life Cycle Events.** Check **Settings → Technical → Event Notifications**.
> * **The postback is still on its way.** Impact processes actions for about 15 minutes before it sends the postback.
> * **Sub ID 1 is empty or encoded.** The offer URL is missing `subId1={cf_click_id}`, the click ID was typed into Impact's Sub ID field and got encoded, or the lander CTA links straight to Impact instead of using the ClickFlare click URL.
> * **The offer URL is a short or vanity link.** Use the regular long link.
> * **The macro case is wrong.** `{SubId1}`, `{Payout}`, `{ActionId}`, exactly as written.
>
> Impact support can check whether your postbacks were generated, and what response ClickFlare sent. See [Troubleshooting S2S postbacks](/docs/en/tracking/troubleshooting-s2s-postback-url-in-clickflare.md) for the ClickFlare side.

> **Reversed or reduced sales still show in ClickFlare**
>
> Event-level postbacks never fire for modifications or reversals: use the global one. Even then a reversed conversion still counts, because ClickFlare doesn't read Impact's status. See [Modifications and reversals](#modifications-and-reversals).

> **The payout is 0 or in the wrong currency**
>
> * Check that the postback has `payout={Payout}` and the offer's payout is set to **Auto** in ClickFlare.
> * `{Payout}` is in the brand's currency. See [Payout and currency](#payout-and-currency).

***

## FAQ

> **Why Sub ID 1 and not the Shared ID?**
>
> Impact gives you three Sub IDs and one Shared ID, each up to 255 characters. Sub IDs are visible only to you. The Shared ID is visible to the brand. `subId2` or `subId3` also work for the click ID, as long as the postback reads the same one, for example `{SubId2}`.

> **Can I send the conversion back to my traffic source?**
>
> Yes. Once ClickFlare records the Impact conversion, it can send it to the traffic source through the traffic source's postback or conversion API integration. Nothing changes on the Impact side.

***

## Related

> **[Macro reference](/docs/en/integrations/click-id-and-postback-macros.md)**
>
> Every network's values

> **[Custom conversions](/docs/en/settings/custom-conversions.md)**
>
> Report each event type

> **[Postback issues](/docs/en/tracking/troubleshooting-s2s-postback-url-in-clickflare.md)**
>
> Troubleshoot S2S


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