What can I do with Orqestra?
This page answers common "can Orqestra do X?" questions, organized by what you're trying to accomplish.
Send notifications from my application
Send a welcome email when a user signs up
Fire a user.signed_up event from your sign-up handler. Orqestra finds your Welcome Email template, fills in the user's name and email from the payload, and dispatches it through your configured email provider.
Alert your team via SMS when a payment fails
Fire a payment.failed event. Your SMS template renders a brief summary and Orqestra delivers it via Twilio (or Africa's Talking) to the phone number in the payload.
Show a real-time notification in your web app
Fire any event with a Push channel template. Orqestra delivers the notification over WebSocket to the user's browser within milliseconds. No polling, no Firebase setup — just a Centrifugo subscription in your frontend.
Trigger notifications on multiple channels at once
Create templates for the same event type on multiple channels (e.g. order.confirmed on both EMAIL and SMS). Orqestra dispatches to all matching active templates simultaneously.
Technical detail: how multi-channel dispatch works
When the Worker processes a tenant.event.received message, it queries all active templates matching (tenant_id, event_type). It creates a notification_logs entry for each template and emits a separate notification.dispatch message for each channel. The Gateway processes each dispatch independently.
Manage multiple teams or services
One Orqestra instance for multiple teams
Each team gets a separate tenant: their own API key, their own provider credentials, their own templates. No cross-contamination. Team A can't see Team B's logs or templates.
Each team brings their own email provider
You're not locked into one email provider. Each tenant configures their own Resend or SendGrid account. If you're a SaaS company, each of your customers can use their own sending domain and credentials.
Technical detail: multi-tenancy model
Tenants are isolated via PostgreSQL Row-Level Security (RLS). Every query runs with SET LOCAL app.current_tenant_id = '<uuid>', and RLS policies reject cross-tenant access at the database level — not just at the application level.
Handle failures gracefully
Nothing gets lost
If a notification can't be delivered, Orqestra retries automatically — up to 4 times with exponential back-off. If all retries fail, the notification moves to the Recovery Queue.
Inspect and replay failed notifications
From the Admin UI Recovery Queue, you can see the exact error, fix the root cause (e.g. update your API key or fix a malformed template variable), and replay the notification. No code changes required.
Understand why something wasn't delivered
Every event trigger creates at least one entry in the delivery logs — even if delivery fails or no template matched. The log shows the channel, status, error details, and timestamps.
Technical detail: retry schedule
| Attempt | Delay |
|---|---|
| 1st retry | 30 seconds |
| 2nd retry | 5 minutes |
| 3rd retry | 30 minutes |
| 4th retry | 2 hours |
After the 4th retry, the notification is written to failed_notifications and logged in the Recovery Queue.
Write and manage message content
Reusable templates with dynamic content
Templates use Handlebars syntax ({{variableName}}) for dynamic content. The values come from your event payload. You can reference any field in your payload — nested fields too ({{order.lineItems.0.name}}).
Responsive HTML emails
Email templates support MJML — a markup language that compiles to responsive HTML. Your emails look correct on Gmail, Outlook, Apple Mail, and mobile clients without writing table-based HTML by hand.
Preview before you send
The Playground in the Admin UI lets you load a template, fill in sample payload values, preview the rendered output, and fire a test event — all before touching your production application.
Version history
Every template change creates a new version. Old versions are preserved so you can audit what content was sent, and roll back if needed.
Secure your integration
Sign your webhook payloads
Outbound webhook events include an X-Orqestra-Signature HMAC-SHA256 header so your receiving service can verify the payload wasn't tampered with.
Deduplicate retries
Include an Idempotency-Key header on event trigger calls. If your service retries the call (e.g. on network timeout), Orqestra deduplicates within 24 hours and won't send the notification twice.
Rate limits per tenant
Each tenant has a configurable rate limit (requests per minute) and a daily notification cap. Requests over the limit receive a 429 Too Many Requests response with a Retry-After header.
Supported providers
| Channel | Provider | Notes |
|---|---|---|
| Resend | Recommended for simplicity | |
| SendGrid | Full feature parity | |
| SMS | Twilio | Global reach |
| SMS | Africa's Talking | East/West Africa focus |
| Push | Centrifugo | Built-in, no external account needed |