{"slug":"a2p-10dlc-campaign-registry","title":"A2P 10DLC Campaign Registry — Brand and Campaign Registration","tags":["signalwire","a2p","10dlc","sms","compliance","campaign-registry","tcr"],"agent_summary":"The Campaign Registry (TCR) is mandatory for 10DLC SMS to US numbers. Covers Brand vs Campaign hierarchy, use case taxonomy, registration flow (3-5 business days), throughput tiers, DCA election, and the December 2025 default-off behaviour for newly purchased numbers.","trigger_phrases":["A2P registration SignalWire","10DLC campaign registry","TCR brand register","EIN messaging registration","use case 2FA marketing","DCA election","campaign verify","T-Mobile daily limit"],"runnable":false,"markdown":"\n# A2P 10DLC Campaign Registry\n\nThe Campaign Registry (TCR) is mandatory for any 10DLC (10-digit long code, local US) phone number sending SMS to US numbers. Doesn't matter if the traffic is \"conversational\" or low-volume — if it's sent from an application platform like SignalWire, it counts as A2P (Application-to-Person) and registration is required.\n\n**Toll-free and short-code numbers go through different processes — not TCR.**\n\n## Two-tier hierarchy: Brand → Campaign\n\n| Level | Purpose | Identifier |\n|---|---|---|\n| **Brand** | Your company entity, verified against multiple databases. One Brand per legal entity. | Brand ID |\n| **Campaign** | A specific use case (marketing, account notifications, 2FA, etc.). Brands have many Campaigns. | Campaign ID |\n| **Phone Number Assignment** | Which numbers send under which Campaign. | n/a — assignment record |\n\nEach Brand requires a **unique EIN**. Sharing EINs between Brands damages trust score.\n\n## Registration flow\n\n1. Add a payment method to your SignalWire project.\n2. Create a **Brand** (`$4` per submission). Inputs: legal company name, website, Tax ID/EIN, contact name, direct number, email.\n3. Register a **Campaign**. Monthly fee varies by use case; first 3 months billed up front (3-month minimum). Inputs: use case, opt-in/opt-out process, help process, message samples.\n4. **Assign phone numbers** to the Campaign. Can take up to 24 hours; status will show `pending` or `failed` during this window — that's expected, not an error.\n\nTCR review takes **3-5 business days** typically. Brand approval comes first; Campaign approval depends on it.\n\n## Standard use cases\n\n| Use case | Description |\n|---|---|\n| **2FA** | Authentication, verification, one-time passcodes. |\n| **Account Notifications** | Notifications relating to a user's account. |\n| **Customer Care** | All customer-care interactions. |\n| **Delivery Notifications** | Product/service delivery status. |\n| **Fraud Alert Messaging** | Notifications about fraudulent activity. |\n| **Higher Education** | Colleges, universities, K-12 districts (not free-to-consumer models). |\n| **Low Volume Mixed** | Multiple use cases at low throughput (test/demo accounts, single doctor's office, single pizza shop). |\n| **Marketing** | Any messaging with marketing or promotional content. |\n| **Mixed** | 2-5 standard use cases combined. |\n| **Polling and voting** | Non-political surveys/polls. |\n| **Public Service Announcement** | Awareness messaging about important issues. |\n| **Security Alert** | Notifications about system security incidents. |\n\n## Special use cases (require post-registration MNO review)\n\n| Use case | Notes |\n|---|---|\n| **Charity** | 501(c)(3) only. |\n| **Proxy** | App-based group messaging with pooled numbers. |\n| **Emergency** | Public safety/health during disasters. |\n| **Sweepstakes** | All sweepstakes messaging. |\n| **Political** | Federal-level only; campaigns pre-vetted. Requires Campaign Verify. |\n| **Social** | Closed-community communication (YouTube influencer alerts, etc.). |\n| **Platform Free Trial** | CSP free-trial offers to non-paying customers. |\n| **Agents and Franchises** | Brands with multiple agents/franchises needing individual local numbers. |\n| **K-12 Education** | K-12 platforms and distance learning. |\n| **UCaaS High / Low Volume** | UCaaS cloud comms for businesses; approved UCaaS only. |\n\n## Registration types\n\n| Type | Notes |\n|---|---|\n| **Managed Brand & Campaign** | SignalWire is the CSP, handles all TCR details. Default. |\n| **Self-registered** | You're already TCR-registered with your own CSP ID. Use the **Create a Partner Brand** flow to import. |\n\n## Best practices for approval\n\n1. **Be transparent and honest** — TCR cross-references multiple databases. Errors get flagged.\n2. **Provide clarity and detail** — match campaign descriptions to the actual content of your messages.\n3. **Provide message templates** — even rough ones. Include opt-out language; opt-out is mandatory.\n\n## Newly purchased numbers — December 2025 change\n\nAs of December 2025, **newly purchased US 10DLC numbers do not have messaging enabled by default**. Messaging is auto-enabled when you assign the number to an approved Campaign.\n\nFor inbound-only messaging (receiving without sending), contact SignalWire Support to request enablement without a full campaign.\n\nFor testing, your first purchased number is automatically enabled for Platform Free Trial messaging when paired with a verified mobile number.\n\n## Throughput\n\n| Variable | Notes |\n|---|---|\n| **T-Mobile daily limit** | 2000 segments/day for non-Russell-2000 brands. Resets at midnight US Pacific. |\n| **Other carriers** | Throughput determined by use case. |\n| **External vetting** | Third-party vetting partners can raise daily throughput. Adds cost; no guarantee. |\n| **SignalWire queue** | If you submit faster than approved throughput, SignalWire queues and paces — no message loss. |\n\n## DCA election\n\nDirect Connect Aggregators (DCAs) provide the actual carrier-gateway connection. After TCR approves your Campaign, the upstream DCA must also accept it. DCA vetting typically takes 24-48 hours. Election = the DCA has confirmed the campaign and accepted the connection request.\n\nYou can assign numbers while DCA vetting is pending, but messages can't send until election completes.\n\n## Migrating from another provider\n\n- Each messaging provider is its own CSP. Re-register when switching providers.\n- Your existing provider's registration stays active until you request deactivation — use both providers in parallel during migration.\n- Switching providers triggers full re-registration with the new CSP.\n\n## Campaign limits\n\n- Up to **49 numbers per campaign** (over that = Number Pooling, requires extra registration).\n- One campaign per use case (with Mixed available for low-throughput multi-use cases).\n\n## What to do today vs. wait for\n\n| Action | When |\n|---|---|\n| Submit Brand registration | Day 0 |\n| Submit Campaign registration | Right after Brand submission (parallel) |\n| Assign numbers to Campaign | Right after Campaign creation (status pending OK) |\n| Start sending production traffic | Only after SignalWire notifies you the Campaign is connected AND number assignment shows `Complete` |\n\n## Anti-patterns\n\n- Re-using an EIN across multiple Brands — kills trust score on all of them.\n- Submitting a Campaign description that doesn't match the actual message templates — auto-flagged.\n- Forgetting opt-out language in samples — TCR rejects.\n- Starting to send before number assignment shows `Complete` — failed deliveries.\n- Treating 10DLC and toll-free as the same registration path — they aren't.\n- Skipping Brand verification fixes after an Unverified status — every resubmit is `$4` but you must clear Unverified before adding Campaigns.\n\n## See also\n\n- [SMS best practices](/topic/sms-best-practices)\n- [Toll-free and hosted messaging](/topic/toll-free-and-hosted-messaging)\n","html":"<h1>A2P 10DLC Campaign Registry</h1>\n<p>The Campaign Registry (TCR) is mandatory for any 10DLC (10-digit long code, local US) phone number sending SMS to US numbers. Doesn't matter if the traffic is \"conversational\" or low-volume — if it's sent from an application platform like SignalWire, it counts as A2P (Application-to-Person) and registration is required.</p>\n<p><strong>Toll-free and short-code numbers go through different processes — not TCR.</strong></p>\n<h2>Two-tier hierarchy: Brand → Campaign</h2>\n<p>| Level | Purpose | Identifier |\n|---|---|---|\n| <strong>Brand</strong> | Your company entity, verified against multiple databases. One Brand per legal entity. | Brand ID |\n| <strong>Campaign</strong> | A specific use case (marketing, account notifications, 2FA, etc.). Brands have many Campaigns. | Campaign ID |\n| <strong>Phone Number Assignment</strong> | Which numbers send under which Campaign. | n/a — assignment record |</p>\n<p>Each Brand requires a <strong>unique EIN</strong>. Sharing EINs between Brands damages trust score.</p>\n<h2>Registration flow</h2>\n<ol>\n<li>Add a payment method to your SignalWire project.</li>\n<li>Create a <strong>Brand</strong> (<code>$4</code> per submission). Inputs: legal company name, website, Tax ID/EIN, contact name, direct number, email.</li>\n<li>Register a <strong>Campaign</strong>. Monthly fee varies by use case; first 3 months billed up front (3-month minimum). Inputs: use case, opt-in/opt-out process, help process, message samples.</li>\n<li><strong>Assign phone numbers</strong> to the Campaign. Can take up to 24 hours; status will show <code>pending</code> or <code>failed</code> during this window — that's expected, not an error.</li>\n</ol>\n<p>TCR review takes <strong>3-5 business days</strong> typically. Brand approval comes first; Campaign approval depends on it.</p>\n<h2>Standard use cases</h2>\n<p>| Use case | Description |\n|---|---|\n| <strong>2FA</strong> | Authentication, verification, one-time passcodes. |\n| <strong>Account Notifications</strong> | Notifications relating to a user's account. |\n| <strong>Customer Care</strong> | All customer-care interactions. |\n| <strong>Delivery Notifications</strong> | Product/service delivery status. |\n| <strong>Fraud Alert Messaging</strong> | Notifications about fraudulent activity. |\n| <strong>Higher Education</strong> | Colleges, universities, K-12 districts (not free-to-consumer models). |\n| <strong>Low Volume Mixed</strong> | Multiple use cases at low throughput (test/demo accounts, single doctor's office, single pizza shop). |\n| <strong>Marketing</strong> | Any messaging with marketing or promotional content. |\n| <strong>Mixed</strong> | 2-5 standard use cases combined. |\n| <strong>Polling and voting</strong> | Non-political surveys/polls. |\n| <strong>Public Service Announcement</strong> | Awareness messaging about important issues. |\n| <strong>Security Alert</strong> | Notifications about system security incidents. |</p>\n<h2>Special use cases (require post-registration MNO review)</h2>\n<p>| Use case | Notes |\n|---|---|\n| <strong>Charity</strong> | 501(c)(3) only. |\n| <strong>Proxy</strong> | App-based group messaging with pooled numbers. |\n| <strong>Emergency</strong> | Public safety/health during disasters. |\n| <strong>Sweepstakes</strong> | All sweepstakes messaging. |\n| <strong>Political</strong> | Federal-level only; campaigns pre-vetted. Requires Campaign Verify. |\n| <strong>Social</strong> | Closed-community communication (YouTube influencer alerts, etc.). |\n| <strong>Platform Free Trial</strong> | CSP free-trial offers to non-paying customers. |\n| <strong>Agents and Franchises</strong> | Brands with multiple agents/franchises needing individual local numbers. |\n| <strong>K-12 Education</strong> | K-12 platforms and distance learning. |\n| <strong>UCaaS High / Low Volume</strong> | UCaaS cloud comms for businesses; approved UCaaS only. |</p>\n<h2>Registration types</h2>\n<p>| Type | Notes |\n|---|---|\n| <strong>Managed Brand &#x26; Campaign</strong> | SignalWire is the CSP, handles all TCR details. Default. |\n| <strong>Self-registered</strong> | You're already TCR-registered with your own CSP ID. Use the <strong>Create a Partner Brand</strong> flow to import. |</p>\n<h2>Best practices for approval</h2>\n<ol>\n<li><strong>Be transparent and honest</strong> — TCR cross-references multiple databases. Errors get flagged.</li>\n<li><strong>Provide clarity and detail</strong> — match campaign descriptions to the actual content of your messages.</li>\n<li><strong>Provide message templates</strong> — even rough ones. Include opt-out language; opt-out is mandatory.</li>\n</ol>\n<h2>Newly purchased numbers — December 2025 change</h2>\n<p>As of December 2025, <strong>newly purchased US 10DLC numbers do not have messaging enabled by default</strong>. Messaging is auto-enabled when you assign the number to an approved Campaign.</p>\n<p>For inbound-only messaging (receiving without sending), contact SignalWire Support to request enablement without a full campaign.</p>\n<p>For testing, your first purchased number is automatically enabled for Platform Free Trial messaging when paired with a verified mobile number.</p>\n<h2>Throughput</h2>\n<p>| Variable | Notes |\n|---|---|\n| <strong>T-Mobile daily limit</strong> | 2000 segments/day for non-Russell-2000 brands. Resets at midnight US Pacific. |\n| <strong>Other carriers</strong> | Throughput determined by use case. |\n| <strong>External vetting</strong> | Third-party vetting partners can raise daily throughput. Adds cost; no guarantee. |\n| <strong>SignalWire queue</strong> | If you submit faster than approved throughput, SignalWire queues and paces — no message loss. |</p>\n<h2>DCA election</h2>\n<p>Direct Connect Aggregators (DCAs) provide the actual carrier-gateway connection. After TCR approves your Campaign, the upstream DCA must also accept it. DCA vetting typically takes 24-48 hours. Election = the DCA has confirmed the campaign and accepted the connection request.</p>\n<p>You can assign numbers while DCA vetting is pending, but messages can't send until election completes.</p>\n<h2>Migrating from another provider</h2>\n<ul>\n<li>Each messaging provider is its own CSP. Re-register when switching providers.</li>\n<li>Your existing provider's registration stays active until you request deactivation — use both providers in parallel during migration.</li>\n<li>Switching providers triggers full re-registration with the new CSP.</li>\n</ul>\n<h2>Campaign limits</h2>\n<ul>\n<li>Up to <strong>49 numbers per campaign</strong> (over that = Number Pooling, requires extra registration).</li>\n<li>One campaign per use case (with Mixed available for low-throughput multi-use cases).</li>\n</ul>\n<h2>What to do today vs. wait for</h2>\n<p>| Action | When |\n|---|---|\n| Submit Brand registration | Day 0 |\n| Submit Campaign registration | Right after Brand submission (parallel) |\n| Assign numbers to Campaign | Right after Campaign creation (status pending OK) |\n| Start sending production traffic | Only after SignalWire notifies you the Campaign is connected AND number assignment shows <code>Complete</code> |</p>\n<h2>Anti-patterns</h2>\n<ul>\n<li>Re-using an EIN across multiple Brands — kills trust score on all of them.</li>\n<li>Submitting a Campaign description that doesn't match the actual message templates — auto-flagged.</li>\n<li>Forgetting opt-out language in samples — TCR rejects.</li>\n<li>Starting to send before number assignment shows <code>Complete</code> — failed deliveries.</li>\n<li>Treating 10DLC and toll-free as the same registration path — they aren't.</li>\n<li>Skipping Brand verification fixes after an Unverified status — every resubmit is <code>$4</code> but you must clear Unverified before adding Campaigns.</li>\n</ul>\n<h2>See also</h2>\n<ul>\n<li><a href=\"/topic/sms-best-practices\">SMS best practices</a></li>\n<li><a href=\"/topic/toll-free-and-hosted-messaging\">Toll-free and hosted messaging</a></li>\n</ul>\n"}