Notification Workflow Help
Overview
Notification Workflows let your facility manage automated notifications tied to reservations, for both guests and facility owners. Settings like "send a reminder 24 hours before check-in" or "notify the owner when a reservation needs approval" are expressed as a combination of an anchor event (when it happens), an offset (how many minutes/hours before or after), and a channel (how it's delivered).
Open it from the sidebar via "🔔 Notification Workflows" (/notifications).
The 4 tabs
| Tab | Description |
|---|---|
| Workflows | List of notifications, ON/OFF toggle, edit, add custom notifications |
| Messages | Create, edit and delete named notification content (subject, email body, SMS text, voice script) |
| History | Delivery status (pending / dispatching / sent / failed / cancelled) for the past 7 days through the next 1 day, plus monthly metered totals |
| Channels | Connection-status cards for LINE / Email / SMS / Voice / Speaker with links to each channel's settings |
Workflows tab
Guest / admin tabs and ordering
At the top of the list, switch between "For guests" and "For admins" (guests is the default). Each tab shows a count. The selected tab is kept in the URL (?audience=), so reloading opens the same tab.
Within a tab, workflows are ordered by when they fire: new reservation → approval pending → payment completed → reservation start → check-in → reservation end → check-out → extension, cancellation, payment failed. Workflows on the same anchor go from "before" to "after".
You can change the order by hand. On a computer, drag the handle at the left of a row; on a phone, use the ↑ / ↓ buttons on the right of a row. The order is saved and stays the same the next time you open the page. Rows move only within their tab — you cannot move a workflow between the guest and admin tabs. Workflows you create later appear after the rows you have ordered (at the end). After ordering by hand, press Sort by firing order to put that tab back in firing order and save it.
Enable or disable a workflow with the ON/OFF toggle in the list. The edit modal has no enable option. A newly created workflow is saved disabled, so link a message first and then turn it ON in the list.
Standard (canonical) workflows
Every facility starts with these seeded as disabled (enabled=false). Each facility owner turns them on individually. Standard workflows cannot be deleted, but their anchor, offset, and channel can be edited (the workflow key itself is read-only).
Guest-facing (4 workflows)
| Workflow | When | Purpose |
|---|---|---|
| Pre-reservation reminder | 24 hours before check-in | Reminds the guest of the upcoming stay |
| Check-in guide | 10 minutes before check-in | Explains how to check in |
| Cleanup request | 5 minutes before check-out | Asks the guest to tidy up before leaving |
| Post-reservation thanks | At check-out | Thank-you message |
Facility-owner-facing (6 workflows, details below)
- New reservation created
- Reservation awaiting approval
- Approval still pending after 12 hours (reminder)
- Payment completed
- Reservation cancelled
- Reservation extended
Recipient (how to route a notification to the owner)
The recipient is set by the list tab. Pressing "+ New workflow" on the "For admins" tab sends that workflow to the facility's owner instead of the guest; creating it on the "For guests" tab sends it to the guest.
The edit modal shows the recipient but does not let you change it. The 6 standard facility-owner workflows are always locked to "Facility Owner."
Who actually receives it (recipient resolution)
Owner-audience notifications fan out to everyone resolved in this order:
- All Facility Owners for that facility
- If there are no Facility Owners, all Organization Owners for the parent organization
- If neither exists, the delivery is recorded as a failure (visible on the History tab)
The legacy per-facility "manager" assignment (facility_manager_id) is not used. Recipients are resolved with the same role model used for login permissions.
Channel (email or LINE for facility owners)
Facility-owner workflows can use the following channels. SMS and voice are not offered, because no owner phone number is stored.
| Channel | Delivered to |
|---|---|
| Auto / Email | Every owner email address resolved as described above |
| LINE | The one account registered as "Administrator's LINE user ID" in LINE Connection, in the chat with the facility's LINE Official Account |
For facility owners, "Auto" means email (unlike guest workflows, it never routes to LINE). To receive a notification on LINE, set its channel to "LINE". A workflow has one channel, so to receive both email and LINE, create a second workflow with the same anchor.
If a workflow is set to LINE but no administrator LINE user ID is registered, the send fails and the notification history shows "Admin LINE user ID not set" (it does not fall back to email).
Event anchors
Guest-facing workflows fire relative to a time (e.g., "N minutes before check-in"). Facility-owner workflows instead fire relative to something that happened to the reservation.
| Anchor | Fires when |
|---|---|
| New reservation | The reservation is created |
| Approval pending | An approval-required reservation enters the pending-approval state |
| Payment completed | The guest pays and the reservation is confirmed (see note below) |
| Cancellation | The reservation is cancelled |
| Extension | The reservation's end time is pushed later |
| Payment failed | A card payment fails — for a reservation, and also for a walk-in check-in that has no reservation |
The standard "Payment failed" workflow (Payment failed (admin)) starts disabled. Enable it where you need it. Facilities that used the LINE settings toggle "Notify admin on payment failure" have it enabled on LINE already. A failed reservation payment also cancels the reservation, so the "Cancellation" notice fires too.
"Payment completed" only fires for reservations that were actually paid. It does not fire for reservations confirmed without payment — manual confirmation, free plans, membership plans, and similar cases are excluded. Pay-at-check-in (postpaid) reservations are also out of scope for this notification: at the moment the reservation becomes confirmed it is still unpaid, so this event never fires for them.
Auto-cancel for the approval reminder
The "approval still pending after 12 hours" reminder is scheduled to arrive 12 hours after a reservation enters approval-pending status. If the owner approves or declines it before then, the reminder is automatically cancelled — no unnecessary follow-up email is sent.
Workflow name
The list, the edit modal and the History tab all show the workflow name. Standard workflows come with a name already set, and you can rename them to match how your facility talks about them (for example "Check-in guide" → "Entry instructions").
The internal identifier is never shown. It is assigned automatically when a workflow is created and never changes.
Custom workflows
Beyond the standard set, you can add facility-specific notifications. You can freely choose the name, anchor event, offset, channel and message (the recipient comes from the tab you created it on). Custom workflows can also be deleted from the list (deleting one keeps its delivery history).
Linking a message
The Message dropdown in the edit modal picks the content this workflow sends. It lists only this workflow's current message and messages that no workflow uses (by name only). Messages used by another workflow are not listed.
Press New next to it to switch to the message editor in place (modals are not stacked). The message name starts as the workflow name. Saving takes you back to the workflow editor with the new message selected. When a message is selected, Edit lets you change its content. Pressing "Cancel" in the message editor returns you to the workflow editor with your input intact.
The link is made when you save the workflow. If you save a message and then cancel the workflow editor, the message stays on the Messages tab, unassigned.
A workflow with no message cannot be enabled. Enabling one without content would mark notifications as sent while the recipient receives nothing.
Messages tab
Messages are listed as cards. Each card shows the message name, the workflow it is linked to (or "Unassigned"), an excerpt of the subject, and which languages have content. The pencil icon edits it and the no-entry icon deletes it.
Use + New message to create one. The edit modal has:
| Field | Description |
|---|---|
| Message name | The name shown in the list and in the workflow dropdown (required) |
| Workflow | The workflow to link it to. You can also save it as "Unassigned" and link it later |
| Subject / Body / SMS text / Voice script | Per-channel content, entered per language (Japanese / English) |
The preview shows the content with sample variables expanded.
Each card shows the linked workflow's name and its channel (email, speaker, and so on). The options in the Workflow dropdown also carry the channel, for example "Check-in guide (Speaker)".
Speaker audio can only be generated for a message linked to a workflow whose channel is "Speaker". The generate button appears below the voice script field. It is not shown for messages linked to other channels (such as email) or for unassigned messages.
One message, one workflow
Messages and workflows are linked one-to-one. You can set the link from either screen:
- the Message dropdown in the workflow edit modal (unused messages only)
- the Workflow dropdown in the message edit modal
To move a message that another workflow uses, open it from the Messages tab and change its Workflow field. Moving a message that already belongs to another workflow opens a confirmation modal. If you continue, the original workflow is left with no message and is disabled automatically — no enabled workflow is ever left without content.
Deleting a message does the same thing: the workflow it was linked to ends up unassigned and disabled.
Available variables
Press a variable button in the message editor (for example "+ Guest name") to insert it at the cursor in the field you were last typing in (subject, body or SMS text). If you have not typed in any field, it goes at the end of the body. Voice scripts are read out as written without expanding variables, so the buttons are disabled while you are in the voice script field.
| Button | Variable | Content |
|---|---|---|
| Guest name | {{guest_name}} |
The guest's name |
| Facility name | {{facility_name}} |
Facility name |
| Room name | {{room_name}} |
Room name |
| Plan name | {{plan_name}} |
The reservation's plan name |
| Start time | {{start_time}} |
Reservation start time (formatted in the facility's timezone) |
| End time | {{end_time}} |
Reservation end time (formatted in the facility's timezone) |
| Check-in date & time | {{checkin_datetime}} |
When the guest actually checked in (the reservation start if not yet checked in) |
| Key link (auto) | {{key_url}} |
Link that shows the key; picks the booking details or the check-in screen automatically |
| Booking details link | {{booking_url}} |
The reservation's page on the booking site |
| Check-in link | {{checkin_url}} |
Direct link to the check-in screen |
| Approval link | {{approval_url}} |
Link to the approval screen (only used in approval-related owner notifications) |
{{approval_url}} only appears in the two standard "Reservation awaiting approval" and "Approval reminder" notifications. There's no need to include it in guest-facing workflows or other owner workflows.
History tab
Shows delivery status for the past 7 days through the next 1 day: status (pending / dispatching / sent / failed / cancelled), scheduled time, workflow name, channel, attempt count, and cost. Failed rows show an error code with a hint. The current month's metered usage total (SMS sent, speaker plays, etc.) is summarized at the top.
Channels tab
The channels are shown as cards, each linking to its own settings page.
| Channel | Settings page | Cost |
|---|---|---|
| LINE | LINE connection settings | Free |
| Basic settings (confirm sender address) | Free | |
| SMS | Twilio integration settings | ¥25/segment (billed directly to the customer under a BYO contract) |
| Voice | Twilio integration settings | ¥60/minute (BYO contract available) |
| Speaker | Speaker channel management (device registration) | ¥3/play |
| Webhook | Webhook Notification Channel | Free |
When a speaker plays is configured on the Workflows tab of this page, and what it plays (the script text and audio generation) on the Messages tab. The speaker channel management screen (
/notifications/channels/speaker) only covers device registration.
Unlike LINE, Email, SMS, Voice, and Speaker, Webhook doesn't notify a person — it feeds events into an external system. See Webhook Notification Channel for details.
Delivery failures are no longer silent
In 2026-08, key delivery failed for several days without anyone noticing. The cause was that several safety nets shared the same delivery path and all failed quietly together. Based on that experience, we added mechanisms that surface delivery failures to the facility early.
The facility is notified on the first failure, not after repeated retries
Previously, a notification to the facility was only sent after the guest had tried resending several times. In practice, most guests gave up after a single failed attempt, so the notification was often never sent and the failure went unnoticed. Now, on the very first delivery failure, an email reaches the facility owner and staff using the same resolution order described above (Facility Owner → Organization Owner). The same failure is never reported twice.
This applies not only to the notification workflows on this page (reservation reminders, etc.) but also to one-off sends that don't go through a workflow, such as the SMS delivery of a buyback unlock key or a phone-number verification code. Previously these one-off sends left no record at all when they failed. Every send attempt — success or failure — is now recorded internally (this is not shown on the History tab of this page).
Key issuance failures now come with a clear reason
When key issuance fails at check-in, the message shown to the guest or member now varies by cause, since the right next step depends on the cause.
| Message shown to the guest/member | Cause | What to do |
|---|---|---|
| The key could not be issued because of the facility's settings. Please contact the facility. | The KEYVOX door is not linked to a lock (the unit's lock assignment is missing) | Retrying will not fix this. Contact the facility |
| The key could not be issued because of the facility's settings. Please contact the facility. | The facility's KEYVOX integration has been disconnected | Retrying will not fix this. Contact the facility |
| The key could not be issued. Please wait a moment and try again. If the problem continues, please contact the facility. | Possible temporary connectivity issue | Wait a moment and retry |
If a member reports either of the top two messages (caused by facility settings), the facility owner should check the following:
- "Door not linked to a lock": In Base Settings, go to the "Rooms & Locks" tab → "Lock Assignment" and confirm the correct KEYVOX lock is assigned to the unit
- "KEYVOX integration disconnected": On the Lock Connection page, reconnect via "Login with KEYVOX"
Detecting facilities where key issuance is failing persistently
In addition to the per-check-in error message above, the platform also detects when key issuance is failing repeatedly for a given facility. If persistent failure is detected, the facility will be contacted.
FAQ
Q: Where did the "admin notification settings" on the LINE connection page go (the check-in / check-out / payment-failure toggles)?
A: They were merged into Notification Workflows. The same notices are the facility-owner workflows "Check-in", "Check-out" and "Payment failed". To receive them on LINE, set the workflow's channel to "LINE"; they go to the "Administrator's LINE user ID" on the LINE Connection page.
The old toggles did not notify when a member checked in a second or later time on the same day. The workflow's check-in notice fires for every check-in.
Q: Can I change the recipient of a standard facility-owner workflow to "Guest"?
A: No. For standard (canonical) workflows, the recipient/anchor combination is part of the workflow's definition and is locked. If you want a similar guest-facing notification, create a new custom workflow instead.
Q: What happens if a facility has no owner at all?
A: If there is neither a Facility Owner nor an Organization Owner, delivery fails and is recorded as a failure on the History tab. Contact support to have an owner assigned first.
Q: Is there any way to stop the approval reminder besides disabling the workflow?
A: Approving or declining the reservation automatically cancels the pending reminder — no manual action needed. To stop future reminders for all reservations, toggle the workflow OFF in the workflow list.
Q: Where do I configure the Webhook channel?
A: Register the endpoint (destination URL and signing secret) from the Webhook card on the Channels tab. Which event triggers a send is configured on the Workflows tab by setting a workflow's channel to "Webhook." See Webhook Notification Channel for details.
Q: Where do I set the time for a speaker announcement?
A: On the Workflows tab of this page. Choose "+ New workflow", set the channel to "Speaker", then pick the target device. The script text and audio generation happen in the voice script field of the message linked to this workflow. Open it in place with "New" or "Edit" next to the message field in the workflow editor (or from the Messages tab). Audio generated from the workflow editor is linked when you save the workflow. The speaker channel management screen (/notifications/channels/speaker) covers only device registration.
Q: If a reservation is cancelled, will the scheduled announcement still play?
A: No. Cancelling a reservation automatically cancels any undelivered speaker notifications tied to it. The one exception is cancelling within the very short window right after dispatch — audio that already reached the speaker itself may still play once.
Q: A notification channel (SMS, Voice, etc.) suddenly stopped working. Why?
A: The LINE, Email, SMS, and Voice channels can each be turned on or off per organization via a feature flag. Every send addressed to a disabled channel fails. In 2026-08 a configuration change temporarily stopped SMS delivery this way; it has since been restored. The platform now also automatically detects this "sending is blocked by configuration" state. If you notice unexplained delivery stoppages, contact support to be safe.
Q: A member reported "Facility settings prevented key issuance"
A: Check the table in the "Delivery failures are no longer silent" section above. The cause is either a missing KEYVOX lock assignment or a disconnected KEYVOX integration. Retrying will not resolve it for the member, so the facility needs to check its configuration.