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

# CrakRevenue and ClickFlare Integration Guide

> Track CrakRevenue offers in ClickFlare: pass the click ID in aff_sub, add a postback per offer, and keep SOI, DOI and PPS goals apart with txid.

![CrakRevenue and ClickFlare Integration](https://mintcdn.com/clickflare/VQTm_IbloDE7ntcf/images/integrations/covers/crakrevenue.png?fit=max\&auto=format\&n=VQTm_IbloDE7ntcf\&q=85\&s=a5522efe166a246b0e6cb762d62ab91f)

CrakRevenue is a CPA affiliate network for adult, dating and cam offers, with some mainstream offers too. It pays per lead (SOI and DOI), per sale (PPS), per install (CPI), on RevShare, and on **Multi-CPA** offers that pay SOI, DOI and PPS on the same offer. Its postback macros are the same set TUNE (HasOffers) networks use, so if you've set up a [TUNE network](/docs/en/integrations/tune-click-flare-integration-guide.md) before, most of this will look familiar.

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

* **The offer URL** sends the ClickFlare click ID to CrakRevenue in `aff_sub`.
* **The postback URL** sends it back to ClickFlare with every conversion, together with the payout and a transaction ID.

This guide covers the setup, offer versus global postbacks, offers with several goals, and testing.

> [!TIP]
>
> Only need the two values? The [Click ID & postback macros](/docs/en/integrations/click-id-and-postback-macros.md?q=crakrevenue) 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://your-crakrevenue-tracking-link.com/?...&aff_sub=CF_CLICK_ID
     (CrakRevenue stores the ClickFlare click ID in aff_sub)
  → Visitor signs up or buys on the advertiser's page
  → CrakRevenue fires your postback:
     https://trk.yourdomain.com/cf/cv?click_id=CF_CLICK_ID&payout=4.50&txid=CRAK_TRANSACTION-GOAL
     (ClickFlare matches the conversion to the original click)
```

The two links mirror each other:

| Link | Built from | CrakRevenue side | ClickFlare side |
| - | - | - | - |
| **Offer URL** (in ClickFlare) | CrakRevenue's parameter + ClickFlare's token | `aff_sub` | `{cf_click_id}` |
| **Postback URL** (in CrakRevenue) | ClickFlare's parameter + CrakRevenue's macro | `{aff_sub}`, `{payout}`, `{transaction_id}-{goal_id}` | `click_id`, `payout`, `txid` |

> [!NOTE]
>
> **Offer URL = their parameter + your token. Postback URL = your parameter + their macro.** CrakRevenue writes the click ID into `aff_sub` on the way in and reads it back with the `{aff_sub}` macro on the way out. If you put the click ID in another sub ID, such as `aff_sub2`, the postback has to read that same one.

***

## 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).
* A CrakRevenue affiliate account, with the offer's terms accepted. CrakRevenue only gives you a tracking link after you click **Agree** on the offer.
* For a global postback: a message to CrakRevenue support or your affiliate manager. Offer postbacks you add yourself.

***

## What the CrakRevenue template contains

ClickFlare has a **CrakRevenue** affiliate network template. It fills in the CrakRevenue macros ClickFlare needs.

![The CrakRevenue template in ClickFlare: Click Id is \{aff\_sub}, Payout is \{payout} and Transaction ID is \{transaction\_id}-\{goal\_id}](https://mintcdn.com/clickflare/PKYGC-ZYZsK7Zcur/images/integrations/crakrevenue/clickflare-crakrevenue-template-parameters.png?fit=max\&auto=format\&n=PKYGC-ZYZsK7Zcur\&q=85\&s=dc2385278f3d06ab2373d18684f32cb9)

| Field | CrakRevenue macro (AN Token) | ClickFlare parameter | What it does |
| - | - | - | - |
| **Click Id** | `{aff_sub}` | `click_id` | Returns the ClickFlare click ID that the offer URL put in `aff_sub`. Pre-filled by the template. |
| **Payout** | `{payout}` | `payout` | Your commission for the conversion. Pre-filled by the template. |
| **Transaction ID** | `{transaction_id}-{goal_id}` | `txid` | Unique per click and goal, so a DOI or a sale after a SOI counts as its own conversion. Pre-filled by the template. See [why](#why-the-transaction-id-includes-the-goal). |
| **Event Type** | leave empty, or set per goal | `ct` | The conversion type. See [Offers with several goals](#offers-with-several-goals). |

***

## 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 on every CrakRevenue offer too, or asking support to change your global postback. 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**.

CrakRevenue reports a conversion on the day it happened. With the default **Visit Timestamp**, ClickFlare reports it on the day of the original click, so a DOI or 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 CrakRevenue 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 **CrakRevenue** and pick the **CrakRevenue** template.
2. Keep the name, or add your account to it if you run more than one.
3. Check that **Transaction ID** is `{transaction_id}-{goal_id}`.
4. Leave **Event Type** empty.
5. Under **Conversion tracking**, select your own **Tracking Domain** and keep **S2S Postback URL** as the tracking method.
6. Set **Payout currency** to the currency your CrakRevenue account is paid in.

ClickFlare builds the postback URL from these fields:

```text theme={null}
https://trk.yourdomain.com/cf/cv?click_id={aff_sub}&payout={payout}&txid={transaction_id}-{goal_id}
```

![The Conversion tracking section of the CrakRevenue network in ClickFlare, with the generated postback URL: click\_id=\{aff\_sub}, payout=\{payout} and txid=\{transaction\_id}-\{goal\_id}](https://mintcdn.com/clickflare/PKYGC-ZYZsK7Zcur/images/integrations/crakrevenue/clickflare-crakrevenue-postback-url.png?fit=max\&auto=format\&n=PKYGC-ZYZsK7Zcur\&q=85\&s=1d0a006d91db40fea7f856a9a41f8596)

Copy the postback URL and save the network.

**5. Get the offer's tracking link from CrakRevenue**

In CrakRevenue, go to **Offers**, find the offer and open it. Accept its terms with **Agree**. The link generator, **Link Customization**, then builds your tracking link. In it you can:

* pick an auto-optimized landing page or choose one yourself,
* pick creatives,
* add a **source** and **Sub IDs**. Values you type there appear in the link.

Either type `{cf_click_id}` into the first Sub ID field, or leave the sub IDs empty and add the click ID in ClickFlare in the next step. If you type it here, check that the generated link contains `aff_sub={cf_click_id}`. If the value lands in another parameter, such as `aff_sub2`, change the template's **Click Id** to match, for example `{aff_sub2}`.

**6. Create the offer in ClickFlare**

In the offer form:

1. Name the offer.
2. Select the CrakRevenue affiliate network you just created.
3. Paste the CrakRevenue link into **Offer URL**. If it doesn't have `aff_sub` yet, add `&aff_sub={cf_click_id}` at the end, or `?aff_sub={cf_click_id}` if the link has no `?`:

```text theme={null}
https://your-crakrevenue-tracking-link.com/?...&aff_sub={cf_click_id}
```

![The ClickFlare New Offer form with the CrakRevenue affiliate network selected and aff\_sub=\{cf\_click\_id} in the Offer URL](https://mintcdn.com/clickflare/PKYGC-ZYZsK7Zcur/images/integrations/crakrevenue/clickflare-crakrevenue-offer-url.png?fit=max\&auto=format\&n=PKYGC-ZYZsK7Zcur\&q=85\&s=c136dc9899d48d9b4c86d95d183adbad)

If you pasted the link without `aff_sub`, you can turn on **Append Click ID to Offer Url** instead. ClickFlare then adds `aff_sub={cf_click_id}` from the template. Use one or the other, not both, and leave the toggle off if the link already has `aff_sub` from the Sub ID field.

> [!WARNING]
>
> Write `{cf_click_id}` with braces. Without them CrakRevenue 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. Payouts differ per goal on Multi-CPA offers and per sale on RevShare, so a fixed payout would be wrong.

**7. Add the postback in CrakRevenue**

Back in CrakRevenue, open the same offer and expand **Postbacks options**. Then:

1. Leave **Goal** on **Default**. On offers with several goals, see [Offers with several goals](#offers-with-several-goals) first.
2. Choose **https** if your tracking domain has SSL, otherwise **http**.
3. In **Type your postback URL here**, paste the rest of the ClickFlare postback URL, without the `https://` part. **Add Optional Variables** inserts CrakRevenue macros if you want to add more, for example `&param1={offer_id}`.
4. Click **Create Postback**.

Offer postbacks are self-serve: you add them yourself, offer by offer. For one postback on all your offers, see [Offer postback or global postback](#offer-postback-or-global-postback).

**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 CrakRevenue 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).

***

## Offer postback or global postback

CrakRevenue has two ways to place your postback:

| | Offer postback | Global postback |
| - | - | - |
| **Covers** | One offer, one goal | All your offers |
| **Who sets it up** | You, under **Postbacks options** on the offer | CrakRevenue support or your affiliate manager |
| **To change it** | Edit it on the offer | Contact support |

CrakRevenue calls the global postback its most reliable tracking option. To get one, send the ClickFlare postback URL to CrakRevenue support (chat or [support@crakrevenue.com](mailto:support@crakrevenue.com)) or to your affiliate manager.

> [!WARNING]
>
> Use one or the other, not both. With a global postback **and** an offer postback, CrakRevenue sends the conversion twice. ClickFlare keeps one of them only if both carry the same `txid`, so if you switch to a global postback, remove your offer postbacks.

A global postback may only fire for an offer's default goal. Ask support whether yours also fires for DOI and PPS goals on Multi-CPA offers. If it doesn't, add offer postbacks only for the goals it doesn't cover.

***

## Why the transaction ID includes the goal

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` parameter tells ClickFlare that each postback is a separate conversion, so its value has to be **different on every conversion**.

CrakRevenue's macros follow TUNE's. In TUNE, `{transaction_id}` is the ID of the **click session**, not of the conversion: a SOI, a DOI and a sale on the same click all carry the same value. Adding `{goal_id}` makes it unique per click and goal. The [TUNE guide](/docs/en/integrations/tune-click-flare-integration-guide.md) explains this in more detail.

| CrakRevenue macro | Value | Use it as txid? |
| - | - | - |
| `{transaction_id}-{goal_id}` | The click session plus the goal | **Yes**: the template's default |
| `{transaction_id}` | The click session, the same for every goal on the click | Only on single-goal offers |
| `{ran}` | A random number, new on every send | No: a resent postback counts twice |

CrakRevenue's macro list has no conversion ID.

### RevShare and repeat purchases

RevShare offers pay for as long as the user spends, including token and credit purchases. CrakRevenue doesn't document whether each purchase or rebill fires your postback. If it does, every purchase on the same click and goal carries the same `{transaction_id}-{goal_id}`, and ClickFlare keeps only the last one received.

If you run RevShare offers and need each purchase in ClickFlare, ask your affiliate manager whether purchases fire the postback and whether any macro is unique per purchase. Until then, compare RevShare earnings with CrakRevenue's own stats.

***

## Offers with several goals

On a **Multi-CPA** offer, one offer pays on several goals: SOI (single opt-in), DOI (double opt-in) and PPS (a sale). Each goal has its own goal ID and its own payout. In **Postbacks options**, the **Goal** dropdown attaches a postback to one goal.

* **Start with Goal on Default**, which is what CrakRevenue's own instructions say. With `txid={transaction_id}-{goal_id}`, each goal that fires arrives as its own conversion, and the payout tells them apart.
* **If DOI or PPS conversions don't reach ClickFlare**, the default postback isn't firing for those goals. Add one postback per goal: open **Postbacks options** again, pick the goal in **Goal**, and paste the same URL.
* **To report each goal as its own column** in ClickFlare, give each goal's postback its own `&ct=` and a [custom conversion](/docs/en/settings/custom-conversions.md) parameter at the end:

```text theme={null}
https://trk.yourdomain.com/cf/cv?click_id={aff_sub}&payout={payout}&txid={transaction_id}-{goal_id}&ct=doi
```

> [!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.

***

## Pending and rejected conversions

CrakRevenue has no status macro and doesn't document a postback for rejected conversions or chargebacks. Treat ClickFlare's numbers as recorded conversions, and compare them with CrakRevenue's stats before payday.

***

## Verify the setup

**1. Click through the campaign**

Open the ClickFlare campaign URL (with a lander, also click the CTA). When the offer loads, the first request goes to the CrakRevenue tracking link. Check that it has `aff_sub=` followed by a real ClickFlare click ID, not the literal text `{cf_click_id}`. The offer you land on can change with your country and device, because CrakRevenue applies the offer's targeting.

**2. Test the postback**

CrakRevenue doesn't document a postback test tool for affiliates. Ask your affiliate manager to fire a test conversion on your click. To check the ClickFlare side on its own, open the postback URL in your browser with the click ID from the previous step and real values in place of the macros.

**3. Check the conversion in ClickFlare**

The conversion should appear on the campaign with the payout from CrakRevenue. In **Logs → Event Logs**, check that its `txid` has the transaction ID and the goal. If you see `{goal_id}` literally, the macro wasn't replaced: check the spelling in the postback.

***

## Troubleshooting

> **Conversions show in CrakRevenue but not in ClickFlare**
>
> Work through these in order:
>
> * **The postback is on another offer or goal.** Offer postbacks cover one offer and one goal. Open **Postbacks options** on the offer you're running.
> * **aff\_sub is empty in CrakRevenue.** The offer URL is missing `aff_sub={cf_click_id}`, or the lander CTA links straight to CrakRevenue instead of using the ClickFlare click URL.
> * **The sub ID doesn't match.** The click ID went into `aff_sub2` but the postback reads `{aff_sub}`, or the other way around.
> * **You're waiting for a global postback.** Check with support that it was set up, and on which goals.
>
> See [Troubleshooting S2S postbacks](/docs/en/tracking/troubleshooting-s2s-postback-url-in-clickflare.md) for the general checks.

> **A SOI shows but the DOI or sale doesn't**
>
> Either the postback isn't attached to that goal, or the transaction ID has no goal in it. Check that the ClickFlare network and the CrakRevenue postback both use `{transaction_id}-{goal_id}`, then add a postback for the missing goal. Conversions that were already merged are not restored.

> **Conversions are counted twice**
>
> You have a global postback and an offer postback for the same offer, or two postbacks on the same goal. Remove the extra one. CrakRevenue warns against keeping offer postbacks next to a global one.

> **ClickFlare receives a literal macro**
>
> * A literal `{transactionid}` or similar means the macro is misspelled. Use CrakRevenue's own spelling from **Add Optional Variables**: `{transaction_id}`, with an underscore. Some tracker guides write `{transactionid}`, which CrakRevenue's list doesn't have.
> * A literal `cf_click_id` means the offer URL in ClickFlare has the token without braces. It must be `{cf_click_id}`.

> **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.
> * Use `{payout}`, not `{sale_amount}`: `{sale_amount}` is what the advertiser earned.
> * Set the affiliate network's **Payout currency** to your account's currency. To check what CrakRevenue sends, add `&param1={currency}` to the postback: it returns a 3-letter currency code.

***

## FAQ

> **Does this work with CrakRevenue's Smartlink?**
>
> The Smartlink routes each visitor to one of hundreds of offers and supports custom Sub IDs. CrakRevenue doesn't document whether Smartlink conversions use the same postback macros. Pass `{cf_click_id}` in `aff_sub` the same way, and ask your affiliate manager which postback, offer or global, covers Smartlink conversions.

> **Can I pass more data to CrakRevenue?**
>
> Yes. Use `aff_sub2` to `aff_sub5` and `source` in the offer URL, for example `aff_sub2={campaign_id}&source={trackingField1}`. CrakRevenue shows them in its stats. Keep `aff_sub` for the click ID.

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

***

## Related

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

> **[TUNE guide](/docs/en/integrations/tune-click-flare-integration-guide.md)**
>
> Same macro set

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


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