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

# Adnium as a Traffic Source

> Track Adnium popunder and banner campaigns in ClickFlare and send conversions to Adnium's conversion API with your API token.

![Adnium traffic source template](https://mintcdn.com/clickflare/j4F_mr_BIrMz-iaH/images/integrations/covers/templates/adnium.png?fit=max\&auto=format\&n=j4F_mr_BIrMz-iaH\&q=85\&s=432fc526e59efebdb80bbdd4a38cedab)

Adnium is a self-serve ad network selling popunder, banner, instant message (IM) and video traffic on desktop and mobile, billed per impression (CPM). This guide sets up Adnium as a traffic source in ClickFlare. It covers passing Adnium's click data into your reports and sending conversions, with payout, back to Adnium through its conversion API so its stats and yours agree.

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

## At a glance

| | |
| - | - |
| **Ad formats** | Popunders, banners (300x250, 728x90, 300x100 and more), IM/adhesion, video, member's area zones |
| **Click ID macro** | `{conversion}`, required for conversion tracking |
| **Conversion tracking** | S2S postback to Adnium's conversion API, `api.adnium.com`, authenticated with your API token |
| **Payout passed back** | Yes, in the `amount` parameter |
| **Multiple events** | Not documented. Send one event. |
| **Cost** | Passed by the template (`{cost}`), but Adnium fills it on **pop campaigns only**. Cost Model: **Not Tracked** for pops. See [Cost](#cost). |
| **Conversion API** | No |

## How it works

**1. Adnium sends the visit**

A visitor clicks your banner or opens your popunder. Adnium opens your ClickFlare campaign URL and fills in its macros: the conversion tracking ID in `conversion`, the cost in `cost`, plus the ad zone, site, campaign, banner, country and device details.

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

ClickFlare saves the value of `conversion` 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 Adnium**

ClickFlare calls Adnium's conversion API, replacing `{external_id}` with the stored Adnium ID and `{payout}` with the revenue. Adnium matches it to the original visit.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`conversion`) and *Adnium's* macro (`{conversion}`). The template does this for you. In the **postback URL** you write *Adnium's* parameter (`atrack`) 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](https://clickflare.com/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](https://clickflare.com/docs/en/tracking/creating-an-offer-1.md) and [Adding an Affiliate Network](https://clickflare.com/docs/en/tracking/adding-an-affiliate-network.md).
* **Generate your Adnium API token.** The postback authenticates with it. In Adnium, click the profile icon at the top right, choose **My Profile**, open **API** and click **Generate**. Copy the token.
* **Know which formats you will buy.** Adnium passes cost only for pop campaigns. For banner campaigns you set cost another way. See [Cost](#cost).

***

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

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

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

| Name | TS Parameter | TS Token (Adnium macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| cost | `cost` | `{cost}` | `{cost}` | The cost of the impressions delivered. Pop campaigns only. See [Cost](#cost). |
| externalId | `conversion` | `{conversion}` | `{external_id}` | Adnium's conversion tracking ID (its click ID). Required for the postback. |
| country | `country` | `{country}` | `{trackingField1}` | The visitor's country, as an ISO2 code |
| adzone ID | `adzone` | `{adzone}` | `{trackingField2}` | The ad zone that showed the ad |
| site ID | `site` | `{site}` | `{trackingField3}` | The publisher site |
| campaign ID | `campaign` | `{campaign}` | `{trackingField4}` | Your Adnium campaign ID |
| banner ID | `banner` | `{banner}` | `{trackingField5}` | The banner (creative) |
| city | `city` | `{city}` | `{trackingField6}` | Adnium's numeric city ID, not the city name |
| carrier | `carrier` | `{carrier}` | `{trackingField7}` | Adnium's carrier ID |
| device ID | `device` | `{device}` | `{trackingField8}` | Adnium's device ID, not a visitor's device identifier |
| os | `os` | `{os}` | `{trackingField9}` | Adnium's operating system ID, not the OS name |
| language | `language` | `{language}` | `{trackingField10}` | Adnium's language ID |

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

Each tracking field becomes a column you can group reports by. `adzone` and `site` are the ones you will use most: they tell you which zones and sites convert, so you can whitelist or blacklist them in Adnium.

The last five rows pass Adnium's internal IDs, not readable names. If you'd rather see names, change the TS Token on those rows:

| Row | Readable alternative | What it carries |
| - | - | - |
| os | `{os.name}` | The operating system name |
| device ID | `{device.type}` | The device type: desktop, iPad, mobile phone or other |
| language | `{language.code}` | The ISO 639-1 language code |

> [!WARNING]
>
> Don't change or remove the `externalId` row. Without `conversion={conversion}` in the campaign URL, ClickFlare has no Adnium ID to send back, and Adnium cannot match conversions.

To pass more Adnium data, click **Add Parameter**, give it a name and parameter, and enter the Adnium macro as the **TS Token**. All ten tracking fields are already used, so swap out a row you don't need. Useful extras:

| Macro | What it carries |
| - | - |
| `{sub.id}` | Adnium's SubID, the value you whitelist or blacklist with SubID Optimization |
| `{region}` | Adnium's region ID |
| `{keywords.matched}` | The keywords from your campaign that matched, comma separated |

## Step 2 – Set up the postback

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

Adnium's postback is a call to its conversion API. It takes your API token, the Adnium ID of the visit (`atrack`) and the amount.

### Get your postback URL from Adnium

1. In Adnium, open **Advertisers** and click **Conversions**.
2. Scroll to the bottom of the page. Your postback URL is there.
3. If you haven't yet, generate your API token: profile icon, **My Profile**, **API**, **Generate**. Conversion tracking only works once the token is generated.

### Add it to the traffic source 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://api.adnium.com/v1/advertiser/conversion/add/?token=[GENERATE_API_TOKEN]&atrack={external_id}&amount={payout}&subid={trackingField1}
```

![The Traffic source postback URL switched on, showing the Adnium template's postback](https://mintcdn.com/clickflare/j4F_mr_BIrMz-iaH/images/integrations/templates/adnium/postback.png?fit=max\&auto=format\&n=j4F_mr_BIrMz-iaH\&q=85\&s=2e1b0afd03ed7afeb45919928e4a255a)

It already sends the Adnium ID (`{external_id}`) and the payout (`{payout}`), both as ClickFlare tokens.

3. Replace `[GENERATE_API_TOKEN]`, square brackets included, with your Adnium API token.
4. Delete `&subid={trackingField1}` from the end. In this template, `{trackingField1}` is the **country**, and Adnium's conversion API documents only `atrack` and `amount`. The result:

```text theme={null}
https://api.adnium.com/v1/advertiser/conversion/add/?token=YOUR_API_TOKEN&atrack={external_id}&amount={payout}
```

5. 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.
6. Click **Save**. You are back in the campaign editor with the Adnium traffic source selected.

> [!WARNING]
>
> Replace `[GENERATE_API_TOKEN]` with your token, brackets included. The token is how Adnium knows the conversion belongs to your account. Without it, every postback is rejected.

> [!NOTE]
>
> The API token gives access to your Adnium account through Adnium's API. Treat it like a password. If it leaks, generate a new one in Adnium and update the postback.

`amount` is the conversion's revenue. Send it in USD. If your offers pay in another currency, see [Multicurrency in ClickFlare](https://clickflare.com/docs/en/tracking/multicurrency-support-in-click-flare-how-it-works.md).

To learn what each postback token does, see [How to Configure a Traffic Source S2S Postback URL](https://clickflare.com/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**: **Not Tracked** for pop campaigns, so ClickFlare uses the cost Adnium passes. For banner campaigns, see [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for Adnium's popunder 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 Adnium macro from the template, for example `conversion={conversion}` and `adzone={adzone}`.

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

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

## Step 4 – Create the campaign in Adnium

1. In Adnium, open the **Advertisers** menu and select **New campaign**.
2. Work through the targeting steps: format, countries, devices and the rest.
3. When you reach the banners step, click **Click to add banners**.
4. Select your creative and paste the ClickFlare campaign URL into the destination URL field. Click **Upload**.
5. Adjust the bid if needed and click **Submit**. The campaign goes to review.

Paste the URL exactly as ClickFlare gives it. Adnium replaces each macro when the ad is served. Adnium offers **Flat Bidding** (a fixed bid you control) and **Smart Bidding** (a maximum bid that lowers itself to just above the next advertiser).

## Step 5 – Test the integration

Adnium has no test-conversion tool. Test with a small budget.

1. Launch the campaign with a low daily budget.
2. In ClickFlare, check that visits arrive with the adzone and site columns filled. Empty columns mean the macros were not replaced. See [Troubleshooting](#troubleshooting).
3. Complete the offer yourself through an Adnium visit, or wait for the first real conversion.
4. In ClickFlare, go to **Logs → Postback Status** and filter by the campaign. A successful request to `api.adnium.com` confirms ClickFlare sent the postback. If it failed, the status code and response tell you why, usually a missing or wrong token.
5. In Adnium, check the campaign's stats for the conversion. Allow some time for Adnium's stats to update.

***

## Optimizing on zones, sites and SubIDs

> **Whitelisting and blacklisting**
>
> Group your ClickFlare reports by the adzone or site columns. Zones and sites that spend without converting can be blacklisted in Adnium. The ones that convert can be whitelisted into their own campaign.

> **SubID Optimization**
>
> Adnium's SubID Optimization works on `{sub.id}`. Add it to the template (see Step 1), find the SubIDs that perform, then enter them in the campaign's **Keyword Targeting** field, one per line, up to 50 per campaign.

> **Sending only one event**
>
> Adnium has no documented multi-event postback. Send it the one event it should count, usually your final sale. Earlier steps (leads, sign-ups) still show in ClickFlare. They just don't reach Adnium.
>
> 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.

## Cost

The template passes cost in the `cost` row, with Adnium's `{cost}` macro. Adnium fills it only on **pop campaigns**. On banner campaigns the macro carries no usable cost. Adnium says banner cost has to be tracked through its API, and ClickFlare has no Adnium cost integration.

* **Pop campaigns.** Set the **Cost Model** to **Not Tracked**, so ClickFlare uses the cost passed in the URL. A popunder impression is roughly one visit, so the per-visit cost lines up.
* **Banner and other CPM campaigns.** Set the Cost Model to **Not Tracked** and correct spend daily with a [manual cost upload](https://clickflare.com/docs/en/settings/manual-cost-upload.md), using the spend from Adnium's stats. A banner impression is not a visit, so a CPC figure derived from your CPM bid would be wrong.

> [!NOTE]
>
> For pop campaigns where `{cost}` arrives empty, switch the Cost Model to **CPC** and enter your CPM bid divided by 1,000 as the cost value. Then compare the **Cost** column with your Adnium spend after launch.

See [Cost Models](https://clickflare.com/docs/en/core-platform-concepts/cost-models.md).

## Delayed revenue

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

***

## Troubleshooting

> **Adnium shows no conversions**
>
> * `[GENERATE_API_TOKEN]` was never replaced, or the token was regenerated in Adnium since. Paste the current token.
> * The campaign URL in Adnium is missing `conversion={conversion}`, or the macro was edited. Copy the URL from ClickFlare again.
> * The `externalId` row was removed from the traffic source.

> **Conversions show in ClickFlare but no postback is sent**
>
> * **Traffic source postback URL** is off on the Adnium 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 Adnium returned.

> **The Cost column is zero on a banner campaign**
>
> Expected. Adnium passes `{cost}` on pop campaigns only. Upload banner spend with a [manual cost upload](https://clickflare.com/docs/en/settings/manual-cost-upload.md).

> **OS, city or device columns show numbers**
>
> Expected. Those macros pass Adnium's internal IDs. Switch the TS Token to `{os.name}`, `{device.type}` or `{language.code}` for readable values (Step 1). Empty columns are different: they mean the macros were not replaced. See [Traffic Source Tokens Arriving Empty](https://clickflare.com/docs/en/troubleshooting/tokens-arriving-empty.md).

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

***

**FREQUENTLY ASKED QUESTIONS**

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

**A1:** Yes. The postback is set once on the traffic source and every campaign using it sends conversions the same way.

> **Q2:** Why is it `conversion` in the campaign URL and `atrack` in the postback?

**A2:** They are two halves of the same value. ClickFlare reads Adnium's ID from its own `conversion` parameter. Adnium's API expects it back in `atrack`. Both names are fixed. Change neither.

> **Q3:** Where does the API token come from?

**A3:** From **My Profile → API** in Adnium. If you ever generate a new token, update the postback in ClickFlare too, or Adnium stops accepting your conversions.

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

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

> **Q5:** Can I keep the `subid` part of the template's postback?

**A5:** It does no harm, but it sends the visitor's country, which Adnium doesn't use. Removing it keeps the postback to what Adnium's API documents.

## Related

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

> **[Manual cost upload](https://clickflare.com/docs/en/settings/manual-cost-upload.md)**
>
> Correct spend for banner campaigns.

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

> **[Conversions not showing](https://clickflare.com/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.