US Calling Windows — Federal TCPA + State Overlays
This page consolidates two wires that used to live on separate pages — the federal TCPA wire (the 8 AM–9 PM recipient-local window, the concept page TCPA federal voice guard reviewed for context) and the state wire (the seven mini-TCPA overlays below) — into the one place that computes the binding window for a US (+1) recipient. Operators who used to cross-reference the federal concept page against this table can read the intersection here end to end. Federal law expressly does not preempt stricter state law (47 U.S.C. § 227(e)), so the binding outbound rule is always the most restrictive of the federal and any applicable state window. Everything below describes controls you own as the tenant — the platform does not impose a global block beyond the one federal-only asymmetry documented below. This page is not legal advice; confirm your obligations with counsel.1. Federal wire — 8 AM–9 PM recipient-local
The federal TCPA sets a dialing window of 8 AM–9 PM in the recipient’s local time (47 U.S.C. § 227(b)(1)(B), implemented by 47 CFR § 64.1200(c)(1)). How it bites depends on the path:- Campaign and dialer voice (predictive, progressive, preview,
agentless modes, scheduled callbacks, the Jambonz-side pre-dial gate):
always hard-blocked outside the federal window regardless of your
tenant settings —
422 TCPA_FEDERAL_DIALING_WINDOW_BLOCKED. This is the one compliance control with no tenant opt-out, per the send gates reference. - Ad-hoc 1:1 voice (dashboard/softphone dials): advisory-only by
default — the call dispatches and the decision is logged. Enable
quiet_hours.voice.enabledin your organization settings (see the quiet hours guide) and the same evaluation becomes a hard hold (422 TCPA_DIALING_WINDOW_BLOCKED). - Non-voice channels / non-US recipients: not evaluated — the federal window applies to US voice only.
2. State overlay table — the intersection
Seven US states run “mini-TCPA” statutes with stricter hours, day-of-week bans (usually Sunday), or both. States not in this table fall through to the federal window unchanged. All windows are recipient-local; the end hour is exclusive (an 8 PM end means the last permitted dial starts at 7:59 PM).Mississippi’s statute sets a 7:30 PM end. Orbit encodes this
conservatively at the hour boundary — the last permitted dial starts
at 6:59 PM — because the window model resolves to whole hours. The
full 30-minute cutoff is preserved in the statute citation for legal
traceability.
- Start hour — the later of the federal and state starts (currently 8 AM everywhere).
- End hour — the earlier of the federal and state ends.
- Blocked days — the union of all day-of-week bans (only states set these; federal law has none).
Fla. Stat. § 501.059) so you can trace the
decision back to the source statute without reading platform code.
3. Which page to consult
- This page — the complete window rule (federal + state intersection, worked example, gate order, preview contract). Start here.
- TCPA quiet hours and windows — the step-by-step quiet-hours setup workflow (enabling channels, campaign fallback windows, timezone policies) with worked API examples.
- TCPA federal voice guard — the concept rationale for the federal-only asymmetry (why the platform owns that one control outright).
4. Order of gate execution
The voice window pipeline runs in a fixed order; the binding window is the lower bound of all applicable windows:- Non-voice channel or non-US recipient → allow, no window evaluation.
- Resolve the recipient’s timezone — area-code lookup (a hint you pass is honored first). Unresolvable on the campaign/dialer path → blocked, fail-closed, before any window math.
- Resolve the recipient’s state from the NANP area code and overlay the federal window with the state’s window (most-restrictive-wins).
- Day-of-week check — a banned weekday (e.g. a Florida Sunday) blocks against the intersected window.
- Hour check — the recipient-local hour must be ≥ the intersected start and < the intersected end.
- Enforcement fork — campaign/dialer: hard block. Ad-hoc: advisory
log unless you enabled the
voicequiet-hours channel, in which case hard hold.
5. How the recipient’s state is resolved
Orbit maps a US (+1) number to a USPS state code through its NANP area code. The resolver deliberately keeps single-state assignments only. When a recipient lands in a state with no overlay, the federal 8 AM–9 PM window applies unchanged; the resolved state code is still attached to the decision for telemetry and audit filtering. A recipient falls through to the federal window when:- the number is not a +1 NANP number (TCPA jurisdiction is US-only),
- the area code maps to no state in the table — Canadian and Caribbean NANP area codes, and US area codes not yet mapped,
- the area code resolves to a state with no overlay (the common case — TX, CA, NY, IL, etc.).
6. Reading the preview for voice
GET /api/v1/compliance/quiet-hours/preview?phone=<E.164>&channel=voice
returns the voice window decision for your tenant as a read — nothing
is sent. The reason field names which wire produced the verdict, and
for a state block the carried citation names the statute. The stable
reason codes for voice:
The two paths read the same decision differently:
The same read is how the two enforcement paths use each wire: the
campaign/dialer path hard-blocks on the federal wire regardless of
settings; your opt-in gate (ad-hoc, or quiet-hours send gates) treats
both federal and overlay wires as enabled evaluations once the
voice channel is on, where the federal hard reference would otherwise
be advisory. A blocked preview carries a DST-safe next_allowed_at ISO
instant — hand it straight to your scheduler instead of retrying.
Worked example — a Sunday dial to Florida vs. Texas
Dials evaluated at Sunday 8:30 PM recipient-local: Miami, FL (area code 305):- The area-code lookup resolves
305→FL. - FL carries an overlay: 8 AM–8 PM, Sunday banned (Fla. Stat. § 501.059).
- The intersected window is 8 AM–8 PM with Sunday banned.
- Sunday →
state_blocked_day→ blocked. The error details carryFla. Stat. § 501.059as the citation plus the next allowed time (Monday 8 AM).
- The area-code lookup resolves
214→TX. - TX carries no overlay → the federal 8 AM–9 PM window applies unchanged.
- At 8:30 PM the hour is still inside 8 AM–9 PM → the call is allowed.
(After 9 PM it would be
outside_federal_window.)
voice channel; on the campaign/dialer path only the federal
window is hard-blocked by default — so the TX Sunday 8:30 PM dial
dispatches in both paths, while the FL one is blocked on the opt-in gate
and, once enabled, returns the citation-bearing error above for your
campaign tooling to schedule around.
Verification and re-verification
The overlay table was last verified against statute text 2026-05-29. Each entry cites its statute so your counsel can re-verify before a commercial campaign — the table is deliberately small (seven states) to keep that audit cheap. Statutes shift: Florida’s FTSA was amended in 2021 and 2023 without relaxing the time-of-day window, and new mini-TCPA bills land every session. Treat the citations as the audit trail, not a substitute for jurisdiction-specific legal review.Related
- TCPA federal voice guard — the concept rationale for the federal-only asymmetry
- Send gates — the preview endpoint and the federal dialer asymmetry in the full gate stack
- TCPA quiet hours and windows — the quiet-hours setup workflow with worked API examples
- Quiet hours configuration — flipping the tenant opt-in gate and the timezone-resolution policy