Skip to main content
Square Appointments → MetaIntegration guide

Connecting Square Appointments to Meta Conversions 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. Meta's pixel loses a large share of conversions to Safari, ad blockers and iOS, and the Conversions API exists because of it. The join between them succeeds or fails on one thing: whether the fbc and fbp values reaches the Square Appointments booking before the conversion happens, because Meta can only match a conversion it can tie back to a click it recognizes.

Free30 minutesNo obligation

Specific to this pair

Square Appointments to Meta CAPI: Schedule now, Purchase at payment

Send Meta a Schedule event when a Square appointment is booked online and Purchase when the payment completes, valued without the tip, promptly, since Meta rejects events over seven days old. Check whether Instagram or Facebook booking buttons are already reported and share event_ids with browser events. Clinics should send no service names or appointment types.

Meta gives this pair two natural events. Send Schedule when the appointment is booked online, seconds after the visit and well inside every window, and Purchase when the Square payment completes, valued without the tip. Because payment can come days after booking, send Purchase promptly when it happens: Meta rejects web events whose event_time is more than 7 days old, so a weekly sync from Square will lose some.

Square Appointments can also connect to booking buttons on Instagram and Facebook; check what is enabled on your account. Bookings made through those buttons start inside Meta's apps, so check whether Meta already reports them before sending them again from Square, and give any server event the same event_id as its browser counterpart so Meta can deduplicate.

Many Square Appointments users are clinics, therapists, med spas and wellness practices. If that is you, do not send service names, appointment types or notes to Meta: a Schedule labeled with a treatment discloses health information, and HIPAA-covered providers should not send appointment data to Meta at all without legal review. A generic event with value and hashed email and phone is the most to consider.

Square Appointments → Meta · what breaks

Why this join usually fails — Square Appointments → Meta

  1. 01

    The fbc and fbp values never reaches Square Appointments

    The booking site is Square-hosted, and the payment may be taken in person days later.

  2. 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.

  3. 03

    Double counting from broken deduplication

    Server and browser both fire, the event_id does not match, and Meta counts two purchases. Reported ROAS goes up, the business does not, and it can run for months before anyone reconciles against the store.

  4. 04

    Nothing reconciles afterwards

    Events Manager shows received events, the deduplication state and an Event Match Quality score per event. Events arriving is not the test — deduplicated, well-matched events arriving is. Compare Meta's reported purchases against your store's order count for the same window.

Square Appointments → Meta · the fix

What working looks like — Square Appointments → Meta

  • The fbc and fbp values on every appointment

  • Conversions arriving in Meta

    Events appear in Events Manager with an Event Match Quality score, deduplicated against the pixel, and become usable for optimization and attribution.

  • Reconciled against the source

Square Appointments → Meta · architecture

How Square Appointments and Meta actually connect

  1. 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. 2

    Meta Conversions API needs a click to match

    Meta matches server events to people using whatever identifiers you send, hashed with SHA-256 where required. There is no single mandatory key, which is why quality varies so much between implementations — a poorly matched event is accepted, reported, and worth much less than it appears.

  3. 3

    The identifier is the bridge

    The fbc and fbp values, captured at the visit and carried into the Square Appointments booking.

  4. 4

    The event source decides reliability

    Send completed appointment transactions net of tips.

  5. 5

    Deduplication at the destination

    Meta deduplicates on the pair of event_name and event_id. The browser pixel and the server event must send the same event_id for the same conversion, within the deduplication window. Get this wrong and every purchase counts twice — which is by far the most common Conversions API failure and it inflates reported ROAS rather than reducing it.

Square Appointments → Meta · normal or broken

Working vs. broken, side by side — Square Appointments → Meta

Normal, not a fault

  • The fbc and fbp values present on the appointment

  • Sent from the Square transaction record

  • Deduplicated correctly

    Meta deduplicates on the pair of event_name and event_id. The browser pixel and the server event must send the same event_id for the same conversion, within the deduplication window. Get this wrong and every purchase counts twice — which is by far the most common Conversions API failure and it inflates reported ROAS rather than reducing it.

  • Reconciles with the source

Actually broken

  • The fbc and fbp values 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

    Server and browser both fire, the event_id does not match, and Meta counts two purchases. Reported ROAS goes up, the business does not, and it can run for months before anyone reconciles against the store.

  • Nobody has reconciled it

Square Appointments → Meta · diagnose

Diagnostic order — Square Appointments → Meta

  1. 01

    Count appointments carrying the fbc and fbp values

  2. 02

    Follow one real conversion end to end

  3. 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.

  4. 04

    Read Event Match Quality and the deduplication indicator

    In Events Manager, open the event and check both. A low match quality means weak identifiers; a missing deduplication indicator means your event_id pairing is broken.

  5. 05

    Read the match rate, not the success message

    Events Manager shows received events, the deduplication state and an Event Match Quality score per event. Events arriving is not the test — deduplicated, well-matched events arriving is. Compare Meta's reported purchases against your store's order count for the same window.

Square Appointments → Meta · prove

How it gets proven — Square Appointments → Meta

Source of truth

Square transactions tied to an appointment, filtered to those booked online.

  • The fbc and fbp values confirmed present on a live appointment.
  • Deduplication confirmed in Events Manager on a real purchase, with the browser and server events visibly paired rather than counted twice.
  • Online-booked completed appointments reconciled against imported conversions.

Square Appointments → Meta · free audit

What we check in the free audit

  • Count appointments carrying the fbc and fbp values
  • Follow one real conversion end to end
  • Filter by booking channel and re-check the total
  • Read Event Match Quality and the deduplication indicator
  • Read the match rate, not the success message

Checked against

Square transactions tied to an appointment, filtered to those booked online.

Get my free conversion tracking audit

Free30 minutesNo obligation

Square Appointments → Meta · when not to buy

When you don't need this — Square Appointments → Meta

  • Measure identifier coverage yourself first — pull your last hundred appointments and count how many carry the fbc and fbp values.
  • If almost all your business is walk-in, measure it on appointment volume and do not build a revenue import.
  • If you are not running Meta ads at meaningful spend, the Conversions API is effort without payoff. It earns its cost when the optimization signal is worth improving.

Square Appointments → Meta · what we deliver

What gets built — Square Appointments → Meta

  • 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 Meta

    Server-side events to the Conversions API with the event_id matched to the pixel, action_source set correctly, and customer data hashed before it leaves your infrastructure.

  • 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.

Get my free conversion tracking audit

From $400 · See packages

FAQ

Square Appointments → Meta questions, answered

Check Square's current Meta integrations for your account. Otherwise send Schedule at booking and Purchase at payment server-side, driven by Square's booking and payment records.

Free · 30 min

Get Square Appointments and Meta joined properly

Free30 minutesNo obligation