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

# ADxAD as a Traffic Source

> Track ADxAD campaigns in ClickFlare: add the {clickId} holder and ADxAD's Conversions Import Service postback, with payout and up to three goals.

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

ADxAD is an ad network with strong Asian and worldwide reach. It sells popunder, display banner, native and push traffic, all on a CPM basis, through a self-serve trading desk. This guide sets up ADxAD as a traffic source in ClickFlare. It covers passing ADxAD's click data into your reports and sending conversions, with payout, back to ADxAD through its Conversions Import Service.

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

> [!WARNING]
>
> The ADxAD template is incomplete. Its External ID row is empty and it has no postback. Without both, ADxAD never receives a conversion. Steps 1 and 2 show exactly what to fill in.

## At a glance

| | |
| - | - |
| **Ad formats** | Popunder, display banners (IAB sizes), native, push |
| **Click ID macro** | `{clickId}`. The template leaves it out, so you add it. |
| **Conversion tracking** | S2S postback to ADxAD's Conversions Import Service, `conv.adxadserv.com`. The template has none, so you add it. |
| **Payout passed back** | Yes, in the `payout` parameter, in USD |
| **Multiple events** | Up to 3, as `type=goal1`, `goal2` and `goal3` |
| **Cost** | Not passed by the template. ADxAD sells on CPM only. See [Cost](#cost). |
| **Conversion API** | No |

## How it works

**1. ADxAD sends the click**

A visitor clicks your ad. ADxAD opens your ClickFlare campaign URL and fills in its holders: the click ID in `clickid` (once you add it), plus the user, impression, creative, campaign, project, site and partner.

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

ClickFlare saves the value of `clickid` as the visit's **External ID** 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 ADxAD**

ClickFlare fires the ADxAD postback, replacing `{external_id}` with the stored ADxAD click ID and `{payout}` with the revenue. ADxAD imports the conversion against the original click.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`clickid`) and *ADxAD's* holder (`{clickId}`). In the **postback URL** you write *ADxAD's* parameter (`clickid`) and *ClickFlare's* token (`{external_id}`). Both sides use the parameter name `clickid`. The value in braces is what changes.

## 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).
* **Have an ADxAD advertiser account with funds.** ADxAD works on prepayment, with a minimum of 150 USD.
* **Decide which conversions ADxAD should receive.** ADxAD accepts up to three conversion types. If your funnel has several steps (registration, then sale), decide now whether to send one or several. See [Tracking several events](#tracking-several-events).

***

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

1. Go to **Campaigns** and click **New**.
2. In **Traffic Source**, open the dropdown and click **+ New Traffic Source**.
3. Type `adxad` in the search box and select the **ADxAD** template.
4. Enter a **Name**, for example `ADxAD`.
5. Leave **Cost currency** on **USD**. ADxAD bids and balances are in USD.

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

| Name | TS Parameter | TS Token (ADxAD holder) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| externalId | *empty* | *empty* | `{external_id}` | Nothing yet. Fill it in as shown below. |
| User ID | `userId` | `{userId}` | `{trackingField1}` | ADxAD's ID for the visitor |
| Impression ID | `impressionId` | `{impressionId}` | `{trackingField2}` | The impression that led to the click |
| Creative ID | `creativeId` | `{creativeId}` | `{trackingField3}` | The creative |
| Creative name | `creativeName` | `{creativeName}` | `{trackingField4}` | The creative's name |
| Campaign ID | `campaignId` | `{campaignId}` | `{trackingField5}` | Your ADxAD campaign ID |
| Campaign name | `campaignName` | `{campaignName}` | `{trackingField6}` | Your ADxAD campaign name |
| Project ID | `projectId` | `{projectId}` | `{trackingField7}` | The ADxAD project the campaign belongs to |
| Project name | `projectName` | `{projectName}` | `{trackingField8}` | The project's name |
| Site ID | `siteId` | `{siteId}` | `{trackingField9}` | The publisher site that showed the ad |
| Partner ID | `partnerId` | `{partnerId}` | `{trackingField10}` | The publisher partner |

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

Now fill in the empty **externalId** row:

1. In **TS Parameter**, enter `clickid`.
2. In **TS Token**, enter `{clickId}`, with a capital I, as ADxAD writes it.
3. Leave **ClickFlare Token** on `{external_id}`.

> [!WARNING]
>
> Without this row, ADxAD's click ID never reaches ClickFlare. Every visit has an empty External ID, and the postback in Step 2 has nothing to send back. ADxAD's own setup guide makes this its first step.

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 black- or whitelist them in ADxAD's targeting.

To pass more ADxAD data, click **Add Parameter**, give it a name and parameter, and enter the ADxAD holder as the **TS Token**. ClickFlare assigns the next free tracking field. ADxAD's Click URL also offers **Country**, **Device**, **Browser**, **Language**, **Bid**, **Sub Id 1** and **Sub Id 2**. Click a holder in ADxAD's **Click URL** tab to see its exact macro before you copy it here.

## Step 2 – Add the postback

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

The ADxAD template has no postback URL. You add ADxAD's own.

### ADxAD's postback

ADxAD's Conversions Import Service accepts conversions as a GET request with three parameters:

| Parameter | What it carries |
| - | - |
| `clickid` | The ADxAD click ID, received through `{clickId}` on the click |
| `payout` | The conversion value in USD. Decimals use a dot, for example `1.5`. |
| `type` | The conversion type: `goal1`, `goal2` or `goal3` |

ADxAD's example postback is:

```text theme={null}
http://conv.adxadserv.com/?clickid=%insertyourtoken%&payout=1&type=goal3
```

ADxAD's guide says to replace `%insertyourtoken%` with your tracker's click ID token, and to set `payout` and `type` yourself.

### Add it to the traffic source in ClickFlare

1. In the **New Traffic Source** form, scroll to **Passing conversion info to traffic source**.
2. Turn on **Traffic source postback URL**. The field is empty, because the template has no postback.
3. Paste ADxAD's postback, with ClickFlare's tokens filled in:

```text theme={null}
https://conv.adxadserv.com/?clickid={external_id}&payout={payout}&type=goal1
```

Three changes from ADxAD's example. `%insertyourtoken%` becomes `{external_id}`, the ADxAD click ID ClickFlare stored. The fixed `payout=1` becomes `{payout}`, so ADxAD gets the real revenue of each conversion. And `type` is `goal1` for your main conversion. ADxAD's `http://` address redirects to `https://`, so use `https://` directly.

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

> [!WARNING]
>
> Don't leave `%insertyourtoken%` in the URL, and don't use `{clickId}` in the postback. Both are ADxAD placeholders, not ClickFlare tokens, so ClickFlare sends them as literal text and ADxAD can't match the conversion. In the postback, the click ID is always `{external_id}`.

ADxAD reads `payout` as 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**. ADxAD doesn't pass cost, so use **CPC** for popunders. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for 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**.

Check that the campaign URL contains `clickid={clickId}`. If it doesn't, the externalId row from Step 1 wasn't saved. The other holders from the template are there too, for example `siteId={siteId}`.

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

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 ADxAD

ADxAD's trading desk is organized as **Project → Campaign → Creative**.

1. In ADxAD, click **Trade desk**.
2. Create a project: click the **plus** button in the upper right corner, type a name and click **create**.
3. Open the project and click the **plus** button next to campaigns.
4. Set your bid (CPM in USD) and frequency cap, the campaign name, the media type and the ad format. You can't change the media type and format later.
5. On the **Click URL** tab, paste the ClickFlare campaign URL into **Click url**.
6. Set the targeting under **Advanced**. Anything you leave unselected is included.
7. Set the activity schedule and click **save**.
8. Add creatives to the campaign and wait for them to be approved, usually within 24 hours.
9. Enable the project, the campaign and the creatives. Traffic only flows when all three are on.

Paste the URL exactly as ClickFlare gives it. ADxAD replaces each `{...}` holder when the ad is clicked.

## Step 5 – Test the integration

ADxAD doesn't offer a test-conversion tool, so test with a small live budget.

1. Launch the campaign with a low budget.
2. In ClickFlare, open the campaign report and check that the visits have an **External ID**. An empty External ID means `{clickId}` isn't in the campaign URL.
3. Group by **Site ID**. Real values mean the holders are filling in. If you see the literal text `{siteId}`, the URL was edited or pasted in the wrong field.
4. When the first conversion arrives, go to **Logs → Postback Status** and filter by the campaign. A successful request to `conv.adxadserv.com` confirms ClickFlare sent it.
5. In ADxAD, open **Reports**, choose the campaign in the filters and check that the conversion shows. ADxAD's statistics run on UTC.

***

## Tracking several events

ADxAD accepts three conversion types, set with the `type` parameter, for example a registration as `goal1` and a sale as `goal2`. Each event needs its own postback:

```text theme={null}
https://conv.adxadserv.com/?clickid={external_id}&payout={payout}&type=goal1
https://conv.adxadserv.com/?clickid={external_id}&payout={payout}&type=goal2
```

1. In ClickFlare, create a [custom conversion](https://clickflare.com/docs/en/settings/custom-conversions.md) for each step, for example `registration` and `sale`.
2. On the ADxAD traffic source, click **+ Another postback URL** once per extra event.
3. Map each postback to its ClickFlare event: `registration` to the `type=goal1` URL, `sale` to `type=goal2`.

> **Rules for multi-event postbacks**
>
> * Three events at most: `goal1`, `goal2`, `goal3`.
> * One postback per event. Don't combine events in one URL.
> * Don't rename the types. ADxAD only reads `goal1` to `goal3`.
> * Keep the mapping the same across your ADxAD campaigns, so `goal2` always means the same thing in ADxAD's reports.

> **Sending only one event**
>
> If ADxAD should only learn from your final sale, keep a single postback with `type=goal1` and map it to that event. Earlier steps still show in ClickFlare. They just don't reach ADxAD.
>
> 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 doesn't pass cost. It has no Cost row, and ADxAD sells on CPM only, so there is no per-click price to read from the URL.

How to set the cost depends on the format:

| ADxAD format | Cost Model in ClickFlare |
| - | - |
| Popunder | **CPC**, with your CPM bid divided by 1,000. A popunder impression is roughly one visit. |
| Banners, native, push | No per-visit price fits, because many impressions lead to one click. Use **Not Tracked** and upload your spend with a [manual cost upload](https://clickflare.com/docs/en/settings/manual-cost-upload.md). |

> [!NOTE]
>
> ADxAD's **Bid** holder carries your CPM bid. You can add it as a tracking field to see it next to each visit, but it is a price per 1,000 impressions, not the cost of the visit. Don't use it as the cost.

ADxAD's price is dynamic and depends on demand, so your real CPM can sit below your bid. Compare ClickFlare's **Cost** column with ADxAD's **Reports** regularly, and correct gaps with a manual cost upload. 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 ADxAD, the feed reports revenue hours or days after the click. To pass that revenue to ADxAD 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

> **Conversions show in ClickFlare but not in ADxAD**
>
> * The externalId row is still empty, so the postback has no click ID to send. Fill it in as in Step 1 and copy the campaign URL again.
> * **Traffic source postback URL** is off, or the field is empty. The template has no postback, so you must add one.
> * **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 ADxAD returned.

> **The External ID column is empty**
>
> The campaign URL in ADxAD doesn't contain `clickid={clickId}`. Add the externalId row on the traffic source, then copy the campaign URL from ClickFlare again and update the **Click url** in ADxAD.

> **ADxAD shows every conversion with the same payout**
>
> The postback still has ADxAD's example `payout=1`. Change it to `payout={payout}`.

> **Site ID or other columns are empty**
>
> The holders were not replaced, usually because the URL was edited or pasted somewhere ADxAD doesn't process them. Paste the campaign URL from ClickFlare unchanged. If only one column stays empty, ADxAD may not fill that holder for your format. Compare it with the holders listed on ADxAD's **Click URL** tab. 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 ADxAD traffic source for all my ADxAD campaigns?

**A1:** Yes. Once you fill in the externalId row and add the postback, every campaign using the traffic source sends conversions the same way. Create a second ADxAD traffic source only if a campaign needs a different event setup.

> **Q2:** ADxAD's FAQ says to contact my manager for postback integration. Do I still need to?

**A2:** Not for a standard setup. ADxAD's Conversions Import Service documents the postback this guide uses. Contact your ADxAD manager if conversions don't appear after you've checked the steps above.

> **Q3:** Why `{clickId}` in the campaign URL but `{external_id}` in the postback?

**A3:** `{clickId}` is ADxAD's holder: ADxAD fills it in when the ad is clicked. `{external_id}` is ClickFlare's token for the same value, stored from that click. ADxAD's holders only work in the click URL. ClickFlare's tokens only work in the postback.

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

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

> **Q5:** Does ClickFlare pull my ADxAD spend automatically?

**A5:** No. There is no ADxAD cost integration. Use CPC for popunders and manual cost uploads for the other formats.

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

> **[Custom conversions](https://clickflare.com/docs/en/settings/custom-conversions.md)**
>
> Split registrations and sales into separate events.

> **[Manual cost upload](https://clickflare.com/docs/en/settings/manual-cost-upload.md)**
>
> Correct spend when no cost is passed in the URL.

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