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

# AdCombo and ClickFlare Integration Guide

> Track AdCombo offers in ClickFlare: pass the click ID in clickid, put the postback in Postback for lead, and count only confirmed COD orders.

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

AdCombo is a CPA network running since 2014, known mainly for **COD** (cash on delivery) nutra offers. It also runs Split Sale (SS) offers and covers dating, iGaming and e-commerce, on its own in-house tracking platform. On a COD offer the visitor fills in an order form and the order goes to the advertiser's call center as a **hold**. Only when the call center confirms the order does it become billable. Cancelled and fake orders are rejected.

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

* **The offer URL** sends the ClickFlare click ID to AdCombo in `clickid`.
* **The postback URL** sends it back to ClickFlare with the payout and the order's transaction ID.

> [!TIP]
>
> Only need the two values? The [Click ID & postback macros](/docs/en/integrations/click-id-and-postback-macros.md?q=adcombo) 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://adcombo-tracking-domain.pro/?target=...&clickid=CF_CLICK_ID
     (AdCombo stores the ClickFlare click ID)
  → Visitor submits the order form: the order is on hold
  → Call center confirms the order
  → AdCombo fires "Postback for lead":
     https://trk.yourdomain.com/cf/cv?click_id=CF_CLICK_ID&payout=21.00&txid=ADCOMBO_TRANS_ID
     (ClickFlare matches the conversion to the original click)
```

The two links mirror each other:

| Link | Built from | AdCombo side | ClickFlare side |
| - | - | - | - |
| **Offer URL** (in ClickFlare) | AdCombo's parameter + ClickFlare's token | `clickid` | `{cf_click_id}` |
| **Postback URL** (in AdCombo) | ClickFlare's parameter + AdCombo's macro | `{clickid}`, `{revenue}`, `{trans_id}` | `click_id`, `payout`, `txid` |

> [!NOTE]
>
> **Offer URL = their parameter + your token. Postback URL = your parameter + their macro.** AdCombo's parameter is `clickid`, lowercase with no underscore.

***

## 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 AdCombo affiliate account with access to the offer you want to run. Offers with the **VIP** access type need approval first.

***

## What the AdCombo template contains

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

![The AdCombo template in ClickFlare: Click Id is \{clickid}, Payout is \{revenue} and Transaction ID is \{trans\_id}](https://mintcdn.com/clickflare/Yhae9Jga7DowS_ZL/images/integrations/adcombo/clickflare-adcombo-template-parameters.png?fit=max\&auto=format\&n=Yhae9Jga7DowS_ZL\&q=85\&s=822ea9852eb8f49d0fe0e7604801bf7b)

| Field | AdCombo macro (AN Token) | ClickFlare parameter | What it does |
| - | - | - | - |
| **Click Id** | `{clickid}` | `click_id` | Returns the ClickFlare click ID that the offer URL put in `clickid`. |
| **Payout** | `{revenue}` | `payout` | Your commission for the order, as a decimal (for example `21.0`). |
| **Transaction ID** | `{trans_id}` | `txid` | AdCombo's transaction ID for the order. See [why](#why-the-transaction-id-matters). |
| **Event Type** | leave empty | `ct` | The conversion type. Leave it empty for the recommended setup. |

***

## 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 AdCombo 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**.

On COD offers, the confirmation comes hours or days after the click. With the default **Visit Timestamp**, ClickFlare reports the conversion on the day of the original click, so past days keep changing as confirmations arrive, and the dates don't match AdCombo's. 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 AdCombo 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 **AdCombo** and pick the template.
2. Check that **Click Id** is `{clickid}`, **Payout** is `{revenue}` and **Transaction ID** is `{trans_id}`.
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 AdCombo pays you in.

ClickFlare builds the postback URL from these fields:

```text theme={null}
https://trk.yourdomain.com/cf/cv?click_id={clickid}&payout={revenue}&txid={trans_id}
```

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

Copy the postback URL and save the network.

**5. Get the tracking link in AdCombo**

AdCombo gives you a link in one of two ways:

* **Straight from the offer.** Open the **Offers** tab and select the offer. The tracking link fills in on the offer page. Copy it with the copy button.
* **Through a campaign.** In **My Campaigns**, create a campaign with the offer. In the offer's **URL Builder** tab, choose the landers or prelanders and click **Create Campaign**. The **Tracking URL** field updates. One campaign link can rotate several offers and landers.

> [!WARNING]
>
> Copy the campaign link as soon as it appears. MGID's AdCombo guide warns that the URL Builder link isn't kept after saving.

The URL Builder also has **Subaccount 1–4** fields (`subacc` to `subacc4`). Keep them for your own values. Don't put the click ID there: the template reads it from `clickid`.

The link looks like this. The domain varies by account:

```text theme={null}
https://adcombo-tracking-domain.pro/?target=-7EBNQ...&ap=-1
```

**6. Create the offer in ClickFlare**

In the offer form:

1. Name the offer.
2. Select the AdCombo affiliate network you just created.
3. Paste the AdCombo link into **Offer URL**.
4. Turn on **Append Click ID to Offer Url**. ClickFlare adds `clickid={cf_click_id}`, which is the parameter AdCombo expects.

The link ClickFlare sends visitors to then looks like this:

```text theme={null}
https://adcombo-tracking-domain.pro/?target=-7EBNQ...&ap=-1&clickid={cf_click_id}
```

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

If you'd rather write the parameter yourself, add `&clickid={cf_click_id}` to the end of the URL and leave the toggle off. Use one way only, or `clickid` appears twice.

> [!WARNING]
>
> Write `{cf_click_id}` with braces. Without them AdCombo 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.

**7. Add the postback in AdCombo**

AdCombo's global postback page has three fields: **Postback for lead**, **Postback for hold** and **Postback for reject**. AdCombo's own blog places it under the **Settings** tab, **General** section. More recent tracker guides name it **Postbacks → Settings**. Use whichever your dashboard shows. Then:

1. Paste the ClickFlare postback URL into **Postback for lead** only.
2. Leave **Postback for reject** empty. **Postback for hold** is optional; see [Which postback field to use](#which-postback-field-to-use).
3. Turn on **Use only global postbacks** if you want this postback to apply to all your AdCombo campaigns without adding it to each one.
4. Save.

> [!WARNING]
>
> In AdCombo, **"lead" means a confirmed order**, not a new one. **Postback for lead** fires when the call center confirms the order and the payout is added to your account. That's the field ClickFlare belongs in.

Each offer or campaign also has a **Postback/Pixel** tab for its own postback. If you run AdCombo with several trackers or traffic sources, you can turn the global option off and set the ClickFlare postback per campaign instead. How AdCombo handles a campaign that has both isn't documented publicly. If you mix them, ask your AdCombo manager which one fires.

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

AdCombo offers usually come with their own landers and prelanders. If you use your own lander instead, its CTA must use the **ClickFlare click URL**, not the AdCombo 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).

***

## Which postback field to use

An AdCombo order moves through these stages. Each postback field fires on one of them:

| AdCombo field | Fires when | Paid? | Send to ClickFlare? |
| - | - | - | - |
| **Postback for hold** | A new order reaches the call center and isn't confirmed yet. | Not yet | Optional, with care |
| **Postback for lead** | The call center confirmed the order. | **Yes** | **Yes** |
| **Postback for reject** | The order was cancelled, or was trash (fake or invalid data). | No | **Never** |

There's no separate trash field: trash orders go through the reject postback.

### Recommended: Postback for lead only

Put the ClickFlare URL in **Postback for lead** and nowhere else. ClickFlare then receives a postback only for confirmed orders, so every conversion in your reports is one AdCombo pays you for, with the real payout. Cancelled and fake orders never reach ClickFlare.

The trade-off is timing. Conversions show up only after the call-center cycle, hours or days after the click. Judge a campaign on yesterday's or last week's numbers, not the last hour.

### Why never Postback for reject

ClickFlare doesn't read a status. Every postback it receives counts as a conversion. It decides whether a postback is a new conversion or an update by the click ID and the transaction ID:

* **Same click ID, same txid:** the later postback replaces the earlier one. The last one received wins.
* **Same click ID, different txid:** both count as separate conversions.

So a reject postback can only hurt. If `{trans_id}` stays the same for an order as it moves through statuses, the reject replaces your confirmed conversion and still counts as a conversion. If it changes, the reject is added as an extra conversion. Either way your reports show a sale that AdCombo didn't pay for.

### Optional: also Postback for hold

You can paste the same ClickFlare URL into **Postback for hold** to see order volume as soon as it comes in. Know what happens first:

* **Holds that are later confirmed** should be counted once. The confirmed postback carries the same click ID and, most likely, the same `{trans_id}`, so it replaces the hold. AdCombo doesn't document that `{trans_id}` is the same across statuses. Compare the hold and lead postbacks for one order in ClickFlare's **Logs → Event Logs** before you rely on it.
* **Holds that are later rejected stay counted.** With no reject postback, nothing replaces them, so they stay in ClickFlare as conversions.
* **The payout on a hold is unknown.** Whether AdCombo fills `{revenue}` on a hold postback, and with what, isn't documented. Check a hold postback before trusting revenue in ClickFlare.

***

## Why the transaction ID matters

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 keeps only the last one received. The `txid` parameter tells ClickFlare which postbacks belong to the same conversion and which are different ones.

`{trans_id}` is AdCombo's only transaction-type macro. When it resolves it is numeric, and it most likely identifies the order:

* **Two orders from the same click** have different `{trans_id}` values, so ClickFlare counts both.
* **A resent postback** for the same order carries the same `{trans_id}`, so ClickFlare doesn't count it twice.

Without a transaction ID, two orders from the same click merge into one.

***

## 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 AdCombo tracking domain. Check that it has `clickid=` followed by a real ClickFlare click ID, not the literal text `{cf_click_id}`.

**2. Check the click in AdCombo**

In AdCombo's statistics, check that the click is recorded and carries the ClickFlare click ID. If it's missing there, no postback can be matched.

**3. Check the postback**

We found no public postback test tool in AdCombo, and on the recommended setup a postback only fires after a real call-center confirmation. Don't submit fake orders: they waste the call center's time and end up as trash. Instead:

* Wait for the first confirmed order and look for it in ClickFlare.
* To check the URL itself right away, copy it, replace the macros with a real ClickFlare click ID from your test click, a payout and any test ID, and open it in your browser. This records a test conversion in ClickFlare.

**4. Check the conversion in ClickFlare**

The conversion should appear on the campaign with the payout from AdCombo. In **Logs → Event Logs**, check that it arrived with a `txid` and no literal macros.

***

## Troubleshooting

> **Confirmed orders show in AdCombo but not in ClickFlare**
>
> Work through these in order:
>
> * **The postback is in the wrong field.** It must be in **Postback for lead**. A URL in **Postback for hold** alone fires only for new orders.
> * **The postback wasn't applied to the campaign.** If you rely on the global postback, check **Use only global postbacks**. If you use per-campaign postbacks, check the campaign's **Postback/Pixel** tab.
> * **The click ID didn't reach AdCombo.** The offer URL is missing `clickid={cf_click_id}`, or your lander's CTA links straight to AdCombo instead of using the ClickFlare click URL.
> * **The order hasn't been confirmed yet.** A hold fires nothing on the recommended setup.
>
> See [Troubleshooting S2S postbacks](/docs/en/tracking/troubleshooting-s2s-postback-url-in-clickflare.md) for the general checks.

> **ClickFlare receives a literal macro instead of a value**
>
> AdCombo sends a macro as literal text when it has no value for it. A literal `{clickid}` means the click ID wasn't on the link the visitor actually clicked. Check the offer URL and your lander's CTA. A literal `cf_click_id` means the offer URL has the token without braces.

> **ClickFlare shows more revenue than AdCombo pays**
>
> The ClickFlare URL is in **Postback for hold** or **Postback for reject**, so unconfirmed or cancelled orders count as conversions, and a reject can replace a confirmed sale. Keep it in **Postback for lead** only. Conversions already recorded stay in ClickFlare, so adjust past days by hand.

***

## FAQ

> **Why clickid and not a Subaccount field?**
>
> `clickid` is AdCombo's dedicated parameter for tracker click IDs, and it's what the template reads back with `{clickid}`. Every major tracker uses it. The Subaccount fields (`subacc` to `subacc4`) stay free for your own data.

> **Can I pass more data to AdCombo?**
>
> Yes. Add Subaccount parameters to the offer URL, for example `&subacc={campaign_id}&subacc2={trackingField1}`, and see them in AdCombo's statistics. Keep `clickid` for the click ID.

> **Can I send the conversion back to my traffic source?**
>
> Yes. Once ClickFlare records the AdCombo conversion, it can send it to the traffic source through the traffic source's postback or conversion API integration. With **Postback for lead** only, the traffic source optimizes for confirmed orders, which is usually what you want on COD.

***

## Related

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

> **[Dr.Cash](/docs/en/integrations/dr-cash-click-flare-integration-guide.md)**
>
> Another COD nutra network

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