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

# Adcash as a Traffic Source

> Track Adcash campaigns in ClickFlare: pass click ID and cost per visit, and send conversions with payout back through an Adcash goal postback.

![Adcash traffic source template](https://mintcdn.com/clickflare/oNlhH4HxR5JFsOiP/images/integrations/covers/templates/adcash.png?fit=max\&auto=format\&n=oNlhH4HxR5JFsOiP\&q=85\&s=8278c7d293cc31e042477e5cce5ce7c4)

Adcash is a self-serve advertising platform selling pop-under, in-page push, interstitial, display banner and video traffic across desktop and mobile. This guide sets up Adcash as a traffic source in ClickFlare. It covers passing Adcash's click and cost data into your reports and sending conversions, with payout, back to Adcash so its optimization and your stats agree.

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

## At a glance

| | |
| - | - |
| **Ad formats** | Pop-under, in-page push, interstitial, display banners, video |
| **Click ID macro** | `[clickid]`, mandatory for conversion tracking |
| **Conversion tracking** | S2S postback per Adcash goal, included in the template. You add your advertiser ID and goal ID. |
| **Payout passed back** | Yes, in the `value` parameter (`{payout}` in the template) |
| **Multiple events** | One Adcash goal per event, one postback per goal |
| **Cost** | Passed per visit by `[redirection_cost]`. Set the cost model to **Not Tracked**, which reads the cost from the URL. |
| **Conversion API** | No |

## How it works

**1. Adcash sends the click**

A visitor clicks your ad. Adcash opens your ClickFlare campaign URL and fills in its macros: the click ID in `clickid`, the cost in `redirection_cost`, plus the zone, banner, supply source, country and other details.

**2. ClickFlare stores the Adcash click ID and cost**

ClickFlare saves the value of `clickid` as the visit's **External ID**, records the cost for the visit, 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 Adcash**

ClickFlare fires the Adcash goal postback, replacing `{external_id}` with the stored Adcash click ID and `{payout}` with the revenue. Adcash matches it to the original click and counts it against the goal.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`clickid`) and *Adcash's* macro (`[clickid]`). The template does this for you. In the **postback URL** you write *Adcash's* parameter (`cid`) and *ClickFlare's* token (`{external_id}`). The template does this too. Adcash macros use square brackets. ClickFlare tokens use curly braces. Never mix them.

## 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).
* **Have access to Tracking in your Adcash account.** The postback reports to an Adcash conversion goal, which you create there. You need the goal's advertiser ID and goal ID in Step 2.
* **Decide which conversions Adcash should receive.** Adcash optimizes on what you send it. If your funnel has several steps (lead, then sale), decide now whether to send one event or several. See [Tracking several events](#tracking-several-events).

***

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

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

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

| Name | TS Parameter | TS Token (Adcash macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| Cost | `redirection_cost` | `[redirection_cost]` | `{cost}` | The cost of the visit. See [Cost](#cost). |
| external\_id | `clickid` | `[clickid]` | `{external_id}` | Adcash's click ID. Required for the postback. |
| Campaign ID | `campaign` | `[campaign]` | `{trackingField1}` | The Adcash campaign. Despite the row name, the macro carries the campaign name. |
| Banner ID | `ban` | `[ban]` | `{trackingField2}` | The creative. Despite the row name, the macro carries the banner name. |
| Supply source | `ssp` | `[ssp]` | `{trackingField3}` | The supply source the impression was bought from |
| Zone ID | `zone` | `[zone]` | `{trackingField4}` | The publisher zone that showed the ad |
| Advertiser ID | `advertiser` | `[advertiser]` | `{trackingField5}` | Your Adcash advertiser name. The same on every visit. |
| Country | `country` | `[country]` | `{trackingField6}` | The visitor's country |
| ISP organization | `org` | `[org]` | `{trackingField7}` | The visitor's ISP or organization |
| Platform name | `platform` | `[platform]` | `{trackingField8}` | The visitor's platform |
| IP | `ip` | `[ip]` | `{trackingField9}` | The visitor's IP address |
| Device manufacturer | `device_make` | `[device_make]` | `{trackingField10}` | The device brand |

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

Each tracking field becomes a column you can group reports by. `zone` and `ssp` are the ones you will use most: they tell you which publisher zones and supply sources convert, so you can block or bid up zones in Adcash.

> [!WARNING]
>
> Don't change or remove the `external_id` row or the Cost row. Without `[clickid]` in the campaign URL, Adcash cannot match conversions to clicks. Without `[redirection_cost]`, ClickFlare has no cost for your Adcash visits.

To pass more Adcash data, click **Add Parameter**, give it a name and parameter, and enter the Adcash macro, in square brackets, as the **TS Token**. ClickFlare assigns the next free tracking field. All ten tracking fields are already used by the template, so replace a row you don't need (such as Advertiser ID) rather than adding one. Check the macros your Adcash account offers before adding them.

## Step 2 – Set up the postback

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

The Adcash template includes the postback URL. It needs two values from your Adcash account: your advertiser ID and the ID of the goal the conversions count against.

### Create a goal in Adcash and note its IDs

In Adcash, conversions are tracked against **goals**. Each goal has its own postback URL.

1. In Adcash, go to **Tracking → Goals** and create a new goal.
2. Fill in the mandatory fields: a goal name and the action category (for example **Lead** or a sale-type category). Leave a fixed value empty if you want to send the real payout.
3. Choose the server-to-server (S2S) postback option.
4. Click **Get tracking code**. Adcash shows the goal's postback URL. It looks like this:

```text theme={null}
https://www.pixelhere.com/et/event.php?advertiser=ADVERTISER_ID&cid=INSERT_CLICK_ID&value=INSERT_PRICE_VALUE&id=GOAL_ID
```

5. Copy the value after `advertiser=` (your advertiser ID) and the value after `id=` (the goal ID).

The rest of the URL is already in the ClickFlare template, with ClickFlare tokens in place of Adcash's placeholders. If the goal form asks for a **Click ID** or **Dynamic price value**, you can enter `{external_id}` and `{payout}` there. Only the two IDs matter for ClickFlare.

### Complete 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 fills in the URL:

```text theme={null}
https://www.pixelhere.com/et/event.php?advertiser=REPLACE_ADVERTISER_ID&cid={external_id}&value={payout}&id=REPLACE_GOAL_ID
```

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

3. Replace `REPLACE_ADVERTISER_ID` with the advertiser ID from the goal's tracking code.
4. Replace `REPLACE_GOAL_ID` with the goal ID from the same tracking code.
5. Leave `{external_id}` and `{payout}` as they are. ClickFlare fills them with the Adcash click ID and the payout.
6. 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.
7. Click **Save**. You are back in the campaign editor with the Adcash traffic source selected.

> [!WARNING]
>
> Replace both `REPLACE_` values with the IDs from your own Adcash goal. A postback that still contains `REPLACE_ADVERTISER_ID` or `REPLACE_GOAL_ID` reaches Adcash without a valid account or goal, and the conversion is rejected. If the tracking code in your Adcash account uses a different host than `www.pixelhere.com`, use that host too.

If you remove `value={payout}`, Adcash still counts the conversion but records no value for it. Keep it unless your goal uses a fixed value. If your offers pay in a currency other than your Adcash account currency, convert in ClickFlare first. See [Multicurrency in ClickFlare](/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](/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** to **Not Tracked**. The template passes cost per visit. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for Adcash's pop-under, interstitial 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 Adcash macro from the template, for example `clickid=[clickid]`, `redirection_cost=[redirection_cost]` and `zone=[zone]`.

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

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

## Step 4 – Create the campaign in Adcash

1. In Adcash, start a new campaign and fill in the required details.
2. Choose the ad format, targeting and bid as usual.
3. Paste the ClickFlare campaign URL as the creative's destination URL.
4. If the campaign optimizes on conversions (a CPA goal), select the goal you created in Step 2.
5. Save and submit the campaign for approval. It runs once your account has funds and the campaign is approved.

Paste the URL exactly as ClickFlare gives it. Adcash replaces each `[...]` macro when the ad is clicked.

## Step 5 – Test the integration

Adcash lets you verify a goal before it receives real traffic. Campaigns that optimize on conversions (CPA targeting) need verified conversion tracking before they start receiving traffic.

1. In Adcash, open **Tracking → Goals** and click **Verify Tracking** on your goal.
2. Select the campaign that uses the ClickFlare campaign URL and start the test.
3. Complete the offer the way a real visitor would.
4. Check the goal in Adcash. Once the test conversion arrives, the goal is marked as verified.
5. In ClickFlare, go to **Logs → Postback Status** and filter by the campaign. A successful postback to the Adcash goal URL confirms ClickFlare sent it.

***

## Tracking several events

In Adcash each goal is one event. To send a lead and a sale separately, create two goals in Adcash and note each goal ID. The postbacks differ only in their goal `id`:

```text theme={null}
https://www.pixelhere.com/et/event.php?advertiser=ADVERTISER_ID&cid={external_id}&value={payout}&id=LEAD_GOAL_ID
https://www.pixelhere.com/et/event.php?advertiser=ADVERTISER_ID&cid={external_id}&value={payout}&id=SALE_GOAL_ID
```

1. In ClickFlare, create a [custom conversion](/docs/en/settings/custom-conversions.md) for each step, for example `lead` and `purchase`.
2. On the Adcash traffic source, click **+ Another postback URL** once per extra event.
3. Map each postback to its ClickFlare event: the `lead` custom conversion to the lead goal URL, `purchase` to the sale goal URL.
4. Verify each goal in Adcash.

> **Sending only one event**
>
> If Adcash should only learn from your final sale, keep a single postback and map it to that event. Earlier steps (leads, add to carts) still show in ClickFlare. They just don't reach Adcash.
>
> 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's Cost row maps Adcash's `[redirection_cost]` macro to ClickFlare's `{cost}` token. Adcash fills in the cost of each visit when the ad is clicked, and ClickFlare records it against that visit.

To use it, set the campaign's **Cost Model** to **Not Tracked**. ClickFlare then reads the cost from the campaign URL instead of a fixed value, so your Cost, Profit and ROI follow what Adcash actually charged.

Check the cost in ClickFlare against Adcash's own statistics for the first days. If they drift, for example because of adjustments Adcash makes after the click, correct the totals with a [manual cost upload](/docs/en/settings/manual-cost-upload.md). ClickFlare has no Adcash cost API integration. See [Cost Models](/docs/en/core-platform-concepts/cost-models.md) and [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 Adcash, the feed reports revenue hours or days after the click. To pass that revenue to Adcash once it arrives, see [Sending Delayed Revenue to Traffic Sources](/docs/en/advanced-tracking-configuration/how-to-send-delayed-revenue-to-traffic-sources.md).

***

## Troubleshooting

> **The Adcash goal won't verify**
>
> * The campaign URL in Adcash is missing `clickid=[clickid]`, or the macro was edited. Copy the URL from ClickFlare again.
> * The postback still contains `REPLACE_ADVERTISER_ID` or `REPLACE_GOAL_ID`.
> * `{external_id}` in the postback was replaced with another tracker's token such as `{clickid}`. ClickFlare only knows `{external_id}` and sends anything else as literal text.
> * The goal `id` in the postback belongs to a different goal than the one you are verifying.
> * The `external_id` row was removed from the traffic source.

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

> **Adcash shows conversions with no value**
>
> The postback has no payout. Check that it still contains `value={payout}`, as in the template. If you pasted Adcash's own URL over it, replace `INSERT_PRICE_VALUE` with `{payout}`.

> **Cost is zero in ClickFlare**
>
> * The campaign's **Cost Model** is not **Not Tracked**, or a fixed value overrides it.
> * The Cost row was removed or edited, so `redirection_cost=[redirection_cost]` is missing from the campaign URL.
> * The URL was pasted somewhere Adcash doesn't replace macros.

> **Zone or supply source columns are empty**
>
> The macros were not replaced, usually because the URL was edited or pasted with curly braces instead of square brackets. Paste the campaign URL from ClickFlare unchanged. 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 Adcash traffic source for all my Adcash campaigns?

**A1:** Yes, as long as they report to the same goal. The postback is set once on the traffic source and every campaign using it sends conversions the same way. Create a second Adcash traffic source if a campaign needs a different goal or event setup.

> **Q2:** Why does the template's postback contain `REPLACE_ADVERTISER_ID` and `REPLACE_GOAL_ID`?

**A2:** Every Adcash postback carries your own advertiser ID and the ID of one goal. ClickFlare can't know them, so the template leaves placeholders. Copy both from the goal's tracking code in Adcash, as described in Step 2.

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

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

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

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

> **Q5:** Do I need the postback if I only buy on CPM or CPC?

**A5:** It is optional, but recommended. Without it, Adcash cannot run conversion-based optimization, and CPA-target campaigns need verified tracking before they receive traffic.

## 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)**
>
> Split leads and sales into separate events.

> **[Cost models](/docs/en/core-platform-concepts/cost-models.md)**
>
> How Auto, CPC and CPA 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.