SHAFT screening covers every campaign field, not a sample of them
The requirementstatement
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.
- Severityseverity
- BlockingBLOCKINGBreaking this rule gets the submission rejected. There is no partial credit.
- When it bitesphase
- Gates approvalapprovalGet this wrong and the brand or campaign is refused at registration.
- What is checkedobject
- campaign.description + campaign.sample[] + campaign.message_flow
- Where it liveslayer
- Message contentMESSAGE_CONTENT
- How Ekas settles itdetectability
- AI · formAI_FORM
- 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.
- What the fix involvesfailureClass
- Hard stopHARD_STOP
- Not remediable. Resubmitting will not help, and anyone offering to fix it is selling you a rejection.
- Who requires itauthorities
- CTIAT-MobileAT&TTCRTwilioBandwidthAWS
- When it appliesapplicabilityText
- Applies to every 10DLC registration.
Why this rule existsrationale
How to fix itremediation
Find which letter was hit before changing anything, because the letters do not share a fix. Sex and hate have no path at any provider. Firearms has none under the strict reading. Alcohol and tobacco have a narrow one that runs through a 21+ date-of-birth age gate rather than through the message copy. The per-letter rule for the category you hit carries the actual path; this one only tells you the screen covers every field you submitted.
Common mistakespitfalls
- Re-reading only the samples is the usual second failure — the description and the message flow are screened on the same pass and are where the product name most often survives.
Provider rejection codescodes
The code you get back when this rule is what failed, and whether that provider lets you resubmit.
| Provider | Code | Resubmit |
|---|---|---|
| Bandwidth | 4100 | No |
| Twiliogen1 | 30883 | No |
Notesnotes
Rules you will hit next
6 other rules read campaign.description + campaign.sample[] + campaign.message_flow. Fixing one field to satisfy a single rule is how a resubmission trades one rejection for another, so read these before you change anything.
MSG-161 is one of 122 message content rules in the 915-rule 10DLC registry. Free to cite under CC BY 4.0.