- 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 event | Taboola event name | Create it in Realize? |
|---|---|---|
| page_viewed | page_view | Rarely. It is sent for every page view that carries a stored click ID. |
| product_viewed | view_content | If you optimise for product views. |
| product_added_to_cart | add_to_cart | If you optimise for add to cart. |
| checkout_started | initiate_checkout | Yes, if you want checkouts. Taboola's preset is start_checkout, so change its Event Name. |
| payment_info_submitted | add_payment_info | Only if you want that step. |
| checkout_completed | make_purchase | Yes. 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.
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.
Keep the default click ID parameter
Leave the Click ID parameter on its default, tblci. SignalBridge does not read a custom name.
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.
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.
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.
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
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.
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.
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.
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.
- Taboola Help Center: Track conversions using server-to-server integration (S2S)The default tblci parameter, the custom click ID option and the requirement that the event name match exactly.
- Taboola Developers: The S2S postback URLThe click-id and name parameters, the optional revenue, currency, quantity and orderid, and the 204 success code.
- Taboola Developers: Conversion deduplicationDual-method tracking and the rule that S2S is kept when the same event arrives by pixel and S2S.
- Taboola Developers: Heuristic deduplicationEvents with a different order ID, revenue, currency or quantity are not deduplicated.