> ## Documentation Index
> Fetch the complete documentation index at: /docs/llms.txt
> Use this file to discover all available pages before exploring further.

# SolAds Media Conversion Tracking & Postback Setup

> Set up SolAds Media conversion tracking in ClickFlare: trackingid click ID, EUR cost per click, and the feed.solads.media postback with tid and cv.

![SolAds Media traffic source template](https://mintcdn.com/clickflare/vJtghtd_XfrC_OXQ/images/integrations/covers/templates/solads-media.png?fit=max\&auto=format\&n=vJtghtd_XfrC_OXQ\&q=85\&s=0b7aa240bb1deaab32ff1da49e718416)

SolAds Media is an ad network focused on dating traffic: casual, mainstream and gay dating. It sells native ads on CPC and banner ads on CPM. This guide sets up SolAds Media as a traffic source in ClickFlare. It covers passing SolAds' click data and cost into your reports, and sending conversions back to SolAds so its dashboard shows the same results as ClickFlare.

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

## At a glance

| | |
| - | - |
| **Ad formats** | Native ads (CPC), banner ads (CPM) |
| **Click ID macro** | `$$trackingid$$`, a unique click ID |
| **Conversion tracking** | S2S postback to `feed.solads.media`. The template has it: you fill in your SolAds `n` value. |
| **Payout passed back** | Yes, in the `cv` parameter, when SolAds tracking is set to **Conversion Tracking** |
| **Multiple events** | Yes. One tracking event per action in SolAds, each with its own postback. |
| **Cost** | Passed per click by the template (`$$cost$$`), in EUR, on native CPC campaigns only. Cost Model: **Not Tracked**. |
| **Conversion API** | No |

## How it works

**1. SolAds sends the click**

A visitor clicks your ad. SolAds opens your ClickFlare campaign URL and fills in its macros: the click ID in `trackingid`, the click price in `cost`, plus the publisher, sub-partner, ad copy, campaign and site name.

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

ClickFlare saves the value of `trackingid` 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 SolAds**

ClickFlare fires the SolAds postback, replacing `{external_id}` with the stored SolAds click ID and `{payout}` with the revenue. SolAds matches it to the original click and shows it in your SolAds stats.

> [!NOTE]
>
> The mirror to keep straight: in the **campaign URL** you write *ClickFlare's* parameter (`trackingid`) and *SolAds'* macro (`$$trackingid$$`). The template does this for you. In the **postback URL** you write *SolAds'* parameter (`tid`) 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).
* **Have access to your SolAds advertiser account.** You activate tracking there and copy your `n` value from its tracking settings.
* **Decide which conversions SolAds should receive.** Dating funnels often have a free sign-up (SOI or DOI) and a paid membership. SolAds can count each as a separate event. Decide now whether to send one or both. See [Tracking several events](#tracking-several-events).

***

## Step 1 – Create the campaign and the SolAds Media traffic source

1. Go to **Campaigns** and click **New**.
2. In **Traffic Source**, open the dropdown and click **+ New Traffic Source**.
3. Type `solads` in the search box and select the **SolAds Media** template.
4. Enter a **Name**, for example `SolAds Media`.
5. Set **Cost currency** to **EUR**. SolAds passes the click price in EUR. See [Cost](#cost).

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

| Name | TS Parameter | TS Token (SolAds macro) | ClickFlare Token | What it carries |
| - | - | - | - | - |
| cost | `cost` | `$$cost$$` | `{cost}` | Your click price, in EUR. Native CPC campaigns only. See [Cost](#cost). |
| externalId | `trackingid` | `$$trackingid$$` | `{external_id}` | SolAds' unique click ID. Required for the postback. |
| individual number of publisher | `publisher` | `$$src$$` | `{trackingField1}` | The publisher ID. SolAds returns a number for each publisher. |
| subpartner string | `subpartner` | `$$subid$$` | `{trackingField2}` | The publisher's sub-partner, when there is one |
| returns copyname | `copyname` | `$$copyname$$` | `{trackingField3}` | The name of the ad copy (creative) that was clicked |
| campaign ID | `campaignid` | `$$campaignid$$` | `{trackingField4}` | The SolAds campaign ID |
| site name | `sitename` | `$$sitename$$` | `{trackingField5}` | The publisher's site name, when available |

![The SolAds Media template's Parameters table in ClickFlare, with SolAds Media's macros pre-filled](https://mintcdn.com/clickflare/vJtghtd_XfrC_OXQ/images/integrations/templates/solads-media/parameters-v2.png?fit=max\&auto=format\&n=vJtghtd_XfrC_OXQ\&q=85\&s=d902f1f4759367867c420ebff208e8cd)

Each tracking field becomes a column you can group reports by. The row names are copied from SolAds' own macro descriptions, so they read oddly, but the data is right. `publisher` and `subpartner` are the ones you will use most: they show which publishers and sub-sources convert. You can then exclude the weak ones in SolAds, at account level under **Account Details → Traffic**, or per campaign under **Campaign → Details → Traffic**.

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

`site name` lets you optimize below the publisher level, down to the individual site.

### Add more SolAds macros

The template passes seven of SolAds' macros. SolAds documents two more that you can add:

| Name | TS Parameter | TS Token (SolAds macro) | What it carries |
| - | - | - | - |
| site id | `siteid` | `$$siteid$$` | The publisher's site ID, when available |
| ad group id | `adgroupid` | `$$adgroupid$$` | The SolAds ad group ID |

To add one, click **Add Parameter**, enter the name and parameter, and enter the SolAds macro as the **TS Token**. ClickFlare assigns the next free tracking field.

## Step 2 – Set up the postback

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

> [!NOTE]
>
> SolAds says you don't *need* a postback when you use a tracker: it already passes click and cost data on every click. Set it up anyway if you want conversions and their value in your SolAds dashboard, next to the spend.

### What the template gives you

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://feed.solads.media/event.ashx?sys=Solads&n=REPLACE_WITH_SOLADS_N&cv={payout}&tid={external_id}
```

![The Traffic source postback URL switched on, showing the SolAds Media template's postback](https://mintcdn.com/clickflare/vJtghtd_XfrC_OXQ/images/integrations/templates/solads-media/postback-v2.png?fit=max\&auto=format\&n=vJtghtd_XfrC_OXQ\&q=85\&s=598a1baf7b24a5ece51f02e0630fd575)

Its parameters:

| Parameter | Value in the template | What to do |
| - | - | - |
| `sys` | `Solads` | Nothing |
| `n` | `REPLACE_WITH_SOLADS_N` | Replace with the `n` value from your SolAds tracking event |
| `cv` | `{payout}` | Nothing. ClickFlare fills in the conversion's revenue. |
| `tid` | `{external_id}` | Nothing. ClickFlare fills in SolAds' click ID, stored from the click. |

### Get your n value from SolAds

1. In SolAds, click **Account Details** in the top menu, then **Tracking** in the left sidebar.
2. Activate tracking by choosing an option in the **Tracking Support** dropdown:
   * **Event Counting** only counts events (leads, sign-ups).
   * **Conversion Tracking** counts events and records their value.
3. Click **Save Changes**.
4. In the **Tracking** panel further down, click **New**. Name the tracking event, choose an event type and click **Save**.
5. The **Tracking tag** panel shows the event's postback URL. Copy the number after `n=`.

Choose **Conversion Tracking** unless you only care about counts. Its URL has the same shape as the template's, with SolAds' own placeholders where ClickFlare has tokens:

```text theme={null}
https://feed.solads.media/event.ashx?sys=Solads&n=0000000000&cv={conversionvalue}&tid={trackingid}
```

Only the `n` value carries over. Keep ClickFlare's `{payout}` and `{external_id}` in the template.

### Fill it in on the traffic source in ClickFlare

1. In the postback field, replace `REPLACE_WITH_SOLADS_N` with your `n` value, exactly as SolAds shows it.
2. 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.
3. Click **Save**. You are back in the campaign editor with the SolAds Media traffic source selected.

> [!WARNING]
>
> Replace `REPLACE_WITH_SOLADS_N` before you launch. Left as it is, SolAds cannot tell which account and event the conversion belongs to, and doesn't record it. If you paste SolAds' own URL instead of editing the template's, replace `{trackingid}` with `{external_id}` and `{conversionvalue}` with `{payout}`: ClickFlare doesn't know SolAds' placeholders and would send them as literal text.

Don't use ClickFlare's `{cf_click_id}` in `tid`. That is ClickFlare's own click ID, and SolAds has never seen it. SolAds needs its own ID back, which ClickFlare stores as `{external_id}`.

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**. Use **Not Tracked** for native CPC campaigns, so ClickFlare uses the cost SolAds passes. For banner CPM campaigns, see [Cost](#cost).
3. Choose **Redirect** or **Direct** tracking. Redirect is the usual choice.
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 SolAds macro from the template, for example `trackingid=$$trackingid$$` and `cost=$$cost$$`.

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

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

## Step 4 – Create the campaign in SolAds

1. In SolAds, create a native ads campaign or a banner campaign.
2. Set targeting, bids and creatives as usual.
3. Paste the ClickFlare campaign URL as the campaign's destination URL.
4. Save the campaign.

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

## Step 5 – Test the integration

1. Click one of your live SolAds ads, or ask your SolAds account manager for a test click.
2. In ClickFlare, open the campaign's report. The visit should show a SolAds click ID as its External ID, a cost (on CPC campaigns), and values in the publisher and copy name columns.
3. Complete the offer the way a real visitor would.
4. In ClickFlare, go to **Logs → Postback Status** and filter by the campaign. A successful request to `feed.solads.media` confirms ClickFlare sent the postback.
5. In SolAds, check that the conversion appears under the tracking event you created.

***

## Tracking several events

SolAds can count more than one event per account. For example, one tracking event to count leads and a second one for the number and value of sales. Each event has its own postback URL, with its own `n` value, in the **Tracking tag** panel.

1. In ClickFlare, create a [custom conversion](/docs/en/settings/custom-conversions.md) for each step, for example `signup` and `purchase`.
2. In SolAds, create one tracking event per step under **Account Details → Tracking**, and note each event's `n` value.
3. On the SolAds Media traffic source, click **+ Another postback URL** once per extra event.
4. Paste the template's postback into each, with that event's `n` value, and map it to its ClickFlare event: `signup` to the lead event's `n`, `purchase` to the sale event's `n`.
5. Test each event.

> **Event Counting or Conversion Tracking?**
>
> * **Event Counting** only counts. Its postback has no `cv` parameter, so you can delete `&cv={payout}` from the template's postback for that event. Use it for free sign-ups.
> * **Conversion Tracking** counts and records value. Use it for paid memberships and sales, with `cv={payout}`.

> **Sending only one event**
>
> If SolAds should only see your final sale, keep a single postback and map it to that event. Earlier steps still show in ClickFlare. They just don't reach SolAds.
>
> 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 SolAds' `$$cost$$` macro, which is your click price as set in your SolAds campaign. ClickFlare records it as the visit's cost.

* **Native CPC campaigns:** set the campaign's **Cost Model** to **Not Tracked**, so ClickFlare uses the cost passed in the URL.
* **Set the traffic source's Cost currency to EUR.** SolAds sends the click price in EUR. With **USD** selected, ClickFlare reads a 0.40 EUR click as 0.40 USD. See [Multicurrency in ClickFlare](/docs/en/tracking/multicurrency-support-in-click-flare-how-it-works.md).

> [!NOTE]
>
> `$$cost$$` only works for native CPC campaigns. On banner CPM campaigns, SolAds tracks impressions and spend internally and cannot pass a per-click cost. The `cost` parameter arrives empty.

For banner CPM campaigns, use one of these:

* Set the **Cost Model** to **CPC** with your effective click price: your SolAds spend divided by clicks, from your SolAds stats. Update it as it changes.
* Leave cost at zero and correct it with a [manual cost upload](/docs/en/settings/manual-cost-upload.md) from your SolAds spend.

SolAds notes that trackers may report slightly different spend. Clicks are passed 1:1, but a tracker's own filtering or unique-click logic can count them differently. SolAds treats the spend in its interface as the reference. If ClickFlare's cost drifts from it, correct it with a manual cost upload. See [Cost Models](/docs/en/core-platform-concepts/cost-models.md).

ClickFlare has no cost-tracking API integration for SolAds Media.

## Delayed revenue

If a dating offer pays later (a rebill, or a sale confirmed days after the sign-up), the revenue reaches ClickFlare after the click. To pass that revenue to SolAds 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

> **Conversions show in ClickFlare but not in SolAds**
>
> * **Traffic source postback URL** is off on the SolAds Media traffic source.
> * **Disable sending postbacks to traffic source** is on in the campaign.
> * The postback still contains `REPLACE_WITH_SOLADS_N` instead of your `n` value.
> * You pasted SolAds' own URL and it still contains `{trackingid}` instead of `{external_id}`.
> * Tracking is not activated in SolAds: **Tracking Support** must be set and saved under **Account Details → Tracking**.
> * 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 SolAds returned.

> **SolAds shows conversions with no value**
>
> * **Tracking Support** is set to **Event Counting**, which records no value. Switch it to **Conversion Tracking** and check the `n` value is still the one SolAds shows.
> * `cv` was removed from the postback, or still contains `{conversionvalue}`. It must be `cv={payout}`.

> **Cost is zero or wrong**
>
> * The campaign is a banner CPM campaign. SolAds doesn't pass cost for those. See [Cost](#cost).
> * The campaign's **Cost Model** is not **Not Tracked**, so ClickFlare ignores the passed cost.
> * Costs are off by the EUR to USD exchange rate: the traffic source's **Cost currency** is USD, but SolAds sends EUR.

> **Publisher or copy name columns are empty**
>
> The macros were not replaced, usually because the URL was edited or pasted where SolAds doesn't process macros. Paste the campaign URL from ClickFlare unchanged. `$$subid$$` and `$$sitename$$` are only filled when SolAds has a value. 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:** Do I have to set up the postback?

**A1:** No. ClickFlare tracks your conversions and ROI without it, because SolAds passes the click ID and cost on every click. Set it up if you want conversions and their value in your SolAds stats too.

> **Q2:** Why is it `trackingid` in the campaign URL and `tid` in the postback?

**A2:** They are two halves of the same value. ClickFlare reads SolAds' click ID from its own `trackingid` parameter. SolAds expects it back in its own `tid` parameter. Both names are fixed. Change neither.

> **Q3:** Should I use Redirect or Direct tracking with SolAds?

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

> **Q4:** Which numbers should I trust when ClickFlare and SolAds disagree on spend?

**A4:** SolAds bills on the spend shown in its interface. Use that as the reference and correct ClickFlare with a manual cost upload when they differ.

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

> **[Multicurrency](/docs/en/tracking/multicurrency-support-in-click-flare-how-it-works.md)**
>
> How ClickFlare converts EUR costs and payouts.


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