CONNECTIONS / Shopify / Shopify to Google Store Sales
Shopify revenue, uploaded as Google Store Sales.
Not every Shopify sale starts with a Google ad click Google can see, especially at the till. Signals hashes customer and order data from both the storefront and POS and uploads it to Store Sales Direct, matching on identity instead of click ID.
- ● shopify → google.store_sales :: live
- > event Order placed value=212.00 AED
- > event POS order placed value=88.00 AED
- hash sha256(email,phone,address)
- route google.store_sales upload batch=nightly
- ✓ delivered · transaction matched
WHAT THIS ENABLES
Shopify to Google Store Sales
Shopify to Google Store Sales hashes customer and order data from both the online storefront and Shopify POS and uploads it to Google's Store Sales Direct spec, so revenue counts toward Smart Bidding whether or not the sale carried a GCLID.
- Online and in-store Shopify revenue counted in the same Google Ads reporting, whether or not a click ID exists.
- Smart Bidding informed by till transactions that never touched a landing page at all.
- One upload pipeline covering the storefront and every connected POS location.
The click, the conversion, and the credit.
The conversion happens off Google, away from any pixel. Here is how Shopify closes the loop.
Built for the teams that own the number.
Merchants already running Google Store Sales from POS who want online storefront orders folded into the same upload.
From kickoff to verified events.
-
Connect
App-scoped access to Shopify order and POS transaction webhooks.
-
Map
Customer identifiers and order amount shaped to Google's Store Sales Direct match-key schema.
-
Deliver
Nightly upload through the Google Ads API, with matched-transaction reporting per batch.
What changes when the CSV goes away.
| Capability | Manual CSV upload | Datahash |
|---|---|---|
| Reporting | Offline sales sit in a separate export, reconciled by hand. | Revenue counted in the same Store Sales reporting as web conversions. |
| Deduplication | A re-uploaded file risks counting the same conversion twice. | Deduped delivery, so a resent record never counts as a second conversion. |
| Match visibility | Match quality is a guess until the numbers look off. | Match rate reported per upload, tied to the source event set that produced it. |
| Effort and latency | An analyst exports and uploads on a manual cadence. | Server-side and automatic the moment Shopify records the event. |
What Store Sales actually receives.
- ● signals :: transaction payload
- > POST /store_sales_direct source=shopify.order
- hashed_email sha256 "48d2ac…" · hashed_phone sha256 "f731c0…"
- transaction_amount 212.00 · currency_code AED
- transaction_date_time "2026-07-21 09:47:00+04:00"
- ✓ accepted · matched=true
Adjacent moves on the same stack.
from Shopify
Shopify to Google OCI
Shopify to Google Offline Conversion Import carries the GCLID captured on a storefront…
Learn morefrom Shopify
Shopify POS to Meta Offline CAPI
Shopify POS to Meta Offline CAPI captures in-store transactions the moment a Shopify POS…
Learn moresame use case
ActiveCampaign to Google Store Sales
ActiveCampaign to Google Store Sales: Signals reads your ActiveCampaign contacts and deal…
Learn moregeneric
Google Store Sales
Datahash automates Store Sales Direct and Store Sales Customer Match uploads from your POS…
Learn moreAsked on almost every call.
What match rate should we expect from a Shopify store with both online and POS traffic?
It depends on how much contact data each channel captures at checkout. Online orders usually carry an email by default; POS transactions match better when the till collects a phone number or loyalty account. We baseline both channels separately during discovery and report accepted match rates after every upload.
Do we still need Google OCI if we run Store Sales?
Only if a meaningful share of your traffic carries a GCLID worth matching on click ID specifically, most often a reserve-online- pickup-in-store flow. Store Sales covers revenue with or without one, which is why most multi-location Shopify merchants keep both feeds running side by side instead of picking just one.
NEXT STEP