Skip to main content

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
AttemptDelay
1st retry30 seconds
2nd retry5 minutes
3rd retry30 minutes
4th retry2 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

ChannelProviderNotes
EmailResendRecommended for simplicity
EmailSendGridFull feature parity
SMSTwilioGlobal reach
SMSAfrica's TalkingEast/West Africa focus
PushCentrifugoBuilt-in, no external account needed