One-time codes
Your system asks for a code to go to one number or address. You get a message id back straight away, and you can read its state at any point after that — so a support agent can say what happened instead of guessing.
One-time codes, transaction alerts and due-date reminders on email, SMS and WhatsApp — each one with a status you can read back, a sealed record of exactly what went out, and rules that stop a message going where it should not.

A bank, a mobile money service, a lender or an insurer sends a handful of message types over and over. Each one has a different deadline and a different way of failing. All four run through the same account, on whichever channel suits them.
Your system asks for a code to go to one number or address. You get a message id back straight away, and you can read its state at any point after that — so a support agent can say what happened instead of guessing.
A debit, a credit, a card used abroad. Your core system calls us when the event happens rather than handing us a file overnight, so the alert follows the money instead of trailing it by hours.
Premium due, instalment due, policy about to lapse. Build the sequence once as an automation with real delays and conditions, and it runs per customer without anyone remembering to press send.
Statements, schedules and policy documents go out as email with files attached. Send from your own domain once its records are verified, so the message arrives under your name and not a shared one.
The same four steps apply whether it is a code, an alert or a reminder, and whether it goes by email, SMS or WhatsApp. Nothing about this path is a batch job.
One request names the channel, the recipient and either the text or a template with its values. You get back a message id and a state — accepted, or a refusal that says exactly what was wrong with it.
Before an SMS or a WhatsApp message leaves we check that this person is recorded as having agreed to hear from you on that channel, that it is not their local quiet hours, and that they have not already had too many messages today.
The message goes to the network under your sender name. The moment it is accepted we write a sealed record of the exact final content — filled-in values and all — with who asked for it and where the request came from.
Delivery confirmations and failures come back from the network and land on the message. Its state moves to delivered, or to failed with the reason and code the network gave. You can read it, or we can call you.
| SMS | |||
|---|---|---|---|
| Best suited to | Statements, documents, long notices | Codes and short alerts | Alerts and codes for customers who live in chat |
| Sender identity | Your own domain, once its records verify | A branded sender name, after business verification | Your verified business account |
| Files attached | Yes | No | No |
| Delivery confirmed back to you | Yes | Yes | Yes |
| Consent recorded per person | Unsubscribes handled for you | Yes | Yes |
| Local quiet hours applied | No | Yes | Yes |
| Per-person daily limit applied | No | Yes | Yes |

One endpoint takes an email, an SMS or a WhatsApp message. The reference is served from the product itself, so what your developers read is what the running system does — and there are SDKs if you would rather not hand-roll the calls.
Messages fail. A number is dead, a handset is off, a mailbox is full, a network rejects the sender. What matters is whether your system hears about it in time to do something else.
Queued, sending, sent, delivered, failed, bounced, or marked as spam by the recipient. A failure carries the reason and the code the network returned, so a wrong number and a blocked sender are not the same answer.
Point us at a URL and we call it when a message is sent, delivered, failed or bounced. Every call is signed with a secret only you and we hold, so your side can tell a real update from anything else that finds the address.
If your endpoint is down we try again — five attempts spread over about half an hour, each one recorded with what your server said. If you miss them all, the state is still there to be read back.

Codes on SMS, alerts on WhatsApp and statements by email are one operation, not three. Reports put the channels side by side over the same window, so a drop in delivery shows up as a change in a line rather than as a run of support tickets.
Delivery reports tell you a message went out. They do not tell you what it said. So alongside the message, every successful send writes a separate sealed record of the content itself — on email, SMS and WhatsApp, for one-off sends and campaigns alike.
Your account is separated from every other account at the database level — not by a filter in the application that someone could forget to apply. Contact details, message content and the credentials for anything you connect are encrypted where they are stored. Account actions are written to a record that the daily clean-up deliberately leaves alone, and that record cannot be quietly edited afterwards.
| Kept for | What that covers | |
|---|---|---|
| Message records | 365 days | Who was messaged, when, and what happened to it |
| Contact activity | 180 days | Opens, clicks and other events recorded against a contact |
| Automation runs | 90 days | The trace of a journey that ran for one customer |
| Calls to your endpoint | 30 days | Each attempt, its response and whether it succeeded |
| Expired sign-in sessions | 30 days | Cleared out once they are no longer valid |
| The account audit record | Left in place | Deliberately excluded from the daily clean-up |
No. We do not hold those certifications, and we are not going to imply we do. What we can put in front of you is the mechanism: your data separated from every other account at the database level, encryption where the data sits, an audit record excluded from the clean-up job, retention periods you can read, erasure on request, and a sealed copy of every message that went out. If your procurement process needs a certificate on file, we are not the right answer for you today.
They can, so plan for it. Before an SMS or a WhatsApp message leaves we check three things: that the person is recorded as having agreed to that channel, that it is not their local quiet hours, and that they have not already had their limit for the day. Email is not held by any of those. If you send codes and alerts around the clock, tell us your hours and volumes before you go live so the rules on your account match the traffic you actually send.
The final content as the recipient received it, with the merge values already filled in, plus the recipient, the sender, the time, the links it contained and the outcome of the content check. Recipient, subject and body are encrypted where they are stored. It is kept for disputes and abuse investigations rather than for day-to-day browsing, it is never visible to another business on the platform, and we produce a specific record when you ask for it.
Start with a key and one test message. Bring your compliance questions to us before the commercial ones — that is the order they matter in.
Run every channel from one platform. Bring your own SMTP, SMS gateway, and WhatsApp number — or use ours.
See pricing →