Troubleshooting: 10DLC campaign rejected
Your 10DLC campaign came backFAILED and the carriers still will not
pass your traffic. This page maps the rejection cause to the corrective
step and the resubmission path. The full registration flow — brand
first, then campaign — is in the
10DLC registration guide; this page picks
up where it stops, at “rejected — see rejectionReason.”
Approval and rejection decisions are The Campaign Registry’s and the
carriers’ call, not Orbit’s — Orbit submits, syncs the verdict, and
enforces what comes back. Lead times here are expectations from
current TCR behaviour, not guarantees.
Where rejections surface
A rejection shows up on the campaign record. Read it with the status endpoint:status: "FAILED"):
status— the CSP-level verdict.FAILEDmeans the registry or a reviewer refused the filing.PENDINGis still in review; do not treat a longPENDINGas a rejection.rejectionReason— the reviewer’s own finding, verbatim from the registry (“EIN does not match”, “sample content does not match declared use case”). Read it literally: it names the specific item to fix, not a generic error class.mnoStatuses— the per-carrier map (keys are MNO carrier ids). A campaign can beAPPROVEDat the CSP level while one carrier still holdsREVIEWorFAILED— that is a carrier-specific problem, not a do-over of the whole filing.
Platform operators on self-hosted deployments: the registry-side
country ruleset that governs sender types and registration
requirements is kept current by the iconectiv TCR partner-feed
connector — a read-only metadata feed, never a send path. If your
tenant sees rejection categories the docs do not list, confirm the
feed is configured; see Country-Rule Feed Configuration in the
10DLC registration guide. SaaS
customers on
api.orbit.devotel.io do not manage this.Symptom → cause → fix
Work the table untilrejectionReason matches a row. The causes below
cover the failure modes that make up nearly every 10DLC rejection.
Fix and resubmit
A rejection is scoped to the brand or campaign that failed — fixing and resubmitting it does not touch your brand’s vetting score or any already-approved campaigns.- Fix the named item. Use the table above. Brand-level rejections (EIN, vetting completeness) need a corrected brand submission; campaign-level ones (use case, samples, opt-out language, token) need a corrected campaign submission against the same brand.
-
Resubmit. Campaign submission is the same call as the initial
filing, with the corrected fields:
-
Read the new verdict. A resubmission starts a fresh review
cycle — expect the same 1–5 business days as the initial filing.
Poll the status endpoint above or watch the dashboard notification;
the
FAILEDstate clears when the new verdict lands.
Raise your vetting score while you are here
If the rejection was vetting-related, fix the score itself, not only the flag: complete the brand record (EIN, website, full legal name, stock symbol if public). A vetting score of 75 or higher moves you from the ~30,000 messages/day-per-number baseline to the ~2,000,000 Top Tier cap — the throughput tiers are in the 10DLC registration guide. The score carries across every campaign on the brand, so this is the one fix that pays off on all future filings.What not to do
- Do not resubmit the same body unchanged. A rejected body
resubmitted as-is earns a faster second rejection — the reviewer
named what to fix in
rejectionReason; fix that specific item. - Do not treat CSP-level
APPROVEDas the all-clear. ReadmnoStatusesand hold traffic to any carrier still inREVIEWorFAILEDuntil that entry flips. - Do not route around the rejection by sending anyway. Unregistered traffic on US 10DLC gets carrier-filtered, surcharged, and throttled — the rejection is the gate, not a warning. Fix the gate; the message undelivered or failed page covers the send-side symptoms when registered traffic still fails.
When to escalate
Escalate to support@devotel.io when you have fixed the itemrejectionReason named and the next verdict still
fails the same way, or when the reason does not map to any row in the
table. Include:
- Your tenant ID (dashboard → Settings → Organization, or
organizationIdonGET /api/v1/me). - The campaign id (
C…) and brand id (B…). - The verbatim
rejectionReasonstring from the status response.
See also
- 10DLC registration guide — the full brand → campaign → approval flow, use-case codes, and throughput tiers
- Troubleshooting: message undelivered or failed
— the send-side page; a
rejectedmessage status on US traffic often traces back to the campaign state this page covers - Compliance troubleshooting: pending or gated surfaces — sender-registration gates beyond 10DLC