Server-side events · Platform reference
Taboola S2S postback URL and bulk S2S submit checker
Taboola's server-to-server tracking takes a GET postback to trc.taboola.com, or a bulk JSON POST, that carries the Taboola click ID and the Event Name of a conversion you created in Realize. Taboola puts the click ID on your landing URL as tblci (or your own parameter via the {click_id} macro), and your server has to store it and send it back. Postbacks most often return 204 but never attribute because the parameter wasn't named click-id, the name was the Conversion Name instead of the Event Name, or the click ID was truncated along the way.
Read from the official documentation on 9 November 2026. Sources are listed at the end.
Check your own setup
Our postback URL tester checks the Taboola postback you paste: that the click ID parameter is spelled click-id, that your tracker's click ID macro is filled in rather than left as a literal (Taboola's landing macro is {click_id} with single braces, unlike Outbrain's {{ob_click_id}}), that name is present, and that values are URL-encoded. It can't tell whether name matches the Event Name in your Realize account, and it doesn't send conversions or read Realize reporting.
Open the Postback URL TesterEndpoint and authentication
GET https://trc.taboola.com/actions-handler/log/3/s2s-action?click-id={stored click id}&name={Event Name} (bulk: POST https://trc.taboola.com/{account-id}/log/3/bulk-s2s-action)
None. The postback URL carries no credentials, and Taboola's bulk submit page says no authentication is passed. The click ID ties the event to your account
Event names
Taboola has no fixed list: you name each conversion yourself, and what you send must match that name exactly.
| Event | Use it for |
|---|---|
| Event Name of an EVENT conversion created in Realize | There are no fixed standard event names for S2S. In Realize go to Tracking > New Conversion > 'Create conversions using code', set the Event Name, and send exactly that value (case-sensitive) in name. Use the Event Name field, not the Conversion Name |
Required and recommended fields
| Field | What it needs |
|---|---|
| click-id | Required. The Taboola click ID exactly as received, case-sensitive. The parameter must be spelled click-id with a hyphen, or no conversions are recorded |
| name | Required. The case-sensitive Event Name from the conversion settings in Realize |
| revenue | Optional integer or decimal. Taboola recommends sending revenue, currency and quantity |
| currency | Optional 3-letter, case-sensitive code. If omitted, the account default currency is used. Supported: AUD, BRL, CAD, CNY, EUR, GBP, HKD, ILS, INR, JPY, KRW, MXN, NZD, RUB, SGD, THB, TRY, USD, ZAR |
| quantity | Optional integer, number of items in the order |
| orderid | Optional string, e.g. your CRM order ID. Mainly for purchase events |
| timestamp (bulk only) | Required in bulk submit: milliseconds since the Unix epoch, inside each item of the actions array |
Click ids
| Click id | Where it comes from |
|---|---|
| tblci | Taboola appends tblci={click_id} to all ad URLs by default. Your landing page reads it and stores the value |
| {click_id} macro | Optional custom parameter, e.g. &tbl_click_id={click_id}, set in the campaign's Tracking query string or in the ad URL. Single curly braces. You can rename the parameter, but your system must read that same name |
| click-id | The name of the parameter you send back to Taboola. It isn't the same as the landing-page parameter (tblci or your custom name) |
Deduplication
- Taboola's S2S postback and bulk pages describe orderid but don't document any deduplication behaviour or window. Don't assume Taboola dedupes repeated postbacks. Make sure your own server fires each conversion only once.
Time limits and batch sizes
- Bulk submit: at most 1,000 conversions per JSON request. Split larger sets into batches of 1,000.
- Bulk timestamp is milliseconds since the epoch.
- Postback returns 204 on success. It returns 400 when click-id is missing or misspelled, click-id isn't parsable, name is missing or misspelled, or the endpoint path is misspelled.
- Bulk submit always returns 204 with an empty body and is processed asynchronously. Parameter values aren't validated, so 204 only means the request was received.
How to test before you trust it
- Realize Test Events > Server Events: In Realize go to Tracking > Conversions > Test Events, expand Server Events, pick the campaign and click Generate QR Code (it adds tblci with a test value). Open the link, complete the funnel, send the S2S event from your server with that click ID, and watch the Events Received panel. It should appear within a few moments, under the right conversion name and with no error icons
- Postback HTTP status: A single postback returns 204 when accepted and 400 for a missing or unparsable click-id, a missing name, or a misspelled endpoint. Bulk submit and MMP integrations aren't validated
Why events arrive but don't attribute
- The parameter you send back must be named click-id, with a hyphen. click_id, clickid or tblci in the postback means no conversion is recorded.
- name must be the Event Name, not the Conversion Name, and it's case-sensitive. The postback can be accepted while no conversion appears.
- The click ID must be passed whole and unchanged. Truncated or corrupted values are ignored. Watch for redirects, form fields or database column limits that cut it short.
- A custom landing parameter needs the {click_id} macro (single braces) in the campaign tracking code or the ad URL. Without it Taboola only sends tblci, and a tracker reading a different parameter stores nothing.
- Bulk submit returns 204 even for bad data and doesn't validate values. Check results in Realize, not in the HTTP response.
- currency is case-sensitive and must be a supported code. If you leave it out while sending revenue in another currency, the value is read in the account default currency.
- Cross-domain funnels have to carry the click ID parameter across every domain hop, or the server has nothing to post back.
Sources
- Taboola developers: The S2S postback URL
- Taboola developers: Manual S2S integration
- Taboola developers: Bulk submit S2S conversions
- Taboola developers: S2S error codes
- Taboola developers: Verify your S2S conversion tracking
- Taboola developers: Testing Tool
Platforms change these rules without notice. If a source says something different from this page, the source wins.