Taboola conversion tracking for affiliates: sending sales back with a postback
Taboola Conversion Tracking for Affiliates: Sending Sales Back With a Postback
Taboola conversion tracking only works for affiliates when you stop relying on the network's own pixel and start sending conversions back from your tracker via postback. Taboola gives you a click ID on every outbound click. You pass that ID into your tracker, fire a server-to-server postback the moment a sale or lead confirms, and Taboola attributes it to the exact campaign, creative and publisher site. Get this wrong and you're optimising a native campaign on clicks you can't reconcile with revenue.
This guide walks through the full chain: what tokens Taboola passes, how to map them into sub-IDs, how to configure the postback in both directions, and how to read your own per-placement data once conversions start landing. It assumes you're running native traffic on Taboola and either a CPA offer or your own funnel on the back end.
How does Taboola conversion tracking actually work for affiliates?
There are two separate tracking relationships in an affiliate Taboola campaign, and conflating them is the single most common setup mistake.
The first is Taboola → your tracker. When a user clicks your Taboola ad, Taboola appends a click identifier to your landing page URL. Your tracker captures it and stores it against the click.
The second is your tracker → Taboola. When that click converts on the advertiser side, your tracker fires an HTTP request back to Taboola's postback endpoint containing the stored click identifier plus whatever value and status you want to report. Taboola then credits the conversion to the source campaign.
Taboola does offer its own pixel-based conversion tracking, but for affiliates it's the wrong tool. You don't control the advertiser's confirmation page, you often don't control the checkout, and a client-side pixel can't see a sale that confirms hours later in a back-end system. The postback model solves all three: it's server-to-server, it's triggered by your tracker (which does control the confirmation event), and it can carry a revenue value.
If you're new to the token concept generally, ad network tracking macros explained covers what tokens are and why every network names them differently.
Which Taboola tokens do you need, and where do they go?
Taboola exposes its click identifier through a macro you place in your landing page URL. The exact macro name depends on how your account is configured, so verify it in Taboola's own tracking documentation inside your account rather than trusting a copied URL from a forum — network macro names change and a stale one silently breaks attribution.
Once you have the correct click ID macro, the mapping looks like this:
- Click ID →
sub1. This is the value your tracker must store and echo back in the postback. Treat it as sacred: nothing else should ever occupysub1on a Taboola campaign. - Campaign ID →
sub2. Lets you slice performance by campaign without relying on the network's reporting. - Creative / item ID →
sub3. The specific thumbnail-and-headline combination. This is where native optimisation actually happens. - Publisher site or section →
sub4. The placement. This is the field that drives your block list. - Spare →
sub5. Reserve it for landing page variant, device, or a test flag so you're not re-engineering the URL later.
Your final destination URL looks roughly like:
https://yourdomain.com/lp?sub1={click_id}&sub2={campaign_id}&sub3={item_id}&sub4={site}&sub5=lp1
Substitute the real macro names from your Taboola account for the placeholders above. Then — and this is the step people skip — test it. Click your own ad with a test budget, open your tracker's click log, and confirm each sub-ID field is populated with a real value rather than the literal macro string. If you see {click_id} sitting in the click log, the macro is wrong or the parameter isn't being passed through your landing page redirect.
Adtraxo handles this mapping natively with its sub1–sub5 parameter passing, so the click ID lands in the right field without custom URL surgery, and custom tracking domains keep the whole chain on your own domain — which matters for native because some publishers and browsers treat third-party redirect domains more harshly.
How do you set up the Taboola postback URL?
The postback is a single URL your tracker fires on conversion. It contains Taboola's postback endpoint, the click ID your tracker stored, and the conversion parameters Taboola expects. The general shape:
https://trc.taboola.com/[your-account-path]/log/3/transaction?click_id={sub1}&revenue={value}¤cy=USD&status=approved
Get the exact endpoint path from your Taboola account's conversion tracking section — do not construct it from memory. The parameters you're mapping are:
- click_id — pulled from your stored
sub1. This is the only parameter that absolutely must be right; without it Taboola cannot attribute anything. - revenue / value — pass the actual sale value, not a flat placeholder. If you're on a CPA offer with a fixed payout, pass the payout. If you're running ecommerce or a lead gen funnel with variable value, pass the real number so Taboola's bidding can learn from value, not just count.
- status — where the network supports it, distinguish approved, pending and rejected. This matters enormously if your offer has a confirmation delay or a chargeback window. Firing an "approved" postback on a lead that later reverses teaches Taboola's algorithm to chase junk.
Then set the trigger. In Adtraxo, the postback is configured per campaign and fires server-side when your conversion source calls the tracker's conversion endpoint. Postback conversion tracking is a Pro feature — it's not available on the Free plan, so budget for it before you build a Taboola campaign around it. The same applies to sub-ID passing: if you're serious enough to run native at scale, you need the Pro tier.
How do you test a Taboola postback before spending real money?
Do this in order. Each step catches a different class of failure.
- Fire a manual postback with a known click ID. Take a click ID from your tracker's log, paste it into the postback URL in a browser or via curl, and confirm Taboola registers a conversion against that click. This validates the endpoint and parameter names with zero spend.
- Run a small live test campaign. A handful of clicks is enough. Convert yourself through the funnel — submit the lead, complete the test purchase, whatever the conversion event is.
- Check both sides. Does your tracker show one conversion? Does Taboola show one conversion against the correct campaign, creative and site? If your tracker shows it and Taboola doesn't, the postback URL or click ID mapping is broken. If Taboola shows it and your tracker doesn't, the conversion trigger never fired.
- Verify the click ID round-trip. Compare the click ID in your tracker's conversion record against the click ID Taboola reports for that same conversion. They must match exactly. A truncated or URL-encoded click ID is a classic silent failure.
- Check for duplicate fires. Refresh the confirmation page, or replay the conversion event. You should not get two postbacks for one sale. Duplicates inflate your reported conversions and poison the network's optimisation.
If click counts between Taboola and your tracker don't line up during testing, that's a separate problem worth understanding before you scale — see why your ad network and your tracker show different click counts.
What do you do with the conversion data once it's flowing?
Attribution is table stakes. The reason you built this chain is to make cut decisions from your own data rather than Taboola's dashboard, which shows you what the network wants you to see.
Once conversions carry sub3 (creative) and sub4 (publisher site), your tracker's per-campaign analytics let you break down conversion rate and ROI by each. That breakdown is the whole game in native, because native performance is wildly uneven across placements — a handful of sites typically carry the campaign while a long tail burns budget at near-zero conversion rate.
Work the data in this order:
- Kill creatives on conversions, not clicks. A thumbnail with a high CTR and no conversions is the most expensive thing in your account. Compare creatives by conversion rate and cost per conversion. Push ad creative testing: how to compare creatives by conversions, not clicks covers the method even though it's framed around push — the logic transfers directly.
- Build a publisher block list from
sub4. Any site that has spent meaningfully without a conversion, or whose cost per conversion is far above your target, goes on the list. How to find and block the Taboola publisher sites that waste your budget walks through the threshold logic. - Watch for fraud signals. Native buys real publisher inventory, but click fraud still exists. IP velocity, datacenter IPs, bot user agents and uniqueness conflicts all show up in Adtraxo's fraud detection (Pro), and a placement with a high click count, zero conversions and a suspicious IP profile is worth blocking before it eats another day of budget.
- Let the AI Campaign Optimizer surface the pattern. When you're running multiple campaigns across Taboola and other native sources, the agent flags placements and creatives drifting from target so you're not manually auditing every report.
Do the same exercise for every network you run. MGID and RichAds have their own token names and their own block-list mechanics — MGID tracking setup: passing widget and teaser IDs into your tracker, RichAds tracking setup: postbacks and creative IDs for push campaigns, and MGID widget blacklist: how to decide which widgets to cut and when cover those. The network-by-network tracking guide ties the whole cluster together if you're setting up several sources at once.
What breaks Taboola postback tracking most often?
Four failures account for most broken setups. Check these first when conversions go missing.
The click ID macro is wrong or unencoded. If your landing page URL doesn't URL-encode the click ID parameter, a click ID containing special characters can truncate. Test with a real click, not a fabricated one.
The postback fires on the wrong event. Firing on the thank-you page load rather than a confirmed server-side event means you'll double-count on refreshes and miss conversions where the user drops before the page renders. Fire from the confirmation event.
Revenue isn't passed. A postback with no value tells Taboola a conversion happened but not what it was worth. You lose value-based optimisation and you can't compute ROI in your tracker. Always pass the real number.
Pending conversions are reported as approved. If your offer has a hold period, firing "approved" immediately means your reported ROI is fiction and the network optimises toward leads that will reverse. Use the status field.
Frequently asked questions
Do I need Taboola's own pixel if I'm using a tracker postback?
No. For affiliates, the postback from your tracker replaces the pixel entirely. You don't control the advertiser's confirmation page, so a pixel can't reliably fire on the conversion event anyway. The postback is server-to-server and triggered by your tracker, which does control that event. Running both just creates duplicate conversion records.
Which sub-ID should hold the Taboola click ID?
Use sub1 and never put anything else there on a Taboola campaign. The click ID is the value your postback echoes back to Taboola; if it's overwritten or shared with another parameter, attribution breaks silently. Campaign, creative and publisher site go in sub2 through sub4.
Can I track Taboola conversions on the Adtraxo Free plan?
No. Postback conversion tracking and sub-ID parameter passing are Pro features. The Free plan covers link creation and click tracking, which is enough to test a landing page but not enough to send conversions back to Taboola. You need Pro ($27/mo) for the full postback chain.
Why does Taboola show fewer conversions than my tracker?
Usually one of three causes: the postback is failing for some clicks (check your tracker's postback log for HTTP errors), the click ID isn't being passed correctly for a subset of traffic, or Taboola is deduplicating conversions your tracker counted twice. Compare click IDs on a sample of conversions to isolate which one it is.
Should I pass revenue even on a flat-payout CPA offer?
Yes. Pass the actual payout as the value. It costs nothing, it lets Taboola's bidding optimise on value rather than raw conversion count, and it lets your tracker compute ROI per placement directly instead of you doing the arithmetic by hand.
Set it up once, then let the data decide
The postback chain is a one-time build. Click ID into sub1, creative and publisher site into sub3 and sub4, a server-to-server postback firing on the confirmed conversion event with real revenue and honest status. Test it with a manual fire and a small live campaign, verify the click ID round-trip, then stop touching it.
From there the work is entirely in the data: which creatives convert, which publisher sites waste budget, which placements to block. Adtraxo gives you the sub-ID mapping, the postback, per-campaign geo and device breakdowns, fraud detection and an AI Campaign Optimizer to surface the patterns — so you can run Taboola alongside MGID, RichAds and PropellerAds and compare them on your own numbers instead of each network's dashboard.
Start tracking on Adtraxo — set up your first Taboola campaign with a working postback in under ten minutes.
Track your affiliate campaigns for free
Clicks, conversions, fraud detection — all in one tracker.
Get started free →Not ready for an account? Get the Tracking Domination Playbook — free, just your email.