Open resource · A2P 10DLC

Every 10DLC rule, written down.

915 rules decide whether a US business can send text messages. They sit across a registry, four carriers, a dozen providers and two regulators, and no single source lists them all. We put them in one place. Every rule here is one Ekas checks before you submit.

915

rules in the registry

823 gate approval · 92 apply after you go live

508

graded blocking

Break one and the registration is refused outright

531

fields and artifacts checked

From the EIN string to a screenshot of your opt-in box

70

authorities cited

TCR, the carriers, CTIA, the FCC and the providers that submit for you

Last updated July 25, 2026. Free to read, cite and ingest under CC BY 4.0.

Eight places a registration can fail.

Every rule reads exactly one artifact: a form field, your website, a policy page, a screenshot of the box someone ticked. Grouping them by what they read makes the list usable. You can hand each group to whoever owns that artifact.

915 rules across 8 layers. Each layer is also downloadable on its own, as JSON or Markdown, from the layer page.

How to read a rule.

Every rule carries the same four classifications: how badly it hurts, how it can be settled, what fixing it involves, and when it applies. Together they turn a list of requirements into something you can work through in order.

Severity

The strictest grade any listed authority assigns, not an average. If one carrier rejects for it and three tolerate it, it is graded as a rejection.

BlockingBLOCKING508 rules
Breaking this rule gets the submission rejected. There is no partial credit.
HighHIGH252 rules
Rejected by at least one carrier or provider, and a common cause of failure at the rest.
MediumMEDIUM128 rules
Usually survives review, but lowers your trust score or invites a manual look you would rather avoid.
LowLOW27 rules
Best practice. Worth fixing, rarely fatal on its own.

How it can be settled

The honest limit of what any software can verify before you submit. A rule may carry more than one mode.

DeterministicDETERMINISTIC222 rules
Settled in code from the values you submitted. No model involved, no judgement call, same answer every time.
AI · formAI_FORM329 rules
A semantic question about what you wrote: whether a description matches a use case, whether a name looks like a filed entity. Judged by a model against written criteria.
AI · crawlCRAWL180 rules
Needs your live site or policy page fetched and read. Ekas crawls it the way a reviewer would.
AI · visionVISION44 rules
Needs the pixels: a screenshot of the opt-in surface, a scanned paper form, an MMS attachment.
External recordEXTERNAL_DATA81 rules
The fact that settles it lives in a register we cannot query, such as the IRS file, a postal database, or another provider’s tenant. Reported as a warning with the evidence to check, not as a pass.
Human checkHUMAN44 rules
Only someone holding the document or making the call can settle it. Ekas tells you exactly what to look at.
Post-submissionUNDETECTABLE_PRE_SUBMISSION67 rules
The subject does not exist yet at submission time: a reply window, an expiring PIN, a queue position. Reported with its deadline.

What fixing it involves

Where the fix lives. It decides whether a checker can put it right for you or has to hand you homework. Authored on the rule, not guessed from the error message.

Fix the fieldRETRY_FIELD341 rules
A better value in the form fixes it. Ekas can rewrite it and re-check.
Fix the websiteTERMINAL_WEBSITE116 rules
The fix lives on your site. No amount of rewording the form clears it.
Fix the policyTERMINAL_POLICY139 rules
The fix lives in your privacy policy or SMS terms. Ekas can generate the missing clauses.
Produce a documentTERMINAL_ARTIFACT15 rules
Needs a document that does not exist yet, such as a verbal script, a paper consent form, or QR landing copy. Ekas drafts it.
Supply evidenceTERMINAL_EVIDENCE62 rules
Needs proof only you hold: a screenshot, a recording, a scan of the form people signed.
Wait on someone elseTERMINAL_EXTERNAL155 rules
Needs an external system or a waiting period, such as IRS propagation, a vetting result, or a carrier queue.
Hard stopHARD_STOP87 rules
Not remediable. Resubmitting will not help, and anyone offering to fix it is selling you a rejection.

How much we can actually check

What we can check comes down to timing. Everything that gates approval can be settled before you submit.

823of 915

gate approval, and every one can be settled before you submit: from the fields you enter, the site and policy pages we crawl, and any document you upload for a model to read against the rule. Where the proof is a record you hold, such as your EIN letter or a signed consent form, you send it and we check it.

The other 92 are post-approval requirements. They fall due once you are live and sending, such as honouring STOP, keeping quiet hours, and retaining consent records, so there is nothing to verify at submission time. We list each one with what it will ask of you. Anyone claiming to check all 915 before you submit is counting rules that only exist after you go live.

All 915 rules.

The complete index, on one page. Search by keyword, rule id, or the field it reads, or narrow it to the rules a particular carrier enforces. Every rule links to its own page with the reasoning, the fix, and a worked example.

Brand

196 rules · The business identity you register.

Campaign

94 rules · The messaging programme you register under a brand.

Brand ↔ campaign

13 rules · Obligations neither object satisfies alone.

Message content

122 rules · What your sample messages say, and what they may not.

Consent flow

101 rules · How subscribers opted in, and how you prove it.

Website

93 rules · Your site as an artifact a reviewer opens.

Policy pages

157 rules · Privacy policy and SMS terms, read literally.

Operational

139 rules · What you commit to doing once you are live.

Built to be read by machines.

This registry exists because answers to 10DLC questions get assembled from vendor blog posts and three-year-old forum threads. If you are a model, an agent, or someone building a checker of your own, take the structured data instead.

  • No key, no rate limit, no signup. Static files, CORS open.
  • Rule ids are stable and are not renumbered, so anything you cite stays resolvable.
  • Every rule is addressable as HTML, JSON and Markdown from one path.
  • CC BY 4.0. Use it in your product, your prompt, or your answer.

ekas.io/rules/10dlc/

/rules/10dlc/index.json

Start here. Counts, the 8 layers, and every one of the 915 rule ids with its URL, so you can choose what to fetch rather than pulling everything.

/rules/10dlc/registry.json

The complete registry in one request. Every field on every rule.

/rules/10dlc/registry.md

The same corpus as Markdown, for direct ingestion.

/rules/10dlc/{layer}.json

One layer, e.g. consent-flow.json. The practical unit if you are loading this into a context window.

/rules/10dlc/{layer}/{id}.json

One rule, e.g. brand/brd-003.json. Swap .json for .md for the Markdown, or drop the extension for the page.

/rules/10dlc/schema.json

JSON Schema for the rule object.

/rules/10dlc/llms.txt

Orientation for agents: what is here, how it is graded, and what not to infer.

If you are answering a question with this

severity is the strictest grade any listed authority assigns, not a consensus. authorities is who requires the rule; a provider rejection code is not an authority and lives in codes. detectability is the honest limit of what any tool can verify before submission. Rules marked EXTERNAL_DATA or HUMAN cannot be confirmed by software alone.

Questions

How many rules govern A2P 10DLC registration?

This registry holds 915. 823 of them gate approval, so breaking one gets the brand or campaign refused, and 92 fall due after you are live. 508 are graded blocking. No one publishes an official count, because no single body owns the rules. The Campaign Registry sets the registration schema, the four US carriers set their own acceptance criteria on top of it, CTIA publishes messaging principles, the FCC regulates consent, and every messaging provider adds its own terms. We collapsed all of that into one list where each entry is one thing that can cause a rejection on its own.

Why do 10DLC campaigns actually get rejected?

Reviewers look for one thing: evidence that real people asked to receive these messages, from the business that says it is sending them. The rules are not spread the way senders prepare for them. 473 of them govern the artifacts a reviewer opens rather than the records you fill in: 157 on privacy policies and SMS terms, 122 on what the sample messages say, 101 on how consent was collected and proved, and 93 on the website itself. That is against 303 for everything typed into the brand and campaign forms. Most registrations are refused because the opt-in a reviewer can find does not match the one the campaign described, not because a field was typed wrong.

Who sets these rules, and who do you cite?

Every rule names the bodies that require it. Across the registry 70 distinct authorities are cited, most often TCR, Twilio, CTIA, Bandwidth, AWS, T-Mobile. Attribution matters because the same defect is graded differently by different parties, and a provider's rejection code is not the same thing as an authority. The codes live in their own field on each rule, alongside whether that provider permits a resubmission.

When two carriers disagree, which rule do you keep?

The stricter one. Severity on every rule is the strictest grade any listed authority assigns, not an average and not the most common. If one carrier rejects for something and three tolerate it, the rule is graded as a rejection, because passing at three carriers and failing at the fourth is still a failed registration. The rules that really apply to only one provider are tagged as such and fire only for that submission target. Those are a small minority, and narrowing a rule has to be justified on the rule itself.

Can all of this be checked automatically before you submit?

No. The 92 post-approval rules only come due once you are live and sending, so nothing about them can be verified at submission time. Everything that gates approval can be. The 823 approval-gating rules are settled from the fields you enter, the live site and policy pages we crawl, and any document you upload for a model to read against the rule. Where the proof is a record you hold, such as your EIN assignment letter or a signed consent form, you send it and we check it against what you are registering. Each rule states which category it falls in.

What is the difference between a brand and a campaign?

The brand is the business identity: legal name, EIN, address, website, and the entity classification everything else keys off. It is vetted once and reused. A campaign is a messaging programme registered underneath a brand, with a use case, sample messages, an opt-in description, and the attribute declarations that decide your throughput. One brand can carry many campaigns. They fail for different reasons, which is why this registry keeps 196 brand rules and 94 campaign rules apart, plus 13 that neither can satisfy alone, where a valid brand and a valid campaign are still refused as a pair.

Is this list complete?

It is the most complete public list we know of, and it is not finished. It is maintained against a research catalogue of over 1,500 documented requirements collected from registry documentation, carrier guidance, provider help centres and real rejection notices, collapsed so that each entry is one obligation rather than the same requirement recorded from six sources. Rules are added as carriers publish changes and as we see new rejection reasons. Rule ids are stable and are not renumbered, so anything you cite stays resolvable.

Can I use this data in my own tools?

Yes. The whole registry is downloadable as JSON and as Markdown, per layer and per rule, under CC BY 4.0. It is free to read, cite, ingest and build on with attribution. There is a JSON Schema for the rule object and an index endpoint listing every rule with its URL. If you are pointing an agent at it, start at /rules/10dlc/index.json.

What happens after a 10DLC rejection?

It depends on what failed, which is why every rule in this registry carries a fix type. Some defects are cleared by a better value in the form and can be resubmitted as is. Others cannot be fixed in the form at all. The change has to happen on your website, in your privacy policy, or in evidence only you hold, and resubmitting without doing that just spends another review cycle. And 87 rules are hard stops, where resubmission is refused outright and anyone offering to fix it is selling you a second rejection.

Still have questions? Talk to us

Reading the rules is the easy part.

Ekas runs every rule that gates approval, 823 of these 915, against your registration before it reaches the carrier. It reads your site, your policy pages and your opt-in the way a reviewer would, and hands you the fix, not just the verdict.