A2P messaging (application-to-person) is any text a business sends from software, such as a CRM, an app, an automation or an API, rather than a person typing on a phone. In the US, carriers treat nearly all business texting as A2P, and A2P traffic on regular 10-digit numbers has to be registered through A2P 10DLC or it gets filtered.
The rest of this post covers three things. First, how A2P differs from P2P (person-to-person) texting. Second, why the US carriers built a registration system around the difference. Third, what registration involves, what it costs on Ready, and when another option makes more sense. If you run a platform that texts on behalf of your own customers, the registration section matters most to you, because you'll be doing it once per customer.
A2P vs P2P: the actual difference
P2P is texting between two people. You type a message on your phone, your friend replies, and the conversation goes back and forth at human speed. The volume is low and the ratio of sent to received messages is roughly even.
A2P is texting where software sits in the middle. Software sends the message, even when a person wrote it. Typical examples:
- Appointment reminders from scheduling software
- Order and shipping updates from an ecommerce store
- 2FA and login codes from a SaaS app
- Marketing campaigns to an opted-in list
- A sales rep replying to a lead from a CRM inbox
The last example surprises people. A human typed the reply, but it went out through a business platform on a business number, so carriers count it as A2P. The question carriers ask is whether a business is sending through an application, and that answer is almost always yes.
| P2P (person-to-person) | A2P (application-to-person) | |
|---|---|---|
| Who sends | An individual on a personal phone | A business through software or an API |
| Typical volume | A few messages an hour | Hundreds to hundreds of thousands a day |
| Send/receive ratio | Roughly balanced | Mostly outbound, with replies |
| Registration in the US | None | A2P 10DLC, toll-free verification or short code |
| Carrier treatment | Treated as normal phone use | Filtered and throttled unless registered |
Why US carriers require A2P 10DLC registration
For years, businesses sent A2P traffic over ordinary 10-digit long codes (10DLC) because those numbers were cheap and looked like regular phone numbers. Spammers did the same, and carriers couldn't tell a dentist's reminder from a phishing link. So the carriers built a registry. Every business sending A2P traffic on a 10-digit number now has to declare two things:
- Who it is (the brand): legal name, EIN, address and website.
- What it sends (the campaign): the use case, such as reminders or marketing, plus sample messages, how contacts opt in, and how they opt out.
When a registered brand sends traffic that matches its campaign, carriers can trust it and deliver it. When traffic arrives unregistered, or doesn't match what was declared, carriers can't tell it apart from spam. For the full history and terminology, see our complete guide to what 10DLC is.
Registration also sets your throughput. Carriers publish no official rate card, so treat these figures as approximations. A fresh standard campaign without brand vetting typically gets about 1 to 4 segments per second. T-Mobile caps each brand per day by trust score, from roughly 2,000 messages a day at the lowest score up to roughly 200,000 at the highest.
What happens if you skip registration
Unregistered A2P traffic gets carrier-filtered. In practice:
- Messages silently disappear. Your system shows "sent", but the text never reaches the handset. This is the worst failure mode because nobody notices for days.
- Delivery becomes erratic. Some messages land and some don't, so you can't debug from a single test.
- Numbers pick up bad reputation. A number that has pushed unregistered volume can stay filtered after you register.
- Carrier fees for unregistered traffic may apply, depending on the route.
There's also a legal layer that registration doesn't cover. The TCPA allows statutory damages commonly cited at $500 to $1,500 per text for messages sent without proper consent. Registration shows carriers you're legitimate. It doesn't prove consent to a court. Those are separate problems.
Some teams ask whether they can stay under the radar at low volume. Our post on whether A2P 10DLC is required covers the edge cases. The short answer: if a business texts customers from software on a 10-digit number, plan to register.
What a brand and campaign registration involves
Most first-time rejections happen at the campaign step, so it helps to know what reviewers look for.
The brand
The brand record needs to match public records exactly. A legal name that's slightly different from the IRS record, or a website that doesn't show the business, will slow things down.
The campaign
The campaign is where you describe your traffic:
- Use case. Pick the one that matches what you actually send. Registering as "marketing" when you mostly send reminders can cost you throughput. Our use-case picking guide walks through the choice.
- Sample messages. These should be realistic, include your business name, and show opt-out language.
- Opt-in description. Explain where and how contacts agree to receive texts, such as a web form checkbox, a keyword, or point-of-sale.
- Opt-out handling. Contacts must be able to reply STOP and actually stop receiving messages.
How Ready registers the brand and campaign
We make Ready, so here's how the process works on our platform. Brand and campaign registration is handled in-app, with no separate portal and no setup fee. The charge when you submit is the first month, $25. After that, the monthly cost is $25 for registration, and $2 per number. Most approvals take 2 to 7 days.
You can start before approval. New accounts get their first 20 texts free. Those are one-to-one sends, and a campaign is paid from its first text. The free texts end the moment you pay for a registration, so use them before you register.
An account can send up to 500 texts a month before registering, at its normal per-text rate. After that, it has to register. If you buy a number before registering, you send on Ready's shared registration at the same per-text rate while your own registration is in review. To send, you add a card and get a number, which is $2 a month with the first month charged when you get it.
For platforms that text for their customers
Ready is built for software companies that send texts for their own customers, such as CRMs and vertical SaaS products. Each of your customers gets a sub-account with its own numbers and its own 10DLC registration. One customer's bad list therefore doesn't drag down everyone else's deliverability.
You create sub-accounts with POST /v1/sub-accounts and check registration status with GET /v1/registration. The 10DLC registration API post covers the full flow, and the API quickstart gets you to a first send.
A single text looks like this:
POST https://api.tryready.com/v1/messages
X-API-Key: <key>
Idempotency-Key: <a new UUID for each text>
{"to": "+12125550199", "body": "Your order #1042 has shipped.", "consent_attested": true} The Idempotency-Key header ensures a retried request never sends twice. Setting consent_attested is your promise that the recipient agreed to texts. Ready records that attestation for each send (who sent it, to how many, and when), which builds an audit trail. It isn't a per-contact consent record, though. The opt-in time, wording and page URL for each contact belong in your own store. Full reference: messages API docs.
The compliance pieces registration doesn't cover
Registration gets you onto the route. Day-to-day compliance features include:
- Automatic STOP handling. An opt-out propagates across every campaign. Opted-out numbers are refused up front and not charged.
- Quiet hours. Texts sent outside permitted local hours for the recipient's area are held and sent later. They're charged only when they send. Campaigns, drip campaigns and automations wait up to 24 hours for the window; a one-to-one or API text is held only if the window opens within 6 hours, otherwise it is refused and must be resent; a one-to-one reply to someone who texted you in the last 24 hours goes out at any hour.
- Litigator and DNC scrubbing. Known TCPA-litigator and DNC numbers can be screened out before send.
These features reduce risk. They don't make you lawsuit-proof, and compliance is ultimately the sender's responsibility.
What A2P texting costs on Ready: a worked example
Ready has one Standard rate: $0.0075/segment, plus a $0.0045 carrier fee per segment. Replies you receive are billed the same way. Enterprise pricing is custom, so talk to us if that applies.
Example assumptions: a clinic sends 1,000 appointment reminders a month. Each reminder is 140 plain-text characters, so each is 1 segment. About 300 patients reply with a 1-segment answer.
- Segments: 1,000 sent + 300 received = 1,300
- Rate: 1,300 × $0.0075 = $9.75
- Carrier fee: 1,300 × $0.0045 = $5.85, itemized separately on the bill
- Registration with one number: $25 for registration + $2 = $27 a month
- Total: $42.60 a month
That all-in per-segment figure excludes the compliance surcharge. Scrubbing and landline validation each add $0.003 per segment when switched on for an account, and both are off by default.
Watch the characters. Add a single emoji to that 140-character reminder and the message becomes 3 segments, because an emoji drops the per-segment limit to 70 characters. That triples the sending cost. Curly quotes and long dashes don't cause this on Ready, because we swap them for plain characters before sending.
When Ready isn't the right fit
Be honest with yourself about what you need. If you only want raw sending and have engineers who'll build registration flows, opt-out handling and quiet hours themselves, a raw CPaaS costs less per segment. Twilio runs about $0.0083/segment. If you're on GoHighLevel and happy with LC Phone, LeadConnector also costs less per message, at roughly $0.0128 all-in.
Our case rests on what's included: self-serve registration (most approvals take 2 to 7 days), sub-accounts per customer, compliance built in, and a full platform with CRM, pipeline, automations and a unified inbox. Ready also installs natively in GoHighLevel, but most of our customers aren't agencies. They're SaaS platforms, local businesses, clinics and stores.
FAQ
Is A2P the same as 10DLC?
No. A2P describes the type of traffic: software-to-person. 10DLC is one route for that traffic, using 10-digit long codes. Toll-free numbers and short codes are other A2P routes, and each has its own registration or verification.
Is a human replying from a CRM inbox P2P?
No. A person wrote the message, but it went through a business application on a business number, so carriers treat it as A2P.
How long does A2P 10DLC registration take?
On Ready, most approvals take 2 to 7 days. While you wait, you can send up to 500 texts a month at your normal rate, and if you bought your number before registering, those go out on Ready's shared registration.
Does registration protect me from TCPA lawsuits?
No. Registration satisfies carriers, while consent satisfies the law. Keep per-contact opt-in records, honor STOP, respect quiet hours, and consider scrubbing against litigator lists, which costs $0.005 per contact as a standalone scrub.
Do I need separate registrations for each of my customers?
If you're a platform texting on behalf of different businesses, generally yes. Each business is its own brand. On Ready, each customer gets a sub-account with its own registration, so problems stay contained.
The practical takeaway
If a business texts customers from software, that's A2P. In the US, A2P on a 10-digit number means registering a brand and a campaign that accurately describe what you send. Skipping registration doesn't save money. It produces "sent" messages that never arrive.
Register early, pick the use case that matches your real traffic, and keep your own consent records. If you'd like registration handled inside the same platform that sends, you can create an account, use your 20 free one-to-one texts, and then submit registration when you're ready. Rates are on the pricing page.