Skip to main content
Back to Blog

How to Set Up Taboola Server-Side Tracking (S2S): Complete 2026 Guide

Step-by-step Taboola S2S setup guide: capture tblci click IDs, send server-side postbacks, and recover 25%+ lost native ad conversions. Works with Shopify, WooCommerce, and custom stacks.

(Updated )
14 min read
How to Set Up Taboola Server-Side Tracking (S2S): Complete 2026 Guide

Key Takeaways

  • •Taboola server-side tracking (S2S) sends conversion data directly from your server to Taboola's actions-handler endpoint, bypassing browser ad blockers and Safari ITP cookie restrictions
  • •Taboola S2S relies on the `tblci` (Taboola Click ID) parameter appended to landing page URLs — capturing and persisting `tblci` across user sessions is the foundation of accurate native ad attribution
  • •Native advertising campaigns often feature multi-step advertorial or pre-sale funnels where 30–45% of browser pixel events are lost to cross-domain navigation and ad blockers
  • •Taboola's SmartBid algorithmic bidding requires accurate purchase value and conversion volume to optimize CPA — feeding clean server-side data directly lowers native ad acquisition costs
  • •Filtering bot traffic before sending S2S postbacks prevents fake leads and scrapers from poisoning Taboola campaign optimization models

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:

ChallengeImpact on Browser PixelTaboola S2S Solution
Advertorial / Pre-sale funnelsUser 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 Browser35–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 limitsSafari 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 contaminationNative 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

ParameterTypeRequired?DescriptionExample
click-idStringYesThe exact tblci value captured on the initial ad click.GiD_AbCd12345
nameStringYesThe conversion's Event Name exactly as defined in Taboola Realize (case-sensitive).make_purchase
revenueNumberOptionalOrder total or lead value (finite float/int).79.99
currencyStringOptional3-letter ISO currency code.USD, GBP, EUR
orderidStringOptionalUnique transaction identifier to prevent duplicate reporting.ORD-98432
quantityIntegerOptionalNumber 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&currency=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 that click-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 EventTaboola Standard Event NameTypical Use Case
PageViewpage_viewAdvertorial / article reading
ViewContentview_contentProduct detail page view
AddToCartadd_to_cartAdding item to shopping bag
InitiateCheckoutinitiate_checkoutEntering checkout steps
Purchasemake_purchaseCompleted e-commerce order
LeadleadForm submission, consultation inquiry
CompleteRegistrationcomplete_registrationAccount creation, newsletter signup
SubscribesubscribeMonthly 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:

  1. Do not strip query parameters. If a redirect, advertorial page, or link shortener sits between Taboola and your store, make sure it forwards tblci unchanged. Taboola ignores a truncated or corrupted value.
  2. Keep the default parameter name. The capture code below reads the standard tblci parameter.

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:

  1. In Realize, select your account and choose Tracking in the left sidebar.
  2. Click + New Conversion, select Create conversions using code, and click Continue.
  3. Enter a Conversion Name (a label only) and set Conversion Type to EVENT.
  4. Choose the Category and set the Event Name to exactly the string you send in the name parameter (for example make_purchase). Names are case-sensitive, and it is the Event Name, not the Conversion Name, that must match.
  5. 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:

  1. SmartBid receives a conversion signal from a bot session.
  2. The algorithm flags that publisher placement and audience demographic as "high-converting."
  3. Taboola allocates more ad budget to that exact placement.
  4. 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 tblci Capture — 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

  1. Taboola S2S bypasses browser signal loss — recovers 30–45% of conversions lost to ad blockers, cross-domain advertorial hops, and Safari ITP.
  2. The tblci click ID is the foundation — capture and persist this URL parameter across all pre-sale and checkout steps.
  3. 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.
  4. SmartBid requires clean revenue data — passing order totals and order IDs enables automated Target ROAS optimization.
  5. Filter bots before postback — protect your algorithmic bid models from spending budget on non-human clicks.
  6. 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&currency=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.


Ready to recover more conversions?

Start tracking what your pixels miss. Set up in 5 minutes, no credit card required.

Start Free Trial