Connecting Square to Microsoft 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. Microsoft Ads reaches an older, higher-income, more desktop-weighted audience than Google, and it is routinely the cheapest qualified traffic a B2B advertiser can buy. The join between them succeeds or fails on one thing: whether the MSCLKID reaches the Square payment or order before the conversion happens, because Microsoft Ads can only match a conversion it can tie back to a click it recognizes.
Free30 minutesNo obligation
Specific to this pair
Square to Microsoft Ads: appointments as the offline bridge
Capture the msclkid on your landing page before visitors move to the Square Appointments page, storing it with the booking email or a prefilled field. When the appointment is paid, join it through the Square customer record and upload it offline with the amount paid. Use separate booking and paid goals, and adjust for refunds.
Microsoft's searchers skew older and desktop, which fits local services that run on Square: salons, spas, repair shops, clinics without PHI concerns. The click comes from a search, the booking often goes through Square Appointments on a Square-hosted page, and the payment happens at the counter days later. The msclkid has to cross both gaps.
Capture the msclkid on your own landing page before the visitor moves to the Square booking page, because the domain change drops your cookies. Store it with the booking email, or pass it through any field the booking flow lets you prefill; check what Square Appointments allows in your setup. When the appointment's payment is recorded, join it through the Square customer record to the stored msclkid and upload it as an offline conversion with the amount paid, inside Microsoft's import window.
Upload the booking as one goal and the paid appointment as another, and bid on the booking until paid volume is high enough. Voids and refunds are common in services; retract or adjust uploaded conversions where your account supports it, or delay the upload until the refund period passes. Walk-in sales stay out, because nothing joins them to a click.
Square → Microsoft Ads · what breaks
Why this join usually fails — Square → Microsoft Ads
- 01
The MSCLKID 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
Auto-tagging switched off
Microsoft auto-tagging is frequently disabled in accounts that were set up quickly or imported from Google, and without it no MSCLKID arrives at all — so the entire offline import has nothing to match against and fails silently.
- 04
Nothing reconciles afterwards
Microsoft Ads reports offline conversion uploads with rows accepted and rejected. A successful upload is not a matched conversion — check that conversions actually appear against campaigns afterwards.
Square → Microsoft Ads · the fix
What working looks like — Square → Microsoft Ads
The MSCLKID on every transaction
Conversions arriving in Microsoft Ads
Conversions appear against the campaign, ad group and keyword that produced the click, with the value you sent, and become usable for automated bidding.
Reconciled against the source
Square → Microsoft Ads · architecture
How Square and Microsoft 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
Microsoft Ads needs a click to match
Microsoft matches uploaded conversions to clicks using the MSCLKID, and the conversion goal must be created as an offline conversion type. The click has to fall inside Microsoft's import window — verify the current limit in your account rather than assuming it matches Google's.
- 3
The identifier is the bridge
The MSCLKID, 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
Microsoft deduplicates on the combination of click identifier, conversion name and conversion time. Uploading the same click against a second conversion goal counts twice, which is the usual cause of inflated numbers here.
Square → Microsoft Ads · normal or broken
Working vs. broken, side by side — Square → Microsoft Ads
Normal, not a fault
The MSCLKID present on the transaction
Sent from the Square payment webhook
Deduplicated correctly
Microsoft deduplicates on the combination of click identifier, conversion name and conversion time. Uploading the same click against a second conversion goal counts twice, which is the usual cause of inflated numbers here.
Reconciles with the source
Actually broken
The MSCLKID 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
Microsoft auto-tagging is frequently disabled in accounts that were set up quickly or imported from Google, and without it no MSCLKID arrives at all — so the entire offline import has nothing to match against and fails silently.
Nobody has reconciled it
Square → Microsoft Ads · diagnose
Diagnostic order — Square → Microsoft Ads
- 01
Count transactions carrying the MSCLKID
- 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
Confirm auto-tagging is enabled and check the upload diagnostics
One account setting decides whether any of this works. Then read the per-row errors on the upload rather than the success count.
- 05
Read the match rate, not the success message
Microsoft Ads reports offline conversion uploads with rows accepted and rejected. A successful upload is not a matched conversion — check that conversions actually appear against campaigns afterwards.
Square → Microsoft Ads · prove
How it gets proven — Square → Microsoft Ads
Source of truth
Square's transaction list, split by channel — online and in-person are different questions.
- The MSCLKID confirmed present on a live transaction.
- Auto-tagging confirmed on, and 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 → Microsoft Ads · free audit
What we check in the free audit
- Count transactions carrying the MSCLKID
- Follow one real conversion end to end
- Split Square revenue by channel before anything else
- Confirm auto-tagging is enabled and check 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 → Microsoft Ads · when not to buy
When you don't need this — Square → Microsoft Ads
- Measure identifier coverage yourself first — pull your last hundred transactions and count how many carry the MSCLKID.
- 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 you are not running Microsoft Ads at meaningful spend, skip it — though for B2B the traffic is often cheaper and better qualified than people expect, which is worth testing before dismissing.
Square → Microsoft Ads · what we deliver
What gets built — Square → Microsoft 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 Microsoft Ads
Offline conversion import through the Microsoft Advertising API or a scheduled upload.
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 → Microsoft Ads questions, answered
Only those joined to a booking that stored the msclkid, uploaded as offline conversions. Walk-ins cannot be matched.
The booking page runs on Square's domain, so your cookies do not follow. Capture the ID on your own page and store it with the booking.
Almost always because the MSCLKID 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 MSCLKID, appended to your landing page URL when auto-tagging is enabled in the Microsoft Ads account. Auto-tagging is not on by default in every account, which is the single most common reason a Microsoft offline import finds nothing to match. Microsoft also supports enhanced conversions using hashed customer data as an alternative path.
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.
Microsoft Ads reports offline conversion uploads with rows accepted and rejected. A successful upload is not a matched conversion — check that conversions actually appear against campaigns afterwards.
More on Square → Microsoft Ads
- Square Online → Microsoft AdsConnecting Square Online to Microsoft Ads
- Square Appointments → Microsoft AdsConnecting Square Appointments to Microsoft Ads
- Microsoft · Lead → booked callHow to track lead to booked call for Microsoft Ads
RELATED GUIDES
Where Square → Microsoft Ads fits in the rest of your tracking
- Microsoft · Financial servicesMicrosoft Ads conversion tracking for financial services firms
- Microsoft · SubscriptionsMicrosoft Ads conversion tracking for subscription businesses
- Microsoft × SubscriptionsHow to reconcile Microsoft Ads against your billing system
- Microsoft · Free trial → paidHow to track free trial to paid for Microsoft Ads
- Adyen → Microsoft AdsConnecting Adyen to Microsoft Ads
- Square → MetaConnecting Square to Meta Conversions API
- SubscriptionsConversion tracking for subscription businesses, across the whole lifecycle
- Zip → Microsoft AdsConnecting Zip to Microsoft Ads
Free · 30 min
Get Square and Microsoft Ads joined properly
Free30 minutesNo obligation
