> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Assembling a US Marketing-SMS Posture End to End

> Connect the TCPA controls — capture consent, quiet hours, opt-out and suppression, DNC and RND scrubs, 10DLC and sender-ID registration, and the emergency stop — into one tenant-owned posture for US marketing SMS.

# Assembling a US Marketing-SMS Posture End to End

The Compliance group documents each TCPA control on its own page:
quiet hours, opt-out and suppression, DNC and RND scrubs, sender-ID and
10DLC registration, the emergency stop. This guide is the sequence
across all of them — the order a tenant actually assembles a US
marketing-SMS posture in, and what each step leaves behind as evidence.
It extends
[Posture A](/compliance/posture-overview#posture-a-us-marketing-sms-operator)
from the posture map into a full walkthrough, the same way
[Posture B](/compliance/gdpr-posture-guide) extends the GDPR map for EU
drip traffic.

<Warning>
  This page describes Orbit's platform controls. It is **not legal
  advice.** Which obligations apply to you — TCPA, state mini-TCPA
  statutes, CTIA messaging principles, carrier 10DLC rules — depends on
  your traffic and recipients. Confirm with qualified counsel.
</Warning>

## The tenant-owned framing

Read this first, because it shapes everything below. Orbit's US
marketing-SMS surface follows the same model as the rest of the
compliance map ([posture overview](/compliance/posture-overview)):

* **Every control here defaults open or empty.** A new tenant has no
  consent records, no quiet-hours gate, no DNC or RND scrub, no
  suppression list, no sender registration, and an inactive emergency
  stop. Nothing on this page is mandated, and nothing gates sending by
  itself. You assemble the posture; the platform enforces what you set,
  not a posture it picked for you.
* **Orbit is the conduit and the ledger.** It carries your traffic,
  enforces the gates you configure, and keeps the auditable record. It
  never decides your legal basis, never files with a regulator for you,
  and never executes a registration on your behalf beyond the TCR
  pipeline you submit through.
* **The ledger reflects what you did.** Consent rows, suppression
  entries, scrub verdicts, and registration states are the record of
  your assembly. An empty posture exports as an empty posture.
* **One platform-level exception.** The TCPA federal dialing window for
  campaign and dialer **voice** — 8 AM–9 PM recipient-local — hard-blocks
  with no tenant toggle and fails closed on an unresolvable timezone.
  That rail is on the voice path only; every SMS control below is
  tenant-owned and defaults open. See
  [What is not tenant-toggleable](/compliance/posture-overview#what-is-not-tenant-toggleable).

***

## Section 1 — The US marketing surface map

One row per obligation a TCPA operator usually has to answer, mapped to
the Orbit control that holds it and the deep page that documents it.

| Obligation                                                                                                     | Orbit control                                                                                                                                                      | Where it lives                                     | Deep page                                                                                              |
| -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| **Quiet hours — when you may send** (TCPA 8 AM–9 PM recipient-local convention on the SMS side)                | Org gate `settings → quiet_hours.sms.enabled`; the campaign-fallback window every drip/journey inherits when the campaign row has none                             | Per-channel org gate + Settings → Campaign limits  | [Quiet hours configuration](/guides/quiet-hours-configuration)                                         |
| **Consent before the first marketing send** (TCPA prior express consent)                                       | `POST /compliance/consent` with `lawful_basis` recorded per `(contact, channel)` pair                                                                              | Consent API; fan-out to suppression and send gates | [Consent Management](/compliance/consent-management)                                                   |
| **Withdrawal and suppression** (CTIA STOP keyword handling; TCPA revocation)                                   | STOP keywords, consent API opt-outs, the preference center, CSV bulk import — one suppression list, scoped per channel                                             | The suppression layer every send reads             | [Opt-Out & Suppression Lists](/compliance/opt-out-suppression)                                         |
| **Do-Not-Call registry scrub**                                                                                 | `dnc_sync_enabled`, then `GET /compliance/dnc/check` (single) or `POST /compliance/dnc/scrub` (bulk) against your lists plus federal/state/TCR/international feeds | Org compliance settings                            | [DNC Scrubbing](/compliance/dnc-scrub)                                                                 |
| **Reassigned-numbers scrub** (optional — the § 227 safe harbor for re-consent programs)                        | `PUT /compliance/rnd/settings` opt-in; responses carry a safe-harbor verdict                                                                                       | Org compliance settings                            | [RND Scrub](/compliance/rnd-scrub)                                                                     |
| **Sender registration** (10DLC on US long codes; registered sender IDs where a market demands one)             | Brand + campaign pair filed through The Campaign Registry (TCR); `POST /compliance/sender-id-registrations` for market-level sender IDs                            | TCR pipeline; sender-ID registry                   | [10DLC concept](/concepts/10dlc-concept), [Sender-ID Registration](/compliance/sender-id-registration) |
| **Emergency stop** (org-wide outbound halt)                                                                    | `POST /compliance/emergency-stop/activate` and `/deactivate`; owner/admin only                                                                                     | The kill switch                                    | [Send Gates](/compliance/send-gates)                                                                   |
| **Robocall Mitigation Database filing** (voice-adjacent carriers often demand it on a messaging footprint too) | `GET`/`POST /compliance/rmd` lifecycle — draft, submit, certify, remediate, recertify                                                                              | The RMD register                                   | [RMD Registration](/compliance/rmd-registration)                                                       |

One adjacent control rounds the map out: the
[compliance-health scores](/compliance/compliance-health) are read-only
signals — consent coverage, opt-out velocity, and carrier rejection
rates — that tell you whether the posture you assembled is holding, and
never gate it.

***

## Section 2 — A worked sequence for a US recipient

A concrete run for a tenant sending marketing SMS to US recipients.
Each step names what you do and what evidence it leaves behind. The
sequence mirrors the GDPR walkthrough — capture consent, configure the
send-time window, wire withdrawal, enable the registry scrub — then
adds the US-specific registration and stop steps.

### 1. Capture consent with a lawful basis before the first send

Record consent per channel through `POST /compliance/consent`, with
`lawful_basis` set. For marketing to new US recipients that is usually
`express_written_consent`; for a re-engagement of an existing list it
might be `implied` — the assessment is yours, and Orbit records
whichever basis you assert.

```bash theme={null}
curl -X POST https://api.orbit.devotel.io/api/v1/compliance/consent \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "identifier": "+14155550101",
    "channels": ["sms"],
    "opt_in": true,
    "lawful_basis": "express_written_consent",
    "source": "signup_form"
  }'
```

**Evidence left behind:** a per-channel consent row with basis, source,
and timestamp — exportable as the proof-of-record file in
[Export Consent & Suppression Records](/compliance/consent-suppression-export).

### 2. Configure the campaign fallback quiet-hours window

Set the fallback window every drip or journey inherits when the
campaign row has no window of its own — for US marketing SMS a common
shape is 08:00–21:00 recipient-local, the conventional TCPA window on
the messaging side. In the dashboard: **Settings → Campaign limits →
Default quiet hours**. Over the API:
`PUT /api/v1/campaigns/quiet-hours/settings`.

This is the highest-value send-time control for a US posture: one
write covers every campaign that never sets its own hours. If you also
want 1:1 SMS held, enable the `sms` channel on the org gate
(`settings → quiet_hours.sms.enabled`). Details in
[Quiet hours configuration](/guides/quiet-hours-configuration).

**Evidence left behind:** held sends surface in reporting with the
resolved window, and
`GET /api/v1/compliance/quiet-hours/preview` answers "would this send
be held, and until when" before you roll out.

### 3. Wire opt-out via STOP and the preference center

Consent you captured must be cheap to withdraw. Three entry points land
on the same suppression list:

* STOP keywords on SMS/WhatsApp,
* `POST /compliance/consent` with `opt_in: false`,
* the preference center — configure it through
  `POST /compliance/preference-center`, then hand each contact a signed
  link so withdrawal arrives structured instead of as a reply chain.

If you are migrating from another platform, bulk-import the legacy list
via `POST /compliance/suppression-list/import` before the first send.
Phone rows default to scope `all`, which also gates voice and dialer.
See [Opt-Out & Suppression Lists](/compliance/opt-out-suppression).

**Evidence left behind:** fail-closed suppression rows — a suppressed
address is dropped before dispatch regardless of entry point.

### 4. Enable the DNC registry scrub

Turn on `dnc_sync_enabled` so `/compliance/dnc/check` and the
suppression chain scrub against the federal, state, TCR, and
international feeds — not just your own lists. Read the documented
caveat: until a federal feed is synced, a number only on the FTC list
reads back clear, and the `federal_feeds_synced` field on every
response tells you which state you are in. See
[DNC Scrubbing](/compliance/dnc-scrub).

**Evidence left behind:** the send path re-checks the same chain
fail-closed; the check endpoint is a pre-flight read for your cold
lists.

### 5. Complete brand and campaign registration

For a US long code, file the 10DLC pair — **brand** (who you are) plus
**campaign** (what the traffic is) — through The Campaign Registry.
Unregistered A2P traffic is filtered, surcharged, and throttled by
carriers independent of every gate above. For markets that additionally
demand a registered sender ID, file that entry through
`POST /compliance/sender-id-registrations` and wait for `approved`
before sending. See the
[10DLC concept page](/concepts/10dlc-concept) and
[Sender-ID Registration](/compliance/sender-id-registration).

**Evidence left behind:** the brand + campaign states the carriers
read; the sender-ID entry progresses draft → pending → approved.

### 6. Rehearse the emergency stop

Know where the kill switch is before you need it.
`POST /compliance/emergency-stop/activate` halts all outbound SMS, MMS,
voice, and dialer traffic in one owner/admin call; `/deactivate` lifts
it. Blocked sends are rejected with
`403 ORG_COMPLIANCE_EMERGENCY_STOP` before provider dispatch, so no
balance is debited. Transactional Verify/OTP and email are never gated
by the switch — a login code must still reach a contact mid-incident.
Rehearse the call in a dry run so the runbook is one API call, not a
search. See [Send Gates](/compliance/send-gates).

**Evidence left behind:** the audit-log entry carrying the actor,
timestamp, and the `reason` you supplied — the record a post-incident
review rebuilds the timeline from.

### 7. Optionally file the RMD and enable the RND scrub

Two optional steps round out a US posture:

* **RMD** — the FCC Robocall Mitigation Database filing is a voice
  obligation, but carriers increasingly ask for it on a mixed
  footprint. Work the lifecycle in [RMD Registration](/compliance/rmd-registration):
  draft, submit, certify, and keep the recertification clock.
* **RND** — if you run a re-consent program (reaching out to numbers
  whose consent you captured some time ago), enable `rnd_scrub_enabled`
  so the FCC Reassigned Numbers Database safe-harbor verdict backs each
  retry. Most marketing-only tenants leave it off. See
  [RND Scrub](/compliance/rnd-scrub).

**Evidence left behind:** the RMD filing state and live recertification
verdict; the RND verdict (`blocked` / `not_blocked` / `no_data`) per
scrubbed number.

***

## What Orbit does NOT do

Boundary conditions, stated once and plainly:

* **Orbit never files with a regulator for you.** TCPA compliance, DNC
  registry membership, and carrier relationship are yours. The RMD
  surface tracks a filing you make with the FCC; Orbit never submits
  it. The ledger surfaces your posture as evidence; the obligation is
  yours.
* **Orbit never decides your lawful basis.** `express_written_consent`,
  `implied`, or another basis you record — the register screens and
  flags; the judgement it records is yours.
* **Orbit never executes consent or opt-out automatically beyond the
  channels you wire.** Capturing consent, wiring STOP, and publishing a
  preference-center link all arrive on the same suppression layer
  because you configured them — nothing on this page auto-exec'
  a consent record or a STOP on your behalf.
* **Nothing on this page gates sending by itself.** The send-time gates
  that exist — quiet hours you enabled, suppression entries you
  recorded, the DNC scrub you opted in to — are the ones you turned on,
  and each defaults open. The one platform-level rail is the voice
  federal window, documented under
  [What is not tenant-toggleable](/compliance/posture-overview#what-is-not-tenant-toggleable).
* **This is not legal advice.** The sequence assembles Orbit's
  controls; whether the assembled posture satisfies TCPA, state
  mini-TCPA statutes, CTIA principles, or carrier rules for your
  traffic is a call for your counsel.

***

## Related references

* [Posture overview](/compliance/posture-overview) — the toggle map this sequence extends.
* [Send Gates](/compliance/send-gates) — the full outbound gate stack: quiet hours, DNC, RND, RMD, emergency stop.
* [Quiet hours configuration](/guides/quiet-hours-configuration) — the two quiet-hours knobs and their carve-outs.
* [Opt-Out & Suppression Lists](/compliance/opt-out-suppression) — withdrawal paths and CSV import.
* [10DLC concept](/concepts/10dlc-concept) — the brand + campaign pair and how it fits the sender-identity model.
* [DNC Scrubbing](/compliance/dnc-scrub) — feed wiring, the check endpoint, and the fail-open caveat.
* [RMD Registration](/compliance/rmd-registration) — the filing lifecycle, its five states, and the recertification clock.
