Messaging
Off is a total wall — nothing sends, nothing is attributed inbound.
The machine surface: sending with the api key, media up/down, and webhooks to their system. Off pauses the integration (owed webhooks are voided); the inbox keeps working.
Off closes the inbox AND stops keeping their messages: each one is deleted the moment it is delivered (and its webhook accepted), or after 48 hours when delivery keeps failing. For API-only tenants that must not leave content here.
Comma-separated. This list is the authorisation boundary: it decides what the tenant may send as and which inbound belongs to it.
Customer-facing, used in any reply this gateway sends on their behalf. The tenant name is a slug, not something to put in front of a customer.
0 keeps history forever. A nightly sweep enforces this and deletes the archived attachments with it.
Rate card

What this tenant is charged, in dollars. Fractions of a cent are fine and are kept exactly — $0.0055 a segment stays $0.0055, never rounded to a penny. Leave everything at 0 and the tenant shows on the Billing page as unpriced rather than as owing nothing.

Segments × recipients — what the carrier charges for.
Added on top, either direction.
The label on the invoice. Nothing here converts between currencies.
Spending limit
A billable segment is segments × recipients — what the carrier charges for. 0 uses the gateway's own backstop; −1 means no limit at all. Sends are refused at the ceiling and resume when the period rolls over; STOP replies always go out.
Hours and automatic replies
IANA zone. Blank uses the gateway's own.
JSON by weekday. A missing or null day is closed; blank means always open. A close earlier than the open crosses midnight. Anything unreadable is treated as always open.
JSON list of {word, reply}. Answers a text that IS the word — "HOURS", "hours?" — never one that merely contains it. STOP and HELP are handled by compliance first and never reach these.
From the campaign registry once this tenant's numbers are registered. Recorded here so the console can say who is registered and who is sending unregistered.
Sent once per conversation per quiet period, never once per incoming text. Blank sends nothing.
Off by default. The carrier may already answer these, and two confirmations for one STOP is worse than the one that already arrived. Enforcement of STOP is always on regardless.
Only used when the switch above is on.
Forwarding to the tenant's app
Where inbound messages are POSTed. Blank makes the tenant send-only.
Where attachment BYTES are pushed, as one multipart file part.
Sent as Authorization on both pushes.

Add an inbox user

A user belongs to exactly one. The same address in two workspaces is two accounts with two passwords.
At least 12 characters. Written only — it can never be read back.

Sonaline App

Add a line

The number the person is known by, e.g. 202.
Optional. What the person sees this line called; they can rename it in the app. Blank shows the extension alone.
The SIP auth username on the PBX, often the extension itself. It only has to be unique on that PBX: the app signs in to the SBC under a login generated per line (shown on the line above).
e.g. pbx.acme.com, or 10.0.0.5:5061;transport=tcp.
Leave blank and the SBC asks the PBX for it.
The extension's SIP password on the PBX.
Whether the SBC records this line's calls. "Follow workspace" is the workspace's own switch (Settings → Phone → Calls are recorded); On or Off overrides it for this line alone. The person sees REC in the app either way it lands on recorded.

Lets the app read this line's mailbox. The mailbox is read through the box on the house PBX (vpbx1), so tick this only for a line that lives there — for a line on another PBX it does nothing. While it is off the app hides voicemail for this line. Off for every new line.

New tenant

The business, its numbers, its first sign-in and its integration — one pass.

Letters, digits and underscores — the internal id, e.g. acme_plumbing. Cannot change later.
Comma-separated. Must already exist on the carrier account.
Optional, but unregistered traffic gets filtered — the Numbers view will keep flagging it.

Add an operator

Optional. The email is what lands in the audit trail.
At least 12 characters. Written only — it can never be read back.
Disabling ends every session they have open, at once.

Invoice

ItemQuantity RateAmount
Total