01In short
For transactional notifications, send one POST /v1/messages per event from your back end, tag it with a campaign such as shipping and your own reference such as the order number, and flag it transactional so it is not held by quiet hours. Delivery events come back on your webhook with the same reference, so your order system can record that the customer was told.
- Traffic type
- Transactional
- API call
POST /v1/messagesper event, or/batchfor nightly runs- Tracing
referenceechoed in responses and webhooks- Grouping
campaigntag per notification type- Length
- One or two segments; own-domain link if any
- History
- Per-message reports kept 90 days
Recommended settings
02How it works here
From nothing to delivered, in 4 moves.
-
01Hook the event
Where your system marks an order as shipped or a payment as received, add the API call. Use the order number as reference and in the idempotency key.
-
02Write the text once
Brand, fact, next step. "ACME: order 4821 has shipped. Track it: acme.com/t/8fK2". Keep it in one GSM-7 segment.
-
03Record the outcome
Store delivered or failed against the order. A failed notice with an unknown number is a customer-data problem worth surfacing.
-
04Review by type
The campaign tag groups shipping, receipts and alerts in reports, so a drop in one type is visible.
03What matters
What belongs in a transactional text
A notification is transactional when the customer expects it because of something they did. It states a fact and, at most, points to where the detail is. The moment it carries an offer, it is marketing, needs consent and quiet hours, and risks the route if it was flagged transactional. Keep the two streams apart: separate templates, separate campaign tags.
Use a link on your own domain. Public shorteners are the most filtered pattern in SMS and hide the brand the customer is looking for.
04In practice
Reliability from your side
Send with an Idempotency-Key derived from the event, for example order-4821-shipped. If your job crashes and reruns, the API returns the original response and the customer gets one text, not two. Retry 429 and 5xx responses with backoff; never retry other 4xx, fix them.
For nightly runs such as payment reminders, the batch endpoint takes 1,000 messages per API request and lists each rejected row with its reason, so one bad number does not fail the run.
05What it costs
5,000 messages, priced per destination.
One segment each at today's published rates. The same unit price applies to one message or a million; there is no plan, no setup fee and no monthly fee.
Rate card last updated 22 September 2026
| Destination | Rate per SMS | 5,000 messages |
|---|---|---|
| $0.0084 | $42.00 | |
| $0.0130 | $65.00 | |
| $0.0238 | $119.00 | |
| $0.0205 | $102.50 | |
| $0.0042 | $21.00 | |
| $0.0256 | $128.00 |
Other destinations: cost calculator
06A message that works
What it looks like on the phone, and in the request.
A fact, a date and an own-domain link, in one segment.
curl https://api.smsmeteor.com/v1/messages \
-H "Authorization: Bearer $SMSMETEOR_KEY" \
-H "Idempotency-Key: order-4821-shipped" \
-H "Content-Type: application/json" \
-d '{
"to": "+447700900123",
"from": "ACME",
"text": "ACME: order 4821 has shipped and arrives Thursday. Track it: acme.com/t/8fK2",
"window": { "quiet_hours": "bypass" },
"campaign": "shipping",
"reference": "order-4821"
}'07Pitfalls
Three mistakes we see, and how to avoid them.
An offer inside a receipt
That converts the message into marketing. Keep promotions in their own campaign with consent and quiet hours.
Public link shorteners
Filtered more than any other pattern. A short path on your own domain costs the same characters.
No reference on the message
Without it, a delivery event cannot be matched to the order that caused it.
09Questions, answered
Order, payment and account notifications: questions, answered.
Do transactional notifications need opt-in consent?
They follow from the customer relationship: an order confirmation or a security alert does not need marketing consent. Adding promotional content changes that, so keep notices purely informational.
Can notifications go out at night?
Yes, with the transactional flag (window.quiet_hours set to bypass). Use it only for messages the customer expects; promotional content sent this way is a violation of the acceptable use policy.
How do I know the customer received the message?
Register a webhook: message.delivered and message.failed events carry your reference and, on failure, the carrier reason. Where operators return only acknowledgement, sent is the final positive state and the country page says so.
What if the same event is processed twice?
Send the same Idempotency-Key and the API returns the original response without sending again, for 24 hours.
Can I send notifications to several countries from one integration?
Yes. The destination is resolved from the number, priced at that country's published rate, and given the sender its rules allow. Nothing changes in your code.
Is there a minimum volume?
No. One notification costs one message at the published rate. There is no monthly fee and no contract.
