Booking conversion tracking that counts kept appointments, not Book Now clicks
Cheap cost per booking, no new faces at the front desk? The conversion is probably a button click, while the real booking finishes inside a scheduler your tags can't see. We track click, request, confirmed and attended as separate steps, send the attended visit to Google Ads and Meta as the conversion that bids, and tell you which booking doors stay out of view.
Free30 minutesNo obligation
Booking tracking · what breaks
What it costs when a click passes for a booking
- 01
A cheap cost per booking and an empty chair
The conversion is a button or a reloadable thank-you page, so campaigns that bring browsers look best and keep the budget.
- 02
Bookings that vanish inside the scheduler
The calendar runs in a frame or on the vendor's domain, so bidding never sees the confirmation and chases clicks.
- 03
No-shows paid for at full price
A booking that never shows counts like a client who sat down, so the platforms learn to find people who book and ghost.
- 04
Regulars and Maps bookings credited to ads
Rebooks, brand searches and Google profile bookings share one column, so you pay acquisition prices for clients you already had.
Booking tracking · the fix
What changes — Booking tracking
Bidding on kept appointments
The attended visit from your booking records becomes the primary conversion; clicks and requests stay readable.
One booking, one conversion
Every request carries a booking ID that the Pixel and the server event both use, so a page refresh, a moved slot or a duplicate tag can't count it twice.
Every booking door labeled
Ad click, Google profile, marketplace, phone and returning client reported apart, with the gaps written down.
Booking tracking · architecture
How we pick the tracking method for your scheduler
We use the strongest signal your booking engine documents and say where it stops.
- 1
M1: your own page confirms the booking
When the booking form lives on your site, the conversion fires on the server's success response with a booking ID, never on the button.
- 2
M2: the scheduler's documented callback
Calendly's JavaScript embed posts a calendly.event_scheduled message to your page; Calendly says a direct iframe can't do that. Where a vendor documents no callback, your tags can't read inside its frame.
- 3
M3: cross-domain linking through a redirect
GA4 can carry its IDs to the vendor's domain in the _gl parameter, but Google notes redirects can strip it, so we test it live.
- 4
M4: webhooks and API status
Confirmed, rescheduled and canceled states come from the scheduler. Acuity warns its catch-all changed hook can duplicate the specific ones, so each event gets one owner.
- 5
M6: attended visits back to the ad platforms
The saved click ID, plus hashed email or phone where allowed, lets Google Ads match an offline conversion; Meta's Conversions API takes the same visit.
- 6
M7 and M8: doors you can only count
Marketplaces and Google's Book button complete the booking off your site. We add tracking parameters where a custom link allows it and reconcile the provider's own report each month.
Booking tracking · diagnose
How we find where your booking tracking breaks
In this order, because the cheapest faults are also the most common.
- 01
Read what each primary conversion fires on
A button click or page view set as primary is the first fix.
- 02
Make one tagged test booking
Book with a test click ID in the URL and check the appointment record.
- 03
Count conversions from that one booking
Two Pixels, or an imported GA4 key event and a Google tag both set as primary, is a common double count.
- 04
Compare confirmed with attended
The no-show share for ad-sourced bookings shows how far bookings overstate paying clients.
- 05
Split bookings by door
Put the scheduler's bookings-by-source report next to the ad platforms. The gap is untracked.
Booking tracking · prove
How the work gets proven — Booking tracking
On a real booking through your live site, not the admin preview.
Source of truth
Your booking system's appointment records: requests, confirmed and attended visits by date, with source and booking ID
- A test appointment booked from a link carrying an ad click ID, and that ID found on the record afterward.
- That single appointment shows up once in each ad platform, with the Pixel and server event deduplicated on a shared event ID.
- A canceled test booking retracted in Google Ads; a moved test booking still counted once.
- Attended visits arriving daily, since Meta rejects server events dated more than seven days back.
- Ad-click bookings matched record by record against each platform over a fully closed window.
- Bookings from doors we can't see inside listed separately.
- The same record-by-record check run again after 30 days, plus after any change to the scheduler or the site.
Booking tracking · free audit
What we check in the free audit
- Read what each primary conversion fires on
- Make one tagged test booking
- Count conversions from that one booking
- Compare confirmed with attended
- Split bookings by door
Checked against
Your booking system's appointment records: requests, confirmed and attended visits by date, with source and booking ID
Free30 minutesNo obligation
Booking tracking · when not to buy
When you don't need this — Booking tracking
Some booking setups are better served by a short settings fix.
- Almost every booking comes by phone. Start with call tracking.
- Most bookings arrive through a marketplace or Google's Book button rather than your own scheduler. There's little ad-click booking to track, and the guarantee wouldn't cover those.
- You don't run paid ads. Your scheduler's reports are enough.
- The only problem is a second Pixel or a button marked as primary. We'll walk you through that settings change during the call.
Booking tracking · what we deliver
What we build, rung by rung — Booking tracking
Rung 1: Book Now click
Recorded as interest only. It never counts as a booking and never bids.
Rung 2: Booking request
Counted when the scheduler accepts the form, with the click ID and source saved onto the booking record.
Rung 3: Booking confirmed
Kept apart from holds and waitlists, and used as the secondary conversion.
Rung 4: Appointment attended
The conversion that bids, sent server-side with the visit's value and a new-or-returning flag.
Corrections: cancel, no-show, reschedule
Google Ads gets a retraction when a counted booking is canceled; Meta has no equivalent, so its attended event simply never fires. A moved slot keeps its original booking ID.
The doors we can only count
Google's Book button, marketplaces and Local Services Ads reported from their own records.
Written guarantee
95%+ tracking accuracy
Measured against Your booking system's appointment records: requests, confirmed and attended visits by date, with source and booking ID. 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
Booking tracking questions, answered
No. It shows interest. A booking is the record your scheduler creates when a slot is accepted, and only that record, or the visit after it, should bid.
Not by itself. A widget served from another domain is closed to your page's tags, so tracking needs a signal the vendor documents: a callback, a redirect, a webhook or an export. We confirm which your plan includes before quoting.
Because a no-show costs you the slot. When the platforms hear only about kept appointments, they learn to find people who turn up. Bookings stay as a secondary signal.
Google Ads lets us retract an uploaded conversion, so a canceled booking comes back out of your Google numbers. Meta has no retraction, which is one reason the attended visit, not the booking, is what we send there. A moved slot keeps its booking ID and counts once.
Only to a point. Google says performance data isn't available for custom booking links on a Business Profile, and Local Services Ads booking leads are delivered and charged inside that system. An AI receptionist's booking ties to the call, not a click, and its summary is a note, not proof of a visit. Those doors are reported from their own records and sit outside the 95%+ guarantee, which covers bookings from a click we can match.
We send the minimum: a booking ID, a value and, where allowed, a hashed contact. Treatment names and symptoms stay out. Google's customer data policy lists health and medical information as a sensitive category that can't be used for measurement in enhanced conversions, so some practices stop at aggregate reporting. The audit tells you which side of that line you're on.
Free · 30 min
Find out what your booking conversions really count
Free30 minutesNo obligation
