Quick links: Architecture overview · Step-by-step setup · Managing customers at scale · Troubleshooting
Who needs this guide?
| Scenario | You are… | Your architecture |
|---|---|---|
| SaaS platform | Building messaging into your product | Partner campaign (shared across customers) |
| Reseller / agency | Managing messaging for clients | One brand + campaign per client, or shared |
| ISV | Offering white-label messaging | Partner campaign with downstream CSPs |
| Franchise system | Central brand, many locations | One brand, multiple campaigns per location |
Architecture overview
ISV/reseller 10DLC uses a shared campaign model where you register campaigns with your upstream CSP (Campaign Service Provider) and share them to Telnyx for number assignment and messaging.Key concepts
Upstream CSP
The Campaign Service Provider where you register brands and campaigns with TCR. This could be Telnyx (if you register directly) or another CSP.
Downstream CSP
The messaging provider that sends traffic. Telnyx acts as your downstream CSP — you share campaigns to Telnyx for number assignment.
Shared / Partner Campaign
A campaign registered at one CSP and shared to another for traffic delivery. Required for ISV architectures.
Campaign Sharing
The TCR process of granting a downstream CSP access to send traffic for a campaign. Sharing must be accepted by the downstream CSP.
Native vs. partner campaigns
| Feature | Native Campaign | Partner (Shared) Campaign |
|---|---|---|
| Registration | Directly on Telnyx | On upstream CSP, shared to Telnyx |
| Brand ownership | Your Telnyx account | Your upstream CSP account |
| Campaign management | Telnyx API | Upstream CSP + Telnyx Partner API |
| Number assignment | Standard | Via partner campaign endpoints |
| Use case | Direct customer | ISV, reseller, multi-tenant |
| Appeal process | Direct API | CSP nudge mechanism |
Prerequisites
Before starting, ensure you have:Telnyx account with messaging enabled
Sign up and complete account verification. You need a Level 2 verified account.
Upstream CSP account
An account with a CSP where you’ll register brands and campaigns (this can be Telnyx or another provider like Campaign Registry direct access).
Customer business information
For each customer: legal business name, EIN/tax ID, business address, website, authorized representative contact, and messaging use case details.
Phone numbers
10DLC-eligible long code numbers on your Telnyx account. Purchase numbers or use existing inventory.
Step-by-step ISV onboarding
Step 1: Register brands for each customer
Each of your customers needs their own brand registered with TCR. A brand represents a business entity.- Via Telnyx (Native Brand)
- Via External CSP
If using Telnyx as your upstream CSP, register brands directly:
Step 2: Submit brand for vetting
Higher vetting scores unlock greater throughput. For ISV use cases, enhanced vetting is strongly recommended.curl
Enhanced vetting costs a one-time fee and takes 1–7 business days. Brands with vetting scores above 75 get significantly higher throughput. See 10DLC Rate Limits for details.
Step 3: Create campaigns with the ISV use case
For ISV architectures, use theAGENTS_FRANCHISES use case type when registering campaigns:
Step 4: Share campaign to Telnyx
Once your campaign is approved at your upstream CSP, share it to Telnyx. The sharing process depends on your CSP, but the result is a campaign visible in the Telnyx Partner Campaigns API. After sharing, verify the campaign appears on Telnyx:Step 5: Assign phone numbers to the shared campaign
Once the campaign is accepted by Telnyx, assign your 10DLC numbers to it:Number-to-campaign assignment typically completes within minutes. A number can only be assigned to one campaign at a time. To reassign, remove the existing assignment first.
Step 6: Check sharing status
Monitor whether Telnyx has accepted the shared campaign:curl
| Status | Meaning |
|---|---|
PENDING | Campaign shared, awaiting Telnyx acceptance |
ACCEPTED | Telnyx accepted — you can assign numbers and send traffic |
DECLINED | Telnyx declined the sharing request |
Step 7: Send messages
Once numbers are assigned to the accepted campaign, send messages using the standard Send Message API:curl
Managing customers at scale
Multi-tenant architecture patterns
Pattern 1: One brand + campaign per customer (recommended)
Pattern 1: One brand + campaign per customer (recommended)
Best for: Agencies, resellers managing distinct businesses.Each customer gets their own brand and campaign. This provides:
- Isolated throughput per customer
- Independent compliance status
- Clear separation for TCR
Pattern 2: Shared campaign across customers
Pattern 2: Shared campaign across customers
Pattern 3: Hybrid (recommended for growth)
Pattern 3: Hybrid (recommended for growth)
Best for: Platforms with a mix of high-volume and low-volume customers.
- High-volume customers get dedicated brands + campaigns
- Low-volume customers share a platform campaign
- Migrate customers to dedicated as they grow
Bulk brand registration
For platforms onboarding many customers, automate brand registration:Python
Webhook monitoring for partner campaigns
Set up webhooks to track campaign status changes across all your customers:Python
Partner campaign appeals
When a shared campaign is rejected, the appeal process differs from native campaigns. Partner campaigns use a CSP nudge mechanism:Fix the issue
Update the campaign details (description, samples, message flow) at your upstream CSP based on the rejection reason.
Trigger a CSP nudge
Your upstream CSP sends a
CAMPAIGN_NUDGE event to TCR, which triggers a re-review.Troubleshooting
Campaign sharing shows PENDING for days
Campaign sharing shows PENDING for days
Cause: Telnyx hasn’t processed the sharing request yet, or there’s a data mismatch.Fix:
- Verify the campaign is fully approved at your upstream CSP
- Confirm you shared to the correct downstream CSP (Telnyx’s TCR ID)
- Contact Telnyx support with the TCR Campaign ID
Cannot assign numbers to shared campaign
Cannot assign numbers to shared campaign
Messages failing with 40002 (spam) on shared campaign
Messages failing with 40002 (spam) on shared campaign
Brand registration rejected for customer
Brand registration rejected for customer
Cause: Business information doesn’t match public records.Fix:
See the 10DLC Troubleshooting Guide for detailed brand failure resolution steps.
Customer wants to switch from shared to dedicated campaign
Customer wants to switch from shared to dedicated campaign
Compliance checklist for ISVs
ISVs have additional compliance responsibilities because you’re sending on behalf of customers. TCR and carriers hold you accountable for your customers’ messaging practices.
- Customer vetting — Verify your customers’ business legitimacy before registration
- Content monitoring — Monitor message content for compliance with campaign use case
- Opt-in verification — Ensure customers collect proper consent from end users
- Opt-out processing — STOP/HELP keywords must work across all customer traffic
- Volume management — Don’t exceed throughput limits for your campaign’s vetting score
- Incident response — Have a process to quickly disable a customer’s messaging if they violate policies
- Record retention — Keep opt-in records for at least 4 years per CTIA guidelines
- Sample message accuracy — Registered samples must match actual production messages