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

# RichAds Push as a Traffic Source

> Track RichAds push campaigns in ClickFlare: the RichAds push template's macros, the xml.auxml.com postback with payout, and per-click cost.

![RichAds Push traffic source template](https://mintcdn.com/clickflare/0jaeWC_DJvLt2SMH/images/integrations/covers/templates/richads-push.png?fit=max\&auto=format\&n=0jaeWC_DJvLt2SMH\&q=85\&s=d2f444080fd578e4fabe5afdbbd5453d)

RichAds is a self-serve ad network. Its push side, RichPush, sells classic push notification traffic, bought per click. This guide sets up RichAds push campaigns as a traffic source in ClickFlare. It covers passing RichAds' click data into your reports and sending conversions, with payout, back to RichAds so its optimization tools and your stats agree.

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

> [!NOTE]
>
> ClickFlare has two RichAds templates. Pick **RichAds push** for push notification campaigns, which this page covers. Pick **RichAds pops** for popunder campaigns. The two use different cost macros. See [RichAds as a Traffic Source](https://clickflare.com/docs/en/integrations/richads-as-a-traffic-source.md) for the pops setup.

## At a glance

| | |
| - | - |
| **Ad format** | Push notifications (RichPush) |
| **Click ID macro** | `[CLICK_ID]`, required for conversion tracking |
| **Conversion tracking** | S2S postback to `xml.auxml.com` |
| **Payout passed back** | Yes, in the `price` parameter |
| **Multiple events** | Not documented by RichAds. Send one event. |
| **Cost** | Passed per click by the template, as the winning price of the click (`[BID_PRICE]`). Cost Model: **Not Tracked**. |
| **Conversion API** | No |

## How it works

**1. RichAds sends the click**

A subscriber clicks your push notification. RichAds opens your ClickFlare campaign URL and fills in its macros: the click ID in `click_id`, the winning price in `bid_price`, plus the publisher, site, subscriber list, country, OS and other details.

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

ClickFlare saves the value of `click_id` 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 RichAds**

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

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`click_id`) and *RichAds'* macro (`[CLICK_ID]`). The template does this for you. In the **postback URL** you write *RichAds'* parameter (`key`) 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).
* **Plan to set up the postback before launch.** RichAds' optimization tools, such as automated rules, micro bidding, Target CPA and SmartCPC, run on the conversions RichAds receives. Without the postback they have nothing to work with.
* **Decide which conversion RichAds should receive.** RichAds optimizes on what you send it. If your funnel has several steps (lead, then sale), choose the one that matters most.

***

## Step 1 – Create the campaign and the RichAds Push traffic source

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

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

| Name | TS Parameter | TS Token (RichAds macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| cost | `bid_price` | `[BID_PRICE]` | `{cost}` | The winning price of the click. See [Cost](#cost). |
| externalId | `click_id` | `[CLICK_ID]` | `{external_id}` | RichAds' click ID. Required for the postback. |
| Campaign ID | `campaign_id` | `[CAMPAIGN_ID]` | `{trackingField1}` | Your RichAds campaign ID |
| Campaign name | `campaign_name` | `[CAMPAIGN_NAME]` | `{trackingField2}` | Your RichAds campaign name |
| Creative ID | `creative_id` | `[CREATIVE_ID]` | `{trackingField3}` | The creative that was clicked |
| Publisher ID | `publisher_id` | `[PUBLISHER_ID]` | `{trackingField4}` | The publisher. One publisher can own several sites. |
| Site ID | `site_id` | `[SITE_ID]` | `{trackingField5}` | The website the subscriber came from |
| Country | `country` | `[COUNTRY]` | `{trackingField6}` | The visitor's country |
| OS | `os` | `[OS]` | `{trackingField7}` | The OS name and version |
| IP | `ip` | `[IP]` | `{trackingField8}` | The visitor's IP address |
| User ID | `user_id` | `[USER_ID]` | `{trackingField9}` | A unique ID for the visitor |
| Subscriber list ID | `sub_list_id` | `[SUB_LIST_ID]` | `{trackingField10}` | The subscriber list. Switched off in the template. |

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

Each tracking field becomes a column you can group reports by. `publisher_id`, `site_id` and `sub_list_id` are the ones you will use most: they tell you which sources convert, so you can blacklist them or raise bids on them in RichAds.

The **Subscriber list ID** row ships switched off. Turn it on if you want subscriber list reports. `[SUB_LIST_ID]` is a push-only macro, and subscriber lists are a common unit for push optimization.

> [!WARNING]
>
> Don't change or remove the `externalId` row. Without `click_id=[CLICK_ID]` in the campaign URL, ClickFlare has no RichAds click ID to send back, and RichAds cannot match your conversions.

To pass more RichAds data, click **Add Parameter**, give it a name and parameter, and enter the RichAds macro as the **TS Token**. ClickFlare assigns the next free tracking field. RichAds' macro list also includes `[COUNTRY_CODE]`, `[REGION]`, `[CITY]`, `[OS_ONLY]`, `[OS_VER]` and `[USERAGENT]`. Check the macros your RichAds campaign setup lists before adding them.

## Step 2 – Set up the postback

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

### 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 template's postback appears:

```text theme={null}
http://xml.auxml.com/log?action=conversion&key={external_id}&price={payout}
```

![The Traffic source postback URL switched on, showing the RichAds Push template's postback](https://mintcdn.com/clickflare/0jaeWC_DJvLt2SMH/images/integrations/templates/richads-push/postback.png?fit=max\&auto=format\&n=0jaeWC_DJvLt2SMH\&q=85\&s=6e95aa7e224ff2da9d438a5657f1f61e)

It already sends the click ID (`{external_id}`) in `key` and the payout (`{payout}`) in `price`, both as ClickFlare tokens. There is no account placeholder to replace. RichAds identifies your account from the click ID.

3. Optionally, change `http://` to `https://`. RichAds' postback as other trackers publish it starts with `https://xml.auxml.com`. Both point at the same endpoint.
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 RichAds traffic source selected.

### Check it against RichAds

When you create a campaign in RichAds, the **Tracking** block below the creatives shows a postback URL for the tracker you select. Compare it with the template's. Apart from the click ID token, which is ClickFlare's `{external_id}` here, the domain and the `action`, `key` and `price` parameters should match.

> [!WARNING]
>
> Keep `key={external_id}` exactly as it is. `key` is RichAds' parameter for its click ID. If you replace `{external_id}` with RichAds' `[CLICK_ID]` macro, ClickFlare sends the brackets as literal text and RichAds rejects the conversion.

`price` is the conversion's revenue. RichAds uses it for its CPA-based tools and shows it in your RichAds stats. Send it in the same currency your RichAds account uses. 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** to **Not Tracked**, so ClickFlare uses the cost RichAds passes. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for push 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 RichAds macro from the template, for example `click_id=[CLICK_ID]` and `site_id=[SITE_ID]`.

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

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 RichAds

1. In RichAds, go to **Campaigns** and create a new push campaign.
2. Choose targeting, creatives and bid as usual.
3. Paste the ClickFlare campaign URL into the campaign's **Destination URL** field.
4. Submit the campaign for moderation.

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

## Step 5 – Test the integration

Run a small test before you scale.

1. Launch the campaign with a low budget, or wait for the first clicks.
2. In ClickFlare, open the campaign report and group by a RichAds column, for example **Site ID**. Real values, not `[SITE_ID]`, mean the macros are being replaced.
3. Complete the offer the way a real visitor would, or wait for the first real conversion.
4. In ClickFlare, go to **Logs → Postback Status** and filter by the campaign. A successful request to `xml.auxml.com` confirms ClickFlare sent the postback.
5. In RichAds, check the campaign statistics. The conversion should appear there too.

If the postback status is fine but RichAds shows nothing, check that the click came from a real RichAds click, with a real `[CLICK_ID]` value. A conversion from a hand-typed test URL has no RichAds click ID for RichAds to match.

***

## Sending only one event

RichAds' public documentation describes one postback with one payout, and no event parameter. Send RichAds the conversion you want it to optimize on.

> **Choosing the event RichAds receives**
>
> Map the postback to your final conversion, for example a `purchase` [custom conversion](https://clickflare.com/docs/en/settings/custom-conversions.md). Earlier steps (leads, add to carts) still show in ClickFlare. They just don't reach RichAds.
>
> If RichAds only receives your final sale, Target CPA and SmartCPC aim at the cost of that sale.

> **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 RichAds' `[BID_PRICE]` macro in `bid_price`. RichAds describes it as the winning price of the click. 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]
>
> `[BID_PRICE]` reflects the click price on CPC campaigns. If you buy RichAds push traffic another way, compare the **Cost** column with your RichAds spend after launch. If it doesn't match, switch the Cost Model to **CPC** and enter your price per click. On CPM, enter your CPM bid divided by 1,000 as the cost value.

`[BID_PRICE]` is push-only. The pops template uses `[CPV_PRICE]` instead, which is one reason to pick the right template.

The template has no cost integration attached. When the recorded spend differs from your RichAds 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 you run search arbitrage (RSOC or AFD) behind RichAds, the feed reports revenue hours or days after the click. To pass that revenue to RichAds 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 RichAds**
>
> * **Traffic source postback URL** is off on the RichAds 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.
> * The conversion's visit has no External ID, so `key` went out empty. Check that `click_id=[CLICK_ID]` is in the URL in RichAds.
> * Check **Logs → Postback Status**: a failed request shows the status code RichAds returned.

> **RichAds shows conversions with no revenue**
>
> The template sends `price={payout}`, so it was removed or edited. Restore `&price={payout}` at the end of the postback.
>
> Also check that the offer sends a payout to ClickFlare. If ClickFlare records the conversion with a payout of 0, RichAds receives 0.

> **Cost is 0 or wrong**
>
> * The campaign's Cost Model is not **Not Tracked**, so ClickFlare ignores `bid_price`.
> * The traffic source was created from the **RichAds pops** template, which reads `[CPV_PRICE]`. RichPush fills `[BID_PRICE]`. Create the traffic source again from **RichAds push**.

> **Columns show \[SITE\_ID] or other macros as text**
>
> The macros were not replaced, usually because the URL was pasted somewhere RichAds doesn't process macros, or was edited. Paste the campaign URL from ClickFlare unchanged. 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 one RichAds traffic source for both push and pops campaigns?

**A1:** No. The two templates pass cost with different macros: `[BID_PRICE]` for push, `[CPV_PRICE]` for pops. Create one traffic source from each template and pick the one that matches the campaign's format.

> **Q2:** Can I use the same RichAds Push traffic source for all my push campaigns?

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

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

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

> **Q4:** Do I need to add my RichAds account ID to the postback?

**A4:** No. The postback has no account placeholder. RichAds matches the conversion through the click ID in `key`.

> **Q5:** Should I use Redirect or Direct tracking with RichAds?

**A5:** Redirect is the usual choice for push traffic. Use Direct only if RichAds must see your lander's domain as the destination. See [Direct Campaign Tracking](https://clickflare.com/docs/en/campaigns/direct-campaign-tracking.md).

## Related

> **[RichAds pops](https://clickflare.com/docs/en/integrations/richads-as-a-traffic-source.md)**
>
> The setup for RichAds popunder campaigns.

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

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