[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-twilio-twilio-isv-sms-best-practices":3,"mdc--1uumxf-key":33,"related-org-twilio-twilio-isv-sms-best-practices":1420,"related-repo-twilio-twilio-isv-sms-best-practices":1598},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":29,"sourceUrl":31,"mdContent":32},"twilio-isv-sms-best-practices","implement SMS best practices for ISVs","Best practices for ISVs (Independent Software Vendors) building SMS features into multi-tenant SaaS platforms using Twilio. Covers customer onboarding for A2P and toll-free compliance, subaccount architecture, sender management, billing patterns, and common ISV pitfalls. Use this when building SMS capabilities that your customers will use to message their end users.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"twilio","Twilio","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftwilio.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Compliance","compliance","tag",{"name":17,"slug":18,"type":15},"SMS","sms",{"name":20,"slug":21,"type":15},"SaaS","saas",{"name":9,"slug":8,"type":15},25,"https:\u002F\u002Fgithub.com\u002Ftwilio\u002Fai","2026-07-17T06:07:49.559662",null,7,[],{"repoUrl":24,"stars":23,"forks":27,"topics":30,"description":26},[],"https:\u002F\u002Fgithub.com\u002Ftwilio\u002Fai\u002Ftree\u002FHEAD\u002Fskills\u002Ftwilio\u002Ftwilio-sms-isv-setup","---\nname: twilio-isv-sms-best-practices\ndescription: >\n  Best practices for ISVs (Independent Software Vendors) building SMS\n  features into multi-tenant SaaS platforms using Twilio. Covers customer\n  onboarding for A2P and toll-free compliance, subaccount architecture, sender management, billing patterns, and common ISV pitfalls. Use this when building SMS\n  capabilities that your customers will use to message their end users.\n---\n\n## Overview\n\nISVs face unique challenges when building SMS into their platforms: each customer needs their own number registration, sender pool management, compliance isolation, and usage tracking. This skill consolidates the architectural patterns and operational knowledge specific to multi-tenant SMS platforms.\n\n---\n\n## Are You an ISV?\n\nBefore following this skill, determine whether you are an Independent Software Vendor (ISV) or a direct customer.\n\n### Direct Customer\n\nYour company sends messages for your own products and services. Your end users know they are interacting with your brand.\n\n**Example:** A shoe company called CoolShoes sends marketing messages and order updates for their own products. Even if CoolShoes owns multiple brands (CoolShoes and CoolShirts), they are still a direct customer because both brands are operated by the same company.\n\n**Follow the direct customer onboarding process** — not this ISV skill.\n\n### ISV (Independent Software Vendor)\n\nYour company provides messaging services to other businesses, who are represented by their own brands. Your end users think they are interacting with your client's brand, not yours.\n\n**Example:** HotelTech Inc. sells a technology platform for hotels. When hotel SleepWell Inn uses the service, hotel visitors receive messages that appear to come from SleepWell Inn. Visitors likely don't know HotelTech powers the interaction.\n\n**Follow this ISV skill.**\n\n### Still Not Sure? Two Key Questions\n\n**1. Who do your end users think they are receiving messages from?**\n- **Your brand** → You are a direct customer\n- **Your client's brand** → You are an ISV\n\n**2. How much control do your clients have over message contents?**\n\n| Scenario | Classification | Example |\n|----------|---------------|---------|\n| **Templated messages with little\u002Fno customization** | Direct customer | EventSite sends templated event reminders to attendees. Event organizers can only customize basic details (event name, date). End users interact with EventSite brand. |\n| **Clients can customize and send messages on their own behalf** | ISV | PoweringEvents provides a platform where car dealership CarWorld can write and send customized messages about their Cars & Coffee events. Attendees don't know PoweringEvents exists — messages appear to come from CarWorld. |\n\n**If you give clients the ability to send customized messages that end users perceive as coming directly from your client, you are an ISV.**\n\n---\n\n## Prerequisites\n\n- Twilio parent account (for your platform)\n- Understanding of A2P 10DLC requirements\n  — See `twilio-compliance-onboarding` for registration basics\n- Understanding of Messaging Services\n  — See `twilio-messaging-services` for sender pool management\n- Environment variables:\n  - `TWILIO_ACCOUNT_SID` (parent account)\n  - `TWILIO_AUTH_TOKEN` (parent account)\n  — See `twilio-iam-auth-setup` for credential security\n- SDK: `pip install twilio` \u002F `npm install twilio`\n\n---\n\n## Key Architecture Patterns\n\n### Subaccount Strategy\n\n**Recommended approach:** Create one Twilio subaccount per customer.\n\n**Why subaccounts:**\n- **Billing isolation:** Each customer's usage appears on their own Twilio account, making cost tracking and pass-through billing straightforward\n- **Compliance isolation:** One customer's compliance violations or spam complaints do not affect other customers\n- **Credential isolation:** Each customer has their own Account SID and Auth Token, limiting the blast radius if credentials are compromised\n- **Separate rate limits:** Each subaccount has its own throughput and sending limits\n\n---\n\n## Customer Onboarding Flow: A2P 10DLC\n\nUse this flow when your customer needs to send SMS via 10-digit long code (local) numbers in the United States or Canada.\n\nThe [full onboarding overview](https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fmessaging\u002Fcompliance\u002Fa2p-10dlc\u002Fonboarding-is) includes all necessary API calls to complete A2P campaign registration for your customers.\n\n**Timeline:** 13-20 business days total (3-5 days for Brand + 10-15 days for campaign). Start early.\n\n**Do not skip this step.** Unregistered traffic gets blocked (error 30034).\n\n### Step 1: Create Secondary Customer Profile\n\nAs an ISV, you create a Secondary Customer Profile for each of your clients in their own subaccount. This profile contains your client's business information.\n\n### Step 2: Register Brand\n\n**Required fields for Standard Brand:**\n- Legal business name (must match EIN records exactly)\n- EIN (Employer Identification Number) or business tax ID\n- Business type (private, public, non-profit, government)\n- Business address\n- Website URL (must be publicly accessible)\n- Business registration country\n- Contact: first name, last name, email, phone\n\nOnce you have customer's business information, submit Brand registration using the Customer Profile Bundle SID from Step 1.\n\nEach Standard Brand is assigned a Trust Score, which affects each campaign's throughput and the T-Mobile daily message limit for the Brand.\n\n**Timeline:** 3-5 business days.\n\n### Step 3: Create Campaign\n\nCreate a campaign for your customer's use case.\n\n**Critical ISV consideration:** Each customer needs their own campaigns. Do NOT share campaigns across customers — it violates carrier policies and creates compliance risk.\n\nCreate the campaign with:\n- Brand registration SID\n- Use case (e.g., \"2FA\", \"MARKETING\", \"MIXED\")\n- Clear description matching the actual use case\n- 2+ sample messages that match the use case exactly\n- Opt-in\u002Fopt-out details\n- Whether messages contain embedded links or phone numbers\n\n**Timeline:** 10-15 business days.\n\n### Step 4: Provision Numbers and Create Messaging Service\n\n1. Buy 10DLC numbers for the customer\n2. Create a Messaging Service\n3. Link the campaign to the Messaging Service\n4. Add the number to the Messaging Service\n\n---\n\n## Customer Onboarding Flow: Toll-Free Verification\n\nUse this flow when your customer needs to send SMS via toll-free numbers (800, 888, etc.).\n\n**Timeline:** 3-5 business days.\n\n**Do not skip this step.** Unregistered traffic gets blocked (error 30032).\n\n**When to use toll-free vs. 10DLC:**\n- **Toll-free:** Lower throughput (~3 SMS\u002Fsec **per number**, can be raised via Traffic Optimization Engine), one number per use case\n- **10DLC:** Higher throughput (3.75 - 225 SMS\u002Fsec **per campaign**), can have multiple numbers per campaign\n\n### Step 1: Buy Toll-Free Number\n\nPurchase a toll-free number for the customer in their subaccount.\n\n### Step 2: Submit Toll-Free Verification\n\nSubmit toll-free verification with:\n- Business name and website\n- Notification email\n- Use case summary and categories\n- Production message sample\n- Opt-in type (VERBAL, WEB_FORM, etc.)\n- Opt-in image URLs (screenshots of opt-in flow)\n- Expected monthly message volume\n- Toll-free phone number SID\n- Status callback URL\n\n**Timeline:** 3-5 business days.\n\n---\n\n## Multi-Tenancy Patterns\n\n### API Key Isolation\n\n**Create API keys per customer instead of sharing parent account credentials.**\n\nGenerate API keys per customer with a descriptive friendly name. Store the API key SID and secret securely; use them to provision resources in the customer's account on their behalf.\n\nOnly use a customer's dedicated API key — not your parent account credentials. This limits the blast radius if a customer's key is compromised.\n\n---\n\n## Operational Patterns\n\n### Throughput Management\n\n**Throughput per Brand type:**\n\n| Brand type | SMS\u002Fsec per campaign | T-Mobile SMS daily cap (per Brand) | Total SMS daily cap (per Brand) |\n|-----------|-------------------|---------------------------| ---------------------------|\n| Sole Proprietor | ~1 | 1,000 messages | 3,000 messages |\n| Low-Volume Standard | ~3.75 | 2,000 messages | 6,000 messages |\n| Standard | ~12-225 (varies by Trust Score) | 2,000+ messages (varies by Trust Score)| Unlimited |\n\n**ISV strategy:**\n- **Use Standard Brands for your customers** unless they lack an EIN (use Sole Proprietor) or you are sure they will never send more than 6,000 SMS per day (use Low Volume Standard Brand)\n- **Submit a support case to apply for secondary vetting** if you want to upgrade from a Low Volume Standard Brand to a Standard Brand\n\n---\n\n## Common ISV Pitfalls\n\n### 1. Sharing Campaigns Across Customers\n\n**DON'T:** Use a single shared campaign SID for all customers in your parent account.\n\n**Problem:** Violates carrier policies. One customer's spam complaint affects all customers. Campaign rejection or shutdown blocks everyone.\n\n**DO:** Each customer has their own campaigns in their own subaccount.\n\n### 2. Building Before Registering\n\n**DON'T:**\n- Launch SMS feature to customers\n- Let them send messages\n- Register for A2P later when messages start failing\n\n**Problem:** Messages blocked immediately (error 30034). Customers can't send. Scramble to register takes 10-15 business days.\n\n**DO:**\n- Build A2P registration into customer onboarding flow\n- Block SMS feature until Brand + campaign approved\n- Show registration status in customer dashboard\n- Set expectation: \"SMS will be available in 10-15 business days\"\n\n### 3. Missing Mandatory Registration Fields\n\n**Common rejections:**\n\n| Field | Common mistake | Fix |\n|-------|---------------|-----|\n| Opt-in description | \"Users can opt in on our website\" | \"Users check 'I agree to receive SMS' checkbox at checkout.acme.com\u002Fregister\" |\n| Message samples | Generic (\"We send notifications\") | Exact examples matching use case (\"Your order #12345 has shipped\") |\n| Business name | Marketing name instead of legal name | Must match EIN records exactly |\n| Website URL | Localhost, staging URL, or 404 page | Live, publicly accessible production URL |\n\n### 4. Storing Credentials Insecurely\n\n**DON'T:** Store credentials in plain text.\n\n**Problem:** Credential leaks expose customer accounts.\n\n**DO:** Encrypt credentials at rest using strong encryption (e.g., Fernet). Store encrypted values and decrypt only when needed for API calls.\n\nSee `twilio-iam-auth-setup` for credential security best practices.\n\n---\n\n## Constraints\n\n- A2P campaign registration is **per customer use case in their own subaccount** — cannot be shared across tenants\n- Campaign approval takes 10-15 business days — factor into onboarding timeline\n- Each campaign supports only one use case; customers with multiple use cases need to use a \"Mixed\" use case or multiple campaigns\n- Trial accounts cannot complete A2P registration — must upgrade first\n\n---\n\n## Next Steps\n\n- **A2P registration details:** `twilio-compliance-onboarding`\n- **Messaging Service configuration:** `twilio-messaging-services`\n- **Send SMS patterns:** `twilio-sms-send-message`\n- **Credential security:** `twilio-iam-auth-setup`\n- **Subaccount architecture:** `twilio-account-setup`\n- **General compliance guidance:** `twilio-compliance-traffic`\n",{"data":34,"body":35},{"name":4,"description":6},{"type":36,"children":37},"root",[38,47,53,57,63,68,75,80,91,101,107,112,121,129,135,143,168,176,251,259,262,268,360,363,369,375,385,393,436,439,445,450,466,476,486,492,497,503,511,549,554,559,568,574,579,589,594,627,636,642,666,669,675,680,688,697,705,742,748,753,759,764,812,820,823,829,835,843,848,853,856,862,868,876,977,985,1008,1011,1017,1023,1033,1043,1053,1059,1066,1084,1093,1100,1123,1129,1137,1236,1242,1251,1260,1269,1281,1284,1290,1320,1323,1329],{"type":39,"tag":40,"props":41,"children":43},"element","h2",{"id":42},"overview",[44],{"type":45,"value":46},"text","Overview",{"type":39,"tag":48,"props":49,"children":50},"p",{},[51],{"type":45,"value":52},"ISVs face unique challenges when building SMS into their platforms: each customer needs their own number registration, sender pool management, compliance isolation, and usage tracking. This skill consolidates the architectural patterns and operational knowledge specific to multi-tenant SMS platforms.",{"type":39,"tag":54,"props":55,"children":56},"hr",{},[],{"type":39,"tag":40,"props":58,"children":60},{"id":59},"are-you-an-isv",[61],{"type":45,"value":62},"Are You an ISV?",{"type":39,"tag":48,"props":64,"children":65},{},[66],{"type":45,"value":67},"Before following this skill, determine whether you are an Independent Software Vendor (ISV) or a direct customer.",{"type":39,"tag":69,"props":70,"children":72},"h3",{"id":71},"direct-customer",[73],{"type":45,"value":74},"Direct Customer",{"type":39,"tag":48,"props":76,"children":77},{},[78],{"type":45,"value":79},"Your company sends messages for your own products and services. Your end users know they are interacting with your brand.",{"type":39,"tag":48,"props":81,"children":82},{},[83,89],{"type":39,"tag":84,"props":85,"children":86},"strong",{},[87],{"type":45,"value":88},"Example:",{"type":45,"value":90}," A shoe company called CoolShoes sends marketing messages and order updates for their own products. Even if CoolShoes owns multiple brands (CoolShoes and CoolShirts), they are still a direct customer because both brands are operated by the same company.",{"type":39,"tag":48,"props":92,"children":93},{},[94,99],{"type":39,"tag":84,"props":95,"children":96},{},[97],{"type":45,"value":98},"Follow the direct customer onboarding process",{"type":45,"value":100}," — not this ISV skill.",{"type":39,"tag":69,"props":102,"children":104},{"id":103},"isv-independent-software-vendor",[105],{"type":45,"value":106},"ISV (Independent Software Vendor)",{"type":39,"tag":48,"props":108,"children":109},{},[110],{"type":45,"value":111},"Your company provides messaging services to other businesses, who are represented by their own brands. Your end users think they are interacting with your client's brand, not yours.",{"type":39,"tag":48,"props":113,"children":114},{},[115,119],{"type":39,"tag":84,"props":116,"children":117},{},[118],{"type":45,"value":88},{"type":45,"value":120}," HotelTech Inc. sells a technology platform for hotels. When hotel SleepWell Inn uses the service, hotel visitors receive messages that appear to come from SleepWell Inn. Visitors likely don't know HotelTech powers the interaction.",{"type":39,"tag":48,"props":122,"children":123},{},[124],{"type":39,"tag":84,"props":125,"children":126},{},[127],{"type":45,"value":128},"Follow this ISV skill.",{"type":39,"tag":69,"props":130,"children":132},{"id":131},"still-not-sure-two-key-questions",[133],{"type":45,"value":134},"Still Not Sure? Two Key Questions",{"type":39,"tag":48,"props":136,"children":137},{},[138],{"type":39,"tag":84,"props":139,"children":140},{},[141],{"type":45,"value":142},"1. Who do your end users think they are receiving messages from?",{"type":39,"tag":144,"props":145,"children":146},"ul",{},[147,158],{"type":39,"tag":148,"props":149,"children":150},"li",{},[151,156],{"type":39,"tag":84,"props":152,"children":153},{},[154],{"type":45,"value":155},"Your brand",{"type":45,"value":157}," → You are a direct customer",{"type":39,"tag":148,"props":159,"children":160},{},[161,166],{"type":39,"tag":84,"props":162,"children":163},{},[164],{"type":45,"value":165},"Your client's brand",{"type":45,"value":167}," → You are an ISV",{"type":39,"tag":48,"props":169,"children":170},{},[171],{"type":39,"tag":84,"props":172,"children":173},{},[174],{"type":45,"value":175},"2. How much control do your clients have over message contents?",{"type":39,"tag":177,"props":178,"children":179},"table",{},[180,204],{"type":39,"tag":181,"props":182,"children":183},"thead",{},[184],{"type":39,"tag":185,"props":186,"children":187},"tr",{},[188,194,199],{"type":39,"tag":189,"props":190,"children":191},"th",{},[192],{"type":45,"value":193},"Scenario",{"type":39,"tag":189,"props":195,"children":196},{},[197],{"type":45,"value":198},"Classification",{"type":39,"tag":189,"props":200,"children":201},{},[202],{"type":45,"value":203},"Example",{"type":39,"tag":205,"props":206,"children":207},"tbody",{},[208,230],{"type":39,"tag":185,"props":209,"children":210},{},[211,220,225],{"type":39,"tag":212,"props":213,"children":214},"td",{},[215],{"type":39,"tag":84,"props":216,"children":217},{},[218],{"type":45,"value":219},"Templated messages with little\u002Fno customization",{"type":39,"tag":212,"props":221,"children":222},{},[223],{"type":45,"value":224},"Direct customer",{"type":39,"tag":212,"props":226,"children":227},{},[228],{"type":45,"value":229},"EventSite sends templated event reminders to attendees. Event organizers can only customize basic details (event name, date). End users interact with EventSite brand.",{"type":39,"tag":185,"props":231,"children":232},{},[233,241,246],{"type":39,"tag":212,"props":234,"children":235},{},[236],{"type":39,"tag":84,"props":237,"children":238},{},[239],{"type":45,"value":240},"Clients can customize and send messages on their own behalf",{"type":39,"tag":212,"props":242,"children":243},{},[244],{"type":45,"value":245},"ISV",{"type":39,"tag":212,"props":247,"children":248},{},[249],{"type":45,"value":250},"PoweringEvents provides a platform where car dealership CarWorld can write and send customized messages about their Cars & Coffee events. Attendees don't know PoweringEvents exists — messages appear to come from CarWorld.",{"type":39,"tag":48,"props":252,"children":253},{},[254],{"type":39,"tag":84,"props":255,"children":256},{},[257],{"type":45,"value":258},"If you give clients the ability to send customized messages that end users perceive as coming directly from your client, you are an ISV.",{"type":39,"tag":54,"props":260,"children":261},{},[],{"type":39,"tag":40,"props":263,"children":265},{"id":264},"prerequisites",[266],{"type":45,"value":267},"Prerequisites",{"type":39,"tag":144,"props":269,"children":270},{},[271,276,290,303,341],{"type":39,"tag":148,"props":272,"children":273},{},[274],{"type":45,"value":275},"Twilio parent account (for your platform)",{"type":39,"tag":148,"props":277,"children":278},{},[279,281,288],{"type":45,"value":280},"Understanding of A2P 10DLC requirements\n— See ",{"type":39,"tag":282,"props":283,"children":285},"code",{"className":284},[],[286],{"type":45,"value":287},"twilio-compliance-onboarding",{"type":45,"value":289}," for registration basics",{"type":39,"tag":148,"props":291,"children":292},{},[293,295,301],{"type":45,"value":294},"Understanding of Messaging Services\n— See ",{"type":39,"tag":282,"props":296,"children":298},{"className":297},[],[299],{"type":45,"value":300},"twilio-messaging-services",{"type":45,"value":302}," for sender pool management",{"type":39,"tag":148,"props":304,"children":305},{},[306,308],{"type":45,"value":307},"Environment variables:\n",{"type":39,"tag":144,"props":309,"children":310},{},[311,322],{"type":39,"tag":148,"props":312,"children":313},{},[314,320],{"type":39,"tag":282,"props":315,"children":317},{"className":316},[],[318],{"type":45,"value":319},"TWILIO_ACCOUNT_SID",{"type":45,"value":321}," (parent account)",{"type":39,"tag":148,"props":323,"children":324},{},[325,331,333,339],{"type":39,"tag":282,"props":326,"children":328},{"className":327},[],[329],{"type":45,"value":330},"TWILIO_AUTH_TOKEN",{"type":45,"value":332}," (parent account)\n— See ",{"type":39,"tag":282,"props":334,"children":336},{"className":335},[],[337],{"type":45,"value":338},"twilio-iam-auth-setup",{"type":45,"value":340}," for credential security",{"type":39,"tag":148,"props":342,"children":343},{},[344,346,352,354],{"type":45,"value":345},"SDK: ",{"type":39,"tag":282,"props":347,"children":349},{"className":348},[],[350],{"type":45,"value":351},"pip install twilio",{"type":45,"value":353}," \u002F ",{"type":39,"tag":282,"props":355,"children":357},{"className":356},[],[358],{"type":45,"value":359},"npm install twilio",{"type":39,"tag":54,"props":361,"children":362},{},[],{"type":39,"tag":40,"props":364,"children":366},{"id":365},"key-architecture-patterns",[367],{"type":45,"value":368},"Key Architecture Patterns",{"type":39,"tag":69,"props":370,"children":372},{"id":371},"subaccount-strategy",[373],{"type":45,"value":374},"Subaccount Strategy",{"type":39,"tag":48,"props":376,"children":377},{},[378,383],{"type":39,"tag":84,"props":379,"children":380},{},[381],{"type":45,"value":382},"Recommended approach:",{"type":45,"value":384}," Create one Twilio subaccount per customer.",{"type":39,"tag":48,"props":386,"children":387},{},[388],{"type":39,"tag":84,"props":389,"children":390},{},[391],{"type":45,"value":392},"Why subaccounts:",{"type":39,"tag":144,"props":394,"children":395},{},[396,406,416,426],{"type":39,"tag":148,"props":397,"children":398},{},[399,404],{"type":39,"tag":84,"props":400,"children":401},{},[402],{"type":45,"value":403},"Billing isolation:",{"type":45,"value":405}," Each customer's usage appears on their own Twilio account, making cost tracking and pass-through billing straightforward",{"type":39,"tag":148,"props":407,"children":408},{},[409,414],{"type":39,"tag":84,"props":410,"children":411},{},[412],{"type":45,"value":413},"Compliance isolation:",{"type":45,"value":415}," One customer's compliance violations or spam complaints do not affect other customers",{"type":39,"tag":148,"props":417,"children":418},{},[419,424],{"type":39,"tag":84,"props":420,"children":421},{},[422],{"type":45,"value":423},"Credential isolation:",{"type":45,"value":425}," Each customer has their own Account SID and Auth Token, limiting the blast radius if credentials are compromised",{"type":39,"tag":148,"props":427,"children":428},{},[429,434],{"type":39,"tag":84,"props":430,"children":431},{},[432],{"type":45,"value":433},"Separate rate limits:",{"type":45,"value":435}," Each subaccount has its own throughput and sending limits",{"type":39,"tag":54,"props":437,"children":438},{},[],{"type":39,"tag":40,"props":440,"children":442},{"id":441},"customer-onboarding-flow-a2p-10dlc",[443],{"type":45,"value":444},"Customer Onboarding Flow: A2P 10DLC",{"type":39,"tag":48,"props":446,"children":447},{},[448],{"type":45,"value":449},"Use this flow when your customer needs to send SMS via 10-digit long code (local) numbers in the United States or Canada.",{"type":39,"tag":48,"props":451,"children":452},{},[453,455,464],{"type":45,"value":454},"The ",{"type":39,"tag":456,"props":457,"children":461},"a",{"href":458,"rel":459},"https:\u002F\u002Fwww.twilio.com\u002Fdocs\u002Fmessaging\u002Fcompliance\u002Fa2p-10dlc\u002Fonboarding-is",[460],"nofollow",[462],{"type":45,"value":463},"full onboarding overview",{"type":45,"value":465}," includes all necessary API calls to complete A2P campaign registration for your customers.",{"type":39,"tag":48,"props":467,"children":468},{},[469,474],{"type":39,"tag":84,"props":470,"children":471},{},[472],{"type":45,"value":473},"Timeline:",{"type":45,"value":475}," 13-20 business days total (3-5 days for Brand + 10-15 days for campaign). Start early.",{"type":39,"tag":48,"props":477,"children":478},{},[479,484],{"type":39,"tag":84,"props":480,"children":481},{},[482],{"type":45,"value":483},"Do not skip this step.",{"type":45,"value":485}," Unregistered traffic gets blocked (error 30034).",{"type":39,"tag":69,"props":487,"children":489},{"id":488},"step-1-create-secondary-customer-profile",[490],{"type":45,"value":491},"Step 1: Create Secondary Customer Profile",{"type":39,"tag":48,"props":493,"children":494},{},[495],{"type":45,"value":496},"As an ISV, you create a Secondary Customer Profile for each of your clients in their own subaccount. This profile contains your client's business information.",{"type":39,"tag":69,"props":498,"children":500},{"id":499},"step-2-register-brand",[501],{"type":45,"value":502},"Step 2: Register Brand",{"type":39,"tag":48,"props":504,"children":505},{},[506],{"type":39,"tag":84,"props":507,"children":508},{},[509],{"type":45,"value":510},"Required fields for Standard Brand:",{"type":39,"tag":144,"props":512,"children":513},{},[514,519,524,529,534,539,544],{"type":39,"tag":148,"props":515,"children":516},{},[517],{"type":45,"value":518},"Legal business name (must match EIN records exactly)",{"type":39,"tag":148,"props":520,"children":521},{},[522],{"type":45,"value":523},"EIN (Employer Identification Number) or business tax ID",{"type":39,"tag":148,"props":525,"children":526},{},[527],{"type":45,"value":528},"Business type (private, public, non-profit, government)",{"type":39,"tag":148,"props":530,"children":531},{},[532],{"type":45,"value":533},"Business address",{"type":39,"tag":148,"props":535,"children":536},{},[537],{"type":45,"value":538},"Website URL (must be publicly accessible)",{"type":39,"tag":148,"props":540,"children":541},{},[542],{"type":45,"value":543},"Business registration country",{"type":39,"tag":148,"props":545,"children":546},{},[547],{"type":45,"value":548},"Contact: first name, last name, email, phone",{"type":39,"tag":48,"props":550,"children":551},{},[552],{"type":45,"value":553},"Once you have customer's business information, submit Brand registration using the Customer Profile Bundle SID from Step 1.",{"type":39,"tag":48,"props":555,"children":556},{},[557],{"type":45,"value":558},"Each Standard Brand is assigned a Trust Score, which affects each campaign's throughput and the T-Mobile daily message limit for the Brand.",{"type":39,"tag":48,"props":560,"children":561},{},[562,566],{"type":39,"tag":84,"props":563,"children":564},{},[565],{"type":45,"value":473},{"type":45,"value":567}," 3-5 business days.",{"type":39,"tag":69,"props":569,"children":571},{"id":570},"step-3-create-campaign",[572],{"type":45,"value":573},"Step 3: Create Campaign",{"type":39,"tag":48,"props":575,"children":576},{},[577],{"type":45,"value":578},"Create a campaign for your customer's use case.",{"type":39,"tag":48,"props":580,"children":581},{},[582,587],{"type":39,"tag":84,"props":583,"children":584},{},[585],{"type":45,"value":586},"Critical ISV consideration:",{"type":45,"value":588}," Each customer needs their own campaigns. Do NOT share campaigns across customers — it violates carrier policies and creates compliance risk.",{"type":39,"tag":48,"props":590,"children":591},{},[592],{"type":45,"value":593},"Create the campaign with:",{"type":39,"tag":144,"props":595,"children":596},{},[597,602,607,612,617,622],{"type":39,"tag":148,"props":598,"children":599},{},[600],{"type":45,"value":601},"Brand registration SID",{"type":39,"tag":148,"props":603,"children":604},{},[605],{"type":45,"value":606},"Use case (e.g., \"2FA\", \"MARKETING\", \"MIXED\")",{"type":39,"tag":148,"props":608,"children":609},{},[610],{"type":45,"value":611},"Clear description matching the actual use case",{"type":39,"tag":148,"props":613,"children":614},{},[615],{"type":45,"value":616},"2+ sample messages that match the use case exactly",{"type":39,"tag":148,"props":618,"children":619},{},[620],{"type":45,"value":621},"Opt-in\u002Fopt-out details",{"type":39,"tag":148,"props":623,"children":624},{},[625],{"type":45,"value":626},"Whether messages contain embedded links or phone numbers",{"type":39,"tag":48,"props":628,"children":629},{},[630,634],{"type":39,"tag":84,"props":631,"children":632},{},[633],{"type":45,"value":473},{"type":45,"value":635}," 10-15 business days.",{"type":39,"tag":69,"props":637,"children":639},{"id":638},"step-4-provision-numbers-and-create-messaging-service",[640],{"type":45,"value":641},"Step 4: Provision Numbers and Create Messaging Service",{"type":39,"tag":643,"props":644,"children":645},"ol",{},[646,651,656,661],{"type":39,"tag":148,"props":647,"children":648},{},[649],{"type":45,"value":650},"Buy 10DLC numbers for the customer",{"type":39,"tag":148,"props":652,"children":653},{},[654],{"type":45,"value":655},"Create a Messaging Service",{"type":39,"tag":148,"props":657,"children":658},{},[659],{"type":45,"value":660},"Link the campaign to the Messaging Service",{"type":39,"tag":148,"props":662,"children":663},{},[664],{"type":45,"value":665},"Add the number to the Messaging Service",{"type":39,"tag":54,"props":667,"children":668},{},[],{"type":39,"tag":40,"props":670,"children":672},{"id":671},"customer-onboarding-flow-toll-free-verification",[673],{"type":45,"value":674},"Customer Onboarding Flow: Toll-Free Verification",{"type":39,"tag":48,"props":676,"children":677},{},[678],{"type":45,"value":679},"Use this flow when your customer needs to send SMS via toll-free numbers (800, 888, etc.).",{"type":39,"tag":48,"props":681,"children":682},{},[683,687],{"type":39,"tag":84,"props":684,"children":685},{},[686],{"type":45,"value":473},{"type":45,"value":567},{"type":39,"tag":48,"props":689,"children":690},{},[691,695],{"type":39,"tag":84,"props":692,"children":693},{},[694],{"type":45,"value":483},{"type":45,"value":696}," Unregistered traffic gets blocked (error 30032).",{"type":39,"tag":48,"props":698,"children":699},{},[700],{"type":39,"tag":84,"props":701,"children":702},{},[703],{"type":45,"value":704},"When to use toll-free vs. 10DLC:",{"type":39,"tag":144,"props":706,"children":707},{},[708,725],{"type":39,"tag":148,"props":709,"children":710},{},[711,716,718,723],{"type":39,"tag":84,"props":712,"children":713},{},[714],{"type":45,"value":715},"Toll-free:",{"type":45,"value":717}," Lower throughput (~3 SMS\u002Fsec ",{"type":39,"tag":84,"props":719,"children":720},{},[721],{"type":45,"value":722},"per number",{"type":45,"value":724},", can be raised via Traffic Optimization Engine), one number per use case",{"type":39,"tag":148,"props":726,"children":727},{},[728,733,735,740],{"type":39,"tag":84,"props":729,"children":730},{},[731],{"type":45,"value":732},"10DLC:",{"type":45,"value":734}," Higher throughput (3.75 - 225 SMS\u002Fsec ",{"type":39,"tag":84,"props":736,"children":737},{},[738],{"type":45,"value":739},"per campaign",{"type":45,"value":741},"), can have multiple numbers per campaign",{"type":39,"tag":69,"props":743,"children":745},{"id":744},"step-1-buy-toll-free-number",[746],{"type":45,"value":747},"Step 1: Buy Toll-Free Number",{"type":39,"tag":48,"props":749,"children":750},{},[751],{"type":45,"value":752},"Purchase a toll-free number for the customer in their subaccount.",{"type":39,"tag":69,"props":754,"children":756},{"id":755},"step-2-submit-toll-free-verification",[757],{"type":45,"value":758},"Step 2: Submit Toll-Free Verification",{"type":39,"tag":48,"props":760,"children":761},{},[762],{"type":45,"value":763},"Submit toll-free verification with:",{"type":39,"tag":144,"props":765,"children":766},{},[767,772,777,782,787,792,797,802,807],{"type":39,"tag":148,"props":768,"children":769},{},[770],{"type":45,"value":771},"Business name and website",{"type":39,"tag":148,"props":773,"children":774},{},[775],{"type":45,"value":776},"Notification email",{"type":39,"tag":148,"props":778,"children":779},{},[780],{"type":45,"value":781},"Use case summary and categories",{"type":39,"tag":148,"props":783,"children":784},{},[785],{"type":45,"value":786},"Production message sample",{"type":39,"tag":148,"props":788,"children":789},{},[790],{"type":45,"value":791},"Opt-in type (VERBAL, WEB_FORM, etc.)",{"type":39,"tag":148,"props":793,"children":794},{},[795],{"type":45,"value":796},"Opt-in image URLs (screenshots of opt-in flow)",{"type":39,"tag":148,"props":798,"children":799},{},[800],{"type":45,"value":801},"Expected monthly message volume",{"type":39,"tag":148,"props":803,"children":804},{},[805],{"type":45,"value":806},"Toll-free phone number SID",{"type":39,"tag":148,"props":808,"children":809},{},[810],{"type":45,"value":811},"Status callback URL",{"type":39,"tag":48,"props":813,"children":814},{},[815,819],{"type":39,"tag":84,"props":816,"children":817},{},[818],{"type":45,"value":473},{"type":45,"value":567},{"type":39,"tag":54,"props":821,"children":822},{},[],{"type":39,"tag":40,"props":824,"children":826},{"id":825},"multi-tenancy-patterns",[827],{"type":45,"value":828},"Multi-Tenancy Patterns",{"type":39,"tag":69,"props":830,"children":832},{"id":831},"api-key-isolation",[833],{"type":45,"value":834},"API Key Isolation",{"type":39,"tag":48,"props":836,"children":837},{},[838],{"type":39,"tag":84,"props":839,"children":840},{},[841],{"type":45,"value":842},"Create API keys per customer instead of sharing parent account credentials.",{"type":39,"tag":48,"props":844,"children":845},{},[846],{"type":45,"value":847},"Generate API keys per customer with a descriptive friendly name. Store the API key SID and secret securely; use them to provision resources in the customer's account on their behalf.",{"type":39,"tag":48,"props":849,"children":850},{},[851],{"type":45,"value":852},"Only use a customer's dedicated API key — not your parent account credentials. This limits the blast radius if a customer's key is compromised.",{"type":39,"tag":54,"props":854,"children":855},{},[],{"type":39,"tag":40,"props":857,"children":859},{"id":858},"operational-patterns",[860],{"type":45,"value":861},"Operational Patterns",{"type":39,"tag":69,"props":863,"children":865},{"id":864},"throughput-management",[866],{"type":45,"value":867},"Throughput Management",{"type":39,"tag":48,"props":869,"children":870},{},[871],{"type":39,"tag":84,"props":872,"children":873},{},[874],{"type":45,"value":875},"Throughput per Brand type:",{"type":39,"tag":177,"props":877,"children":878},{},[879,905],{"type":39,"tag":181,"props":880,"children":881},{},[882],{"type":39,"tag":185,"props":883,"children":884},{},[885,890,895,900],{"type":39,"tag":189,"props":886,"children":887},{},[888],{"type":45,"value":889},"Brand type",{"type":39,"tag":189,"props":891,"children":892},{},[893],{"type":45,"value":894},"SMS\u002Fsec per campaign",{"type":39,"tag":189,"props":896,"children":897},{},[898],{"type":45,"value":899},"T-Mobile SMS daily cap (per Brand)",{"type":39,"tag":189,"props":901,"children":902},{},[903],{"type":45,"value":904},"Total SMS daily cap (per Brand)",{"type":39,"tag":205,"props":906,"children":907},{},[908,931,954],{"type":39,"tag":185,"props":909,"children":910},{},[911,916,921,926],{"type":39,"tag":212,"props":912,"children":913},{},[914],{"type":45,"value":915},"Sole Proprietor",{"type":39,"tag":212,"props":917,"children":918},{},[919],{"type":45,"value":920},"~1",{"type":39,"tag":212,"props":922,"children":923},{},[924],{"type":45,"value":925},"1,000 messages",{"type":39,"tag":212,"props":927,"children":928},{},[929],{"type":45,"value":930},"3,000 messages",{"type":39,"tag":185,"props":932,"children":933},{},[934,939,944,949],{"type":39,"tag":212,"props":935,"children":936},{},[937],{"type":45,"value":938},"Low-Volume Standard",{"type":39,"tag":212,"props":940,"children":941},{},[942],{"type":45,"value":943},"~3.75",{"type":39,"tag":212,"props":945,"children":946},{},[947],{"type":45,"value":948},"2,000 messages",{"type":39,"tag":212,"props":950,"children":951},{},[952],{"type":45,"value":953},"6,000 messages",{"type":39,"tag":185,"props":955,"children":956},{},[957,962,967,972],{"type":39,"tag":212,"props":958,"children":959},{},[960],{"type":45,"value":961},"Standard",{"type":39,"tag":212,"props":963,"children":964},{},[965],{"type":45,"value":966},"~12-225 (varies by Trust Score)",{"type":39,"tag":212,"props":968,"children":969},{},[970],{"type":45,"value":971},"2,000+ messages (varies by Trust Score)",{"type":39,"tag":212,"props":973,"children":974},{},[975],{"type":45,"value":976},"Unlimited",{"type":39,"tag":48,"props":978,"children":979},{},[980],{"type":39,"tag":84,"props":981,"children":982},{},[983],{"type":45,"value":984},"ISV strategy:",{"type":39,"tag":144,"props":986,"children":987},{},[988,998],{"type":39,"tag":148,"props":989,"children":990},{},[991,996],{"type":39,"tag":84,"props":992,"children":993},{},[994],{"type":45,"value":995},"Use Standard Brands for your customers",{"type":45,"value":997}," unless they lack an EIN (use Sole Proprietor) or you are sure they will never send more than 6,000 SMS per day (use Low Volume Standard Brand)",{"type":39,"tag":148,"props":999,"children":1000},{},[1001,1006],{"type":39,"tag":84,"props":1002,"children":1003},{},[1004],{"type":45,"value":1005},"Submit a support case to apply for secondary vetting",{"type":45,"value":1007}," if you want to upgrade from a Low Volume Standard Brand to a Standard Brand",{"type":39,"tag":54,"props":1009,"children":1010},{},[],{"type":39,"tag":40,"props":1012,"children":1014},{"id":1013},"common-isv-pitfalls",[1015],{"type":45,"value":1016},"Common ISV Pitfalls",{"type":39,"tag":69,"props":1018,"children":1020},{"id":1019},"_1-sharing-campaigns-across-customers",[1021],{"type":45,"value":1022},"1. Sharing Campaigns Across Customers",{"type":39,"tag":48,"props":1024,"children":1025},{},[1026,1031],{"type":39,"tag":84,"props":1027,"children":1028},{},[1029],{"type":45,"value":1030},"DON'T:",{"type":45,"value":1032}," Use a single shared campaign SID for all customers in your parent account.",{"type":39,"tag":48,"props":1034,"children":1035},{},[1036,1041],{"type":39,"tag":84,"props":1037,"children":1038},{},[1039],{"type":45,"value":1040},"Problem:",{"type":45,"value":1042}," Violates carrier policies. One customer's spam complaint affects all customers. Campaign rejection or shutdown blocks everyone.",{"type":39,"tag":48,"props":1044,"children":1045},{},[1046,1051],{"type":39,"tag":84,"props":1047,"children":1048},{},[1049],{"type":45,"value":1050},"DO:",{"type":45,"value":1052}," Each customer has their own campaigns in their own subaccount.",{"type":39,"tag":69,"props":1054,"children":1056},{"id":1055},"_2-building-before-registering",[1057],{"type":45,"value":1058},"2. Building Before Registering",{"type":39,"tag":48,"props":1060,"children":1061},{},[1062],{"type":39,"tag":84,"props":1063,"children":1064},{},[1065],{"type":45,"value":1030},{"type":39,"tag":144,"props":1067,"children":1068},{},[1069,1074,1079],{"type":39,"tag":148,"props":1070,"children":1071},{},[1072],{"type":45,"value":1073},"Launch SMS feature to customers",{"type":39,"tag":148,"props":1075,"children":1076},{},[1077],{"type":45,"value":1078},"Let them send messages",{"type":39,"tag":148,"props":1080,"children":1081},{},[1082],{"type":45,"value":1083},"Register for A2P later when messages start failing",{"type":39,"tag":48,"props":1085,"children":1086},{},[1087,1091],{"type":39,"tag":84,"props":1088,"children":1089},{},[1090],{"type":45,"value":1040},{"type":45,"value":1092}," Messages blocked immediately (error 30034). Customers can't send. Scramble to register takes 10-15 business days.",{"type":39,"tag":48,"props":1094,"children":1095},{},[1096],{"type":39,"tag":84,"props":1097,"children":1098},{},[1099],{"type":45,"value":1050},{"type":39,"tag":144,"props":1101,"children":1102},{},[1103,1108,1113,1118],{"type":39,"tag":148,"props":1104,"children":1105},{},[1106],{"type":45,"value":1107},"Build A2P registration into customer onboarding flow",{"type":39,"tag":148,"props":1109,"children":1110},{},[1111],{"type":45,"value":1112},"Block SMS feature until Brand + campaign approved",{"type":39,"tag":148,"props":1114,"children":1115},{},[1116],{"type":45,"value":1117},"Show registration status in customer dashboard",{"type":39,"tag":148,"props":1119,"children":1120},{},[1121],{"type":45,"value":1122},"Set expectation: \"SMS will be available in 10-15 business days\"",{"type":39,"tag":69,"props":1124,"children":1126},{"id":1125},"_3-missing-mandatory-registration-fields",[1127],{"type":45,"value":1128},"3. Missing Mandatory Registration Fields",{"type":39,"tag":48,"props":1130,"children":1131},{},[1132],{"type":39,"tag":84,"props":1133,"children":1134},{},[1135],{"type":45,"value":1136},"Common rejections:",{"type":39,"tag":177,"props":1138,"children":1139},{},[1140,1161],{"type":39,"tag":181,"props":1141,"children":1142},{},[1143],{"type":39,"tag":185,"props":1144,"children":1145},{},[1146,1151,1156],{"type":39,"tag":189,"props":1147,"children":1148},{},[1149],{"type":45,"value":1150},"Field",{"type":39,"tag":189,"props":1152,"children":1153},{},[1154],{"type":45,"value":1155},"Common mistake",{"type":39,"tag":189,"props":1157,"children":1158},{},[1159],{"type":45,"value":1160},"Fix",{"type":39,"tag":205,"props":1162,"children":1163},{},[1164,1182,1200,1218],{"type":39,"tag":185,"props":1165,"children":1166},{},[1167,1172,1177],{"type":39,"tag":212,"props":1168,"children":1169},{},[1170],{"type":45,"value":1171},"Opt-in description",{"type":39,"tag":212,"props":1173,"children":1174},{},[1175],{"type":45,"value":1176},"\"Users can opt in on our website\"",{"type":39,"tag":212,"props":1178,"children":1179},{},[1180],{"type":45,"value":1181},"\"Users check 'I agree to receive SMS' checkbox at checkout.acme.com\u002Fregister\"",{"type":39,"tag":185,"props":1183,"children":1184},{},[1185,1190,1195],{"type":39,"tag":212,"props":1186,"children":1187},{},[1188],{"type":45,"value":1189},"Message samples",{"type":39,"tag":212,"props":1191,"children":1192},{},[1193],{"type":45,"value":1194},"Generic (\"We send notifications\")",{"type":39,"tag":212,"props":1196,"children":1197},{},[1198],{"type":45,"value":1199},"Exact examples matching use case (\"Your order #12345 has shipped\")",{"type":39,"tag":185,"props":1201,"children":1202},{},[1203,1208,1213],{"type":39,"tag":212,"props":1204,"children":1205},{},[1206],{"type":45,"value":1207},"Business name",{"type":39,"tag":212,"props":1209,"children":1210},{},[1211],{"type":45,"value":1212},"Marketing name instead of legal name",{"type":39,"tag":212,"props":1214,"children":1215},{},[1216],{"type":45,"value":1217},"Must match EIN records exactly",{"type":39,"tag":185,"props":1219,"children":1220},{},[1221,1226,1231],{"type":39,"tag":212,"props":1222,"children":1223},{},[1224],{"type":45,"value":1225},"Website URL",{"type":39,"tag":212,"props":1227,"children":1228},{},[1229],{"type":45,"value":1230},"Localhost, staging URL, or 404 page",{"type":39,"tag":212,"props":1232,"children":1233},{},[1234],{"type":45,"value":1235},"Live, publicly accessible production URL",{"type":39,"tag":69,"props":1237,"children":1239},{"id":1238},"_4-storing-credentials-insecurely",[1240],{"type":45,"value":1241},"4. Storing Credentials Insecurely",{"type":39,"tag":48,"props":1243,"children":1244},{},[1245,1249],{"type":39,"tag":84,"props":1246,"children":1247},{},[1248],{"type":45,"value":1030},{"type":45,"value":1250}," Store credentials in plain text.",{"type":39,"tag":48,"props":1252,"children":1253},{},[1254,1258],{"type":39,"tag":84,"props":1255,"children":1256},{},[1257],{"type":45,"value":1040},{"type":45,"value":1259}," Credential leaks expose customer accounts.",{"type":39,"tag":48,"props":1261,"children":1262},{},[1263,1267],{"type":39,"tag":84,"props":1264,"children":1265},{},[1266],{"type":45,"value":1050},{"type":45,"value":1268}," Encrypt credentials at rest using strong encryption (e.g., Fernet). Store encrypted values and decrypt only when needed for API calls.",{"type":39,"tag":48,"props":1270,"children":1271},{},[1272,1274,1279],{"type":45,"value":1273},"See ",{"type":39,"tag":282,"props":1275,"children":1277},{"className":1276},[],[1278],{"type":45,"value":338},{"type":45,"value":1280}," for credential security best practices.",{"type":39,"tag":54,"props":1282,"children":1283},{},[],{"type":39,"tag":40,"props":1285,"children":1287},{"id":1286},"constraints",[1288],{"type":45,"value":1289},"Constraints",{"type":39,"tag":144,"props":1291,"children":1292},{},[1293,1305,1310,1315],{"type":39,"tag":148,"props":1294,"children":1295},{},[1296,1298,1303],{"type":45,"value":1297},"A2P campaign registration is ",{"type":39,"tag":84,"props":1299,"children":1300},{},[1301],{"type":45,"value":1302},"per customer use case in their own subaccount",{"type":45,"value":1304}," — cannot be shared across tenants",{"type":39,"tag":148,"props":1306,"children":1307},{},[1308],{"type":45,"value":1309},"Campaign approval takes 10-15 business days — factor into onboarding timeline",{"type":39,"tag":148,"props":1311,"children":1312},{},[1313],{"type":45,"value":1314},"Each campaign supports only one use case; customers with multiple use cases need to use a \"Mixed\" use case or multiple campaigns",{"type":39,"tag":148,"props":1316,"children":1317},{},[1318],{"type":45,"value":1319},"Trial accounts cannot complete A2P registration — must upgrade first",{"type":39,"tag":54,"props":1321,"children":1322},{},[],{"type":39,"tag":40,"props":1324,"children":1326},{"id":1325},"next-steps",[1327],{"type":45,"value":1328},"Next Steps",{"type":39,"tag":144,"props":1330,"children":1331},{},[1332,1347,1361,1376,1390,1405],{"type":39,"tag":148,"props":1333,"children":1334},{},[1335,1340,1342],{"type":39,"tag":84,"props":1336,"children":1337},{},[1338],{"type":45,"value":1339},"A2P registration details:",{"type":45,"value":1341}," ",{"type":39,"tag":282,"props":1343,"children":1345},{"className":1344},[],[1346],{"type":45,"value":287},{"type":39,"tag":148,"props":1348,"children":1349},{},[1350,1355,1356],{"type":39,"tag":84,"props":1351,"children":1352},{},[1353],{"type":45,"value":1354},"Messaging Service configuration:",{"type":45,"value":1341},{"type":39,"tag":282,"props":1357,"children":1359},{"className":1358},[],[1360],{"type":45,"value":300},{"type":39,"tag":148,"props":1362,"children":1363},{},[1364,1369,1370],{"type":39,"tag":84,"props":1365,"children":1366},{},[1367],{"type":45,"value":1368},"Send SMS patterns:",{"type":45,"value":1341},{"type":39,"tag":282,"props":1371,"children":1373},{"className":1372},[],[1374],{"type":45,"value":1375},"twilio-sms-send-message",{"type":39,"tag":148,"props":1377,"children":1378},{},[1379,1384,1385],{"type":39,"tag":84,"props":1380,"children":1381},{},[1382],{"type":45,"value":1383},"Credential security:",{"type":45,"value":1341},{"type":39,"tag":282,"props":1386,"children":1388},{"className":1387},[],[1389],{"type":45,"value":338},{"type":39,"tag":148,"props":1391,"children":1392},{},[1393,1398,1399],{"type":39,"tag":84,"props":1394,"children":1395},{},[1396],{"type":45,"value":1397},"Subaccount architecture:",{"type":45,"value":1341},{"type":39,"tag":282,"props":1400,"children":1402},{"className":1401},[],[1403],{"type":45,"value":1404},"twilio-account-setup",{"type":39,"tag":148,"props":1406,"children":1407},{},[1408,1413,1414],{"type":39,"tag":84,"props":1409,"children":1410},{},[1411],{"type":45,"value":1412},"General compliance guidance:",{"type":45,"value":1341},{"type":39,"tag":282,"props":1415,"children":1417},{"className":1416},[],[1418],{"type":45,"value":1419},"twilio-compliance-traffic",{"items":1421,"total":1597},[1422,1435,1455,1466,1478,1491,1508,1523,1538,1551,1567,1585],{"slug":1404,"name":1404,"fn":1423,"description":1424,"org":1425,"tags":1426,"stars":23,"repoUrl":24,"updatedAt":1434},"configure Twilio accounts and credentials","Create and configure a Twilio account from scratch. Covers free trial signup, trial limitations, getting credentials (Account SID and Auth Token), buying a phone number, verifying recipient numbers for trial use, SDK installation, first API call, subaccount management (creation, inheritance, credential isolation, limits), and enabling specific products (AI Assistants, Conversations, Verify, ConversationRelay, WhatsApp). Use this skill before any other Twilio skill if you do not yet have a Twilio account or need to enable a product. For Organization-level governance (SSO, SCIM, multi-team), see `twilio-organizations-setup`.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1427,1430,1433],{"name":1428,"slug":1429,"type":15},"API Development","api-development",{"name":1431,"slug":1432,"type":15},"Communications","communications",{"name":17,"slug":18,"type":15},"2026-08-01T05:43:28.968968",{"slug":1436,"name":1436,"fn":1437,"description":1438,"org":1439,"tags":1440,"stars":23,"repoUrl":24,"updatedAt":1454},"twilio-agent-augmentation-architect","augment human agents with AI intelligence","Planning skill for augmenting human agents with real-time AI intelligence. Qualifies the developer's use case across coaching, compliance, QA, and routing to recommend the right Conversation Intelligence + Conversation Memory + TaskRouter architecture. Handles both \"I want to add AI coaching to my call center\" and \"configure Conversation Intelligence operators for script adherence.\"\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1441,1444,1447,1450,1453],{"name":1442,"slug":1443,"type":15},"Agents","agents",{"name":1445,"slug":1446,"type":15},"AI","ai",{"name":1448,"slug":1449,"type":15},"Coaching","coaching",{"name":1451,"slug":1452,"type":15},"QA","qa",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:58.250609",{"slug":1456,"name":1456,"fn":1457,"description":1458,"org":1459,"tags":1460,"stars":23,"repoUrl":24,"updatedAt":1465},"twilio-agent-connect","connect AI agents to Twilio channels","Connect third-party AI agents (OpenAI, Bedrock, LangChain, Microsoft Foundry) to Twilio's communication channels using the Twilio Agent Connect SDK. Covers identity resolution, memory and context management via Conversation Memory, conversation orchestration via Conversation Orchestrator, multi-channel handling (Voice, SMS, RCS, WhatsApp, Chat), and AI-to-human escalation. Use this skill when integrating an existing LLM agent with Twilio services.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1461,1462,1463,1464],{"name":1442,"slug":1443,"type":15},{"name":1428,"slug":1429,"type":15},{"name":1431,"slug":1432,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T06:06:05.217098",{"slug":1467,"name":1467,"fn":1468,"description":1469,"org":1470,"tags":1471,"stars":23,"repoUrl":24,"updatedAt":1477},"twilio-ai-agent-architect","plan Twilio conversational AI agents","Planning skill for AI-powered conversational agents. Qualifies the developer's use case across outcome sophistication, entry point, and customer profile to recommend the right Twilio Conversations architecture and implementation skills. Handles both high-level requests (\"build me a voice AI assistant\") and specific ones (\"integrate ConversationRelay with my OpenAI backend\").\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1472,1473,1476],{"name":1442,"slug":1443,"type":15},{"name":1474,"slug":1475,"type":15},"Architecture","architecture",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:48.883723",{"slug":1479,"name":1479,"fn":1480,"description":1481,"org":1482,"tags":1483,"stars":23,"repoUrl":24,"updatedAt":1490},"twilio-call-recordings","record and manage Twilio voice calls","Record Twilio voice calls correctly. Covers the critical distinction between Record verb (voicemail) and Dial record (call recording), dual-channel for QA, mid-call pause for PCI, Conference recording, and the ConversationRelay workaround. Use this skill whenever you need to capture call audio for compliance, QA, or analytics.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1484,1487,1488,1489],{"name":1485,"slug":1486,"type":15},"Audio","audio",{"name":13,"slug":14,"type":15},{"name":1451,"slug":1452,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T06:07:55.268412",{"slug":1492,"name":1492,"fn":1493,"description":1494,"org":1495,"tags":1496,"stars":23,"repoUrl":24,"updatedAt":1507},"twilio-cli-reference","manage Twilio resources via CLI","Twilio CLI reference for managing Twilio resources from the terminal. Covers installation, credential profiles, phone number provisioning, sending SMS and email, webhook configuration, local development with a tunneling service, debugging with watch and logs, serverless deployment, and plugin ecosystem. Use when the developer asks to \"just do it\", \"set this up\", \"run a command\", mentions \"CLI\", \"command line\", or \"terminal\", or when an AI agent can execute a task directly instead of writing application code.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1497,1500,1503,1506],{"name":1498,"slug":1499,"type":15},"CLI","cli",{"name":1501,"slug":1502,"type":15},"Local Development","local-development",{"name":1504,"slug":1505,"type":15},"Operations","operations",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:54.925664",{"slug":287,"name":287,"fn":1509,"description":1510,"org":1511,"tags":1512,"stars":23,"repoUrl":24,"updatedAt":1522},"manage Twilio messaging and voice compliance","Registrations required BEFORE Twilio traffic works. Covers messaging programs (A2P 10DLC, toll-free verification, WhatsApp WABA, RCS, short code, alphanumeric sender) and voice trust programs (STIR\u002FSHAKEN, Voice Integrity, Branded Calling, CNAM). Each number\u002Fsender type has its own program — registration blocks traffic until complete.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1513,1514,1517,1518,1519],{"name":13,"slug":14,"type":15},{"name":1515,"slug":1516,"type":15},"Messaging","messaging",{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":1520,"slug":1521,"type":15},"WhatsApp","whatsapp","2026-07-17T06:05:47.897229",{"slug":1419,"name":1419,"fn":1524,"description":1525,"org":1526,"tags":1527,"stars":23,"repoUrl":24,"updatedAt":1537},"ensure compliance for Twilio messaging traffic","Rules you must follow for Twilio messaging and voice traffic. Covers TCPA (consent tiers, quiet hours, DNC), GDPR (EU consent, right to deletion), PCI DSS (payment recording, Pay verb), HIPAA (BAA, PHI), FDCPA (debt collection limits), CAN-SPAM, WhatsApp policies, SHAKEN\u002FSTIR, and consent management patterns. Use this skill proactively when developers have working traffic to ensure they follow the rules.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1528,1529,1530,1533,1536],{"name":13,"slug":14,"type":15},{"name":1515,"slug":1516,"type":15},{"name":1531,"slug":1532,"type":15},"Regulatory Compliance","regulatory-compliance",{"name":1534,"slug":1535,"type":15},"Security","security",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:55.952779",{"slug":1539,"name":1539,"fn":1540,"description":1541,"org":1542,"tags":1543,"stars":23,"repoUrl":24,"updatedAt":1550},"twilio-conference-calls","build multi-party calls with Twilio Conference","Build multi-party calls using Twilio Conference. Covers warm transfer, cold transfer, coaching (whisper), hold vs mute, participant modes, and supervisor barge. Use this skill for any contact center, support line, or scenario requiring transfers, holds, or multi-party calls.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1544,1545,1546,1549],{"name":1485,"slug":1486,"type":15},{"name":1431,"slug":1432,"type":15},{"name":1547,"slug":1548,"type":15},"Meetings","meetings",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:55.603708",{"slug":1552,"name":1552,"fn":1553,"description":1554,"org":1555,"tags":1556,"stars":23,"repoUrl":24,"updatedAt":1566},"twilio-content-template-builder","create and send message templates with Twilio","Create, manage, and send message templates using Twilio's Content API. Covers template creation for WhatsApp, SMS, RCS, and MMS; variable usage; WhatsApp Meta approval; and sending templates via ContentSid. Use this skill when building structured messages that require pre-approval or consistent formatting across channels.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1557,1560,1561,1562,1565],{"name":1558,"slug":1559,"type":15},"Email","email",{"name":1515,"slug":1516,"type":15},{"name":17,"slug":18,"type":15},{"name":1563,"slug":1564,"type":15},"Templates","templates",{"name":9,"slug":8,"type":15},"2026-07-17T06:04:26.637309",{"slug":1568,"name":1568,"fn":1569,"description":1570,"org":1571,"tags":1572,"stars":23,"repoUrl":24,"updatedAt":1584},"twilio-conversation-intelligence","build conversation intelligence pipelines","Twilio Conversation Intelligence development guide. Use when building real-time or post-call conversation analysis, language operator pipelines, sentiment analysis, agent assist, cross-channel analytics, or querying aggregated conversation insights (sentiment trends, escalation rates, dashboards).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1573,1574,1577,1580,1583],{"name":1442,"slug":1443,"type":15},{"name":1575,"slug":1576,"type":15},"Analytics","analytics",{"name":1578,"slug":1579,"type":15},"Monitoring","monitoring",{"name":1581,"slug":1582,"type":15},"NLP","nlp",{"name":9,"slug":8,"type":15},"2026-07-17T06:07:52.545387",{"slug":1586,"name":1586,"fn":1587,"description":1588,"org":1589,"tags":1590,"stars":23,"repoUrl":24,"updatedAt":1596},"twilio-conversation-memory","manage conversation memory with Twilio","Store and retrieve conversation context using Twilio Conversation Memory. Covers Memory Store provisioning, profile management, traits, observations, conversation summaries, and semantic Recall. Use this skill to give AI agents or human agents persistent memory of conversations across sessions and channels.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1591,1592,1595],{"name":1442,"slug":1443,"type":15},{"name":1593,"slug":1594,"type":15},"Memory","memory",{"name":9,"slug":8,"type":15},"2026-07-17T06:04:19.526724",57,{"items":1599,"total":1597},[1600,1606,1614,1621,1627,1634,1641],{"slug":1404,"name":1404,"fn":1423,"description":1424,"org":1601,"tags":1602,"stars":23,"repoUrl":24,"updatedAt":1434},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1603,1604,1605],{"name":1428,"slug":1429,"type":15},{"name":1431,"slug":1432,"type":15},{"name":17,"slug":18,"type":15},{"slug":1436,"name":1436,"fn":1437,"description":1438,"org":1607,"tags":1608,"stars":23,"repoUrl":24,"updatedAt":1454},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1609,1610,1611,1612,1613],{"name":1442,"slug":1443,"type":15},{"name":1445,"slug":1446,"type":15},{"name":1448,"slug":1449,"type":15},{"name":1451,"slug":1452,"type":15},{"name":9,"slug":8,"type":15},{"slug":1456,"name":1456,"fn":1457,"description":1458,"org":1615,"tags":1616,"stars":23,"repoUrl":24,"updatedAt":1465},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1617,1618,1619,1620],{"name":1442,"slug":1443,"type":15},{"name":1428,"slug":1429,"type":15},{"name":1431,"slug":1432,"type":15},{"name":9,"slug":8,"type":15},{"slug":1467,"name":1467,"fn":1468,"description":1469,"org":1622,"tags":1623,"stars":23,"repoUrl":24,"updatedAt":1477},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1624,1625,1626],{"name":1442,"slug":1443,"type":15},{"name":1474,"slug":1475,"type":15},{"name":9,"slug":8,"type":15},{"slug":1479,"name":1479,"fn":1480,"description":1481,"org":1628,"tags":1629,"stars":23,"repoUrl":24,"updatedAt":1490},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1630,1631,1632,1633],{"name":1485,"slug":1486,"type":15},{"name":13,"slug":14,"type":15},{"name":1451,"slug":1452,"type":15},{"name":9,"slug":8,"type":15},{"slug":1492,"name":1492,"fn":1493,"description":1494,"org":1635,"tags":1636,"stars":23,"repoUrl":24,"updatedAt":1507},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1637,1638,1639,1640],{"name":1498,"slug":1499,"type":15},{"name":1501,"slug":1502,"type":15},{"name":1504,"slug":1505,"type":15},{"name":9,"slug":8,"type":15},{"slug":287,"name":287,"fn":1509,"description":1510,"org":1642,"tags":1643,"stars":23,"repoUrl":24,"updatedAt":1522},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1644,1645,1646,1647,1648],{"name":13,"slug":14,"type":15},{"name":1515,"slug":1516,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":1520,"slug":1521,"type":15}]