Connecting Square to Google Ads
Square holds the transaction, and for most Square businesses the majority of those transactions are a card tapped at a counter with no browser anywhere near them. Google Ads knows what you spent and which click it came from, and nothing at all about what happened afterwards. The join between them succeeds or fails on one thing: whether the GCLID reaches the Square payment or order before the conversion happens, because Google Ads can only match a conversion it can tie back to a click it recognizes.
Free30 minutesNo obligation
Specific to this pair
Square to Google Ads: online orders and booked visits, not walk-ins
Track Square Online orders as website conversions or GA4 imports. For appointment businesses, carry the gclid through Square Appointments and upload the payment to an import-type action within 90 days, matched to the appointment rather than the card profile. Walk-ins cannot join a click; check store sales eligibility. Send refunds as retractions.
Google Ads splits Square revenue into three cases. Square Online orders can be tracked with a website conversion, either through Square Online's own integrations if they cover Google Ads for your site (check) or by importing purchase from GA4. Appointment-led businesses, such as salons, repair shops and studios, can carry the gclid through a Square Appointments booking and upload the eventual payment to an import-type conversion action, provided it lands within 90 days of the click.
Walk-in counter payments are the third case and cannot be joined to a click. Google does offer store sales measurement for in-store revenue, but it depends on matched customer data and has eligibility requirements; check whether your account qualifies before assuming it covers Square counter sales. For most local Square businesses the honest setup is online orders and booked visits in Google Ads, with everything else reported from Square by channel.
The Square-specific break: the appointment is booked under one email, the customer pays at the counter with a card Square links to a different customer profile, and the gclid stays on the booking. Match the payment to the appointment, not the card profile. For enhanced conversions, hash the email from the booking, and send refunds and voids as retraction adjustments.
Square → Google Ads · what breaks
Why this join usually fails — Square → Google Ads
- 01
The GCLID never reaches Square
Square Online checkout is hosted, so the identifier must be carried deliberately rather than by cookie. For in-person payments there is no identifier at all unless the customer booked an appointment or is in the customer directory — a walk-in who taps a card cannot be joined to an ad click by anyone.
- 02
Most of the revenue has no browser
A card at a terminal has no click, no session and no identifier. That is a boundary to measure rather than a bug to fix, and the honest deliverable includes how much of your revenue sits outside it.
- 03
The conversion action is the wrong type
Uploads against a standard website conversion action fail. The action has to be created as 'Import' — and existing actions cannot be converted, so this is discovered late and requires starting a new action with no history.
- 04
Nothing reconciles afterwards
Google Ads reports uploads in Goals → Conversions → Uploads, with rows accepted and rows failed. A green result means the file parsed, not that the clicks matched. The number to watch is how many conversions actually appear against campaigns afterwards.
Square → Google Ads · the fix
What working looks like — Square → Google Ads
The GCLID on every transaction
Conversions arriving in Google Ads
Conversions appear against the campaign, ad group and keyword that produced the click, with the value you sent — which is what lets Smart Bidding optimize toward revenue instead of toward form fills.
Reconciled against the source
Square → Google Ads · architecture
How Square and Google Ads actually connect
- 1
Square holds the truth
Square records every payment with its amount, channel and, where the customer is identified, a link to the customer directory. That directory is the only bridge between a counter payment and anything that happened online.
- 2
Google Ads needs a click to match
Google Ads matches an uploaded conversion back to a click using the GCLID. The conversion action must be created as an import type — an upload against a website-tag conversion action is rejected. Uploads must also land inside Google's window: the click has to be within the last 90 days.
- 3
The identifier is the bridge
The GCLID, captured at the visit and carried into the Square payment or order.
- 4
The event source decides reliability
Subscribe to payment and order events and send from your server. This covers online orders cleanly, and covers in-person payments only for the share you can join to an identity.
- 5
Deduplication at the destination
Google deduplicates on the combination of GCLID, conversion action and conversion time. Uploading the same click twice against the same action at the same timestamp is rejected rather than double-counted, but uploading it against a second conversion action counts twice — which is how most double-counting here actually happens.
Square → Google Ads · normal or broken
Working vs. broken, side by side — Square → Google Ads
Normal, not a fault
The GCLID present on the transaction
Sent from the Square payment webhook
Deduplicated correctly
Google deduplicates on the combination of GCLID, conversion action and conversion time. Uploading the same click twice against the same action at the same timestamp is rejected rather than double-counted, but uploading it against a second conversion action counts twice — which is how most double-counting here actually happens.
Reconciles with the source
Actually broken
The GCLID missing on most records
Square Online checkout is hosted, so the identifier must be carried deliberately rather than by cookie. For in-person payments there is no identifier at all unless the customer booked an appointment or is in the customer directory — a walk-in who taps a card cannot be joined to an ad click by anyone.
Sent from the browser
A card at a terminal has no click, no session and no identifier. That is a boundary to measure rather than a bug to fix, and the honest deliverable includes how much of your revenue sits outside it.
Counted twice, or not at all
Uploads against a standard website conversion action fail. The action has to be created as 'Import' — and existing actions cannot be converted, so this is discovered late and requires starting a new action with no history.
Nobody has reconciled it
Square → Google Ads · diagnose
Diagnostic order — Square → Google Ads
- 01
Count transactions carrying the GCLID
- 02
Follow one real conversion end to end
- 03
Split Square revenue by channel before anything else
Online versus in-person. Every subsequent number depends on that split, and blending them makes both unreadable.
- 04
Check the conversion action type and the upload diagnostics
In Google Ads, Goals → Conversions → Uploads shows every upload with its error rows. Read the errors rather than the success count; a file can import successfully with most rows rejected.
- 05
Read the match rate, not the success message
Google Ads reports uploads in Goals → Conversions → Uploads, with rows accepted and rows failed. A green result means the file parsed, not that the clicks matched. The number to watch is how many conversions actually appear against campaigns afterwards.
Square → Google Ads · prove
How it gets proven — Square → Google Ads
Source of truth
Square's transaction list, split by channel — online and in-person are different questions.
- The GCLID confirmed present on a live transaction.
- The Uploads diagnostics read row by row, with the accepted count reconciled against conversions appearing in campaign reporting.
- The in-person join rate measured and stated as a number before any coverage claim is made.
Square → Google Ads · free audit
What we check in the free audit
- Count transactions carrying the GCLID
- Follow one real conversion end to end
- Split Square revenue by channel before anything else
- Check the conversion action type and the upload diagnostics
- Read the match rate, not the success message
Checked against
Square's transaction list, split by channel — online and in-person are different questions.
Free30 minutesNo obligation
Square → Google Ads · when not to buy
When you don't need this — Square → Google Ads
- Measure identifier coverage yourself first — pull your last hundred transactions and count how many carry the GCLID.
- 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 say so rather than build a bridge to nothing.
- If your sales close inside a few days and your website tag already reports accurately, you may not need offline import at all. It exists to solve the delay between click and revenue.
Square → Google Ads · what we deliver
What gets built — Square → Google Ads
Identifier capture into Square
Capture the click identifier and carry it into Square Online checkout, and for in-person work use an appointment booking as the bridge so the eventual payment can be joined through the customer record.
Event source: the Square payment webhook
Subscribe to payment and order events and send from your server. This covers online orders cleanly, and covers in-person payments only for the share you can join to an identity.
Dispatch to Google Ads
Offline Conversion Import through the Google Ads API, or a scheduled upload. Enhanced conversions for leads where GCLID coverage is poor and you have consented email addresses.
Reversals where they exist
Square exposes refunds clearly, and in hospitality and services voids and comps are frequent enough that wiring the reversal matters.
Written guarantee
95%+ tracking accuracy
Measured against Square's transaction list, split by channel — online and in-person are different questions.. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Square → Google Ads questions, answered
Not by click, unless the customer booked or ordered online first and the payment is linked to that record. Google's store sales measurement has eligibility requirements, so check whether your account qualifies.
Store the gclid on the booking, then upload the completed payment for that appointment to an import-type conversion action within 90 days of the click.
Almost always because the GCLID never reached the Square payment or order. Square Online checkout is hosted, so the identifier must be carried deliberately rather than by cookie. For in-person payments there is no identifier at all unless the customer booked an appointment or is in the customer directory — a walk-in who taps a card cannot be joined to an ad click by anyone. Measure coverage before debugging the dispatch.
The GCLID — the click ID Google appends to your landing page URL when auto-tagging is on. For iOS App campaigns and some Shopping traffic you will see GBRAID or WBRAID instead, and those behave differently: WBRAID cannot be used with user-provided data in the same way, and neither joins to an individual user. Enhanced conversions for leads is the alternative path, matching on hashed email or phone rather than a click ID, and it is the right choice when GCLID coverage is poor.
The Square payment webhook. Subscribe to payment and order events and send from your server. This covers online orders cleanly, and covers in-person payments only for the share you can join to an identity.
Google Ads reports uploads in Goals → Conversions → Uploads, with rows accepted and rows failed. A green result means the file parsed, not that the clicks matched. The number to watch is how many conversions actually appear against campaigns afterwards.
More on Square → Google Ads
- Square Online → Google AdsConnecting Square Online to Google Ads
- Square Appointments → Google AdsConnecting Square Appointments to Google Ads
- Google Ads · Lead → booked callHow to track lead to booked call for Google Ads
RELATED GUIDES
Where Square → Google Ads fits in the rest of your tracking
- Google Ads · SubscriptionsGoogle Ads conversion tracking for subscription businesses
- Google Ads · SaaSGoogle Ads conversion tracking for SaaS companies
- Google Ads × SubscriptionsHow to reconcile Google Ads against your billing system
- Google Ads · Free trial → paidHow to track free trial to paid for Google Ads
- Authorize.net → Google AdsConnecting Authorize.net to Google Ads
- Square → RedditConnecting Square to Reddit
- EcommerceConversion tracking for ecommerce brands, measured against your orders
- Acima → Google AdsConnecting Acima to Google Ads
Free · 30 min
Get Square and Google Ads joined properly
Free30 minutesNo obligation
