Google Ads and GA4 tracking for Square
Google Ads on Square splits the same way. Online orders upload cleanly. In-person revenue can be imported only for the customers you can join back to a click, and for an appointment-led business the appointment itself is usually the right optimization target. Google's own store visit reporting is modeled rather than counted and belongs in a different conversation.
Free30 minutesNo obligation
Square + Google · what breaks
What goes wrong on Square
- 01
Most transactions happen in person
A card at a terminal has no click, no session and no identifier. That is not a bug to fix; it is a boundary to measure.
- 02
Online and in-person blended into one number
Two channels with different margins and completely different attribution potential.
- 03
Appointments and orders in separate Square products
Square Appointments, Square Online and the POS each hold part of the picture.
- 04
No native path from a click to a counter payment
The bridge has to be built, usually through an appointment or an identified customer.
Square + Google · the fix
What changes — Square + Google
Online orders attributed properly
From Square's webhooks, server-side, with the identifier carried through checkout.
In-person revenue bridged where a bridge exists
Through appointment bookings or the customer directory, honestly, with the join rate stated.
The unattributable share reported openly
Rather than a number that quietly implies more coverage than exists.
Square + Google · architecture
How the Google destinations behave on Square
Google Ads and GA4 on Square.
- 1
Online orders as a standard purchase conversion
From the webhook, deduplicated on the order ID.
- 2
Appointments as the optimizable action for in-person businesses
Valued at your own average transaction value for booked visits.
- 3
Store visits reported separately
Google's own store visit reporting is modeled and belongs in a different conversation from imported conversions.
- 4
Check the conversion action type before uploading
Import actions and website actions are different and cannot be converted.
- 5
Value from the transaction, not the list price
Especially where tips, upsells and add-ons at the counter are significant.
Square + Google · diagnose
Where Square tracking breaks, in diagnostic order
Each check rules out a class of cause, so by the last one there is usually a single explanation standing.
- 01
Split Square revenue by channel first
Online versus in-person. Every subsequent number depends on it.
- 02
Measure what share of in-person payments have an identifiable customer
That is the ceiling on in-person attribution and it is usually low.
- 03
Check whether the identifier survives Square Online checkout
One real order answers it.
- 04
Check whether appointments carry the identifier
If they do not, the only available bridge is broken.
- 05
Confirm refunds reverse
Usually they do not.
Square + Google · prove
The QA evidence — Square + Google
Run on Square specifically, on a live conversion rather than in preview mode.
Source of truth
Square's transaction records — completed payments by date, with the online and in-person channels separated
- An online test order with the identifier confirmed on the Square order.
- An appointment booked from a paid click, followed through to the in-person payment and confirmed joined.
- The in-person join rate measured and stated as a number before any claim is made about coverage.
- Square transactions reconciled by channel against each platform for a closed window.
- A refund confirmed to reverse.
- Reconciled over a fully closed window, matched per record rather than on totals.
- Re-checked 30 days later, and after any platform update.
Square + Google · free audit
What we check in the free audit
- Split Square revenue by channel first
- Measure what share of in-person payments have an identifiable customer
- Check whether the identifier survives Square Online checkout
- Check whether appointments carry the identifier
- Confirm refunds reverse
Checked against
Square's transaction records — completed payments by date, with the online and in-person channels separated
Free30 minutesNo obligation
Square + Google · when not to buy
When you don't need this on Square
Worth reading before you buy anything, from us or anyone.
- If nearly all your revenue is in person with no appointments and no identified customers, there is very little here to attribute and we will tell you that rather than build a bridge to nothing.
- If you only sell online through Square Online and the numbers already reconcile, this is working.
- Measure your online-versus-in-person split yourself first. It determines whether any of this is worth doing.
- If you are not running paid media at meaningful spend, the channel split alone is the useful deliverable.
Square + Google · what we deliver
What gets built for Google on Square
GA4 ecommerce events in the recommended shape
Correct names, transaction_id present, currency per order, an items array that agrees with the value.
Click identifiers captured and persisted
gclid, gbraid and wbraid — not just the first, because iOS traffic arrives with the others.
Enhanced Conversions from the data layer
Not from CSS selectors, which break on every redesign silently.
Conversion action settings reviewed
Counting, primary status and attribution window — free to change and more consequential than most tag work.
Written guarantee
95%+ tracking accuracy
Measured against Square's transaction records — completed payments by date, with the online and in-person channels separated. Miss it and we keep working at no cost.
Pricing
Pick the package that fits your ad spend
Browser-side starter
$400One-time fee · lifetime ownership
Repairs and verifies the browser-side setup you already have, on a live conversion. Honest about its ceiling on this platform.
- Root cause fixed, not worked around
- Verified on a live conversion
- Reconciled against your own records
- Written handover
1st-party server-side
Recommended$800One-time fee · most popular
Money events sent from your own records through a first-party container on your subdomain, so the browser can no longer lose them.
- First-party server container on your own subdomain
- Money events from your records, not the browser
- Deduplicated on a shared event ID at every destination
- First-party cookies beyond Safari's 7-day cap
- 95%+ accuracy and 8+ Meta EMQ, guaranteed in writing
Full 1st-party stack
$1,800One-time fee · lifetime ownership
Every paid channel server-side plus the offline loop, with monitoring so the next break surfaces in days.
- Everything in 1st-party server-side
- Pinterest, Snapchat, Reddit and LinkedIn CAPI
- CRM and offline conversion loop
- Refunds and cancellations corrected wherever each platform allows it
- Monitoring on every destination
FAQ
Square + Google questions, answered
A lead-type action with 'one' counting, valued at your average transaction value for booked customers. Using 'every' means a repeat booker counts several times and inflates the campaign that found them once.
For the share you can join to a click, yes — that is exactly what offline conversion import is for. For walk-ins with no identifier there is nothing to upload, and the honest report says how much of the revenue that is.
Almost certainly because GA4 only ever sees the online channel and Square's total includes the counter. Split Square by channel before comparing, or the gap will look like a tracking failure when it is a category difference.
Send the transaction's actual total. In hospitality especially, the difference between the menu price and the final ticket is large enough to change which campaigns look profitable.
Free · 30 min
Get Google Ads and GA4 right on Square
Free30 minutesNo obligation
