This guide shows you how to complete 10DLC (10-Digit Long Code) registration using the Telnyx CLI, from brand creation through campaign approval.
Why 10DLC?
US carriers require 10DLC registration for Application-to-Person (A2P) messaging from local phone numbers. Without it, your messages may be blocked or throttled. Registration establishes your business identity with carriers and unlocks higher throughput based on your trust score.
For a deeper explanation of 10DLC, trust scores, and carrier requirements, see Understanding 10DLC.
Prerequisites
Quick Start: Interactive Wizard
The easiest way to register is using the interactive wizard:
This guides you through brand creation, campaign setup, and number assignment step-by-step.
Manual Registration
Step 1: Create a Brand
A brand represents your business identity for 10DLC registration.
Standard Business
telnyx 10dlc brand create \
--entity-type PRIVATE_PROFIT \
--display-name "Acme Corp" \
--company-name "Acme Corporation Inc" \
--ein 12-3456789 \
--phone +15551234567 \
--street "123 Main Street" \
--city "San Francisco" \
--state CA \
--postal-code 94102 \
--country US \
--vertical TECHNOLOGY \
--website https://acme.com
Sole Proprietor
telnyx 10dlc brand create --sole-prop \
--display-name "John's Plumbing" \
--phone +15551234567 \
--email [email protected]
Entity Types:
PRIVATE_PROFIT - Private company
PUBLIC_PROFIT - Publicly traded company
NON_PROFIT - Non-profit organization
GOVERNMENT - Government entity
SOLE_PROPRIETOR - Individual / sole proprietor
Step 2: Verify Brand (if required)
Some brands require phone verification:
# Check brand status
telnyx 10dlc brand get <brand-id>
# If verification needed, you'll receive an OTP
telnyx 10dlc brand verify <brand-id> --pin 123456
Step 3: Create a Campaign
A campaign defines your messaging use case:
telnyx 10dlc campaign create \
--brand-id <brand-id> \
--usecase MIXED \
--description "Customer notifications and support" \
--sample-message-1 "Your order #12345 has shipped. Track at https://acme.com/track" \
--sample-message-2 "Reminder: Your appointment is tomorrow at 2pm. Reply STOP to opt out."
Common Use Cases
# List all available use cases
telnyx 10dlc usecases
| Use Case | Description |
|---|
2FA | Two-factor authentication codes |
MARKETING | Promotional messages |
CUSTOMER_CARE | Customer support messages |
DELIVERY_NOTIFICATION | Shipping/delivery updates |
ACCOUNT_NOTIFICATION | Account alerts |
MIXED | Multiple purposes |
POLLING_VOTING | Surveys and polls |
PUBLIC_SERVICE_ANNOUNCEMENT | PSAs |
Step 4: Assign Phone Numbers
Assign your US phone numbers to the campaign:
# Assign a single number
telnyx 10dlc assign +15551234567 <campaign-id>
# Check assignment status
telnyx 10dlc assignment status +15551234567
Step 5: Verify Everything
# Check brand status
telnyx 10dlc brand list
# Check campaign status
telnyx 10dlc campaign list
# Verify number assignment
telnyx number get +15551234567
Campaign Approval
After submission, campaigns go through carrier approval:
| Status | Meaning |
|---|
PENDING | Awaiting review |
APPROVED | Ready to send messages |
REJECTED | Review feedback and resubmit |
Check status:
telnyx 10dlc campaign get <campaign-id>
Campaign approval can take 1-7 business days. Do not send A2P messages until approved.
Best Practices
Sample Messages
Your sample messages should:
- Represent actual messages you’ll send
- Include opt-out language (“Reply STOP to unsubscribe”)
- Match your stated use case
- Not contain placeholder text
Throughput
10DLC throughput depends on your trust score:
| Trust Score | Messages/Second |
|---|
| Low | 0.2 |
| Medium | 1 |
| High | 10+ |
Higher trust scores come from:
- Verified business information
- Good messaging practices
- Low spam/complaint rates
Troubleshooting
”Brand verification failed”
- Double-check EIN matches IRS records exactly
- Verify business address is current
- Ensure phone number is associated with business
”Campaign rejected”
Common reasons:
- Sample messages don’t match use case
- Missing opt-out language
- Vague or generic description
Solution: Review feedback, update campaign details, and resubmit.
”Number assignment pending”
Assignment can take up to 24 hours. Check status:
telnyx 10dlc assignment status +15551234567
Complete Script Example
#!/bin/bash
# 10dlc-setup.sh - Complete 10DLC registration
set -e
# Create brand
echo "Creating brand..."
BRAND_ID=$(telnyx 10dlc brand create \
--entity-type PRIVATE_PROFIT \
--display-name "My Company" \
--company-name "My Company Inc" \
--ein 12-3456789 \
--phone +15551234567 \
--street "123 Main St" \
--city "San Francisco" \
--state CA \
--postal-code 94102 \
--country US \
--vertical TECHNOLOGY \
--website https://mycompany.com \
--json | jq -r '.id')
echo "Brand created: $BRAND_ID"
# Wait for brand approval (in practice, check status)
echo "Waiting for brand approval..."
sleep 5
# Create campaign
echo "Creating campaign..."
CAMPAIGN_ID=$(telnyx 10dlc campaign create \
--brand-id "$BRAND_ID" \
--usecase CUSTOMER_CARE \
--description "Customer support and account notifications" \
--sample-message-1 "Your support ticket #123 has been updated. View at https://mycompany.com/support" \
--sample-message-2 "Your password was changed. If this wasn't you, contact support immediately." \
--json | jq -r '.id')
echo "Campaign created: $CAMPAIGN_ID"
# Assign numbers
echo "Assigning phone numbers..."
telnyx 10dlc assign +15551234567 "$CAMPAIGN_ID"
echo "✅ 10DLC setup complete!"
echo "Brand ID: $BRAND_ID"
echo "Campaign ID: $CAMPAIGN_ID"
echo ""
echo "Next: Wait for campaign approval before sending messages."
Next Steps