Notifications Hub (PL-T196)
At a glance
A multi-channel notifications hub for chain venues that fires booking confirmations, reminders (24 h + 2 h before), cancellations and no-show messages over email, SMS and push. Multi-language BookingNotificationTemplates per tenant with HTML+plaintext fallback, per-customer per-channel opt-out controlled in the customer portal, async dispatch with provider-failover (Postmark/SendGrid, Twilio/46elks, FCM/APNs), scheduled-job cancellation on reschedule, and outcome logging surfaced to ops for retry.
How it works
Each notifiable event (booking confirmed, reminder due 24 h before, reminder due 2 h before, cancellation confirmed, no-show recorded) is wired to one or more BookingNotificationTemplate documents per tenant. Templates carry per-channel content (email subject + HTML + plain-text fallback, SMS body, push title + body) and per-language variants — when a notification is dispatched, the engine picks the language from the customer profile or falls back to tenant default. Dispatch is async via a job queue that respects per-channel opt-out preferences set in the customer portal: a customer who opts out of SMS reminders still gets email, and vice versa.
Reminder events are scheduled when a booking is created/confirmed; if the booking is rescheduled or cancelled, the scheduled jobs are cancelled or replaced. Delivery uses tenant-configured providers (Postmark / SendGrid for email, Twilio / 46elks for SMS, FCM / APNs for push). Failed deliveries log to an outcome record and surface to ops for retry.
No-show notifications double as a feedback nudge — "sorry we missed you, anything we should know?" — opening a recovery loop that the marketing automation engine in F22.18 can pick up. Every send is recorded so the analytics dashboard can show send volume per channel and conversion-from-reminder.
Key capabilities
- Booking confirmation across email + SMS + push
- Reminders at 24 h and 2 h before start
- Cancellation confirmation
- No-show notification with feedback-nudge
- Multi-language templates (per tenant)
- Per-channel opt-out controlled by customer portal
- Async dispatch with provider-failover and outcome logging
In practice
A customer books Saturday 19:00 via the CMS. Within seconds an email confirmation lands with the booking summary, ICS attachment, and a one-tap cancel link. They've opted out of marketing SMS but kept transactional SMS, so 24 h before the slot they get an SMS reminder in Swedish (their profile language) — "Imorgon 19:00 — 2 banor på Pétanque Bar Malmö.
Avboka senast 17:00 utan kostnad.". Two hours before, a push notification on their phone re-surfaces the reservation. They show up, get checked in, the no-show job sees an in-progress check-in and skips firing.
If they hadn't shown up, the no-show notification would have asked for a quick reason and triggered the marketing automation post-detractor recovery loop.
Features in this subsystem
6| ID | Status | Features |
|---|---|---|
| F22.14.01 | Shipped | Booking confirmation (mail + SMS + push) ✅ |
| F22.14.02 | Shipped | Reminder (24 h + 2 h before) ✅ |
| F22.14.03 | Shipped | Cancellation confirmation ✅ |
| F22.14.04 | Shipped | No-show notification ✅ |
| F22.14.05 | Shipped | Multi-language templates ✅ |
| F22.14.06 | Shipped | Per-channel opt-out in customer portal ✅ |