Skip to main content
Setup guide
Google AdsShopify

Google Ads conversion uploads from Shopify

Shopify's Google & YouTube app measures purchases with a Google tag in the browser. SignalBridge adds a second route: when a shopper who clicked a Google ad places an order, the purchase is uploaded to Google Ads from SignalBridge's servers, matched by the gclid and by hashed customer data where consent allows. This guide covers the Shopify specifics: what the Web Pixel captures, which orders can upload, how refunds are corrected, and how to keep Google from counting one sale twice.

It was written against the app and the Google documents listed at the end, and it states plainly where Shopify limits what a pixel can see.

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

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 orderWhat happens
The shopper arrived from a Google ad with a gclidUploaded 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 wbraidThe 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 grantedUploaded as an enhanced conversion using the hashed identifiers.
Organic, email, direct or another ad network, and no consentNot uploaded. There is nothing to match, and customer data is never sent without consent.
Order created in the admin or at the point of saleNot 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 eventWhat Google receivesWhy it works
orders/cancelledAn adjustment that retracts the original conversionThe adjustment is matched to the upload by order ID.
refunds/create, full refundAn adjustment that retracts the original conversionSame order ID, so the sale no longer counts.
refunds/create, partial refundAn adjustment that restates the conversion with its new valueRevenue 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.

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

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

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

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

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

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

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

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

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

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

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

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.