Triggers

Set up automated actions triggered by guest events — send messages, update rooms, or create tasks on check-in or checkout.

Triggers are event-driven automations that respond instantly to guest lifecycle events. Unlike scheduled jobs that run at specific times, triggers fire when something happens—a booking is created, a guest checks in, or a document is uploaded.

Overview

Feature

Description

Event-Driven

Fire immediately when events occur

Conditional

Add filters to control when triggers execute

Multiple Actions

Send messages, manage keys, update rooms, create checklists & tasks

Delay Support

Optional delay before action executes

System Triggers

Pre-configured defaults for common workflows

Requirements

Before setting up, ensure your HelloShift subscription includes:

  • Guest+ plan (for all triggers)

  • Staff+ plan (for room/cleaning triggers)


Accessing Triggers

  1. Go to Automation > Triggers

  2. View all triggers with their status

  3. Click New Trigger to create a custom trigger


Understanding Triggers

How Triggers Work

  1. Event Occurs: Guest checks in, booking created, etc.

  2. Condition Evaluated: Does the guest match the filter?

  3. Delay Applied: Wait specified seconds (if any)

  4. Action Executed: Send message, issue key, update room, create checklist or task

Trigger Components

Component

Description

Name

Descriptive label for the trigger

Event

What triggers the action

Condition

Filter to control when trigger fires

Action

What happens when triggered

Delay

Seconds to wait before executing

Status

Active (On) or Inactive (Off)


Available Events

Triggers can respond to these guest lifecycle events:

Booking Events

Event

Fires When

Guest Booking Confirmed

New reservation synced from PMS

Booking Cancelled

Reservation is cancelled

Guest Room Changed

Guest assigned to different room

Check-in/Check-out Events

Event

Fires When

Guest Checked In

Guest checks in (PMS status change)

Guest Checked Out

Guest checks out (PMS status change)

Pre-Check-in Events

Event

Fires When

Guest Document Uploaded

Guest uploads ID during pre-check-in

Guest ID Verified

Stripe Identity verification passes

Guest Payment Received

Payment captured during pre-check-in

Guest Agreement Signed

Guest signs registration card

Guest Pre-Checkin Completed

All pre-check-in steps completed


Available Conditions

Add conditions to control when triggers execute:

Guest Status Conditions

Condition

Matches When

Always

No filter—always execute

Guests Arriving Today

Guest's arrival date is today

In-Stay Guests

Guest is currently in-house

Guests Departing Today

Guest's departure date is today

Booking: Past Check-in Time

Booking made after check-in time on arrival day

Pre-Check-in Conditions

Condition

Matches When

PreCheckin: Document Uploaded

Guest has uploaded ID document

PreCheckin: ID Verified

Stripe Identity verified guest

PreCheckin: Payment Received

Payment captured in pre-check-in

PreCheckin: Agreement Signed

Guest signed registration card

PreCheckin: ID, Payment & Agreement Verified

All three verifications complete

Custom Conditions

Write custom logic using Liquid templates:

Condition

Description

Custom Condition (Liquid)

Your own filter logic

Note: Custom conditions require the custom_automation feature flag.


Available Actions

Key Management Actions

Action

Description

Default Delay

Just Issue Key

Generate access code (no message)

None

Issue & Send Key

Generate code and send to guest

None

Revoke Key

Deactivate guest's access code

None

Guest Communication Actions

Action

Description

Default Delay

Send Post-Booking Snippet

Send Post-Booking message template

300 sec (5 min)

Send Post-Checkin Snippet

Send Post-Checkin message template

1800 sec (30 min)

Send Post-Checkout Snippet

Send Post-Checkout message template

3600 sec (1 hour)

Housekeeping Task Actions

Action

Description

Default Delay

Set Cleaning Task: Clean

Assign "Clean" task to room

None

Set Default Cleaning Task

Assign room's default cleaning task

None

Remove Cleaning Task

Clear any assigned task

None

Assign Default Cleaner

Assign room's default cleaner

None

Room Status Actions

Action

Description

Default Delay

Set Room Occupied/Clean

Mark room as occupied and clean

None

Set Room Vacant/Dirty

Mark room as vacant and dirty

None

Notify Cleaner on Checkout

Send notification to assigned cleaner

None


Checklist & Task Creation Actions

Triggers can create staff work — not just send messages. Pick a checklist or task template, and HelloShift generates the work for the guest's room the moment the event fires.

Action

Description

Template Used

Create Checklist

Generates a checklist for the guest's room from one of your checklist templates

Checklists (Staff > All Checklists)

Create Task

Creates a task for the guest's room from a task template — subtasks on the template are created too

Template Tasks (Staff > All Tasks > Templates)

Setting it up:

  1. Go to Automation > Triggers and click New Trigger

  2. Choose the Event (e.g., Guest Checked Out, Guest Checked In, Guest Booking Confirmed)

  3. Under Action, select Create Checklist or Create Task

  4. Pick the checklist or task template in the dropdown that appears

  5. Optionally add a condition or delay, then save

How generated checklists and tasks behave:

  • Room-tagged and guest-linked: Items are tagged with the stay's room and linked to the guest, so they appear on the room page and the guest profile.

  • One per room: Multi-room reservations get one checklist or task per room.

  • Room resolved when the trigger fires: If no room is assigned yet (e.g., a booking confirmed before room assignment), nothing is created.

  • No duplicates: If your PMS re-sends the same event — or a scheduled Room Job already generated the same checklist or task for that room today — no second copy is created. Deduplication is per room, so reservations with several guests still get exactly one copy per room.

  • Checklist skip threshold: If the room's recent copies of the same checklist are all still incomplete, a new one is skipped — the same rule scheduled checklist generation uses.

  • Safe template handling: If the selected template is later deleted or archived, the trigger deactivates itself and warns once instead of failing silently.

Note: The Create Checklist action is available on the Staff plan.

The same two actions are also available as scheduled Room Jobs (GUESTS > Jobs > Room > New Room Automation). Use a Trigger when the work should follow a PMS event; use a Room Job when it should be generated at a set time from reservation dates — for example, a checklist for every guest departing today, whether or not the PMS has checked them out.

Creating a Trigger

Step 1: Click New Trigger

  1. Go to Automation > Triggers

  2. Click New Trigger

Step 2: Configure the Trigger

Field

Description

Name

Descriptive name (e.g., "Post-Checkout-Dirty")

Event

Select the triggering event

Condition

Select filter (or "Always")

Action

Select what happens

Delay

Seconds to wait (optional, default 0)

Step 3: Save and Activate

  1. Click Create Trigger

  2. Toggle the trigger On to activate


System Triggers

HelloShift creates these default triggers for common workflows:

Post-Booking-Message

Setting

Value

Event

Guest Booking Confirmed

Condition

Always

Action

Send Post-Booking Snippet

Delay

300 seconds (5 minutes)

Default Status

Inactive

Purpose: Send booking confirmation shortly after reservation is created.

Post-Checkin-Message

Setting

Value

Event

Guest Checked In

Condition

Always

Action

Send Post-Checkin Snippet

Delay

1800 seconds (30 minutes)

Default Status

Inactive

Purpose: Welcome guests after they check in.

Post-Checkout-Message

Setting

Value

Event

Guest Checked Out

Condition

Always

Action

Send Post-Checkout Snippet

Delay

3600 seconds (1 hour)

Default Status

Inactive

Purpose: Thank guests and request reviews after checkout.

Post-Booking-Key

Setting

Value

Event

Guest Booking Confirmed

Condition

Booking: Past Check-in Time

Action

Issue & Send Key

Delay

0 (immediate)

Default Status

Inactive

Purpose: Immediately issue keys for walk-in guests booked after check-in time.

Post-Cancel-Key

Setting

Value

Event

Booking Cancelled

Condition

In-Stay Guests

Action

Revoke Key

Delay

0 (immediate)

Default Status

Inactive

Purpose: Revoke access for cancelled bookings if guest was in-house.

Post-Checkout-Room

Setting

Value

Event

Guest Checked Out

Condition

Guests Departing Today

Action

Notify Cleaner on Checkout

Delay

0 (immediate)

Default Status

Inactive

Purpose: Alert housekeeping when guests check out.


Common Trigger Examples

Walk-in Key Issue

Issue keys immediately for same-day bookings:

Setting

Value

Name

Walk-in Key Issue

Event

Guest Booking Confirmed

Condition

Booking: Past Check-in Time

Action

Issue & Send Key

Delay

0

Welcome After Check-in

Send welcome message 30 minutes after check-in:

Setting

Value

Name

Welcome Message

Event

Guest Checked In

Condition

Always

Action

Send Post-Checkin Snippet

Delay

1800

Mark Room Dirty on Checkout

Update room status when guest checks out:

Setting

Value

Name

Room Dirty on Checkout

Event

Guest Checked Out

Condition

Always

Action

Set Room Vacant/Dirty

Delay

0

Revoke Key on Cancel

Remove access when booking is cancelled:

Setting

Value

Name

Cancel Key Revoke

Event

Booking Cancelled

Condition

Always

Action

Revoke Key

Delay

0

Assign Cleaner on Checkout

Assign default cleaner when guest leaves:

Setting

Value

Name

Assign Cleaner

Event

Guest Checked Out

Condition

Guests Departing Today

Action

Assign Default Cleaner

Delay

300

Issue Key After Payment

Issue key once pre-check-in payment is received:

Setting

Value

Name

Key After Payment

Event

Guest Payment Received

Condition

Guests Arriving Today

Action

Issue & Send Key

Delay

0

Confirmation After Pre-Checkin

Confirm when all pre-check-in steps complete:

Setting

Value

Name

Pre-Checkin Confirmation

Event

Guest Pre-Checkin Completed

Condition

Always

Action

Send Post-Checkin Snippet

Delay

0


Checklist on Checkout

Generate a cleaning checklist for each departing room:

Setting

Value

Name

Checkout Clean Checklist

Event

Guest Checked Out

Action

Create Checklist

Checklist

Checkout Deep Clean

Delay

None

Custom Conditions with Liquid

For advanced filtering, use custom Liquid conditions.

How Custom Conditions Work

  1. Write a Liquid template

  2. Template must return true or false

  3. Trigger fires only if template returns true

Available Variables

Access guest and stay information through the guest_stay object:

Variable

Type

Description

guest_stay.arrival_today

Boolean

Arriving today?

guest_stay.departure_today

Boolean

Departing today?

guest_stay.instay

Boolean

Currently in-house?

guest_stay.booked_past_checkin

Boolean

Booked after check-in time?

guest_stay.document_stored?

Boolean

ID document uploaded?

guest_stay.id_verified

Boolean

ID verified via Stripe?

guest_stay.payment_received

Boolean

Payment received?

guest_stay.agreement_signed

Boolean

Check-in agreement signed? (A signed credit-card authorization form does not count.)

guest_stay.fully_verified

Boolean

All verifications complete?

guest_stay.reservation_guests

String

Party size from the PMS ("2 adults, 1 child")

guest_stay.reservation_special_requests

String

Special requests from the PMS

guest_stay.reservation_fields["Label"]

By label

Any PMS reservation field, by its label

guest_stay.agreement_staff_fields["Label"]

By label

Staff-entered agreement field (live value)

guest_stay.agreement_guest_fields["Label"]

By label

Guest's answer from the signed agreement

guest_stay.nights

Integer

Number of nights

guest.guest_type

String

Guest type/tier

stay.booking_source

String

Booking channel

Example: VIP Guests Only

{% if guest.guest_type contains 'VIP' %}true{% else %}false{% endif %}

Example: Direct Bookings Only

{% if stay.booking_source == 'Direct' %}true{% else %}false{% endif %}

Example: Long Stays (7+ nights)

{% assign nights = guest_stay.nights | plus: 0 %}{% if nights >= 7 %}true{% else %}false{% endif %}

Example: Exclude OTA Guests

{% unless stay.booking_source contains 'Expedia' or stay.booking_source contains 'Booking.com' %}true{% else %}false{% endunless %}

Managing Triggers

Enabling/Disabling

  1. Find the trigger in the list

  2. Click the toggle to switch On or Off

  3. Change takes effect immediately

Editing a Trigger

  1. Click Edit on the trigger

  2. Modify settings as needed

  3. Click Update Trigger

Note: For system triggers, Event and Action cannot be changed.

Deleting a Trigger

  1. Click Delete on the trigger

  2. Confirm deletion

Note: System triggers cannot be deleted, only deactivated.

Viewing Trigger History

The "Last Run" column shows when each trigger last executed.


Delay Settings

How Delays Work

  • Delay is in seconds

  • Trigger waits before executing action

  • Delay starts when event occurs

Common Delay Values

Delay

Seconds

Use Case

Immediate

0

Key revocation, room status

5 minutes

300

Post-booking confirmation

30 minutes

1800

Post-check-in welcome

1 hour

3600

Post-checkout thank you

Why Use Delays

  • Natural Feel: Instant messages feel automated

  • Processing Time: Allow PMS data to sync

  • Staff Response: Give staff time to intervene

  • Batch Prevention: Avoid rapid-fire messages


Best Practices

Trigger Naming

Use consistent naming conventions:

  • Post-Booking-Message - After booking is created

  • Post-Checkin-Welcome - After guest checks in

  • Post-Checkout-Review - After guest leaves

  • Cancel-Key-Revoke - When booking cancelled

Delay Recommendations

Trigger Type

Recommended Delay

Key issue (walk-in)

0 (immediate)

Key revocation

0 (immediate)

Room status update

0 (immediate)

Booking confirmation

5 minutes

Welcome message

30 minutes

Checkout thank you

1 hour

Testing Triggers

  1. Keep trigger Inactive initially

  2. Create a test booking

  3. Manually activate and verify behavior

  4. Enable for production use

Avoiding Conflicts

  • Don't create duplicate triggers for same event

  • Check existing system triggers before creating new ones

  • Use conditions to prevent overlapping execution


Triggers vs Scheduled Jobs

Aspect

Triggers

Scheduled Jobs

When

On event occurrence

At specific time daily

Speed

Immediate (with optional delay)

Runs at scheduled time

Use Case

React to changes

Routine communications

Example

Send key when booked after check-in

Send reminder day before arrival

Use Triggers for:

  • Immediate responses to guest actions

  • Key management on booking/checkout

  • Room status updates on check-in/out

Use Scheduled Jobs for:

  • Pre-arrival messages (day before)

  • Mid-stay check-ins (morning of day 2)

  • Post-stay review requests (day after)

  • Date-based checklists and tasks — e.g., create a checklist every morning for each guest departing today, independent of PMS checkout events

Checklist and task creation exists on both sides: the same Create Checklist and Create Task actions are available as event-driven Triggers and as scheduled Room Jobs. If both cover the same room and template on the same day, only one copy is created.


Troubleshooting

Trigger not firing

Possible Causes:

  • Trigger is inactive (Off)

  • Condition doesn't match guest

  • Event not occurring (PMS sync issue)

Solutions:

  • Verify trigger is active

  • Check condition matches expected guests

  • Verify PMS is syncing properly

Wrong message sent

Possible Causes:

  • Wrong action selected

  • Snippet content incorrect

  • Wrong trigger activated

Solutions:

  • Verify action matches intent

  • Check snippet content

  • Review active triggers for conflicts

Delay not working

Possible Causes:

  • Delay set to 0

  • Background job queue delayed

  • Trigger deactivated during delay

Solutions:

  • Verify delay value in seconds

  • Check job queue health

  • Ensure trigger stays active

Key not issued

Possible Causes:

  • Smart lock not configured

  • Room not mapped to lock

  • Condition blocked execution

Solutions:

  • Verify smart lock integration

  • Check room has lock assigned

  • Review condition requirements

Multiple messages sent

Possible Causes:

  • Multiple triggers for same event

  • Trigger and scheduled job overlap

  • Duplicate booking events

Solutions:

  • Review all active triggers

  • Check scheduled jobs for conflicts

  • Investigate PMS for duplicate events


Related Articles