Overview
The Abandoned Booking trigger starts a workflow when an identified customer abandons an unpaid widget checkout (e.g. closed the widget, left the page, or the booking countdown expired).
When It Triggers
A customer with at least a valid email or phone abandons an unpaid widget reservation
Abandonment is detected from the client (e.g. tab closed, widget closed) or server (e.g. expiry)
The trigger fires at most once per booking (idempotent)
Use Cases
Send abandoned-cart recovery emails
Send SMS reminders with a direct booking link
Notify sales to follow up with high-value abandonments
Offer a limited-time discount to complete the booking
Sync abandoned carts to a CRM or marketing tool
A/B test recovery message timing and copy
Configuration
This trigger requires no additional configuration. It automatically triggers when an eligible abandoned booking is recorded.
Optional Filters
You can add filter conditions to only process specific abandonments:
Filter by abandon reason (
closed,expired, etc.)Filter by source (
clientvsserver)Filter by product or widget
Filter by time since abandonment
Available Data
When this trigger fires, it provides an abandoned_booking object with the following fields.
Abandoned Booking Object Structure
Field | Description |
| UUID of the abandoned booking |
| UUID of the customer |
| ID of the main availability slot |
| Booking quantity |
| UUID of the widget (embed) |
| Customer email (if identified; may be null) |
| Customer phone (if identified; may be null) |
| Customer name (if set; may be null) |
| Abandon reason (e.g. |
| ISO 8601 timestamp when the abandon was recorded |
|
|
Accessing Data in Workflows
{abandoned_booking.booking_id}
{abandoned_booking.customer_id}
{abandoned_booking.email}
{abandoned_booking.phone}
{abandoned_booking.customer_name}
{abandoned_booking.reason}
{abandoned_booking.occurred_at}
{abandoned_booking.source}Identification
The trigger only runs when the customer is identified (valid email or valid international phone). Placeholder or missing contact details are not emitted, so you can rely on email and/or phone being present for sending messages.
Example Workflows
1. Abandoned Cart Email
Workflow Steps:
Trigger: Abandoned Booking
Action: Send Notification
To:
{abandoned_booking.email}Subject: "You left something in your cart"
Body: Use
{abandoned_booking.customer_name}to personalise (e.g. "Hi {abandoned_booking.customer_name}"), include product summary and a direct link back to the widget/checkout
2. Delayed Recovery with Discount
Workflow Steps:
Trigger: Abandoned Booking
Action: Delay (e.g. 1 hour)
Action: Send Notification (recovery email with 10% off or similar)
Optional: Condition on
{abandoned_booking.source}or{abandoned_booking.reason}
3. SMS Reminder
Workflow Steps:
Trigger: Abandoned Booking
Condition: If
{abandoned_booking.phone}is not emptyAction (True): Send SMS with short link to complete booking
4. High-Value Follow-Up
Workflow Steps:
Trigger: Abandoned Booking
Action: Get Booking (by
{abandoned_booking.booking_id})Condition: If booking value above threshold
Action (True): Notify sales team or create CRM task
Testing
When testing this trigger:
Select an unpaid widget reservation from the booking selector (last 20 shown).
The workflow will run with that booking’s data as a simulated abandoned booking.
Review execution logs to verify context (email, phone, reason, source).
Test Data
The trigger provides a booking selector limited to unpaid widget reservations in the current business unit (last 20 by creation date). The selected booking must have a customer and at least one availability.
Best Practices
Respect timing – Use delays (e.g. 30 min–1 h) before the first recovery message to avoid feeling intrusive.
Prefer email when available – Use
{abandoned_booking.email}for primary recovery; use phone for SMS only when appropriate.Include a direct link – Recovery messages should link back to the same widget/checkout when possible.
Limit frequency – Avoid multiple aggressive follow-ups for the same abandonment.
Use reason/source – Filter or branch on
reasonandsourceto tailor messaging (e.g. “expired” vs “closed”).
