Why This Matters
Notifications are the handoff between the website, the guest, and the operations team. Guests need proof of payment, a reservation reference, event details, and support contact details. Staff need enough visibility to repair failures without blocking payment settlement.This page describes the implemented Hono notification behavior. Transactional email is sent through Cloudflare Email Sending only.
Guest Emails
These are the emails a guest or customer can receive from the system.| When it is sent | Recipient | What it contains | |
|---|---|---|---|
| Reservation confirmation | Automatically after a reservation payment is settled as paid | Reservation customer email | Guest name, reservation reference, show name, event date and time, guest count, booked items, total amount, QR code, calendar link, maps link, WhatsApp, and support email |
| Payment receipt | Automatically after the same paid reservation settlement | Reservation customer email | Guest name, reservation reference, show name, event date and time, guest count, amount paid, payment method, transaction id, calendar link, maps link, WhatsApp, and support email |
| Day-before reminder | Cron-driven reminder for upcoming paid reservations | Reservation customer email | Reservation reference, show details, venue address, guest count, pre-ordered visible items, calendar link, maps link, WhatsApp, and support email |
| Show cancellation | When staff cancel a showEvent and choose to notify affected guests | Affected reservation customer emails | Guest name, reservation reference, cancelled show details, guest count, cancellation reason, and support context |
| Waitlist signup confirmation | When a guest joins a waitlist and confirmation email is enabled | Waitlist guest email | Guest name, waitlist/inquiry reference, and confirmation that the request was received |
| Waitlist availability notification | When seats are freed and the waitlist notification flow runs | Waitlist guest email | Show details, requested guest count, available seats, booking link, and offer expiry deadline |
| Inquiry confirmation | When a contact, private event, venue rental, workshop, artist proposal, host-an-event, or waitlist inquiry is submitted and submission notifications are enabled | Inquiry submitter email | Guest name, inquiry type, inquiry reference, and confirmation that the team received the request |
| Inquiry reply | When staff send a reply from the inquiry follow-up flow | Inquiry submitter email | Staff-composed reply content, inquiry context, and sender information |
| Inquiry follow-up | When staff add a follow-up and choose the standard guest email without custom reply content | Inquiry submitter email | Follow-up note, inquiry context, and sender information |
Paid Booking Email Flow
After OnePay reports a successful reservation payment, Hono marks the reservation as paid and dispatches post-payment notifications.Confirmation email is sent
Hono renders and sends
RESERVATION_CONFIRMATION through the shared email delivery service.Receipt email is sent
Hono renders and sends
PAYMENT_RECEIPT through the same Cloudflare-backed delivery path.PENDING or SENT rows and can retry rows that are already FAILED.
Staff And Developer Alerts
Guests do not receive staff alert messages. These are internal notifications created when the system needs operator or developer attention.| Alert | When it is created | Where it goes |
|---|---|---|
| Post-payment reservation confirmation email failed | A paid reservation cannot send the confirmation email | High-priority dashboard notification and configured developer channels |
| Post-payment payment receipt email failed | A paid reservation cannot send the payment receipt email | High-priority dashboard notification and configured developer channels |
| Post-payment notification pipeline failed | The post-payment notification job crashes before completing guest notifications | High-priority dashboard notification and configured developer channels |
DEVELOPER_ALERT_NTFY_URL is configured. Telegram is active only when both DEVELOPER_ALERT_TELEGRAM_BOT_TOKEN and DEVELOPER_ALERT_TELEGRAM_CHAT_ID are configured.
Delivery Source Of Truth
All transactional guest email goes through the same Hono delivery service.apps/hono/src/infra/email/cloudflare-email-sending.ts, and it is the only place that should call env.EMAIL.send(...) directly.
When investigating a guest who says they did not receive an email:
- Find the reservation reference or inquiry reference.
- Check
hol_email_messagesfor the expectedmessage_kind. - If the row is
SENT, usedelivery_message_idand Cloudflare delivery logs. - If the row is
FAILED, inspecterror_message. - For paid bookings, also check
hol_notification_messagesand the configured Telegram or ntfy channel.
