Skip to main content
Store platform
Setup about 5 minutes

WooCommerce server-side tracking with the SignalBridge script

SignalBridge works with WooCommerce through one script in your site header. It recognises a WooCommerce store, records storefront and checkout events, captures the purchase on the order confirmation page, and delivers each event to your ad platforms from SignalBridge's servers. There is no WordPress plugin and no marketplace app.

Because the script reads the page rather than hooking into WooCommerce, a few details decide whether purchases are captured correctly: where the script is loaded, what the confirmation page shows, and whether a caching or script-delay plugin interferes. This page covers all three.

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

Install
One script in the site header. No plugin to install
Detection
Recognises WooCommerce from its page markers
Purchase capture
On the order confirmation page, when your pixel reports the purchase or the page heading reads like "Order received"
Order number
The number in the /checkout/order-received/ URL
Order value from
Your data layer purchase event, order structured data, or the confirmation page totals
Deduplication
By order number, so a reloaded confirmation page is not counted twice
Coexists with
Your existing Meta Pixel, Google tag and TikTok pixel
Custom events
sb_track() for anything the script does not detect
Not included
Refund, cancellation and fulfilment events, which need order data from the store

How it works

  1. The script loads on every page

    Served from your own subdomain if you set up a custom domain, otherwise from SignalBridge's default domain. It records the visitor's landing page, campaign parameters and ad click IDs.

  2. It recognises the store

    WooCommerce is identified from its own page markers. From then on the script looks for product pages, add to cart actions, the checkout page and the order confirmation page.

  3. It follows your existing pixels

    If your Meta Pixel or TikTok pixel fires a purchase or add to cart, SignalBridge mirrors that event with the same event ID, so the platform counts the browser and server copies once. When the page has no Meta Pixel, a purchase from your Google tag is mirrored instead, with its transaction ID as the order number.

  4. It captures the purchase

    On the confirmation page it takes the order number from the URL. If your Meta, Google or TikTok pixel reports the purchase, SignalBridge uses that call, including its value. Otherwise it recognises the page from its heading and reads the total from your data layer, order structured data or the order summary. One Purchase is sent.

  5. The server delivers it

    Consent is applied, then each connected platform receives the event through its own queue with retries. The purchase is matched back to the ad click captured on arrival.

What the script captures on a WooCommerce store

Events are inferred from the page, so the table also shows where each one comes from.

EventDetected fromNotes
PageViewEvery page loadIncludes the page type, such as product, cart or checkout.
ViewContentProduct page markupUses product structured data, page metadata and the add to cart button on single product pages.
AddToCartYour pixel, or add to cart button clicksThe click fallback runs only when no ad pixel on the page reports the event.
InitiateCheckoutA checkout URLReported when the visitor reaches the checkout page.
PurchaseThe order confirmation pageRecognised when a pixel reports it there or the page heading reads like "Order received". The order number comes from the URL, so a repeat of the same order can be merged.
Lead and other eventsForms and sb_track()Contact, sign-up and booking forms are detected, and you can send your own events.

Where the order value is read from

The script tries these sources in order and stops at the first that gives a value.

SourceExample
Data layer purchase eventA GA4 purchase event with ecommerce value, currency and transaction ID, pushed by a tag manager or a plugin.
Order structured dataJSON-LD on the confirmation page describing the order.
Order summary on the pageThe order total element on the standard order received page.
Text on the pageA line such as Order total followed by an amount.
Meta tagAn order total meta tag, if your theme provides one.

Requirements

  • A WooCommerce store on WordPress and permission to add scripts to the site header.
  • A header scripts plugin such as WPCode or Insert Headers and Footers, or a theme that has a header scripts field.
  • A SignalBridge pixel and the ad platforms you want to connect.
  • Optionally, a subdomain for first-party tracking, with access to your DNS.

Set up WooCommerce

  1. Copy the snippet

    Open your pixel in SignalBridge, choose Install, select the WordPress tab and copy the snippet. It uses your custom domain automatically when one is active.

  2. Add it to the header

    With WPCode or Insert Headers and Footers, paste the snippet into the header section and save. Make sure it loads on every page, including checkout and the order received page.

  3. Exclude it from script delay and caching

    If a performance plugin delays, combines or defers JavaScript, add the SignalBridge script to its exclusions, and clear the cache. A script that loads late can miss the confirmation page.

  4. Connect your ad platforms

    In the pixel's settings connect Meta, Google Ads, TikTok or any other destination you use.

  5. Place a test order

    Complete a real or low-value order with a test payment method, and watch the event stream for one Purchase with the order number, value and currency.

Verify it works

  1. Check the Purchase event

    It should appear once, show the WooCommerce order number as its order ID, and carry the order total and currency.

  2. Reload the confirmation page

    Refresh the order received page. No second Purchase should be recorded for the same order.

  3. Check the platform

    In Meta Events Manager and your other platforms, look for the server event and confirm it matches the browser event where one exists.

Troubleshooting

  • No Purchase appears after a test order

    Confirm the script loads on the order received page by viewing the page source or the browser network tab. A caching or script-delay plugin is the most common cause, so exclude the script from it.

  • The Purchase has no value or the wrong value

    Some themes and the block-based order confirmation expose the total in markup the script does not read. Push a purchase event to the data layer, or send the order yourself with sb_track.

  • Large orders show a value that is far too small

    When the total is read from page text, an amount with a thousands separator, such as 1,234.50, can be misread. Prefer a purchase value from your Meta Pixel, a data layer purchase event or order structured data, and check a test order above 1,000 if your orders reach that size.

  • The same order is counted twice

    Check that two copies of the script are not installed, for example one in the theme and one in a plugin. The order number in the URL lets SignalBridge merge repeats of the same order.

  • Customers pay on another site and the order never appears

    If the buyer does not return to the order received page after paying, the script cannot see the order. Make sure your payment gateway redirects back to the store.

  • Add to cart events are missing

    The click fallback matches common button patterns. If your theme uses unusual buttons or a drawer, send the event with sb_track from your own code.

  • A platform shows duplicate purchases

    Platforms deduplicate on event name and event ID. SignalBridge reuses the ID of the browser event when it sees your pixel fire it, so check that the pixel on the page is the one connected in SignalBridge, and that no second plugin sends purchases with different IDs.

What to know before you rely on it

Where this integration stops, so the numbers you see are read correctly.

  • There is no WooCommerce order feed. Refunds, cancellations, status changes and orders created outside the browser, such as manual orders, are not seen.
  • A purchase is only captured when the buyer reaches the order confirmation page in a browser that runs the script.
  • Order details depend on what the confirmation page exposes. Check the value and currency on your own theme and checkout.
  • Plugins that delay or block JavaScript can prevent or postpone capture.
  • Visitors who have not agreed to marketing tracking are not sent to ad platforms where consent applies.

Questions about this integration

Is there a SignalBridge WordPress or WooCommerce plugin?

No. SignalBridge is a script you add to the site header, which you can do with a header scripts plugin. The script itself is not a plugin and nothing is added to the WooCommerce admin.

Will it work with my Facebook for WooCommerce or Google Site Kit setup?

Yes. SignalBridge reads the events those tools fire in the browser and mirrors them to the server, so you keep your existing setup and add reliable server delivery. It reuses the event ID of a Meta Pixel or TikTok Pixel call, so those platforms count the browser and server copies once. When the page has no Meta Pixel, it mirrors the Google tag's purchase with its transaction ID as the order number. If the page runs a TikTok Pixel as well as a Meta Pixel, each pixel's events go only to its own platform.

Does it work with block-based checkout?

The script runs on the checkout and order received pages either way. What differs is how the order total is exposed on the confirmation page, so check a test order and use a data layer event or sb_track if the value is missing.

How does it avoid duplicate purchases?

The order number from the confirmation URL identifies the order. Repeats of the same order, such as a page reload, are recognised and not counted again.

How does my cookie banner connect to SignalBridge?

The script does not read a cookie banner on its own, apart from Silktide's. Your banner has to tell it: call sb_consent(true) when a visitor accepts marketing cookies and sb_consent(false) when they decline. Set window.SB_REQUIRE_MARKETING_CONSENT = true before the SignalBridge snippet if visitors who have not chosen yet must not be tracked. Without that setting, a visitor with no recorded choice is treated as allowed. Decline once on a test device and confirm that no ad platform event appears.

Can I track refunds?

Not automatically. Without an order feed from WooCommerce, SignalBridge only sees what happens in the browser. You can send a custom event if you need one.

Do I need a custom domain?

No, but serving the script from your own subdomain keeps requests first-party, which helps against blockers that match third-party tracking domains.

Which events can I send myself?

Any. Call sb_track with an event name and properties such as value, currency, order_id and user_data, from your own code or a tag manager.

Does it slow my store?

The script loads asynchronously. Keep it excluded from delay plugins so it runs when the page loads, and test your pages as usual.

Try WooCommerce with SignalBridge

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