Summary
Our messaging docs' coverage of prohibited/forbidden message content falls well short of current industry reference material, is buried on a page about delivery rates, and contradicts itself on at least one category. The Campaign Registry guide — the page a customer registering for 10DLC actually reads — contains no forbidden-content information at all.
References used for the gap analysis:
Where this content lives today
| Page |
File |
Problem |
The Campaign Registry (/messaging/campaign-registry) |
fern/products/platform/pages/messaging/sms/the-campaign-registry/index.mdx |
No prohibited-content section; only an FAQ entry linking out |
Optimize delivery rates (/messaging/sms-best-practices) |
fern/products/platform/pages/messaging/sms/sms-best-practices.mdx (lines 64–102) |
The actual list: 22 flat bullets, no definitions, examples, or carve-outs |
| Toll-free overview, CSP guide |
toll-free-number-overview.mdx, the-campaign-registry/csps/index.mdx |
Link to the section above |
Gap analysis vs. industry references
- SHAFT is never expanded. Our entire treatment is one line: "SHAFT: Sex, Hate, Alcohol, Firearms or Tobacco." Both references define each letter — S includes sexually inappropriate content/pornography, H includes hate speech and profanity, F includes depictions/endorsements of violence, T includes vaping and endorsement of illicit drugs.
- No channel, country, or age-gating nuance. The phrase "age gating" appears nowhere in our repo — everything is presented as a flat ban. Current aggregator policy (Sinch, mid-2026) is a per-channel/per-country matrix:
- Alcohol: allowed on 10DLC and Short Code with age gating; the only age-restricted category allowed on Toll-Free (with age gate). Age gates must collect date of birth, not a yes/no prompt.
- Tobacco/vape: allowed with age gating on Short Code (and Long Code per the same policy), prohibited on Toll-Free. (Note: the 2022 10dlc.org page says vape is flatly prohibited — this has since loosened.)
- Firearms: prohibited on all channels regardless of age gating (firearm parts permitted on 10DLC). (The 2022 page said age-gated firearms were fine — this has since tightened.)
- Gambling: prohibited on all number types in US and Canada; raffles are treated as gambling; casino apps and betting "picks" prohibited; carve-out for non-promotional community/local bingo on approved Short Code and 10DLC.
- Canada: all age-restricted content is blocked on every channel without a special carrier exemption — a dimension our docs never mention, even though our toll-free verification page says verification covers Canadian carriers.
- Missing categories/terms: cryptocurrency and stock alerts (crypto/stock-focused businesses are limited to 2FA-only traffic), CBD/THC, kratom, synthetic cannabinoids and drug paraphernalia, non-OTC prescription drugs, MLM/network marketing/pyramid schemes by name (we only say "commission programs"), third-party job boards (only the hiring brand may register), raffles, affiliate marketing/lending, PII farming, cold outreach, buying/selling/sharing consumer data (a ToS/privacy policy that mentions selling opt-in data is itself noncompliant), voter-registration databases as a consent source, links to donation sites.
- No legitimate-use carve-outs. Both references distinguish first-party from third-party: first-party payment reminders and account messages from direct lenders (with express consent) are fine; a debt collector with direct end-user consent may send; debt consolidation/reduction/credit repair are banned regardless of consent. Our flat "Collections" and "Financial services" entries read as blanket bans.
- Business-level vs. content-level bans are conflated. Cannabis/CBD/kratom businesses are barred from SMS entirely — even 2FA — regardless of message content or state legality. Our docs frame everything as content rules.
- Internal contradiction on sweepstakes.
sms-best-practices.mdx lists Sweepstakes as explicitly prohibited, while the Campaign Registry page's own Special Use Case table (the-campaign-registry/index.mdx line 101) lists Sweepstakes as a registrable use case. Sinch meanwhile treats raffles as gambling (prohibited), so the distinction we draw needs to be deliberate.
- No "not legal advice" disclaimer anywhere in this content.
Proposed fix
- Create a dedicated page
fern/products/platform/pages/messaging/sms/prohibited-content.mdx (slug /messaging/prohibited-content) as the single source of truth: category tables with Examples + Notes columns, a fully expanded SHAFT section, a channel/age-gating matrix covering US and Canada (pending item 1 below), a section separating business-level bans from content-level bans, a SignalWire-specific section (phishing, fraud/scams, deceptive marketing, snowshoeing), and a legal disclaimer. Nav is folder-inferred so no platform.yml change is needed.
- Trim
## Explicitly Prohibited Content on the best-practices page to a summary + link, keeping the heading so existing #explicitly-prohibited-content deep links (toll-free overview, CSP guide, external support macros) don't break.
- Add a short "What you can't send" section to the Campaign Registry page linking to the new page, plus a note that registration is not permission to send anything.
- Repoint the toll-free and CSP page links; add a
redirects: entry in docs.yml if any slugs move (linter enforces missing-redirects/broken-links).
Open policy questions (need compliance/carrier-relations sign-off before merge)
- Age-gating stance: does SignalWire accept age-gated alcohol/tobacco/vape traffic per current carrier rules (DOB-entry gates, per-channel/per-country matrix above), or do we flatly prohibit regardless? Current docs imply the latter without saying it's a SignalWire policy.
- Sweepstakes vs. raffles: sweepstakes is a registrable TCR Special Use Case, our best-practices page bans it, and aggregators treat raffles as prohibited gambling. What's SignalWire's actual line, and how do we define sweepstakes vs. raffle in the docs?
- Which upstream ruleset binds us: our traffic rides through DCAs/aggregators whose policies (like the Sinch one above) are stricter and more current than the 2022 10dlc.org reference. Confirm the docs should mirror our actual upstream's current policy, and verify against the 2023 CTIA Messaging Principles rather than the stale 2022 page.
cc @hey-august @Devon-White — the "Open policy questions" section needs your input before the fix can merge.
Summary
Our messaging docs' coverage of prohibited/forbidden message content falls well short of current industry reference material, is buried on a page about delivery rates, and contradicts itself on at least one category. The Campaign Registry guide — the page a customer registering for 10DLC actually reads — contains no forbidden-content information at all.
References used for the gap analysis:
Where this content lives today
/messaging/campaign-registry)fern/products/platform/pages/messaging/sms/the-campaign-registry/index.mdx/messaging/sms-best-practices)fern/products/platform/pages/messaging/sms/sms-best-practices.mdx(lines 64–102)toll-free-number-overview.mdx,the-campaign-registry/csps/index.mdxGap analysis vs. industry references
sms-best-practices.mdxlists Sweepstakes as explicitly prohibited, while the Campaign Registry page's own Special Use Case table (the-campaign-registry/index.mdxline 101) lists Sweepstakes as a registrable use case. Sinch meanwhile treats raffles as gambling (prohibited), so the distinction we draw needs to be deliberate.Proposed fix
fern/products/platform/pages/messaging/sms/prohibited-content.mdx(slug/messaging/prohibited-content) as the single source of truth: category tables with Examples + Notes columns, a fully expanded SHAFT section, a channel/age-gating matrix covering US and Canada (pending item 1 below), a section separating business-level bans from content-level bans, a SignalWire-specific section (phishing, fraud/scams, deceptive marketing, snowshoeing), and a legal disclaimer. Nav is folder-inferred so noplatform.ymlchange is needed.## Explicitly Prohibited Contenton the best-practices page to a summary + link, keeping the heading so existing#explicitly-prohibited-contentdeep links (toll-free overview, CSP guide, external support macros) don't break.redirects:entry indocs.ymlif any slugs move (linter enforcesmissing-redirects/broken-links).Open policy questions (need compliance/carrier-relations sign-off before merge)
cc @hey-august @Devon-White — the "Open policy questions" section needs your input before the fix can merge.