Triggers

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

Delay Support

Optional delay before action executes

System Triggers

Pre-configured defaults for common workflows

Requirements

Before setting up, ensure your HelloShift subscription includes:

  • Contactless Checkin plan (for all triggers)

  • Housekeeping Management 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

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


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


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

Agreement signed?

guest_stay.fully_verified

Boolean

All verifications complete?

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)


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