All 915 10DLC rules

A2P 10DLC rule registry

10DLC message content rules

Reviewers read the samples as evidence of the programme, not as filler. These rules cover sender identification, opt-out language, the SHAFT categories, URL and shortener treatment, MMS media, and the auto-replies that answer HELP and STOP.

122 rules· 102 blocking · 12 high · 7 medium · 1 low

MSG-008Opt-in confirmation must be 20–255 characterscampaign.optin_messageBlockingBLOCKING

The opt-in confirmation must be at least 20 and at most 255 characters.

MSG-009HELP reply must be 20–255 characterscampaign.help_messageBlockingBLOCKING

The HELP response must be at least 20 and at most 255 characters.

MSG-011Opt-out confirmation must be 20–255 characterscampaign.optout_messageBlockingBLOCKING

The STOP confirmation must be at least 20 and at most 255 characters.

MSG-018An MMS campaign must attach at least one sample media filecampaign.mms_sample_mediaBlockingBLOCKING

A campaign that requests MMS capability must supply at least one sample media file alongside the sample message text.

MSG-019Each MMS sample file must sit under its per-type size ceilingcampaign.mms_sample_mediaBlockingBLOCKING

Every attached MMS sample file must be at most 500 KB for GIF, JPEG and PNG images, and at most 600 KB for any other media type.

MSG-031Sample messages must be in Englishcampaign.sample[]BlockingBLOCKING

Sample messages must be written in English, or an English translation supplied alongside.

MSG-034Samples must not be framed as test, demo or machine-to-machine trafficcampaign.sample[] + campaign.descriptionBlockingBLOCKING

Sample messages and the campaign description must describe real messages sent to real subscribers, not test traffic, demonstrations, or machine-to-machine signalling.

MSG-042Every message must identify who is sending itcampaign.sample[]BlockingBLOCKING

The message body must identify the entity on whose behalf it is sent, and where relevant give a contact route.

MSG-045Samples must not impersonate another organisationcampaign.sample[] + campaign.descriptionBlockingBLOCKING

Sample messages must not impersonate or misrepresent another business, bank, government agency, or technology company.

MSG-046Samples must be consistent with the brand websitecampaign.sample[] + brand websiteBlockingBLOCKING

Sample messages must describe a business consistent with what the brand website shows.

MSG-054Universal opt-out keywords must be supported in copy and configurationcampaign.optout_keywordsBlockingBLOCKING

STOP, END, CANCEL, UNSUBSCRIBE and QUIT must all be supported, both in the keyword configuration and honoured in practice.

MSG-056A no-reply route must disclose that replies are not receivedcampaign.sample[] + campaign.message_flowBlockingBLOCKING

Where the sending route cannot receive inbound texts, every message must clearly disclose that replies are not monitored.

MSG-058A recurring programme must have an opt-in confirmationcampaign.optin_messageBlockingBLOCKING

Every recurring message programme must send a confirmation message when a consumer opts in.

MSG-061The opt-in confirmation must name the registered brandcampaign.optin_message + brand.display_nameBlockingBLOCKING

The opt-in confirmation message must contain the registered brand name or DBA, matching the brand record.

MSG-062Opt-in confirmation must name the programmecampaign.optin_messageBlockingBLOCKING

The confirmation must name the programme or describe the product, so the consumer knows which subscription they joined.

MSG-064Opt-in confirmation must carry the rates disclosurecampaign.optin_messageBlockingBLOCKING

The confirmation must state that message and data rates may apply.

MSG-065Opt-in confirmation must carry HELP instructionscampaign.optin_messageBlockingBLOCKING

The confirmation must tell the consumer how to get help or give a support contact.

MSG-066Opt-in confirmation must carry a working opt-out instructioncampaign.optin_message + campaign.optout_keywordsBlockingBLOCKING

The confirmation must include STOP instructions echoing a keyword the programme honours.

MSG-073HELP response must name the brand or programmecampaign.help_messageBlockingBLOCKING

The HELP reply must contain the registered brand or programme name.

MSG-074HELP response must give a real support contactcampaign.help_messageBlockingBLOCKING

The HELP reply must contain at least one support contact — a phone number, an email address, or a support URL.

MSG-078HELP must be a configured help keywordcampaign.help_keywordsBlockingBLOCKING

The literal keyword HELP must appear in the configured help keyword set.

MSG-081STOP confirmation must name the brand or programmecampaign.optout_messageBlockingBLOCKING

The opt-out confirmation must contain the registered brand or programme name.

MSG-082STOP confirmation must acknowledge the requestcampaign.optout_messageBlockingBLOCKING

The confirmation must acknowledge that the opt-out request was received and acted on.

MSG-083STOP confirmation must state no further messages will be sentcampaign.optout_messageBlockingBLOCKING

The confirmation must state explicitly that the consumer will receive no further messages.

MSG-088Public URL shorteners are prohibited in every registration fieldcampaign.* (every text field)BlockingBLOCKING

No public URL shortener may appear in the description, message flow, samples, HELP reply, or either confirmation message.

MSG-101Links must not be intended to deceive or cause harmcampaign.sample[] + link destinationsBlockingBLOCKING

Embedded links must not be designed to mislead the recipient or deliver harm.

MSG-103The page a sample links to is screened as part of the campaigncampaign.sample[] URL -> landing pageBlockingBLOCKING

The landing page reached from a link in a sample message must be free of prohibited content, and is screened whether or not it is on the registered brand domain.

MSG-105The advertised offer must match the landing pagecampaign.sample[] <-> landing pageBlockingBLOCKING

The offer described in a sample message must be the offer a recipient finds on the page the message links to.

MSG-106Link domains must not appear in threat intelligencecampaign.sample[] link domainsBlockingBLOCKING

Domains appearing in message content must not be flagged by threat-intelligence sources.

MSG-119A sample must contain a URL when embeddedLink is declaredcampaign.embedded_link + campaign.sample[]BlockingBLOCKING

When embeddedLink is true, at least one sample message must actually contain a URL.

MSG-123Age-restricted content requires the age-gated attributecampaign.age_gated + campaign contentBlockingBLOCKING

Where sample or description content covers alcohol, firearms, or tobacco, the age-gated attribute must be set true.

MSG-137No unsolicited bulk messagingcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote unsolicited bulk messaging, whatever the content of it is.

MSG-142The description must match the sample messagescampaign.description + campaign.sample[]BlockingBLOCKING

The campaign description must describe the messages the samples actually show.

MSG-148Samples must match what the printed or in-person call to action promisedcampaign.sample[] <-> offline CTA artifactBlockingBLOCKING

Where consent is collected on paper, at a point of sale, by QR code or by keyword, the samples must match the programme the printed call to action described.

MSG-152Transactional campaigns must contain no promotional elementcampaign.sample[] + campaign.usecaseBlockingBLOCKING

A campaign declared transactional or informational must have no coupon, offer, upsell, or promotional content in its samples.

MSG-155Sweepstakes content requires the sweepstakes use casecampaign.sample[] + campaign.usecaseBlockingBLOCKING

Where samples contain sweepstakes or contest content, the sweepstakes use case must be declared.

MSG-161SHAFT screening covers every campaign field, not a sample of themcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

The SHAFT screen — sex, hate, alcohol, firearms, tobacco and profanity — must be applied to every sample message and to the campaign description and message flow, and a single hit anywhere fails the whole campaign.

MSG-163Family-friendly styling must not carry adult themescampaign.description + campaign.sample[]BlockingBLOCKING

Content presented as suitable for a family audience must not carry adult themes, and must not depict children or characters aimed at children in a sexualised or otherwise unsuitable way.

MSG-164No underage, non-consensual or illegal sexual themescampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote underage, non-consensual or otherwise illegal sexual themes, simulated or real.

MSG-171Messages must not harass, intimidate or threaten the recipientcampaign.sample[]BlockingBLOCKING

Message content must not be designed to harass, bully or intimidate the person receiving it, and must not threaten them.

MSG-175Content must not invade privacy, defame, or otherwise cause harmcampaign.sample[] + campaign.descriptionBlockingBLOCKING

Message content must not invade privacy, create a safety risk, or be unlawful, abusive, malicious, misleading, excessively violent, obscene or defamatory.

MSG-177Content must not depict or facilitate substance abusecampaign.sample[] + campaign.descriptionBlockingBLOCKING

Message content must not depict, promote or be designed to facilitate the abuse of alcohol, drugs, tobacco or other controlled substances, including where the abuse is implied rather than stated.

MSG-179Alcohol content must not be aimed at people under the drinking agecampaign.sample[] + campaign.descriptionBlockingBLOCKING

Alcohol brands, and drinks designed to resemble alcoholic ones, must not be marketed in a way that appeals to or targets people under 21.

MSG-190No kratom or drug-paraphernalia contentcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote kratom, drug paraphernalia and smoking accessories.

MSG-209A charity programme may not run games of chance or recurring donationscampaign.sample[] + campaign.descriptionBlockingBLOCKING

A campaign registered under the CHARITY use case must not solicit lottery, sweepstakes or raffle entries, and must not enrol donors in recurring donations.

MSG-210A political donation programme may not include gaming-related fundraisingcampaign.sample[]BlockingBLOCKING

A campaign registered under the POLITICAL use case must not raise funds through lotteries, sweepstakes, raffles or any other game of chance.

MSG-214No student-loan programme contentcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote student-loan refinancing, consolidation or forgiveness programmes.

MSG-215Samples must not collect information to qualify a consumer for a loancampaign.sample[]BlockingBLOCKING

Sample messages must not ask the recipient to supply information used to qualify, price or route a loan application.

MSG-221Debt relief and credit repair stay prohibited even with first-party consentcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Debt consolidation, debt reduction and credit repair content is refused whether or not the sender collected the consent itself.

MSG-226No forex, binary options or speculative-derivative contentcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote forex, binary options, contracts for difference and other speculative derivatives.

MSG-227No promises of unusually high or guaranteed returnscampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote schemes promising guaranteed, risk-free or unusually high financial returns.

MSG-243No relaying one-time passcodes on behalf of other service providerscampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote persistent relaying of one-time passcodes for other service providers.

MSG-245No fake-prize, impersonation or advance-fee patternscampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote fake prizes, impersonated brands and advance-fee solicitations.

MSG-246No manufactured urgencycampaign.sample[]BlockingBLOCKING

Messages must not manufacture urgency — neither a security pretext such as an account about to be suspended, nor a commercial countdown, scarcity or deadline that is not real.

MSG-249No fraud or scam message contentcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote fraud or scam content — deception for financial or personal gain.

MSG-255No impersonating a third-party brand on the landing page or in a linked filecampaign.sample[] -> landing page + linked downloadBlockingBLOCKING

Neither the landing page a message reaches nor any file it offers for download may present itself as belonging to a business other than the registered brand.

MSG-261The call to action must not misdescribe the programmecampaign.sample[] + CTA copy + campaign.message_flowBlockingBLOCKING

Neither the call to action nor subsequent messages may use deceptive language, or misdescribe what the programme sends, how often, or what it costs.

MSG-262No sender whose business is buying, selling or sharing consumer informationcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote the buying, selling or sharing of consumer information as a business model.

MSG-263An abandoned-cart message must carry an opt-out noticecart-reminder message bodyBlockingBLOCKING

Every abandoned-cart reminder must tell the recipient how to stop receiving them.

MSG-264An abandoned-cart message must not complete the purchase in the threadcart-reminder message bodyBlockingBLOCKING

A cart reminder must not collect payment information, accept purchase approval by keyword reply, or otherwise complete the transaction — the recipient must finish the purchase through a direct URL.

MSG-266A forwarded or referred message must say why the recipient received itviral message bodyBlockingBLOCKING

A message sent because another consumer referred or forwarded it must identify the person who sent it and state why the recipient is receiving it.

MSG-267A political donation programme must confirm intent and certify eligibilitypolitical donation MT bodyBlockingBLOCKING

A message-originated political contribution must be answered with a message confirming the contributor's intent to give and carrying the eligibility certification — at least 18, own funds, not a foreign national, not a federal contractor.

MSG-290Political content is refused outright on platforms that prohibit itcampaign.usecase + campaign.sample[]BlockingBLOCKING

A political campaign cannot be registered through an ISV whose own terms prohibit political message content, whatever the carriers allow.

MSG-293Verbal opt-in grants no relief on sample contentcampaign.sample[]BlockingBLOCKING

Samples must carry the brand name and opt-out instructions even when consent was collected verbally rather than on a web form.

MSG-296Platform sample specifications must be met where an ISV imposes onecampaign.sample[]BlockingBLOCKING

Where the campaign is registered through an ISV that publishes its own sample specification, the samples must satisfy it — for HubSpot, exactly two samples, each carrying the business name, opt-out instructions including STOP, a privacy-policy link, and bracketed personalisation.

MSG-DEBTNo third-party debt collection, relief, or credit repair contentcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote third-party debt collection, debt relief, or credit repair services.

MSG-DECEPTIVEContent must not be deceptive, misleading, or impersonatingcampaign.sample[] + campaign.descriptionBlockingBLOCKING

Messages must not misrepresent the sender, imitate another brand, or make claims the business cannot support.

MSG-DESC-QUALITYCampaign description must explain who, what, and how they opted incampaign.descriptionBlockingBLOCKING

The description must state who receives the messages, what those messages contain, and how recipients consented.

MSG-FIREARMS-ADJACENTNo firearms-adjacent product marketingcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote firearms accessories, ammunition, or related product marketing.

MSG-LEAD-GENNo third-party lead generation or multi-level marketingcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote third-party lead generation, affiliate marketing, or MLM recruitment.

MSG-PHARMANo prescription drug or controlled-substance promotioncampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote prescription drugs, controlled substances, or unapproved health products.

MSG-PHISHINGContent must not solicit credentials or sensitive datacampaign.sample[]BlockingBLOCKING

Messages must not ask recipients for passwords, full card numbers, SSNs, or account credentials.

MSG-SAMPLES-NOT-ONLY-ADMINSamples must show campaign content, not only opt-out or help repliescampaign.sample[]BlockingBLOCKING

The sample set must include actual campaign messages, not exclusively confirmations, HELP replies, or opt-out acknowledgements.

MSG-SAMPLES-OPTOUTAt least one sample must show opt-out languagecampaign.sample[]BlockingBLOCKING

Sample messages must demonstrate that recipients are told how to stop receiving messages.

MSG-SAMPLES-REPRESENTATIVESample messages must be realistic, not placeholderscampaign.sample[]BlockingBLOCKING

Samples must be actual messages the campaign will send, with real brand and content specifics.

MSG-SAMPLES-USECASESample messages must match the declared use casecampaign.sample[] + campaign.usecaseBlockingBLOCKING

The content of the samples must be consistent with the campaign use case selected.

MSG-SEO-SPAMNo unsolicited agency or SEO service pitchingcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote unsolicited SEO, web design, or marketing agency solicitation.

MSG-SHAFT-HATENo hate speechcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote hate speech or content attacking a protected group.

MSG-TIMESHARENo timeshare or vacation-club solicitationcampaign.description + campaign.sample[] + campaign.message_flowBlockingBLOCKING

Campaign content must not promote timeshare, vacation club, or holiday-ownership solicitation.

MSG-URL-OWNERSHIPLinks must resolve to a domain the brand ownscampaign.sample[]BlockingBLOCKING

URLs in messages must point at the brand’s own domain or a dedicated branded short domain, and must identify the owner.

MSG-020MMS sample images must not be placeholder or stock artworkcampaign.mms_sample_mediaHighHIGH

The attached MMS sample media must show the artwork the campaign will actually send, not a placeholder graphic or an unlicensed stock image standing in for it.

MSG-049Opt-out instructions must name a recognised keywordcampaign.sample[]HighHIGH

Opt-out instructions in message bodies must use a widely accepted keyword, not an invented alternative.

MSG-060The opt-in confirmation must be the first message sentcampaign.message_flow + campaign.optin_messageHighHIGH

The confirmation must precede any other messaging to a newly opted-in consumer.

MSG-095Any shortener used must be dedicated to this sendercampaign.sample[]HighHIGH

Where a short domain is used, it must be dedicated to the exclusive use of the message sender.

MSG-098Links must not pass through multi-hop redirectscampaign.sample[] link destinationsHighHIGH

A URL in message content must not chain through multiple redirects that hide the eventual destination.

MSG-104Link destinations must identify their ownercampaign.sample[] link destinationsHighHIGH

A landing page linked from a message must unambiguously identify the site owner as a person or registered business, with contact information.

MSG-120Declared attributes must match sample content generallycampaign attributes + campaign.sample[]HighHIGH

Every declared campaign attribute must be consistent with what the sample messages actually contain.

MSG-149Samples must match the declared opt-in methodcampaign.sample[] + consent methodHighHIGH

Sample content must be consistent with how consent was collected, not only with the use case.

MSG-FIELD-SIMILARITYDescription, message flow, and samples must not be the same textcampaign.description + campaign.message_flow + campaign.sample[]HighHIGH

The description, message flow, and sample messages must each contain distinct content rather than repeated boilerplate.

MSG-SAMPLES-DISTINCTSample messages must be materially different from one anothercampaign.sample[]HighHIGH

Each sample must illustrate a genuinely different message the campaign will send, not a near-duplicate of another sample.

MSG-015A message must not render as ten or more segmentscampaign.sample[]MediumMEDIUM

No sample message may be long enough to render as 10 or more SMS segments.

MSG-026Samples must not contain mustache or curly-brace template tokenscampaign.sample[]MediumMEDIUM

Curly-brace and mustache tokens such as {order_id} or {{name}} must not appear in sample messages.

MSG-038A registered domain can substitute for the brand name in a samplecampaign.sample[] + brand.websiteMediumMEDIUM

Where a sample does not carry the brand name, the brand's registered domain appearing in the message can satisfy sender identification.

MSG-075HELP reply support contact must be on the brand domaincampaign.help_message + brand.websiteMediumMEDIUM

The support email given in the HELP response must be on the registered brand domain.

MSG-116embeddedPhone must ignore the HELP support numbercampaign.embedded_phone + campaign.sample[]MediumMEDIUM

The embeddedPhone attribute should be set when a sample contains a phone number other than the support number given in the HELP reply.

MSG-SPAM-STYLEMessages must not use spam-signal formattingcampaign.sample[]MediumMEDIUM

Messages must avoid all-caps shouting, excessive punctuation, and obfuscated wording used to evade filters.

MSG-VARIABLESTemplate variables must use square-bracket notationcampaign.sample[]MediumMEDIUM

Personalisation placeholders in samples should use [square brackets] rather than code syntax.

MSG-131Non-GSM characters silently force Unicode encodingcampaign.sample[]LowLOW

Characters outside the GSM-7 alphabet — smart quotes, ™, ®, em dashes, emoji — cut the per-segment limit from 160 to 70.

The other 7 layers

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.