A "not registered" error usually means one of three things: the brand never verified, the campaign isn't approved yet, or the number you're sending from isn't attached to an approved campaign. The error text rarely tells you which. Most of the time lost here goes to fixing the wrong layer, like rewriting sample messages when the real problem is an EIN that doesn't match IRS records.
This guide shows how to find the actual status of each piece, what the common The Campaign Registry (TCR) and carrier states mean, and the fastest fix for each failure. It applies whether you register through Ready, another provider or directly. Where Ready handles something differently, we say so.
The three layers that all have to be green
10DLC registration is a chain. Your texts go out as registered traffic only when every link holds:
- Brand. Your business identity: legal name, EIN, address, entity type. TCR checks it against public records.
- Campaign. The use case (marketing, account notifications, customer care and so on), your sample messages, your opt-in description and your opt-out language. Carriers review it after TCR accepts it.
- Number assignment. Each sending number has to be linked to an approved campaign. A number that exists on your account but isn't linked to the campaign is unregistered traffic in the carriers' eyes.
When you hit an error, check these in order. A campaign can't be approved under a failed brand, and an approved campaign does nothing for a number that isn't on it.
How to look up your status
In the Ready app
Ready handles brand and campaign registration in the app, so the status of both shows on the account's registration page, along with which numbers sit on the campaign. If a brand or campaign was rejected, the reason the carrier or TCR returned shows there too. That reason is the most useful piece of information you'll get, so read it before changing anything.
Through the API (for platforms with sub-accounts)
If you run a platform where each customer has a sub-account with its own registration, you'll want to check status in code instead of by hand. Ready exposes registration status at one endpoint:
GET https://api.tryready.com/v1/registration
X-API-Key: <key> Platforms usually call this before turning on sending for a new customer, and again on a schedule while a registration is in review. That way your own UI can show "pending" instead of letting the customer send into a wall. The response format and the sub-account endpoints (GET /v1/sub-accounts) are documented starting from the quickstart. For the full programmatic flow, see our post on the 10DLC registration API.
Elsewhere
On other providers, look for a "Trust Hub", "compliance" or "10DLC" section in the console. You're looking for the same three things: the brand's identity status, each campaign's status, and the campaign each number is assigned to.
What the status values mean
Naming varies a little between providers, but these are the states you'll run into.
| Layer | Status | What it means | Fastest fix |
|---|---|---|---|
| Brand | Verified | TCR matched your details to public records | Nothing; move on to the campaign |
| Brand | Unverified | Legal name, EIN or address didn't match | Correct the details to match IRS records exactly and resubmit |
| Brand | Vetted / vetted verified | An optional external vet was run | Nothing; this raises trust score and throughput |
| Campaign | Pending / in review | Waiting on TCR or carrier review | Wait; most approvals take 2 to 7 days |
| Campaign | Rejected | A reviewer found a problem with content, opt-in or website | Read the reason, fix that one thing, resubmit |
| Campaign | Active / approved | Carriers accepted it | Confirm your numbers are attached |
| Campaign | Suspended | Pulled after complaints, content issues or a billing lapse | Find the cause, fix it, contact your provider |
| Campaign | Expired | Renewal wasn't paid | Renew; this may mean re-review |
| Number | Not assigned | Number isn't linked to an approved campaign | Attach it to the campaign |
Fixing each failure state
Brand unverified
This is the most common hard failure, and it's almost always a data mismatch. TCR compares what you entered to official records, so "Smith Plumbing" fails when the IRS has "Smith Plumbing Services LLC."
Check against your EIN confirmation letter:
- Legal name exactly as the IRS has it, including "LLC", "Inc." and punctuation. Not your DBA.
- EIN with no typos.
- Address matching what the IRS and your state filing show.
- Entity type (private company, publicly traded, nonprofit or government). Picking the wrong type is a quiet failure.
If the IRS name is out of date, the fix happens at the IRS, not in your registration form. Resubmitting the same mismatched data just gets the same result.
Campaign pending for longer than you expected
Most approvals take 2 to 7 days. Before that window is up, "pending" isn't an error, and editing a campaign that's in review can restart parts of the process. Leave it alone. Our post on how long 10DLC approval takes breaks the timeline down step by step.
If you need to send while you wait, see the section on sending during review below.
Campaign rejected
The rejection reason points at what to fix. The usual causes:
- Sample messages that don't match the use case, contain no brand name, or touch restricted content. Our SHAFT rejection rewrite guide walks through samples that pass.
- Opt-in description that's vague about how people agree to texts. "Customers opt in" fails. "Customers check an unchecked box on our booking form that reads..." passes.
- Website problems: no privacy policy, a privacy policy that says nothing about SMS data, or a site that doesn't load or doesn't match the brand. The website, privacy policy and terms requirements post has templates.
- Use case mismatch: registering "marketing" when your samples are appointment reminders, or the reverse.
Fix only what the reason names, then resubmit. Rewriting everything at once makes it harder to tell what worked if it fails again.
Campaign approved, but you still get "not registered"
This one confuses people the most. The campaign shows active, but sends fail as unregistered. Check:
- Is the sending number attached to the campaign? Numbers bought after approval, or ported in, often aren't linked automatically on every provider. On Ready, every number on the account sits on the account's registered campaign.
- Are you sending from the number you think you are? A rotation or a hard-coded
fromcan pick a number outside the campaign. - Did carriers finish provisioning? Even after approval, propagation to every carrier can lag.
If the number is attached and texts arrive but get filtered, that isn't a registration problem. It's content-level filtering, covered in approved campaigns that still get filtered.
Campaign suspended or expired
A suspension usually follows a jump in opt-outs or complaints, content outside the registered use case, or an unpaid monthly fee. Find out which one applies before you do anything else. If the cause was content, fix the sending behavior first. A campaign that's reinstated and then sends the same messages tends to get pulled again.
Expiry is simpler: the monthly fee did not go through. On Ready, registration is charged to your card each month at $25/mo for registration and $2 per number, so check the card under Settings, then Billing, first.
Sending while registration is in review
Waiting on approval doesn't always mean going silent. On Ready:
- An account can send up to 500 texts a month before it registers, at its normal per-text rate. After that, it has to register.
- An account that bought its number before registering sends on Ready's shared registration at the same per-text rate while its own registration is in review.
- The first 20 texts are free one-to-one sends. They end the moment a registration is paid for, so use them before you register. To send, you add a card and get a number, which is $2 a month with the first month charged when you get it.
Worked example. Say you send 500 single-segment reminders during a month you're in review, each under 160 plain characters, so one segment each. At the Standard rate that costs 500 × $0.0075 = $4, plus 500 × $0.0045 in carrier fees, which are itemized separately on the bill. If you reach the 500 cap and still aren't approved, sending pauses until approval. That's where the "not registered" message shows up for accounts that never submitted at all. More options are in sending SMS without waiting on 10DLC.
A blue line is the other route. It sends as iMessage, so it needs no 10DLC registration. It costs $99 a month per line plus 6 cents a segment, and each line can start up to 50 new conversations a day. It handles one-to-one conversations, not campaigns. Texts to Android phones go from the account's regular number. Details are in the blue line guide.
Preventing the next failure
Most status problems come from fixable inputs, so check them before you submit:
- Copy the legal name and EIN from the IRS letter, not from memory.
- Make sure the website is live, matches the brand and has an SMS section in the privacy policy.
- Write sample messages that include your business name and opt-out language ("Reply STOP to opt out").
- Pick the use case that matches what you'll actually send.
- Confirm every sending number is attached to the campaign before you go live.
Brand vetting ($79 Standard or $179 Enhanced, one-time) raises trust score and daily throughput. It's worth it for higher-volume senders. It doesn't fix a rejected campaign, and standard registration is all most senders need.
The short version
When you see "not registered", check brand, then campaign, then number assignment, in that order. Read the rejection reason before you edit anything. Then fix the one thing it names. Most fixes are a data correction or a sample rewrite, and an approved campaign with an unattached number is the quickest fix of all.
If you'd rather have registration, status checks and number assignment handled in one place, you can create a Ready account, use your 20 free texts, and submit when you're ready. If you're building this for many customers, the quickstart covers sub-accounts and the registration endpoint.