{"id":7515,"plugin_id":"Plugin_c266c85897248191be15eb07c415f89e","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:50:44.701Z","digest":"6ac90527c804055aa348111e12511d021fcea02ad5d0e35d599744c139eb321e","against":null,"payload":{"name":"twilio-rcs-messaging","description":"Send RCS Business Messages via Twilio. Covers compliance onboarding (7-part US process), sender profile setup, sending rich cards and carousels, SMS fallback, device support (Android + iOS 18 caveats), and common errors. Use this skill when building RCS messaging or onboarding an RCS sender.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":221}],"skill_md_contents":"---\nname: twilio-rcs-messaging\ndescription: >\n  Send RCS Business Messages via Twilio. Covers compliance onboarding\n  (7-part US process), sender profile setup, sending rich cards and\n  carousels, SMS fallback, device support (Android + iOS 18 caveats),\n  and common errors. Use this skill when building RCS messaging or\n  onboarding an RCS sender.\n---\n\n## Overview\n\nRCS (Rich Communication Services) Business Messaging delivers branded, rich messages natively in the phone's default messaging app — no separate app needed. Messages show your brand logo, colors, and verified sender name. Supports rich cards, carousels, suggested actions, and media.\n\n**RCS uses the same `messages.create()` API as SMS and WhatsApp.** For the full channel comparison and onboarding sequence, see `twilio-messaging-overview`.\n\n### Device Support\n\n| Platform | Support | Notes |\n|----------|---------|-------|\n| **Android** | Most devices via Google Messages | Carrier must also support RCS in the region |\n| **iOS** | iOS 18+ | **P2P RCS is not the same as RCS Business Messaging.** A device that sends RCS to other people may not receive RCS Business Messages — this depends on both Apple and the carrier. Check via `RcsCapabilityFetcher` before sending. |\n\n### Regional Availability\n\nRCS availability depends on carrier approval per country. See [RCS regional availability](https://www.twilio.com/docs/rcs/regional) for the current list. US carriers (T-Mobile, AT&T, Verizon) are supported. Global support is expanding.\n\n---\n\n## Prerequisites\n\n- Twilio **paid account** — free trials cannot use RCS\n- Messaging Service (RCS senders must be added to a Messaging Service)\n- Environment variables: `TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN`\n  — See `twilio-iam-auth-setup` for credential setup\n- SDK: `pip install twilio` / `npm install twilio`\n\n---\n\n## Compliance Onboarding (US)\n\nRCS onboarding takes **4-6 weeks minimum**. A Twilio onboarding specialist reviews everything before carrier submission. You won't be charged until you go live.\n\n### Part 1: Sender Profile Setup\n\nCreate your RCS Sender in Console with:\n\n| Asset | Requirements |\n|-------|-------------|\n| **Display name** | Must be unique — carriers reject identical names + logos |\n| **Logo** | 224x224px, max 50KB, PNG/JPEG |\n| **Banner** | 1140x448px, max 200KB |\n| **Accent color** | Hex code, must have 4.5:1 contrast ratio vs white |\n| **Description** | What your business does and why you're messaging |\n| **Phone number** | Customer support contact number |\n| **Website** | Must match business identity |\n\n### Part 2: Privacy Policy & Terms of Service\n\n- Privacy policy URL — must be publicly accessible\n- Terms of Service URL — must be publicly accessible\n- Both must cover SMS/RCS messaging, data handling, opt-out process\n- The privacy policy **must state** that information will be shared with third parties for the purpose of transmitting RCS messages\n- Some countries require local-language versions\n\nFor US-specific compliance details, see the [RCS Compliance Onboarding Guide](https://help.twilio.com/articles/49174994355355-RCS-Compliance-Onboarding-Guide).\n\n### Part 3: Eligibility & Acceptable Use\n\nUS carriers require:\n- Legal business name matching EIN records\n- EIN (Employer Identification Number)\n- Business must not be on restricted industries list (cannabis, firearms, etc.)\n- CTIA Messaging Principles and Best Practices handbook compliance\n\n### Part 4: Campaign Details\n\n- Use case category (transactional, promotional, OTP, mixed)\n- Traffic volume estimates\n- Campaign description with specific messaging scenarios\n- For recurring messages: frequency, content types\n\n### Part 5: Opt-In & Consent\n\n- Describe how users opt in to receive RCS messages\n- Must show explicit consent collection mechanism\n- Opt-in must be specific to RCS/messaging (not buried in general ToS)\n- HELP and STOP keyword handling required\n\n### Part 6: Sample Messages\n\n- 2+ sample messages that match your declared use case\n- Must include opt-out language\n- Must reflect actual message content (not generic)\n\n### Part 7: Common Rejection Reasons\n\n| Rejection reason | Fix |\n|-----------------|-----|\n| Display name not unique | Choose a distinct name — carriers reject duplicates |\n| Logo/banner don't meet specs | Check dimensions and file size exactly |\n| Privacy policy doesn't mention messaging | Add RCS/SMS data handling section |\n| Sample messages don't match use case | Align samples with campaign description |\n| Opt-in process too vague | Show specific UI/flow for consent collection |\n| Business info doesn't match EIN | Legal name and EIN must match IRS records exactly |\n| Media URLs not publicly accessible | All images/videos must be on public URLs — carriers verify during review |\n\n### Registration Flow\n\n1. **Create RCS Sender** in Console → complete all 7 parts above\n2. **Test Phase** — Add test devices, send and receive messages without carrier approval. Non-test devices get SMS fallback.\n3. **Compliance Submission** — Twilio specialist reviews, then submits to Google + carriers:\n   - **Google registration:** authorized rep details, opt-in/opt-out policy, use case video, interaction flow\n   - **US registration (additional):** legal business name + EIN, traffic metrics, CTIA compliance, HELP/STOP examples\n4. **Carrier approval** — Per-carrier, per-country. First carrier approval = you can go live in that country.\n5. **Go live** — Add RCS Sender to your Messaging Service. Start sending.\n\n---\n\n## Sending RCS Messages\n\nRCS uses the same `messages.create()` API. No address prefix needed — Twilio routes based on the sender type.\n\n**Python**\n```python\nimport os\nfrom twilio.rest import Client\n\nclient = Client(os.environ[\"TWILIO_ACCOUNT_SID\"], os.environ[\"TWILIO_AUTH_TOKEN\"])\n\nmessage = client.messages.create(\n    messaging_service_sid=\"MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    to=\"+15558675310\",\n    body=\"Your order has shipped! Track it here: https://example.com/track/12345\"\n)\nprint(message.sid, message.status)\n```\n\n**Node.js**\n```javascript\nconst twilio = require(\"twilio\");\nconst client = twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);\n\nconst message = await client.messages.create({\n    messagingServiceSid: \"MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    to: \"+15558675310\",\n    body: \"Your order has shipped! Track it here: https://example.com/track/12345\",\n});\nconsole.log(message.sid, message.status);\n```\n\n### Rich Cards & Carousels\n\nUse Content Templates for rich RCS messages (cards with images, titles, descriptions, and action buttons). Create templates via `twilio-content-template-builder`, then send with `contentSid`:\n\n**Python**\n```python\nmessage = client.messages.create(\n    messaging_service_sid=\"MGxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    to=\"+15558675310\",\n    content_sid=\"HXxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\",\n    content_variables='{\"1\": \"Order #12345\", \"2\": \"$49.99\"}'\n)\n```\n\n### SMS Fallback\n\nWhen a recipient's device doesn't support RCS Business Messaging, Twilio automatically falls back to SMS — no code changes needed. This is handled at the Messaging Service level.\n\n- Fallback is automatic when the Messaging Service has both RCS sender and phone numbers\n- If you send via `messagingServiceSid`, Twilio checks RCS capability first, then falls back to SMS\n- Without Twilio's fallback: the message simply fails to deliver (no automatic retry to SMS)\n\n---\n\n## Multiple RCS Senders\n\nA single brand can have multiple RCS senders, but each must have a **distinct use case** (e.g., one for transactional, one for marketing). The use case must be clearly different — carriers reject duplicate-purpose senders for the same brand.\n\n- Each sender has its own display name, logo, and campaign details\n- All senders go through independent carrier approval\n- Each sender can only belong to one Messaging Service\n\n## ISV Path\n\nISVs (Independent Software Vendors) registering RCS senders for client businesses:\n\n- Can register on behalf of clients using the same compliance process\n- Each client business needs its own RCS Sender with its own branding\n- The ISV's Twilio account can host multiple RCS Senders\n- Programmatic sender creation at scale is **not supported** — each sender must be created individually in Console\n\n---\n\n## Common Errors\n\n| Error | Meaning | Fix |\n|-------|---------|-----|\n| Sender not approved | RCS sender hasn't completed carrier approval | Complete compliance onboarding; use test devices in the meantime |\n| Device not capable | Recipient can't receive RCS Business Messages | Twilio falls back to SMS automatically if fallback is configured |\n| Media URL inaccessible | Rich card image/video not publicly accessible | Host media on public URLs |\n| Display name rejected | Name conflicts with existing RCS sender | Choose a unique display name |\n\n---\n\n## CANNOT\n\n- **Cannot use RCS on free trial accounts** — Paid account required\n- **Cannot send RCS without a Messaging Service** — RCS senders must be added to a Messaging Service\n- **Cannot add an RCS sender to multiple Messaging Services** — Each sender belongs to one service only\n- **Cannot create RCS senders programmatically at scale** — Console-only, one at a time\n- **Cannot skip carrier approval** — Even with Google approval, each carrier must independently approve in each country\n- **Cannot guarantee RCS delivery to iOS** — iOS 18 supports P2P RCS, but RCS Business Messaging support depends on Apple + carrier. Always have SMS fallback.\n- **Cannot control fallback behavior per-message** — Fallback to SMS is automatic at the Messaging Service level when both RCS and SMS senders are present\n- **Cannot send RCS to landlines** — Mobile-only channel\n- **Cannot use unique display names that match existing senders** — Carriers enforce uniqueness globally\n- **Cannot update sender profile after approval without re-review** — Profile changes trigger a new carrier review cycle\n\n---\n\n## Next Steps\n\n- **Channel overview and onboarding guide:** `twilio-messaging-overview`\n- **Create rich message templates:** `twilio-content-template-builder`\n- **Set up Messaging Service for sender pool + fallback:** `twilio-messaging-services`\n- **Compliance registration for other channels:** `twilio-compliance-onboarding`\n- **Number and sender type selection:** `twilio-numbers-senders`\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}