The Settings screen, in the System section of the menu, gathers everything you adjust on the gateway. It is organised in tabs (a list on the left, or a drop-down menu on a phone):
| Tab | What it holds | Who can change it | Details |
|---|---|---|---|
| My account | Your name, sign-in address, interface language, password | Everyone, for themselves | Users and roles |
| Display | Text size and theme, on this computer | Everyone, for themselves | Below |
| General, devices | Settings sent to the phones | Superadmin | Below |
| Sending | Retries, pace per SIM, platform time zone, night and Sunday pauses | Superadmin | Below, and Sending messages |
| Auto-responder | Global switch of automatic replies, summary of the rules | Superadmin | Automation |
| Notifications | Alerts by SMS, e-mail and browser, their rules and thresholds; this browser | Superadmin (this browser: everyone) | Below |
| Users and roles | Accounts and their role | Superadmin | Users and roles |
| Backup and export | Automatic backup (on/off, time or interval, copies kept), backups, restore, exports | Superadmin (exports: everyone) | Backup and restore |
| License | State of your licence | Superadmin | License |
The forwarding of received SMS to your tools is no longer a tab of this screen: it is a webhook, managed on the Webhooks page of the sidebar. See Forwarding received SMS.
Other roles see the Superadmin tabs greyed out, with the note "Only a superadmin can change these settings. You can view them."
How saving works
- General, devices and Sending are saved together by the bar at the bottom of the screen: Save applies your changes, Reset brings back the saved values. An unsaved change survives a switch to another tab.
- Every save increases the Fleet version shown at the top right, and is pushed immediately to every connected phone ("Settings saved. Version N pushed to the devices."). A phone that is offline picks it up at its next connection. Nothing needs a restart.
- The other tabs save on their own: a switch is applied when you flip it, a form when you confirm it (the automatic backup of Backup and export has its own Save button).
- Every change of the gateway settings is recorded in the Activity log.
Display (this computer only)
| Option | Default | Values | Effect |
|---|---|---|---|
| Text size | Medium | Small, Medium, Large | Size of all the text of the dashboard, with a preview |
| Theme | Dark | Light, Dark, System | Colours of the dashboard. System follows your computer |
These two settings, like the Interface language of My account, are kept in this browser, not on your account: each computer keeps its own choice, and a colleague on another computer is not affected. Clearing the browser data brings the defaults back. The theme can also be switched from the button at the top of every screen.
General, devices
| Option | Default | Values | Effect |
|---|---|---|---|
| Sync interval, in seconds | 30 | 10 to 3600 | How often each phone checks in (battery, signal, SIMs, messages sent today) |
| Strip diacritics | Off | On or off | Removes accents from Latin letters before sending: é becomes e, ç becomes c |
| Trim extra whitespace | Off | On or off | Removes spaces at the start and end of the text and of each line, and turns repeated spaces into one |
| Uppercase everything | Off | On or off | Sends every text in capitals |
| Start automatically | On | On or off | The app restarts by itself when the phone restarts |
| Keep the screen on | Off | On or off | The phone screen stays on, dimmed, while the app runs |
These values are saved and pushed to every connected phone the moment you save; a phone that was
offline receives them as soon as it reconnects. Values for a single phone can only be set through
the API (PATCH /devices/{id}/settings): they override the values above for that phone only, and a
change to the values above never erases them.
Sync interval. A short interval keeps the battery and signal shown in Devices up to date; a long one saves a little battery and data. It also sets how long a silent phone is still considered online: a phone is marked offline after five minutes without news, or after three of its own intervals when that is longer (thirty minutes for a ten-minute interval, three hours for one hour). Messages that a phone which stopped answering had already accepted wait up to that long before moving to another phone, so keep the default unless you have a reason to change it. The change applies to each phone immediately.
Text options (strip diacritics, trim whitespace, uppercase) are applied by the gateway when a message leaves for a phone, using that phone's settings. The message history, the encoding and the number of SMS shown for the message describe the text that was actually sent, and quotas count those SMS. They apply to every outgoing message, whatever its origin (dashboard, API, campaign, automatic reply), and not to received messages.
- Strip diacritics keeps a French, Spanish or Italian text in the 160-character alphabet: 160 characters per SMS instead of 70, often half the SMS billed. Letters of other alphabets (Greek, Cyrillic, Arabic, Hindi, Chinese...) and emoji are left untouched, so such a text still costs 70 characters per SMS.
- Trim extra whitespace keeps line breaks and empty lines between paragraphs.
- Uppercase everything follows the same rules on every phone, whatever its language.
Start automatically. On, the app restarts after the phone restarts or after a power cut. Off, after a restart the phone stays offline until someone opens the app on it; once opened, it keeps restarting itself if Android stops it, as usual. Some manufacturers also block automatic start at their own level: see Devices.
Keep the screen on. On, the phone screen stays on at reduced brightness as long as the app runs. It helps on phones whose manufacturer suspends apps once the screen is off. It uses much more battery: only turn it on for a phone that stays plugged in, and preferably dim the screen to its minimum.
Sending
| Option | Default | Values | Effect |
|---|---|---|---|
| Retry on failure | On | On or off | Off: the first failure of a message is final |
| Maximum number of attempts | 4 | 1 to 10 | Attempts before a message is marked failed |
| Waits between attempts, in seconds, comma separated | 30, 120, 600, 3600 |
1 to 10 values, each from 1 second to 1 day | Wait before each new attempt; the last value repeats |
| Device acknowledgement timeout, in seconds | 120 | 10 to 3600 | How long the gateway waits for a phone to confirm it took a message, before putting the message back in the queue to be routed again, possibly to the same phone |
| Messages per minute and per SIM | 0 (no limit) | 0 to 600 | Pace ceiling of each SIM, for every kind of message |
| Minimum interval between two SMS per SIM, in seconds | 0 (no wait) | 0 to 3600 | Least time each SIM waits between two SMS, for every kind of message. Messages wait in the queue and leave on their own; a SIM can have its own value in Devices |
| Time zone | UTC | Any time zone of the list | The platform time zone: see below |
| Night pause for campaigns | Off | On or off | Holds campaign messages between From and To |
| From, To | 20:00, 07:00 | Hours and minutes, may cross midnight, must differ | Limits of the night pause |
| Pause campaigns on Sunday | Off | On or off | Holds campaign messages the whole Sunday |
The night and Sunday pauses only hold campaigns. A quick send, an API call, a conversation reply or an automatic reply leaves at any hour. A campaign caught by a pause stays Running and resumes by itself when the pause ends. See Campaigns.
The detail of each sending option is in Sending messages.
The platform time zone
The Time zone of the Sending tab is the time zone of the whole installation. It decides:
- when the night pause starts and ends, and when Sunday begins;
- how the date and time you type when scheduling a campaign or a message are read;
- how every date of the dashboard is displayed, whatever the time zone of your own computer;
- the default time zone of the opening hours of a new rule;
- the time of the daily automatic backup (Backup and export).
Example: an operator in Paris who schedules a campaign at 10:00 on a gateway set to
Indian/Antananarivo schedules it at 10:00 in Antananarivo; the form says so under the field. The
daily quota of each SIM is not affected: it resets at midnight UTC.
Auto-responder
One option, Send automatic replies (default: on). Off, no rule sends a reply any more, while labels, groups and webhook actions keep running. The tab also summarises your rules. See Automation.
Notifications
The gateway can warn the administrators when something needs attention, on three channels you switch on independently. Changing this tab is reserved for a superadmin; This browser, at the bottom, is open to every user.
What raises an alert
| Alert | When it is sent | Threshold (default) | On by default |
|---|---|---|---|
| Phone offline | A phone has not been in contact for longer than the delay. Its messages already go through your other phones | Delay, 0 to 1440 min (10). 0 alerts as soon as the gateway sees it offline | Yes |
| Phone back online | A phone the offline alert was sent for is back | - | No |
| Low battery | An online phone reports a battery at or below the level. Raised again only once it climbed 5 points above | Level, 5 to 95 % (20) | Yes |
| SIM quota | A SIM used the given share of its daily quota, then again when it reaches it. SIMs without a cap never raise it | Share, 50 to 100 % (90) | Yes |
| Failed messages | That many messages failed within the window | 1 to 10000 failures (10) in 1 to 1440 min (15) | Yes |
| Webhook turned off | A webhook failed too often in a row and the gateway switched it off | - | Yes |
| Backup failed | A scheduled or manual backup did not complete | - | Yes |
| Licence | At once if the licence is withdrawn. If only our licence server is unreachable, an information after the delay: your gateway keeps working normally | Delay, 1 to 720 h (72) | Yes |
| Gateway started | Each time the gateway starts | - | No |
For each alert, tick the channels it uses (SMS, E-mail, Browser). A ticked channel only sends if it is also switched on in its own card.
Wait before repeating (0 to 1440 minutes, default 60): the same alert about the same phone, SIM or webhook is not sent again within this time. A phone that keeps dropping and reconnecting therefore sends you one alert, not one per reconnection. An alert whose cause is still there is not repeated at all; it can come back once the cause has cleared and the delay has passed.
Language of the alerts (default French): the language of the SMS, e-mails and browser notifications, whatever the language of each user's screen.
Alerts never contain the text of an SMS or a full phone number: they name the phone as you named it, the SIM by its slot, and give counts.
SMS
The gateway sends the alert itself, through one of your SIMs, to the Administrator numbers (international format, up to 10). It picks a phone other than the one the alert is about whenever one can send, for example the "phone offline" alert leaves through another phone. When no SIM can send, the SMS is skipped and the other channels still go out. Alert SMS leave at any hour: the night and Sunday pauses only hold campaigns, and an alert is never counted as a campaign message. Each alert SMS appears in the queue and uses the daily quota of the SIM that sends it.
Send a test SMS queues one test SMS per number, with the saved settings.
Alerts go through your own mail server; nothing passes through us.
| Field | What to enter |
|---|---|
| SMTP server | The outgoing server of your mail provider, for example smtp.example.com |
| Port | Usually 587 (STARTTLS), 465 (TLS from the start) or 25 (none). Default 587 |
| Security | STARTTLS, TLS from the start, or None. With None, the password is only sent to a server on the same machine |
| Username | The mailbox login, often its address. Empty if your server asks for none |
| Password | Stored encrypted and never shown again. Leave empty to keep the saved one; tick Remove the saved password to delete it |
| Sender | The address alerts come from, optionally with a name: Gateway <alerts@example.com> |
| Recipients | Up to 10 addresses |
Send a test e-mail connects to the server and sends one e-mail with the saved settings. If it fails, the message shows the server's answer (for example "535 authentication failed").
Browser notifications
With Browser notifications on, alerts reach:
- every browser a user subscribed, as a system notification, even when the dashboard is closed;
- every open dashboard, as a notice in the page with a short sound.
In This browser, each user clicks Enable on this browser and accepts the browser's permission request, then can Send a test notification. The list shows the browsers subscribed by your account, with the date of their last notification; the bin icon unsubscribes one. Sound for alerts in the page is remembered on this browser only (default on).
Notifications while the dashboard is closed need a secure address: the dashboard must be open over
HTTPS, or on localhost. A gateway opened in plain http on an IP address cannot offer them, and
the tab says so; alerts then still appear, with their sound, in every open dashboard. Give your
gateway a domain name with HTTPS (see the installation guide)
to receive them with the dashboard closed.
With the API
| Method | Path | What it does |
|---|---|---|
GET |
/api/v1/settings |
The settings in force and the fleet version |
PATCH |
/api/v1/settings |
Changes some settings. Blocks sending, window, device, autoresponder, backup; an omitted field is left as it is |
GET |
/api/v1/devices/{deviceId}/settings |
One phone's own values and the resulting settings |
PATCH |
/api/v1/devices/{deviceId}/settings |
Changes one phone's own values; null hands a field back to the global setting |
GET |
/api/v1/notifications/settings |
The notification settings (the SMTP password is never returned, email.passwordSet says if one is stored) |
PUT |
/api/v1/notifications/settings |
Replaces them. email.password omitted keeps the stored one, "" removes it |
POST |
/api/v1/notifications/test |
{"channel": "sms"} or {"channel": "email"}: sends a test; outcome is sent, not_configured, no_sender or failed with detail |
GET, POST, DELETE |
/api/v1/notifications/push/... |
The browser subscriptions of the signed-in user. Dashboard session only: an API key has no browser |
Field names follow the screen: sending.retryEnabled, sending.maxAttempts,
sending.backoffSeconds, sending.ackTimeoutSeconds, sending.ratePerMinutePerSim,
sending.minIntervalSecondsPerSim,
window.timezone, window.nightPauseEnabled, window.nightPauseFrom, window.nightPauseTo,
window.pauseOnSunday, device.syncIntervalSeconds, device.stripDiacritics,
device.trimWhitespace, device.uppercase, device.autoStart, device.keepScreenOn,
autoresponder.enabled, backup.enabled, backup.frequency (daily or interval),
backup.dailyAt, backup.intervalHours, backup.retention. Example:
curl -X PATCH https://sms.example.com/api/v1/settings \
-H "X-API-KEY: $API_KEY" -H "Content-Type: application/json" \
-d '{"window": {"timezone": "Europe/Paris", "nightPauseEnabled": true}}'
Changing settings needs a key with the admin scope. See API keys.
What is not in this screen
Some values are chosen when the gateway is installed and change only with a restart: the public
address, the port, the log level, the retention of the activity log, the automatic routing mode. They
are variables of the .env file, described in the
installation guide. No setting of this
screen has an environment variable counterpart, and no environment variable can be changed here.
Troubleshooting
| What you see | Why, and what to do |
|---|---|
| The fields are greyed out | Your account is not Superadmin |
| Save refused with an error on the time zone | Pick a zone from the list |
| Save refused on the night pause | From and To are equal: the pause would cover nothing |
| Save refused on the waits between attempts | Write whole numbers of seconds separated by commas, 10 values at most |
| The text size changed back on another computer | Display settings are kept per computer, by design |
| Campaigns send at night although the pause is on | Check the Time zone: the pause is read in the platform time zone, not in yours |