Room & Cleaning Automations
Automate room status changes and cleaning assignments in HelloShift. There are two types of automations:
Triggers - React to guest events (checkout, check-in, cancellation)
Room Jobs - Run on a schedule to create cleaning tasks automatically
Overview
Type | Purpose | Access |
Triggers | React to events (checkout → dirty) | Automations > Triggers |
Room Jobs | Schedule-based task creation | Automations > Scheduled Jobs |
Part 1: Room Jobs (Scheduled Automations)
Room Jobs automatically create cleaning tasks based on schedules and guest stay patterns. They run daily at a configured time and apply to rooms matching specific conditions.
Accessing Room Jobs
Go to Automations > Scheduled Jobs > Room
Click the Room Jobs tab
You'll see a list of available room automations

Default Room Jobs
HelloShift creates these room jobs when you set up your site:
Daily Clean
Condition: Mid-stay guests (guests currently in-house, not arriving or departing)
Schedule: Daily at 6:00 AM
Action: Create "Clean" task
Purpose: Ensures stayover rooms get daily cleaning tasks
Departure Clean
Condition: Guests departing today
Schedule: Daily at 6:00 AM
Action: Create "Clean" task
Purpose: Creates checkout cleaning tasks for departing guests
Day 3 Clean (Every 3 Days)
Condition: Mid-stay guests on day 3, 6, 9, etc. of their stay
Schedule: Daily at 6:00 AM
Action: Clean on match, Light Clean otherwise
Purpose: Reduces daily cleaning for long-stay guests while ensuring periodic full cleans
Schedule-Based Clean
Condition: Rooms with custom schedules configured
Schedule: Daily at 6:00 AM
Action: Create "Clean" task only if room's schedule matches today
Purpose: Respects individual room cleaning schedules (e.g., "clean Mondays and Thursdays")
Import Room Data
Condition: All rooms
Schedule: Daily at 6:00 AM
Action: Pull room status from PMS
Purpose: Syncs room occupancy and status from your Property Management System
Room Job Settings
Each room job has these configurable options:
Setting | Description |
Name | Job identifier (e.g., "Daily Clean", "Departure Clean") |
Condition | Which stays/rooms to target (mid-stay, departing, all rooms) |
Send Time | Time of day when the job runs |
Schedule | Recurrence pattern (daily, weekly, specific days) |
Check | Additional condition to evaluate (Always, Every 3 Days, Custom) |
Action | What task to create (Clean, Light Clean, Default Task) |
Status | Active or Inactive |
Available Checks
Check | Description |
Always | No additional condition - always execute |
Stayover (every 3 days) | Only on day 3, 6, 9, etc. of guest stay |
Custom Condition (Liquid) | Write your own logic |
Custom Check Example
For properties with VIP-specific cleaning schedules:
{% if guest_stay.guest_type contains 'VIP' %}true{% else %}false{% endif %}
Available Actions
Action | Description |
Clean | Creates a standard "Clean" task |
Default Cleaning Task | Uses the room's configured default task type |
Condition True: Clean, False: Light Clean | Creates "Clean" when check passes, "Light Clean" otherwise |
Import Room Data | Pulls room status from PMS |
Enabling/Disabling Room Jobs
Go to Automations > Scheduled Jobs > Rooms
Find the job in the list
Click Edit
Change Status to Active or Inactive
Click Save
Note: Jobs are created as Inactive by default. You must enable them to start generating tasks.
Part 2: Triggers (Event-Based Automations)
Triggers respond to guest lifecycle events and execute actions immediately or after a delay.
Accessing Triggers
Go to Automations > Triggers
You'll see a list of existing triggers
Click New Trigger to create an automation

Default Triggers
HelloShift creates these system triggers when you set up your site:
Post-Checkout Room Update
Event: Guest Checked Out
Action: Set Room Vacant/Dirty
Purpose: Automatically marks room as dirty when guest departs
Post-Booking Room Assignment
Event: Guest Booking Confirmed
Action: Set Default Cleaning Task
Purpose: Pre-assign cleaning task based on room's default
Post-Cancel Room Update
Event: Booking Cancelled
Action: Remove room assignment if applicable
Creating a Trigger
Step 1: Choose the Event
Select when the automation should trigger:
Event | When It Fires |
Guest Booking Confirmed | New reservation synced from PMS |
Guest Checked In | Guest checks in at front desk |
Guest Checked Out | Guest checks out |
Booking Cancelled | Reservation cancelled |
Guest Room Changed | Room number changed on reservation |
Step 2: Set a Condition (Optional)
Add conditions to limit when the automation runs:
Condition | Description |
Always | No condition, always execute |
Guests Arriving Today | Only for same-day arrivals |
Guests Departing Today | Only for same-day departures |
In-Stay Guests | Only for current in-house guests |
Custom | Write your own Liquid template |
Step 3: Choose the Action
Select what happens when the trigger fires:
Action | Description |
Set Room Occupied/Clean | Changes room to Occupied status, Clean condition |
Set Room Vacant/Dirty | Changes room to Vacant status, Dirty condition |
Set Cleaning Task: Clean | Sets cleaning task to "Clean" |
Set Default Cleaning Task | Uses room's configured default task |
Remove Cleaning Task | Clears any cleaning task assignment |
Assign Default Cleaner | Assigns room's default cleaner |
Notify Cleaner on Checkout | Sends notification to assigned cleaner |
Step 4: Set Delay (Optional)
Add a delay before the action executes:
0 seconds (default) = Immediate
300 seconds = 5 minutes after event
3600 seconds = 1 hour after event
Delays are useful for:
Giving front desk time to complete checkout
Allowing for late checkouts
Staggering cleaner notifications

Common Automation Scenarios
Scenario 1: Auto-Mark Dirty on Checkout
Goal: When guest checks out, automatically mark room dirty
Setup:
Event: Guest Checked Out
Condition: Always
Action: Set Room Vacant/Dirty
Delay: 0 (immediate)
Scenario 2: Assign Cleaner on Checkout
Goal: When guest checks out, assign the room's default cleaner
Setup:
Event: Guest Checked Out
Condition: Guests Departing Today
Action: Assign Default Cleaner
Delay: 300 (5 minutes)
Scenario 3: Set Checkout Task for Departures
Goal: Set cleaning task to "Checkout" for departing guests
Setup:
Event: Guest Checked Out
Condition: Always
Action: Set Cleaning Task: Clean
Delay: 0
Note: Create a custom action for "Checkout" task type if needed.
Scenario 4: Notify Housekeeping Lead
Goal: Alert housekeeping supervisor when VIP checks out
Setup:
Event: Guest Checked Out
Condition: Custom (check for VIP tag)
Action: Notify Cleaner on Checkout
Delay: 0
Custom Conditions
For advanced scenarios, write custom Liquid templates that return "true" or "false".
Available Variables
Variable | Description |
| True if arriving today |
| True if departing today |
| True if currently in-house |
| Room numbers |
| Guest satisfaction score |
Example: VIP Guests Only
{% if guest_stay.guest_type contains 'VIP' %}true{% else %}false{% endif %}
Example: Long Stays
{% assign nights = guest_stay.nights | plus: 0 %}
{% if nights > 7 %}true{% else %}false{% endif %}
Managing Automations
Enabling/Disabling
Go to Admin > Settings > Automations
Find the trigger in the list
Click the status toggle to enable or disable
Disabled triggers remain configured but don't execute.
Editing a Trigger
Click Edit next to the trigger
Modify delay or condition as needed
Note: Event and Action cannot be changed after creation
Click Update Trigger
Deleting a Trigger
Click Delete next to the trigger
Confirm deletion
System triggers (Post-Checkout-Room, etc.) cannot be deleted
Integration with PMS
Automations work with your PMS integration:
From PMS to HelloShift
PMS sends checkout event
HelloShift marks guest as checked out
Checkout automation triggers
Room condition updates to Dirty
From HelloShift to PMS
When enabled in Cleaning settings:
Cleaner marks room Clean
HelloShift syncs status to PMS
Front desk sees updated room status
Automation Flow Example
Here's how automations work together for a typical checkout:
Guest checks out at front desk (PMS event)
PMS syncs checkout status to HelloShift
Post-Checkout automation fires:
Sets room to Vacant/Dirty
Assigns default cleaner
Cleaner receives notification on mobile
Cleaner starts room and timer begins
Cleaner completes room
Room status syncs back to PMS (if enabled)
Best Practices
Keep It Simple
Start with essential automations (checkout → dirty)
Add complexity gradually as needed
Test each automation before enabling others
Use Delays Wisely
Immediate (0) for status changes
Short delay (5-10 min) for notifications
Longer delay if allowing for late checkouts
Monitor and Adjust
Check that automations fire as expected
Review room status after checkouts
Adjust conditions if too many false positives
Combine with Manual Oversight
Automations handle the common case
Staff can always override manually
Use automations to speed up, not replace judgment
Troubleshooting
Automation not firing
Verify the trigger is enabled (active status)
Check that the event matches (Guest Checked Out vs. Guest Checked In)
Confirm PMS integration is working
Review condition - it may be blocking execution
Room status not changing
Check if another automation might be overriding
Verify room exists and is active
Look for delays that haven't elapsed yet
Wrong cleaner assigned
Check room's default cleaner setting
Verify cleaner is active in Housekeeping department
Review if cleaner was changed manually after automation
Notifications not received
Verify cleaner has notifications enabled
Check mobile device push notification settings
Ensure cleaner is assigned to the room
Choosing Between Room Jobs and Triggers
Scenario | Use Room Jobs | Use Triggers |
Create daily stayover cleaning tasks | ✓ Daily Clean job | |
Mark room dirty when guest checks out | ✓ Post-Checkout trigger | |
Create checkout tasks for departing guests | ✓ Departure Clean job | |
Assign default cleaner on checkout | ✓ Checkout trigger with Assign action | |
Every-3-day cleaning for long stays | ✓ Day3 Clean job | |
Set room condition based on PMS event | ✓ Check-in/Check-out triggers | |
Pull room data from PMS daily | ✓ Import Room Data job |
Key Differences
Aspect | Room Jobs | Triggers |
Timing | Scheduled (runs at specific time) | Event-driven (runs when event occurs) |
Creates Tasks | Yes - primary purpose | No - changes room status |
Delay Option | No (runs at scheduled time) | Yes (0 to hours after event) |
Liquid Conditions | Yes (custom checks) | Yes (custom conditions) |
Best Practice: Combine Both
For comprehensive automation:
Enable Triggers for immediate room status changes (checkout → dirty)
Enable Room Jobs for scheduled task creation (daily at 6 AM)
Use Credits to balance workload when tasks are created
Review Assignments before cleaners start their shift
Related Articles
Room Assignment System - Manual and auto assignment options
All About Housekeeping - Complete housekeeping overview
Housekeeping Credit System - Credit-based workload balancing