# RCS messages through Twilio

RCS (Rich Communication Services) messages arrive in the phone's built-in messaging app as a chat from your brand, with your logo and a card, a carousel, media, or buttons instead of plain text. Pushwoosh sends them as part of the SMS channel through Twilio. You build the message as a template in Twilio, pick it in an [SMS preset](/product/content/sms-presets/#send-over-rcs), and phones that can't receive RCS get an SMS instead.

## How RCS and the SMS fallback work

Each language of an SMS preset can carry a Twilio content template. When the preset is sent, Twilio tries to deliver the template over RCS. If the recipient's phone or carrier doesn't support RCS, Twilio sends an SMS built from the template's **Text** type.

The SMS fallback comes from the template, not from the **Message** field of the preset. If the template has no **Text** type, phones without RCS don't get the message at all.

Languages of the preset without a template are sent as a regular SMS with the **Message** text.

## What you need to send RCS

RCS works only through your own Twilio account with a Messaging Service and a carrier-approved RCS sender.

* **Twilio as the SMS provider.** Connect it with your own Twilio **Account SID** and **Auth token**. If Pushwoosh provides the Twilio number and credentials for your project, RCS isn't available, and such sends are rejected.
* **A Twilio Messaging Service.** Its sender pool holds an RCS sender and an SMS number. Its SID goes into **Messaging Service SID** in the SMS platform settings. Without it, a message with a template fails to send.
* **A From number.** Set it in the SMS platform settings to the SMS number from the Messaging Service pool. Pushwoosh doesn't send Twilio SMS without it, even when a Messaging Service is set.
* **An RCS sender approved by carriers** in the countries you send to. Twilio handles the registration. According to Twilio, it takes 4–6 weeks or more per country.

## Set up RCS in Twilio

These steps run in the Twilio Console. Menu names follow the [Twilio RCS onboarding guide](https://www.twilio.com/docs/rcs/onboarding) and may differ slightly in your console.

### Create an RCS sender

1. Go to **Communications → Numbers & senders → Overview → RCS**.
2. Click **Create RCS Sender**.
3. Enter a **Sender display name**.
4. Accept the terms and click **Continue**.
5. On **Public details**, fill in every field:

   * **Display name** and **Description**.
   * **Logo image** (224×224 px, up to 50 KB) and **Banner image** (1440×448 px, up to 200 KB), as public JPG or PNG URLs.
   * **Accent color** with a contrast ratio of at least 4.5:1 against white, for example `#1A73E8`.
   * A contact phone number or email, a **Privacy policy URL**, and a **Terms of service URL**.

6. Click **Next**.

### Add a test phone

Until carriers approve the sender, it delivers only to test phones.

1. On **Try it out**, click **Add device to test this sender**.
2. Enter an Android phone number in international format and click **Invite**.
3. On the phone, open the invitation in Google Messages and tap **Make me a tester**.
4. In the console, confirm that the owner accepted the invitation.
5. Send a message from **Your message**. It should arrive as a chat from your brand with the logo, not as an SMS.

### Register the sender with carriers

Twilio adds an RCS sender to a Messaging Service only after at least one carrier has approved it, so start the registration before you build the Messaging Service.

1. On the RCS sender, open **Compliance registration**.
2. Click **Add countries**.
3. Select the countries you send to and click **Save countries**.
4. Click **Start**.
5. Fill in the form and click **Submit registration**. For the US, Twilio has a separate **US registration** form.

The registration status shows as **Pending Review** until carriers approve it.

### Create a Messaging Service

1. Go to **Messaging → Services**.
2. Create a service.
3. In **Sender Pool**, add an SMS-capable Twilio number. Without it, phones without RCS get nothing.
4. Once at least one country shows **Approved** in **Compliance registration**, add the RCS sender to **Sender Pool**. While every country is in **Pending Review**, Twilio doesn't let you add it.
5. Copy the service SID. It starts with `MG`.

### Build a content template

1. Go to **Messaging → Content Template Builder**.
2. Click **Create new**.
3. Choose an RCS-capable type: **Card**, **Carousel**, **Quick reply**, **Call to action**, or **Media**.
4. Fill in the content. For a value that changes per recipient, use a numbered variable, for example `{{1}}` for the first name in the card title.
5. Add the **Text** type to the same template. Twilio builds the SMS fallback from it.
6. Save the template.

## Connect Twilio in Pushwoosh

Pushwoosh sends RCS with the Twilio credentials and the Messaging Service you enter in the SMS platform settings.

1. Go to **Settings → Configure Platforms**.
2. Open **SMS**.
3. Set the SMS provider to **Twilio**.
4. Fill in the fields:

   * **From number:** the SMS number from the Messaging Service pool.
   * **Account SID** and **Auth token:** the credentials of the Twilio account that owns the RCS sender and the templates.
   * **Messaging Service SID (optional):** the `MG` SID of the Messaging Service. The field is optional for SMS, but RCS needs it.

5. Click **Apply**.

For the rest of the SMS settings, see [SMS platform configuration](/product/first-steps/start-with-your-project/configure-platforms/sms-configuration/). Delivery statuses of RCS messages need no webhook setup, because Pushwoosh submits the status callback URL to Twilio with every message.

## Receive replies

Replies to RCS messages reach Pushwoosh only through a webhook you set on the RCS sender.

1. In the Twilio Console, open the RCS sender and go to **Configuration**.
2. Set **Webhook URL for incoming messages** to the incoming SMS URL from [SMS provider webhooks](/developer/first-steps/connect-messaging-services/sms-configuration/sms-provider-webhooks/#automatic-setup), with the `POST` method.
3. Click **Save configuration**.

Pushwoosh handles an RCS reply the same way as an SMS reply. It fires the `PW_SMSReceived` event for the sender's phone number, and a `STOP` reply sets the subscriber's marketing consent tag to `false`. See [SMS and Viber marketing consent](/product/messaging-channels/sms-viber-marketing-consent/).

## Send an RCS message

An RCS message goes out wherever you send an SMS preset that has a template.

1. Open or create an SMS preset.
2. Pick a Twilio template for each language in the **RCS** block, as described in [Send over RCS](/product/content/sms-presets/#send-over-rcs).
3. Send the preset in an [SMS campaign](/product/messaging-channels/sms/send-sms/send-one-time-sms/) or a [Customer Journey](/product/messaging-channels/sms/send-sms/send-sms-via-customer-journey/).