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

# Reacheffect Conversion Tracking & Postback Setup

> Set up Reacheffect conversion tracking in ClickFlare: pass the {tracking} click ID and {paid} cost, then post cid, conv_type and amount to conversion.go.

![Reacheffect traffic source template](https://mintcdn.com/clickflare/vJtghtd_XfrC_OXQ/images/integrations/covers/templates/reacheffect.png?fit=max\&auto=format\&n=vJtghtd_XfrC_OXQ\&q=85\&s=196206c1c70183a1744df57e70fa2591)

Reacheffect is a self-serve and managed ad network running since 2014. It sells popunder, push, in-page push, native, banner, interstitial, domain redirect, in-stream video and Telegram Mini Apps traffic, and lets you pick the exact sources your campaigns run on. This guide sets up Reacheffect as a traffic source in ClickFlare. It covers passing Reacheffect's click data into your reports and sending conversions, with payout, back to Reacheffect so its statistics and SmartCPA bidding work from the same numbers as ClickFlare.

You do everything from the **campaign editor**. The Reacheffect traffic source is created inline, without leaving the campaign.

## At a glance

| | |
| - | - |
| **Ad formats** | Popunder, push, in-page push, native, banner, interstitial, domain redirects, in-stream video, Telegram Mini Apps |
| **Click ID macro** | `{tracking}`, passed in `clickId`. Required for conversion tracking. |
| **Conversion tracking** | S2S postback to Reacheffect's conversion URL (`conversion.go`). The template has it: you fill in your account ID and conversion type. |
| **Payout passed back** | Yes, in the `amount` parameter. The template sends it. |
| **Multiple events** | Yes, one conversion type (A, B, C…) per event, one postback each |
| **Cost** | Passed per click by the template (`{paid}`). Cost Model: **Not Tracked**. See [Cost](#cost). |
| **Conversion API** | No |

## How it works

**1. Reacheffect sends the click**

A visitor clicks or sees your ad. Reacheffect opens your ClickFlare campaign URL and fills in its macros: a unique click ID in `clickId`, the price in `cost`, plus the campaign, ad, source, zone, publisher and other details.

**2. ClickFlare stores the Reacheffect click ID**

ClickFlare saves the value of `clickId` as the visit's **External ID**, records the cost, and redirects the visitor to your lander or offer.

**3. The conversion reaches ClickFlare**

Your affiliate network or store posts the conversion back to ClickFlare, matched on the ClickFlare click ID.

**4. ClickFlare posts it back to Reacheffect**

ClickFlare calls Reacheffect's conversion URL, replacing `{external_id}` with the stored Reacheffect click ID and `{payout}` with the revenue. Reacheffect matches it to the original click, ad and source.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`clickId`) and *Reacheffect's* macro (`{tracking}`). The template does this for you. In the **postback URL** you write *Reacheffect's* parameter (`cid`) and *ClickFlare's* token (`{external_id}`).

## Before you start

* **Set up your own tracking domain.** Run the campaign and the postback on your own custom domain. Shared domains get flagged by networks and blocked by browsers. See [Custom Domains](/docs/en/settings/custom-domains.md).
* **Have an offer ready in ClickFlare**, and its affiliate network set up to post conversions back to ClickFlare. See [Creating an Offer](/docs/en/tracking/creating-an-offer-1.md) and [Adding an Affiliate Network](/docs/en/tracking/adding-an-affiliate-network.md).
* **Create a conversion type in Reacheffect.** Open **Tracking** in the sidebar, then the **Conversion Tracking** tab. Each conversion type has a letter (A, B, C…) and a name you choose, for example Sale or Deposit. Switch it **Active**. Note its letter: you enter it in ClickFlare in Step 2, together with your account ID from the **More Info** dialog.
* **Decide which conversions Reacheffect should receive.** SmartCPA optimizes on what you send. If your funnel has several steps (sign-up, then deposit), decide now whether to send one event or several. See [Tracking several events](#tracking-several-events).

***

## Step 1 – Create the campaign and the Reacheffect traffic source

1. Go to **Campaigns** and click **New**.
2. In **Traffic Source**, open the dropdown and click **+ New Traffic Source**.
3. Type `reacheffect` in the search box and select the **Reacheffect** template.
4. Enter a **Name**, for example `Reacheffect`.
5. Leave **Cost currency** on **USD** unless your Reacheffect account is billed in another currency.

The template fills in the **Parameters** table for you:

| Name | TS Parameter | TS Token (Reacheffect macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| cost | `cost` | `{paid}` | `{cost}` | What you paid for the click or impression. See [Cost](#cost). |
| external\_id | `clickId` | `{tracking}` | `{external_id}` | Reacheffect's click ID. Required for the postback. |
| Campaign ID | `campaignId` | `{campaignid}` | `{trackingField1}` | The Reacheffect campaign ID |
| Campaign name | `campaign_name` | `{campaign_name}` | `{trackingField2}` | The campaign name |
| Ad ID | `adid` | `{adid}` | `{trackingField3}` | The ad (creative) that was shown |
| Source | `source` | `{subid}` | `{trackingField4}` | The source ID the click came from. Your main optimization lever. |
| Zone | `zone` | `{spaceid}` | `{trackingField5}` | The ad zone (space) on the publisher's site |
| Publisher ID | `pubId` | `{pid}` | `{trackingField6}` | The publisher account |
| Domain | `domain` | `{domain}` | `{trackingField7}` | The site the ad ran on |
| Country | `country` | `{country}` | `{trackingField8}` | The visitor's country (two-letter code) |
| Device type | `device` | `{device_type}` | `{trackingField9}` | The visitor's device type |
| OS | `os_name` | `{os_name}` | `{trackingField10}` | The visitor's operating system |
| Timestamp | `timestamp` | `{timestamp}` | `{trackingField11}` | Unix time of the click |

![The Reacheffect template's Parameters table in ClickFlare, with Reacheffect's macros pre-filled](https://mintcdn.com/clickflare/vJtghtd_XfrC_OXQ/images/integrations/templates/reacheffect/parameters-v2.png?fit=max\&auto=format\&n=vJtghtd_XfrC_OXQ\&q=85\&s=981d95e1b10045bad1e3ddc50ae1be8d)

Each tracking field becomes a column you can group reports by. `Source` is the one you will use most. Reacheffect calls source ID "the main optimization lever": whitelist the sources that convert and exclude the rest on the campaign's **Filters** step. `Zone` and `Domain` let you go one level deeper, down to the placement.

Every token matches Reacheffect's current macro list. The macros also appear as clickable chips under the **Destination URL** field of any ad form in Reacheffect, if you want to compare.

> [!WARNING]
>
> Don't remove the `external_id` row. Without Reacheffect's click ID in the campaign URL, Reacheffect cannot match conversions and rejects them as "Unknown or expired click ID". The parameter name `clickId` is ClickFlare's side and can stay. What matters is that Reacheffect replaces `{tracking}` with a real ID.

To pass more Reacheffect data, click **Add Parameter**, give it a name and parameter, and enter the Reacheffect macro as the **TS Token**. ClickFlare assigns the next free tracking field. Useful ones from Reacheffect's list: `{lang}` (browser language) and `{ispid}` (the visitor's ISP).

## Step 2 – Set up the postback

The postback is what sends conversions to Reacheffect. It lives on the traffic source, so every campaign that uses this Reacheffect traffic source sends conversions the same way.

### What the template gives you

1. Back in the **New Traffic Source** form, scroll to **Passing conversion info to traffic source**.
2. Turn on **Traffic source postback URL**. The template's postback appears:

```text theme={null}
https://go1.reacheffecti.work/conversion.go?pid=REPLACE_WITH_ACCOUNT_ID&cid={external_id}&conv_type=A&amount={payout}
```

![The Traffic source postback URL switched on, showing the Reacheffect template's postback](https://mintcdn.com/clickflare/vJtghtd_XfrC_OXQ/images/integrations/templates/reacheffect/postback-v2.png?fit=max\&auto=format\&n=vJtghtd_XfrC_OXQ\&q=85\&s=5d1d57e3dbbe6a83d6e31dc7c674ae0e)

Its parameters:

| Parameter | Value in the template | What to do |
| - | - | - |
| `pid` | `REPLACE_WITH_ACCOUNT_ID` | Replace with your Reacheffect account ID |
| `cid` | `{external_id}` | Nothing. ClickFlare fills in Reacheffect's click ID. |
| `conv_type` | `A` | Change it if your conversion type has another letter |
| `amount` | `{payout}` | Nothing. ClickFlare fills in the conversion's revenue. |

### Find your account ID and conversion type in Reacheffect

1. In Reacheffect, open **Tracking** in the sidebar, on the **Conversion Tracking** tab.
2. Click **More Info** on the conversion type you created.
3. The dialog shows your conversion URL with your account ID in `pid` and the type letter in `conv_type`.

### Fill them in on the traffic source in ClickFlare

1. In the postback field, replace `REPLACE_WITH_ACCOUNT_ID` with your account ID from the dialog.
2. If your conversion type isn't `A`, change `conv_type=A` to its letter.
3. In the dropdown on the left, choose the ClickFlare event that should fire the postback. Keep **Conversions** to send every conversion. If your final action is a custom conversion (for example `deposit`), choose that instead.
4. Click **Save**. You are back in the campaign editor with the Reacheffect traffic source selected.

> [!WARNING]
>
> Replace `REPLACE_WITH_ACCOUNT_ID` before you launch. Left as it is, Reacheffect rejects every conversion as "Wrong account ID". Copy the ID from the **More Info** dialog instead of typing it.

Because the template sends `amount={payout}`, Reacheffect reports show revenue and ROI per source, not just conversion counts.

To learn what each postback token does, see [How to Configure a Traffic Source S2S Postback URL](/docs/en/tracking/how-to-configure-a-traffic-source-s2s-postback-url.md).

## Step 3 – Finish the campaign and copy its URL

1. Name the campaign.
2. Set the **Cost Model** to **Not Tracked**, so ClickFlare uses the cost Reacheffect passes. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for popunder, push and banner traffic.
4. Click **Next** and, on **Destination**, add your lander (optional) and your offer.
5. Save, open **Tracking**, select your own tracking domain and copy the **campaign URL**.

The campaign URL already contains every Reacheffect macro from the template, for example `clickId={tracking}` and `source={subid}`.

If you use a lander, its call-to-action must link to the ClickFlare **click URL**, not to the offer directly. Otherwise the visit reaches the offer without a ClickFlare click ID, and the conversion cannot be traced back to Reacheffect.

See [Creating a Campaign in ClickFlare](/docs/en/campaigns/creating-a-campaign-in-click-flare.md).

## Step 4 – Create the campaign in Reacheffect

1. In Reacheffect, create a campaign. On the **Basic** step choose the ad type and the payment type: CPM for popunder, banner, interstitial, video and redirects; CPC for push, in-page push and native.
2. Set the daily budget, a bid at or above the minimum for your GEOs, and your targeting.
3. Add an ad and paste the ClickFlare campaign URL as its **Destination URL**.
4. Save. The campaign goes to moderation, normally within one business day.

Paste the URL exactly as ClickFlare gives it. Reacheffect replaces each macro when the ad is clicked or shown.

## Step 5 – Test the integration

Reacheffect recommends one test conversion before you scale.

1. Click your own ad, or open the campaign URL with real values, and confirm the visit appears in ClickFlare with an **External ID** filled in. If it shows `{tracking}` as text, Reacheffect didn't replace the macro: check that you pasted the campaign URL into the ad's **Destination URL** exactly as ClickFlare gives it.
2. Complete the offer the way a real visitor would, or fire a test conversion through your affiliate network.
3. In ClickFlare, go to **Logs → Postback Status** and filter by the campaign. A successful request to Reacheffect's conversion URL confirms ClickFlare sent it.
4. In Reacheffect, open **Statistics** and check that the Conversions column fills. If it doesn't, open the **Rejected Postbacks** tab under **Tracking**:

| Reason | Fix |
| - | - |
| **Unknown or expired click ID** | The click ID didn't arrive or was changed. Check the `externalId` row and that the postback sends `cid={external_id}`. |
| **Duplicate** | Expected for one-off events. Tick **Allow repeats** on the conversion type for recurring ones. |
| **Inactive conversion type** | Activate the letter on the **Conversion Tracking** tab. |
| **Wrong account ID** | `pid` still says `REPLACE_WITH_ACCOUNT_ID`, or the ID is mistyped. Copy it from the **More Info** dialog again. |

***

## Tracking several events

Reacheffect counts each event as its own conversion type. Create one type per event, for example A for a sign-up and B for a deposit. Each gets its own postback, identical except for the `conv_type` letter:

```text theme={null}
https://go1.reacheffecti.work/conversion.go?pid=REPLACE_WITH_ACCOUNT_ID&cid={external_id}&conv_type=A&amount={payout}
https://go1.reacheffecti.work/conversion.go?pid=REPLACE_WITH_ACCOUNT_ID&cid={external_id}&conv_type=B&amount={payout}
```

1. In ClickFlare, create a [custom conversion](/docs/en/settings/custom-conversions.md) for each step, for example `signup` and `deposit`.
2. On the Reacheffect traffic source, click **+ Another postback URL** once per extra event.
3. Paste the template's URL into each, with your account ID, and set its letter. Map each postback to its ClickFlare event: `signup` to the `conv_type=A` URL, `deposit` to `conv_type=B`.
4. Test each event and check it in Reacheffect's **Statistics**.

> **Rules for conversion types**
>
> * By default, only one conversion per click is counted within 24 hours. Repeat postbacks with the same click ID are rejected as duplicates.
> * Tick **Allow repeats** on a conversion type for revshare or rebill events, where the same click keeps paying.
> * A conversion type must be **Active**, or its postbacks are rejected.
> * Postbacks are attributed to the click, not the session. A deposit days after the click still counts, as long as the click ID is the same.

> **Sending only one event**
>
> If Reacheffect should only learn from your final sale, keep a single postback and map it to that event. Earlier steps (sign-ups, add to carts) still show in ClickFlare. They just don't reach Reacheffect.
>
> To send a postback only for some conversions, for example only those above a certain payout, use **Event filter** under the postback to add conditions.

> **SmartCPA**
>
> SmartCPA is a bidding mode on popunder and banner campaigns. It adjusts bids toward a target cost per conversion, using the conversions your postback sends. Send the event you want to optimize toward, and keep sending it consistently.

## Cost

The template passes cost per click. The `cost` row sends `{paid}`, Reacheffect's macro for what you paid for this click or impression, and ClickFlare records it as the visit's cost.

On the campaign, set the **Cost Model** to **Not Tracked** so ClickFlare uses the cost passed in the URL.

> [!NOTE]
>
> On CPM formats (popunder, banner, interstitial, video, redirects) Reacheffect charges per thousand impressions. Check a few visits after launch: if `{paid}` carries the CPM rate rather than the price of one impression, ClickFlare's cost will be inflated 1,000 times.

If the cost macro doesn't work for your format, switch the Cost Model to **CPC** and enter your bid as the cost. On CPM formats (popunder, banner, interstitial, video, redirects), enter your CPM bid divided by 1,000. A popunder impression is roughly one visit.

ClickFlare has no cost integration for Reacheffect. When the recorded spend differs from your Reacheffect spend, correct it with a [manual cost upload](/docs/en/settings/manual-cost-upload.md). See [Cost Models](/docs/en/core-platform-concepts/cost-models.md).

## Delayed revenue

If you run search arbitrage (RSOC or AFD) behind Reacheffect, the feed reports revenue hours or days after the click. To pass that revenue to Reacheffect once it arrives, see [Sending Delayed Revenue to Traffic Sources](/docs/en/advanced-tracking-configuration/how-to-send-delayed-revenue-to-traffic-sources.md).

***

## Troubleshooting

> **No conversions reach Reacheffect at all**
>
> * **Traffic source postback URL** is off on the Reacheffect traffic source.
> * **Disable sending postbacks to traffic source** is on in the campaign.
> * The postback is mapped to a different event than the one the conversion logged. Check **Logs → Event Logs**.
> * Check **Logs → Postback Status**: a failed request shows the error or the status code returned.

> **Reacheffect rejects the conversions**
>
> Open the **Rejected Postbacks** tab under **Tracking**. It lists every refused call with its reason. The usual one is "Unknown or expired click ID": the External ID in ClickFlare is empty or contains the macro as text. Check that the `external_id` row still sends `{tracking}` and that the postback sends `cid={external_id}`. "Wrong account ID" means `pid` still says `REPLACE_WITH_ACCOUNT_ID` or is mistyped.

> **Columns show macros as text, or are empty**
>
> Reacheffect leaves macros it doesn't recognize in the URL, and some macros are empty for some formats or sources. If you edited a TS Token, compare it with the chips under the ad's **Destination URL** field. See [Traffic Source Tokens Arriving Empty](/docs/en/troubleshooting/tokens-arriving-empty.md).

For the general checklist, see [Conversions not showing](/docs/en/troubleshooting/conversions-not-showing.md).

***

**FREQUENTLY ASKED QUESTIONS**

> **Q1:** Can I use the same Reacheffect traffic source for all my Reacheffect campaigns?

**A1:** Yes. The postback is set once on the traffic source and every campaign using it sends conversions the same way. Create a second Reacheffect traffic source only if a campaign needs a different postback, for example a different conversion type.

> **Q2:** Why is it `clickId` in the campaign URL and `cid` in the postback?

**A2:** They are two halves of the same value. ClickFlare reads Reacheffect's click ID from its own `clickId` parameter. Reacheffect expects it back in its own `cid` parameter. Only the macro value matters on the campaign URL side.

> **Q3:** Reacheffect has guides for Voluum, Binom and other trackers, but not ClickFlare. Is that a problem?

**A3:** No. Every guide follows the same pattern: put the click ID macro in the tracker's external ID parameter, and send it back in `cid`. In ClickFlare that token is `{external_id}`.

> **Q4:** Should I use Redirect or Direct tracking with Reacheffect?

**A4:** Redirect is the usual choice and works with every Reacheffect format. Use Direct only if Reacheffect must see your lander's domain as the destination. See [Direct Campaign Tracking](/docs/en/campaigns/direct-campaign-tracking.md).

## Related

> **[Traffic source postbacks](/docs/en/tracking/how-to-configure-a-traffic-source-s2s-postback-url.md)**
>
> Every token you can use in a postback.

> **[Custom conversions](/docs/en/settings/custom-conversions.md)**
>
> Split sign-ups and deposits into separate events.

> **[Cost models](/docs/en/core-platform-concepts/cost-models.md)**
>
> How CPC, CPA and RevShare costs are calculated.

> **[Conversions not showing](/docs/en/troubleshooting/conversions-not-showing.md)**
>
> The general checklist when postbacks don't arrive.


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