Common rejection reasons
About a 2-3 minute read.
Most campaign rejections come down to a short list of recurring problems. AgentMessage shows you the reason the carriers returned on the campaign's detail page, this guide explains what each common reason means and how to fix it. For how a rejection reaches you in the first place, see How rejections work.
The reasons below are roughly ordered by how often they come up. Most are a same-day fix once you know what to change.
1. The opt-in flow isn't described concretely
What the reason sounds like: the opt-in isn't described, or it's too vague to evaluate.
What's happening: the "how recipients opt in" field doesn't tell the reviewer exactly how a person ends up consenting. "Consumers opt in on our website" with no URL or mechanism doesn't pass.
The fix: name the specific mechanism, the web form (with its URL), the keyword and number, or the verbal script, and include the disclosure text the person sees at the moment they consent. See CTA and opt-in rejections.
2. A required disclosure is missing
What the reason sounds like: the opt-in screen, confirmation, HELP reply, or STOP reply is missing something, usually the brand name, the message frequency, or the "message and data rates may apply" line.
What's happening: one of the standard disclosure elements isn't present everywhere it needs to be. The pieces carriers look for: brand name, what you send, how often, "msg & data rates may apply," HELP info, STOP info, and links to your privacy policy and terms.
The fix: walk each location (opt-in screen, confirmation, HELP, STOP) through that list and add what's missing. Adding the brand name often resolves several flags at once. See Opt-in, opt-out, and HELP.
3. The privacy policy doesn't carve out SMS opt-in data
What the reason sounds like: the policy permits sharing of mobile opt-in data, or lacks SMS-specific protection.
What's happening: your privacy policy doesn't explicitly say SMS opt-in data won't be shared with third parties for marketing, or it has a "with your consent" exception that carriers don't accept for SMS data.
The fix: add unambiguous language that SMS opt-in data is not shared, sold, or rented to third parties for marketing, with no consent exception. See Privacy policy rejections.
4. Samples don't match the content toggles
What the reason sounds like: a sample contains a link but the "embedded links" toggle is off, or a sample has a phone number but that toggle is off (or the reverse).
What's happening: your sample messages and your content toggles tell different stories. If a sample shows a URL, the embedded-links toggle has to be on; if none do, it has to be off. Same for phone numbers in the body.
The fix: line up every sample against every toggle before filing. The toggles are structural, so correcting one means re-filing the campaign, AgentMessage handles that. See The campaign form, field by field.
5. The registered brand isn't the actual sender
What the reason sounds like: the brand isn't the real sender, or the brand doesn't match the message context.
What's happening: you registered your platform or agency as the brand, but the samples clearly come from a different business. The reviewer flags the mismatch.
The fix: register the business the recipient sees as the sender, its name, EIN, website, and support contact. See Brand identity rejections.
6. The content is banned or restricted
What the reason sounds like: a prohibited category was detected (cannabis/CBD, lead generation, high-risk lending, and so on), or age-restricted content has no age gate.
What's happening: the campaign, or the brand's website, includes a category that isn't allowed on 10DLC, or one that's allowed only with controls you don't have in place.
The fix: read Banned and restricted content. Some categories aren't viable on 10DLC at all; others (like alcohol or tobacco) are fine once you add a real age gate. Re-filing without changing the content just repeats the result.
7. No sample shows opt-out language
What the reason sounds like: none of the samples include opt-out instructions.
What's happening: at least one sample has to demonstrate the opt-out, something like "Reply STOP to unsubscribe."
The fix: add opt-out language to one sample. This is a wording change, so it can be re-filed without rebuilding the campaign.
8. A public URL shortener appears in a message
What the reason sounds like: a public link shortener was detected in a sample, HELP, or opt-in message.
What's happening: a message uses a public shortener (the kind anyone can generate). Carriers can't see where those links resolve, so they're not allowed in registered traffic.
The fix: use the full destination URL, or a branded shortener on your own domain.
9. The brand has no EIN
What the reason sounds like: the brand can't be registered without an EIN, or a sole-proprietor lane isn't supported.
What's happening: AgentMessage requires an EIN to register a brand. There's no EIN-less lane today.
The fix: get an EIN (free, about 10 minutes from the IRS) or form an entity, then register. See No EIN? Get one.
10. The pieces don't tell one consistent story
What the reason sounds like: the brand, website, and samples describe different businesses, or the use case doesn't match the content.
What's happening: the campaign's parts don't line up. If the brand says one thing, the website another, and the samples a third, the reviewer can't verify what's going on.
The fix: make the description, samples, opt-in flow, website, and use case all describe the same business doing the same activity. A mismatch between any two of them is behind a surprising number of rejections.
The pattern behind most of these
Nearly every reason above is really a mismatch, between what you say you send and what your samples show, between your stated opt-in and the page at your URL, or between your brand and your traffic. Before you ask for a re-file, read the description, samples, opt-in flow, and privacy policy together and make them agree.