> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tryoto.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SMS notifications

> Send SMS notifications to customers: connect your SMS provider, choose from 14 message types, write the text, send automatically or by hand, and check delivery.

> [!NOTE]
>
> **Where to find it:** Settings → Customer Notifs → SMS — [Open in OTO ↗](https://app.tryoto.com/sms-setup)

SMS is the channel nobody has to install, nobody has to be logged into, and everybody reads. For a delivery message that has to arrive within the minute, it is still the most reliable thing available.

## One screen, one brand at a time

SMS is configured at **Settings → Customer Notifs → SMS**, across three tabs: **SMS Settings**, **SMS Providers** and **Connected SMS Providers**.

Settings begin with a brand, because a brand is what a customer sees as the sender. Then a **provider** and a **Status** — the product’s own words: *“Turn SMS notifications ON or OFF for this brand.”* Beneath that sits every message type as a card, each with a description of exactly when it fires, an **edit** pencil and its own switch.

![The SMS Settings screen](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/cn-8-sms.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=3a0990aaab0d18265fd4e0249c36d051)

Fig. 1 — A phone mock-up on the right renders the message as it will arrive, sender name and all — so the thing being edited is the thing the customer gets.

## Fourteen message types

Each carries a category, a plain-language name and the trigger that fires it.

| Category | Message | Triggered when |
| - | - | - |
| **Shipment Tracking** | **Shipment in Transit** | the shipment is moving to the delivery address. |
| | **Delayed Dispatch** | shipment dispatch is delayed beyond the expected time. |
| **Delivery Updates** | **Order Confirmation** | the order is successfully confirmed. |
| | **Delivery Attempt Failed** | the courier couldn’t complete the delivery. |
| | **Delivery Rescheduled** | after a failed delivery, to request a new delivery time. |
| **Address Verification** | **Verify Delivery Address** | the address needs confirmation before delivery. |
| **Delivery Slot Notifications** | **Delivery Slot Confirmation** | a shipment is created, to schedule a slot. |
| **Delivery OTP** | **Delivery OTP Code** | a one-time password is required to complete delivery. |
| **Click & Collect** | **Click & Collect Updates** | an order is prepared for in-store pickup. |
| **Customers Feedback** | **Rate Your Delivery Experience** | after successful delivery, to collect feedback. |
| **Returns** | **Return Request Created** | the receiver initiates a return request. |
| | **Return Request Approved** | the customer’s return request is accepted. |
| | **Return Request Rejected** | the customer’s return request is declined. |
| **Manual Notifications** | **Manual SMS** | a person sends one, as a custom message. |

![Message types, each with its trigger](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/cn-9-types.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=1ecb64d6c19b474e9ca01231d5e0135c)

Fig. 2 — Every card says when it fires. Switching one off is one tap, and it applies to this brand only.

> [!TIP]
>
> **Delayed Dispatch is the one to turn on first**
>
> Most of these tell a customer about something that has happened. **Delayed Dispatch** tells them about something that has *not* — the parcel that should have left and did not.
>
> That is the silence customers fill with a support ticket, and it is the only message here that can pre-empt a complaint rather than respond to one.

## Writing the message

![Editing a message](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/cn-10-edit.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=f425bcd5e233dda3a167aa4edca524de)

Fig. 3 — Two things decide what is sent: who it goes to, and what it says. A character counter tracks the SMS segment as you type.

| | |
| - | - |
| **This message will be sent to** | A list of **destination countries**. The same message type can carry different text for different markets. |
| **Message Body** | The text, with merge fields in `{{ }}` — order number, tracking link and the rest — and a live **character counter against the 160-character SMS segment**. |

> [!TIP]
>
> **Per-country text is not a nicety**
>
> An Arabic message and an English one of the same length do not cost the same to send: non-Latin characters use a shorter segment, so wording that fits in one message in English can silently become two or three in Arabic.
>
> Writing the text per destination — and watching the counter while you do — is how a notification programme stays predictable in cost as it crosses borders. It is also how the message ends up in the language the recipient actually reads.

Before going live, **Send Test SMS** delivers the real message to a number of your choosing.

> [!NOTE]
>
> **The link is the message**
>
> An SMS has one job: get the customer onto the page. Everything that matters — the status, the map, the form, your branding — lives there, where there is room for it and no per-character cost.
>
> Which is why a message type with no [branded page](https://docs.tryoto.com/modules/customer-notification/branded-pages.md) behind it is a wasted send: it arrives as text that tells the customer something without letting them do anything about it.

## Providers

OTO does not send the messages itself; it connects to your SMS provider. The **SMS Providers** tab is a catalogue of pre-integrated ones — *“Easily integrate your preferred SMS provider to send order updates, delivery notifications, and more instantly.”*

![The SMS provider catalogue](https://mintcdn.com/oto/YkJay8Y-1RDv8ciw/images/cn-11-providers.png?fit=max\&auto=format\&n=YkJay8Y-1RDv8ciw\&q=85\&s=e9fbde5e0d5e05af78a9c87f3d1ce7e0)

Fig. 4 — Regional carriers and global platforms side by side, each a Connect away.

The list runs well beyond the usual names: **STC**, **Mobily**, **Zain**, **Unifonic** and **Unifonic Cloud**, **Msegat**, **Taqnyat**, **4jawaly**, **Hi SMS**, **Bevatel**, **Mrasel**, **Mshastra**, **Gateway**, **iMissive**, **BabSMS**, **GoInfinito**, **TurkeySMS** and **Twilio**, among others.

Connecting one takes a **Connection Name**, a **Sender Name** — what appears as the sender on the customer’s phone — a **Token** from the provider, and a **Status** switch. **Connected SMS Providers** then lists what you have, each with its own switch and menu, so a provider can be disabled without being deleted.

> [!TIP]
>
> **Why the regional depth matters**
>
> A global platform will deliver an SMS to Riyadh, but sender-name registration, local delivery rates and per-message price are all better through a local carrier — and in some markets an unregistered sender name simply does not arrive.
>
> Having STC, Mobily, Zain, Taqnyat and the rest pre-integrated means that is a choice from a list rather than an integration project. Multiple providers can be connected at once.

## Automated and manual

Most of these fire on their own: a tracking SMS when the shipment moves, a failed-delivery SMS on a failed attempt, a feedback SMS after delivery. **Order Confirmation** can be targeted rather than universal — sent by city or by order status, so the confirmation step applies where cash orders actually go wrong rather than to everyone.

For everything else there is **Notify**, on the Shipments screen: select an order, choose **Send SMS**, pick the type, send. It uses the same configured templates, so a manual send still looks like the rest of your communication. SMS is the only channel that can be sent to several orders at once this way.

**Click & Collect** deserves a note of its own: the ready-for-collection message carries the collection point and, where you use one, the **Delivery Confirmation Code** the customer quotes at handover. See [Order fulfillment](https://docs.tryoto.com/modules/omnichannel-oms/order-fulfillment.md).

## Did it arrive?

**Settings → Logs → Notification Logs** carries **SMS Logs** and **Email Logs**. Each SMS row holds the **OTO Order ID**, **Sender Name**, **Phone Number**, the **Message Text** as it was actually sent, **Message Time**, **Message Type**, **Provider**, the provider’s raw **Gateway Response** and a **Status**.

> [!TIP]
>
> **Read the message text, not just the status**
>
> A *Success* status means the provider accepted the message, and the Gateway Response carries their own reference, segment count and cost. Both are useful.
>
> But the column worth scanning is **Message Text**, because it shows what the customer actually received — after every dynamic field was substituted. A template that looks right in the editor and wrong on the phone is only visible here.

![Notification Logs on the SMS Logs tab](https://mintcdn.com/oto/ft-bRlLvOnJkbVoC/images/cn-16-sms-logs.png?fit=max\&auto=format\&n=ft-bRlLvOnJkbVoC\&q=85\&s=dd1e07e9486ae751be7171dfc35b4823)

Fig. 5 — One row per send, with the message as the customer received it and the provider’s own verdict beside it.

A failure is explicit and explained: a **Failed** chip, with the reason carried in the Gateway Response — a duplicate send, a rejected number, an unregistered sender name.

> [!NOTE]
>
> **Two rows for one order is normal**
>
> An order that triggers both a tracking message and an address-verification message produces a row for each, at the same minute and against the same order ID. That is the system working, not a duplicate.
>
> What is worth investigating is the reverse — an order with *fewer* rows than the configured message types would predict.

## Related

* [Branded pages](https://docs.tryoto.com/modules/customer-notification/branded-pages.md) — what the link opens.
* [WhatsApp](https://docs.tryoto.com/modules/customer-notification/whatsapp.md) — the same messages on a richer channel.
* [Return Management](https://docs.tryoto.com/modules/return-management/overview.md) — the three return messages.


## Related topics

- [Plans, pricing and add-ons](https://docs.tryoto.com/pricing/plans-and-packaging.md)
- [Customer Notification](https://docs.tryoto.com/modules/customer-notification/overview.md)
- [Email notifications](https://docs.tryoto.com/modules/customer-notification/email.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.