# Order, payment and account notifications

> Send order confirmations, shipping updates, payment receipts and account notices by SMS to 228 countries from your back end. One API call per event, signed delivery webhooks, no KYC.

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.

## Recommended settings

- Traffic type: Transactional
- API call: `POST /v1/messages` per event, or `/batch` for nightly runs
- Tracing: `reference` echoed in responses and webhooks
- Grouping: `campaign` tag per notification type
- Length: One or two segments; own-domain link if any
- History: Per-message reports kept 90 days

## Steps

1. Hook 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.
2. Write 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.
3. Record the outcome: Store delivered or failed against the order. A failed notice with an unknown number is a customer-data problem worth surfacing.
4. Review by type: The campaign tag groups shipping, receipts and alerts in reports, so a drop in one type is visible.

## 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.

## 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.

## Sample message

From ACME: "ACME: order 4821 has shipped and arrives Thursday. Track it: acme.com/t/8fK2"

```bash
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"
  }'
```

## Questions

**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.



---
Source: https://smsmeteor.com/use-cases/transactional-notifications (HTML). Generated by SMSMeteor from the same data as the page. Summary of the whole site: https://smsmeteor.com/llms.txt
