What it handles
Infrastructure built for real products, not a demo.
Provider complexity, credentials, retries and audit history stay here. Each product
keeps a single contract and clear ownership of the events it cares about.
01 / Auth
Signed application access
Each product gets its own request and event secrets. Requests are timestamped,
signed over the raw body, and replay-protected by a persisted single-use nonce.
- HMAC-SHA256 over a canonical string
- hash_equals comparison
- 120 requests/min per application
02 / Messaging
WhatsApp orchestration
A provider-neutral contract routes traffic through the Meta Cloud API, with a
second provider kept behind a hard-disabled flag so a stale column can never
silently reroute production traffic.
- Templates and free-form text
- Customer-service window enforced
- Inbound product routing
03 / Billing
Centralised Stripe billing
Checkout sessions, portal sessions, customer mapping and the full Stripe webhook
lifecycle are coordinated once, then fanned out to whichever product owns the
customer.
- Redirect host allow-listing
- Signed webhook verification
- Per-product billing callbacks
04 / Events
Reliable event delivery
Status changes become durable event rows with stable IDs before anything is sent.
Delivery is queued, signed, retried on transient failures, and recorded either way.
- Stable ULID event IDs
- Retry only on 5xx and 429
- Attempt count and last error stored
05 / Privacy
Protected data boundaries
Phone numbers, display names and message bodies are encrypted at rest. Lookups run
against deterministic SHA-256 hashes, so no plaintext identifier is ever indexed.
- Authenticated encryption casts
- Hash-based contact lookup
- Logs carry IDs, never content
06 / Operations
Observable by design
Queues, exceptions, slow requests and failed deliveries surface in one secured
console. It is deliberately read-only — every mutation is an audited console
command instead.
- MFA-required operations panel
- Laravel Pulse metrics
- Readiness probe for dependencies