- Click ID on Shopify
- gclid, read from the landing URL by the Web Pixel and kept for the shopper
- Not captured by the Web Pixel
- gbraid and wbraid, the click IDs Google uses for some iOS traffic
- Purchase value
- The checkout total, which includes shipping and tax and subtracts discounts
- Order ID
- The numeric Shopify order ID, sent with each upload
- Refunds and cancellations
- Sent from Shopify webhooks as adjustments to the original purchase
- Consent
- Taken from Shopify's Customer Privacy status for the shopper's browser copy
- Conversion action
- Offline (import) action only, never a website tag action
- Reporting delay
- Several hours between the order and the conversion appearing in Google Ads
Two ways Google hears about a Shopify order
When you link Google Ads to Shopify's Google & YouTube app, Google's own help pages say a purchase conversion action is created in Google Ads automatically and set as the account default, with add to cart and checkout actions created as secondary. That action is a website action: it is recorded by the Google tag in the shopper's browser.
SignalBridge's upload is a different 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 the two actions have nothing in common that would let it merge them. The fix is a decision, not a setting: choose the one action Smart Bidding should learn from and mark the other as secondary, so it is still reported but not bid on.
Switching the action that bidding uses can change your reported conversions and how campaigns learn. Make the change at a quiet moment, and read results over a couple of weeks instead of a day.
Which Shopify orders upload to Google Ads
Google needs something to match the order to. SignalBridge checks this on every purchase and records which route it took.
| Situation on the order | What happens |
|---|---|
| The shopper arrived from a Google ad with a gclid | Uploaded with the gclid. Hashed email and phone are added only when ad-user-data consent is granted. |
| The shopper arrived with only a gbraid or wbraid | The Shopify Web Pixel does not store those parameters, so the order is matched by hashed email or phone, if consent allows. Without them it is not uploaded. |
| No Google click ID, but an email or phone and consent granted | Uploaded as an enhanced conversion using the hashed identifiers. |
| Organic, email, direct or another ad network, and no consent | Not uploaded. There is nothing to match, and customer data is never sent without consent. |
| Order created in the admin or at the point of sale | Not uploaded as a purchase. There is no browser session, so the order has no click ID and no consent decision. |
How refunds and cancellations reach Google
Corrections come from Shopify webhooks, which carry the same order ID as the original purchase.
| Shopify event | What Google receives | Why it works |
|---|---|---|
| orders/cancelled | An adjustment that retracts the original conversion | The adjustment is matched to the upload by order ID. |
| refunds/create, full refund | An adjustment that retracts the original conversion | Same order ID, so the sale no longer counts. |
| refunds/create, partial refund | An adjustment that restates the conversion with its new value | Revenue in Google Ads follows what you actually kept. |
Set it up
You need admin access to the Google Ads account, or access through a manager account.
Install the SignalBridge app
Install it from the Shopify App Store and approve the permissions. The Web Pixel begins storing the gclid from landing pages and sending funnel events and the purchase.
Create an offline purchase action in Google Ads
In Google Ads open Goals and create a conversion action. At the data source step deselect conversions on a website, in an app and from phone calls, and keep only conversions that are imported or offline. Choose Purchase as the category and give it a name such as Shopify purchase (SignalBridge).
Choose the counting option
Set Count to Every for purchases and use the order ID to prevent duplicates. Google's help centre explains that a transaction ID stops the same order counting twice, while a Count of One would drop every later purchase from the same click.
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, confirm the ten-digit customer ID and enter the manager account ID if the client account is reached through one.
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. Use that ID, not the one under Tag setup.
Pick the action bidding should use
Open the Google & YouTube app's conversion settings and the new action in Google Ads, then make one of the two purchase actions primary and the other secondary, as described above.
Accept the customer data terms
If Google reports that the enhanced conversions customer data terms are not accepted, accept them in the Google Ads account and retry the failed deliveries from SignalBridge.
Test it with a real click
Click one of your own ads
Use a browser where you have accepted marketing tracking, click a live ad with auto-tagging on, and check that the landing URL contains a gclid.
Place a test order in the same browser
Complete checkout. In the SignalBridge event stream the Purchase should show a Google click ID and the Google Ads destination as delivered, with the Shopify order number.
Read the action in Google Ads
Open Goals, then the action, and look at its status and diagnostics. Allow several hours before concluding anything, because uploaded conversions are not instant.
Refund the test order
Refund it in Shopify. A full refund should show as an adjustment on the same order ID in the SignalBridge event details, and the conversion should be retracted in Google Ads after Google processes it.
Problems that are specific to Shopify
Google Ads shows each sale twice
The Google & YouTube app's purchase action and the SignalBridge offline action are both primary. Make one of them secondary.
Conversion value is higher than the revenue you report elsewhere
SignalBridge sends the checkout total, which includes shipping and tax. If you compare against item revenue, expect a gap that is not a tracking error.
Google rejects the upload as an invalid action type
You mapped a website action. Create an offline (import) action and map that one.
Uploads are rejected for hours after creating the action
Google can take a while to accept uploads to a brand-new action. SignalBridge retries automatically, after about 30 minutes when the action is not found and about 6 hours when it is too new.
Orders from iOS shoppers are missing
Some of that traffic carries gbraid or wbraid instead of a gclid, and the Shopify Web Pixel does not store those. Those orders upload only through hashed email or phone with consent.
A refund did not change the conversion
Adjustments need the original upload with the same order ID. If the first upload never happened, there is nothing to adjust. Check the order in the event stream first.
What to know before you rely on it
- Only orders that can be matched are uploaded. Orders from other channels are not meant to appear here.
- The upload comes from the shopper's browser copy of the purchase. If the Web Pixel could not report the order, SignalBridge has no click ID to attach, and the order webhook alone does not carry a consent decision.
- Google decides attribution. Counts in Google Ads and in Shopify will differ because of conversion windows, modelling and reporting delay.
- SignalBridge passes consent signals to Google but does not run Google's consent mode modelling. Keep your own consent setup for the Google tag.
Questions about this setup
Should I uninstall the Google & YouTube app?
No. Keep it for the Merchant Center feed, Shopping and Performance Max features. Only its conversion action overlaps with SignalBridge, and you resolve that by choosing one primary purchase action.
Do I need enhanced conversions turned on in the Google & YouTube app?
It is a separate switch. SignalBridge attaches hashed email and phone to its own uploads when ad-user-data consent is granted, whatever the app's setting is.
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 search that was not paid, email and other channels are left out.
Which order ID does SignalBridge use?
The numeric Shopify order ID, not the order number shown to the customer. It is the same on the browser copy and the webhook copy, which is how refunds find the original conversion.
Does it work with Performance Max and Shopping campaigns?
The upload does not depend on the campaign type. It depends on the order carrying a Google click ID or a consented email or phone number.
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.
Sources
The vendor documents this guide relies on. Statements about SignalBridge come from the product itself.
- Google Ads Help: Install and migrate your tags with the Google & YouTube appThe purchase action the app creates automatically, and the advice to avoid duplicate tagging.
- Google Ads Help: Use a transaction ID to minimize duplicate conversionsHow an order ID stops the same purchase being counted twice, and how it differs from the Count setting.
- Google Ads API: Upload click conversionsThe click ID rules for uploads and the use of the order ID for later adjustments.