CTIA Messaging Principles as an ordered schema
CTIA posture on US SMS is scattered across four deep pages — the restricted-content reference, the keyword rules editor, the short-code preflight catalog, and the 10DLC baseline posture — because each pillar of the CTIA Messaging Principles and Best Practices is a different kind of control. This concept page is the schema that orders them: read it once to assemble the whole posture, then dive into the one deep page your traffic actually touches.1. Why CTIA matters independently of the carrier-supplied rules
Two rule books govern US SMS, and they come from different bodies:- TCPA is federal statute. It defines what is illegal — texts to a number without prior express consent, calls outside the dialing window — priced per violation. TCPA is the one rule Orbit cannot waive for you on voice (see the TCPA federal voice guard); on SMS it is your obligation to honour, and the statute itself is silent on how you wire the controls.
- CTIA Messaging Principles is the industry self-regulation carve-out. The carriers wrote it to translate TCPA-class obligations into operational requirements: lane assignment, consent mechanics, keyword handling, content limits. Carrier audits, TCR re-vet, and short-code program reviews evaluate against CTIA rather than against a bare TCPA reading — a program can be TCPA-compliant on paper and still fail a carrier audit because the opt-out keyword set, the call-to-action disclosures, or the SHAFT posture do not match the Principles.
2. The topic map: five pillars, one surface each
Five pillars carry the whole schema. Each row names the pillar, the Orbit control that implements it, and the deep page to read.Lane definitions: A2P vs P2P
A2P is any application-originated send — campaigns, notifications, OTPs. P2P is handset-to-handset conversational traffic. US carriers require A2P to declare itself: on long codes that means a TCR-registered 10DLC campaign; on short codes it means a carrier-approved program brief. Filing promotional traffic asCUSTOMER_CARE is the classic lane
violation, and a rejection on it is the most common first-round outcome.
SHAFT categories
SHAFT is the shared content standard the carriers’ automated filters score every message against, and the vetting standard brand and campaign registration scores your samples against. Restricted categories (alcohol, some firearms and tobacco contexts) require age-gating and a dedicated program; the rest are outright prohibitions on A2P lanes.The opt-in gate: consent-required vs notice-sufficient
Marketing and two-factor traffic requires prior express consent — the receipt you can produce for the(contact, channel) pair, captured
at a recorded opt-in moment with the CTIA disclosures visible alongside.
Transactional traffic to an existing customer operates on a
notice-sufficient posture: the relationship implies the opt-in, but
the disclosures and the STOP path still apply. Decide which gate a send
passes through before you tag its use case; the 10DLC filing, the
quiet-hours carve-out, and the litigation-grade receipt all hang off
that tag.
Opt-out keyword handling: STOP, HELP, START
Orbit enforces the carrier-mandated keyword floor — STOP-family opt-outs and the START re-subscribe pair — at the platform layer, and your rules page can only widen it (aliases likeCANCELAR or branded opt-ins like
REJOIN). HELP wording belongs in the call-to-action and the opt-in
description; the preflight engine scores short-code briefs for exactly
those disclosures. A deleted tenant rule never narrows the floor, so the
audited posture is “platform floor plus your additions,” never “your
list minus defaults.”
Content heuristics
The day-to-day heuristics that keep a send inside the Principles: name the sender in the body of at least one sample and prefer it on every send; keep opt-out wording on marketing lane messages; never put a public URL shortener in the body (use a branded domain); avoid SHAFT-C vocabulary even accidentally; expect the carrier’s own filter to re-score what passes Orbit’s scanner.3. Worked example: auditing a live campaign against the checklist
A retail tenant runs a US 10DLC campaign for weekend promotions. Audit each pillar against the surface read it depends on:- Lane.
GET /api/v1/compliance/10dlc/campaigns/:id/status(dashboard: 10DLC wizard summary) — confirm the use case readsMARKETING, notCUSTOMER_CARE. The baseline posture names the mismatch rejection. - SHAFT. Re-run the stored samples through
POST /api/v1/messages/lint; confirmwarnmode at minimum and no error-severity findings. The restricted-content category table is the vocabulary the scanner uses. - Opt-in. Query the Consent API per recipient sample — a receipt
must exist for
(contact, sms), captured at a described opt-in moment. For short codes, preflight the stored brief and confirm noR-SC-CTA-*findings remain. - Opt-out. Text
STOPto a reply-capable number from a handset; the rules proof flow shows the inbound turn, the auto-reply, and the flipped consent state. Verify the seeded defaults still cover every language you send in. - Content. Check the policy-scanner mode on the organization — the
send path re-reads it per message;
strictrejects SHAFT-C findings withPOLICY_VIOLATIONwhilewarnrecords and sends. Check the quiet-hours gate on thesmschannel is enabled for the marketing lane.
4. When to use what: routing to the right surface per lane
Transactional-heavy senders run the same five pillars but lean on the
notice-sufficient consent posture and the transactional carve-out at the
quiet-hours gate — both still wired on the same surfaces, both still
tenant-owned.
See also
- Omnichannel fallback compliance matrix — the same three-plane comparison across every channel, for choosing where CTIA-shaped SMS traffic fits in a fallback chain
- TCPA federal voice guard — the one platform-owned guard, and why SMS has no equivalent toggle
- Consent and suppression model — the data model behind the opt-in gate and keyword handling
- Pre-Send Policy Scanner & DLP — verdict modes and the content-heuristic rules each channel runs
- Opt-Out & Suppression Lists — bulk import, scopes, and the send-time suppression gate