Skip to content
Docs
Email & messaging

Twilio

Let hires text your customers from your business's Twilio number, read the conversation, and be woken when a customer texts back.

Explore 2 actions and their permissionsExact inputs, sign-in scopes, access limits and approval rules.

With Twilio connected, a hire can:

  • send a text (SMS) to a customer from your business's number,
  • read the texts with one customer, both ways, or the latest texts people sent you,
  • be woken when a customer texts your number.

Texts go out from your Twilio number (or Messaging Service), in your business's name.

1. Get what Roster needs from Twilio

Open API keys & auth tokens in the Twilio console (the form in Roster links there too) and copy:

  • the Account SID (starts with AC),
  • the Auth token.

You also need a Twilio phone number that can send texts, or a Messaging Service (its SID starts with MG).

Prefer not to give Roster the Auth token for sending? Make an API key instead: on the same page, Create API key, type Standard, and copy its SID (starts with SK) and secret. Roster still needs the Auth token to check that replies really come from Twilio, so give it too if hires should receive texts.

2. Connect it in Roster

  1. Open Integrations → Tools → Add a tool, search for Twilio and choose it.
  2. How Roster signs in: Account SID and Auth Token, or An API key (then paste the key's SID and secret).
  3. Fill in:
    • Account SID and Auth token.
    • Send from: your Twilio number with + and the country code, like +97145550100, or the Messaging Service SID.
    • Business name: your business's name, like Bayt Studio.
  4. Click Connect. Roster tells you at once if a SID doesn't look right (AC…, SK…), then checks the credentials with Twilio, and the connection shows Connected as your Twilio account. If Twilio refuses them, Roster says so and saves nothing.

3. Let customers' texts reach Roster

When you send from a phone number and gave the Auth token, Roster points the number's incoming texts at itself when you connect: there's nothing to paste. Removing the connection points them away from Roster again.

For a Messaging Service, or to do it by hand, the connection shows the address Twilio should send texts to, with a Copy address button:

  1. In Twilio, open Phone Numbers → Manage → Active numbers and choose your number (or open your Messaging Service's Integration page).
  2. Under Messaging, A message comes in: choose Webhook, paste the address, and keep HTTP POST.
  3. Save.

Roster checks every text really comes from Twilio, using the Auth token, and ignores anything else. Until Twilio has sent something, a watching hire checks your number for new texts every so often instead.

4. Give hires access

On the hire's Tools tab, click Give access on Twilio:

  • Read only: it can read texts, and nothing else.
  • Read and write: it can also send texts.
  • Who it may text: full numbers like +971501234567, or country codes like +971. Leave it empty to let it text anyone.

If someone replies STOP, Twilio stops texts to them until they reply START. A hire that tries is told so, and doesn't keep trying.

First texts wait for approval

A hire's first text to a number with no texts either way (none sent to it, none received from it, in Roster or in your Twilio account) waits for a person's approval. The hire asks in the thread with the number and the text, and when the approver says yes, Roster sends exactly that text, once. After that, texts to that number go out without asking.

Numbers your team already texts from its own phones can be added under Settings → Workspace → People you're already in touch with (more), so first texts to them don't ask. Approving a first text adds the number there too.

Waking a hire when a customer texts

A hire's responsibility can watch Twilio: when a customer texts your number, the hire is woken with the text, so it can answer.

Saying it's an AI assistant

A hire never pretends to be a person, and always says it's AI when asked. If you also want it to say so up front, turn on Say it's an AI assistant in first messages to outsiders under Settings → Workspace (more). Then the first text a hire sends to a number starts with "This is the AI assistant for" and your business name.

Texting customers is regulated in many countries (consent, quiet hours, registering your number). Twilio's console tells you what your number needs.

Tools and permissions reference

This reference is built from the same definitions Roster uses to connect Twilio and give hires access. It updates with each release.

Authentication and requested permissions

The account or app you connect sets the outer limit. Each hire's access can narrow it further. Connecting a tool gives it to no hire until you give access on that hire's Tools tab.

User name and password or key pair

Uses Account SID and Auth token.

For: How Roster signs in: Account SID and Auth Token.

User name and password or key pair

In Twilio's console: Account → API keys & tokens → Create API key (Standard). Starts with SK.

For: How Roster signs in: An API key.

No fixed permission list is declared for this connection. Review the sign-in consent screen, the account's roles, and the service's own documentation before connecting.

Connection fields

Twilio connection fields
FieldWhat to provide
How Roster signs in
signIn
Optional
Use the value for your account or connection.

Choices: Account SID and Auth Token (auth-token); An API key (api-key).

Starts with: auth-token.

API key SID
apiKeySid
Required
In Twilio's console: Account → API keys & tokens → Create API key (Standard). Starts with SK.

Shown when signIn: api-key.

API key secret
apiKeySecret
Required · sealed secret
Use the value for your account or connection.

Shown when signIn: api-key.

Account SID
accountSid
Required
On the Twilio console's home page, under Account info.
Auth token
authToken
Optional · sealed secret
Next to the Account SID. Roster checks with it that replies really come from Twilio, so it's needed to receive them even with an API key.
Send from
from
Required
Your Twilio number, with + and country code, or a Messaging Service SID (MG…).
Business name
businessName
Required
Used when hires say they're your business's AI assistant. Never a made-up person's name.

Per-hire limits

Read-only hires receive only actions that read. Read-and-write access also allows actions that change things, where the connection itself permits them. An empty resource allowlist usually means everything the connected account can reach; each field below explains its meaning.

Twilio per-hire limits
FieldWhat to provide
Who it may text
numbers
Optional
Full numbers like +971501234567, or country codes like +971. Leave empty to let it text anyone.

Actions

2 actions: 1 only read and 1 change something. A read action may still need approval when your workspace or hire is set to ask. A locked approval requirement always applies.

2 of 2 actions. Open an action for its arguments and full input schema.

send_smsRead and write

Text a customer from the business's number. Keep it short: long texts are split and cost more. It goes out in the business's name: write as the business, never sign with a person's name or say you're one.

Approval: when it writes to someone outside your team for the first time.

Arguments for send_sms
ArgumentTypeDetails
toRequiredstringthe customer's number with country code, like +971501234567
textRequiredstringSee input schema below.
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "minLength": 5,
      "description": "the customer's number with country code, like +971501234567"
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 1540
    }
  },
  "required": [
    "to",
    "text"
  ]
}
read_messagesRead only

Read the texts with one customer (oldest first, what they sent and what was sent to them), or without a number, the latest texts people sent to the business.

Approval: Uses your workspace and hire approval settings.

Arguments for read_messages
ArgumentTypeDetails
numberOptionalstringthe customer's number; leave out for the latest
limitOptionalintegerSee input schema below.Default: 30
Full input schema (JSON)
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "number": {
      "description": "the customer's number; leave out for the latest",
      "type": "string",
      "minLength": 5
    },
    "limit": {
      "default": 30,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  }
}

Watches and incoming events

  • This integration supports a responsibility that watches for changes. The guide above explains what it checks and how to limit it.
  • Incoming webhooks are supported. Roster can register the connection's callback with the service.

Limits and troubleshooting

  • Permission errors: check both the connected account's rights and the hire's resource and read/write limits.
  • Expired or revoked access: reconnect or replace the key on the connection.
  • Rate limits and unavailable services can interrupt work. The hire's timecard records the outcome.
  • The action schema describes accepted inputs. It does not grant additional access or bypass approvals.

Service documentation · Integration source reference

On this page