Tracking Events
The reservation form triggers tracking events at different stages of the booking process. These events are sent to both Google Tag Manager and Facebook Pixel (if configured).
Google Tag Manager Events
Three events are pushed to the dataLayer during the reservation process:
1. Reserve Visit
Triggered when the reservation form is loaded. Useful for retargeting users who visited but didn't complete a booking.
{
event: 'reserve_visit',
restaurant_name: 'Restaurant Name',
restaurant_id: 123,
widget_id: 456
}
2. Reserve Init
Triggered when a user selects a date/time and starts the booking process.
{
event: 'reserve_init',
booking_uuid: 'abc-123-def',
date: '2024-03-15',
guests: 4,
time: 72000,
shift: 'Dinner',
restaurant_name: 'Restaurant Name',
restaurant_id: 123,
widget_id: 456
}
3. Reserve Complete
Triggered when the booking is successfully completed.
{
event: 'reserve_complete',
booking_uuid: 'abc-123-def',
date: '2024-03-15',
guests: 4,
time: 72000,
phone: '+34600000000',
email: 'customer@email.com',
first_name: 'John',
last_name: 'Doe',
shift: 'Dinner',
duration: 5400,
status: 'booked',
language: 'en',
restaurant_name: 'Restaurant Name',
restaurant_id: 123,
widget_id: 456,
payment_method: 'stripe',
payment_currency: 'EUR',
payment_amount: 50
}
Facebook Pixel Events
If the Facebook Pixel is installed on your website, the following events are automatically sent:
| Booking Stage | Facebook Event | Type |
|---|---|---|
| Form loaded | ReserveVisit |
Custom |
| Booking started | InitiateCheckout |
Standard |
| Booking completed (no payment) | Lead |
Standard |
| Booking completed (with payment) | Purchase |
Standard |
1. ReserveVisit (Custom Event)
Triggered when the reservation form is loaded.
fbq('trackCustom', 'ReserveVisit', {
content_name: 'Restaurant Name',
restaurant_id: 123,
widget_id: 456
});
2. InitiateCheckout (Standard Event)
Triggered when a user starts the booking process.
fbq('track', 'InitiateCheckout', {
content_name: 'Restaurant Name',
content_category: 'Dinner',
num_items: 4,
restaurant_id: 123,
widget_id: 456,
booking_uuid: 'abc-123-def'
});
3. Lead or Purchase (Standard Events)
Triggered when the booking is completed. Uses Purchase if payment was required, Lead otherwise.
// Without payment
fbq('track', 'Lead', {
content_name: 'Restaurant Name',
content_category: 'Dinner',
num_items: 4,
restaurant_id: 123,
widget_id: 456,
booking_uuid: 'abc-123-def'
});
// With payment
fbq('track', 'Purchase', {
content_name: 'Restaurant Name',
content_category: 'Dinner',
num_items: 4,
currency: 'EUR',
value: 50,
restaurant_id: 123,
widget_id: 456,
booking_uuid: 'abc-123-def'
});
Advanced Matching
When a booking is completed, user data is sent to Facebook for improved audience matching:
-
em- Email address -
ph- Phone number -
fn- First name -
ln- Last name
Facebook automatically hashes this data for privacy.
Webhooks
You can also configure up to 3 webhook URLs to receive these events. The webhook payload format is:
{
"eventType": "reserve_complete",
"eventData": {
"booking_uuid": "abc-123-def",
"date": "2024-03-15",
"guests": 4,
...
}
}
Configure webhooks in the widget settings:
Use Cases
Retargeting Abandoned Bookings
Create a Facebook audience of users who triggered ReserveVisit but NOT reserve_complete in the last 7 days.
Conversion Tracking
Use reserve_complete / Lead / Purchase events to track booking conversions in Google Ads or Facebook Ads.
Analytics Funnel
Build a funnel in Google Analytics to see drop-off rates:
-
reserve_visit→ Form views -
reserve_init→ Started booking -
reserve_complete→ Completed booking