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

# Revcontent as a Traffic Source

> Track Revcontent boosts in ClickFlare: capture the rc_uuid click ID and widget data, and post conversions with payout back to Revcontent.

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

Revcontent is a native content discovery network. It shows your content as recommendation widgets on publisher sites, and you buy clicks on CPC. In Revcontent, a campaign is called a **boost**. This guide sets up Revcontent as a traffic source in ClickFlare. It covers passing Revcontent's widget, content and boost data into your reports, and sending conversions, with payout, back to Revcontent so its optimization and your stats agree.

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

## At a glance

| | |
| - | - |
| **Ad formats** | Native content recommendation widgets on publisher sites |
| **Click ID** | Revcontent adds `rc_uuid` to your URL on every click. The template copies it into `externalid` with `{conversion_uuid}`, and ClickFlare reads `externalid`. |
| **Conversion tracking** | S2S postback to `trends.revcontent.com`, authenticated with your API key |
| **Payout passed back** | Yes, in the `amount` parameter. Required, and must not be zero. |
| **Multiple events** | No event parameter. Send one conversion event. |
| **Cost** | Not passed by the template. Use ClickFlare's Revcontent cost integration with Cost Model **Not Tracked**. |
| **Conversion API** | No |

## How it works

**1. Revcontent sends the click**

A visitor clicks your content in a Revcontent widget. Revcontent opens your ClickFlare campaign URL, fills in its tracking variables (widget, content, boost, headline, site) and `{conversion_uuid}`, and appends its own click ID in the `rc_uuid` parameter. `{conversion_uuid}` copies the same click ID into the `externalid` parameter.

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

ClickFlare saves the value of `externalid` as the visit's **External ID**, records the widget and content details in tracking fields, 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 Revcontent**

ClickFlare fires the Revcontent postback with your API key, replacing `{external_id}` with the stored click ID and `{payout}` with the revenue. Revcontent matches it to the click and records the conversion against the boost, content and widget.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`widget_id`) and *Revcontent's* variable (`{widget_id}`). The template does this for you. The click ID follows the same pattern: `externalid` and `{conversion_uuid}`. In the **postback URL** you write *Revcontent's* parameter (`rc_uuid`) 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).
* **Get your Revcontent API key.** It goes into the postback. You find it in Revcontent under **Account Settings**.
* **Get your Revcontent Client ID and Client Secret for cost tracking.** They are in **Account Settings**, under **Stats API Credentials**. ClickFlare's [Revcontent cost integration](/docs/en/integrations/rev-content.md) uses them to pull your spend. They are not the same as the API key.
* **Choose S2S or the Revcontent pixel, not both.** Revcontent warns that using its conversion pixel together with S2S postbacks reports every conversion twice. This guide uses the postback.

***

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

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

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

| Name | TS Parameter | TS Token (Revcontent variable) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| Cost | *empty* | *empty* | `{cost}` | Not filled in. See [Cost](#cost). |
| externalId | `externalid` | `{conversion_uuid}` | `{external_id}` | Revcontent's click ID, copied from `rc_uuid` |
| Widget ID | `widget_id` | `{widget_id}` | `{trackingField1}` | The widget the click came from, on a publisher site |
| Content ID | `content_id` | `{content_id}` | `{trackingField2}` | The piece of content (your ad) that was clicked |
| Boost ID | `boost_id` | `{boost_id}` | `{trackingField3}` | The Revcontent campaign (boost) |
| Target | `adv_targets` | `{adv_targets}` | `{trackingField4}` | The traffic type the content was served on |
| Headline | `headline` | `{content_headline}` | `{trackingField5}` | The headline of the clicked content |
| Site Name | `site_name` | `{site_name}` | `{trackingField6}` | The referring domain |

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

### How the click ID gets in

The externalId row uses `{conversion_uuid}`, a Revcontent variable that copies the click's `rc_uuid` value into a parameter of your choice. The campaign URL carries `externalid={conversion_uuid}`, and ClickFlare reads `externalid`. Revcontent still appends `rc_uuid` to the URL on its own. Nothing to set up by hand.

> [!WARNING]
>
> Don't add `rc_uuid` to your tracking variables or URLs yourself. Revcontent lists that as a cause of invalid postbacks. Also don't remove the externalId row or change its TS Parameter. Without it, `{external_id}` in the postback is empty and Revcontent marks the postback invalid.

Each tracking field becomes a column you can group reports by. `widget_id` is the one you will use most: it tells you which publisher widgets convert, so you can block or bid on them in Revcontent. `content_id` and `headline` show which creatives work.

To pass more Revcontent data, click **Add Parameter**, give it a name and parameter, and enter the Revcontent variable as the **TS Token**. ClickFlare assigns the next free tracking field. Revcontent also offers `{target_id}`, `{user_ip}`, `{city}`, `{state}` and `{country}`.

## Step 2 – Set up the postback

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

### What Revcontent's postback expects

Revcontent's endpoint is `https://trends.revcontent.com/api/v1/conversion.php`. It takes three required parameters:

| Parameter | What to send |
| - | - |
| `api_key` | Your API key from **Account Settings** |
| `rc_uuid` | The click ID Revcontent appended to the click |
| `amount` | The value of the conversion. It must not be zero. |

Two optional parameters, `user_ip` and `user_agent`, can carry the visitor's IP and user agent.

### 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://trends.revcontent.com/api/v1/conversion.php?api_key=REPLACE_WITH_YOUR_API_KEY&rc_uuid={external_id}&amount={payout}
```

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

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

3. Replace `REPLACE_WITH_YOUR_API_KEY` with the API key from your Revcontent **Account Settings**. The result:

```text theme={null}
https://trends.revcontent.com/api/v1/conversion.php?api_key=YOUR_API_KEY&rc_uuid={external_id}&amount={payout}
```

4. Optional: add `&user_ip={ip}` at the end to send the visitor's IP with ClickFlare's `{ip}` token.
5. 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.
6. Click **Save**. You are back in the campaign editor with the Revcontent traffic source selected.

> [!WARNING]
>
> Replace `REPLACE_WITH_YOUR_API_KEY` with your real API key, with no typos or spaces. Revcontent authenticates every postback with it. If the placeholder stays in the URL, every conversion comes back invalid.

`amount` is required. If an offer has no payout, the postback goes out with `amount=0` or empty, and Revcontent can reject it. Give every offer a payout, or use **Event filter** to send only conversions with a payout.

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** if you use the Revcontent cost integration, or **CPC** with your bid if you don't. See [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice for Revcontent.
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 Revcontent variable from the template, for example `externalid={conversion_uuid}`, `widget_id={widget_id}` and `boost_id={boost_id}`. It does not contain `rc_uuid`. Revcontent adds that on the click.

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

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

## Step 4 – Create the campaign in Revcontent

1. In Revcontent, create a new campaign boost and set your targeting, bid and budget as usual.
2. Open the campaign's **Manage Content** section and add your content.
3. Paste the ClickFlare campaign URL into each piece of content's **Destination URL**.
4. Submit the campaign. Revcontent reviews it before it goes live.

Paste the URL exactly as ClickFlare gives it. Revcontent replaces each `{...}` variable and appends `rc_uuid` when the content is clicked.

> [!NOTE]
>
> Revcontent can also add tracking variables at campaign level, from the gear icon next to **Tracking Code** in the campaign's **Settings**. The ClickFlare URL already carries them, so leave the campaign-level tracking code empty. Revcontent says to use one method only, and content-level variables override campaign-level ones.

## Step 5 – Test the integration

Revcontent doesn't publish a test-conversion tool, so test with a live click.

1. Once the boost is live, click your own content in a widget, or wait for the first real clicks.
2. In ClickFlare, check that the visit shows in the campaign with **Widget ID** and **Content ID** filled.
3. Complete the offer the way a real visitor would.
4. In ClickFlare, go to **Logs → Postback Status** and filter by the campaign. Open the postback to `trends.revcontent.com` and check that `rc_uuid` holds a click ID, `amount` holds the payout, and `api_key` holds your key, not the placeholder.
5. In Revcontent, check that the conversion appears in your campaign reporting.

If the response from Revcontent is invalid, check all three required parameters first. Revcontent's own checklist is in [Troubleshooting](#troubleshooting).

***

## Tracking several events

Revcontent's postback has no event or conversion type parameter. Every postback it receives counts as a conversion for the boost. So send only the event you want Revcontent to optimize for, usually your final sale.

1. If your funnel has several steps, create a [custom conversion](/docs/en/settings/custom-conversions.md) for each in ClickFlare, for example `lead` and `purchase`.
2. In the postback's event dropdown, choose the one step Revcontent should count, for example `purchase`.
3. Earlier steps still show in ClickFlare. They just don't reach Revcontent.

> **Sending only some conversions**
>
> To send a postback only for some conversions, for example only those with a payout, or above a certain payout, use **Event filter** under the postback to add conditions.

> **Why not add a second postback?**
>
> You can add one with **+ Another postback URL**, but Revcontent can't tell the two apart. A lead and a sale from the same click would both count as conversions, which inflates conversion rate and skews Revcontent's optimization.

## Cost

The template's Cost row is empty, so the campaign URL doesn't carry Revcontent's cost per click. Revcontent's list of tracking variables has no cost variable.

The best option is ClickFlare's **Revcontent cost integration**. It pulls cost from Revcontent's API at campaign, content and widget level. You need the **Client ID** and **Client Secret** from **Account Settings → Stats API Credentials** in Revcontent. When you create the integration, choose the ad accounts to pull from and set the timezone to match your Revcontent account. One integration can cover several ad accounts. Then select it under **Cost Integration** on the Revcontent traffic source, and set the campaign's **Cost Model** to **Not Tracked** so ClickFlare uses the cost it pulls. See [Revcontent Cost Integration](/docs/en/integrations/rev-content.md).

Until then, set the **Cost Model** on the campaign to **CPC** and enter your bid. ClickFlare then estimates cost per visit, and your ROI is only as accurate as that bid. Correct past days with a [manual cost upload](/docs/en/settings/manual-cost-upload.md). 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 Revcontent, the feed reports revenue hours or days after the click. To pass that revenue to Revcontent 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

> **Revcontent says the postback is invalid**
>
> * One of the three required parameters is missing or empty: `api_key`, `rc_uuid` or `amount`.
> * The API key has a typo, or `REPLACE_WITH_YOUR_API_KEY` was never replaced.
> * `rc_uuid` was added by hand to the boost's tracking code or destination URLs. Remove it. Revcontent appends it automatically.
> * The payout was zero.

> **The postback goes out with an empty rc\_uuid**
>
> * The externalId row was removed, or its TS Parameter or TS Token was changed. It must be `externalid` with `{conversion_uuid}`.
> * A redirect between Revcontent and ClickFlare dropped the query string. Revcontent warns that every redirect must forward all parameters. Paste the ClickFlare URL directly as the Destination URL.

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

> **Revcontent reports every conversion twice**
>
> The Revcontent conversion pixel is also on your conversion page. Use the postback or the pixel, not both. Remove the pixel.

> **Widget or content columns are empty**
>
> The variables were not replaced, usually because the URL was edited, or variables were also added at campaign level and conflict. Paste the campaign URL from ClickFlare unchanged. See [Traffic Source Tokens Arriving Empty](/docs/en/troubleshooting/tokens-arriving-empty.md).

If the postback still fails, Revcontent support (`support@revcontent.com`) or your account representative can check it. Send them an example of the postback URL ClickFlare sent, from **Logs → Postback Status**.

For the general checklist, see [Conversions not showing](/docs/en/troubleshooting/conversions-not-showing.md).

***

**FREQUENTLY ASKED QUESTIONS**

> **Q1:** Can I use the same Revcontent traffic source for all my Revcontent campaigns?

**A1:** Yes. The postback, with your API key, is set once on the traffic source and every campaign using it sends conversions the same way.

> **Q2:** Why does Revcontent's guide say `externalid={conversion_uuid}`?

**A2:** The template already uses it. `{conversion_uuid}` is a Revcontent variable that copies the `rc_uuid` value into a parameter of your choice. The campaign URL carries `externalid={conversion_uuid}`, and ClickFlare reads `externalid`. Revcontent still appends `rc_uuid` on its own, so don't add it yourself.

> **Q3:** Is the API key the same as the Client ID and Client Secret?

**A3:** No. The API key authenticates postbacks. The Client ID and Client Secret, under **Stats API Credentials**, are for the cost integration. Both are in **Account Settings**.

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

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

> **Q5:** Can Revcontent optimize for leads and sales separately?

**A5:** Not through the postback. It has no event parameter, so send the one event you want Revcontent to optimize for.

## Related

> **[Revcontent cost integration](/docs/en/integrations/rev-content.md)**
>
> Pull your Revcontent spend into ClickFlare automatically.

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

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