Connecting Square Appointments to TikTok Events API
Square Appointments settles into the same Square ledger as the card taken at the counter, so the appointment and the payment are already joined — provided you filter for the right channel. TikTok's audience skews to exactly the browsers and app contexts where browser-side tracking performs worst. The join between them succeeds or fails on one thing: whether the ttclid reaches the Square Appointments booking before the conversion happens, because TikTok can only match a conversion it can tie back to a click it recognizes.
Free30 minutesNo obligation
Specific to this pair
Square Appointments to TikTok: booking event with ttclid saved first
Capture the ttclid on your own landing page and persist it server-side before Square's booking site. Send the booking immediately as a lead-type event, then CompletePayment when the Square payment completes, excluding tip, using the booking ID and payment ID as event_ids, with hashed email and phone. TikTok's short windows favor optimizing toward the booking event.
TikTok works for appointment businesses with visual results, such as nails, hair, brows and tattoos, and the booking often happens in TikTok's in-app browser minutes after a video. Capture the ttclid on your own landing page and persist it server-side before the visitor reaches Square's booking site. If the TikTok ad links straight to the Square booking page, there is nowhere to capture it at all.
Send the booking to TikTok immediately as a lead-type event (check TikTok's current standard events for the closest fit to a scheduled appointment), and CompletePayment when the Square payment completes, excluding the tip. Use the Square booking ID and payment ID as the respective event_id values. Hashed email and phone from the Square customer carry the match when the ttclid is gone, which on this path is often.
The delay between booking and payment cuts harder on TikTok than on search, because TikTok's click attribution windows are short and slots with popular stylists can be weeks out. If payment lands outside the window, only the booking event is credited. Optimize toward the booking event and judge revenue in Square, filtered to online bookings with walk-ins excluded.
Square Appointments → TikTok · what breaks
Why this join usually fails — Square Appointments → TikTok
- 01
The ttclid never reaches Square Appointments
The booking site is Square-hosted, and the payment may be taken in person days later.
- 02
Counter sales counted as booked appointments
The shared ledger is convenient and it is the trap. If the booking channel is not filtered, walk-in revenue flows straight into your reported campaign performance.
- 03
The ttclid is lost in the in-app browser
TikTok traffic arrives through an in-app webview whose storage behavior is inconsistent. An identifier captured but not immediately persisted server-side often is not there by the time the conversion happens.
- 04
Nothing reconciles afterwards
TikTok Events Manager shows received events and their match status. As with Meta, arriving is not the test — deduplicated and matched is. Reconcile TikTok's reported conversions against the source system for the same window.
Square Appointments → TikTok · the fix
What working looks like — Square Appointments → TikTok
The ttclid on every appointment
Conversions arriving in TikTok
Events appear in TikTok Events Manager, deduplicated against the pixel, and become usable for optimization.
Reconciled against the source
Square Appointments → TikTok · architecture
How Square Appointments and TikTok actually connect
- 1
Square Appointments holds the truth
Walk-ins and rebookings made at the counter land in the same ledger. Without the filter, every in-person sale becomes an advertising conversion.
- 2
TikTok Events API needs a click to match
TikTok matches server events using ttclid where available, falling back to hashed contact information. Both should be sent — the fallback is what carries the events where the click ID did not survive.
- 3
The identifier is the bridge
The ttclid, captured at the visit and carried into the Square Appointments booking.
- 4
The event source decides reliability
Send completed appointment transactions net of tips.
- 5
Deduplication at the destination
TikTok deduplicates on event_id, the same pattern as Meta: the pixel and the Events API must send the same event_id for the same conversion. Mismatched IDs mean double counting.
Square Appointments → TikTok · normal or broken
Working vs. broken, side by side — Square Appointments → TikTok
Normal, not a fault
The ttclid present on the appointment
Sent from the Square transaction record
Deduplicated correctly
TikTok deduplicates on event_id, the same pattern as Meta: the pixel and the Events API must send the same event_id for the same conversion. Mismatched IDs mean double counting.
Reconciles with the source
Actually broken
The ttclid missing on most records
The booking site is Square-hosted, and the payment may be taken in person days later.
Sent from the browser
The shared ledger is convenient and it is the trap. If the booking channel is not filtered, walk-in revenue flows straight into your reported campaign performance.
Counted twice, or not at all
TikTok traffic arrives through an in-app webview whose storage behavior is inconsistent. An identifier captured but not immediately persisted server-side often is not there by the time the conversion happens.
Nobody has reconciled it
Square Appointments → TikTok · diagnose
Diagnostic order — Square Appointments → TikTok
- 01
Count appointments carrying the ttclid
- 02
Follow one real conversion end to end
- 03
Filter by booking channel and re-check the total
Compare against the online booking count. A mismatch means the filter is wrong before the tracking is.
- 04
Measure ttclid capture rate on TikTok traffic specifically
Not on all traffic. TikTok's in-app browser is the failure case, so a healthy overall capture rate can hide a poor one on exactly the traffic that matters.
- 05
Read the match rate, not the success message
TikTok Events Manager shows received events and their match status. As with Meta, arriving is not the test — deduplicated and matched is. Reconcile TikTok's reported conversions against the source system for the same window.
Square Appointments → TikTok · prove
How it gets proven — Square Appointments → TikTok
Source of truth
Square transactions tied to an appointment, filtered to those booked online.
- The ttclid confirmed present on a live appointment.
- Deduplication confirmed in Events Manager, and ttclid capture rate measured on TikTok traffic specifically.
- Online-booked completed appointments reconciled against imported conversions.
Square Appointments → TikTok · free audit
What we check in the free audit
- Count appointments carrying the ttclid
- Follow one real conversion end to end
- Filter by booking channel and re-check the total
- Measure ttclid capture rate on TikTok traffic specifically
- Read the match rate, not the success message
Checked against
Square transactions tied to an appointment, filtered to those booked online.
Free30 minutesNo obligation
Square Appointments → TikTok · when not to buy
When you don't need this — Square Appointments → TikTok
- Measure identifier coverage yourself first — pull your last hundred appointments and count how many carry the ttclid.
- If almost all your business is walk-in, measure it on appointment volume and do not build a revenue import.
- If TikTok is a small share of spend, the effort is hard to justify. It pays when TikTok is a channel you are actively scaling.
Square Appointments → TikTok · what we deliver
What gets built — Square Appointments → TikTok
Identifier capture into Square Appointments
Capture on your own domain, persist against the customer, and let the completed transaction rather than the booking be the reported event.
Event source: the Square transaction record
Send completed appointment transactions net of tips.
Dispatch to TikTok
Server events to the TikTok Events API with the ttclid, hashed contact information and a matching event_id.
Reversals where they exist
Refunds and no-shows reverse.
Written guarantee
95%+ tracking accuracy
Measured against Square transactions tied to an appointment, filtered to those booked online.. Miss it and we keep working at no cost.
From $400 · See packages
FAQ
Square Appointments → TikTok questions, answered
You can, but you lose the chance to capture the ttclid on your own domain. Send the click to a page you control first, store the ttclid, then hand off to Square.
A lead or scheduling-type standard event at booking, then CompletePayment at payment without the tip. Check TikTok's current standard event list for the closest match.
Almost always because the ttclid never reached the Square Appointments booking. The booking site is Square-hosted, and the payment may be taken in person days later. Measure coverage before debugging the dispatch.
The ttclid — TikTok's click identifier, appended to your landing page URL and also stored in the _ttp cookie. TikTok additionally matches on hashed email and phone. In-app browser behavior makes ttclid capture more fragile than the equivalents on other platforms, so persisting it server-side as soon as it is seen matters more here than elsewhere.
The Square transaction record. Send completed appointment transactions net of tips.
TikTok Events Manager shows received events and their match status. As with Meta, arriving is not the test — deduplicated and matched is. Reconcile TikTok's reported conversions against the source system for the same window.
More on Square Appointments → TikTok
- Square → TikTokConnecting Square to TikTok Events API
- Square Online → TikTokConnecting Square Online to TikTok Events API
- Square Appointments → Google AdsConnecting Square Appointments to Google Ads
Using Square Appointments for bookings? How Square Appointments bookings get tracked end to end
RELATED GUIDES
Where Square Appointments → TikTok fits in the rest of your tracking
- TikTok · Healthcare clinicsTikTok Ads conversion tracking for healthcare clinics
- TikTok · Coaches & consultantsTikTok Ads conversion tracking for coaches and consultants
- TikTok × Appointment SystemHow to reconcile TikTok Ads against your practice or scheduling system
- TikTok · Booked call → closed wonHow to track booked call to closed won for TikTok Ads
- YouCanBook.me → TikTokConnecting YouCanBook.me to TikTok Events API
- Square Appointments → MetaConnecting Square Appointments to Meta Conversions API
- Coaches & consultantsConversion tracking for coaches and consultants, where every booked call counts
- Bookeo → TikTokConnecting Bookeo to TikTok Events API
Free · 30 min
Get Square Appointments and TikTok joined properly
Free30 minutesNo obligation
