Workflow Automation
Trigger automated actions based on booking events.
Workflows let you automate actions that happen in response to booking events — no manual intervention needed.
How Workflows Work
A workflow consists of:
- Trigger — the event that starts the workflow (e.g., "Booking Created")
- Actions — what happens when the trigger fires (e.g., "Send confirmation email")
Workflows are stored as a visual graph of connected nodes. Each workflow belongs to a specific location and can be enabled or disabled at any time.
Workflow Settings
| Setting | Description |
|---|---|
| Name | A descriptive name for the workflow |
| Description | Optional notes about the workflow's purpose |
| Enabled | Toggle the workflow on or off without deleting it |
| Graph | The node-based workflow definition (managed through the visual editor) |
Available Triggers
Booking Events
| Trigger | Event Data |
|---|---|
| Booking Created | Booking ID, customer, activity, total amount, start/end time, status |
| Booking Status Changed | Booking ID, old status, new status, changed by, reason |
| Booking Cancelled | Booking ID, customer, cancelled by, reason, cancellation timestamp |
| Booking Rescheduled | Booking ID, customer, old start/end time, new start/end time, rescheduled by |
| Reminder Sent | Booking ID, customer, reminder rule ID, sent timestamp |
| Survey Sent | Booking ID, customer, survey ID, sent timestamp |
| Survey Submitted | Booking ID, customer, survey ID, submission ID, overall rating, submitted timestamp |
| Tag Added | Booking ID, location, tag name, added by |
| Tag Removed | Booking ID, location, tag name, removed by |
| Guest Added | Booking ID, customer, guest name, guest email, guest count. Fires for each guest that is newly added or has their name/email updated. Does not fire during initial booking creation. |
Other Events
| Trigger | Event Data |
|---|---|
| Customer Message Received | Booking ID, thread ID, customer name, message preview, confirmation code. Only fires for messages sent by the customer (not operator replies). |
Tag events are only published when tags are changed from the dashboard. Tags added or removed by workflow actions do not fire tag events, preventing infinite loops.
Available Actions
Send Template (send_template)
Send an email or SMS using a pre-built communication template. The action automatically loads booking, customer, activity, and location data to fill in template variables.
Configuration:
| Option | Description |
|---|---|
| Template | Select from your active templates |
| Recipient Type | customer, facilitator, admin, or custom |
| Custom Recipient | An email address or phone number (supports template variables) |
When using an SMS template, messages are only sent if the customer opted in to receive text messages during checkout.
Send Email (send_email)
Send a custom email directly without using a pre-built template.
Configuration:
| Option | Description |
|---|---|
| Recipient Type | customer, facilitator, admin, or custom |
| Custom Email | An email address (when recipient type is custom) |
| Subject | Email subject line |
| Email Template | Email body content |
Send SMS (send_sms)
Send a custom SMS message.
Configuration:
| Option | Description |
|---|---|
| Recipient Type | customer or facilitator |
| Message | SMS message content (max 160 characters) |
SMS messages are only sent if the customer opted in to receive text messages during checkout.
Send Waiver Sign Request (send_waiver_invitation)
Send a waiver signing request email to the customer, guests, or a custom email address. The email includes a branded "Sign Waiver" button linking directly to the signing page. When triggered from a booking workflow, the signing link automatically includes the booking reference so the signed waiver is linked to the booking.
Configuration:
| Option | Description |
|---|---|
| Waiver | Select which waiver to send |
| Send To | Customer, Guests Only, Customer & Guests, or Custom Email |
| Custom Email | An email address (when send to is Custom Email) |
The "Customer & Guests" option deduplicates recipients, so if a guest's email matches the booking customer's email, they only receive one email.
Send Survey Email (send_survey_email)
Send a post-experience survey email with a unique, tokenized survey link. See Post-Booking Surveys for details.
Wait / Delay (wait)
Pause the workflow for a specified duration before continuing to the next action. Supports two modes:
Fixed Duration — wait for an exact amount of time:
| Option | Description |
|---|---|
| Duration | The numeric amount to wait |
| Unit | Minutes, Hours, or Days |
Relative to Booking — schedule the next action relative to a booking time:
| Option | Description |
|---|---|
| Reference Point | Booking Start Time, Booking End Time, or Booking Created Time |
| Offset Value | The numeric offset amount |
| Offset Unit | Minutes, Hours, or Days |
| Direction | Before or After the reference point |
| At Time | (Optional, days only) Deliver at a specific time of day in the location's timezone. For example, "1 day before booking start at 09:00" sends the next action at 9 AM local time the day before the booking. |
When a booking is rescheduled, any pending relative delays are automatically recalculated to match the new booking time.
Update Booking (update_booking)
Change a booking's status automatically. For example, auto-confirm bookings or mark them as complete.
Configuration:
| Option | Description |
|---|---|
| Field | The booking field to update (currently supports status) |
| Value | The new value |
Add Booking Note (add_booking_note)
Automatically add a note to the booking record. Notes are prefixed with [Workflow] to distinguish them from manual notes. Supports template variables in the note text.
Configuration:
| Option | Description |
|---|---|
| Note | The note text (supports {{variable}} syntax) |
Add Tag / Remove Tag (add_tag / remove_tag)
Add or remove a tag on the booking. Useful for categorizing bookings based on workflow outcomes.
Configuration:
| Option | Description |
|---|---|
| Tag | Select from the list of system tags and custom tags |
Tags added or removed by workflow actions do not fire tag events, preventing infinite loops when combining tag triggers with tag actions.
Assign Facilitator (assign_facilitator)
Automatically assign a facilitator to the booking.
Webhook (webhook)
Send an HTTP request to an external URL when the trigger fires. Useful for integrating with third-party systems.
Configuration:
| Option | Description |
|---|---|
| URL | The endpoint URL (supports {{variable}} replacement) |
| Method | POST, PUT, or PATCH |
| Headers | Custom HTTP headers (values support variable replacement) |
| Body | JSON body template (supports {{variable}} and {{eventData}} for the full event payload) |
Webhooks have a 30-second timeout and include SSRF protection that blocks requests to localhost and private networks.
Create Task (create_task)
Create an internal task for follow-up.
Configuration:
| Option | Description |
|---|---|
| Title | Task title (supports variables) |
| Description | Task description (supports variables) |
| Due In Hours | Hours until the task is due (default: 24) |
| Priority | low, normal, or high |
Available Conditions
Condition nodes let you branch a workflow based on booking, customer, activity, or time data. Each condition evaluates to true or false, producing two output paths.
Booking Conditions
| Condition | Description |
|---|---|
| Booking Status | The current status (Pending, Confirmed, Canceled, Completed, No Show) |
| Booking Value | The grand total amount |
| Booking Date | The date of the booking |
| Booking Start Time | The start time |
| Booking End Time | The end time |
| Equipment Count | Number of equipment items on the booking |
| Has Add-Ons | Whether the booking has any equipment add-ons (yes/no) |
| Has Tag | Whether the booking has a specific tag applied. Select from system and custom tags. |
| Does Not Have Tag | Whether the booking does not have a specific tag applied. |
Customer Conditions
| Condition | Description |
|---|---|
| Customer Name | The customer's full name |
| Customer Email | The customer's email address |
| Customer Phone | The customer's phone number |
| Is New Customer | Whether the customer was created within the last 7 days (yes/no) |
| Guest Count | The number of guests on the booking |
Activity Conditions
| Condition | Description |
|---|---|
| Activity Name | The name of the booked activity |
| Activity Type | The activity type (Equipment Rental, Tour, Dynamic Duration Rental) |
| Is Equipment Rental | Whether the activity is an equipment rental type (yes/no) |
Equipment Conditions
| Condition | Description |
|---|---|
| Equipment Type | Comma-separated list of equipment names on the booking |
Location & Time Conditions
| Condition | Description |
|---|---|
| Location Name | The name of the booking location |
| Location Timezone | The IANA timezone of the location |
| Time of Day | The current hour (0-23) in the location's timezone |
| Day of Week | The current day of the week |
| Is Weekend | Whether today is Saturday or Sunday (yes/no) |
Survey Conditions
| Condition | Description |
|---|---|
| Survey Rating | The overall star rating from a submitted survey (1-5). Use with the Survey Submitted trigger. |
Operators
Most conditions support the following operators: Equals, Does Not Equal, Greater Than, Less Than, Contains, Does Not Contain, Starts With, Ends With, Is Empty, Is Not Empty.
Yes/no conditions (Has Add-Ons, Is New Customer, etc.) only support Equals and Does Not Equal.
Tag conditions (Has Tag, Does Not Have Tag) do not use an operator — you simply select the tag to check.
Creating a Workflow
- Navigate to Dashboard > Marketing > Workflows
- Click Add Workflow
- In the visual editor, add a trigger event node
- Optionally add condition nodes to branch the flow based on booking status, value, date, etc.
- Add one or more action nodes (send email, wait/delay, webhook, etc.)
- Connect the nodes to define the execution flow
- Configure each node's settings in the property panel on the right
- Save and activate the workflow
Visual Workflow Editor
Resytech includes a visual node-based editor for building complex workflows. The editor supports three node types:
- Event nodes (blue) — the trigger that starts the workflow
- Condition nodes (amber) — branch the flow with true/false paths based on booking data, customer data, time of day, and more
- Action nodes (green) — perform an action such as sending a message, waiting, updating a booking, or calling a webhook
Drag and connect nodes to define the flow. The graph is saved as a JSON structure so you can duplicate or export workflows. The editor includes validation to ensure all nodes are connected and reachable before saving.
Execution Tracking
Every workflow run is tracked with detailed execution data:
| Field | Description |
|---|---|
| Trigger Event Type | The event that started the execution |
| Trigger Event Data | The full event payload (JSON) |
| Status | Current execution status (e.g., running, completed, failed) |
| Started At | When the execution began |
| Completed At | When the execution finished (if applicable) |
| Error Message | Details if the execution failed |
Each action within an execution is tracked as a step:
| Field | Description |
|---|---|
| Node ID | The node in the workflow graph |
| Node Type | The action type (e.g., send_template, webhook) |
| Status | Step status |
| Input Data | The configuration passed to the action |
| Output Data | The action's result |
| Error Message | Details if the step failed |
View execution history from Dashboard > Marketing > Workflows by selecting a workflow and opening its Executions tab.
Examples
Booking Confirmation
- Trigger: Booking Created
- Action: Send confirmation email with booking details
Pre-Visit Reminder
- Trigger: Booking Reminder (24 hours before)
- Action: Send SMS with date, time, and location directions
Morning-Of Reminder
- Trigger: Booking Created
- Action 1: Wait — 0 days before booking start, at 09:00 (location timezone)
- Action 2: Send SMS reminder with booking details and directions
Night-Before Reminder
- Trigger: Booking Created
- Action 1: Wait — 1 day before booking start, at 20:00 (location timezone)
- Action 2: Send email with preparation instructions
Waiver Signing Request on Confirmation
- Trigger: Booking Confirmed
- Action: Send Waiver Sign Request to Customer & Guests
Post-Experience Follow-Up
- Trigger: Booking Completed
- Action 1: Wait — 2 hours (fixed delay)
- Action 2: Send survey email
Cancellation Notification with Webhook
- Trigger: Booking Cancelled
- Action 1: Send cancellation email to customer
- Action 2: Fire webhook to external CRM with cancellation data
Auto-Add Note on Reschedule
- Trigger: Booking Rescheduled
- Action: Add booking note with old and new times for audit purposes
