Message orchestration · BYOL

Keep your provider. Add the layer that makes it manageable.

Your provider accounts stay yours. Connect the SMS, email and WhatsApp accounts you already pay for, send from one console or from your own backend, and see what happened to every message. On the SMS channel you also get the routing, failover, pacing and segment accounting that a single provider account does not do for you.

What teams run on it

The messages are the ordinary ones — a confirmation, a code, a reminder, an alert. Here is what that looks like when the accounts stay yours and the sending runs through one place.

Use case · Transactional

Order confirmations

The confirmation leaves the moment a checkout completes, from the sender ID your customers already recognize. No second dashboard, no re-registered number, and a record kept against the order.

See how it works →
Use case · Transactional

Shipping and delivery updates

Dispatch and delivery updates go out from the same identity, queued at the pace your provider grants. When someone asks where the parcel is, the log answers by number.

See how it works →
Use case · Verification

One-time passwords

Codes leave at each sender number’s own rate and every send leaves a record. Capacity grows by adding numbers to the account you already hold, not by splitting one shared allowance.

See how it works →
Use case · Scheduling

Appointment reminders

Reminders are released on the schedule you set and queued to the rate the provider actually grants, so a morning’s worth of them leaves in order instead of in one burst.

See how it works →
Use case · Billing

Payment reminders

Reminders run over whichever connected account is healthy, and the outcome is recorded against the send — so chasing the payment and proving you sent the reminder are one action.

See how it works →
Use case · Operations

Service and incident alerts

When something breaks at 3am the alert has to leave, and you have to know that it did. Routing moves the send to a healthy account, and the delivery receipt reports what the carrier did with it.

See how it works →
Channel scope. Routing and automatic failover, per-number pacing and segment accounting run on the SMS channel. Delivery receipts are normalized on all three channels — every SMS provider, Resend on email and Meta on WhatsApp — and opt-out suppression is applied to marketing sends on all three. Email and WhatsApp connect on the same model, each with its own credentials and provider-side limits.

Live in an afternoon

Four steps, the first time. After that it is just sending.

  1. Connect a provider you already pay for

    Open the console, choose your provider and paste the credentials from its dashboard. Nothing is ported: your numbers, short codes and sender IDs stay registered exactly where they are, and your provider keeps billing you directly.

  2. Send your first message

    Type it in the console, or send it from your own backend through the API. Verification traffic and marketing traffic are labeled the way you would label them in your own code.

  3. See exactly what happened

    The log keeps the provider’s response, the normalized error code and the later delivery receipt against every message. Search by recipient the next time someone says it never arrived.

  4. Add a second account when you need the headroom

    A second connection raises your ceiling and stands in when the first stops accepting traffic. Order them by priority, weight the sender numbers within each, and both keep reporting into the same log.

What you get on the SMS channel

Self-service connections to 6 SMS providers — Twilio, Vonage, Infobip, MessageBird, Plivo and AWS End User Messaging — each with the credential fields it actually needs listed on its own page. Underneath sits an SMS adapter library of 33 adapters, unlocked on request. On top of them:

Routing and failover

Bind several providers and sender numbers to one route, each with a priority and a weight. If the primary provider rejects a send, the next one in line takes it — a provider having a bad hour degrades into slower sending instead of into silence.

Pacing to your real quota

Each connection carries the send rate you set, and we queue to it rather than firing as fast as the provider will accept. That queueing is what keeps an account out of throttle to begin with.

Delivery receipts, aggregated

Provider callbacks are collected and normalized into one status per message, with the raw provider code kept alongside — so answering “did it land?” no longer means reconciling five webhook shapes.

Opt-out suppression

A reply of STOP writes a suppression record, and a check runs before each marketing send, so someone who opted out stops receiving marketing. Enforcement is fail-closed by default for marketing traffic.

Encoding and segment accounting

GSM-7 versus UCS-2 decides how many billable segments a message becomes. The encoding is set per connection and the segment count stays on the record, so your provider invoice can be reconciled line by line.

One error vocabulary

Every provider reports failures its own way. We normalize them and keep the raw code beside the normalized one, so the same failure reads the same way whichever account it came out of.

Email and WhatsApp

Both channels run on the same connection model as SMS: you link a provider account you already hold, send from the console, and keep the outcome on record.

  • Email. 4 sending providers can be connected self-service — Resend, Mailgun, SendGrid and Postmark — each with its own sending account and from-address.
  • WhatsApp. 3 providers carry it — Meta WhatsApp, 360dialog and Twilio WhatsApp. Twilio means one account can serve both an SMS connection and a WhatsApp connection.

Pricing at a glance

Flat subscription, from $0 to $199 per month. Every tier includes unlimited sending — what varies is how many connections you can run, how fast you may submit, and how long logs are kept. Pro is $49 per month.

What is yours stays yours

Because the accounts are yours, these stay yours as well — that is the point of connecting a provider rather than migrating to one.

  • Your provider account: its approval, its standing, its billing
  • Sender IDs, numbers, short codes and campaign registration
  • The quotas and rate limits your provider grants you
  • Telecom and privacy compliance in each destination country

What we own is the part we can be held to: handing each message to your provider correctly, queuing within your limits, backing off instead of treating a throttle as a hard failure, and reporting what came back with the raw provider code beside it.

Product questions

What happens if one of my providers has an outage?
On the SMS channel a rejected send is not the end of the message: routes are ordered by priority and weighted inside each connection, so a provider having a bad hour degrades into slower sending rather than into silence. One limit worth knowing: failover moves traffic between the accounts you connected, so it cannot route around a rejection that is attached to the destination itself.
Do I need new numbers or sender IDs?
No. You connect the account you already hold, so the numbers, short codes and sender IDs you registered stay exactly as they are and the recipient keeps seeing the same sender. Nothing is ported and nothing is re-registered.
Can I keep sending from my own backend?
Yes. Sends can go through the console or through the API. The send API is documented per channel rather than as one uniform surface, because what each channel supports is not identical — the docs state the difference per channel.
What happens when my provider throttles my traffic?
Each connection carries a send rate you set, and the platform queues to it instead of firing as fast as the provider will accept. A throttle comes back as a pacing signal rather than as a failed send — that is the difference between slowing down for a minute and losing the message.
What happens to my setup if I stop using it?
There is nothing to unwind. The account, the sender identities and the provider relationship were yours the whole time, and the platform holds no provider account of its own — you revoke the credentials you issued and sending is back where it started.
How do I start?
Connect one provider account you already hold and send from the console. The plan limit is on how many connections you run, not on how many messages you send, so a single connection is enough to prove the whole path before you decide on a tier.

Pricing questions — connections, submit rate, log retention, changing tiers — live with pricing, alongside the billing questions they come from.

Keep reading

Platform

Features in detail

Bring-your-own connections, sender identity, the send API, receipt webhooks, logs and tenant isolation — each on its own page.

Open features →
Decision

Choosing an approach

Your own providers versus bought credits, one account versus several, calling a provider directly versus running a layer above it.

Open comparisons →

Start with one connection

Connect a provider account you already hold and send from the console. The Free tier covers the first channel connection, so the whole path can be proven end to end before you choose a paid tier.