Reach any phone, anywhere

Reach your users by SMS over direct connections to carriers, with a delivery report within seconds. When a recipient replies, Messaging posts the reply to your webhook endpoint.

Text recipients in several countries from one API call

Send transactional SMS to phone numbers worldwide through one API. For each recipient, Messaging picks a sender ID that the destination country accepts and a carrier route to that country, even when one call lists recipients in many countries.

How Messaging sends and routes your SMS

Global carrier network

Messaging sends SMS worldwide over direct connections to carriers. For each message, Messaging chooses the carrier route by destination, delivery rate, and cost.

Two-way messaging

Buy a dedicated number through the API to receive inbound SMS on it. Messaging forwards every text that someone sends to that number on to your application.

Real-time delivery status

Messaging posts a webhook event each time an SMS changes state, from queued through sent to delivered. When the carrier confirms delivery to the handset, Messaging passes that receipt on to you as soon as the carrier sends it.

Throughput scaling

Messaging accepts thousands of SMS per second from your project. It queues the messages and spreads them across carrier routes so that each carrier receives traffic at a rate within its limits.

Long message handling

Messaging splits a message longer than 160 characters into segments, which the recipient's phone joins back into one message. Conjoin bills you for each of those segments.

Automatic carrier routing

Messaging tracks the delivery rate and the network conditions on each carrier route. When a route fails, Messaging switches the message to another carrier immediately.

Multi-recipient sending

Pass one list of recipients from different countries in a single API call. Messaging splits the list by country and sends each country's batch with the sender ID and the carrier route for that country.

Sender ID selection

Countries differ in the sender IDs that they accept: some allow an alphanumeric name such as MARRAKESH, while others require a short code or a local number. Messaging assigns each destination a sender ID in a format that its rules allow.

Global
Coverage

SMS to phone numbers worldwide

< 3s
Median delivery

Time until the recipient's phone receives the message

99.5%
Delivery rate

Messages delivered to valid numbers

Build faster with solutions designed for real-world needs

Text a customer at each stage of a delivery

Send an SMS with a tracking link at each stage of a shipment, such as dispatch and out for delivery. Messaging sends each text over direct carrier connections and returns its delivery status in the API response.

Impact

The sample tells Maxime Dubois by SMS that a Sablefield Couriers parcel is out for delivery, with the tracking link that Messaging writes into the text from the placeholders. Because the call sets accepts_replies to true, Maxime can text back to the same number.

Prompt for a coding agent: Text customers when their parcel is out for delivery, with the tracking link.

Conjoin IDE

Select a file to view its contents

Text travelers in five countries with one call

When one API call includes recipients from more than one country, Messaging sends from a different kind of sender ID in each country: a toll-free number in the US, an alphanumeric name in Ghana and the UK, a local number in Japan, and a short code in Brazil.

Impact

The sample sends one Marrakesh Tours boarding call to travelers in Atlanta, Accra, Manchester, Kyoto, and Recife. Messaging replaces {{city}} with the city on each recipient entry.

Prompt for a coding agent: Text the boarding call to travelers in five countries, with each city filled in.

Conjoin IDE

Select a file to view its contents

Receive replies at your webhook with the sender's number and the message text

Buy a phone number through the API and set the webhook URL for its inbound messages. Messaging posts each reply to that URL with the sender's number, the message text, and a timestamp.

Impact

The sample lists up to 20 local New York numbers, then buys the first one for Brightmoor Salon with SMS turned on and MMS turned off. Messaging posts every text that a customer sends to that number to the callback_url in the purchase call.

Prompt for a coding agent: Buy a local New York number for SMS, and send customer replies to our webhook.

Conjoin IDE

Select a file to view its contents

Check the cost of a send before you make it

Pass the message and the recipient list to getSmsSummary before you send. Messaging returns the segment count and the cost for each destination, along with the total for the whole send.

Impact

The sample prices one Hessen Outfitters order update for three customers in US dollars. If the total is more than 25 dollars, the sample throws an error before your code sends any message.

Prompt for a coding agent: Price this order update before we send it, and stop when it costs more than $25.

Conjoin IDE

Select a file to view its contents

Build your next app on Conjoin

Conjoin will open with a free Build tier, while the pricing page already lists the launch prices for Pro and Business. If you tell us what you're building, we'll talk you through early access.