Skip to content

How to track booked calls from Meta ads (Pixel + Conversions API)

By · Updated · 7 min read

Short answer

Fire Meta's standard Schedule event when a call is actually booked — not when the calendar opens — from both the browser Pixel and the Conversions API, with the same event ID so Meta counts it once. Then optimize your campaign for Schedule. That's what lets Meta find people who book, not just click.

Calendar booking confirmed with a Meta ads conversion graph

Which Meta event should a booked call be?

Use the standard Schedule event for a confirmed booking and Lead for a form submission. Fire Schedule only when the booking is created — not when the calendar opens — so Meta learns from real buyers. Track the calendar opening separately as a custom event if you want it for reporting.

MomentMeta eventOptimize for it?
Booking confirmedScheduleYes
Form / quiz submittedLeadYes, for lead campaigns
Calendar openedCustom (e.g. BookingOpen)No
Landing page viewedPageView / ViewContentNo

Why use the Conversions API as well as the Pixel?

Browser pixels miss conversions blocked by ad blockers, iOS privacy features and in-app browsers. The Conversions API sends the same event from your server, with hashed email and phone, so Meta still counts it. Sending both with a shared event_id lets Meta de-duplicate them into one conversion.

How do you send booked calls server-side from Cal.com or Calendly?

Add a webhook for “booking created” that points to a small server function. Verify the webhook signature, read the booker's email and phone, hash them with SHA-256, and post a Schedule event to the Conversions API with event_id set from the booking ID. Pass the browser's _fbp and _fbc cookies through booking metadata for the best match.

  • Webhook trigger: booking created
  • Verify the signature with your webhook secret
  • event_name: Schedule, action_source: website
  • event_id: the same ID the browser Pixel used
  • Hashed email and phone, plus fbp/fbc

How do you test that it works?

Open Events Manager → your pixel → Test events, add the test code to your server, then make a real booking. You should see Schedule arrive from both Browser and Server, marked as deduplicated. Check Event Match Quality after a few days; aim for “Good” or better by sending email and phone.

What about Google Ads and Microsoft Ads?

Send the same booking moment to Google Ads as a conversion with enhanced conversions (hashed email/phone) and to Microsoft Ads as a UET goal with the book_appointment event. Use one data layer event for the booking and let Google Tag Manager route it, so every platform counts the same thing.

Frequently asked questions

Still unsure? Ask it on the call — that's what it's for.

Why does Meta show fewer bookings than my calendar?

Browser-only tracking misses blocked and in-app visits. Adding the Conversions API with email and phone usually closes most of the gap.

Should I optimize for leads or booked calls?

Start with the event you get at least 50 of per week per ad set. If bookings are too few, optimize for Lead and move to Schedule as volume grows.

Do I need a developer for this?

For Pixel plus Conversions API with deduplication, usually yes — or book a call and we'll set it up for you.