---
title: "How to Build an RCS Business Messaging Campaign with Twilio in PHP"
description: "Twilio’s tutorial explains how to build an RCS Business Messaging campaign in PHP, reusing the same Programmable Messaging API used for SMS. RCS turns standard text messages into branded conversations with images, carousels, verified sender logos, suggested replies, and read receipts delivered through the recipient’s default messaging app. The walkthrough covers registering an RCS Sender, attaching it to a Messaging Service, and designing a rich card template in the Twilio Content Template Builder. It then shows how to broadcast the campaign to a recipient list, track delivery status via a status callback webhook, and capture replies through an inbound webhook. Troubleshooting guidance addresses common issues such as messages falling back to SMS, senders pending approval, and missing status callbacks."
---

# How to Build an RCS Business Messaging Campaign with Twilio in PHP

[Twilio](https://yomu.fyi/company/twilio) · Dhruv Patel, Matthew Setter · Sep 28, 2026

**Type:** Tutorial

## Summary

Twilio’s tutorial explains how to build an RCS Business Messaging campaign in PHP, reusing the same Programmable Messaging API used for SMS. RCS turns standard text messages into branded conversations with images, carousels, verified sender logos, suggested replies, and read receipts delivered through the recipient’s default messaging app. The walkthrough covers registering an RCS Sender, attaching it to a Messaging Service, and designing a rich card template in the Twilio Content Template Builder. It then shows how to broadcast the campaign to a recipient list, track delivery status via a status callback webhook, and capture replies through an inbound webhook. Troubleshooting guidance addresses common issues such as messages falling back to SMS, senders pending approval, and missing status callbacks.

## Context

The tutorial targets PHP developers who want to send rich, interactive RCS messages through Twilio. It assumes a Twilio account, a Messaging Service with an SMS/MMS phone number, and a registered RCS Sender. The post explains the RCS campaign architecture: the RCS Sender is the verified brand identity, the status callback reports message state changes, and the inbound webhook captures recipient replies. It also notes that RCS messages can include a hero image, headline, body, and suggested reply buttons, and that templates can be designed via the Twilio Content Template Builder or through the web interface.

## Approach / What changed

The post provides a step-by-step PHP implementation: initialize a PHP project with Composer, create an RCS Content Template with hero image, headline, body, and action buttons, then use the Twilio PHP SDK to send a broadcast to a list of recipients. It instructs wiring status and inbound webhooks in the Twilio Console so delivery state changes and recipient replies are captured. It closes with troubleshooting steps for common failures and suggestions for extending the campaign, such as pulling recipients from a database or adding a carousel template.

## Takeaways

- RCS Business Messaging through Twilio reuses the same Programmable Messaging API as SMS, so PHP developers can send rich messages without learning a new protocol.
- A complete RCS campaign requires an RCS Sender (verified brand identity), a Messaging Service with a sender attached, a Content Template with hero image, headline, body, and suggested replies, plus status and inbound webhooks.
- If messages arrive as SMS instead of RCS, the recipient’s device may not support RCS or the sender may still be pending approval; status callbacks can also fail if the Messaging Service lacks a sender that can reach the recipient.

## FAQ

### Why are my RCS messages being delivered as SMS instead of RCS?

The recipient's device may not support RCS, or the RCS Sender may still be pending approval. Verify that the RCS Sender is attached to the Messaging Service and that the recipient's phone number is in E.164 format.

### How do I track delivery status and capture replies?

Set up a status callback webhook that Twilio calls when a message changes state (queued, sent, delivered, read, failed) and an inbound webhook that Twilio calls when a recipient taps a suggested reply or sends a message back. Configure both in the Twilio Console under your RCS sender.

### What can I do to extend the campaign after the basics?

You can swap the recipient JSON file for a real audience source like Twilio Segment or your own database, add a carousel template to showcase multiple products in one message, and persist status events to a data store for deeper analysis.

**Tags:** [Messaging](https://yomu.fyi/topic/messaging), [PHP](https://yomu.fyi/topic/php), [RCS](https://yomu.fyi/topic/rcs), [Twilio](https://yomu.fyi/topic/twilio)

- Source: [Twilio](https://www.twilio.com/en-us/blog/developers/tutorials/product/build-rcs-business-messaging-campaign-twilio-php)
- Source URL: https://www.twilio.com/en-us/blog/developers/tutorials/product/build-rcs-business-messaging-campaign-twilio-php
- Ingested by Yomu: 2026-09-29T21:00:16.507Z

[Read original post](https://www.twilio.com/en-us/blog/developers/tutorials/product/build-rcs-business-messaging-campaign-twilio-php)
