Message channels
SMS, WhatsApp and RCS gateways: how a gateway is configured without code, what the segment meter measures, and why an alert on WhatsApp needs an approved template.
Settings → Message channels manages three channels: SMS, WhatsApp and RCS. One gateway sends on one channel, and the default is resolved per channel — an active SMS gateway and an active WhatsApp gateway can sit side by side.
The one use driven from scheduling today is a reminder to the system owner a number of hours before the window opens. The number of hours is set per update type, and leaving the box empty turns the reminder off for that type. With no active gateway on a channel, reminders are not sent — and the screen says so in its first line.
A gateway is not a URL with placeholders
A gateway is a complete HTTP request, which is why no code is needed per vendor. A {variable} can be placed in any field, and the product encodes each value exactly once, according to where it sits in the request.
| The part | What it holds |
|---|---|
| Method and address | GET or POST, and an address that may itself start with a variable |
| Authentication | None · Basic · Bearer · a custom header · a query parameter · a cryptographic signature |
| Query parameters | With the encoding chosen per field |
| Headers | A header value may not contain a line break, and such a request is refused at save time |
| Request body | None · form · JSON · raw text. A field path supports nesting and arrays |
| Variables | Plain, or secret |
| Success rule | Which response codes and which values in the response body count as success |
| Limits | Timeout, and a maximum number of segments |
In a nested body the product builds and serializes the object itself, so the message content can never break the JSON structure. The request goes only to the address in the gateway row itself, and redirects are never followed.
A secret value is stored encrypted and is never returned to the browser — not even to the person who typed it. On a later edit the field is marked as set, and it can be replaced but not read.
Two ways to create a gateway
Start from a known provider whose request shape the product already carries, or paste your existing gateway address and let the product decompose it into an editable request. Either way you get the same thing — an ordinary row, fully editable.
The segment meter
Hebrew is always sent in UCS-2, because GSM has no Hebrew language table.
| Encoding | A single segment | Per segment when the message is split |
|---|---|---|
| GSM-7 | 160 characters | 153 |
| UCS-2 | 70 characters | 67 |
A single Hebrew character drops the whole message to 70 characters per segment. Billing is per segment, so the meter shows an estimated cost — segments times recipients — as you type, rather than on the invoice. A message beyond the gateway's configured maximum is refused or truncated, according to how the gateway is set.
An alphanumeric sender id is limited to Latin letters, digits and spaces. A Hebrew sender id will be rejected or silently replaced with another number by the carrier, with no error — and the screen warns about it before saving.
Approved templates
On SMS you compose a body and send it. On the other channels free text cannot be sent to a recipient who did not contact you first — only a template approved in advance with the provider. An operational alert is always first contact, so it is always a template.
The template registry on the screen records what has already been approved with the provider. It does not submit templates for approval and does not check them against the provider.
| The field | Why it is there |
|---|---|
| Provider id | What is actually sent in the request |
| Display name | With some providers the id is not readable |
| Language and category | The category is the provider's, and it is priced — the wrong classification changes the cost, not just the display |
| Approval status | The default is "unknown", and it is a refusal |
| Checked on | Required for an approved template |
The checked-on date is required for one reason: an approval can be withdrawn later on quality grounds with no change on our side. A template marked approved with no date is a claim nobody stands behind, and saving is blocked. When no template is approved, every send on that channel is refused — with an explanation of what is missing, not silently.
Testing a gateway
| Action | What it does |
|---|---|
| Build only | Assembles the full request and checks the destination, without sending anything — the right test when the gateway server is not reachable from this machine |
| Real send | Sends an actual message to one number |
The result shows the request that was sent, which encoding ran on each field, the gateway's reply verbatim, and the success rule clause by clause — so that a gateway which returned 200 and a message which never arrived look like two different things.
Recipients that were skipped
When a message goes to a recipient group, a member who does not receive it is reported with the reason: they are not registered for any of the channels this message is sent on, or they have no phone number. Both reasons are answers somebody can act on; a silent skip is not.
Failed reminders are retried a bounded number of times. The bound exists so that a gateway fault does not become a stream of repeated messages, and rescheduling an event resets the counter.
Updated
This page is the file content/docs/en/v1/integrations/messaging.mdx