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

# Text messages (SMS)

> Connect your own SMSAPI.pl account, choose the sender name customers see, and learn how quiet hours, limits and STOP replies work for SMS.

Omnilinker sends text messages through **your own SMSAPI.pl account**. SMSAPI bills you for them directly; Omnilinker
holds no SMS account of its own and handles no SMS money. SMS is one-way: Omnilinker reads a customer's reply only to
find out whether it is a STOP.

You need SMS switched on for your organization (ask Omnilinker), an SMSAPI.pl account, and the **Set up senders (e-mail
domains and the SMS sender name)** permission. For e-mail, see [Send from your own domain](https://docs.omnilinker.pl/customer-service/sender-domains).

## Connect your SMSAPI account

**1. Prepare SMSAPI**

In the SMSAPI panel, register and verify the sender name you want customers to see, and create an access token under
**API tokens**. A sender name is optional: without one, SMS go out under your SMSAPI account's default name.

**2. Add an SMS sender**

Open **Customer service** > **Senders**. Under **SMS senders** > **Add an SMS sender**, enter a **Name (only you see
it)** and, if you have one, the **Sender name (optional)**. A sender name is at most 11 characters: letters, digits,
spaces, dots, hyphens or ampersands, with at least one letter. Click **Add SMS sender**: "SMS sender added. Connect
your SMSAPI account to start sending."

**3. Connect**

Click **Connect SMSAPI account**, paste the **SMSAPI access token** and click **Connect**. Omnilinker checks the token
with SMSAPI, stores it encrypted and never shows it again. The sender then shows **Connected**, "Connected to SMSAPI
since …".

**4. Paste the callback address into SMSAPI**

After you connect, Omnilinker shows a **Callback address** once. Paste it into the SMSAPI panel as the address for
inbound SMS, so customers' STOP replies reach Omnilinker. It contains a secret and is shown only now. Click **Done**
only after you have copied it. If you lose it, use **New callback address**.

**5. Test**

Click **Test connection**. Omnilinker asks SMSAPI whether the token still works and shows the points left on the
account.

Until a sender is connected, no SMS is sent from it. **Message buyer** then says "SMS isn't connected yet: connect your
SMSAPI account on the Senders page."

Delivery reports need nothing from you: every SMS carries the address SMSAPI reports its delivery to. Only the inbound
address is pasted into the SMSAPI panel, once. Both need the server to know its own public address.

> [!NOTE]
>
> If Omnilinker shows "This server has no public address configured, so there is no callback address to show", STOP
> replies can't reach it until the administrator sets one. Until then the Senders page also warns "SMS delivery reports and
> STOP replies cannot reach Omnilinker yet": an SMS then stays **Sent** and never shows **Delivered**. Contact Omnilinker.

### Change or remove the connection

| Button | What it does |
| - | - |
| **Change token** | Connect again with another access token. |
| **Test connection** | Checks the token with SMSAPI: "SMSAPI accepted the token." or "SMSAPI refused the token. Connect the account again with a valid one." |
| **New callback address** | Makes a new inbound address and shows it once. The old one stops working at once, so STOP replies and delivery reports are lost until you paste the new address into the SMSAPI panel. |
| **Change sender name** | Change the sender name. It must be verified in the SMSAPI panel. |
| **Disconnect** | Nothing is sent from the sender until you connect again, and its callback addresses stop working. |

## How an SMS is sent

* **Length.** One SMS holds 160 characters. A text with Polish letters such as ą, ę or ż is sent as Unicode and holds
  only 70, so a long text costs more messages. When you write a message, the counter shows "2 SMS messages · 190
  characters" and the checks warn about special letters. A text of more than 10 SMS is refused; shorten it.
* **Quiet hours.** No SMS is sent between 21:00 and 08:00 by default, in your organization's time zone. An SMS due then
  waits and goes out at the end of quiet hours. Change them in [Customer service settings](https://docs.omnilinker.pl/customer-service/settings).
* **Daily limit.** Your organization sends at most 500 SMS a day by default. Change it in the settings.
* **Delivery.** An SMS shows **Sent** when SMSAPI accepts it and **Delivered** when the operator confirms it. See
  [Sent messages](https://docs.omnilinker.pl/customer-service/sent-messages).
* **Who is texted.** Service messages about an order go to the phone number on the order. A number that isn't valid, or a
  landline, can't receive an SMS.

## STOP replies

When a customer replies **STOP** to an SMS, Omnilinker puts the number on the suppression list and withdraws any SMS
marketing consent the contact has given for it. Nothing more is sent to that number by SMS, service messages included.
The contact's **Contact preferences** shows "SMS stopped (STOP reply)". See
[Consent and opting out](https://docs.omnilinker.pl/customer-service/consent-and-opting-out).

A reply counts as STOP only when the whole message is one of a few words, in any letter case and with or without Polish
letters: STOP, STOP SMS, STOP ALL, UNSUBSCRIBE, KONIEC, WYPISZ, WYPISZ MNIE, REZYGNUJE, REZYGNACJA, NIE WYSYLAC or NIE
WYSYLAJ. Any other reply is not read.

If the customer later wants texts again, allow messages again on the contact; see
[Allow messages again](https://docs.omnilinker.pl/customer-service/consent-and-opting-out#allow-messages-again). Because every organization connects
its own SMSAPI account, a STOP reply is attributed to exactly your organization.


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