Guide
10DLC registration explained for small business
10DLC is the US carrier program that decides whether business text messages sent from an ordinary 10-digit phone number actually reach anyone. If your business texts customers from a normal local number โ appointment reminders, quote follow-ups, missed-call replies โ you have to register the company (the "brand") and the reason you're texting (the "campaign") before the carriers will deliver reliably. Skip it and your messages don't bounce; they quietly get filtered, which is much worse, because everything looks fine on your end.
What 10DLC actually is
10DLC stands for 10-digit long code โ an ordinary local phone number, the kind your business already has, used to send application-to-person (A2P) messages. It exists because US carriers needed a way to tell legitimate business texting apart from spam blasted through cheap consumer numbers. The answer they landed on was registration: tell us who you are and what you'll send, and we'll deliver it.
Registration happens in two layers. The brand is your business: legal name, EIN, address, website. The campaign is a specific use case: customer care, appointment reminders, two-factor codes, marketing. One brand can own several campaigns, and each campaign carries its own sample messages, opt-in description, and throughput allowance.
You don't register with the carriers directly. You go through your messaging provider โ Twilio, Telnyx, Bandwidth, or whoever sends your texts โ and they file it with The Campaign Registry (TCR), the central clearinghouse the major US carriers share. That plumbing matters mostly because it explains the failure modes later: a submission can be accepted by TCR and still rejected by a carrier afterwards.
Toll-free numbers use a separate verification process, and short codes are a different product entirely. If you're texting from your regular business line, 10DLC is the one that applies to you.
Why unregistered texts disappear instead of bouncing
The thing that catches people out is that unregistered A2P traffic does not fail loudly. Depending on the carrier and your provider, you'll see one of three outcomes, and only the first one is honest: an outright error code from your provider saying the message was filtered; a message accepted by the API, marked sent, and silently dropped somewhere downstream; or intermittent delivery that works fine for a week and then stops.
That third pattern is the expensive one. A business runs unregistered for a while, sees texts landing, concludes registration is optional bureaucracy, and builds a follow-up process on top of a channel that can be switched off without notice. Then delivery degrades, nobody notices because there's no bounce to see, and leads go cold for weeks before anyone connects the dots.
Registration also buys you throughput. Carriers meter messages per second by brand trust and campaign type, so an unregistered or barely-registered sender is rate-limited on top of being filtered. If you ever plan to send more than a trickle, this stops being a compliance checkbox and becomes a capacity decision.
Registration has three gates, and passing one tells you nothing about the next
Most guides describe 10DLC as a form you fill in. In practice it's three independent reviews, run by different parties, in sequence. We've had campaigns clear the first two and die on the third.
The reason this matters: a clean pass on gate one is not evidence that gate two is clean, and your provider only reports the reasons it actually reached. You fix what it told you, resubmit, and hit a completely different wall.
- Gate 1 โ the campaign copy. Your message flow description, sample messages, and the presence of START/STOP/HELP language. Reviewed against the campaign's own text.
- Gate 2 โ your live website. A human opens the URL your opt-in description points at and looks for a phone field with an SMS consent checkbox next to it, then compares the on-page wording against what your campaign claims.
- Gate 3 โ the mobile network operators. After TCR has accepted and billed you, the individual carriers run their own pass. This is the one that surprises people, because your campaign can show as registered while a carrier has separately rejected it.
Gate 2 is your website, and it's where most registrations die
This is the single highest-value thing in this article: before you pay anything, open the actual page your campaign will point at and check it as a reviewer would. No amount of rewriting the campaign text will fix a website that doesn't have proper consent on it.
The rules come from carrier requirements and CTIA guidelines, and they're stricter than most people expect. Consent has to be specific to SMS, freely given, and provable. Bundling text consent into a general terms-and-conditions checkbox is an automatic fail โ as is putting the disclosure only in a privacy policy rather than beside the field where the customer types their number.
Check every form on the domain that collects a phone number, not just the one you named. Some carrier rejections are domain-wide rather than page-scoped, so a stray chat widget or a legacy landing page with a bare phone field can sink a campaign whose named page is perfect.
- An SMS consent checkbox sits at the phone field, not buried in a policy page
- It is unchecked by default and not required โ submit the form without ticking it and confirm it still goes through
- It covers SMS only; bundling email or phone calls into the same consent fails
- It is separate from any terms-of-service, e-signature, or credit-application consent on the same form
- The disclaimer names your brand and use case and includes: message frequency may vary, standard message and data rates may apply, STOP to opt out, HELP for help, and that consent is not a condition of purchase
- Privacy policy and a real SMS terms page are linked from the consent block itself โ footer-only links and modal-instead-of-page have both been rejected
- Your registered legal business name is visible on the site, not only inside a terms page
- The campaign's message flow names the exact page URL and quotes the on-page sentence verbatim โ compare the actual strings, not the general idea
The carrier gate is real, and your dashboard may not show it
The failure that cost us the most time was invisible in the provider's portal. The campaign showed as accepted with a real registry ID, and separately carried a carrier-rejected status that only appeared when we queried the provider's API directly. The portal said, roughly, "failed," with no reason attached, and our own database still read "pending" because no webhook fires for that state change.
If a campaign isn't delivering and the UI looks healthy, fetch the campaign object from your provider's API and read the campaign status and failure reasons fields directly. Every major provider exposes them; the web dashboards summarize aggressively.
The rejection reasons come back as numeric carrier codes. The most common one is an inconsistency code โ your brand, description, website, and sample messages don't line up with each other. We've also been rejected for a phone field elsewhere on the domain with no consent checkbox, and for putting the SMS terms in a modal instead of on a real page. Code numbers and their exact definitions vary slightly between providers, so pull up your provider's carrier error-code table rather than trusting a number you read somewhere else.
One more trap: don't put merge macros in your sample messages. A sample that reads "Hi {first_name}, your appointment is {time}" is not a message a reviewer can verify. Render them out to realistic values. If your campaign declares that messages contain links, at least one sample needs a real https:// URL in it.
What it costs, how long it takes, and how to avoid paying twice
The cost has three parts: a one-time brand registration fee, a campaign vetting fee charged per submission, and a recurring monthly per-campaign carrier fee that varies by use case. Exact amounts differ by provider and change over time, so price it on your provider's current page rather than any figure in a blog post. For scale: our provider (Telnyx) charged $15 per campaign submission as of August 2026, and the same again on every resubmission.
That per-resubmission charge is the reason the checklist above matters. One dealership we run messaging for paid three times โ once per gate. The first submission died on the campaign copy. We fixed the generator, resubmitted, and the second died on something the copy could never have fixed: the reviewer opened their website and found phone fields with no SMS checkbox. Never resubmit just to see what the error says; the reason text is one line and never more specific than the code.
Timing is uneven. Brand registration is often minutes. Campaign approval can be minutes or several business days depending on use case and whether it gets pulled for manual review. The carrier pass runs after that and has its own clock. Plan for a week, be pleasantly surprised if it's an afternoon, and do not schedule a launch that assumes same-day approval.
Because these rejections are so repetitive, we eventually encoded every rule above as an automated preflight โ it fetches the customer's live opt-in page, grades it against the carrier rules, and blocks the paid submission until it passes. That's built into Lead Friendly's compliance wizard, and you can see what's included at leadfriendly.com/pricing. If you're registering yourself somewhere else, the manual version is the checklist in this article โ run it before you spend the fee, not after.
FAQ
Do I need 10DLC registration if I only send a few texts a day?
Yes. The requirement is based on the traffic being application-to-person business messaging, not on volume. Low-volume senders get filtered too โ they just take longer to notice, because there's no bounce and no error to investigate.
What happens if I text customers without registering?
Messages get filtered by the carriers rather than rejected in a way you can see. Some providers surface a filtering error, but plenty of traffic is accepted by the API, marked as sent, and never delivered. Delivery can also work for a while and then stop, which is why unregistered senders often build a follow-up process on a channel that quietly fails later.
Why was my 10DLC campaign rejected when the message copy looked fine?
Almost always because the reviewer checked your live website, not just your copy. They open the page your opt-in description points at and look for an SMS consent checkbox beside the phone field, unchecked by default, SMS-only, separate from your terms checkbox, with STOP/HELP and rate language. If that isn't there โ on any form on the domain that takes a phone number โ the campaign fails no matter how good the copy is.
Is 10DLC registration the same as TCPA compliance?
No, and passing one does not cover the other. 10DLC is a carrier delivery program: it decides whether your texts arrive. The TCPA is federal law governing consent for calls and texts, with real financial penalties. You can be fully registered and still be violating the TCPA if you're texting people who never agreed to hear from you.
Lead Friendly is the agentic CRM behind this site โ its AI answers every missed call, calls new leads back in seconds, and books the appointment. See it live at leadfriendly.com โ Plans from $49/mo.