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

# RollerAds as a Traffic Source

> Track RollerAds push and OnClick campaigns in ClickFlare: pass the clickId, zone and feed data, and post conversions back to RollerAds.

![RollerAds traffic source template](https://mintcdn.com/clickflare/Z7FseNUODe2P_cAH/images/integrations/covers/templates/rollerads.png?fit=max\&auto=format\&n=Z7FseNUODe2P_cAH\&q=85\&s=009fc6cdddda6485150ae156a3c42038)

RollerAds is a self-serve ad network selling push, in-page push, OnClick (popunder) and Direct Click traffic. This guide sets up RollerAds as a traffic source in ClickFlare. It covers passing RollerAds' click data into your reports and sending conversions back to RollerAds so its CPA Goal bidding and your stats agree.

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

## At a glance

| | |
| - | - |
| **Ad formats** | Push, In-Page, OnClick, Direct Click |
| **Click ID macro** | `{clickId}`, mandatory for conversion tracking |
| **Conversion tracking** | S2S postback to `eu.rollerads.com` |
| **Account values in the postback** | Yes. Replace `REPLACE_WITH_ACCOUNT_ID` and `INDIVIDUAL_ACCESS_TOKEN` with your account number and tracking key. |
| **Payout passed back** | Not by the template |
| **Multiple events** | One postback, one conversion. Send the event RollerAds should optimize on. |
| **Cost** | Passed per click by the template (`{cost}`). Cost Model: **Not Tracked**. |
| **Conversion API** | No |

## How it works

**1. RollerAds sends the click**

A visitor clicks your ad. RollerAds opens your ClickFlare campaign URL and fills in its macros: the click ID in `externalId`, the cost in `cost`, plus the campaign, creative, zone, feed, device and other details.

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

ClickFlare saves the value of `externalId` 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 RollerAds**

ClickFlare fires the RollerAds postback, replacing `{external_id}` with the stored RollerAds click ID. RollerAds matches it to the original click.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`externalId`) and *RollerAds'* macro (`{clickId}`). The template does this for you. In the **postback URL** you write *RollerAds'* parameter (`click_id`) and *ClickFlare's* token (`{external_id}`). RollerAds and ClickFlare both use single braces, so a RollerAds macro in the postback looks valid but is never filled in.

## 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).
* **Open your RollerAds Tracking tab.** Your personal postback URL is there, with your account number and tracking key in it. Both go into the ClickFlare postback.
* **Decide which conversion RollerAds should receive.** RollerAds' CPA Goal and CPA optimization need a postback, and learn from the conversions you send. If your funnel has several steps, choose the one that matters. See [Tracking several events](#tracking-several-events).

***

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

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

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

| Name | TS Parameter | TS Token (RollerAds macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| Cost | `cost` | `{cost}` | `{cost}` | RollerAds' cost for the click. See [Cost](#cost). |
| External ID | `externalId` | `{clickId}` | `{external_id}` | RollerAds' click ID. Required for the postback. |
| Campaign ID | `campaign_id` | `{campaignId}` | `{trackingField1}` | RollerAds' campaign ID |
| Creative ID | `creative_id` | `{creativeId}` | `{trackingField2}` | The creative |
| Zone ID | `zone_id` | `{zoneId}` | `{trackingField3}` | The placement or site the click comes from |
| Feed ID | `feed_id` | `{feedId}` | `{trackingField4}` | The traffic feed the click comes from |
| Device | `device` | `{device}` | `{trackingField5}` | The device type |
| Browser | `browser` | `{browser}` | `{trackingField6}` | The browser |
| OS | `os` | `{os}` | `{trackingField7}` | The operating system |
| Country | `country` | `{country}` | `{trackingField8}` | The two-letter country code |
| ISP | `isp` | `{isp}` | `{trackingField9}` | The internet service provider |
| Carrier | `carrier` | `{carrier}` | `{trackingField10}` | The mobile carrier |

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

Each tracking field becomes a column you can group reports by. `zone_id` and `feed_id` are the ones you will use most. They tell you which placements and feeds convert, so you can exclude or bid up zones in RollerAds. RollerAds recommends passing the Feed ID to trackers, and the template already does.

> [!WARNING]
>
> Don't change or remove the `External ID` row. Without `externalId={clickId}` in the campaign URL, RollerAds has no click ID to receive back, and no conversion reaches RollerAds.

RollerAds macros are case-sensitive. `{clickId}` works, `{clickid}` does not. Keep the template's spelling.

To pass more RollerAds data, click **Add Parameter**, give it a name and parameter, and enter the RollerAds macro as the **TS Token**. ClickFlare assigns the next free tracking field. RollerAds also offers `{browserVersion}`, `{osVersion}`, `{countryName}`, `{connectionType}`, `{UserAgent}`, `{ageGroup}` (days since the push subscription) and `{format}`. `{ageGroup}` is useful on push traffic. Check the macro list in your RollerAds account before adding one.

## Step 2 – Set up the postback

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

### Get your postback values from RollerAds

1. In RollerAds, open the **Tracking** tab (`my.rollerads.com/campaigns/tracking`).
2. Copy your personal postback URL. It has the form `https://eu.rollerads.com/conversion/aid/ACCOUNT_NUMBER/TRACKING_KEY?click_id={clickId}`.
3. Note the two values after `/aid/`: first your account number, then your tracking key.

### 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://eu.rollerads.com/conversion/aid/REPLACE_WITH_ACCOUNT_ID/INDIVIDUAL_ACCESS_TOKEN?click_id={external_id}
```

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

3. Replace `REPLACE_WITH_ACCOUNT_ID` with your RollerAds account number, and `INDIVIDUAL_ACCESS_TOKEN` with your tracking key. Keep `{external_id}`, which is ClickFlare's token for the stored RollerAds click ID. The result:

```text theme={null}
https://eu.rollerads.com/conversion/aid/ACCOUNT_NUMBER/TRACKING_KEY?click_id={external_id}
```

4. Compare the result with the URL from your **Tracking** tab. Apart from the click ID token (RollerAds' `{clickId}`, ClickFlare's `{external_id}`), the two should match. If your RollerAds URL has a different host than `eu.rollerads.com`, use your host.
5. In the dropdown on the left, choose the ClickFlare event that should fire the postback. The dropdown lists the Default Events (**Conversions**, **Clicks**, **Visits**) and your Custom Conversions. 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 RollerAds traffic source selected.

> [!WARNING]
>
> Replace both placeholders. With either one still in the path, RollerAds can't tie the conversion to your account, and no conversion shows in RollerAds. ClickFlare still sends the postback, so **Logs → Postback Status** shows it as sent.

### Sending the payout

The template's postback sends only the click ID. RollerAds' guide to campaigns also mentions a payout and a conversion status you can add in the **Tracking** section when you generate the postback. If your generated URL has a payout parameter, add it to the ClickFlare postback with the parameter name RollerAds shows and the `{payout}` token as its value, for example `&PARAMETER={payout}`. Don't guess the name.

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**, so ClickFlare uses the cost RollerAds passes. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for RollerAds' push and OnClick 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 RollerAds macro from the template, for example `externalId={clickId}` and `zone_id={zoneId}`.

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

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

## Step 4 – Create the campaign in RollerAds

1. In RollerAds, create a campaign (or edit one) and choose the ad format.
2. In the general step, paste the ClickFlare campaign URL into the **Target URL** field, with all its parameters.
3. Set the targeting, the pricing model (CPC, CPM, SmartCPC, SmartCPM or CPA Goal) and the bid as usual.
4. Submit the campaign for moderation.

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

## Step 5 – Test the integration

RollerAds can check the setup from its **Tracking** section before you spend anything.

1. In RollerAds, open the **Tracking** tab, paste your ClickFlare campaign URL into the test's URL field and select **Test**.
2. Follow the test link. You land on your lander or offer through ClickFlare.
3. Complete the offer the way a real visitor would.
4. Check the result in RollerAds. A notification that the conversion is registered means the integration works.
5. In ClickFlare, go to **Logs → Postback Status** and filter by the campaign. A successful postback to `eu.rollerads.com` confirms ClickFlare sent it. Check that the request URL has a real click ID after `click_id=`, not an empty value.

***

## Tracking several events

The template sends one postback for one event. RollerAds bids on CPA Goal campaigns using the conversions it receives, so send the conversion you want it to optimize for.

1. In ClickFlare, create a [custom conversion](/docs/en/settings/custom-conversions.md) for each step of your funnel, for example `lead` and `purchase`.
2. On the RollerAds traffic source, map the postback to the event RollerAds should learn from, for example `purchase`.
3. Leave the other steps without a postback. They still show in ClickFlare's reports.

> **Sending more than one event**
>
> You can click **+ Another postback URL** and map a second event to the same RollerAds URL. RollerAds will count both as conversions, so its conversion count and CPA will mix the two steps. If RollerAds' **Tracking** tab offers separate goals in your account, use the URL it generates for each goal instead, with `{external_id}` as the click ID.

> **Sending only some conversions**
>
> 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 RollerAds' `{cost}` macro, 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.

> [!NOTE]
>
> Compare ClickFlare's **Cost** column with your RollerAds spend after launch. If it is empty or doesn't match, for example on CPM or SmartCPM campaigns, switch the Cost Model to **CPC** and enter your cost per click. On CPM bids for OnClick traffic, where one impression is one visit, that is the CPM bid divided by 1,000.

For RollerAds CPA Goal campaigns, set the Cost Model to **CPA**, with your target price per conversion, if you want ClickFlare to count cost per conversion instead of per click.

When the recorded spend differs from your RollerAds spend, correct it with a [manual cost upload](/docs/en/settings/manual-cost-upload.md). See [Cost Models](/docs/en/core-platform-concepts/cost-models.md).

ClickFlare has no cost-tracking API integration for RollerAds. The cost in the URL is the source of truth.

## Delayed revenue

If you run search arbitrage (RSOC or AFD) behind RollerAds, the feed reports revenue hours or days after the click. To pass that revenue to RollerAds 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

> **RollerAds doesn't register the test conversion**
>
> * One or both placeholders (`REPLACE_WITH_ACCOUNT_ID`, `INDIVIDUAL_ACCESS_TOKEN`) are still in the postback, or the account number and tracking key are swapped.
> * The postback has a click ID token other than `{external_id}`, for example `{externalId}` copied from an older setup. ClickFlare doesn't fill it in. In **Logs → Postback Status**, a request with no click ID after `click_id=` points to this.
> * The campaign URL in RollerAds is missing `externalId={clickId}`, or the macro was retyped as `{clickid}`. Copy the URL from ClickFlare again.
> * The `External ID` row was removed from the traffic source.

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

> **RollerAds shows conversions with no revenue**
>
> The template doesn't send a payout. Add the payout parameter from your RollerAds **Tracking** tab, with `{payout}` as its value. See [Sending the payout](#sending-the-payout).

> **Zone or feed columns are empty**
>
> The macros were not replaced, usually because the URL was edited or a macro's case changed. 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 RollerAds traffic source for all my RollerAds campaigns?

**A1:** Yes. The postback is set once on the traffic source and every campaign using it sends conversions the same way. Create a second RollerAds traffic source only if a campaign needs a different postback, for example a different event.

> **Q2:** Other trackers' guides tell me to change `{clickId}` to `{externalid}`. Should I do that?

**A2:** No. That is the token for those trackers. In ClickFlare the token is `{external_id}`, with an underscore and in lower case.

> **Q3:** Why is it `externalId` in the campaign URL and `click_id` in the postback?

**A3:** They are two halves of the same value. ClickFlare reads RollerAds' click ID from its own `externalId` parameter. RollerAds expects it back in its own `click_id` parameter. Keep both names as the template sets them.

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

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

> **Q5:** Does the template work for RollerAds CPA Goal campaigns?

**A5:** Yes, once the postback is fixed. CPA Goal and CPA optimization need the postback, because RollerAds bids on 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)**
>
> Split leads and sales into separate events.

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