Skip to main content
Setup guide
Taboola by RealizeShopify

Taboola server-to-server conversions from Shopify

Taboola credits a Shopify order to an ad through the tblci click ID it adds to the landing page address. SignalBridge reads that ID, keeps it for the shopper, and when the order completes it sends a server-to-server postback to Taboola with the click ID, the event name, the revenue, the currency and the order ID. This guide covers what is specific to Shopify: where the click ID comes from, why only the browser copy of a purchase can be sent, and what must match if you also run Taboola's own pixel.

Taboola publishes both the postback format and its deduplication rules, so most of the checks below can be confirmed in Realize with one test order.

By Kiril Kostov, Founder of SignalBridge. Checked against the product and the sources below on .

Click ID
tblci from the landing page address, which Taboola adds to ad URLs by default
Purchase event name
make_purchase, which must equal the Event Name in Realize
Sent with a purchase
Revenue, currency and the Shopify order ID. Quantity is not sent
Revenue value
The checkout total including shipping and tax
Source of the postback
The shopper's browser copy, because the order webhook carries no tblci
Click ID check
A value shorter than 50 characters, or containing spaces, is rejected
Consent
Follows Shopify's Customer Privacy status
Refunds
Not sent to Taboola

Where the click ID comes from on Shopify

Taboola's documentation says it appends tblci to every ad URL automatically, so a Shopify store needs no campaign change unless you decided on a custom parameter name. That decision matters here: SignalBridge reads the parameter named tblci and no other name. If you set a custom Click ID parameter in Realize, such as tbl_click_id, the app will not capture it and no postbacks will be sent.

The SignalBridge Web Pixel reads tblci from the landing page address, keeps it in the shopper's browser and sends it with later events. The tracking server also reads it from the page address of each page view and stores it for 30 days against the shopper's Shopify visitor ID. At checkout, where the address no longer contains tblci, the purchase carries the stored value.

Shopify's order webhook is a different story. Its order record has no tblci field and SignalBridge's webhook handler does not read one, so the webhook copy of an order cannot be attributed to Taboola. The postback therefore comes from the browser copy of the purchase made by the Web Pixel, which is also the copy that carries the consent decision.

Taboola event names for a Shopify store

The name in each postback has to match the Event Name of a conversion in Realize, character for character. Create conversions only for the events you want Taboola to record.

Shopify eventTaboola event nameCreate it in Realize?
page_viewedpage_viewRarely. It is sent for every page view that carries a stored click ID.
product_viewedview_contentIf you optimise for product views.
product_added_to_cartadd_to_cartIf you optimise for add to cart.
checkout_startedinitiate_checkoutYes, if you want checkouts. Taboola's preset is start_checkout, so change its Event Name.
payment_info_submittedadd_payment_infoOnly if you want that step.
checkout_completedmake_purchaseYes. This is the conversion most campaigns bid on.

Running Taboola's pixel and SignalBridge together

Taboola's documentation calls tracking by both the pixel and S2S a best practice. For events with the same click ID, if an event arrives by both routes, Taboola keeps the S2S event and deduplicates the pixel one. Its own example shows a pixel purchase and an S2S purchase with the same order ID resolving to a single S2S conversion.

The rule has a catch that matters on Shopify. Taboola states that events are not deduplicated when their order ID, revenue, currency or quantity differ. SignalBridge sends the checkout total as the revenue, which includes shipping and tax, along with the currency and the numeric Shopify order ID, and it sends no quantity. If the pixel you run, for example from Taboola's own Shopify app, reports the revenue before shipping and tax, uses a different order identifier or sends a quantity, Taboola sees two different purchases and counts both.

Check this once, on a test order, by comparing the values on the two copies in Realize. If they cannot be made to agree, use one route for make_purchase and not both.

Set it up

The Realize step comes first, because the event name you choose there is the name every postback must use.

  1. Create the purchase conversion in Realize

    In Realize open Tracking, then New Conversion, and choose to create conversions using code. Set Conversion Type to Event, Category to Make Purchase, and confirm that Event Name is make_purchase. Leave Fixed Value empty and keep Include in total conversions and Include in total value checked.

  2. Keep the default click ID parameter

    Leave the Click ID parameter on its default, tblci. SignalBridge does not read a custom name.

  3. Connect Taboola in SignalBridge

    Open the pixel's settings, choose Connect Taboola, and enter the Client ID, Client Secret and Account ID from your Backstage API credentials. SignalBridge validates them before it turns the integration on.

  4. Install the SignalBridge app

    Install it from the Shopify App Store and approve the permissions. The Web Pixel starts capturing tblci and the checkout. No theme code is involved.

  5. Add the checkout conversion if you want it

    In Realize create a second event conversion with the Event Name initiate_checkout, or edit the preset start_checkout to that name.

  6. Decide how the pixel and S2S relate

    If Taboola's own Shopify app or pixel is also installed, plan to compare the two purchase copies as described above. If you remove the pixel, SignalBridge is the only source.

Test it with a real click

  1. Use Taboola's test tool

    In Realize open Tracking, Conversions, Test Events and expand Server Events. Choose a campaign, generate the QR code or test link, open it on a phone or browser and walk through your store to place an order.

  2. Watch the events received

    The Events Received panel should show make_purchase with the revenue and order ID you expect. A missing purchase usually means an event name mismatch.

  3. Check the event in SignalBridge

    The event stream shows the purchase with a tblci value and Taboola marked as delivered. A purchase with no tblci is never sent.

  4. Compare the copies if the pixel is also running

    Open the conversion in Realize after a day. One purchase per order means the copies matched. Two means one of order ID, revenue or currency differs.

Problems that are specific to Shopify

  • Realize counts every Shopify order twice

    The Taboola pixel and the SignalBridge postback carry different revenue, currency or order ID, so Taboola cannot deduplicate them. Align the values, or turn off one route for make_purchase.

  • No postback is sent for a Taboola order

    The order had no stored tblci. Check that the ad URL reaches Shopify with tblci, that you did not rename the parameter in Realize, that no redirect app drops the query string, and that the shopper allowed marketing tracking.

  • Taboola shows no purchases at all

    The postback name must equal the Event Name in Realize, not the Conversion Name, and it is case sensitive. Confirm the Event Name is make_purchase.

  • Checkout starts are missing

    Taboola's preset is start_checkout and SignalBridge sends initiate_checkout. Edit the Event Name in Realize.

  • A conversion is marked unrecoverable

    Taboola rejected the click ID or the request. A click ID shorter than 50 characters or with spaces is refused by SignalBridge before it is sent. Check that it was not truncated by a redirect or a copy.

  • Revenue in Taboola differs from Shopify

    SignalBridge sends the checkout total including shipping and tax, and Taboola converts it to your account currency. Compare against the order total, not the product subtotal.

What to know before you rely on it

  • Only orders that began on a Taboola click can be sent. Orders from other channels have no tblci.
  • The order webhook has no tblci, so a shopper who blocks the Web Pixel or declines marketing tracking cannot be reported to Taboola.
  • Refunds and cancellations are not sent, so a refunded order remains counted in Taboola.
  • Taboola decides attribution and optimisation, and reporting lags by hours.
  • The event names are fixed. You adapt Realize to them, not the other way round.

Questions about this setup

Do I need to remove Taboola's own Shopify app?

No. Taboola recommends tracking with both the pixel and S2S, and keeps the S2S event when both report the same one. Just make sure the order ID, revenue and currency match on both copies.

Does SignalBridge send the quantity?

No. Taboola accepts a quantity parameter, but the postback from SignalBridge carries click ID, name, revenue, currency and order ID.

Can I rename the click ID parameter in Realize?

You can, but SignalBridge reads only tblci. With a custom name no click ID is captured on Shopify, so leave the default.

Why is the postback made from the browser copy of the order?

Shopify gives the order webhook no tblci, and the webhook does not carry a consent decision. The Web Pixel sees the landing page address and Shopify's Customer Privacy status, so its copy is the one that can be attributed and consented.

How long is a click remembered?

The tracking server keeps the stored click ID for 30 days after the last visit that carried one. Taboola applies its own click-through conversion window as well.

What happens if Taboola is down when an order completes?

The postback is stored durably and retried with growing delays, honouring Taboola's Retry-After, up to six hours between attempts.

Sources

The vendor documents this guide relies on. Statements about SignalBridge come from the product itself.

Try this setup with SignalBridge

Every plan starts with a 14-day free trial. Connect it, send a test conversion and see the result before you decide.