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

# TaurusX as a Traffic Source

> Track TaurusX DSP Web Promotion campaigns in ClickFlare and send conversions back to TaurusX as API events with payout.

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

TaurusX is a programmatic DSP (demand-side platform). It buys in-app and mobile web inventory in real time, with banner, native, video, video end card and playable creatives. It runs two kinds of campaigns: App Promotion, measured through a mobile measurement partner, and Web Promotion, measured with the TaurusX Pixel or with server-side API events.

This guide sets up TaurusX as a traffic source in ClickFlare for Web Promotion campaigns. It covers passing TaurusX's click data into your reports and sending conversions back to TaurusX as API events, so its CPA bidding and your stats agree.

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

The TaurusX template needs some work before launch. Its postback has an event name to fill in, one row has a stray space, and the Cost row is empty. This guide goes through each one.

## At a glance

| | |
| - | - |
| **Ad formats** | Banner, native, video, video end card, playable, in apps and on the mobile web |
| **Click ID macro** | `__CLICK_ID__`, mandatory for conversion tracking |
| **Conversion tracking** | S2S postback to `pb.taurusx.com`, as a TaurusX API event |
| **Payout passed back** | Yes, in the `event_value` parameter |
| **Multiple events** | Yes, one postback per `event_name` |
| **Cost** | Not passed. The template's Cost row is empty. Cost Model: **CPC** or **CPA**. |
| **Conversion API** | No ClickFlare integration. The postback itself feeds TaurusX's API events. |

## How it works

**1. TaurusX sends the click**

A visitor clicks your ad. TaurusX opens your ClickFlare campaign URL and fills in its macros: the click ID in `click_id`, plus the campaign, ad group, creative, device, OS, language and country.

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

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

ClickFlare fires the TaurusX postback, replacing `{external_id}` with the stored TaurusX click ID and `{payout}` with the revenue. TaurusX records it as the API event named in `event_name` and matches it to the original click.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`click_id`) and *TaurusX's* macro (`__CLICK_ID__`). The template does this for you. In the **postback URL** you write *TaurusX's* parameter (`click_id`) and *ClickFlare's* token (`{external_id}`). The parameter name is the same on both sides. Only the value 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).
* **Create an API event in TaurusX first.** TaurusX won't save an ad without an asset. Go to **Assets > Events**, click **Manage** under **API Events**, click **Create API Event**, name it, select the events you want to track and click **Confirm**. Note the exact event names. One of them goes into the postback.
* **Decide which conversions TaurusX should receive.** TaurusX's CPA bidding optimizes on the event you choose in the ad group. If your funnel has several steps, decide now which ones to send. See [Tracking several events](#tracking-several-events).

> [!NOTE]
>
> ClickFlare is not a mobile measurement partner. For App Promotion campaigns (installs and in-app events), TaurusX expects an MMP such as AppsFlyer, Adjust, Singular, Tenjin, Kochava or Branch. Use this template for Web Promotion campaigns.

***

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

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

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

| Name | TS Parameter | TS Token (TaurusX macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| Cost | *(empty)* | *(empty)* | `{cost}` | Nothing. See [Cost](#cost). |
| External ID | `click_id` | `__CLICK_ID__` | `{external_id}` | TaurusX's click ID. Required for the postback. |
| Creative ID | `creative_id` | `__CID__` | `{trackingField1}` | The creative ID |
| Creative Name | `creative_name` | `__CID_NAME__` | `{trackingField2}` | The creative name |
| Ad Group Id | `adgroup_id` | ` __AID__` (with a leading space) | `{trackingField3}` | The ad group ID. Remove the space, see below. |
| Ad Group Name | `adgroup_name` | `__AID_NAME__` | `{trackingField4}` | The ad group name |
| Campaign Id | `campaign_id` | `__CAMPAIGN_ID__` | `{trackingField5}` | The TaurusX campaign ID |
| Campaign Name | `campaign_name` | `__CAMPAIGN_NAME__` | `{trackingField6}` | The TaurusX campaign name |
| iOS User Advertising Identifier | `idfa` | `__IDFA__` | `{trackingField7}` | The iOS advertising ID, when available |
| Android User Advertising Identifier | `gaid` | `__GAID__` | `{trackingField8}` | The Android advertising ID, when available |
| The IP address of the user request | `ip` | `__IP__` | `{trackingField9}` | The visitor's IP address |
| UserAgent of the user | `ua` | `__UA__` | `{trackingField10}` | The full user agent |
| User language | `la` | `__LA__` | `{trackingField11}` | The device language |
| Device Model | `device_model` | `__DEVICE_MODEL__` | `{trackingField12}` | The device model |
| Device Make | `device_make` | `__DEVICE_MAKE__` | `{trackingField13}` | The device maker |
| Operating System | `os` | `__OS__` | `{trackingField14}` | The operating system |
| User's country code | `localcountry` | `__LOCALCOUNTRY__` | `{trackingField15}` | The visitor's country code |

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

Each tracking field becomes a column you can group reports by. Ad group, creative and device are the ones you will use most. They map straight to the levels you control in TaurusX: ad groups hold the targeting and bid, and creatives rotate inside them.

> [!WARNING]
>
> The **Ad Group Id** row's TS Token is ` __AID__`, with a space before the macro. Click into the field, delete the space so it reads `__AID__`, and save. With the space, the campaign URL carries `adgroup_id=%20__AID__` or a raw space, and the macro may not be replaced.

> [!WARNING]
>
> Don't change or remove the **External ID** row. Without `__CLICK_ID__` in the campaign URL, TaurusX cannot match the postback to a click.

To pass more TaurusX data, click **Add Parameter**, give it a name and parameter, and enter the TaurusX macro as the **TS Token**. ClickFlare assigns the next free tracking field. TaurusX doesn't publish its macro list, so ask your TaurusX account manager before adding new ones.

## Step 2 – Set up the postback

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

### Get the event name from TaurusX

1. In TaurusX, go to **Assets > Events** and click **Manage** under **API Events**.
2. Open the API event you created and note the name of the event to send, exactly as it appears. For a purchase, that is usually `purchase` from TaurusX's standard events.

TaurusX's standard events include `registration`, `login`, `add_to_cart`, `checkout`, `purchase`, `start_trial`, `view_content` and `search`. If your event isn't on the list, TaurusX lets you add it with **+ Custom Event**.

### 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://pb.taurusx.com/general/event?click_id={external_id}&event_name=REPLACE&event_value={payout}
```

It already sends the click ID (`{external_id}`) and the payout (`{payout}`), both as ClickFlare tokens.

![The Traffic source postback URL switched on, showing the TaurusX template's postback](https://mintcdn.com/clickflare/j4F_mr_BIrMz-iaH/images/integrations/templates/taurusx/postback.png?fit=max\&auto=format\&n=j4F_mr_BIrMz-iaH\&q=85\&s=69ba5c0b3f3e19e10aebd39c61036572)

3. Replace `REPLACE` with the event name from your TaurusX API event. For a purchase:

```text theme={null}
https://pb.taurusx.com/general/event?click_id={external_id}&event_name=purchase&event_value={payout}
```

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 TaurusX traffic source selected.

> [!WARNING]
>
> Replace `REPLACE` with an event name that exists in your TaurusX API event, spelled exactly the same. If `REPLACE` stays in the postback, TaurusX receives an event it doesn't know and can't count it toward your optimization event.

`event_value` carries the payout. TaurusX reports spend in USD, and its help center doesn't name another currency for event values, so send USD payouts. 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**. Use **CPA** if you bill on CPA in TaurusX, otherwise **CPC**. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for TaurusX.
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 TaurusX macro from the template, for example `click_id=__CLICK_ID__` and `adgroup_id=__AID__`.

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

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 TaurusX

1. In TaurusX, create a campaign. Choose **Web Promotion** as the promotion objective, name it and set the budget.
2. Create an ad group. As the promotion target, choose **Web** and select the API event you created as the optimization event.
3. Set the billing method, bidding strategy, targeting, budget and schedule. For CPA bidding, the event must already be set up in the API event.
4. Under the tracking links, paste the ClickFlare campaign URL into **Landing Page URL**. Leave **Click Tracking URL** and **Impression Tracking URL** empty unless your TaurusX account manager tells you otherwise.
5. Add your creatives and submit the ad.

Paste the URL exactly as ClickFlare gives it. TaurusX replaces each `__...__` macro when the ad is clicked.

> [!NOTE]
>
> The promotion target can't be changed after the ad group is created. If you picked App instead of Web, create a new ad group.

## Step 5 – Test the integration

TaurusX's help center doesn't describe a test tool for API events. Test with a live click instead.

1. Launch the ad group with a small budget.
2. In ClickFlare, open the campaign's report and check that **External ID** and the ad group and creative columns are filled in. A value like `__CLICK_ID__` means TaurusX didn't replace the macro in the field you used. Ask your TaurusX account manager which field replaces macros.
3. Complete the offer yourself through the campaign URL, or wait for a real conversion.
4. In ClickFlare, go to **Logs → Postback Status** and filter by the campaign. A successful request to `pb.taurusx.com` confirms ClickFlare sent it. Check that `event_name` shows your event and not `REPLACE`.
5. In TaurusX, check that the event appears under **Assets > Events** and in the ad group's performance report.

***

## Tracking several events

TaurusX separates events by `event_name`. Each event you send needs its own postback:

```text theme={null}
https://pb.taurusx.com/general/event?click_id={external_id}&event_name=registration&event_value={payout}
https://pb.taurusx.com/general/event?click_id={external_id}&event_name=purchase&event_value={payout}
```

1. Add each event to your TaurusX API event, with the same names.
2. In ClickFlare, create a [custom conversion](https://clickflare.com/docs/en/settings/custom-conversions.md) for each step, for example `registration` and `purchase`.
3. On the TaurusX traffic source, click **+ Another postback URL** once per extra event.
4. Map each postback to its ClickFlare event: the `registration` custom conversion to the `event_name=registration` URL, `purchase` to `event_name=purchase`.
5. In the TaurusX ad group, choose the event to optimize for.

> **Rules for multi-event postbacks**
>
> * One postback per event. Don't combine events in one URL.
> * Event names must match the TaurusX API event exactly, including case.
> * Send revenue only on events that have revenue. For a registration with no payout, `event_value` arrives as 0.

> **Sending only one event**
>
> If TaurusX 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 TaurusX.
>
> 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.

> **Search arbitrage events**
>
> TaurusX has a **Search Arbitrage** flag on API events. Turning it on preloads 6 standard events and offers 2 optional ones. TaurusX's standard events include `term_view`, `term_click`, `ad_view`, `ad_click`, `revenue_estimated` and `revenue_finalized`. Map each one to the matching ClickFlare custom conversion, one postback per event, and check the preloaded names in your API event before you build the URLs.

## Cost

The template passes no cost. Its Cost row has an empty TS Parameter and TS Token, so nothing is added to the campaign URL. TaurusX doesn't publish a cost macro.

Choose the Cost Model by how you pay TaurusX:

* **CPA billing:** set the **Cost Model** to **CPA** and enter your price per conversion.
* **CPM billing:** set the **Cost Model** to **CPC** and enter your effective cost per click (spend divided by clicks). TaurusX's banner, native and video ads get far fewer clicks than impressions, so the CPM bid divided by 1,000 would understate your cost.

> [!NOTE]
>
> Effective CPC is an estimate. After launch, compare ClickFlare's **Cost** column with TaurusX's spend and correct it with a [manual cost upload](https://clickflare.com/docs/en/settings/manual-cost-upload.md).

ClickFlare has no cost integration for TaurusX. 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 TaurusX, the feed reports revenue hours or days after the click. To pass that revenue to TaurusX 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 TaurusX**
>
> * `event_name` is still `REPLACE`, or doesn't match an event in your TaurusX API event.
> * **Traffic source postback URL** is off on the TaurusX 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 TaurusX returned.

> **External ID is empty or shows the raw click ID macro**
>
> TaurusX didn't replace the macro. Check that you pasted the campaign URL unchanged, and ask your TaurusX account manager whether macros are replaced in **Landing Page URL** or only in **Click Tracking URL**. Without a real click ID, TaurusX can't match the postback.

> **The ad group column is empty or shows the raw macro**
>
> The **Ad Group Id** row still has the leading space in ` __AID__`. Remove it, save the traffic source, and copy the campaign URL again. See [Traffic Source Tokens Arriving Empty](https://clickflare.com/docs/en/troubleshooting/tokens-arriving-empty.md).

> **Cost is zero in ClickFlare**
>
> The template's Cost row is empty, so no cost comes from the URL. Set the campaign's Cost Model to **CPC** or **CPA**, as described in [Cost](#cost).

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 TaurusX traffic source for all my TaurusX campaigns?

**A1:** Yes, as long as they optimize on the same event names. The postback is set once on the traffic source. Create a second TaurusX traffic source if a campaign needs a different `event_name`.

> **Q2:** Can I track TaurusX App Promotion campaigns with ClickFlare?

**A2:** Not for attribution. TaurusX attributes app installs and in-app events through an MMP. ClickFlare tracks web funnels: use Web Promotion with an API event.

> **Q3:** Should I use the TaurusX Pixel or the ClickFlare postback?

**A3:** Pick one per event. The pixel runs in the visitor's browser on your site. The postback is server to server and works on offers you don't control, such as affiliate offers. For affiliate funnels, use the postback.

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

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

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

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