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

# Appnext as a Traffic Source

> Track Appnext app discovery campaigns in ClickFlare, fix the template's parameters and send conversions back to Appnext.

![Appnext traffic source template](https://mintcdn.com/clickflare/0jaeWC_DJvLt2SMH/images/integrations/covers/templates/appnext.png?fit=max\&auto=format\&n=0jaeWC_DJvLt2SMH\&q=85\&s=b3a286500674dc9bdc0e506cc6aa02df)

Appnext, an Affle company, is a mobile app discovery platform. It shows app recommendations inside publisher apps and on Android devices, and sells that traffic to advertisers on CPI, CPC or CPA pricing. This guide sets up Appnext as a traffic source in ClickFlare. It covers passing Appnext's click data into your reports and sending conversions back to Appnext, so its optimization and your stats agree.

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

The Appnext template needs more work than most. Most of its parameter names contain spaces, and its postback uses two ClickFlare tokens for the wrong data and three that are not in ClickFlare's postback token list. This guide goes through each one.

## At a glance

| | |
| - | - |
| **Ad formats** | App recommendations inside publisher apps and on Android devices |
| **Click ID macro** | `xapnt1x`, mandatory for conversion tracking |
| **Conversion tracking** | S2S postback to `admin.appnext.com` |
| **Payout passed back** | No. The template's postback sends no value. |
| **Multiple events** | Not documented publicly. Ask your Appnext account manager. |
| **Cost** | Passed per click by the template, as your Appnext bid (`{apnt_bid}`). Right on CPC campaigns only. |
| **Conversion API** | No |

## How it works

**1. Appnext sends the click**

A user taps your app recommendation. Appnext opens your ClickFlare campaign URL and fills in its macros: the click ID in `cid`, your bid, the pricing model, the device's advertising ID, the publisher app, the sub-publisher, and the Appnext campaign and creative.

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

ClickFlare saves the value of `cid` as the visit's **External ID**, records the cost, and redirects the user to your lander, offer or store page.

**3. The conversion reaches ClickFlare**

Your affiliate network, store or attribution partner posts the conversion back to ClickFlare, matched on the ClickFlare click ID.

**4. ClickFlare posts it back to Appnext**

ClickFlare fires the Appnext postback, replacing `{external_id}` with the stored Appnext click ID, and adds the device and visitor details. Appnext matches it to the original click.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`cid`) and *Appnext's* macro (`xapnt1x`). The template does this for you. In the **postback URL** you write *Appnext's* parameter (`clickid`) 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 or attribution partner 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).
* **Know your Appnext campaign's pricing model.** CPI, CPC or CPA decides which Cost Model you use in ClickFlare. See [Cost](#cost).
* **Talk to your Appnext account manager about the postback.** Appnext's public documentation covers tracking through its listed attribution partners. Confirm with them that they accept conversions from ClickFlare on the template's endpoint, and which conversion actions they want reported.

***

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

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

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

| Name | TS Parameter | TS Token (Appnext macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| cost | `apnt cost` | `{apnt_bid}` | `{cost}` | Your Appnext bid for the campaign. See [Cost](#cost). |
| externalId | `cid` | `xapnt1x` | `{external_id}` | Appnext's click ID. Required for the postback. |
| Publisher App ID | `publisher app id` | `xapnt17x` | `{trackingField1}` | The publisher's app ID |
| Pricing model | `pricing model` | `{apnt_pricingmod}` | `{trackingField2}` | The campaign's pricing model: CPI, CPC or CPA |
| GAID/IDFA | `GAID/IDFA` | `xapnt6x` | `{trackingField3}` | The device's advertising ID: the GAID on Android, the IDFA on iOS |
| Sub Publisher ID | `sub publisher id` | `xapnt20x` | `{trackingField4}` | The sub-publisher ID the publisher supplies. Format and length vary. |
| Publisher App Name | `publisher app name` | `xapnt21x` | `{trackingField5}` | The publisher's app name |
| Appnext campaign name | `Appnext campaign name` | `{apnt_campname}` | `{trackingField6}` | Your Appnext campaign name |
| Appnext campaign number | `Appnext campaign number` | `{apnt_campid}` | `{trackingField7}` | Your Appnext campaign ID |
| Appnext creative number | `Appnext creative number` | `{apnt_crtid}` | `{trackingField8}` | Your Appnext creative ID |

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

Each tracking field becomes a column you can group reports by. **Publisher App ID** and **Sub Publisher ID** are the ones you will use most: they tell you which publishers and sub-sources convert, so you can block or bid up sources in Appnext.

> [!WARNING]
>
> Don't change or remove the `externalId` row. Without `xapnt1x` in the campaign URL, ClickFlare stores no Appnext click ID, and Appnext can't match any conversion.

### Rename the parameters with spaces

Nine of the template's TS Parameters contain spaces or a slash, for example `publisher app id` and `GAID/IDFA`. A URL parameter name shouldn't contain either. Rename each one in the **TS Parameter** column before you copy the campaign URL. Keep the **TS Token** and **ClickFlare Token** as they are:

| Template TS Parameter | Rename it to |
| - | - |
| `apnt cost` | `cost` |
| `publisher app id` | `pub_app_id` |
| `pricing model` | `pricing_model` |
| `GAID/IDFA` | `device_id` |
| `sub publisher id` | `sub_pub_id` |
| `publisher app name` | `pub_app_name` |
| `Appnext campaign name` | `campaign_name` |
| `Appnext campaign number` | `campaign_id` |
| `Appnext creative number` | `creative_id` |

The names are only labels in your campaign URL. ClickFlare reads each value back by the same name, so any name without spaces works.

### Two macro styles

The template mixes Appnext's two macro styles: `xapnt…x` macros (click ID, advertising ID, publisher fields) and `{apnt_…}` macros (bid, pricing model, campaign, creative). Both come from Appnext's macro list. If the `{apnt_…}` columns stay empty or show the macro as text after launch, ask your Appnext account manager for the current equivalents.

To pass more Appnext data, click **Add Parameter**, give it a name and parameter without spaces, and enter the Appnext macro as the **TS Token**. ClickFlare assigns the next free tracking field. Appnext also offers `xapnt16x` (the publisher ID), `xapnt5x` (the click IP) and `{apnt_bidcurr}` (the bid currency).

## Step 2 – Set up the postback

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

1. 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}
http://admin.appnext.com/conversion.aspx?clickid={external_id}&idfa={trackingField3}&gaid={trackingField3}&device={device}&os={os_version}&country={country_code}&city={city}&ip={ip}&useragent={user_agent}
```

![The Traffic source postback URL switched on, showing the Appnext template's postback](https://mintcdn.com/clickflare/0jaeWC_DJvLt2SMH/images/integrations/templates/appnext/postback.png?fit=max\&auto=format\&n=0jaeWC_DJvLt2SMH\&q=85\&s=5c3027c395345deea352e01a034df240)

It already sends the click ID (`{external_id}`) and the advertising ID (`{trackingField3}`), both as ClickFlare tokens. `{city}` and `{ip}` are ClickFlare tokens too. Fix the rest:

| In the template | Change it to | Why |
| - | - | - |
| `http://` | `https://` | Send the postback over HTTPS. |
| `device={device}` | `device={trackingField3}` | `{device}` is ClickFlare's device type (for example mobile). In Appnext's postback format, `device` carries the device's advertising ID. |
| `country={country_code}` | `country={country}` | `{country}` is the country code token in ClickFlare's postback token list. |
| `os={os_version}` | Remove it, unless **+ Token** lists `{os_version}` | It is not in ClickFlare's postback token list. An unknown token is sent as literal text. |
| `useragent={user_agent}` | Remove it, unless **+ Token** lists `{user_agent}` | Same reason. |

Click **+ Token** next to the URL field to see the tokens your account offers before you remove anything. The result:

```text theme={null}
https://admin.appnext.com/conversion.aspx?clickid={external_id}&idfa={trackingField3}&gaid={trackingField3}&device={trackingField3}&country={country}&city={city}&ip={ip}
```

`idfa` and `gaid` both read tracking field 3, because the `xapnt6x` macro carries whichever ID the device has. Appnext ignores the one that doesn't apply.

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

> [!WARNING]
>
> The template sends no conversion action and no value. Partner integrations on the same endpoint add `&action=install` to report an install. If your account manager asks for an action name, or for a revenue parameter, add it at the end of the postback before launch.

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** according to your Appnext pricing model: **Not Tracked** for CPC, **CPA** for CPI and CPA. See [Cost](#cost).
3. Choose **Redirect** tracking.
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 Appnext macro from the template, for example `cid=xapnt1x` and `pub_app_id=xapnt17x` once you have renamed the parameters.

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

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 Appnext

1. In Appnext, create the campaign as usual.
2. In the tracking stage of the campaign setup, paste the ClickFlare campaign URL as the campaign's tracking link. Appnext's tracking partner list covers attribution providers. If you can't enter a custom link, ask your Appnext account manager to set it.
3. Click the green **Check** button to save the tracking link.
4. Add funds if needed, then in **Manage Campaigns**, change the campaign's status from **Paused** to **Active**.

To change the tracking link later, click **Edit Campaign** on the campaign.

Paste the URL exactly as ClickFlare gives it. Appnext replaces each macro when the recommendation is tapped.

## Step 5 – Test the integration

1. In Appnext, go to **Manage Campaigns** and click **Set Tracking** in the campaign's actions. Send the test link to your phone by email or SMS.
2. Open it on a device with the same operating system and country as the campaign, and complete the offer the way a real user would. For an app, use a device that has never had it installed.
3. In ClickFlare, go to **Logs → Postback Status** and filter by the campaign. A successful request to `admin.appnext.com` confirms ClickFlare sent the postback. Open it and check that `clickid` and the advertising ID hold real values.
4. Back in Appnext, click **Check**. **Active** means the conversion was tracked. If it still shows **Not Active**, wait and try again, then contact Appnext support.

If the test conversion doesn't show in ClickFlare at all, open **Logs → Event Logs** to see whether the conversion arrived and which event it was recorded as.

***

## Sending only some conversions

The template has one postback, for every conversion. If Appnext should only learn from one step of your funnel, for example installs and not later purchases, create a [custom conversion](https://clickflare.com/docs/en/settings/custom-conversions.md) for that step and map the postback to it in the event dropdown.

> **Reporting more than one event**
>
> Appnext's public documentation doesn't describe in-app event postbacks on this endpoint. If your account manager confirms Appnext accepts several actions, click **+ Another postback URL** once per extra event, add the action name they give you to each URL, and map each URL to its ClickFlare event.

> **Filtering by payout**
>
> 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 per click. The `cost` row sends Appnext's `{apnt_bid}` macro, which is your campaign's bid, and ClickFlare records it as the visit's cost. The **Pricing model** column tells you what that bid is for.

| Appnext pricing model | Cost Model in ClickFlare | Why |
| - | - | - |
| CPC | **Not Tracked** | The bid is the price of a click. ClickFlare uses the cost passed in the URL. |
| CPI | **CPA**, with your CPI bid | The bid is the price of an install. Recorded on every click, it would overstate your spend. |
| CPA | **CPA**, with your CPA bid | Same: the bid is the price of a conversion, not of a click. |

With **CPA**, ClickFlare ignores the cost passed in the URL. Make sure the ClickFlare event that counts as a conversion is the one Appnext charges for, for example the install.

ClickFlare has no cost integration for Appnext. When the recorded spend differs from your Appnext spend, correct it with a [manual cost upload](https://clickflare.com/docs/en/settings/manual-cost-upload.md). See [Cost Models](https://clickflare.com/docs/en/core-platform-concepts/cost-models.md).

## Delayed revenue

If your offer reports revenue hours or days after the click, see [Sending Delayed Revenue to Traffic Sources](https://clickflare.com/docs/en/advanced-tracking-configuration/how-to-send-delayed-revenue-to-traffic-sources.md) to pass that revenue to traffic sources once it arrives.

***

## Troubleshooting

> **Appnext doesn't record the conversions**
>
> * The campaign URL in Appnext is missing `cid=xapnt1x`, or the macro was edited. Copy the URL from ClickFlare again.
> * The postback uses a click ID token other than `{external_id}`.
> * Your account manager expects an `action` parameter the template doesn't send.

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

> **The postback shows tokens as text**
>
> A token ClickFlare doesn't know, for example `{os_version}` or `{user_agent}`, is sent as literal text. Remove it, or replace it with a token from the **+ Token** list.

> **Columns are empty or the campaign URL looks broken**
>
> * TS Parameters with spaces were not renamed. Rename them as in Step 1 and copy the campaign URL again.
> * An `{apnt_…}` macro was not replaced. Ask Appnext for the current macro.
> * 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 Appnext traffic source for all my Appnext campaigns?

**A1:** Yes. The postback is set once on the traffic source and every campaign using it sends conversions the same way. Set the Cost Model per campaign, according to each campaign's pricing model.

> **Q2:** Why is it `cid` in the campaign URL and `clickid` in the postback?

**A2:** They are two halves of the same value. ClickFlare reads Appnext's click ID from its own `cid` parameter. Appnext expects it back in its own `clickid` parameter. Change neither.

> **Q3:** Appnext lists attribution partners like AppsFlyer and Adjust, but not ClickFlare. Is that a problem?

**A3:** Those partners track app installs from inside the app. ClickFlare tracks the click and the conversion your offer reports. If you can't paste a custom tracking link in Appnext, ask your account manager to set the ClickFlare campaign URL for you.

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

**A4:** Redirect. Appnext sends the user to the tracking link, so the campaign URL must be a ClickFlare redirect. See [Direct Campaign Tracking](https://clickflare.com/docs/en/campaigns/direct-campaign-tracking.md) for when Direct applies.

> **Q5:** Does the postback send the payout to Appnext?

**A5:** No. The template sends no value. Appnext charges on its own pricing model, so it doesn't need your payout to bill. If your account manager wants revenue for optimization, ask for the parameter name and add it with `{payout}`.

## 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)**
>
> Send Appnext only the step it charges for.

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