Notifications & Real-Time Alerts
Multi-channel notification engine — email, in-app, and real-time WebSocket — triggered automatically by 24 platform events across 5 domains. Every notification respects user preferences and tenant branding.
Three channels, one engine
Platform events trigger notifications across email, in-app, and WebSocket simultaneously. User preferences control which channels deliver each event type.
Via Resend API with branded HTML templates
Order confirmations, invoices, credentials delivery
Stored in database, displayed in dashboard
Unread badges, notification history, real-time feed
Real-time push via Socket.io
Live provisioning updates, instant alerts, admin dashboard
24 events, 5 domains
Every significant platform action triggers targeted notifications. Customer and admin receive different channels — customers get confirmations, admins get operational alerts.
order.createdorder.fulfilledorder.failedorder.cancelledorder.service-deliveredprovisioning.startedprovisioning.step-completedprovisioning.completedprovisioning.failedprovisioning.rolled-backprovisioning.service-suspendedbilling.invoice-generatedbilling.payment-receivedbilling.subscription-past-duebilling.refund-completedbilling.subscription-cancelledsupport.ticket-createdsupport.comment-addedsupport.ticket-resolvedsupport.ticket-assignedsupport.ticket-closedidentity.user-created18 Handlebars templates
Professional HTML email templates with full customization. Handlebars syntax for conditionals, loops, and variable interpolation. Live preview, test sending, versioning, and in-memory caching with auto-clear on update.
The most important notification — when infrastructure is ready:
Per-tenant email customization injected into every template as Handlebars variables. One configuration covers all 18 templates — update once, every email reflects the change.
Admins receive separate notifications for new orders with item breakdown, provisioning progress (start, step completion, failures), and rollback events with affected resource lists.
WebSocket gateway & user control
Resilient by design
Circuit Breaker
5 failures open the circuit for 60 seconds — prevents cascading email API failures
Bulkhead
Max 5 concurrent email sends, 20 queued — isolates notification load from platform
Kafka Retry
Exponential backoff on processing failures — no events lost, guaranteed delivery
Delivery Tracking
Every notification records Pending → Sent → Delivered → Failed with timestamps
Never miss a platform event
Multi-channel notifications with white-label branding, user preferences, and real-time WebSocket delivery — fully automated.
Common Questions
Yes. Every user controls which notifications they receive per event type with per-channel granularity. Disable email for billing events but keep in-app, or vice versa. Defaults are all-enabled, and preferences auto-create on first access.
One branding configuration covers all 18 email templates. Logo, colors, company name, and footer text are injected as Handlebars variables. Update branding once and every outbound email reflects the change immediately.
The circuit breaker opens after 5 consecutive failures, pausing email sends for 60 seconds. Meanwhile, in-app notifications and WebSocket events continue unaffected. Failed emails are retried via Kafka consumer with exponential backoff.
Each tab connects independently and joins the same user room. All connected tabs receive updates simultaneously. Unread counts sync across sessions in real-time. On disconnect, the connection is cleaned up automatically.
Engineering culture
Short reads that sharpen your engineering instincts and help you stay ahead of the curve.