How to reconcile Google Ads against your point-of-sale system
This is the check we run first on every account, written out so you can run it without us. It takes about thirty minutes and needs two numbers: what Google Ads says it produced, and what your point-of-sale system actually shows. The gap between them is the only honest measure of whether your tracking works — and if it comes back small, you do not need us.
Free30 minutesNo obligation
Specific to Google Ads × POS System
Google Ads vs in-store sales: no gclid ever reaches the till
No gclid, gbraid or wbraid reaches a card terminal, so the only per-record key is a hashed email or phone uploaded as store sales data, where eligible. Compare a closed month by business date. Expect Google to claim a small, modeled slice of in-store revenue; a figure near your total till takings means counter sales are leaking in.
Google has two routes into physical sales, and neither uses the click identifier. Store visits are modeled estimates built from signed-in location data, so they have no row in your POS to match against. Store sales take hashed customer details from receipts or a loyalty program and match them to people who interacted with your ads. Check whether your account qualifies for store sales before planning around it; eligibility is restricted and has changed before.
Google dates conversions to the ad interaction by default, not to the sale, so a month of till data and a month of Google conversions describe different customers. Store visit counts also arrive late and are revised as the model settles. Pull the conversion action breakdown with the conversion-time columns added, isolate any store visit or store sales actions, and keep them apart from the online purchase action in every comparison.
A Google store figure that is a modest, stable fraction of in-person revenue is the honest outcome. A figure that rises and falls with your till totals usually means a POS integration is sending counter sales into the online purchase action. That is the most common cause here: a shared order table on Shopify POS or Square feeding the same conversion action that the website uses.
Google Ads × POS System · what breaks
Why Google Ads and your point-of-sale system disagree
- 01
Counter sales flowing into online conversions
Where the POS and the online store share an order table, the default integration sends everything. Reported return then climbs with footfall.
- 02
Store visits treated as attributable
Platform-reported store visits are modelled estimates, not counted events. Read them as directional and never sum them with online conversions.
- 03
Tips and taxes inside the conversion value
On food and service businesses tips are substantial and are not your revenue.
- 04
Offer codes never used
Without a code or a distinct landing path, there is no mechanism at all to connect in-store revenue to advertising.
Google Ads × POS System · the fix
What you get from this — Google Ads × POS System
A number instead of a suspicion
The likely cause, narrowed
A basis for deciding
Google Ads × POS System · architecture
What each side is actually counting — Google Ads × POS System
- 1
What Google Ads counts
A click identifier inside the 90-day window, a conversion action name that matches one configured in the account, a conversion timestamp for when the outcome happened, and a value. Read the match rate after uploading — a file can upload perfectly and match nothing.
- 2
How Google Ads attributes it
Three parameters, not one. gclid is the long-standing identifier; gbraid and wbraid arrive on iOS traffic where privacy constraints prevent the usual one. Capture code that names only gclid loses a growing share, silently, and the loss is invisible until you audit how many records carry an identifier.
- 3
The window it uses
Google's offline import window is 90 days from the click. Anything older can't be matched, and rows outside it fail as unmatched without much explanation. Measure your median click-to-outcome time against that before designing anything.
- 4
What your point-of-sale system counts
Transactions taken in person, which advertising cannot attribute to a click, found in Square, Lightspeed, Toast, Clover or whatever runs the till.
- 5
The filter that makes them comparable
In-person channel only, separated from any online orders in the same system.
Google Ads × POS System · events
Reading the gap — Google Ads × POS System
| What you see | What it usually means |
|---|---|
| 15%+ platform higher | Usually the wrong event entirely — the channel filter is missing, so counter sales are being counted as advertising conversions. |
| 20%+ platform lower | Usually structural — almost always correct rather than a fault. in-store revenue mostly cannot be attributed, and a small reported figure is the honest one. |
Google Ads × POS System · diagnose
Diagnostic order — Google Ads × POS System
- 01
Confirm both numbers cover the same period and channel
- 02
Counter sales flowing into online conversions
Where the POS and the online store share an order table, the default integration sends everything. Reported return then climbs with footfall.
- 03
Store visits treated as attributable
Platform-reported store visits are modelled estimates, not counted events. Read them as directional and never sum them with online conversions.
- 04
Tips and taxes inside the conversion value
On food and service businesses tips are substantial and are not your revenue.
- 05
Read the match rate on the upload, not the success message
A conversion action that stops receiving hits is flagged as inactive 30 days later — by which point a month of budget has already run against a missing signal. Check the last-received date on every action monthly; it takes two minutes and it's the cheapest monitoring available.
Google Ads × POS System · prove
How to know you did it right — Google Ads × POS System
Source of truth
your point-of-sale system — in-store transactions for a fully closed month
Google Ads × POS System · free audit
What we check in the free audit
- Confirm both numbers cover the same period and channel
- Counter sales flowing into online conversions
- Store visits treated as attributable
- Tips and taxes inside the conversion value
- Read the match rate on the upload, not the success message
Checked against
your point-of-sale system — in-store transactions for a fully closed month
Free30 minutesNo obligation
Google Ads × POS System · when not to buy
When the answer is that you do not need us — Google Ads × POS System
- If almost all of your in-store transactions come from a channel with no click behind it, no tracking work will reach them — and knowing that is worth more than a build.
- If you're running Performance Max exclusively and haven't separated your conversion actions, the import will work and the reporting won't tell you much. Worth sorting the account structure first.
Google Ads × POS System · what we deliver
The method, step by step — Google Ads × POS System
Pull what Google Ads reports
The match rate on the upload, not the success message.
Pull what your point-of-sale system shows
Export transactions by business date for a closed month, split by sales channel, and note the in-person share of total revenue.
Filter both to the same thing
In-person channel only, separated from any online orders in the same system.
Compare per record, not on totals
FAQ
Google Ads × POS System questions, answered
No. Store visits are modeled estimates and online purchases are counted events, so summing them mixes a guess with a count. Report them on separate lines.
Only through a click-and-collect or reserve-online flow that stores the identifier with the order before pickup. A walk-in purchase has no click behind it at all.
Because you should know the size of the problem before anyone quotes you for it. If the gap is small, you have saved yourself a purchase. If it is large, you now know what you are buying rather than taking our word for it.
No. Both numbers come from systems you already own and neither leaves them. There is no tool to sign up for and nothing to upload.
Then compare totals for a closed period and treat the result as directional rather than exact. The match rate on the upload, not the success message is still the right place to read the platform's side.
Under five percent is working. Five to fifteen usually means reversals are missing. Above twenty is normally the wrong event being counted, not a broken tag — which is why debugging tags first wastes so much time.
Then fix the filter before drawing any conclusion. In-person channel only, separated from any online orders in the same system. A mismatch in scope produces a gap that looks like a tracking fault and is not one.
Book the free thirty-minute call and bring both numbers. We will tell you which of the causes above it is, and whether it is something you can fix yourself — which it sometimes is.
More on Google Ads × POS System
- Meta × POS SystemHow to reconcile Meta Ads against your point-of-sale system
- TikTok × POS SystemHow to reconcile TikTok Ads against your point-of-sale system
- Microsoft × POS SystemHow to reconcile Microsoft Ads against your point-of-sale system
RELATED GUIDES
Systems of record beside pos in store, and the funnels it settles
- Google Ads × Enrolment SystemHow to reconcile Google Ads against your application or enrolment system
- Google Ads × Job SystemHow to reconcile Google Ads against your job management system
- Google Ads · Reactivation → repeat purchaseHow to track lapsed customer reactivation to repeat purchase for Google Ads
- Google Ads · Online → in-storeHow to track online research to in-store purchase for Google Ads
- Google Ads · Property managementGoogle Ads conversion tracking for property management companies
- Google Ads · Auto detailingGoogle Ads conversion tracking for auto detailing businesses
- Punchh → Google AdsConnecting Punchh to Google Ads
- Toast → Google AdsConnecting Toast to Google Ads
Free · 30 min
Found a gap between Google Ads and your point-of-sale system?
Free30 minutesNo obligation
