- Click IDs captured
- gclid, gbraid and wbraid from the landing page URL
- Kept for
- Up to 30 days in a first-party cookie. Safari caps cookies written by JavaScript at seven days
- Order ID
- The Google tag's transaction ID, or the number in the /checkout/order-received/ URL
- Value and currency
- From the purchase call your pixel or Google tag makes, or from the order received page
- Customer data
- Hashed email and phone, attached only after the banner passes an explicit sb_consent(true)
- Conversion action
- Offline (import) action only, never a website tag action
- Not sent
- Refunds, cancellations and manual orders, because WooCommerce has no order feed here
- Reporting delay
- Hours, not minutes, before an uploaded order shows in Google Ads
Two routes to Google Ads, and the decision between them
The Google for WooCommerce extension describes automatic Google tagging and conversion tracking, and its listing mentions enhanced conversions. Stores that use it, Site Kit or a Google tag in a container therefore usually already have a purchase conversion action that is recorded by the tag in the shopper's browser. Open Goals and Conversions in Google Ads and look at the list before you add anything.
SignalBridge's upload is a second, separate action. It is an offline click conversion that arrives from a server. If both are primary for the same purchase, Google counts the sale twice, because nothing links a website action to an import action. Google's help centre describes a transaction ID as the way to avoid duplicates within one action, which is why SignalBridge sends the order number, but it does not merge two actions.
So decide which action bidding should learn from and set the other to secondary. A secondary action is still reported, and it is how you compare the two routes for a few weeks before you commit. Changing the primary action can move your reported conversions and reset learning, so choose a quiet period.
How the click ID travels from ad to order
Google needs the click identifier to credit the right campaign. This is what the script does with it on a WooCommerce store.
| Step | What happens | What can go wrong |
|---|---|---|
| The shopper lands from an ad | The script reads gclid, gbraid or wbraid from the URL and writes it to a first-party cookie and to session storage | A redirect or a cache plugin that strips query strings removes the click ID before the script sees it |
| The shopper browses and checks out | The stored value is attached to every event that follows, and it survives an off-site payment page | In Safari the cookie is limited to seven days, so a later purchase can lose it |
| The order received page loads | The purchase is sent with the click ID, the Google click ID type, the order number and the value | If no pixel reports the purchase and the page heading is not recognised, there is no purchase to send |
| The visitor clicked an internal link carrying a gclid | Ignored. A click ID on a URL reached from your own site does not overwrite the stored one | Do not rely on tagging internal links |
Which WooCommerce orders upload
Google needs something to match an order to. SignalBridge checks this for every purchase and records the route it took.
| Situation | What happens |
|---|---|
| Arrived from a Google ad and the cookie is intact | Uploaded with the click ID. Hashed email and phone are added only after an explicit consent grant. |
| Click ID missing, but a usable email or phone and consent granted | Uploaded as an enhanced conversion from the hashed identifiers. |
| Organic, direct, email or another ad network | Not uploaded. There is nothing to match, and customer data is not sent without consent. |
| Order created in the WooCommerce admin, or a buyer who never returns to the order received page | Not uploaded. The script never saw the order. |
| The visitor declined marketing cookies | Not uploaded. The click ID and identifiers are cleared. |
Where the purchase itself comes from
SignalBridge does not create a purchase out of nothing. It copies what a pixel on the page reports, and falls back to the page. If a Meta Pixel fires Purchase on the order received page, that call supplies the value and currency. If the page has no Meta Pixel, SignalBridge copies the Google tag's purchase event and uses its transaction ID as the order number. If neither exists, it recognises the page by a heading such as Order received and reads the total from a data layer purchase event, order structured data or the order summary.
When the call carries no order number, SignalBridge takes it from the order received URL, so a reload of the page is recognised as the same order and not uploaded again.
One routing rule matters here. When a page runs both a Meta Pixel and a TikTok Pixel, SignalBridge sends each pixel's events only to that pixel's own platform. A purchase copied from the Meta Pixel then goes to Meta, and one copied from the TikTok Pixel goes to TikTok, and no Google Ads upload is created from it. If your store has both pixels, check the test below before you rely on this route.
Set it up
You need to edit the WordPress header and to create conversion actions in the Google Ads account, directly or through a manager account.
Add the snippet to the header
Copy the WordPress snippet from your pixel in SignalBridge and paste it into a header scripts plugin or a theme field that prints in the head. It must load on the landing pages as well as on checkout, because the click ID is read on arrival.
Keep it out of script delay and caching
Exclude the SignalBridge script from any plugin that delays or combines JavaScript, and keep the order received page out of full page caching. A script that starts late can miss the landing page URL.
Review your existing conversion actions
In Google Ads open Goals, then Conversions. Note which actions the Google tag creates for purchases and whether one is marked primary.
Create an offline purchase action
Create a conversion action, choose to import data, and select conversions from clicks. Use the Purchase category, count Every conversion, and give it a name such as WooCommerce purchase (SignalBridge).
Connect Google Ads in SignalBridge
Open the pixel's settings, find Google Ads, choose Connect and sign in with the Google account that has access. Pick the account and, if you reach it through a manager account, enter the manager ID.
Map Purchase to the action
Choose the Purchase event and enter the Conversion Action ID. Open the action in Google Ads and read the number after ctId= in the browser address.
Accept the customer data terms if asked
A rejection that mentions the enhanced conversions customer data terms means the Google Ads account has not accepted them yet. Accept them there, then retry the failed deliveries.
Choose the primary action and wire consent
Make one purchase action primary and the other secondary. Then connect your cookie banner so it calls sb_consent(true) on acceptance and sb_consent(false) on refusal, and set window.SB_REQUIRE_MARKETING_CONSENT = true above the snippet if you need a choice before tracking.
Test it with a real click
Click one of your own ads
In a browser where you accept marketing cookies, click a live ad with auto-tagging on and confirm that the landing URL contains a gclid.
Place a test order in the same browser
Complete the order, even if you pay through an off-site gateway. In the SignalBridge event stream the Purchase should show a Google click ID, the order number and the Google Ads destination as delivered.
Repeat on a page that runs your usual pixels
If your store runs both a Meta Pixel and a TikTok Pixel and no Google Ads delivery appears, you have met the routing rule above.
Read the action in Google Ads
Open Goals and the action, and look at its status and diagnostics. Allow several hours before you conclude anything, because imports are not instant.
Problems that are specific to WooCommerce
Google Ads counts each sale twice
The Google tag's purchase action and the SignalBridge offline action are both primary. Make one of them secondary.
Nothing uploads for a store that runs both a Meta and a TikTok pixel
Events copied from each pixel go only to that pixel's platform, so Google Ads gets none of them. Remove one of the pixels from the page, or use a store without both, until the routing changes.
Orders from iPhone and Safari shoppers go missing
Safari caps the cookie the script writes at seven days, so a buyer who returns after a longer gap has no click ID. Those orders can still upload by hashed email or phone when consent was granted.
The click ID is missing on the landing page
Look at the URL the shopper actually reached. A redirect, a link shortener or a caching rule can drop the query string before the script runs.
The value is higher than your net revenue
SignalBridge sends the value your pixel or page reports, which for WooCommerce is normally the order total including shipping and tax. Expect a gap against item revenue that is not a tracking error.
Google rejects the upload as an invalid action type
Purchase is mapped to the action the Google tag created, which is a website action. Create an offline (import) action for SignalBridge and map that one instead.
What to know before you rely on it
Where this setup stops, so the numbers you see are read correctly.
- There are no refund or cancellation adjustments, because the script sees only the order received page.
- The order received page is also shown for unpaid orders such as bank transfers, so check uploads against paid orders.
- Only orders that can be matched are uploaded. Orders from other channels are not meant to appear.
- Google decides attribution. Counts in Google Ads and in WooCommerce will differ because of conversion windows, modelling and reporting delay.
- The consent choice reaches the SignalBridge upload through sb_consent only. Your Google tag keeps whatever consent setup it already has, and the two are configured separately.
Questions about this setup
Should I uninstall Site Kit or Google for WooCommerce?
No. Keep them for the Google tag, Merchant Center and campaign features. Only the purchase conversion action overlaps with SignalBridge, and you resolve that by choosing one primary action.
Why does Google show fewer conversions than I have orders?
Only orders that began on a Google ad click, or carry a consented email or phone, are uploaded. Orders from organic search, email and other channels are left out.
Which order ID does Google receive?
The transaction ID from the Google tag's purchase event when that is the source, otherwise the number in the /checkout/order-received/ URL. With a sequential order number plugin that URL number differs from the one customers see.
Do I need enhanced conversions turned on in the Google tag?
No. It is a separate setting. SignalBridge attaches hashed email and phone to its own uploads after an explicit consent grant, whatever the tag's setting is.
How long until uploads show in Google Ads?
Several hours is normal, and a brand-new conversion action can take longer before Google accepts the first upload. SignalBridge retries temporary rejections automatically.
Does it work with Performance Max?
Campaign type does not matter to the upload. What matters is whether the order carries a Google click ID, or a consented email or phone number to match on.
Sources
The vendor documents this guide relies on. Statements about SignalBridge come from the product itself.
- Google Ads Help: Use a transaction ID to minimize duplicate conversionsHow an order ID stops the same purchase being counted twice within one action.
- Google Ads API: Upload click conversionsThe click ID rules for uploads and the use of the order ID for later adjustments.
- WordPress.org: Google for WooCommerceThe extension's description of automatic Google tagging, conversion tracking and enhanced conversions.