Documents

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:

  1. reserve_visit → Form views
  2. reserve_init → Started booking
  3. reserve_complete → Completed booking