Skip to main content
Setup guide
Google AdsWooCommerce

Google Ads conversion uploads from WooCommerce

A WooCommerce store usually measures Google Ads purchases with a Google tag that Site Kit, the Google for WooCommerce extension or a tag manager puts on the order received page. SignalBridge adds a server route next to it: when a shopper who clicked a Google ad buys, the order is uploaded to Google Ads from SignalBridge's servers, matched by the ad click ID and, where consent allows, by hashed customer data.

There is no order feed from WooCommerce, so this guide is specific about what the browser script can see: how it keeps the click ID until the purchase, where the order number and value come from, and why a setup that works on one store can quietly produce no uploads on another.

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

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.

StepWhat happensWhat can go wrong
The shopper lands from an adThe script reads gclid, gbraid or wbraid from the URL and writes it to a first-party cookie and to session storageA redirect or a cache plugin that strips query strings removes the click ID before the script sees it
The shopper browses and checks outThe stored value is attached to every event that follows, and it survives an off-site payment pageIn Safari the cookie is limited to seven days, so a later purchase can lose it
The order received page loadsThe purchase is sent with the click ID, the Google click ID type, the order number and the valueIf 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 gclidIgnored. A click ID on a URL reached from your own site does not overwrite the stored oneDo 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.

SituationWhat happens
Arrived from a Google ad and the cookie is intactUploaded 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 grantedUploaded as an enhanced conversion from the hashed identifiers.
Organic, direct, email or another ad networkNot 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 pageNot uploaded. The script never saw the order.
The visitor declined marketing cookiesNot 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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).

  5. 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.

  6. 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.

  7. 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.

  8. 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

  1. 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.

  2. 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.

  3. 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.

  4. 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.

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.