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

# TrafficJunky as a Traffic Source

> Track TrafficJunky campaigns in ClickFlare: capture the ACLID click ID and spot data, and post conversions to your TrafficJunky conversion tracker.

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

TrafficJunky is a self-serve, CPM-bidding ad network focused on adult traffic. It sells ad spots on a large network of high-traffic adult sites. This guide sets up TrafficJunky as a traffic source in ClickFlare. It covers passing TrafficJunky's click data into your reports and sending conversions back to TrafficJunky through its conversion tracker, so its stats and yours agree.

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

## At a glance

| | |
| - | - |
| **Buying model** | CPM bidding on ad spots |
| **Click ID macro** | `{ACLID}`, mandatory for conversion tracking |
| **Conversion tracking** | S2S postback to `ads.trafficjunky.net`, built from a TrafficJunky **Conversion Tracker** |
| **Payout passed back** | Not by the template. Add `&ctv={payout}` to send it. |
| **Multiple events** | Yes, one conversion tracker and one postback per event |
| **Cost** | Not passed by the template. Cost Model: **CPC**, with your cost per visit. |
| **Conversion API** | No |

## How it works

**1. TrafficJunky sends the click**

A visitor clicks your ad. TrafficJunky opens your ClickFlare campaign URL and fills in its macros: the click ID in `ACLID`, plus the campaign, site, spot, location, banner and ad creative.

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

ClickFlare saves the value of `ACLID` 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 TrafficJunky**

ClickFlare fires the TrafficJunky postback, replacing `{external_id}` with the stored TrafficJunky click ID. TrafficJunky matches it to the original click and credits the conversion to your tracker.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`ACLID`) and *TrafficJunky's* macro (`{ACLID}`). The template does this for you. In the **postback URL** you write *TrafficJunky's* parameter (`aclid`, lowercase) 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](/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).
* **Create a conversion tracker in TrafficJunky.** Its `a` and `member_id` values go into the postback URL. You create it in Step 2.
* **Decide which conversions TrafficJunky should receive.** If your funnel has several steps (sign-up, 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 TrafficJunky traffic source

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

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

| Name | TS Parameter | TS Token (TrafficJunky macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| externalId | `ACLID` | `{ACLID}` | `{external_id}` | TrafficJunky's click ID. Required for the postback. |
| Campaign ID | `CampaignID` | `{CampaignID}` | `{trackingField1}` | The TrafficJunky campaign ID |
| Campaign Name | `CampaignName` | `{CampaignName}` | `{trackingField2}` | The TrafficJunky campaign name |
| Site Name | `SiteName` | `{SiteName}` | `{trackingField3}` | The site that showed the ad |
| Spot ID | `SpotID` | `{SpotID}` | `{trackingField4}` | The ad spot (placement) ID |
| Spot name | `SpotName` | `{SpotName}` | `{trackingField5}` | The ad spot name |
| Location | `Location` | `{Location}` | `{trackingField6}` | The location value TrafficJunky reports for the click |
| Banner ID | `BanID` | `{BanID}` | `{trackingField7}` | The banner ID |
| Banner Name | `BanName` | `{BanName}` | `{trackingField8}` | The banner name |
| Ad Creative ID | `AdID` | `{AdID}` | `{trackingField9}` | The ad creative ID |

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

Each tracking field becomes a column you can group reports by. `SiteName` and `SpotID` are the ones you will use most: TrafficJunky sells by spot, so they tell you which sites and spots convert and where to raise or drop your bids. `AdID` tells you which creative wins.

The template has no Cost row: TrafficJunky passes no cost macro. See [Cost](#cost).

> [!WARNING]
>
> Don't change or remove the `externalId` row. Without `{ACLID}` in the campaign URL, TrafficJunky has no click ID to match, and the postback can't credit any conversion.

To pass more TrafficJunky data, click **Add Parameter**, give it a name and parameter, and enter the TrafficJunky macro as the **TS Token**. ClickFlare assigns the next free tracking field. Ten of the twenty tracking fields are still free. Check which macros your TrafficJunky account offers before adding them.

## Step 2 – Set up the postback

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

### Create a conversion tracker in TrafficJunky

1. In TrafficJunky, open **Tools** and go to **Conversion Tracker**. Click **New Tracker**.
2. Enter a name, for example `ClickFlare`, and select the event type you want to track.
3. Click **Add Tracker**.
4. Find the tracker in the list and click **View** in its **Invocation Code** column.
5. Open the **Postback URL** tab. TrafficJunky generates the postback for this tracker, in this format:

```text theme={null}
https://ads.trafficjunky.net/ct?a=TRACKER_VALUE&member_id=YOUR_MEMBER_ID&cb=[RANDOM_NUMBER]&cti=[TRANSACTION_UNIQ_ID]&ctv=[VALUE_OF_THE_TRANSACTION]&ctd=[TRANSACTION_DESCRIPTION]&aclid=[ACLID]
```

6. Copy the values of `a` and `member_id`. You need both.

| Parameter | What it is |
| - | - |
| `a` | Identifies this conversion tracker |
| `member_id` | Your TrafficJunky account |
| `aclid` | The click ID. ClickFlare fills it. |
| `ctv` | The value of the conversion (payout) |
| `cti` | A unique transaction ID |
| `ctd` | A transaction description |
| `cb` | A random number used as a cache buster |

### 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}
http://ads.trafficjunky.net/tj_ads_pt?a=REPLACE&member_id=REPLACE&aclid={external_id}
```

It already sends the click ID (`{external_id}`) in TrafficJunky's `aclid` parameter. It does not send a payout.

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

3. Replace the first `REPLACE` (after `a=`) with your tracker's `a` value.
4. Replace the second `REPLACE` (after `member_id=`) with your `member_id`.
5. To send the payout, add `&ctv={payout}`. To send ClickFlare's transaction ID, add `&cti={txid}`. The result:

```text theme={null}
http://ads.trafficjunky.net/tj_ads_pt?a=TRACKER_VALUE&member_id=YOUR_MEMBER_ID&aclid={external_id}&ctv={payout}&cti={txid}
```

6. Compare it with the URL TrafficJunky generated. If TrafficJunky's starts with `https://ads.trafficjunky.net/ct` instead of `.../tj_ads_pt`, change the start of the template URL to match it. Keep the parameters as above.
7. 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.
8. Click **Save**. You are back in the campaign editor with the TrafficJunky traffic source selected.

> [!WARNING]
>
> The template has two `REPLACE` placeholders. Replace both: `a=` takes the tracker's value and `member_id=` takes your account's. If either `REPLACE` stays in the postback, TrafficJunky can't match the conversion to your tracker. Don't copy TrafficJunky's `[ACLID]`, `[RANDOM_NUMBER]` or other bracketed placeholders into ClickFlare: ClickFlare sends them as literal text.

If your offers pay in a different currency from your TrafficJunky account, 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 **CPC** and enter your expected cost per visit. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for TrafficJunky banners.
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 TrafficJunky macro from the template, for example `ACLID={ACLID}` and `SpotID={SpotID}`.

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

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

## Step 4 – Create the campaign in TrafficJunky

1. In TrafficJunky, start a new campaign and fill in the required details: format, spots, targeting and bids.
2. Paste the ClickFlare campaign URL as the ad's **Target URL**.
3. Save the campaign. It runs once your account has funds and the campaign passes TrafficJunky's approval.

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

## Step 5 – Test the integration

There is no TrafficJunky test tool that fires a test conversion, so test with the first live clicks.

1. Launch the campaign with a small budget.
2. In ClickFlare, check that visits arrive and that the **Spot ID** and **Site Name** columns are filled. If they show `{SpotID}` or are empty, the URL in TrafficJunky was edited.
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 `ads.trafficjunky.net` confirms ClickFlare sent it. Check that `a`, `member_id` and `aclid` all carry real values.
5. In TrafficJunky, check the campaign's conversion stats for the tracker. The conversion appears once TrafficJunky has processed it.

***

## Tracking several events

In TrafficJunky, each conversion tracker has its own invocation code. To track a sign-up and a sale separately, create one tracker per step and send each event to its own tracker:

```text theme={null}
http://ads.trafficjunky.net/tj_ads_pt?a=SIGNUP_TRACKER_VALUE&member_id=YOUR_MEMBER_ID&aclid={external_id}
http://ads.trafficjunky.net/tj_ads_pt?a=SALE_TRACKER_VALUE&member_id=YOUR_MEMBER_ID&aclid={external_id}&ctv={payout}
```

1. In TrafficJunky, create a conversion tracker for each step and copy each tracker's `a` value from its invocation code.
2. In ClickFlare, create a [custom conversion](/docs/en/settings/custom-conversions.md) for each step, for example `signup` and `purchase`.
3. On the TrafficJunky traffic source, click **+ Another postback URL** once per extra event.
4. Map each postback to its ClickFlare event: the `signup` custom conversion to the sign-up tracker's URL, `purchase` to the sale tracker's URL.
5. Test each event with live traffic and check **Logs → Postback Status** for each.

> **Rules for multi-tracker postbacks**
>
> * One postback per tracker. The `a` value decides which tracker TrafficJunky credits.
> * `member_id` is the same in every postback. Only `a` changes.
> * Add `&ctv={payout}` only to events that carry revenue.
> * Compare each URL with the tracker's own invocation code before you save.

> **Sending only one event**
>
> If TrafficJunky should only see your final sale, keep a single postback and map it to that event. Earlier steps (sign-ups, add to carts) still show in ClickFlare. They just don't reach TrafficJunky.
>
> 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 no cost. TrafficJunky has no cost macro in the template's set, so ClickFlare can't read the price of each click from the URL.

On the campaign, set the **Cost Model** to **CPC** and enter your cost per visit. TrafficJunky bids on CPM, so work it out from your stats: your spend divided by the number of visits. For formats where one impression is about one visit, your CPM bid divided by 1,000 is a good start.

> [!NOTE]
>
> Don't use **Not Tracked** with this template. With no cost in the URL and no cost integration, every visit is recorded at zero cost, and your ROI looks better than it is.

ClickFlare has no TrafficJunky cost-tracking API integration. When the recorded spend differs from your TrafficJunky spend, correct it with a [manual cost upload](/docs/en/settings/manual-cost-upload.md). Upload per day and per campaign, or per spot if you want spot-level ROI. See [Cost Models](/docs/en/core-platform-concepts/cost-models.md).

## Delayed revenue

If revenue reaches ClickFlare hours or days after the click, for example from a search feed or rebills, you can still pass it to TrafficJunky 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

> **TrafficJunky shows no conversions**
>
> * One or both `REPLACE` placeholders are still in the postback. Check **Logs → Postback Status** for the URL ClickFlare actually sent.
> * The `a` value belongs to a different tracker, or was copied with extra characters.
> * The campaign URL in TrafficJunky is missing `ACLID={ACLID}`, or the macro was edited. Copy the URL from ClickFlare again.
> * The postback uses TrafficJunky's `[ACLID]` instead of ClickFlare's `{external_id}`. ClickFlare sends `[ACLID]` as literal text.
> * The `externalId` row was removed from the traffic source.

> **Conversions show in ClickFlare but not in TrafficJunky**
>
> * **Traffic source postback URL** is off on the TrafficJunky 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.
> * Your TrafficJunky invocation code uses `https://ads.trafficjunky.net/ct` and the template's `tj_ads_pt` path is not accepted. Switch the start of the URL to match the invocation code.
> * Check **Logs → Postback Status**: a failed request shows the status code TrafficJunky returned.

> **TrafficJunky shows conversions with no value**
>
> The template's postback sends no payout. Add `&ctv={payout}` at the end of the postback.

> **Cost column shows zero**
>
> The campaign's Cost Model is **Not Tracked**, and the template passes no cost. Switch to **CPC** with your cost per visit, or upload your TrafficJunky spend with a [manual cost upload](/docs/en/settings/manual-cost-upload.md).

> **Spot or site columns are empty**
>
> The macros were not replaced, usually because the URL was edited or the macro names lost their exact capitalization. Keep each macro's capitalization exactly as the template writes it, for example `{SpotID}`, not `{spotid}`. 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 TrafficJunky traffic source for all my TrafficJunky campaigns?

**A1:** Yes. The postback is set once on the traffic source and every campaign using it sends conversions to the same tracker. Create a second TrafficJunky traffic source only if some campaigns should report to a different tracker.

> **Q2:** TrafficJunky's default is a tracking pixel. Do I need it?

**A2:** No. The pixel is for sites where you can place TrafficJunky's code. With ClickFlare you use the **Postback URL** tab of the same invocation code instead, and ClickFlare calls it server to server. Don't run both, or conversions can count twice.

> **Q3:** Why is it `ACLID` in the campaign URL and `aclid` in the postback?

**A3:** They are two halves of the same value. ClickFlare reads TrafficJunky's click ID from its own `ACLID` parameter. TrafficJunky expects it back in its own `aclid` parameter. Keep both exactly as the template writes them.

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

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

> **Q5:** Do I need to send the payout?

**A5:** It is optional, but recommended. With `&ctv={payout}`, TrafficJunky shows the value of each conversion next to your spend, so you can judge spots inside TrafficJunky as well as in ClickFlare.

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

> **[Cost models](/docs/en/core-platform-concepts/cost-models.md)**
>
> How CPC, CPA and RevShare costs are calculated.

> **[Manual cost upload](/docs/en/settings/manual-cost-upload.md)**
>
> Correct spend when no cost is passed.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.