What is A2P 10DLC? The Complete Guide for Developers
If you're sending SMS messages in the United States, you've probably heard about A2P 10DLC. But what exactly is it, and why does it matter for your business? This comprehensive guide covers everything developers need to know.
Understanding A2P 10DLC
A2P stands for Application-to-Person messaging. This is any SMS sent from a business application to a consumer's phone. Examples include:- Verification codes (OTP/2FA)
- Order confirmations
- Appointment reminders
- Marketing campaigns
- Notifications and alerts
Why Was 10DLC Created?
In the past, businesses could send unlimited SMS messages from any phone number without oversight. This led to massive spam problems:
- Unwanted marketing messages
- Phishing attempts
- Robocall-style text blasts
- No accountability for bad actors
How 10DLC Registration Works
Step 1: Brand Registration
First, you register your business (brand) with The Campaign Registry (TCR). You'll need:
- Legal business name
- EIN (Employer Identification Number)
- Business address
- Website URL
- Contact information
- Business type/vertical
Step 2: Campaign Registration
Next, you register your messaging use case (campaign). Each campaign describes:
- Use case - What type of messages you're sending (2FA, marketing, notifications, etc.)
- Sample messages - Examples of the content you'll send
- Opt-in process - How users consent to receive messages
- Opt-out process - How users can stop receiving messages (usually "Reply STOP")
Step 3: Number Assignment
Finally, you assign phone numbers to your registered campaigns. Each number can only be associated with one campaign.
Trust Scores and Throughput
After registration, your brand receives a Trust Score that determines your messaging throughput (messages per second). The scoring system:
| Trust Score | Message Throughput |
|---|
| Low | 1 msg/sec |
|---|---|
| Medium-Low | 2 msg/sec |
| Medium | 5 msg/sec |
| Medium-High | 10 msg/sec |
| High | 15 msg/sec |
Factors Affecting Trust Score
- Business age and reputation
- Brand vetting (optional $40 fee for faster approval)
- Use case type (2FA gets higher scores than marketing)
- Historical messaging behavior
10DLC vs Short Codes vs Toll-Free
| Feature | 10DLC | Short Code | Toll-Free |
|---|
| Number format | (312) 555-1234 | 12345 | 1-800-555-1234 |
|---|---|---|---|
| Setup time | 1-2 weeks | 8-12 weeks | 1-2 weeks |
| Monthly cost | Low | $1,000+ | Medium |
| Throughput | 1-15 msg/sec | 100+ msg/sec | 3-10 msg/sec |
| Best for | Most use cases | High-volume campaigns | Customer support |
When to Use Each
10DLC is ideal for:- Small to medium businesses
- Transactional messages (OTP, confirmations)
- Moderate marketing campaigns
- Two-way conversations
- Very high-volume messaging
- Time-sensitive campaigns
- Large enterprises with budget
- Customer support
- Businesses wanting a 1-800 image
- Lower registration requirements
What Happens Without Registration?
As of February 2025, all major US carriers block unregistered A2P traffic. If you try to send without registration:
Common 10DLC Use Cases
1. Two-Factor Authentication (2FA)
Campaign type: Authentication (highest throughput)typescriptimport Zavudev from "@zavudev/sdk"; const client = new Zavu(); await client.messages.send({ to: "+14155551234", channel: "sms", text: "Your verification code is 847293. Valid for 5 minutes.", });
2. Order Notifications
Campaign type: Delivery notificationstypescriptawait client.messages.send({ to: "+14155551234", channel: "sms", text: "Your order #12345 has shipped! Track: https://track.example.com/12345", });
3. Appointment Reminders
Campaign type: Account notificationstypescriptawait client.messages.send({ to: "+14155551234", channel: "sms", text: "Reminder: Your appointment is tomorrow at 2:00 PM. Reply Y to confirm or N to reschedule.", });
4. Marketing Campaigns
Campaign type: Marketing (requires explicit opt-in)typescriptawait client.messages.send({ to: "+14155551234", channel: "sms", text: "Flash sale! 20% off everything today only. Shop now: https://shop.example.com. Reply STOP to unsubscribe.", });
Registration Requirements by Use Case
| Use Case | Opt-in Requirement | Sample Message Needed | Approval Time |
|---|
| 2FA/OTP | Implicit | Yes | 1-2 days |
|---|---|---|---|
| Transactional | Web form/App | Yes | 1-3 days |
| Notifications | Web form/App | Yes | 2-3 days |
| Marketing | Double opt-in | Yes | 3-5 days |
| Mixed | Strictest applies | Yes | 3-5 days |
How Zavu Simplifies 10DLC
Managing 10DLC compliance can be complex. Here's how Zavu handles it for you:
1. Automatic Registration
When you create a sender in Zavu, we automatically:- Register your brand with TCR
- Create the appropriate campaign
- Assign your phone numbers
- Handle carrier connections
2. Included Fees
TCR charges registration fees that add up:- $4 brand registration
- $15+ campaign registration
- Monthly maintenance fees
3. Compliance Monitoring
Carrier policies change frequently. We:- Monitor policy updates
- Adjust your registration as needed
- Alert you about required changes
- Prevent compliance issues before they happen
4. Simple API
typescriptimport Zavudev from "@zavudev/sdk"; const client = new Zavu(); // That's it - we handle the compliance const result = await client.messages.send({ to: "+14155551234", channel: "sms", text: "Your verification code is 123456", }); console.log(result.message.id);
Common 10DLC Questions
Do I need to register if I only send a few messages?
Yes. There are no volume exemptions. Even one message per day requires registration.
Can I use my existing phone number?
Yes, as long as it's a 10-digit US number. You'll need to register it with TCR before sending.
How long does registration take?
- Brand: 1-2 business days
- Campaign: 1-5 business days
- Total: Usually under 1 week
What if my campaign is rejected?
Common rejection reasons include:- Missing opt-out instructions in samples
- Unclear use case description
- Missing business information
Can I send to multiple countries?
10DLC only applies to US numbers. For international messaging, different regulations apply. Zavu handles this automatically based on the destination number.
Getting Started
Ready to start sending compliant SMS? Here's how:
npm install @zavudev/sdkRelated Resources
- A2P 10DLC Fees 2025 - Complete fee breakdown
- 10DLC Registration Requirements - Step-by-step guide
- SMS API for Developers - Full API documentation