Appearance
SMS and email setup
Customer messages go out through your own email and SMS accounts, so they come from your domain and sender name. Credentials are stored encrypted per business and never shown again after you save them.
Open Admin > Email and SMS. You need integrations.manage. There's one block for Email and one for SMS. Each shows the current service, the last test result, how many messages were sent and failed, and a "Change" button.
Built-in or your own
Both channels start on the built-in service, which sends from the server's own accounts:
| Channel | Built-in uses | Set by |
|---|---|---|
| The server's mail settings | MAIL_* in .env | |
| SMS | The server's Twilio account | TWILIO_* in .env |
If the server's account isn't set up, the block warns that the built-in service isn't ready. The built-in service is fine for trying the product. Move to your own accounts before real customers, so mail passes SPF and DKIM for your domain and texts show your sender.
Built-in SMS can't receive replies.
Email services
| Service | You enter |
|---|---|
| SMTP server | Server, port, security (STARTTLS usually 587, SSL/TLS usually 465, or none), username, password, From address |
| Microsoft 365 | Directory (tenant) ID, Application (client) ID, client secret, and the Mailbox to send from. Needs an app registration in Entra ID with the Mail.Send application permission. Messages also show in that mailbox's Sent Items |
| Resend | API key, From address |
| SendGrid | API key, From address |
| Postmark | Server API token, optional message stream, From address |
| Mailgun | Sending domain, region (US or EU), sending API key, From address |
| Amazon SES | Region (such as ap-southeast-2), access key ID, secret access key, From address |
The From address must be on a domain you've verified with that service. A mail server that sits on this server or a private network is refused: SMTP hosts must be on the public internet.
From name, reply-to and an office copy (BCC) are set in Admin > Documents. See document templates.
SMS services
| Service | You enter | Replies |
|---|---|---|
| Twilio | Account SID, auth token, and a Sender number or a Messaging service SID | Yes |
| ClickSend | Username, API key, optional Sender | Yes |
| MessageMedia | API key, API secret, optional Sender | No |
| Vonage | API key, API secret, Sender | No |
| Telnyx | API key, Sender, and the Webhook public key if you want replies | Yes |
A sender can be a number in international form (+61400000000) or, where the service allows it, a sender name.
Receive replies
Replies land in the Messages inbox. They need Twilio, ClickSend or Telnyx.
- Choose the service and save. The SMS block now shows a reply address that looks like:
https://your-domain/api/v1/webhooks/sms/<service>/<secret> - Paste it into the service:
- Twilio: the number's "A message comes in" webhook, HTTP POST.
- ClickSend: an Inbound SMS rule that posts to the address.
- Telnyx: the messaging profile's inbound webhook. Also paste the public key from Account, Keys and credentials into "Webhook public key".
- Text your number from a mobile and check the reply shows up.
The address contains a secret that identifies your business, so keep it private. Twilio and Telnyx requests are also checked by signature (Twilio with your auth token, Telnyx with the public key). ClickSend doesn't sign requests, so the secret in the address is the only check.
Send a test
Choose "Send a test" on a block, enter an address or number, and send. The result shows under "Last test" with the service's error if it failed. Do this after every change.
When something fails
A failed message shows in Admin > Messages > Delivery log with the service's reason. Fix the cause (a bad key, an unverified From domain, an out-of-credit account) and use Resend.
What this doesn't cover
- The phone agent uses the same Twilio account. See AI setup.
- Delivery receipts for monitoring-alert texts still come through the server's own Twilio account (
TWILIO_*), not the business's. This is a known gap.