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.
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. | 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.
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/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 event rule name defined in Taboola Backstage. | 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/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 |
Step-by-step setup guide: Implementing Taboola S2S
Step 1: Ensure tblci tracking is enabled in Taboola Backstage
By default, Taboola appends tblci automatically to campaign tracking. However, you should confirm this in your account settings:
- Log in to Taboola Backstage (
backstage.taboola.com). - Navigate to Campaign Management.
- Under your campaign settings, check the Tracking Code section.
- Ensure your destination URL template does not strip query parameters, or explicitly include:
(Note: Taboola dynamically replaces?utm_source=taboola&utm_medium=native&tblci={click_id}{click_id}with the unique visitor click ID).
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/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: Configure the conversion rule in Taboola Backstage
To see conversions report against your campaigns:
- In Taboola Backstage, go to Tracking → Conversions.
- Click New Conversion.
- Choose Event Type → Server-to-Server (S2S).
- Set the Event Name to match the exact string you send in the
nameparameter (e.g.,make_purchase). - Set the Category to
PurchaseorLead. - Select your Attribution Window (e.g., 30-day post-click).
- Save the rule. Once the first postback is received, the conversion status will turn from No Activity to Active.
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}/3/bulk-s2s-action
Unlike the single GET postback, the bulk endpoint accepts an HTTP POST with a JSON array of up to 1,000 events per batch:
[
{
"click_id": "GiD_11111",
"name": "make_purchase",
"revenue": 54.00,
"currency": "USD",
"order_id": "ORD-101",
"timestamp": 1726300800000
},
{
"click_id": "GiD_22222",
"name": "make_purchase",
"revenue": 112.50,
"currency": "USD",
"order_id": "ORD-102",
"timestamp": 1726300815000
}
]
SignalBridge uses this bulk architecture automatically for enterprise e-commerce merchants, buffering and delivering events in resilient background batches.
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.
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.
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/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.
Related reading
- 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
- 10 Best Server-Side Tracking Tools in 2026
- How to Calculate True ROAS for Multi-Channel E-Commerce
Related Articles
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.
How Brands Recover 30% of Lost Conversions: Aggregated Results from 2026
Real data on how e-commerce brands recover 20-35% of lost conversions with server-side tracking. Aggregated results covering CPA reduction, ROAS improvement, and revenue recovered across 150+ implementations.