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

# Kadam Conversion Tracking & Postback Setup

> Set up Kadam conversion tracking in ClickFlare: click_id and cpc macros, and the kdtrk.net postback that returns the click ID in data.

![Kadam traffic source template](https://mintcdn.com/clickflare/JnEca3lx3v_LxcNj/images/integrations/covers/templates/kadam.png?fit=max\&auto=format\&n=JnEca3lx3v_LxcNj\&q=85\&s=c61cac6bade298204aeec231ffaab691)

Kadam is a self-serve advertising network selling native, banner, push, popunder and video traffic. You buy it on CPC, CPM or CPA Target pricing. This guide sets up Kadam as a traffic source in ClickFlare. It covers passing Kadam's click data and click cost into your reports and sending conversions back to Kadam, so its statistics and its CPA Target bidding see the same results you do.

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

## At a glance

| | |
| - | - |
| **Ad formats** | Native, banner, push, in-page push, popunder, video |
| **Click ID macro** | `{click_id}`, a unique value Kadam generates for each click |
| **Conversion tracking** | S2S postback to `kdtrk.net` |
| **Payout passed back** | No. Kadam's postback has no revenue parameter. Its optional `cost` parameter changes the conversion cost. See [Optional postback parameters](#optional-postback-parameters). |
| **What you replace** | Nothing. The template's postback works as it is. |
| **Multiple events** | One conversion type per postback. Statuses (hold, approved, rejected) are optional. |
| **Cost** | Passed per click with `{cpc}`. Cost Model: **Not Tracked**. |
| **Conversion API** | No |

## How it works

**1. Kadam sends the click**

A visitor clicks your ad. Kadam opens your ClickFlare campaign URL and fills in its macros: the click ID in `click_id`, the click cost in `cpc`, plus the campaign, site, ad, country, browser, OS, device and price model.

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

ClickFlare saves the value of `click_id` 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 Kadam**

ClickFlare fires the Kadam postback, replacing `{external_id}` with the stored Kadam click ID. Kadam matches it to the original click and records a confirmed conversion.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`click_id`) and *Kadam's* macro (`{click_id}`). The template does this for you. In the **postback URL** you write *Kadam's* parameter (`data`) 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).
* **Choose your Kadam payment model.** CPC and CPM work with every format. **CPA Target** is limited to push, in-page push and popunder, and it needs the postback, because Kadam's smart bidding optimizes toward the conversions it receives.
* **Decide which conversion Kadam should receive.** Kadam counts every postback as one conversion. If your funnel has several steps, choose the one Kadam should optimize on. See [Sending one event](#sending-one-event).

***

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

1. Go to **Campaigns** and click **New**.
2. In **Traffic Source**, open the dropdown and click **+ New Traffic Source**.
3. Type `kadam` in the search box and select the **Kadam** template.
4. Enter a **Name**, for example `Kadam`.
5. Set **Cost currency** to the currency of your Kadam campaigns. `{cpc}` arrives in the currency selected for the campaign.

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

| Name | TS Parameter | TS Token (Kadam macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| External ID | `click_id` | `{click_id}` | `{external_id}` | Kadam's click ID. Required for the postback. |
| Cost | `cpc` | `{cpc}` | `{cost}` | The click cost in the campaign's currency. See [Cost](#cost). |
| Campaign ID | `campaign_id` | `{campaign_id}` | `{trackingField1}` | The Kadam campaign ID |
| Site ID | `site_id` | `{site_id}` | `{trackingField2}` | The publisher website that showed the ad |
| Ad ID | `ad_id` | `{ad_id}` | `{trackingField3}` | The ad (creative) |
| Country | `country_code` | `{country_code}` | `{trackingField4}` | The visitor's country code |
| Region | `subdivision` | `{subdivision}` | `{trackingField5}` | The visitor's region |
| Page Category | `page_cat_id` | `{page_cat_id}` | `{trackingField6}` | The category of the page where the ad was shown |
| Browser | `browser` | `{browser}` | `{trackingField7}` | The browser name |
| OS | `platform` | `{platform}` | `{trackingField8}` | The operating system. Note the parameter is `platform`. |
| Device | `device` | `{device}` | `{trackingField9}` | The device name |
| Price Model | `price_model` | `{price_model}` | `{trackingField10}` | The campaign's payment model |

![The Kadam template's Parameters table in ClickFlare, with Kadam's macros pre-filled](https://mintcdn.com/clickflare/JnEca3lx3v_LxcNj/images/integrations/templates/kadam/parameters.png?fit=max\&auto=format\&n=JnEca3lx3v_LxcNj\&q=85\&s=9921410e511849e5c9a9939360b0080b)

Each tracking field becomes a column you can group reports by. `site_id` is the one you will use most: it tells you which publisher sites convert, so you can block them or raise their bids in Kadam. `ad_id` tells you which creative won.

> [!WARNING]
>
> Don't change or remove the **External ID** row. Kadam generates a unique `{click_id}` for each click, and the postback must return exactly that value. Without it in the campaign URL, Kadam cannot match any conversion.

To pass more Kadam data, click **Add Parameter**, give it a name and parameter, and enter the Kadam macro as the **TS Token**. ClickFlare assigns the next free tracking field. Kadam also offers `{city}`, `{keywords}` (page keywords, filled only when the source provides them), `{sub_age}` (the push subscription age), `{language}` and `{platform_version}`.

## Step 2 – Set up the postback

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

### How Kadam's postback works

Kadam has one postback endpoint for all advertisers. It doesn't need an account ID or a goal name. Kadam's format is:

```text theme={null}
http://kdtrk.net/ru/postback/?data={subid}
```

`data` carries the click ID that Kadam passed in the ad link. In Kadam's example, `{subid}` stands for whatever tracker or affiliate token holds that click ID. In ClickFlare, that token is `{external_id}`.

### Add the template's postback in ClickFlare

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://kdtrk.net/ru/postback/?data={external_id}
```

There's nothing to replace. `{external_id}` is a ClickFlare token, filled with the Kadam click ID stored from the visit. The template uses `https`. Kadam's help center writes `http`, and both work.

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 `purchase`), choose that instead.
4. Click **Save**. You are back in the campaign editor with the Kadam traffic source selected.

![The Traffic source postback URL switched on, showing the Kadam template's postback](https://mintcdn.com/clickflare/JnEca3lx3v_LxcNj/images/integrations/templates/kadam/postback.png?fit=max\&auto=format\&n=JnEca3lx3v_LxcNj\&q=85\&s=761bfa2597da0790871a760b237e49b0)

A postback without a `status` parameter counts as a confirmed conversion. On CPA campaigns it is charged. Don't fire the postback for conversions you later reject, or use the `status` parameter below.

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

### Optional postback parameters

Kadam reads four optional parameters. The template leaves them out on purpose. Add them to the end of the URL only if you need them.

| Parameter | Values | What it does |
| - | - | - |
| `status` | `hold`, `approved`, `reject` | Sets the conversion status. Without it, the conversion is confirmed. |
| `cost` | A number, for example `200` | Overrides the conversion cost set in the campaign. Without it, Kadam uses the cost from the campaign settings. |
| `currency` | `USD`, `EUR`, `UAH`, `KZT` | The currency of `cost` |
| `key` | A unique value per conversion | Lets Kadam count repeat conversions from the same click, such as repeat orders or RevShare deposits. Without it, duplicates aren't counted. |

> [!WARNING]
>
> `cost` is not a revenue field. On a **CPA Target** campaign with **Receive conversion cost from postback** turned on, Kadam switches from your **Cost Per Action** to the cost the postback sends. Add `&cost={payout}` only if you want your payout to set that cost.

To count repeat conversions, add a `key` with a value that is unique for each conversion, for example `&key={txid}` if your affiliate network sends a transaction ID to ClickFlare.

## 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 Kadam passes. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for Kadam's push and popunder 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 Kadam macro from the template, for example `click_id={click_id}` and `cpc={cpc}`.

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 Kadam.

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

## Step 4 – Create the campaign in Kadam

1. In Kadam, click **Create Campaign**.
2. Select the ad format and click **Next**. The format can't be changed after the campaign is saved.
3. Choose the payment model: CPC, CPM or **CPA Target**.
4. Paste the ClickFlare campaign URL into **Campaign URL**.
5. Set your countries and bids, targeting, limits, budget and schedule. On CPA Target, set your **Cost Per Action**.
6. Leave the conversion status template empty. It maps an affiliate program's statuses, and ClickFlare sends no status unless you add one.
7. Click **Create**, then add your ads.

Paste the URL exactly as ClickFlare gives it. Kadam replaces each macro in curly braces when the ad is clicked.

## Step 5 – Test the integration

Kadam recommends a test conversion before you launch, so no real conversions are lost.

1. Open your Kadam account in an incognito or private window and log in there.
2. Go to **Campaigns** and click the campaign name to open its ads. Click the three dots under the ad ID and copy the test conversion link.
3. Paste the link into the same incognito window. It only opens while you are logged in there.
4. Complete the offer the way a real visitor would, for example a registration or an order.
5. In ClickFlare, check the visit. The **External ID** should hold a Kadam click ID, not the literal text `{click_id}`. Then go to **Logs → Postback Status** and filter by the campaign. A successful request to `kdtrk.net` confirms ClickFlare sent it.
6. In Kadam, go to **Statistics → The postback log**. A **Test** conversion in the list means it worked. Hovering over its question mark confirms you can launch.

If the test conversion doesn't arrive, check the integration and repeat the test.

***

## Sending one event

Kadam's postback has no event name. Every postback counts as the same kind of conversion. If your funnel has several steps (lead, then sale), choose the one Kadam should learn from.

> **Mapping the postback to one event**
>
> 1. In ClickFlare, create a [custom conversion](/docs/en/settings/custom-conversions.md) for the step Kadam should receive, for example `purchase`.
> 2. On the Kadam traffic source, choose that custom conversion in the dropdown next to the postback.
> 3. Earlier steps still show in ClickFlare. They just don't reach Kadam.
>
> 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.

> **Conversion statuses**
>
> Kadam accepts `&status=hold`, `&status=approved` and `&status=reject`. Without a status, a conversion is confirmed straight away. If your offer approves or rejects conversions later and you want Kadam to follow, ask Kadam support how a later status is matched to the first postback before you add status postbacks. Kadam's help center doesn't describe status updates.

## Cost

The template passes cost per click. The `cpc` row sends Kadam's `{cpc}` macro, which is the click cost in the currency selected for the campaign, 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. See [Cost Models](/docs/en/core-platform-concepts/cost-models.md).

> [!NOTE]
>
> `{cpc}` is documented as the click cost. On CPM campaigns you pay per 1,000 impressions, and Kadam doesn't say what `{cpc}` holds there. After launch, compare ClickFlare's **Cost** column with your Kadam spend. If it doesn't match, switch the Cost Model to **CPC** and enter your CPM bid divided by 1,000 as the cost value. A popunder or push impression is roughly one visit.

On **CPA Target** campaigns, Kadam's smart bidding adjusts your click bids toward your target cost per action. Compare the recorded cost with your Kadam spend in the first days, the same way.

When the recorded spend differs from your Kadam spend, correct it with a [manual cost upload](/docs/en/settings/manual-cost-upload.md). See also [Traffic Source Cost Tracking](/docs/en/tracking/how-to-setup-traffic-source-cost-tracking.md).

## Delayed revenue

If you run search arbitrage (RSOC or AFD) behind Kadam, the feed reports revenue hours or days after the click. ClickFlare can fire the postback once the revenue arrives. Kadam's postback carries no revenue, but it still counts the conversion. See [Sending Delayed Revenue to Traffic Sources](/docs/en/advanced-tracking-configuration/how-to-send-delayed-revenue-to-traffic-sources.md).

***

## Troubleshooting

> **The test conversion doesn't appear in the postback log**
>
> * The test link wasn't opened in the incognito window where you are logged in to Kadam.
> * The campaign URL in Kadam is missing `click_id={click_id}`, or the macro was edited. Copy the URL from ClickFlare again.
> * The postback uses `{click_id}` or Kadam's `{subid}` instead of ClickFlare's `{external_id}`. ClickFlare doesn't know those tokens and sends them as literal text.
> * The **External ID** row was removed from the traffic source.

> **Conversions show in ClickFlare but not in Kadam**
>
> * **Traffic source postback URL** is off on the Kadam 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** to see which event was recorded.
> * Check **Logs → Postback Status**: a failed request shows the status code Kadam returned.

> **Kadam counts fewer conversions than ClickFlare**
>
> Kadam ignores repeat conversions from the same click unless the postback has a `key`. Add `&key=` with a value unique per conversion. Also check for postbacks sent with `&status=reject`.

> **Site or ad columns are empty**
>
> The macros were not replaced, usually because the URL was edited. Paste the campaign URL from ClickFlare unchanged. `{keywords}` stays empty on sources that don't provide keywords. 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 Kadam traffic source for all my Kadam campaigns?

**A1:** Yes. Kadam's postback has no account or campaign ID, so one traffic source covers every campaign. Create a second one only if a campaign needs a different event or extra postback parameters.

> **Q2:** Why is it called `click_id` in the campaign URL and `data` in the postback?

**A2:** They are two halves of the same value. ClickFlare reads Kadam's click ID from its own `click_id` parameter. Kadam expects it back in its own `data` parameter. Both names are fixed. Change neither.

> **Q3:** Does Kadam show my revenue?

**A3:** No. Kadam's postback has no revenue parameter, so Kadam counts conversions but not their value. Your revenue and ROI live in ClickFlare.

> **Q4:** Do I need the postback on CPC or CPM campaigns?

**A4:** It isn't required, but send it anyway. Kadam then sees which of your clicks convert, and you can compare its numbers with ClickFlare's. On CPA Target it is required, because the smart bidding optimizes toward the conversions it receives.

## 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)**
>
> Choose which event reaches Kadam.

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