Using Twilio Conversations, you can build rich conversations between more than two parties over multiple channels, such as SMS and Chat.
In high-value interactions, such as buying a house, financial advising, and coordinating deliveries, customers expect communication involving a group of participants to be seamless. Good news! Twilio Conversations natively supports Group MMS for you to build these experiences for your end-users.
In this guide, we’ll walk you through creating a Conversation that supports group texting.
Group texting, or more specifically Group MMS, uses the MMS (Multimedia Messaging Service) protocol to exchange ordinary text messages among a group of three or more people, rather than as a one-to-one interaction.
In a Twilio-powered group texting Conversation, all of the Participants are visible, and each Participant can see the author of each message. In other words, each message can be displayed with the person who sent it to the group text. This is the type of functionality that many users already expect from applications such as WhatsApp, Slack, and iMessage.
Even if you have Participants joining across different channels, Twilio Conversations does all of the message routing and media handling.
Group MMS is in Public Beta, and Twilio is actively tweaking the experience to work better for you.
If you’re operating in the US or Canada (Group MMS only works on
+1 numbers), you can send messages from a projected address to create group texts. This number becomes that Participant’s address — the projection of that Participant — into a group MMS Conversation.
You can have the following types of Participants in a group text:
- A Participant joining from their native texting experience, with simply a messaging address (their personal mobile number).
- A Chat participant, who has a Chat Identity (like a username) and a projected address (Twilio phone number).
- An unattached Projected Address (Twilio phone number) with no backing Chat Identity. In this case, the projected address acts like a “gateway” number for a customer to participate in the group text.
Group Texting is only supported on +1 (US+Canada) long code numbers. Toll-free numbers and short codes cannot exchange group texts from Twilio.
There is a limit of 10 total Participants in a Group MMS Conversation.
If you have built a one-to-one Conversation (like in our Conversations Quickstart), you are probably familiar with the term proxy address: the Twilio phone number that routes all of the messages to the native SMS conversation. The proxy address "sticks" to the mobile-based participant on SMS. You can think of it as their window into the Conversation, which may include another SMS or Chat participant. Notably, the SMS participant receives all of the messages through the one proxy address number and doesn’t know how many people it represents.
To set up Group texting with Conversations, you should instead use a projected address to represent every Participant who does not join the Conversation by a native channel such as SMS. You can think of the projected address as the “avatar” of a Chat participant into the MMS conversation. The projected address “sticks” to the Chat participant, so in the group text, every Participant can see who said what by way of the attached phone number. The projected address, often used to represent an employee or company representative, is the number that you might put on your business card, for example.
For example, in the following screenshot, you can see the interaction of three unique Participants:
- The first SMS Participant(1), interacting through the native SMS app on their mobile device.
- The Projected Address(1), representing a Chat participant.
- The second SMS Participant(2), representing a different SMS participant and interacting through the native SMS app on their mobile device.
You can share one Projected Address between multiple participants in the group text Conversation and update the backing identity as necessary. This functionality supports uses cases such as transferring between support agents representing a business in a group text.
For example, let’s say you need to create a group text with one Projected Address that will represent your business, staffed by multiple agents on Chat. In this case, you add a standalone Projected Address as a Participant and update it with the identity of the first agent. Later, when that agent escalates the issue to their supervisor, you update the Projected Address to the supervisor's Chat identity. From the end-user’s viewpoint, they are still communicating with the same phone number (Projected Address) that represents your business.
A Projected Address that has no backing Chat identity can still be part of your Conversation.
You can use a standalone Projected Address if you want to send and receive messages in the group text Conversation only through the Twilio Conversations REST API. In this case, when you send messages using the REST API, you’ll need to specify the projected address itself as the
The Conversations API automatically creates a new Conversation when a group message reaches a projected address and there is no existing Conversation with the same group of Participants.
Please see our guide to inbound messaging handling and autocreation in Conversations for more detail.
For example, a real estate agent and prospective homebuyer are chatting one-on-one about prospective homes. The homebuyer, wanting to include their partner in the discussion, sends a message to their partner’s mobile number as well as the real estate agent, whose avatar in the Conversation is a projected address/Twilio number. No Conversation yet exists between these three numbers, so this creates a new Conversation with all three numbers as separate Participants. In this newly created Conversation, all members see the original message from the homebuyer to the second homebuyer and the real estate agent as the first message.
Now that we’ve covered the concepts of group texting, let’s take a look at how we’d set up it up for two common scenarios.
Twilio Conversations is built on top of several Twilio products. It may be useful to pull up a document or sticky note to keep track of the various values that you’ll need throughout this documentation. For the examples requiring two SMS Participants, we recommend keeping a friend (or just their phone) handy for testing.
If you haven’t already done so, you’ll want to purchase a Twilio Phone Number to complete the rest of this guide. If you have a Twilio Phone Number already, you can skip to the next section.
In the Twilio console, search for and purchase an available phone number capable of sending MMS. This Phone Number will serve as the projected address for the Chat participant.
This is a common scenario in real estate, where the purchase of a single-family home is often a family decision. We will set up group texting for three Participants:
- The real estate agent, chatting from within a dedicated real estate customer relations management application.
- Homebuyer 1, over SMS.
- Homebuyer 2, over SMS.
To do this, you’ll need a Twilio Phone Number and you’ll need access to the REST API. We have included code samples in supported programming languages, as well as curl and the Twilio CLI, which makes experimenting a snap.
First, we need to create the Conversation by making a request to the Twilio REST API.
Now that we have the Conversation, we can add the real estate agent as a Participant. In this guide, we are representing the Chat Participant’s messages with the Conversations REST API to get up and running. At the end of this guide, we’ll provide links to documentation to get you started on building a custom CRM.
The Chat participant (the real estate agent) has been added to the Conversation, but it’s pretty lonely in there with no clients. Next, we need to add the first homebuyer, who joins via the native texting (SMS) app on their phone.
You only have to specify the SMS participant’s own personal phone number in
MessagingBinding.Address. When using group texting, you won’t need to specify proxy addresses.
Before our third Participant joins, we can start by sending messages between the two connected Participants. Let’s send a message from the agent to the homebuyer using the REST API.
Once the homebuyer receives the message, you’ll be able to verify that from the REST API. Using Conversations Webhooks, you can also capture those responses for whatever you need, such as logging or adding helpful chatbots. If you’ve built an app out of our Chat SDK, you’ll get those messages in real time via Twilio’s secure websocket gateways.
Now it’s time to turn this into a true group texting experience by adding the second homebuyer. Just like when we added the first homebuyer to the Conversation, we’ll add the second using a REST API call.
Let’s welcome the second homebuyer to the group text with one more message from the real estate agent.
Now you can see that all three Participants (the real estate egent and the two homebuyers) are part of the Conversation representing our group text. We’ve been simulating the Chat participant (the real estate agent) using the REST API. However, notice that you and the second homebuyer (or your friend) can use your native texting application to participate in the Conversation as well. The messages flow freely back and forth:
In the first scenario, we created a group texting Conversation between one real estate agent on Chat participant and two SMS participants.
The second scenario is more common when you have one end-user and two employees, as you may see in financial consultations. For this example, we'll set up a Conversation for:
- The financial advisor, joining from a dedicated application built with Chat.
- The assistant, also chatting from the same application.
- The end-user/client, connecting to the Conversation via SMS.
Because this group text involves two different Chat Participants—the financial advisor and the assistant—we will need two projected addresses, one for each of them. If you haven’t already done so, purchase an additional Twilio phone number to use as the second projected address.
In this scenario, we include one assistant on Chat, who is represented with a Projected Address in the Conversation. If you need to transfer seamlessly, you can update the Projected Address’s backing Chat identity to the new assistant. The end-user/client will consistently see the same Projected Address (Twilio Phone Number), even if the assistant on Chat changes behind the scenes.
If you continue to the second example in this guide, you’ll need two Twilio Phone Numbers. To free up the number you’ve already purchased, we can delete the Conversation from the first example.
Alternatively, you can purchase two new Twilio Phone Numbers to use as projected addresses in this second example.
We’ll begin this example by making a request to the Twilio REST API to create a new Conversation for the financial consultation.
With the Conversation created, we’ll next add the financial advisor. This will be a Chat participant, so we need to assign them a projected address. Use one of your Twilio Phone Numbers for this.
In this example, we will be adding the end-user (the client being advised) to the group texting experience by making another REST API call.
Because this Participant is joining via the native SMS experience on their device, we’ll use their mobile number as the Messaging Binding Address.
Before we add our third Participant to the Conversation, we can make sure the two Participants are connected. We’ll use the Conversations REST API to send a message from the Chat-based Financial Advisor to the SMS-based advisee.
It’s time to add the assistant to the group text as a Chat participant. Recall that every non-SMS participant needs a projected address to join in on the group texting fun.
In this case, we’re adding the projected address with an attached Chat Participant all at once, but you could also create the Conversation with an unattached or “gateway” projected address. When you’re reading for the assistant to jump into the group text, you can update the projected address by attaching the assistant’s chat identity.
Now that all of the Participants are in our Conversation, we’ll send one more message, this time from the assistant to the rest of the group.
At this point, you should have received a message from two separate Twilio phone numbers, each representing a Chat participant in the group text. It may look like a 1:1 Conversation, but when you send messages back and forth, you can see that all parties are uniquely identitifed.
- Try sending an SMS back from your personal device as the advisee.
- Send another message from the Financial Advisor using the REST API to see all three Participants in the Conversation.
Twilio Conversations’ native support of group MMS allows you to create rich, multi-channel interactions with your users. In this guide, we walked through creating two different group texting scenarios with different ratios of SMS and Chat participants using the projected address.
Now that you can create group texting experiences for your customers, you can also take advantage of the other features in Twilio Conversations:
- Review how to create 1-1 interactions with the Conversations Quickstart.
- Explore the Chat SDKs for building custom applications.
- Connect WhatsApp to Conversations.
- Configure Webhooks to monitor and modify Conversations.