What is Taboola server-side tracking (S2S)?
Taboola server-side tracking (commonly referred to as Taboola S2S or S2S Postback) is an attribution mechanism that transmits conversion events directly from your backend server or tracking platform to Taboola's servers via an HTTP request. Unlike the browser-based Taboola Pixel, which executes client-side JavaScript in a user's web browser, Taboola S2S communicates server-to-server — similar to how Meta's Conversions API (CAPI) works for Facebook ads, but with a simpler authentication model.
The fundamental mechanic relies on Taboola's proprietary click identifier: tblci. When a visitor clicks your native ad on a publisher site (such as CNBC, Business Insider, or Yahoo), Taboola appends ?tblci={CLICK_ID} to your landing page URL. Your server captures this parameter, stores it against the visitor's session or cart, and sends it back to Taboola when the visitor purchases or completes a lead form.
[Taboola Ad Click]
│ (appends ?tblci=GiD_AbC123...)
▼
[Landing / Advertorial Page] ──► (Server stores tblci in 1st-party cookie)
│ (User navigates to checkout)
▼
[Order Completed / Lead Submitted]
│
▼
[Your Server / SignalBridge] ──► (HTTP GET Postback with click-id=GiD_AbC123...)
│
▼
[Taboola S2S Endpoint] ──► (HTTP 204 No Content: Conversion Attributed!)
Why native advertisers lose 30–45% of conversions with pixel-only tracking
Native advertising campaigns have unique structural characteristics that make standard browser-based tracking particularly prone to data loss:
| Challenge | Impact on Browser Pixel | Taboola S2S Solution |
|---|---|---|
| Advertorial / Pre-sale funnels | User lands on an editorial domain (brand-review.com) and clicks through to a shop (store.com). Third-party cookies fail across domains. | tblci is passed as a URL parameter or preserved via first-party server storage across domains. |
| Ad blockers & Brave Browser | 35–42% of native news readers run ad blockers that block trc.taboola.com pixel requests. | Server sends postbacks directly from your backend; client ad blockers cannot intercept server requests. |
| Safari ITP 24-hour cookie limits | Safari truncates JavaScript-set client cookies to 24 hours when tracking URL parameters are detected. iOS 19 makes this worse. | Server-set HTTP-only cookies retain the tblci for 30–90 days. |
| Payment gateways (PayPal, Klarna) | Customers complete checkout and close the browser tab before returning to the thank_you page. | Server-side webhook triggers upon payment confirmation regardless of browser state. |
| Bot & scraper contamination | Native inventory encounters click-bots that fill forms and trigger pixel events. | Server-side bot filtering blocks non-human sessions before notifying Taboola. |
Without server-side tracking, Taboola's SmartBid algorithm operates on incomplete signals. If 35% of your sales are invisible to Taboola, SmartBid artificially suppresses bids on high-performing publishers, incorrectly driving your budget toward cheaper, low-converting placements. This is the same data quality problem that degrades Facebook lookalike audiences — ad algorithms can only optimize on the signals they receive.
How the Taboola S2S Postback URL works
Taboola's server-to-server tracking contract is one of the cleanest in digital advertising. It does not require complex bearer token handshakes, secret keys, or OAuth flows. Instead, it uses a standardized GET request containing URL parameters.
1. Base endpoint
https://trc.taboola.com/actions-handler/log/3/s2s-action
2. Supported URL parameters
| Parameter | Type | Required? | Description | Example |
|---|---|---|---|---|
click-id | String | Yes | The exact tblci value captured on the initial ad click. | GiD_AbCd12345 |
name | String | Yes | The conversion's Event Name exactly as defined in Taboola Realize (case-sensitive). | make_purchase |
revenue | Number | Optional | Order total or lead value (finite float/int). | 79.99 |
currency | String | Optional | 3-letter ISO currency code. | USD, GBP, EUR |
orderid | String | Optional | Unique transaction identifier to prevent duplicate reporting. | ORD-98432 |
quantity | Integer | Optional | Number of items purchased. | 2 |
3. Example S2S postback request
GET /actions-handler/log/3/s2s-action?click-id=GiD_AbCd12345&name=make_purchase&revenue=124.50¤cy=USD&orderid=10492 HTTP/1.1
Host: trc.taboola.com
User-Agent: SignalBridge-S2S/1.0
4. Expected response status codes
204 No Content— Success. Taboola accepted the conversion event and attributed it to the campaign associated with thatclick-id.408 / 429— Timeout / Rate Limited. The request should be requeued and retried with exponential backoff.500 / 502 / 503— Temporary Server Error. Taboola's ingestion layer is degraded; retry with backoff.400 Bad Request— Unrecoverable. Malformed click ID, missing required parameter, or invalid format.
Taboola standard event name mapping
Taboola allows custom conversion names, but using standardized conventions ensures seamless reporting and alignment across your multi-platform tracking stack:
| SignalBridge / Universal Event | Taboola Standard Event Name | Typical Use Case |
|---|---|---|
PageView | page_view | Advertorial / article reading |
ViewContent | view_content | Product detail page view |
AddToCart | add_to_cart | Adding item to shopping bag |
InitiateCheckout | initiate_checkout | Entering checkout steps |
Purchase | make_purchase | Completed e-commerce order |
Lead | lead | Form submission, consultation inquiry |
CompleteRegistration | complete_registration | Account creation, newsletter signup |
Subscribe | subscribe | Monthly recurring subscription |
One mismatch to watch: Taboola's preset Event Name for the Start Checkout category is start_checkout, while SignalBridge sends initiate_checkout. Realize lets you edit the Event Name when you create the conversion, so set it to initiate_checkout and both sides match.
Step-by-step setup guide: Implementing Taboola S2S
Step 1: Confirm the tblci click ID reaches your landing page
Taboola automatically appends tblci={click_id} to every ad URL, so no campaign setup is needed unless you changed the default. Click one of your ads and check that the landing page URL contains tblci= followed by a long string. Then make sure nothing damages it on the way:
- Do not strip query parameters. If a redirect, advertorial page, or link shortener sits between Taboola and your store, make sure it forwards
tblciunchanged. Taboola ignores a truncated or corrupted value. - Keep the default parameter name. The capture code below reads the standard
tblciparameter.
Step 2: Capture and persist the tblci parameter
When a visitor lands on your website, you must capture the tblci query parameter immediately and store it in a first-party cookie or server session.
Here is a lightweight JavaScript snippet to persist tblci for 30 days:
// Capture and persist Taboola Click ID (tblci)
(function() {
const urlParams = new URLSearchParams(window.location.search);
const tblci = urlParams.get('tblci');
if (tblci && tblci.trim().length > 0) {
const expires = new Date(Date.now() + 30 * 864e5).toUTCString();
document.cookie = `sb_tblci=${encodeURIComponent(tblci)}; expires=${expires}; path=/; SameSite=Lax; Secure`;
}
})();
For advertorial-to-store funnels, ensure your outbound links to your Shopify or WooCommerce store append the stored tblci:
// Append tblci to outbound shop links
document.querySelectorAll('a[href*="yourshop.com"]').forEach(link => {
const tblci = getCookie('sb_tblci');
if (tblci) {
const url = new URL(link.href);
url.searchParams.set('tblci', tblci);
link.href = url.toString();
}
});
Step 3: Dispatch the S2S conversion postback upon purchase
When your server processes a checkout completion (e.g., via a Shopify webhook, Stripe charge, or WooCommerce action), construct and execute the S2S GET request:
// Node.js / TypeScript Example
async function sendTaboolaConversion(event: {
clickId: string;
eventName: string;
revenue: number;
currency: string;
orderId: string;
}): Promise<boolean> {
const endpoint = new URL('https://trc.taboola.com/actions-handler/log/3/s2s-action');
endpoint.searchParams.set('click-id', event.clickId);
endpoint.searchParams.set('name', event.eventName);
endpoint.searchParams.set('revenue', event.revenue.toFixed(2));
endpoint.searchParams.set('currency', event.currency);
endpoint.searchParams.set('orderid', event.orderId);
try {
const response = await fetch(endpoint.toString(), {
method: 'GET',
headers: {
'User-Agent': 'SignalBridge-S2S/1.0',
},
});
// Taboola returns 204 No Content on success
return response.status === 204;
} catch (error) {
console.error('Failed to dispatch Taboola S2S postback:', error);
return false;
}
}
Step 4: Create the conversion in Taboola Realize
Create one event-based conversion for each outcome you send, so conversions report against your campaigns:
- In Realize, select your account and choose Tracking in the left sidebar.
- Click + New Conversion, select Create conversions using code, and click Continue.
- Enter a Conversion Name (a label only) and set Conversion Type to EVENT.
- Choose the Category and set the Event Name to exactly the string you send in the
nameparameter (for examplemake_purchase). Names are case-sensitive, and it is the Event Name, not the Conversion Name, that must match. - Skip the Event Code section (that is the pixel snippet) and click Create.
If a conversion still shows No Activity after a test postback, the Event Name almost always does not match. To confirm delivery end to end, use the Server Events panel under Tracking → Test Events: generate the QR code, complete a test conversion, and check that the event appears in Events Received without an error icon.
High-volume advertisers: Taboola bulk S2S postback
If your store processes thousands of transactions per day, making individual HTTP requests can cause queue bottlenecks. Taboola provides an account-specific Bulk S2S endpoint:
https://trc.taboola.com/{numeric_account_id}/log/3/bulk-s2s-action
Unlike the single GET postback, the bulk endpoint accepts an HTTP POST with a JSON object whose actions array holds up to 1,000 conversions per request. Note the hyphenated keys (click-id, orderid) and the millisecond timestamp:
{
"actions": [
{
"timestamp": 1726300800000,
"click-id": "GiD_11111",
"name": "make_purchase",
"revenue": 54.0,
"currency": "USD",
"orderid": "ORD-101"
},
{
"timestamp": 1726300815000,
"click-id": "GiD_22222",
"name": "make_purchase",
"revenue": 112.5,
"currency": "USD",
"orderid": "ORD-102"
}
]
}
Taboola does not validate parameter values in bulk requests, so a 204 only confirms that the batch was received. Always confirm in the Events Received panel of Realize's Server Events test tool. SignalBridge writes every Taboola conversion to a durable outbox and delivers it with automatic retries, so you get this reliability without building the queue yourself. For stores on Shopify, check the best server-side tracking tools for Shopify guide for platform-specific implementation details.
Why Taboola advertisers must filter bot traffic before S2S dispatch
Native ad publishers frequently experience non-human traffic from web crawlers, competitive intelligence bots, and click farms. If a bot completes a form or triggers a checkout event, sending that event to Taboola creates a dangerous feedback loop:
- SmartBid receives a conversion signal from a bot session.
- The algorithm flags that publisher placement and audience demographic as "high-converting."
- Taboola allocates more ad budget to that exact placement.
- Your CPA climbs while genuine human sales stagnate.
By utilizing bot filtering prior to dispatching your Taboola postback, fake conversions are stripped at the server level. Taboola only receives verified human transactions, keeping your campaign optimization models clean. This is the same principle that protects Meta's algorithm from learning bot patterns.
How Taboola S2S feeds into assisted conversions and multi-touch attribution
Native advertising is rarely a single-touch direct response channel. A consumer reading an article on an online newspaper typically discovers your product on Taboola, researches it on Google Search two days later, and eventually purchases via an email retargeting link.
Under standard last-click models, Taboola receives zero attribution credit, leading marketers to prematurely turn off profitable campaigns.
When you implement server-side tracking, your attribution platform records Taboola as the crucial assisted conversion touchpoint. By preserving the initial tblci and stitching it to the customer journey via first-party server data, you calculate true Return on Ad Spend (ROAS) across the entire funnel.
Automating Taboola S2S with SignalBridge
Setting up server-side postbacks manually requires configuring serverless endpoints, database storage for click IDs, cookie persistence logic, and retry outboxes.
SignalBridge automates Taboola S2S in under 5 minutes:
- 1-Click Native Integration — Toggle Taboola on in your SignalBridge dashboard.
- Automatic
tblciCapture — SignalBridge's lightweight tag records the Taboola click ID and binds it to the visitor session. - Shopify & WooCommerce Webhooks — Real purchases automatically trigger Taboola S2S postbacks with order ID, revenue, and currency.
- Resilient Retry Outbox — If Taboola's API experiences downtime, SignalBridge queues and retries with exponential backoff so zero conversions are dropped.
- Built-in Bot Protection — Non-human traffic is blocked from triggering conversion postbacks.
- Ad Spend Synchronization — Pull Taboola ad spend automatically alongside Meta, Google, and TikTok for real-time blended ROAS and MER reporting. Compare server-side tracking pricing across tools to see how SignalBridge stacks up.
Key takeaways
- Taboola S2S bypasses browser signal loss — recovers 30–45% of conversions lost to ad blockers, cross-domain advertorial hops, and Safari ITP.
- The
tblciclick ID is the foundation — capture and persist this URL parameter across all pre-sale and checkout steps. - No authentication keys required — postbacks rely on deterministic click ID attribution via HTTP GET to
https://trc.taboola.com/actions-handler/log/3/s2s-action. - SmartBid requires clean revenue data — passing order totals and order IDs enables automated Target ROAS optimization.
- Filter bots before postback — protect your algorithmic bid models from spending budget on non-human clicks.
- Value Taboola as an assist channel — evaluate native ads with multi-touch attribution, not last-click alone.
FAQ
What is Taboola server-side tracking (S2S)?
Taboola server-side tracking (Server-to-Server or S2S) is an attribution method where conversion events are transmitted directly from your web server or backend application to Taboola's postback endpoint via an HTTP request, rather than firing a client-side JavaScript pixel in the customer's browser. It requires capturing Taboola's click ID (tblci) on the landing page and passing it back to Taboola alongside conversion details like event name, revenue, and order ID.
What is the Taboola Click ID (tblci)?
The tblci (Taboola Click Identifier) is a unique alphanumeric string that Taboola automatically appends to your destination URL whenever a user clicks your native ad (for example, https://yoursite.com/?tblci=GiD...). Taboola uses this parameter to link downstream conversions back to the specific campaign, creative, and publisher placement that generated the click.
Do I need authentication credentials to send Taboola S2S postbacks?
No. Unlike Meta CAPI or Google Ads which require OAuth tokens or API keys, Taboola's S2S postback endpoint (https://trc.taboola.com/actions-handler/log/3/s2s-action) does not require an API secret or access token. Attribution is deterministic: as long as you provide the valid click-id (tblci) and event name, Taboola identifies your campaign and registers the conversion.
How does Taboola S2S handle revenue and multi-currency orders?
You can pass revenue and currency query parameters in the S2S postback URL. For example, revenue=89.50¤cy=USD. Taboola automatically converts the revenue to your account currency and feeds it into SmartBid's Target ROAS bidding algorithms.
What HTTP status code does Taboola return on successful S2S postback?
Taboola returns HTTP status code 204 No Content when an S2S conversion postback is successfully received and parsed. If Taboola returns 429 (rate limited) or 5xx (server error), your delivery system should retry with exponential backoff.
Can I run the Taboola Pixel and Taboola S2S simultaneously?
Yes, and Taboola recommends it. Under Taboola's deduplication rules, when the pixel and S2S report the same event for the same click ID, the S2S event is kept and the pixel event is deduplicated, so running both gives you redundancy without double counting. Pass a unique orderid with every purchase so duplicates can be recognized, and make sure each conversion in Taboola Realize has the Event Name your server sends.
How does bot filtering impact Taboola campaign performance?
Native ad networks experience substantial bot and crawler traffic. If bot sessions trigger conversion tags (such as automated form fills or fake orders), Taboola's SmartBid algorithm interprets those bots as ideal customers and purchases more similar inventory. Filtering out non-human conversions before sending postbacks ensures your ad spend targets genuine buyers.
Related reading
- Taboola Conversions API Setup: S2S Postback Without Code — the no-code route to the same postback
- Why Your Facebook Lookalike Audiences Are Getting Worse — the same signal loss that affects Taboola SmartBid also degrades Meta targeting; server-side data fixes both
- How Meta's Algorithm Actually Uses Your CAPI Data — data quality principles that apply to every ad platform including Taboola
- What Are Assisted Conversions? The Hidden Metric That Reveals Your Best Channels
- What is Server-Side Tracking? Complete Architecture Explainer
- 7 Best Bot Filter Tools for Ad Tracking in 2026
- How Bot Traffic Wastes Your Ad Spend
- Best TikTok Events API Tools in 2026
- Best Conversion Tracking Tools for E-Commerce in 2026
- 10 Best Server-Side Tracking Tools in 2026
- Server-Side Tracking Pricing Comparison 2026
- How to Calculate True ROAS for Multi-Channel E-Commerce
Related Articles
Taboola Conversions API Setup: S2S Postback Without Code
Set up the Taboola Conversions API (S2S postback) with no code. Create the Realize conversion, connect SignalBridge, and verify in minutes. Start free.
What Are Assisted Conversions? The Hidden Metric That Reveals Your Best Channels
Assisted conversions show which channels introduce customers — even when they don't close the deal. Learn how to track them, why last-click hides the truth, and how to stop cutting the channels driving your growth.