Six channels. One send. One delivery record.
Transactional traffic, campaigns and journeys converge on one routing layer and one audit trail. You decide the order; the carrier's own signals decide when to move on.
The carrier says when to move on, not a timer.
A fallback that fires on a clock sends twice to people who already got it. A fallback that fires on a carrier failure sends once, on the channel that can reach them.
Everything on this page follows from that: routes you own, lanes that don't compete, content built per channel, and a record that shows every attempt as the carrier reported it.
Send a template, or send the text you already have
Send a template with variables, or send finished text from your core system and let the platform recognise, categorise and group it. Nothing gets rewritten on your side. Duplicate requests inside a window are refused. Blocked content is refused. Every call is authenticated with your API key, and can be restricted to your own IP addresses.
- Raw text recognised as OTP, alert or statement
- Duplicates inside a window refused
- Blocked content refused before it reaches a carrier
Routing you change on save, not in a ticket
Smart Routing picks the channel and the order from availability and reachability. Custom Routing follows your order, per message type, effective the moment you save. When a carrier degrades mid-campaign, you reorder it and the next message routes differently.
- Smart: availability and reachability decide
- Custom: your order, per message type
- Effective on save, mid-campaign included
Fallback on real signals
The chain advances when the carrier reports a failure, not when a timer expires. Each step sends the content built for that channel. Every attempt is recorded against the message.
- Advances on a carrier failure, never a clock
- Channel-specific content at every step
- Each attempt on the record
A promotion can never slow down a login
OTP, transactional, marketing and informational traffic each get their own route, escalation and dispatch rate, on your own provider accounts. A promotional burst cannot consume the throughput a login depends on.
- Four lanes, four routes, four rates
- Your provider accounts, your contracts
- Bulk sends stop mid-run if they're wrong
One message, built for every channel
A template carries a variant per channel, each edited in its own tab with a live preview and its limits enforced as you type. If a template's category changes on Meta's side, WhatsApp is withdrawn from that template immediately and logged. Sending stops before the spend accrues. Other channels continue, and you decide whether to restore it.
Prove what happened.
Every message keeps its route, each attempt, the carrier status and the outcome, queryable and exportable. Delivery events post to your systems as they happen, so you keep your own record.
- Route, attempts, carrier status, outcome, per message
- Queryable in the portal, exportable in bulk
- Webhooks to your systems as each event lands
Your systems hear about every delivery the moment it happens.
Every change in a message's state is posted to an endpoint you register, as it happens: accepted, sent, delivered, read, failed and why, and each fallback attempt in between. Your CRM, your core system or your support desk keeps its own record of what reached the customer, with no polling and no waiting for a report. Replies and journey events arrive the same way, on the same connection.