
At a glance
How it works
1
AdOperator sends the click
A visitor clicks your ad. AdOperator opens your ClickFlare campaign URL and fills in its macros: the unique click ID in
conversion, plus the campaign, the publisher sub ID, the OS, the browser and the country.2
ClickFlare stores the AdOperator click ID
ClickFlare saves the value of
conversion 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 AdOperator
ClickFlare fires the AdOperator postback, replacing
{external_id} with the stored AdOperator click ID and {payout} with the revenue. AdOperator matches it to the original click.The mirror to keep straight: in the campaign URL you write ClickFlare’s parameter (
conversion) and AdOperator’s macro ({conversion}). The template does this for you. In the postback URL you write AdOperator’s parameters (c and value) and ClickFlare’s tokens ({external_id} and {payout}).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.
- Have an offer ready in ClickFlare, and its affiliate network set up to post conversions back to ClickFlare. See Creating an Offer and Adding an Affiliate Network.
- Have an AdOperator advertiser account with funds. AdOperator’s minimum campaign budget is 20 USD.
- Know your bid. AdOperator charges per click on push and in-page push, and per view on popunder. You enter that price in ClickFlare as the cost. See Cost.
Step 1 – Create the campaign and the AdOperator traffic source
- Go to Campaigns and click New.
- In Traffic Source, open the dropdown and click + New Traffic Source.
- Type
adoperatorin the search box and select the AdOperator template. - Enter a Name, for example
AdOperator. - Leave Cost currency on USD. AdOperator budgets and bids are in USD.

{subid}, {campaign}, {bid}, {os}, {browser}, {country} and {conversion}. The useful one the template doesn’t include is {bid}, the click price. Add it as a parameter named bid to see what you paid per click next to each visit.
Step 2 – Set up the postback
The postback is what sends conversions to AdOperator. It lives on the traffic source, so every campaign that uses this AdOperator traffic source sends conversions the same way.Get your postback URL from AdOperator
AdOperator uses one global postback for all your campaigns. You find it on any campaign’s page:- In AdOperator, click Campaigns in the left menu and open or create a campaign.
- Scroll to Conversion Tracking. Under Add this postback to your tracker AdOperator shows:
c carries the click ID and value carries the payout. AdOperator’s own instructions say to replace {conversion} and {payout} with your tracker’s tokens. In ClickFlare those are {external_id} and {payout}.
Add it to the traffic source in ClickFlare
- Back in the New Traffic Source form, scroll to Passing conversion info to traffic source.
- Turn on Traffic source postback URL. The template’s postback appears:

{external_id}) in the right parameter, but it has two problems. The host xml.adop.co is not the host AdOperator gives you, and its security certificate has expired, so the request can fail. And it sends no payout.
- Replace the whole URL with AdOperator’s postback, with ClickFlare’s tokens in place of AdOperator’s:
{conversion} becomes {external_id}, and {payout} stays {payout}, because both ClickFlare and AdOperator use that name.
- 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. - Click Save. You are back in the campaign editor with the AdOperator traffic source selected.
value is read as USD, the currency of your AdOperator account. If your offers pay in another currency, see Multicurrency in ClickFlare.
To learn what each postback token does, see How to Configure a Traffic Source S2S Postback URL.
Step 3 – Finish the campaign and copy its URL
- Name the campaign.
- Set the Cost Model to CPC and enter your AdOperator bid as the cost. See Cost.
- Choose Redirect or Direct tracking. Redirect is the usual choice for popunder and push traffic.
- Click Next and, on Destination, add your lander (optional) and your offer.
- Save, open Tracking, select your own tracking domain and copy the campaign URL.
conversion={conversion} and subid={subid}.
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 AdOperator.
See Creating a Campaign in ClickFlare.
Step 4 – Create the campaign in AdOperator
- In AdOperator, click Campaigns and create a campaign.
- Enter the campaign name and paste the ClickFlare campaign URL into Target Url.
- Choose the format: Popunder, Push Notifications or in-page push.
- Under Budget and Limits, set the Total Budget, Daily Budget and your bid. For popunder this is the CPV (cost per 1 view). Watch the CPV: a CPV of 0.001 USD is a CPM of 1 USD, and a typo here overspends fast.
- Set Targeting (geo, OS, browser) and, if you need it, Advanced Targeting (connection type, browser language, IP lists, domains, day and time).
- For push and in-page push, add your creatives (up to four per campaign).
- Click Start Campaign. AdOperator reviews it before it goes live.
{...} macro when the ad is clicked.
Step 5 – Test the integration
AdOperator doesn’t document a test-conversion tool, so test with a small live budget.- Launch the campaign with a low daily budget.
- In ClickFlare, open the campaign report and group by Publisher sub ID. Values like
12345mean the macros are filling in. If you see the literal text{subid}, the URL was edited or pasted in the wrong field. - Check that the visits have an External ID. An empty External ID means
{conversion}didn’t reach ClickFlare, and no postback can work. - When the first conversion arrives, go to Logs → Postback Status and filter by the campaign. A successful request to
s2s.adoperator.comconfirms ClickFlare sent it. - In AdOperator, open Reports and check that the conversion shows on the campaign.
Choosing the event to send
AdOperator’s postback has no event parameter. Every postback it receives counts as one conversion type. Send the conversion you actually want AdOperator to count.Sending only your final conversion
Sending only your final conversion
If your funnel has several steps (lead, then sale), create a custom conversion for each step in ClickFlare. Then map the AdOperator postback to the final step only, for example
purchase. Earlier steps still show in ClickFlare. They just don’t reach AdOperator.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.One traffic source, many campaigns
One traffic source, many campaigns
AdOperator’s postback is global: the same URL works for every campaign, because the click ID tells AdOperator which campaign the conversion belongs to. One AdOperator traffic source in ClickFlare is enough for all your AdOperator campaigns.
Cost
The template doesn’t pass cost. It has no Cost row, so ClickFlare can’t read AdOperator’s price from the campaign URL. Set the campaign’s Cost Model to CPC and enter your AdOperator price:
If you buy popunder thinking in CPM, divide the CPM by 1,000 to get the CPV.
AdOperator’s
{bid} macro carries the click price. Adding it as a tracking field (see Step 1) lets you check the real price per click against the cost you entered. It doesn’t set the cost by itself.Delayed revenue
If you run search arbitrage (RSOC or AFD) behind AdOperator, the feed reports revenue hours or days after the click. To pass that revenue to AdOperator once it arrives, see Sending Delayed Revenue to Traffic Sources.Troubleshooting
Conversions show in ClickFlare but not in AdOperator
Conversions show in ClickFlare but not in AdOperator
- The postback still uses the template’s
xml.adop.cohost. Change it tohttps://s2s.adoperator.com/conversion. - Traffic source postback URL is off on the AdOperator 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 or error AdOperator’s server returned.
AdOperator doesn't match the conversions
AdOperator doesn't match the conversions
- The campaign URL in AdOperator is missing
conversion={conversion}, or the macro was edited. Copy the URL from ClickFlare again. - The postback uses AdOperator’s
{conversion}instead of ClickFlare’s{external_id}. - The
externalIdrow was removed from the traffic source.
AdOperator shows conversions with no payout
AdOperator shows conversions with no payout
The template’s postback has no
value parameter. Add &value={payout} at the end of the postback.Sub ID or other columns are empty
Sub ID or other columns are empty
The macros were not replaced, usually because the URL was edited or pasted somewhere AdOperator doesn’t process macros. Paste the campaign URL from ClickFlare unchanged into Target Url. If only User agent is empty, AdOperator doesn’t fill
{user_agent}. Remove the row or leave it. See Traffic Source Tokens Arriving Empty.FREQUENTLY ASKED QUESTIONS
Q1: Can I use the same AdOperator traffic source for all my AdOperator campaigns?A1: Yes. AdOperator’s postback is global, and ClickFlare’s postback lives on the traffic source. Every campaign that uses it sends conversions the same way.
Q2: Why is it calledA2: They are two halves of the same value. ClickFlare reads AdOperator’s click ID from its ownconversionin the campaign URL andcin the postback?
conversion parameter. AdOperator expects it back in its own c parameter. Change neither.
Q3: Older guides mention a goal ID in the AdOperator postback. Do I need one?A3: Not with the postback AdOperator shows today. Its Conversion Tracking section gives
https://s2s.adoperator.com/conversion?c={conversion}&value={payout}, with no goal ID. If your account shows a different URL, use the one in your account and keep {external_id} and {payout} as the tokens.
Q4: Should I use Redirect or Direct tracking with AdOperator?A4: Redirect is the usual choice and works with every AdOperator format. Use Direct only if AdOperator must see your lander’s domain as the destination. See Direct Campaign Tracking.
Q5: Does ClickFlare pull my AdOperator spend automatically?A5: No. There is no AdOperator cost integration. Use the CPC cost model with your bid, and correct any gap with a manual cost upload.
Related
Traffic source postbacks
Every token you can use in a postback.
Custom conversions
Split leads and sales into separate events.
Cost models
How CPC, CPA and RevShare costs are calculated.
Conversions not showing
The general checklist when postbacks don’t arrive.