Install on Shopify
Aimerce Blogs
Taboola Server-Side Tracking for Shopify, Explained
10 September 2026
Taboola Server-Side Tracking for Shopify, Explained
First-Party Data 101Shopify

Quick Answer: Taboola's server-side integration (S2S) sends conversion events directly from your server to Taboola's postback URL, bypassing the browser pixel. The most common setup mistake is a parameter name mismatch: the landing page click ID is tblci, but the server-side postback requires click-id, with a hyphen, and getting either wrong means nothing gets recorded, with no error shown.

Key Takeaways

  • Taboola's server-side integration (S2S) sends conversion events directly from your server to a postback URL, bypassing the browser pixel entirely, and Taboola's own documentation states S2S can fully replace the pixel rather than needing to run alongside it.
  • The landing page click ID parameter and the server-side postback parameter use two different names: tblci on the URL, click-id (with a hyphen) on the postback call. Get either wrong and no conversions get recorded, with no error surfaced anywhere.
  • Taboola pre-checks "Include in total conversions" by default on lower-funnel events (Purchase, Lead, Add to Cart, Add Payment Info) when you create them. Leaving it checked on upper- and mid-funnel events alongside your actual purchase event makes Taboola sum every page view and cart addition into your Total Conversions, collapsing CPA to a few cents and inflating conversion rate past 60%.
  • The click ID itself is a case-sensitive string of roughly 70 characters that must be passed exactly as received. A truncated or corrupted value is ignored entirely.
  • Two delivery methods exist: a single postback URL call per conversion, or a bulk submit API for multiple conversions in one request.
  • Taboola S2S also supports CRM-based, offline conversions, phone orders, in-person appointments, by capturing and storing the click ID at click time, then sending it later when the offline conversion actually occurs.

What is Taboola's server-side integration (S2S), and how does it differ from the pixel?

S2S sends conversion events directly from your server to Taboola's postback endpoint, instead of relying on a browser script to report the conversion after the fact.

The Taboola Pixel is the standard browser-based approach: a script fires on the confirmation page and reports the conversion from the shopper's browser. S2S moves that reporting to your server instead, triggered by your own backend logic (in Shopify's case, ideally the order creation webhook) rather than whatever happens to execute in the browser. Taboola's own materials describe the advantages in familiar terms: more accurate results, faster page speed since there's less client-side script weight, and more control over exactly what data gets sent.

Does Taboola S2S replace the pixel, or does it need to run alongside it?

Per Taboola's own guidance, S2S can fully replace the pixel, a genuinely different recommendation than most other ad platforms give.

Meta, TikTok, Snapchat, and Pinterest all recommend running the browser pixel and the server-side API together, with deduplication handling the overlap. Taboola's documentation takes a different position: S2S integration "can completely replace Taboola web Pixel," meaning any event you'd otherwise track client-side can be tracked server-side instead, without needing to maintain both. That doesn't mean running both is wrong, just that Taboola doesn't treat it as the required default the way other platforms do.

What is Taboola's click ID, and where does it actually live?

A case-sensitive string of roughly 70 characters, automatically appended to your ad's destination URL, that links a click to whatever conversion happens afterward.

By default, Taboola appends this value to the landing page URL as tblci={click_id}. If that default parameter conflicts with something in your own setup, a custom parameter name can be configured instead, at either the campaign level or the ad level. Whatever the exact value looks like, it needs to be captured and stored, in a cookie, local storage, or an equivalent method, exactly as received. Taboola's documentation is specific about this: "a truncated (or otherwise corrupted) value will be ignored." There's no partial credit for a mangled click ID.

Why does the parameter name change between the landing page and the postback call?

Because Taboola's URL-side click ID capture and its server-side conversion API were built as two related but distinct systems, and the documentation is explicit that their parameter names don't match.

On the landing page, the click ID arrives as tblci by default. When that same value gets sent to Taboola's server-side postback URL or bulk submit API, it has to be sent under a different key entirely: click-id, with a hyphen. Taboola's own documentation states the consequence of getting this wrong plainly: "The Click ID param must be named click-id, exactly as shown. Otherwise, no conversions will be recorded." Not a warning, not a partial match, no conversions recorded, full stop. This is an easy mistake to make precisely because the two names look close enough to assume they're interchangeable. They aren't, and nothing on either end tells you they don't match until you notice conversions aren't showing up.

Why does "Include in total conversions" quietly break your CPA and conversion rate?

Because Taboola pre-checks this setting by default for lower-funnel event categories, and leaving multiple funnel stages checked makes Taboola sum every one of them into a single, wildly inflated conversion count.

When you create a conversion event in Realize, there's a checkbox under "Use this conversion in bidding optimization and reports": "Include in total conversions." Whatever's checked here feeds directly into your account's Total Conversions number, and that number drives the Conversions column in your reporting, your CPA (spend divided by conversions), and your conversion rate. It's also used as a direct signal for Taboola's own automatic bid optimization.

Here's where it goes wrong in practice. A typical Aimerce setup sends a full event funnel, ViewContent, AddToCart, StartCheckout, AddPaymentInfo, Lead, Search, and MakePurchase among them. If several of those upper- and mid-funnel events still have "Include in total conversions" switched on, Taboola treats every page view, every add-to-cart, and every checkout start as its own conversion and adds them all together. The result: CPA collapses to a few cents, conversion rate looks impossibly high, sometimes over 60%, and none of it reflects what your ads are actually driving. This isn't a spend problem or a tracking problem. It's purely a counting-scope issue, made worse by the fact that Taboola pre-checks this box by default for its lower-funnel categories (Purchase, Lead, Add to Cart, Add Payment Info) the moment you create them.

The fix: after creating your conversions, go back and turn "Include in total conversions" ON only for your actual purchase event, and OFF for every upper- and mid-funnel event. Those events stay tracked and visible in your reporting either way, they just stop inflating the number that actually drives your CPA and conversion rate.

What does the actual postback request look like?

A single HTTP call to Taboola's postback endpoint, carrying the click ID and the details of the conversion.

The format Taboola documents directly:

https://trc.taboola.com/actions-handler/log/3/s2s-action?click-id=CLICK_ID&name=EVENT_NAME&revenue=REVENUE&currency=CURRENCY&orderid=ORDER_ID

Revenue, currency, and order ID are optional dynamic conversion values, but including them is what makes ROAS and order-level reporting possible inside Taboola rather than just a raw conversion count with no context. Currency needs to follow the standard 3-letter ISO format. For higher volume, Taboola also supports a bulk submit option: a JSON object carrying multiple conversions in a single call rather than one postback per event.

Can Taboola track offline or CRM-based conversions?

Yes, and this is one of the more distinctive things about Taboola's S2S setup compared to most ad platforms' server-side tracking.

CRM-based conversions happen outside the browser entirely: phone orders, in-person appointments, bookings that convert well after the initial lead was captured. Since the Taboola Pixel can't see any of this, S2S is the only way to attribute these back to the original ad. The flow: a shopper clicks the ad, the click ID lands on the page as tblci, the site captures that value and sends it along with the lead's other details into the CRM, the CRM stores the click ID with the lead record, and whenever that lead actually converts, potentially days or weeks later, the CRM fires the postback call to Taboola with the stored click ID attached, crediting the original ad for a conversion that happened well outside any normal browser session.

Taboola Pixel vs. S2S: What Changes

DimensionPixel OnlyS2S (Server-Side)
Blocked by ad blockersYesNo
Depends on the browser executing JavaScriptYesNo
Click ID captureAutomatic, via tblci in the URLMust be captured and stored manually before conversion
Can track offline/CRM-based conversionsNoYes
Parameter name for the click IDtblci (landing page)click-id, with a hyphen (postback)
Delivery methodBrowser fires directly to TaboolaSingle postback call, or bulk submit API for volume
Can fully replace the otherNot by defaultYes, per Taboola's own guidance

How do you verify S2S is actually working?

Through Taboola's own built-in test flow, not just by trusting that a postback call went out without erroring on your end.

In Realize, Taboola's platform, go to Tracking, then Conversions, then the Test Events tab, and expand the Server Events section. Select the relevant campaign and confirm a test conversion actually appears there. This step matters more than it sounds like it should, because a parameter mismatch produces no visible error on your side. The postback call can look like it succeeded from your server's perspective while Taboola silently discards it on the receiving end, precisely the failure mode the parameter-naming mismatch creates.

Common mistakes to avoid

  • Assuming tblci and click-id are the same parameter. They're not. Using the wrong name on either side of the handoff means nothing gets recorded, with no error to flag it.
  • Truncating or otherwise altering the click ID string before sending it. It's a case-sensitive value of roughly 70 characters that must be passed exactly as received, not reformatted or shortened.
  • Sending currency in anything other than the standard 3-letter ISO format. A common, avoidable source of rejected or misreported conversion data.
  • Not testing through Taboola's own Server Events flow before trusting live data. A postback call that appears to succeed on your end can still be silently discarded on Taboola's side.
  • Assuming the pixel needs to stay active alongside S2S by default. Per Taboola's own guidance, S2S can fully replace it, unlike the "run both, dedupe" pattern most other ad platforms recommend.
  • Leaving "Include in total conversions" checked on upper- and mid-funnel events. Taboola pre-checks this by default for lower-funnel categories when you create them. Leaving several checked alongside your real purchase event sums page views and cart additions into your Total Conversions, collapsing CPA and inflating conversion rate to numbers that don't reflect reality.

How does Aimerce handle Taboola server-side tracking?

Aimerce supports Taboola as part of its server-side tracking infrastructure, alongside Meta, Google, TikTok, Pinterest, Snapchat, and Klaviyo, using the same architecture that captures purchase events from Shopify's order creation signal for every other destination.

Purchase events are generated from Shopify's order record rather than a browser script, and the click ID captured on landing is persisted and mapped to the correct parameter name for each stage of Taboola's own two-name system, so the mismatch between tblci and click-id isn't something that has to be manually tracked and maintained. Setup involves adding the click_id query parameter to your Taboola campaign, then creating the standard conversion events in Realize, and testing one before trusting it live. Aimerce sends a full event funnel to Taboola, including ViewContent, AddToCart, StartCheckout, AddPaymentInfo, Lead, Search, and MakePurchase (the actual purchase event) among the standard events it maps. Because Taboola pre-checks "Include in total conversions" for lower-funnel categories by default, the recommended configuration after setup is to leave that setting on only for MakePurchase and off for everything upstream of it, otherwise Total Conversions and CPA end up reflecting page views and cart activity rather than actual purchases.

For merchants running Taboola alongside other ad channels, having every destination receive complete, correctly formatted events from the same pipeline means one setup to maintain rather than a separate, easy-to-misconfigure integration per platform.

FAQ

What is Taboola's S2S (server-to-server) integration? A method of sending conversion events directly from your server to Taboola's postback endpoint, bypassing the browser pixel entirely. It's used for both standard on-site conversions and offline, CRM-based conversions the pixel can't see.

Does Taboola S2S replace the pixel, or does it need to run alongside it? Per Taboola's own documentation, S2S can fully replace the pixel. This is different from most other ad platforms, which typically recommend running both together with deduplication.

Why isn't my Taboola S2S conversion showing up? The most common cause is a parameter name mismatch. The landing page click ID is tblci by default, but the server-side postback call requires the parameter to be named click-id, with a hyphen. Using the wrong name on either side means nothing gets recorded, with no error shown.

What is Taboola's click ID, and how long is it valid for? A case-sensitive string of roughly 70 characters appended to your ad's destination URL as tblci by default. It must be captured, stored, and passed exactly as received, a truncated or altered value is ignored entirely.

Can Taboola track conversions that happen outside a browser session? Yes, through CRM-based S2S tracking. The click ID is captured at the moment of the ad click, stored with the lead record in your CRM, and sent to Taboola later when the offline conversion, a phone order or booked appointment, for example, actually occurs.

What's the difference between the postback URL method and the bulk submit API? The postback URL sends one conversion per HTTP call using query parameters. The bulk submit API sends a JSON object covering multiple conversions in a single request, useful for higher-volume needs.

How do I verify my Taboola S2S integration is actually working? In Realize, go to Tracking, then Conversions, then the Test Events tab, and expand Server Events. Select the relevant campaign and confirm a test conversion actually appears there, rather than assuming success just because your server didn't return an error.

Why is my Taboola CPA suspiciously low and my conversion rate impossibly high? Check "Include in total conversions" on each conversion event in Realize. Taboola pre-checks this by default for lower-funnel categories (Purchase, Lead, Add to Cart, Add Payment Info), and leaving it on for upper- and mid-funnel events alongside your actual purchase event sums them all into Total Conversions. Turn it on only for your real purchase event and off for everything upstream of it.

Sources

[1] Taboola for Developers, "The S2S postback URL," [2] Taboola for Developers, "Manual S2S integration," [3] Taboola for Developers, "Track CRM-based conversions using S2S," [4] Taboola for Developers, "S2S verification," [5] Aimerce internal documentation, "How to setup Taboola campaigns and conversions for Aimerce" (Include in total conversions configuration guidance)

Sign Up for a
30-Day Aimerce Pixel Free Trial
Sign Up Using Your Shopify Account Email
*Money back guaranteed.
Aimerce pays for itself or you don’t pay anything.