Suivi des réservations de rendez-vous et démos pour OpenAI Ads
Mesurez avec précision vos démos et rendez-vous : Calendly, HubSpot, écouteurs d'iframes Chili Piper et webhooks serveur CAPI.
For B2B SaaS companies, consultancies, and high-ticket service agencies, eCommerce tracking rules do not apply.
Nobody is buying a $10,000 service with a credit card on a Shopify cart.
Your primary conversion event is an appointment booking or a product demo request. But tracking demo bookings on OpenAI Ads is notoriously tricky: most teams use embedded schedulers (like Calendly, Chili Piper, or HubSpot Meetings) that run inside cross-domain iframes. Client-side pixels cannot see inside the iframe to detect when a user confirms a timeslot.
If you only track clicks on the Book Demo button, you end up optimizing your campaigns for tire-kickers who opened the calendar and bounced.
Real booking tracking requires listening to cross-window postMessage events or bridging webhook confirmation payloads directly into OpenAI's Conversions API.
Here is how to set up bulletproof demo booking tracking for OpenAI Ads across any scheduling platform.
1. Event Standard: appointment_scheduled
OpenAI Ads includes a dedicated standard event specifically for meeting bookings: appointment_scheduled.
Unlike a generic lead_created event, appointment_scheduled signals high conversion commitment to the ad auction:
{
"type": "appointment_scheduled",
"action_source": "website",
"event_id": "booking_cal_901824",
"user_data": {
"em": "f660ab912ec121d1b1e928a0bb4bc61b15f5ad44d5efdc4e1c92a25e99b8e44a",
"ph": "94212953e5e49f579d479cb2c9f417f7b15d914d33a682ff9341496695222718",
"client_ip_address": "198.51.100.42",
"client_user_agent": "Mozilla/5.0..."
},
"data": {
"appointment_id": "cal_901824",
"currency": "USD",
"amount": 25000 // Optional estimated lead pipeline value ($250.00)
}
}
2. Capturing Calendly Bookings via postMessage
When Calendly is embedded via an inline widget or popup, Calendly dispatches JavaScript window.postMessage events back to the parent host page upon key user actions:
calendly.date_and_time_selectedcalendly.event_scheduled
Add the following listener to your booking landing page to trigger the OpenAI Ads pixel:
window.addEventListener('message', function(e) {
// Verify origin for security
if (e.origin && e.origin.indexOf('calendly.com') !== -1) {
if (e.data && e.data.event === 'calendly.event_scheduled') {
const payload = e.data.payload;
const eventUri = payload.event.uri; // Unique Calendly meeting URI
const bookingId = eventUri ? eventUri.split('/').pop() : 'booking_' + Date.now();
// Emit client-side conversion to OpenAI Ads
window.oaiq('event', 'appointment_scheduled', {
appointment_id: bookingId,
event_id: 'calendly_' + bookingId
});
console.log('OpenAI Ads appointment_scheduled event fired for Calendly booking:', bookingId);
}
}
});
3. Capturing HubSpot Meetings Bookings
HubSpot embedded meeting widgets similarly emit window messages when a prospect submits a booking:
window.addEventListener('message', function(e) {
if (e.data && e.data.meetingBookSucceeded) {
const bookingDetails = e.data.meetingBookSucceeded;
const meetingId = 'hubspot_' + Date.now();
window.oaiq('event', 'appointment_scheduled', {
appointment_id: meetingId,
event_id: meetingId
});
}
});
4. Why Server-Side Webhook CAPI is Essential for B2B
While client-side listeners work when a prospect stays on the page, they fail when:
- The prospect uses an ad blocker that halts
pixel.js. - The prospect completes the booking on a standalone Calendly/HubSpot link instead of an embedded page.
- The parent page closes before the iframe fires the confirmation postMessage.
The Server-Side Solution:
- Configure your scheduling software to send a webhook on event creation (e.g., Calendly Webhook
invitee.created). - Your server endpoint receives the payload with the prospect's email, phone, and booking timestamp.
- Your server hashes the user data (SHA-256) and posts an
appointment_scheduledevent directly tohttps://bzr.openai.com/v1/events?pid=<PIXEL-ID>. - If a client-side event was also fired, matching
event_idstrings ensure automatic deduplication.
5. Downstream Optimization: Attended Meetings and CRM Stages
The real power of server-side CAPI for B2B lead generation is tracking downstream qualification:
- Stage 1 (Top Funnel): Prospect books demo → Track
appointment_scheduled. - Stage 2 (Mid Funnel): Prospect shows up to the call → Your CRM triggers CAPI custom event
demo_completed. - Stage 3 (Bottom Funnel): Deal signs → Your CRM triggers CAPI
subscription_activatedororder_createdwith real contract value.
Feeding qualified offline stages back to OpenAI Ads prevents bidding algorithms from optimizing for unqualified form submissions.
For full architecture and implementation support, explore our Lead Generation Tracking Setup service.