Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview
The most-asked quiet-hours operator questions in one place — which surface answers first, how the org gate layers over the campaign fallback, how next_allowed_at is computed, and where DST cutovers land.
Four surfaces read or explain your quiet-hours posture, and confusing them is
the source of nearly every “why was this held?” ticket:
The org-wide channel gate — per-channel toggles written through
PATCH /api/v1/settings/compliance/quiet-hours. This gates every send
on an enabled channel: dashboard, API, flows, and campaign dispatch
alike. All channels ship off; a flips-on posture is additive.
The campaign fallback window — a single org-wide start/end pair for
drip and journey sends whose campaign row carries no explicit window.
In the dashboard: Settings → Campaign limits → Default quiet hours;
over the API: GET/PUT /api/v1/campaigns/quiet-hours/settings.
The preview endpoint — GET /api/v1/compliance/quiet-hours/preview,
a read-only answer to “would this send to this recipient go through
right now?” Its channel-by-channel semantics are mapped on
Quiet-Hours Preview.
The event-triggered survey dispatcher — auto-CSAT and auto-NPS sends
apply the tenant’s TCPA posture when the dispatcher is ready to send.
This is a deferral, not a terminal block: SMS-class channels wait for the
recipient-local 08:00–21:00 window, while email is exempt from this survey
hold.
Event-triggered survey hold: deferral, not deletion
When a conversation closes, the auto-CSAT/NPS dispatcher leaves the survey
pending if an sms, whatsapp, rcs, or viber recipient is outside the
08:00–21:00 recipient-local window. It does not return a blocking error or
drop the survey. The sweep checks pending rows every 60 seconds and dispatches
at the next window opening, normally 08:00 recipient-local; the worst-case
nightly hold is about 13 hours, so the deferral is bounded and self-clearing.This differs from the org gate’s request-path park-and-release behavior: the
survey dispatcher owns the retry timing and does not require your caller to
retry a failed request. It applies the tenant’s configured compliance posture
to event-triggered sends; it is not a new legal requirement. Email is exempt
from this survey hold because CAN-SPAM has no nightly send window. Tenant email
quiet hours remain a separate, optional control; see why email has no federal
window.The survey check fails open for non-US numbers and for numbers whose timezone
cannot be resolved, so those surveys are not held by this dispatcher. Keep
contact timezones current when you need recipient-local holding; compare the
consent override behavior
before treating an allowed off-hours send as a defect.
None of them “answers first” — the org gate and the campaign path are
separate layers, both evaluated at the send site:
1:1 and ad-hoc traffic (dashboard send, API call, flow step): only
the org channel gate applies, and only for channels you have enabled.
Campaign / drip / journey traffic: the campaign-path window resolves
first — the campaign row’s own quiet_hours_start / quiet_hours_end,
then the org fallback window, then the platform default 21:00 → 09:00
recipient-local. If you have also enabled that channel on the org gate,
the send must clear both layers.
Pass-throughs on an enabled channel: two reasons admit a
non-voice send even inside a closed window — the recipient’s
explicit-consent record (consent_override) and the transactional
traffic lane (transactional_lane_exempt). If your gate is on and a
send still went, read
My org gate is enabled but a send still went through — why?.
Either layer can only narrow the envelope, never widen it. The
full layering table is in
Quiet hours configuration.
Is the org-wide gate or the campaign fallback blocking my send?
The most-asked question, per troubleshooting volume. Read the
organization → settings → quiet_hours document and the campaign
fallback window together:
A 1:1 send that was held is always the org channel gate — the
fallback window never touches ad-hoc traffic.
A campaign send that was held is whichever layer failed: the
campaign row window, or the fallback, or the platform default —
plus the org gate when that channel is enabled.
The 422 QUIET_HOURS_BLOCKED voice variant TCPA_DIALING_WINDOW_BLOCKED
or preview reason tells you which window closed; the dashboard readback
(GET the settings document with jq on the resolved map, as in the
runbook)
shows you why.
When in doubt, preview the recipient before blaming a layer:
GET /api/v1/compliance/quiet-hours/preview?phone=<E.164>&channel=<channel>
returns the exact window and reason the send path would apply.
next_allowed_at is the earliest UTC timestamp at which the resolving
recipient’s window reopens, computed recipient-local through the full
resolution chain (explicit recipientTimezone hint, US area code, E.164
country code, org default for email, else the org’s
unknown_timezone_policy). It is a DST-safe ISO timestamp — pass it
straight to your scheduler instead of retrying in a loop.For a layering of multiple windows (campaign window + org gate), the
timestamp is the first instant both layers admit. Holds are
per-recipient and burn no quota, so re-submitting at next_allowed_at
re-admits cleanly. The exact payload shape is on
Quiet-Hours Preview.
The gate evaluates recipient-local wall time, so a DST transition shifts
when your window opens relative to UTC — not relative to the recipient’s
clock. The crossover-night runbook (Arizona, Hawaii, ambiguous windows)
lives in Quiet hours across DST.
Run the preview endpoint against a sample of recipients before the
spring-forward and fall-back weekends and confirm the resolved
local_timezone on the response.For USPS-recipient voice the hold never resolves to a timezone: the
federal window blocks fail-closed with 422 TCPA_TIMEZONE_UNKNOWN — DST
never comes into it. For non-voice channels the org’s
unknown_timezone_policy (skip default / enforce_utc / deny)
decides; see the resolution chain above and
Number timezone and state resolution.
Do state mini-TCPA overlays touch the same layers?
Yes — state overlays (Florida’s Sunday ban, Oklahoma/Mississippi windows,
and the rest) compose on top of whichever layers carry the send, as
most-restrictive-wins. A campaign voice send must clear the federal
window, the campaign-path window, the org gate (if the voice channel is
enabled), and every applicable state overlay. Voice blocks report
outside_state_window or state_blocked_day so a state hold is
separable from a federal one. The state-by-state table is on
US calling windows: federal TCPA + state overlays,
with the posture composition in
TCPA posture guide.
Worked runbook: a blocked send carrying next_allowed_at
Capture the hold: your worker receives
422 QUIET_HOURS_BLOCKED (or TCPA_DIALING_WINDOW_BLOCKED on voice)
and reads next_allowed_at out of the error details.
Identify the layer: compare the error’s window_start_local /
window_end_local against your stored org document
(GET /api/v1/settings/compliance/quiet-hours) and the campaign
fallback (GET /api/v1/campaigns/quiet-hours/settings) — the values
match exactly one of the stored windows.
Park the recipient: schedule the retry for next_allowed_at; do not
burn attempts polling. Holds consume no quota and no slot reservation.
Reverify before rollout-scale sends: preview a sample through
GET /compliance/quiet-hours/preview, one per distinct timezone in
the list, and confirm allowed_now: true.
If the window is wrong: decide which layer owns the correction —
the campaign row, the fallback, or the org gate — and fix it there.
Writes propagate to every send site within about a minute, then reads
confirm immediately.
The either/or questions above cover one layer at a time. The tickets
that escalate ask about two layers at once: a campaign that carries its
own window AND inherits the fallback, a voice send that clears the
campaign path but trips the federal guard, a contact whose CRM
timezone disagrees with the area-code resolution. This section answers
the composition questions — how the layers stack, which one wrote the
audit entry, and how to prove the verdict after the send.
A 1:1 send never touches the campaign path: it sees only the org
channel gate, and only for channels you have enabled. A campaign send
resolves the campaign-path window first (row → fallback → platform
default, most-restrictive survives), then ALSO clears the org channel
gate for every channel you enabled on it. The org gate and the
campaign path are separate layers evaluated at the same send site —
neither “answers first.” The full gate inventory is on
Send gates; the campaign-path resolution
order is on
Quiet-Hours Preview.
A dual-qualified campaign was blocked — were both layers responsible?
Yes, and. A campaign send to a channel you enabled on the org gate
must clear BOTH the campaign-path window and the org gate. When the
send is held, the error names the layer that closed first — it does
not name every layer that would have closed. Read it as “this is the
layer that rejected the send,” not “this is the only layer that
cared.”To tell which layer wrote the audit entry, match the error shape:
422 QUIET_HOURS_BLOCKED with reason: outside_window or
wrong_day — the campaign-path window, or the org gate if the send
was 1:1. The window_start_local / window_end_local values
identify which: compare them against your campaign row, then your
fallback, then the platform default.
422 TCPA_DIALING_WINDOW_BLOCKED — the federal voice guard, a
separate platform rail that composes on top of the campaign path
for US voice. This one has no tenant toggle.
422 TCPA_FEDERAL_DIALING_WINDOW_BLOCKED — same federal rail, on
the campaign/dialer voice path specifically.
When two layers would both reject, the audit entry records the first
one that closed; fixing that layer and re-sending re-evaluates the
remaining layers. Do not assume a single fix clears every hold —
preview the recipient again after the change.
How do I prove after the fact which window applied to a specific send?
Each quiet-hours hold writes a structured audit entry keyed by the
recipient and the send attempt. The lookup keys are the message_id
(or call_id for voice) and the recipient’s E.164 phone; the entry
carries the resolved local_timezone, the window_start_local /
window_end_local that applied, the reason, and the
next_allowed_at the scheduler consumed.To reconstruct a held send:
Read the message or call record by message_id / call_id — its
quiet_hours block carries reason, window_start_local,
window_end_local, and next_allowed_at.
Match the window values against your stored layers: the campaign
row (GET /api/v1/campaigns/{id}), the fallback
(GET /api/v1/campaigns/quiet-hours/settings), and the org gate
(GET /api/v1/settings/compliance/quiet-hours). Exactly one stored
window matches the values in the audit entry — that is the layer
that applied.
For voice, also read the federal block separately: the federal
guard writes its own entry (the reason carries the federal code)
independent of the campaign path.
The preview endpoint returns the same fields a held send would
record, so GET /api/v1/compliance/quiet-hours/preview?phone=…&channel=…
reproduces the decision without re-sending. Run it with the
recipient’s stored timezone_override when your CRM knows better
than the area code.
One posture per campaign group, not per campaign row
Setting quiet_hours_start / quiet_hours_end on every campaign row
does not scale, and most operators do not need to. The resolution
order is designed so a group of campaigns inherits a single posture
from the org fallback unless a row overrides it:
Campaign row override — quiet_hours_start /
quiet_hours_end on the campaign row, when present, wins for that
campaign only. Use it for the one campaign that needs a tighter
window than its group.
Org campaign fallback — Settings → Campaign limits → Default quiet hours, or GET/PUT /api/v1/campaigns/quiet-hours/settings.
Every campaign row without its own window inherits this. Set it
once per group posture and leave the rows silent.
Platform default — 21:00 → 09:00 recipient-local when the
fallback is disabled. This is the floor; the fallback and any row
override can only narrow it.
So a group posture is: set the org fallback to the group’s window,
leave the campaign rows without quiet_hours_start, and override on
the one or two rows that need to differ. The GET on the fallback
echoes platform_default_start / platform_default_end so you can
confirm which regime a silent row will actually resolve to. For where
the row window is configured and what its three fields mean, see
Per-campaign quiet hours.
My source-of-truth timezone differs from the area-code resolution
Number portability means a 305 (Miami) number can belong to someone
in Oregon — the area code reflects where the number was assigned, not
where the subscriber lives. The resolver precedence is explicit hint
→ NANP area-code inventory → country-prefix fallback → fail posture,
and the hint always wins. When your CRM knows the recipient’s real
local timezone, pass it as timezone_override on the preview call
and store it on the contact record so the send path consumes it.The full resolver chain, the area-code inventory, the split-NPA edge
cases (Canadian NPAs that resolve a timezone but no US state, the
Kansas/Missouri corridor that resolves a timezone but no state yet),
and the fail posture per surface are on
Number timezone and state resolution.
The preview’s local_timezone field shows you exactly which branch
resolved, so a mismatch between the CRM timezone and the area-code
zone is visible before you send — re-preview with the
timezone_override to confirm the corrected resolution.
Restarting tomorrow’s window after quiet-hours close
next_allowed_at is the DST-safe ISO instant the gate reopens,
computed recipient-local through the full resolution chain. It
handles three compositions that surprise operators:
DST — a 23- or 25-hour night in the recipient’s zone does not
drift the schedule; the ISO instant is derived through ICU/Intl
rules, so never re-derive hours in your own scheduler arithmetic.
The crossover-night verification runbook is
Quiet hours across DST.
Weekends and day masks — when the window’s allowed_days
excludes the current weekday, next_allowed_at jumps to the next
allowed day at window open, not to the next calendar hour. A
Sunday-blocked window reopens Monday at window_start_local.
The federal guard on US voice — the 8 AM–9 PM recipient-local
federal window composes on top of the campaign path for US voice
and has no tenant toggle. next_allowed_at on a federal block is
the next instant the federal window opens, intersected with any
state mini-TCPA overlay; the tenant-owned toggles on this page do
not move it. The overlay table is on
US calling windows; the
tenant-owned control map is on
TCPA quiet hours and windows.
When next_allowed_at reads “now” but allowed_now is false, the
hold is a timezone-resolution failure (unknown_timezone_deny), not
a window close — scheduling cannot fix it; pass a timezone_override
or fix the contact record and re-preview.
The federal guard and the tenant-owned layers, side by side
The US federal voice dialing window is the one rail the platform
owns: 8 AM–9 PM recipient-local, no tenant toggle, no consent
carve-out, fail-closed when the recipient timezone cannot resolve.
Every other quiet-hours control on this page is yours — the org
channel gate, the campaign fallback, the campaign row override, the
platform default, the unknown_timezone_policy. The federal guard
composes most-restrictive-wins on top of whichever layers carry a US
voice send: a campaign voice call must clear the federal window, the
campaign-path window, the org voice gate (if enabled), and every
applicable state overlay. Tightening the tenant-owned layers never
relaxes the federal rail; the two stacks are independent.
State mini-TCPA overlays (Florida’s Sunday ban, Oklahoma/Mississippi
windows, and the rest) compose on top of the layered posture as
most-restrictive-wins, exactly as they compose on top of the federal
window. A US voice send that clears the campaign window and the org
gate can still trip a state overlay; a non-voice send does not.
Voice blocks report outside_state_window or state_blocked_day so
a state hold is separable from a federal one and from a campaign-path
one. Read the resolved local_timezone and state on the preview
response to see which overlay applied; the per-state table and the
gate order are on
US calling windows.
My org gate is enabled but a send still went through — why?
Two reasons pass a non-voice send through an enabled channel gate while
your window is closed. A held send reports a closed window, but these
two admit the send — and the gate records which one applied, so an
allowed send at 03:00 is diagnosable rather than mysterious:
consent_override — the recipient carries an explicit-consent
record, and your org keeps consent_overrides_quiet_hours at its
default true. The TCPA “prior express consent” carve-out, honoured
on every non-voice channel.
transactional_lane_exempt — the send was resolved to the
transactional traffic lane. OTPs, alerts, and account notifications
flow 24/7 on enabled channels, because quiet hours restrict
telemarketing traffic, not essential traffic.
Voice never takes either carve-out. The federal dialing window governs
US voice with no tenant toggle and no consent exception — see
The federal TCPA dialing window, explained.Worked example. An OTP dispatched at 03:00 recipient-local on an
sms-enabled org: the gate is on and the hour is inside your window,
yet the send clears it with transactional_lane_exempt, and a
marketing send to a consented recipient at the same instant clears it
with consent_override. A campaign send to either recipient still
faces the campaign-path window as a second layer — these reasons
exempt the org gate only.Reading the reason. The preview response and the audit entry on a
send carry the gate’s reason exactly as the preview page tables it:
consent_override reads as “the recipient’s consent record passed the
gate,” transactional_lane_exempt as “non-voice transactional traffic
flows 24/7.” Fetch
GET /api/v1/compliance/quiet-hours/preview?phone=<E.164>&channel=<channel>
to reproduce the verdict before sending; the held or allowed send’s
record carries the same field after the fact.Closing the consent carve-out. One switch removes it:
consent_overrides_quiet_hours: false on
PATCH /api/v1/settings/compliance/quiet-hours. With it off, explicit
consent no longer passes the gate — only the transactional lane still
does; there is no per-send toggle for that lane.The mechanics, defaults, and the config table for both carve-outs live
in
Two carve-outs that keep essential traffic flowing.
I enabled the org gate on sms — do my drip campaigns inherit it?
They clear it as a separate layer, plus the campaign-path window. The
fallback (Settings → Campaign limits → Default quiet hours) still
applies to any campaign without its own window; the org gate adds the
ad-hoc-style hold on the same channel. Tighten at either layer; the two
compose most-restrictive-wins.Can the fallback window relax the org gate?
No. Fallbacks narrow the envelope, never widen it. The same asymmetry
applies to the consent carve-out: consent_overrides_quiet_hours relaxes
non-voice channels only, and voice ignores the flag entirely.Why did a blocked send say the window was the platform default when I
set a fallback?
PATH resolution order is campaign row → fallback → platform default.
A campaign with its own empty quiet_hours_start uses the fallback; if
your GET on the fallback reads enabled: false, the platform default
21:00 → 09:00 applies. Verify with
GET /api/v1/campaigns/quiet-hours/settings — it echoes
platform_default_start / platform_default_end so you see which regime
would actually apply.Does the preview endpoint hold anything?
No — it is read-only, the same rule as the compliance-health scores. It
reports what the gate would do at this instant; run it freely in
pre-flight.Is US campaign voice affected by any of these toggles?
No. Campaign and dialer voice to US recipients is hard-blocked outside
the federal 8 AM–9 PM recipient-local window with no tenant toggle, no
org gate required, and no consent carve-out. This is the one rail the
platform owns; everything else on this page is yours to configure.A customer closed a chat at 23:00 and the survey arrived at 08:0x — is that a bug?
No. The auto-CSAT/auto-NPS dispatcher held the event-triggered survey:
outside 08:00–21:00 recipient-local it keeps the survey pending on an
SMS-class channel (sms, whatsapp, rcs, viber) instead of waking the
customer. The 60s sweep re-evaluates the hold each minute and dispatches
as soon as the window opens, usually 08:00 recipient-local; the survey is
never dropped, and the nightly hold is bounded at ~13 hours. This is the
platform applying your TCPA posture to event-triggered sends, not a
legal mandate. Email never takes the survey hold.
Tenant-owned controls, not legal advice. Which laws apply to your
traffic depends on your jurisdiction, your recipients, and what you
send — confirm with qualified counsel before you rely on the wording
here.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Devotel Orbit Documentation","colors":{"primary":"#325FEC","light":"#6E8BF2","dark":"#1E3FB0"},"logo":{"light":"https://mintcdn.com/zeelaltd/MGUsS3FF5JAMebgK/logo/light.svg?fit=max\u0026auto=format\u0026n=MGUsS3FF5JAMebgK\u0026q=85\u0026s=379027fc60301d5269699b31297af81f","dark":"https://mintcdn.com/zeelaltd/MGUsS3FF5JAMebgK/logo/dark.svg?fit=max\u0026auto=format\u0026n=MGUsS3FF5JAMebgK\u0026q=85\u0026s=67a70e8b7c67a32ef24574aa908f98ae"},"favicon":"https://mintcdn.com/zeelaltd/MGUsS3FF5JAMebgK/favicon.svg?fit=max\u0026auto=format\u0026n=MGUsS3FF5JAMebgK\u0026q=85\u0026s=d92b46f00c590bc9435ef6eb4504b678","api":{"openapi":["openapi.yaml"],"mdx":{"server":"https://api.orbit.devotel.io"}},"navbar":{"links":[{"href":"https://orbit.devotel.io","label":"Dashboard"},{"href":"https://status.orbit.devotel.io","label":"Status"},{"href":"https://orbit.devotel.io/pricing","label":"Pricing"}],"primary":{"type":"button","label":"Sign Up","href":"https://orbit.devotel.io/en/signup"}},"footer":{"socials":{"twitter":"https://twitter.com/devotel","github":"https://github.com/devotel","linkedin":"https://www.linkedin.com/company/devotel"}},"search":{"prompt":"Search Orbit docs"},"seo":{"metatags":{"canonical":"https://docs.orbit.devotel.io"},"indexing":"all"},"integrations":{"posthog":{"apiKey":"phc_XtdzTPv9Crueb9iavWKvJv1W2ctvKVt4EMHHQJ01o57","apiHost":"https://us.i.posthog.com"}},"errors":{"404":{"redirect":false}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"zeelaltd","hasAudioNarration":false,"actualSubdomain":"zeelaltd","customDomains":["docs.orbit.devotel.io"],"gitSource":{"type":"github","owner":"dddfedddddd","repo":"devotel-cpaas","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af59c5c043c55511fa5a065","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"API Reference","count":4532},{"language":"default","tag":"All Endpoints","count":4164},{"language":"default","tag":"Guides","count":1574},{"language":"default","tag":"Documentation","count":858},{"language":"default","tag":"Voice","count":577},{"language":"default","tag":"Reference","count":512},{"language":"default","tag":"Compliance","count":500},{"language":"default","tag":"Concepts","count":383},{"language":"default","tag":"Agents","count":328},{"language":"default","tag":"CDP","count":316}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"compliance/quiet-hours-faq","slug":"/compliance/quiet-hours-faq","pageMetadata":{"title":"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview","description":"The most-asked quiet-hours operator questions in one place — which surface answers first, how the org gate layers over the campaign fallback, how next_allowed_at is computed, and where DST cutovers land.","href":"/compliance/quiet-hours-faq"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"The most-asked quiet-hours operator questions in one place — which surface answers first, how the org gate layers over the campaign fallback, how next_allowed_at is computed, and where DST cutovers land.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`quiet-hours-faq-org-gate-vs-campaign-fallback-vs-preview`,children:`Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview`}),`\n`,_jsxs(_components.p,{children:[`Operators hit the troubleshooting pages\n`,_jsx(_components.a,{href:`/troubleshooting/tcpa-window-blocked-calls`,children:`TCPA window blocked calls`}),` and\n`,_jsx(_components.a,{href:`/troubleshooting/voice-window-sentinel-breadcrumbs`,children:`voice window sentinel breadcrumbs`}),`\none issue at a time. This page consolidates the questions that generate\nthat volume. Read this first; run the runbook at the bottom when a send is\nalready blocked.`]}),`\n`,_jsxs(_components.p,{children:[`The deep runbook lives in\n`,_jsx(_components.a,{href:`/guides/quiet-hours-configuration`,children:`Quiet hours: org gates vs. the campaign fallback`}),`.\nThis page answers; that page explains.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-four-surfaces`,children:`The four surfaces`}),`\n`,_jsx(_components.p,{children:`Four surfaces read or explain your quiet-hours posture, and confusing them is\nthe source of nearly every “why was this held?” ticket:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The org-wide channel gate`}),` — per-channel toggles written through\n`,_jsx(_components.code,{children:`PATCH /api/v1/settings/compliance/quiet-hours`}),`. This gates `,_jsx(_components.strong,{children:`every send\non an enabled channel`}),`: dashboard, API, flows, and campaign dispatch\nalike. All channels ship off; a flips-on posture is additive.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The campaign fallback window`}),` — a single org-wide start/end pair for\ndrip and journey sends whose campaign row carries no explicit window.\nIn the dashboard: `,_jsx(_components.strong,{children:`Settings → Campaign limits → Default quiet hours`}),`;\nover the API: `,_jsx(_components.code,{children:`GET`}),`/`,_jsx(_components.code,{children:`PUT /api/v1/campaigns/quiet-hours/settings`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The preview endpoint`}),` — `,_jsx(_components.code,{children:`GET /api/v1/compliance/quiet-hours/preview`}),`,\na read-only answer to “would this send to this recipient go through\nright now?” Its channel-by-channel semantics are mapped on\n`,_jsx(_components.a,{href:`/compliance/quiet-hours-preview`,children:`Quiet-Hours Preview`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The event-triggered survey dispatcher`}),` — auto-CSAT and auto-NPS sends\napply the tenant’s TCPA posture when the dispatcher is ready to send.\nThis is a deferral, not a terminal block: SMS-class channels wait for the\nrecipient-local 08:00–21:00 window, while email is exempt from this survey\nhold.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`event-triggered-survey-hold-deferral-not-deletion`,children:`Event-triggered survey hold: deferral, not deletion`}),`\n`,_jsxs(_components.p,{children:[`When a conversation closes, the auto-CSAT/NPS dispatcher leaves the survey\npending if an `,_jsx(_components.code,{children:`sms`}),`, `,_jsx(_components.code,{children:`whatsapp`}),`, `,_jsx(_components.code,{children:`rcs`}),`, or `,_jsx(_components.code,{children:`viber`}),` recipient is outside the\n08:00–21:00 recipient-local window. It does not return a blocking error or\ndrop the survey. The sweep checks pending rows every 60 seconds and dispatches\nat the next window opening, normally 08:00 recipient-local; the worst-case\nnightly hold is about 13 hours, so the deferral is bounded and self-clearing.`]}),`\n`,_jsxs(_components.p,{children:[`This differs from the org gate’s request-path park-and-release behavior: the\nsurvey dispatcher owns the retry timing and does not require your caller to\nretry a failed request. It applies the tenant’s configured compliance posture\nto event-triggered sends; it is not a new legal requirement. Email is exempt\nfrom this survey hold because CAN-SPAM has no nightly send window. Tenant email\nquiet hours remain a separate, optional control; see `,_jsx(_components.a,{href:`/concepts/email-quiet-hours-and-marketing-classification#why-email-has-no-federal-window--and-why-quiet-hours-stay-tenant-opt-in`,children:`why email has no federal\nwindow`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`The survey check fails open for non-US numbers and for numbers whose timezone\ncannot be resolved, so those surveys are not held by this dispatcher. Keep\ncontact timezones current when you need recipient-local holding; compare the\n`,_jsx(_components.a,{href:`#my-org-gate-is-enabled-but-a-send-still-went-through--why`,children:`consent override behavior`}),`\nbefore treating an allowed off-hours send as a defect.`]}),`\n`,_jsx(Heading,{level:`2`,id:`which-layer-answers-first`,children:`Which layer answers first?`}),`\n`,_jsxs(_components.p,{children:[`None of them “answers first” — the org gate and the campaign path are\n`,_jsx(_components.strong,{children:`separate layers`}),`, both evaluated at the send site:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`1:1 and ad-hoc traffic`}),` (dashboard send, API call, flow step): only\nthe org channel gate applies, and only for channels you have enabled.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Campaign / drip / journey traffic`}),`: the campaign-path window resolves\nfirst — the campaign row’s own `,_jsx(_components.code,{children:`quiet_hours_start`}),` / `,_jsx(_components.code,{children:`quiet_hours_end`}),`,\nthen the org fallback window, then the platform default 21:00 → 09:00\nrecipient-local. If you have also enabled that channel on the org gate,\nthe send must clear `,_jsx(_components.strong,{children:`both`}),` layers.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Pass-throughs on an enabled channel`}),`: two reasons admit a\nnon-voice send even inside a closed window — the recipient’s\nexplicit-consent record (`,_jsx(_components.code,{children:`consent_override`}),`) and the transactional\ntraffic lane (`,_jsx(_components.code,{children:`transactional_lane_exempt`}),`). If your gate is on and a\nsend still went, read\n`,_jsx(_components.a,{href:`#my-org-gate-is-enabled-but-a-send-still-went-through--why`,children:`My org gate is enabled but a send still went through — why?`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Either layer can only `,_jsx(_components.strong,{children:`narrow`}),` the envelope, never widen it. The\nfull layering table is in\n`,_jsx(_components.a,{href:`/guides/quiet-hours-configuration`,children:`Quiet hours configuration`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`is-the-org-wide-gate-or-the-campaign-fallback-blocking-my-send`,children:`Is the org-wide gate or the campaign fallback blocking my send?`}),`\n`,_jsxs(_components.p,{children:[`The most-asked question, per troubleshooting volume. Read the\n`,_jsx(_components.code,{children:`organization → settings → quiet_hours`}),` document and the campaign\nfallback window together:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`1:1 send that was held`}),` is always the org channel gate — the\nfallback window never touches ad-hoc traffic.`]}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`campaign send that was held`}),` is whichever layer failed: the\ncampaign row window, or the fallback, or the platform default —\nplus the org gate when that channel is enabled.`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`422 QUIET_HOURS_BLOCKED`}),` voice variant `,_jsx(_components.code,{children:`TCPA_DIALING_WINDOW_BLOCKED`}),`\nor preview `,_jsx(_components.code,{children:`reason`}),` tells you which window closed; the dashboard readback\n(`,_jsx(_components.code,{children:`GET`}),` the settings document with `,_jsx(_components.code,{children:`jq`}),` on the `,_jsx(_components.code,{children:`resolved`}),` map, as in the\n`,_jsx(_components.a,{href:`/guides/quiet-hours-configuration#verify-your-write-against-the-resolved-map`,children:`runbook`}),`)\nshows you why.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`When in doubt, preview the recipient before blaming a layer:\n`,_jsx(_components.code,{children:`GET /api/v1/compliance/quiet-hours/preview?phone=\u003cE.164>\u0026channel=\u003cchannel>`}),`\nreturns the exact window and `,_jsx(_components.code,{children:`reason`}),` the send path would apply.`]}),`\n`,_jsxs(Heading,{level:`2`,id:`how-is-next_allowed_at-computed`,children:[`How is `,_jsx(_components.code,{children:`next_allowed_at`}),` computed?`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`next_allowed_at`}),` is the earliest UTC timestamp at which the resolving\nrecipient’s window reopens, computed `,_jsx(_components.strong,{children:`recipient-local`}),` through the full\nresolution chain (explicit `,_jsx(_components.code,{children:`recipientTimezone`}),` hint, US area code, E.164\ncountry code, org default for email, else the org’s\n`,_jsx(_components.code,{children:`unknown_timezone_policy`}),`). It is a DST-safe ISO timestamp — pass it\nstraight to your scheduler instead of retrying in a loop.`]}),`\n`,_jsxs(_components.p,{children:[`For a layering of multiple windows (campaign window + org gate), the\ntimestamp is the first instant `,_jsx(_components.strong,{children:`both`}),` layers admit. Holds are\nper-recipient and burn no quota, so re-submitting at `,_jsx(_components.code,{children:`next_allowed_at`}),`\nre-admits cleanly. The exact payload shape is on\n`,_jsx(_components.a,{href:`/compliance/quiet-hours-preview`,children:`Quiet-Hours Preview`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`where-do-dst-cutovers-land`,children:`Where do DST cutovers land?`}),`\n`,_jsxs(_components.p,{children:[`The gate evaluates recipient-local wall time, so a DST transition shifts\nwhen your window opens relative to UTC — not relative to the recipient’s\nclock. The crossover-night runbook (Arizona, Hawaii, ambiguous windows)\nlives in `,_jsx(_components.a,{href:`/guides/quiet-hours-dst-crossover`,children:`Quiet hours across DST`}),`.\nRun the preview endpoint against a sample of recipients before the\nspring-forward and fall-back weekends and confirm the resolved\n`,_jsx(_components.code,{children:`local_timezone`}),` on the response.`]}),`\n`,_jsxs(_components.p,{children:[`For USPS-recipient voice the hold never resolves to a timezone: the\nfederal window blocks fail-closed with `,_jsx(_components.code,{children:`422 TCPA_TIMEZONE_UNKNOWN`}),` — DST\nnever comes into it. For non-voice channels the org’s\n`,_jsx(_components.code,{children:`unknown_timezone_policy`}),` (`,_jsx(_components.code,{children:`skip`}),` default / `,_jsx(_components.code,{children:`enforce_utc`}),` / `,_jsx(_components.code,{children:`deny`}),`)\ndecides; see the resolution chain above and\n`,_jsx(_components.a,{href:`/compliance/number-timezone-resolution`,children:`Number timezone and state resolution`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`do-state-mini-tcpa-overlays-touch-the-same-layers`,children:`Do state mini-TCPA overlays touch the same layers?`}),`\n`,_jsxs(_components.p,{children:[`Yes — state overlays (Florida’s Sunday ban, Oklahoma/Mississippi windows,\nand the rest) compose `,_jsx(_components.strong,{children:`on top of`}),` whichever layers carry the send, as\nmost-restrictive-wins. A campaign voice send must clear the federal\nwindow, the campaign-path window, the org gate (if the `,_jsx(_components.code,{children:`voice`}),` channel is\nenabled), `,_jsx(_components.em,{children:`and`}),` every applicable state overlay. Voice blocks report\n`,_jsx(_components.code,{children:`outside_state_window`}),` or `,_jsx(_components.code,{children:`state_blocked_day`}),` so a state hold is\nseparable from a federal one. The state-by-state table is on\n`,_jsx(_components.a,{href:`/compliance/state-calling-windows`,children:`US calling windows: federal TCPA + state overlays`}),`,\nwith the posture composition in\n`,_jsx(_components.a,{href:`/compliance/tcpa-posture-guide`,children:`TCPA posture guide`}),`.`]}),`\n`,_jsxs(Heading,{level:`2`,id:`worked-runbook-a-blocked-send-carrying-next_allowed_at`,children:[`Worked runbook: a blocked send carrying `,_jsx(_components.code,{children:`next_allowed_at`})]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Capture the hold: your worker receives\n`,_jsx(_components.code,{children:`422 QUIET_HOURS_BLOCKED`}),` (or `,_jsx(_components.code,{children:`TCPA_DIALING_WINDOW_BLOCKED`}),` on voice)\nand reads `,_jsx(_components.code,{children:`next_allowed_at`}),` out of the error details.`]}),`\n`,_jsxs(_components.li,{children:[`Identify the layer: compare the error’s `,_jsx(_components.code,{children:`window_start_local`}),` /\n`,_jsx(_components.code,{children:`window_end_local`}),` against your stored org document\n(`,_jsx(_components.code,{children:`GET /api/v1/settings/compliance/quiet-hours`}),`) and the campaign\nfallback (`,_jsx(_components.code,{children:`GET /api/v1/campaigns/quiet-hours/settings`}),`) — the values\nmatch exactly one of the stored windows.`]}),`\n`,_jsxs(_components.li,{children:[`Park the recipient: schedule the retry for `,_jsx(_components.code,{children:`next_allowed_at`}),`; do not\nburn attempts polling. Holds consume no quota and no slot reservation.`]}),`\n`,_jsxs(_components.li,{children:[`Reverify before rollout-scale sends: preview a sample through\n`,_jsx(_components.code,{children:`GET /compliance/quiet-hours/preview`}),`, one per distinct timezone in\nthe list, and confirm `,_jsx(_components.code,{children:`allowed_now: true`}),`.`]}),`\n`,_jsx(_components.li,{children:`If the window is wrong: decide which layer owns the correction —\nthe campaign row, the fallback, or the org gate — and fix it there.\nWrites propagate to every send site within about a minute, then reads\nconfirm immediately.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`layered-composition-—-the-cross-layer-questions`,children:`Layered composition — the cross-layer questions`}),`\n`,_jsx(_components.p,{children:`The either/or questions above cover one layer at a time. The tickets\nthat escalate ask about two layers at once: a campaign that carries its\nown window AND inherits the fallback, a voice send that clears the\ncampaign path but trips the federal guard, a contact whose CRM\ntimezone disagrees with the area-code resolution. This section answers\nthe composition questions — how the layers stack, which one wrote the\naudit entry, and how to prove the verdict after the send.`}),`\n`,_jsx(Heading,{level:`3`,id:`which-gates-even-run-on-this-send`,children:`Which gates even run on this send?`}),`\n`,_jsx(_components.p,{children:`The gates that evaluate depend on the traffic path, not on the\nchannel alone. Two shapes cover every send:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`10`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`10`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1:1 / ad-hoc traffic (dashboard send, API call, flow step)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` └─ org channel gate (only channels you enabled)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`campaign / drip / journey traffic`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ├─ campaign-path window`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` │ ├─ campaign row quiet_hours_start / quiet_hours_end`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` │ ├─ org campaign fallback window`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` │ └─ platform default 21:00 → 09:00 recipient-local`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` └─ org channel gate (only channels you enabled)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`A 1:1 send never touches the campaign path: it sees only the org\nchannel gate, and only for channels you have enabled. A campaign send\nresolves the campaign-path window first (row → fallback → platform\ndefault, most-restrictive survives), then ALSO clears the org channel\ngate for every channel you enabled on it. The org gate and the\ncampaign path are separate layers evaluated at the same send site —\nneither “answers first.” The full gate inventory is on\n`,_jsx(_components.a,{href:`/compliance/send-gates`,children:`Send gates`}),`; the campaign-path resolution\norder is on\n`,_jsx(_components.a,{href:`/compliance/quiet-hours-preview#4-dripjourney-sends-vs-11-sends--which-window-wins`,children:`Quiet-Hours Preview`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`a-dual-qualified-campaign-was-blocked-—-were-both-layers-responsible`,children:`A dual-qualified campaign was blocked — were both layers responsible?`}),`\n`,_jsx(_components.p,{children:`Yes, and. A campaign send to a channel you enabled on the org gate\nmust clear BOTH the campaign-path window and the org gate. When the\nsend is held, the error names the layer that closed first — it does\nnot name every layer that would have closed. Read it as “this is the\nlayer that rejected the send,” not “this is the only layer that\ncared.”`}),`\n`,_jsx(_components.p,{children:`To tell which layer wrote the audit entry, match the error shape:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`422 QUIET_HOURS_BLOCKED`}),` with `,_jsx(_components.code,{children:`reason: outside_window`}),` or\n`,_jsx(_components.code,{children:`wrong_day`}),` — the campaign-path window, or the org gate if the send\nwas 1:1. The `,_jsx(_components.code,{children:`window_start_local`}),` / `,_jsx(_components.code,{children:`window_end_local`}),` values\nidentify which: compare them against your campaign row, then your\nfallback, then the platform default.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`422 TCPA_DIALING_WINDOW_BLOCKED`}),` — the federal voice guard, a\nseparate platform rail that composes on top of the campaign path\nfor US voice. This one has no tenant toggle.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`422 TCPA_FEDERAL_DIALING_WINDOW_BLOCKED`}),` — same federal rail, on\nthe campaign/dialer voice path specifically.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`When two layers would both reject, the audit entry records the first\none that closed; fixing that layer and re-sending re-evaluates the\nremaining layers. Do not assume a single fix clears every hold —\npreview the recipient again after the change.`}),`\n`,_jsx(Heading,{level:`3`,id:`how-do-i-prove-after-the-fact-which-window-applied-to-a-specific-send`,children:`How do I prove after the fact which window applied to a specific send?`}),`\n`,_jsxs(_components.p,{children:[`Each quiet-hours hold writes a structured audit entry keyed by the\nrecipient and the send attempt. The lookup keys are the `,_jsx(_components.code,{children:`message_id`}),`\n(or `,_jsx(_components.code,{children:`call_id`}),` for voice) and the recipient’s E.164 `,_jsx(_components.code,{children:`phone`}),`; the entry\ncarries the resolved `,_jsx(_components.code,{children:`local_timezone`}),`, the `,_jsx(_components.code,{children:`window_start_local`}),` /\n`,_jsx(_components.code,{children:`window_end_local`}),` that applied, the `,_jsx(_components.code,{children:`reason`}),`, and the\n`,_jsx(_components.code,{children:`next_allowed_at`}),` the scheduler consumed.`]}),`\n`,_jsx(_components.p,{children:`To reconstruct a held send:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Read the message or call record by `,_jsx(_components.code,{children:`message_id`}),` / `,_jsx(_components.code,{children:`call_id`}),` — its\n`,_jsx(_components.code,{children:`quiet_hours`}),` block carries `,_jsx(_components.code,{children:`reason`}),`, `,_jsx(_components.code,{children:`window_start_local`}),`,\n`,_jsx(_components.code,{children:`window_end_local`}),`, and `,_jsx(_components.code,{children:`next_allowed_at`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Match the window values against your stored layers: the campaign\nrow (`,_jsx(_components.code,{children:`GET /api/v1/campaigns/{id}`}),`), the fallback\n(`,_jsx(_components.code,{children:`GET /api/v1/campaigns/quiet-hours/settings`}),`), and the org gate\n(`,_jsx(_components.code,{children:`GET /api/v1/settings/compliance/quiet-hours`}),`). Exactly one stored\nwindow matches the values in the audit entry — that is the layer\nthat applied.`]}),`\n`,_jsxs(_components.li,{children:[`For voice, also read the federal block separately: the federal\nguard writes its own entry (the `,_jsx(_components.code,{children:`reason`}),` carries the federal code)\nindependent of the campaign path.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The preview endpoint returns the same fields a held send would\nrecord, so `,_jsx(_components.code,{children:`GET /api/v1/compliance/quiet-hours/preview?phone=…\u0026channel=…`}),`\nreproduces the decision without re-sending. Run it with the\nrecipient’s stored `,_jsx(_components.code,{children:`timezone_override`}),` when your CRM knows better\nthan the area code.`]}),`\n`,_jsx(Heading,{level:`3`,id:`one-posture-per-campaign-group-not-per-campaign-row`,children:`One posture per campaign group, not per campaign row`}),`\n`,_jsxs(_components.p,{children:[`Setting `,_jsx(_components.code,{children:`quiet_hours_start`}),` / `,_jsx(_components.code,{children:`quiet_hours_end`}),` on every campaign row\ndoes not scale, and most operators do not need to. The resolution\norder is designed so a group of campaigns inherits a single posture\nfrom the org fallback unless a row overrides it:`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Campaign row override`}),` — `,_jsx(_components.code,{children:`quiet_hours_start`}),` /\n`,_jsx(_components.code,{children:`quiet_hours_end`}),` on the campaign row, when present, wins for that\ncampaign only. Use it for the one campaign that needs a tighter\nwindow than its group.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Org campaign fallback`}),` — `,_jsx(_components.code,{children:`Settings → Campaign limits → Default quiet hours`}),`, or `,_jsx(_components.code,{children:`GET`}),`/`,_jsx(_components.code,{children:`PUT /api/v1/campaigns/quiet-hours/settings`}),`.\nEvery campaign row without its own window inherits this. Set it\nonce per group posture and leave the rows silent.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Platform default`}),` — 21:00 → 09:00 recipient-local when the\nfallback is disabled. This is the floor; the fallback and any row\noverride can only narrow it.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`So a group posture is: set the org fallback to the group’s window,\nleave the campaign rows without `,_jsx(_components.code,{children:`quiet_hours_start`}),`, and override on\nthe one or two rows that need to differ. The `,_jsx(_components.code,{children:`GET`}),` on the fallback\nechoes `,_jsx(_components.code,{children:`platform_default_start`}),` / `,_jsx(_components.code,{children:`platform_default_end`}),` so you can\nconfirm which regime a silent row will actually resolve to. For where\nthe row window is configured and what its three fields mean, see\n`,_jsx(_components.a,{href:`/guides/per-campaign-quiet-hours`,children:`Per-campaign quiet hours`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`my-source-of-truth-timezone-differs-from-the-area-code-resolution`,children:`My source-of-truth timezone differs from the area-code resolution`}),`\n`,_jsxs(_components.p,{children:[`Number portability means a 305 (Miami) number can belong to someone\nin Oregon — the area code reflects where the number was assigned, not\nwhere the subscriber lives. The resolver precedence is explicit hint\n→ NANP area-code inventory → country-prefix fallback → fail posture,\nand the hint always wins. When your CRM knows the recipient’s real\nlocal timezone, pass it as `,_jsx(_components.code,{children:`timezone_override`}),` on the preview call\nand store it on the contact record so the send path consumes it.`]}),`\n`,_jsxs(_components.p,{children:[`The full resolver chain, the area-code inventory, the split-NPA edge\ncases (Canadian NPAs that resolve a timezone but no US state, the\nKansas/Missouri corridor that resolves a timezone but no state yet),\nand the fail posture per surface are on\n`,_jsx(_components.a,{href:`/compliance/number-timezone-resolution`,children:`Number timezone and state resolution`}),`.\nThe preview’s `,_jsx(_components.code,{children:`local_timezone`}),` field shows you exactly which branch\nresolved, so a mismatch between the CRM timezone and the area-code\nzone is visible before you send — re-preview with the\n`,_jsx(_components.code,{children:`timezone_override`}),` to confirm the corrected resolution.`]}),`\n`,_jsx(Heading,{level:`3`,id:`restarting-tomorrow’s-window-after-quiet-hours-close`,children:`Restarting tomorrow’s window after quiet-hours close`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`next_allowed_at`}),` is the DST-safe ISO instant the gate reopens,\ncomputed recipient-local through the full resolution chain. It\nhandles three compositions that surprise operators:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`DST`}),` — a 23- or 25-hour night in the recipient’s zone does not\ndrift the schedule; the ISO instant is derived through ICU/Intl\nrules, so never re-derive hours in your own scheduler arithmetic.\nThe crossover-night verification runbook is\n`,_jsx(_components.a,{href:`/guides/quiet-hours-dst-crossover`,children:`Quiet hours across DST`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Weekends and day masks`}),` — when the window’s `,_jsx(_components.code,{children:`allowed_days`}),`\nexcludes the current weekday, `,_jsx(_components.code,{children:`next_allowed_at`}),` jumps to the next\nallowed day at window open, not to the next calendar hour. A\nSunday-blocked window reopens Monday at `,_jsx(_components.code,{children:`window_start_local`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`The federal guard on US voice`}),` — the 8 AM–9 PM recipient-local\nfederal window composes on top of the campaign path for US voice\nand has no tenant toggle. `,_jsx(_components.code,{children:`next_allowed_at`}),` on a federal block is\nthe next instant the federal window opens, intersected with any\nstate mini-TCPA overlay; the tenant-owned toggles on this page do\nnot move it. The overlay table is on\n`,_jsx(_components.a,{href:`/compliance/state-calling-windows`,children:`US calling windows`}),`; the\ntenant-owned control map is on\n`,_jsx(_components.a,{href:`/guides/tcpa-quiet-hours-and-windows`,children:`TCPA quiet hours and windows`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`When `,_jsx(_components.code,{children:`next_allowed_at`}),` reads “now” but `,_jsx(_components.code,{children:`allowed_now`}),` is `,_jsx(_components.code,{children:`false`}),`, the\nhold is a timezone-resolution failure (`,_jsx(_components.code,{children:`unknown_timezone_deny`}),`), not\na window close — scheduling cannot fix it; pass a `,_jsx(_components.code,{children:`timezone_override`}),`\nor fix the contact record and re-preview.`]}),`\n`,_jsx(Heading,{level:`3`,id:`the-federal-guard-and-the-tenant-owned-layers-side-by-side`,children:`The federal guard and the tenant-owned layers, side by side`}),`\n`,_jsxs(_components.p,{children:[`The US federal voice dialing window is the one rail the platform\nowns: 8 AM–9 PM recipient-local, no tenant toggle, no consent\ncarve-out, fail-closed when the recipient timezone cannot resolve.\nEvery other quiet-hours control on this page is yours — the org\nchannel gate, the campaign fallback, the campaign row override, the\nplatform default, the `,_jsx(_components.code,{children:`unknown_timezone_policy`}),`. The federal guard\ncomposes most-restrictive-wins on top of whichever layers carry a US\nvoice send: a campaign voice call must clear the federal window, the\ncampaign-path window, the org `,_jsx(_components.code,{children:`voice`}),` gate (if enabled), and every\napplicable state overlay. Tightening the tenant-owned layers never\nrelaxes the federal rail; the two stacks are independent.`]}),`\n`,_jsx(Heading,{level:`3`,id:`state-overlays-on-top-of-the-layered-composition`,children:`State overlays on top of the layered composition`}),`\n`,_jsxs(_components.p,{children:[`State mini-TCPA overlays (Florida’s Sunday ban, Oklahoma/Mississippi\nwindows, and the rest) compose on top of the layered posture as\nmost-restrictive-wins, exactly as they compose on top of the federal\nwindow. A US voice send that clears the campaign window and the org\ngate can still trip a state overlay; a non-voice send does not.\nVoice blocks report `,_jsx(_components.code,{children:`outside_state_window`}),` or `,_jsx(_components.code,{children:`state_blocked_day`}),` so\na state hold is separable from a federal one and from a campaign-path\none. Read the resolved `,_jsx(_components.code,{children:`local_timezone`}),` and state on the preview\nresponse to see which overlay applied; the per-state table and the\ngate order are on\n`,_jsx(_components.a,{href:`/compliance/state-calling-windows`,children:`US calling windows`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`my-org-gate-is-enabled-but-a-send-still-went-through-—-why`,children:`My org gate is enabled but a send still went through — why?`}),`\n`,_jsx(_components.p,{children:`Two reasons pass a non-voice send through an enabled channel gate while\nyour window is closed. A held send reports a closed window, but these\ntwo admit the send — and the gate records which one applied, so an\nallowed send at 03:00 is diagnosable rather than mysterious:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`consent_override`})}),` — the recipient carries an explicit-consent\nrecord, and your org keeps `,_jsx(_components.code,{children:`consent_overrides_quiet_hours`}),` at its\ndefault `,_jsx(_components.code,{children:`true`}),`. The TCPA “prior express consent” carve-out, honoured\non every non-voice channel.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`transactional_lane_exempt`})}),` — the send was resolved to the\ntransactional traffic lane. OTPs, alerts, and account notifications\nflow 24/7 on enabled channels, because quiet hours restrict\ntelemarketing traffic, not essential traffic.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Voice never takes either carve-out. The federal dialing window governs\nUS voice with no tenant toggle and no consent exception — see\n`,_jsx(_components.a,{href:`/compliance/invariant-68-explainer`,children:`The federal TCPA dialing window, explained`}),`.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Worked example.`}),` An OTP dispatched at 03:00 recipient-local on an\n`,_jsx(_components.code,{children:`sms`}),`-enabled org: the gate is on and the hour is inside your window,\nyet the send clears it with `,_jsx(_components.code,{children:`transactional_lane_exempt`}),`, and a\nmarketing send to a consented recipient at the same instant clears it\nwith `,_jsx(_components.code,{children:`consent_override`}),`. A campaign send to either recipient still\nfaces the campaign-path window as a second layer — these reasons\nexempt the org gate only.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Reading the reason.`}),` The preview response and the audit entry on a\nsend carry the gate’s `,_jsx(_components.code,{children:`reason`}),` exactly as the preview page tables it:\n`,_jsx(_components.code,{children:`consent_override`}),` reads as “the recipient’s consent record passed the\ngate,” `,_jsx(_components.code,{children:`transactional_lane_exempt`}),` as “non-voice transactional traffic\nflows 24/7.” Fetch\n`,_jsx(_components.code,{children:`GET /api/v1/compliance/quiet-hours/preview?phone=\u003cE.164>\u0026channel=\u003cchannel>`}),`\nto reproduce the verdict before sending; the held or allowed send’s\nrecord carries the same field after the fact.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Closing the consent carve-out.`}),` One switch removes it:\n`,_jsx(_components.code,{children:`consent_overrides_quiet_hours: false`}),` on\n`,_jsx(_components.code,{children:`PATCH /api/v1/settings/compliance/quiet-hours`}),`. With it off, explicit\nconsent no longer passes the gate — only the transactional lane still\ndoes; there is no per-send toggle for that lane.`]}),`\n`,_jsxs(_components.p,{children:[`The mechanics, defaults, and the config table for both carve-outs live\nin\n`,_jsx(_components.a,{href:`/guides/quiet-hours-configuration#two-carve-outs-that-keep-essential-traffic-flowing`,children:`Two carve-outs that keep essential traffic flowing`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`faq`,children:`FAQ`}),`\n`,_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`I enabled the org gate on `,_jsx(_components.code,{children:`sms`}),` — do my drip campaigns inherit it?`]}),`\nThey clear it as a separate layer, plus the campaign-path window. The\nfallback (`,_jsx(_components.code,{children:`Settings → Campaign limits → Default quiet hours`}),`) still\napplies to any campaign without its own window; the org gate adds the\nad-hoc-style hold on the same channel. Tighten at either layer; the two\ncompose most-restrictive-wins.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Can the fallback window relax the org gate?`}),`\nNo. Fallbacks narrow the envelope, never widen it. The same asymmetry\napplies to the consent carve-out: `,_jsx(_components.code,{children:`consent_overrides_quiet_hours`}),` relaxes\nnon-voice channels only, and voice ignores the flag entirely.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Why did a blocked send say the window was the platform default when I\nset a fallback?`}),`\nPATH resolution order is campaign row → fallback → platform default.\nA campaign with its own empty `,_jsx(_components.code,{children:`quiet_hours_start`}),` uses the fallback; if\nyour `,_jsx(_components.code,{children:`GET`}),` on the fallback reads `,_jsx(_components.code,{children:`enabled: false`}),`, the platform default\n21:00 → 09:00 applies. Verify with\n`,_jsx(_components.code,{children:`GET /api/v1/campaigns/quiet-hours/settings`}),` — it echoes\n`,_jsx(_components.code,{children:`platform_default_start`}),` / `,_jsx(_components.code,{children:`platform_default_end`}),` so you see which regime\nwould actually apply.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Does the preview endpoint hold anything?`}),`\nNo — it is read-only, the same rule as the compliance-health scores. It\nreports what the gate would do at this instant; run it freely in\npre-flight.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Is US campaign voice affected by any of these toggles?`}),`\nNo. Campaign and dialer voice to US recipients is hard-blocked outside\nthe federal 8 AM–9 PM recipient-local window with no tenant toggle, no\norg gate required, and no consent carve-out. This is the one rail the\nplatform owns; everything else on this page is yours to configure.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`A customer closed a chat at 23:00 and the survey arrived at 08:0x — is that a bug?`}),`\nNo. The auto-CSAT/auto-NPS dispatcher held the event-triggered survey:\noutside 08:00–21:00 recipient-local it keeps the survey pending on an\nSMS-class channel (sms, whatsapp, rcs, viber) instead of waking the\ncustomer. The 60s sweep re-evaluates the hold each minute and dispatches\nas soon as the window opens, usually 08:00 recipient-local; the survey is\nnever dropped, and the nightly hold is bounded at ~13 hours. This is the\nplatform applying your TCPA posture to event-triggered sends, not a\nlegal mandate. Email never takes the survey hold.`]}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Tenant-owned controls, not legal advice. Which laws apply to your\ntraffic depends on your jurisdiction, your recipients, and what you\nsend — confirm with qualified counsel before you rely on the wording\nhere.`})}),`\n`,_jsx(Heading,{level:`2`,id:`see-also`,children:`See also`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/guides/quiet-hours-configuration`,children:`Quiet hours: org gates vs. the campaign fallback`}),` — the full runbook this FAQ condenses.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/compliance/quiet-hours-preview`,children:`Quiet-Hours Preview`}),` — channel-by-channel response semantics.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/compliance/number-timezone-resolution`,children:`Number time zone and state resolution`}),` — the resolution chain `,_jsx(_components.code,{children:`next_allowed_at`}),` inherits.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/compliance/state-calling-windows`,children:`US calling windows: federal TCPA + state overlays`}),` — the overlay table.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/compliance/tcpa-posture-guide`,children:`TCPA posture guide`}),` — posture composition on top of the federal rail.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/guides/quiet-hours-dst-crossover`,children:`Quiet hours across DST`}),` — the crossover-night verification runbook.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/compliance/posture-faq`,children:`Compliance Posture FAQ`}),` — the broader Q\u0026A index.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/compliance/frequency-caps-compliance-posture`,children:`Frequency Caps as a TCPA Litigation-Risk Control`}),` — the tenant-owned per-recipient `,_jsx(_components.em,{children:`how many`}),` layer that composes with the `,_jsx(_components.em,{children:`when`}),` layers on this page.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview","description":"The most-asked quiet-hours operator questions in one place — which surface answers first, how the org gate layers over the campaign fallback, how next_allowed_at is computed, and where DST cutovers land.","href":"/compliance/quiet-hours-faq"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview","slug":"quiet-hours-faq-org-gate-vs-campaign-fallback-vs-preview","depth":1,"children":[]},{"title":"The four surfaces","slug":"the-four-surfaces","depth":2,"children":[{"title":"Event-triggered survey hold: deferral, not deletion","slug":"event-triggered-survey-hold-deferral-not-deletion","depth":3,"children":[]}]},{"title":"Which layer answers first?","slug":"which-layer-answers-first","depth":2,"children":[]},{"title":"Is the org-wide gate or the campaign fallback blocking my send?","slug":"is-the-org-wide-gate-or-the-campaign-fallback-blocking-my-send","depth":2,"children":[]},{"title":"How is next_allowed_at computed?","slug":"how-is-next_allowed_at-computed","depth":2,"children":[]},{"title":"Where do DST cutovers land?","slug":"where-do-dst-cutovers-land","depth":2,"children":[]},{"title":"Do state mini-TCPA overlays touch the same layers?","slug":"do-state-mini-tcpa-overlays-touch-the-same-layers","depth":2,"children":[]},{"title":"Worked runbook: a blocked send carrying next_allowed_at","slug":"worked-runbook-a-blocked-send-carrying-next_allowed_at","depth":2,"children":[]},{"title":"Layered composition — the cross-layer questions","slug":"layered-composition-—-the-cross-layer-questions","depth":2,"children":[{"title":"Which gates even run on this send?","slug":"which-gates-even-run-on-this-send","depth":3,"children":[]},{"title":"A dual-qualified campaign was blocked — were both layers responsible?","slug":"a-dual-qualified-campaign-was-blocked-—-were-both-layers-responsible","depth":3,"children":[]},{"title":"How do I prove after the fact which window applied to a specific send?","slug":"how-do-i-prove-after-the-fact-which-window-applied-to-a-specific-send","depth":3,"children":[]},{"title":"One posture per campaign group, not per campaign row","slug":"one-posture-per-campaign-group-not-per-campaign-row","depth":3,"children":[]},{"title":"My source-of-truth timezone differs from the area-code resolution","slug":"my-source-of-truth-timezone-differs-from-the-area-code-resolution","depth":3,"children":[]},{"title":"Restarting tomorrow’s window after quiet-hours close","slug":"restarting-tomorrow’s-window-after-quiet-hours-close","depth":3,"children":[]},{"title":"The federal guard and the tenant-owned layers, side by side","slug":"the-federal-guard-and-the-tenant-owned-layers-side-by-side","depth":3,"children":[]},{"title":"State overlays on top of the layered composition","slug":"state-overlays-on-top-of-the-layered-composition","depth":3,"children":[]},{"title":"My org gate is enabled but a send still went through — why?","slug":"my-org-gate-is-enabled-but-a-send-still-went-through-—-why","depth":3,"children":[]}]},{"title":"FAQ","slug":"faq","depth":2,"children":[]},{"title":"See also","slug":"see-also","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"zeelaltd","siteName":"Devotel Orbit Documentation","title":"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview - Devotel Orbit Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-03T21:10:09.027Z","originalFileLocation":"compliance/quiet-hours-faq.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"The most-asked quiet-hours operator questions in one place — which surface answers first, how the org gate layers over the campaign fallback, how next_allowed_at is computed, and where DST cutovers land.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Devotel Orbit Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/zeelaltd/OZczcmQ6pFioqvBy/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/zeelaltd/OZczcmQ6pFioqvBy/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/zeelaltd/OZczcmQ6pFioqvBy/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/zeelaltd/OZczcmQ6pFioqvBy/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/zeelaltd/OZczcmQ6pFioqvBy/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/zeelaltd/OZczcmQ6pFioqvBy/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/zeelaltd/OZczcmQ6pFioqvBy/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/zeelaltd/OZczcmQ6pFioqvBy/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/zeelaltd/OZczcmQ6pFioqvBy/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview - Devotel Orbit Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"The most-asked quiet-hours operator questions in one place — which surface answers first, how the org gate layers over the campaign fallback, how next_allowed_at is computed, and where DST cutovers land.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Devotel Orbit Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.orbit.devotel.io/compliance/quiet-hours-faq\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://zeelaltd.mintlify.site/_mintlify/api/og/v2?division=Compliance\u0026amp;title=Quiet+Hours+FAQ%3A+Org+Gate+vs.+Campaign+Fallback+vs.+Preview\u0026amp;description=The+most-asked+quiet-hours+operator+questions+in+one+place+%E2%80%94+which+surface+answers+first%2C+how+the+org+gate+layers+over+the+campaign+fallback%2C+how+next_allowed_a\u0026amp;theme=29bab8e0d7863b46c147a277\u0026amp;signature=c6a84bf363f35d5c6794b3982a18789e7ce2bac4202acfe5fa54bfdb5afe1901\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview - Devotel Orbit Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"The most-asked quiet-hours operator questions in one place — which surface answers first, how the org gate layers over the campaign fallback, how next_allowed_at is computed, and where DST cutovers land.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://zeelaltd.mintlify.site/_mintlify/api/og/v2?division=Compliance\u0026amp;title=Quiet+Hours+FAQ%3A+Org+Gate+vs.+Campaign+Fallback+vs.+Preview\u0026amp;description=The+most-asked+quiet-hours+operator+questions+in+one+place+%E2%80%94+which+surface+answers+first%2C+how+the+org+gate+layers+over+the+campaign+fallback%2C+how+next_allowed_a\u0026amp;theme=29bab8e0d7863b46c147a277\u0026amp;signature=c6a84bf363f35d5c6794b3982a18789e7ce2bac4202acfe5fa54bfdb5afe1901\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/zeelaltd/OZczcmQ6pFioqvBy/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Devotel Orbit Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#325FEC\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.orbit.devotel.io/compliance/quiet-hours-faq\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/compliance/quiet-hours-faq.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.orbit.devotel.io/#organization\",\"name\":\"Devotel Orbit Documentation\",\"url\":\"https://docs.orbit.devotel.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/zeelaltd/MGUsS3FF5JAMebgK/logo/light.svg?fit=max\u0026auto=format\u0026n=MGUsS3FF5JAMebgK\u0026q=85\u0026s=379027fc60301d5269699b31297af81f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.orbit.devotel.io#website\",\"name\":\"Devotel Orbit Documentation\",\"url\":\"https://docs.orbit.devotel.io\",\"publisher\":{\"@id\":\"https://docs.orbit.devotel.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.orbit.devotel.io/compliance/quiet-hours-faq#webpage\",\"url\":\"https://docs.orbit.devotel.io/compliance/quiet-hours-faq\",\"name\":\"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview\",\"description\":\"The most-asked quiet-hours operator questions in one place — which surface answers first, how the org gate layers over the campaign fallback, how next_allowed_at is computed, and where DST cutovers land.\",\"dateModified\":\"2026-11-03T21:10:09.027Z\",\"isPartOf\":{\"@id\":\"https://docs.orbit.devotel.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.orbit.devotel.io/compliance/quiet-hours-faq#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.orbit.devotel.io/compliance/quiet-hours-faq#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Compliance\",\"item\":\"https://docs.orbit.devotel.io/compliance/posture-overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview\",\"item\":\"https://docs.orbit.devotel.io/compliance/quiet-hours-faq\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.orbit.devotel.io/compliance/quiet-hours-faq#article\",\"headline\":\"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview\",\"name\":\"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview\",\"description\":\"The most-asked quiet-hours operator questions in one place — which surface answers first, how the org gate layers over the campaign fallback, how next_allowed_at is computed, and where DST cutovers land.\",\"url\":\"https://docs.orbit.devotel.io/compliance/quiet-hours-faq\",\"mainEntityOfPage\":{\"@id\":\"https://docs.orbit.devotel.io/compliance/quiet-hours-faq#webpage\"},\"dateModified\":\"2026-11-03T21:10:09.027Z\",\"publisher\":{\"@id\":\"https://docs.orbit.devotel.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.orbit.devotel.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Devotel Orbit Documentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Devotel Orbit Documentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/compliance/quiet-hours-faq.md","siteName":"Devotel Orbit Documentation","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Getting Started","pages":[{"title":"Introduction to Orbit by Devotel","href":"/introduction"},{"title":"Quickstart: send your first SMS, call, or email","href":"/quickstart"},{"title":"Voice quickstart: place your first AI voice call","href":"/voice/quickstart"},{"title":"Outbound calls with an AI voice agent","href":"/voice/ai-agent-outbound-calls"},{"title":"Return an escalated call to the AI agent (handback)","href":"/voice/ai-agent-handback"},{"title":"Emergency Calling (911 / 112 / 999 / 000)","href":"/voice/emergency-calling"},{"title":"Hot-desking (shared-device sign-in)","href":"/voice/hot-desking"},{"title":"Per-user call forwarding (Find Me / Follow Me)","href":"/voice/call-forwarding"},{"title":"Browser softphone network requirements for corporate networks","href":"/voice/network-requirements"},{"title":"Hold and pause reason codes: tagging why agents hold a call or step away","href":"/voice/hold-reason-codes"},{"title":"IVR intents: NLU routing for inbound voice callers","href":"/voice/ivr-intents"},{"title":"Paging groups, ring groups \u0026 call park","href":"/voice/paging-ring-groups-call-park"},{"title":"Inbound queue SLA forecast: pre-suggest callback before breach","href":"/voice/sla-breach-forecast-callbacks"},{"title":"Inbound queue SLA forecast + virtual callback gate","href":"/voice/queue-sla-forecast-callback"},{"title":"Voice queue callbacks with SLA policies and scheduling","href":"/voice/callbacks-scheduling"},{"title":"Per-queue SLA breach alerting and escalation policies","href":"/voice/queue-sla-escalation-policies"},{"title":"Queue SLA breach: worked SDK samples","href":"/voice/queue-sla-breach-samples"},{"title":"Dialer dispositions: outbound call outcome routing","href":"/voice/dialer-dispositions"},{"title":"Wrap-up codes: disposition capture on every conversation","href":"/voice/wrap-up-codes"},{"title":"Call disposition tags: tenant-wide call labeling","href":"/voice/call-disposition-tags"},{"title":"Call QA scorecards: rubric grading, trends, and auto-scoring","href":"/voice/call-qa-scorecards"},{"title":"Voice Agent Quality Index (VAQI): latency, turn-taking, and barge-in","href":"/voice/vaqi"},{"title":"Searchable recording and transcript library (QA)","href":"/voice/recording-library"},{"title":"Secure payment capture: take card numbers in a live call","href":"/voice/secure-payment-capture"},{"title":"Attendant console: run a front desk from one screen","href":"/voice/attendant-console"},{"title":"Agent hand-raise: request assistance on a live call","href":"/voice/agent-hand-raise"},{"title":"Colleagues: live presence and click-to-call","href":"/voice/colleagues"},{"title":"BLF presence: live extension state over REST and SSE","href":"/voice/blf-presence"},{"title":"Voice extensions (SIP credentials)","href":"/voice/extensions"},{"title":"Voice conferences: create, manage, and end conference bridges","href":"/voice/conferences"},{"title":"Conference failure-attribution analytics","href":"/voice/conferences-failure-analytics"},{"title":"Live call transcription","href":"/voice/live-call-transcription"},{"title":"Live transcript streaming","href":"/voice/transcript-stream"},{"title":"Transcription operations","href":"/voice/transcription-operations"},{"title":"Bring your own speech credentials (STT/TTS)","href":"/guides/voice-byo-speech-credentials"},{"title":"Live-call speech failover on Classic and outbound calls","href":"/voice/live-call-stt-failover"},{"title":"Supervisor live speech analytics stream","href":"/guides/supervisor-live-speech-analytics-stream"},{"title":"Authenticate Orbit API requests with keys and tokens","href":"/authentication"},{"title":"Docs languages and translations","href":"/docs-languages"},{"title":"Docs contribution guide","href":"/docs-contribution-guide"},{"title":"Settings hub: map and posture","href":"/settings/overview"},{"title":"Org security posture operations: sessions, 2FA enforcement, support access, and PII redaction","href":"/guides/org-security-posture-operations"},{"title":"Settings: CSAT console walkthrough","href":"/guides/settings-csat-console"},{"title":"Settings → Integrations: OAuth and credential connections","href":"/guides/settings-integrations-console"},{"title":"Settings: Native Chat channel toggles","href":"/guides/settings-channels-native-chat"},{"title":"Settings: Telegram channel connection and toggles","href":"/guides/settings-channels-telegram"}]},{"group":"Channels","pages":[{"title":"Send and receive SMS messages worldwide","href":"/channels/sms"},{"title":"Send picture and multimedia messages over MMS","href":"/channels/mms"},{"title":"Send and receive WhatsApp Business messages","href":"/channels/whatsapp"},{"title":"Apple Messages for Business","href":"/channels/apple-messages"},{"title":"RCS Business Messaging: rich cards, carousels, branding","href":"/channels/rcs"},{"title":"Send Viber business and SMPP-tier messages","href":"/channels/viber"},{"title":"Send and receive Telegram bot messages","href":"/channels/telegram"},{"title":"USSD channel for 2G and feature-phone menu sessions","href":"/channels/ussd"},{"title":"Send and receive LINE messages through Orbit","href":"/channels/line"},{"title":"Send KakaoTalk Alimtalk and Friendtalk messages","href":"/channels/kakao"},{"title":"Send Zalo ZNS template messages in Vietnam","href":"/channels/zalo"},{"title":"Send WeChat Official Account template messages","href":"/channels/wechat"},{"title":"Send and receive Instagram Direct Messages","href":"/channels/instagram"},{"title":"Send and receive Facebook Messenger conversations","href":"/channels/messenger"},{"title":"Install Orbit into a Slack workspace via OAuth","href":"/channels/slack"},{"title":"Send transactional and marketing email with Orbit","href":"/channels/email"},{"title":"Reading the email message status ladder","href":"/guides/email-message-status-ladder"},{"title":"Send email through the SMTP relay","href":"/channels/email-smtp-relay"},{"title":"Programmable voice calls, SIP trunks, and IVR flows","href":"/channels/voice"},{"title":"STIR/SHAKEN attestation on Orbit voice","href":"/channels/voice/stir-shaken"},{"title":"Troubleshooting: SIP trunk down or calls failing","href":"/channels/voice/sip-trunks-troubleshooting"},{"title":"SIP trunk health and connectivity diagnostics","href":"/voice/sip-trunk-health-and-diagnostics"},{"title":"Video: rooms, embeds, recording, and broadcast","href":"/channels/video"},{"title":"Send and receive faxes on Orbit fax numbers","href":"/channels/fax"},{"title":"Mobile and web push notifications via APNs and FCM","href":"/channels/push"},{"title":"Issue Apple and Google Wallet passes","href":"/channels/wallet-passes"},{"title":"Native Chat setup and styling","href":"/guides/native-chat-widget-channel-config"},{"title":"Cross-channel delivery and engagement analytics","href":"/channels/analytics"}]},{"group":"Channels (Voice)","pages":[{"title":"Choose the right voice product","href":"/guides/voice-choose-product"},{"title":"Voice calendars","href":"/guides/voice-calendars"},{"title":"Voice teams: create, staff, and route to them","href":"/guides/voice-teams"},{"title":"Agent first-week onboarding journey","href":"/guides/agent-first-week-onboarding-journey"},{"title":"Pull a packet capture (pcap) for a voice call","href":"/guides/voice-packet-capture"}]},{"group":"AI Agents","pages":[{"title":"AI agents on Orbit: build, deploy, and monitor","href":"/agents/overview"},{"title":"Your first AI agent in 20 minutes","href":"/agents/getting-started"},{"title":"The Agents workspace map","href":"/guides/agents-hub-overview"},{"title":"Introduction to voice AI agents","href":"/agents/intro-to-voice-ai-agents"},{"title":"Cross-channel agent memory plane","href":"/agents/memory-plane"},{"title":"Agent memory administration","href":"/agents/memory-administration"},{"title":"Creating AI agents: prompts, tools, and deployment","href":"/agents/creating-agents"},{"title":"Config assistant: propose changes in plain language","href":"/agents/config-assistant"},{"title":"Prompt Template Library: browse, fork, and seed a new agent","href":"/agents/prompt-templates"},{"title":"Conversation flows: route every agent turn through a versioned node graph","href":"/agents/conversation-flows"},{"title":"Agent squads: route inbound to the right specialist","href":"/agents/squads"},{"title":"Ambient agents: proactive outreach from segments","href":"/agents/ambient-outreach"},{"title":"Ambient sound bed for voice agents","href":"/agents/ambient-sound-bed"},{"title":"Agent model selection: LLM resolution order","href":"/agents/model-selection"},{"title":"Fine-tuning: dataset export to deployed custom model","href":"/agents/fine-tuning"},{"title":"Agent handoff targets: allowlist downstream routing","href":"/agents/handoff-targets"},{"title":"Human-in-the-loop oversight","href":"/agents/human-in-the-loop-oversight"},{"title":"Live conversation monitor","href":"/agents/live-monitor"},{"title":"Agent cost controls: run, token, and iteration limits","href":"/agents/cost-controls"},{"title":"Automation Opportunity Miner: what the surface shows and what scaffold creates","href":"/agents/automation-opportunities"},{"title":"Guardrail effectiveness monitoring: read firing rates and tune policies","href":"/agents/guardrail-effectiveness"},{"title":"Agent governance policies: guardrails, budget caps, model allowlists, approval gates","href":"/agents/agent-governance-policies"},{"title":"Sensitive words guardrail: redact operator-defined terms from agent output","href":"/agents/sensitive-words-guardrail"},{"title":"Per-turn grounding citations: audit what an agent grounded a reply on","href":"/agents/grounding-citations"},{"title":"Inspect a knowledge document's chunks","href":"/agents/kb-document-inspector"},{"title":"Agent versions: snapshot, stage, and roll back prompt configurations","href":"/agents/agent-versions"},{"title":"Persona-simulation harness — live callers vs scripted regression mode","href":"/agents/persona-simulation"},{"title":"Simulation \u0026 Regression Eval Suite","href":"/agents/simulation-eval-suite"},{"title":"Tool-call trajectory grading","href":"/agents/tool-call-trajectory-grading"},{"title":"Adversarial red-team testing: grade your agent against attack probes","href":"/agents/red-team"},{"title":"Computer-Use Browser Tools","href":"/agents/computer-use"},{"title":"Operate governed computer-use agents from the console","href":"/guides/agent-computer-use-console"},{"title":"Read a voice-eval run in the dashboard","href":"/agents/voice-eval-runs"},{"title":"Continuous production-call eval sampling for AI voice agents","href":"/agents/continuous-production-evals"},{"title":"A2A federation: task remote agents across peers","href":"/agents/a2a-federation"},{"title":"Set up A2A federation between tenants","href":"/guides/a2a-federation-setup"},{"title":"A2A push notifications — subscribe to task lifecycle updates","href":"/guides/a2a-push-notifications"},{"title":"Bridge native-chat conversations to an A2A agent","href":"/guides/native-chat-a2a-agent-bridge"},{"title":"Authorization mandates: scoped, revocable agent authority","href":"/agents/authorization-mandates"},{"title":"The complete_checkout tool for end-to-end agentic checkout","href":"/guides/agents-complete-checkout-tool"},{"title":"Agent marketplace: pre-built AI agent templates","href":"/agents/marketplace"},{"title":"Choose and prepare an agent marketplace template","href":"/guides/ai-agent-marketplace-buyer-guide"},{"title":"Outbound country coverage matrix for agents","href":"/guides/agent-outbound-country-coverage"}]},{"group":"Campaigns","pages":[{"title":"Campaigns hub","href":"/campaigns/overview"},{"title":"Cross-schedule planner: operator walkthrough","href":"/guides/cross-schedule-planner-walkthrough"},{"title":"Campaign journeys: build, validate, simulate, and launch","href":"/campaigns/journey"},{"title":"Inspect a campaign journey simulation step by step","href":"/guides/campaign-journey-simulation-inspection"},{"title":"Build a blast or drip campaign with the create wizard","href":"/guides/campaign-create-wizard"},{"title":"Campaign cost controls walkthrough","href":"/guides/campaign-cost-controls-walkthrough"},{"title":"Generate a campaign draft from a brief","href":"/guides/campaigns-from-brief"},{"title":"Build, simulate, and launch a campaign journey (canvas, nodes, goals)","href":"/guides/campaign-journey-builder"},{"title":"Consume journey webhook node calls","href":"/guides/journey-webhook-node-consumer"},{"title":"Send a campaign end-to-end: draft, audience, dry-run, launch, analytics","href":"/guides/campaign-end-to-end"},{"title":"A/B test a campaign: variants, splits, and picking a winner","href":"/guides/campaign-ab-testing"},{"title":"Smart-send timing playbook: per-contact schedules, send-time experiments, and next-best-channel","href":"/guides/campaign-smart-send-timing-playbook"},{"title":"Outbound campaigns canonical entry","href":"/guides/outbound-campaigns-canonical-entry"},{"title":"Peak-season capacity rehearsal: rate limits, pacing, caps, and the launch-day runbook","href":"/guides/peak-season-capacity-rehearsal"}]},{"group":"Flows","pages":[{"title":"Visual workflow automation with Orbit Flows","href":"/flows/overview"},{"title":"Flow Builder: drag-and-drop workflow designer","href":"/flows/builder"},{"title":"Flow starter templates: clone a working flow into your tenant","href":"/flows/templates"},{"title":"Flow Executions: debug and audit individual flow runs","href":"/flows/executions"},{"title":"Flow templates catalog: the 12 built-in starter flows","href":"/guides/flow-templates-catalog"},{"title":"Build a 7-day multichannel welcome series","href":"/guides/welcome-series-multichannel"},{"title":"Reading flow analytics: funnel drop-off and A/B results","href":"/guides/flows-analytics-reading"}]},{"group":"Numbers \u0026 Verify","pages":[{"title":"Phone numbers: search, buy, and provision inventory","href":"/numbers/overview"},{"title":"Buy, bulk, and orders: the number-buying walkthrough","href":"/numbers/buy-and-provision-operations"},{"title":"Number assignments, applications, and routing","href":"/numbers/assignments-and-applications"},{"title":"Number inventory export and low-stock alerts","href":"/numbers/inventory-export"},{"title":"Country capabilities: check number stock before search","href":"/numbers/country-capabilities"},{"title":"Regulatory preview: country requirements before purchase","href":"/numbers/regulatory-preview"},{"title":"Regulated number-purchase compliance packets","href":"/guides/regulated-number-purchase-packets"},{"title":"Number lifecycle: renew, release, and reassign numbers","href":"/numbers/lifecycle"},{"title":"Number porting: LOA upload, FOC scheduling, status timeline, and bulk CSV","href":"/numbers/porting"},{"title":"E911 emergency address registration for Orbit numbers","href":"/numbers/emergency-address"},{"title":"CNAM and caller ID branding for outbound Orbit calls","href":"/numbers/cnam"},{"title":"Number health, warming, and carrier reputation tracking","href":"/numbers/health"},{"title":"Number Lookup: validate and enrich phone numbers","href":"/numbers/lookup"},{"title":"Number masking: keep two parties' real numbers private","href":"/numbers/masking"},{"title":"Numbers console: pools, porting, subscriptions, and validation","href":"/guides/numbers-console"},{"title":"Numbers cookbook","href":"/guides/numbers-cookbook"},{"title":"Number Intelligence dashboard: console, metering, and spend caps","href":"/guides/number-intelligence-dashboard"},{"title":"Number health diagnostics console walkthrough","href":"/guides/number-health-diagnostics"},{"title":"Number backorder waitlist: get notified when an exhausted area code restocks","href":"/guides/number-backorder-waitlist"},{"title":"Provision and operate eSIM / IoT (M2M) SIMs","href":"/guides/connectivity-sim-lifecycle"},{"title":"Resell travel eSIMs to your customers","href":"/guides/esim-reseller-surface"},{"title":"Orbit Verify: OTP auth for SMS, WhatsApp, email, and voice","href":"/verify/overview"},{"title":"Verification profiles: templates, expiry, attempts, rate limits, webhooks","href":"/verify/configuration"},{"title":"MFA factor lifecycle: TOTP, passkey, push, and backup-code enrollment, verification, and lockout","href":"/verify/factor-lifecycle"},{"title":"OTP approvals: two-person sign-off for templates and resend bursts","href":"/verify/otp-approvals"},{"title":"Add SMS + TOTP 2FA to your app's login flow","href":"/guides/verify-2fa-login-recipe"},{"title":"Verify console: fraud gate, fraud score, and fallback forensics","href":"/guides/verify-console"}]},{"group":"Concepts","pages":[{"group":"Concepts overview","pages":[{"title":"Concepts hub","href":"/concepts/index"},{"title":"Dashboard map — the top navigation and where each hub lands","href":"/concepts/dashboard-map"},{"title":"Concepts overview","href":"/concepts/overview"},{"title":"UCaaS, CCaaS, and CPaaS","href":"/concepts/ucaas-ccaas-cpaas"},{"title":"Data model: envelope, identifiers, idempotency, pagination","href":"/concepts/data-model"},{"title":"API request guard pipeline: the ordered guard chain every request walks","href":"/concepts/api-request-guard-pipeline"},{"title":"The developer GraphQL shaped-read model","href":"/concepts/graphql-shaped-read-model"},{"title":"Terraform model — Orbit resources as infrastructure","href":"/concepts/terraform-provider-model"},{"title":"Operator observability: dashboards, logs, and audit — what to look at when","href":"/concepts/operator-observability-map"},{"title":"The stats surface map: dashboard workbench vs the analytics pipeline","href":"/concepts/observability-stats-surface"},{"title":"Sms overview kpi picker model","href":"/concepts/sms-overview-kpi-picker-model"},{"title":"Live tail streaming model: what the live request-log stream guarantees","href":"/concepts/live-tail-streaming-model"},{"title":"The SLA attestation and report backfill model","href":"/concepts/sla-attestation-model"},{"title":"The org-scoped status model: one incident feed, three waypoints","href":"/concepts/org-scoped-status-model"},{"title":"Public feedback and trust surfaces: idea board, community, help center, sub-processor notices","href":"/concepts/public-feedback-and-trust-surfaces"},{"title":"Sandbox, test mode, and the provisioning model","href":"/concepts/provisioning-and-test-mode"},{"title":"Sandbox model: the boundary, the synthetic providers, and promotion","href":"/concepts/sandbox-model"},{"title":"The channel test-account model: per-channel shared ladders","href":"/concepts/channel-test-account-model"},{"title":"Telegram bot dispatch and demo-account model","href":"/concepts/telegram-bot-model"},{"title":"The Sync real-time shared-state model","href":"/concepts/sync-realtime-state-model"},{"title":"Sync: WebSocket claim, spin-down, and the flush window","href":"/concepts/sync-ws-claim-and-flush-window"}]},{"group":"Messaging \u0026 Routing","pages":[{"title":"Unified termination routing","href":"/concepts/unified-termination-routing"},{"title":"The MT termination model: how outbound calls and messages leave Orbit","href":"/concepts/mt-termination-model"},{"title":"The five fallback planes: one map and how to pick one","href":"/concepts/fallback-and-cascade-planes"},{"title":"Fallback configuration worked samples: notify waterfall and cascade policy","href":"/concepts/fallback-endpoint-worked-samples"},{"title":"Choosing a sender construct — pools vs services vs inline senders","href":"/concepts/sender-identity-decision-model"},{"title":"How routing picks a sender — and where a reply lands","href":"/concepts/sender-and-routing"},{"title":"Least-cost routing (LCR) policy","href":"/concepts/least-cost-routing"},{"title":"Route preview — the pre-send what-if estimator","href":"/concepts/route-preview-model"},{"title":"TelQ live-number testing model — the sender-ID deliverability probe","href":"/concepts/telq-live-number-testing-model"},{"title":"BYO SMPP carrier lifecycle","href":"/concepts/byo-carrier-lifecycle"},{"title":"Sender resolution — which sender an outbound message goes out from","href":"/concepts/sender-resolution"},{"title":"Sender pool selection — how a pool picks one sender and stays healthy","href":"/concepts/sender-pool-selection-model"},{"title":"Number Lookup model — which data package answers which question","href":"/concepts/number-lookup-model"},{"title":"Line type and reachability classification model","href":"/concepts/line-type-and-reachability"},{"title":"The E.164 phone number format","href":"/concepts/e164-format"},{"title":"Sender identity classification model","href":"/concepts/sender-identity-classification-model"},{"title":"Toll-Free Verification and RespOrg lifecycle","href":"/concepts/toll-free-verification-resporg"},{"title":"Per-contact channel optimization: engagement-ranked dispatch","href":"/concepts/channel-optimization-model"},{"title":"Messaging services — one named bundle of sending defaults","href":"/concepts/messaging-services-model"},{"title":"Message status transition rules: the DAG every consumer must agree on","href":"/concepts/message-status-dag"},{"title":"The single message-status map: four owners, one answer","href":"/concepts/message-status-map"},{"title":"DLR and MO gateway pipeline","href":"/concepts/dlr-and-mo-pipeline"},{"title":"Inbound email parse pipeline","href":"/concepts/inbound-email-parse-model"},{"title":"Fallback on terminal DLR: per-request auto-escalation after delivery fails","href":"/concepts/multi-channel-dlr-fallback"},{"title":"The push channel model: device registry, fan-out, delivery, and VoIP call push","href":"/concepts/push-channel-model"},{"title":"The in-app channel model: pull delivery, two render classes, segment targeting, and engagement receipts","href":"/concepts/in-app-channel-model"},{"title":"The Web Chat delivery model: the owned loopback channel, zero carrier hops, persist-then-poll","href":"/concepts/web-chat-delivery-model"},{"title":"Push delivery versus inbox pull: choosing a delivery surface","href":"/concepts/push-delivery-vs-inbox-pull"},{"title":"Inbound message routing","href":"/concepts/inbound-message-routing"},{"title":"Keyword auto-reply and opt-out: the matching model","href":"/concepts/keyword-rules-model"},{"title":"Wording regions: what Orbit injects into your outbound copy","href":"/concepts/wording-templates-model"},{"title":"Social listening: mentions, queues, and supervisor controls","href":"/concepts/social-listening-model"},{"title":"Canned responses and macros — the reply library model","href":"/concepts/canned-responses-macros-model"},{"title":"Inbound message resolution","href":"/concepts/inbound-message-resolution"},{"title":"Inbound media threat scan and quarantine model","href":"/concepts/inbound-media-threat-scan-model"},{"title":"Inbound AI enrichment: detect language + auto-translate","href":"/concepts/inbound-ai-enrichment"},{"title":"Inbound attachment threat scan","href":"/concepts/inbound-attachment-threat-scan"},{"title":"The media attach pipeline: upload, scan, and per-channel delivery","href":"/concepts/media-attach-pipeline-model"},{"title":"Cross-channel fallback: the ordered chain that retries a failed send on the next channel","href":"/concepts/cross-channel-fallback"},{"title":"RCS capability check and SMS fallback: deciding whether a recipient gets rich content","href":"/concepts/rcs-fallback-and-capability"},{"title":"RCS brand and bot approval lifecycle","href":"/concepts/rcs-brand-lifecycle"},{"title":"RCS billing and metering model: what an RCS message costs, when the charge lands, and how to read it back","href":"/concepts/rcs-billing-and-metering-model"},{"title":"Channel capability coverage matrix: which channels do what, and which slot into your fallback chain","href":"/concepts/channel-capability-coverage-matrix"},{"title":"Regional OTT channel model: follower-gated delivery in KakaoTalk, Zalo, WeChat, and LINE","href":"/concepts/regional-ott-channel-model"},{"title":"Cascade failover policy and one logical message ID across legs","href":"/concepts/message-cascade-groups"},{"title":"Notify cascade cost model: per-hop price bounds and the cumulative waterfall cap","href":"/concepts/notify-cascade-cost-model"},{"title":"What omnichannel means on Orbit","href":"/concepts/what-is-omnichannel"},{"title":"Message envelope model: the canonical envelope, per-channel overrides, and the channel_chain declaration","href":"/concepts/message-envelope-model"},{"title":"Messaging windows and off-window sends: Meta DM, WhatsApp, and the no-window channels","href":"/concepts/messaging-window-model"},{"title":"Group messaging versus labeling — group flow, thread, claim, and label disambiguated","href":"/concepts/group-messaging-model"},{"title":"The routing-claim election lifecycle — destination side of a routed conversation","href":"/concepts/routing-claim-election-model"},{"title":"Batch-send model — persist-then-attempt per-recipient pipeline","href":"/concepts/batch-send-model"},{"title":"Outbound route quality and circuit breakers","href":"/concepts/outbound-route-quality-and-circuit-breakers"},{"title":"Message priority and traffic lanes: keep OTP traffic ahead of campaign bursts","href":"/concepts/message-priority-traffic-lanes"},{"title":"Outbound send-pacing architecture: how the four rate controls compose","href":"/concepts/outbound-pacing-architecture-model"},{"title":"SMPP edge model","href":"/concepts/smpp-edge-model"},{"title":"Viber termination model","href":"/concepts/viber-termination-model"},{"title":"SMTP relay ingress model","href":"/concepts/smtp-relay-ingress-model"},{"title":"Send-side DLR model: the canonical vocabulary and absorbed-traffic receipts","href":"/concepts/send-side-dlr-model"},{"title":"The DLR model: two planes, one vocabulary","href":"/concepts/dlr-model-two-planes"},{"title":"The per-provider DLR webhook fleet and the shared status pipeline","href":"/concepts/dlr-provider-webhook-fleet"},{"title":"The per-message route-trace timeline","href":"/concepts/message-route-trace"},{"title":"Message send request lifecycle: one send from POST to provider","href":"/concepts/message-send-request-lifecycle"},{"title":"The three success statuses: delivered vs submitted_no_receipt vs sent","href":"/concepts/submitted-vs-delivered-three-successes"},{"title":"SMS segments and encoding: why one character can double the cost","href":"/concepts/sms-segments-and-encoding"},{"title":"MMS composition model","href":"/concepts/mms-composition-model"},{"title":"Proxy session (number masking) model","href":"/concepts/proxy-session-model"},{"title":"Fax: delivery \u0026 inbound-routing model","href":"/concepts/fax-delivery-model"},{"title":"Messaging data residency","href":"/concepts/messaging-data-residency"},{"title":"Number rental and your wallet: renewal, suspend, and prevent-default posture","href":"/concepts/billing-and-numbers-renewal-model"},{"title":"WhatsApp conversation cost attribution and optimization model","href":"/concepts/whatsapp-cost-attribution-model"}]},{"group":"Voice \u0026 Telephony","pages":[{"title":"Voice call lifecycle: initiated to completed, and the states in between","href":"/concepts/voice-call-lifecycle"},{"title":"Browser softphone: the client-side call lifecycle","href":"/concepts/softphone-client-lifecycle"},{"title":"The voice-broadcast model — one-to-many voice calls over the campaigns backbone","href":"/concepts/voice-broadcast-model"},{"title":"Inbound voice routing","href":"/concepts/inbound-voice-routing"},{"title":"Inbound voice routing: why the tables are shared","href":"/concepts/inbound-voice-routing-shared-catalog"},{"title":"IVR flow model and simulator","href":"/concepts/ivr-flow-model"},{"title":"Hunt and ring topologies: ring groups, paging, and find-me/follow-me","href":"/concepts/hunt-and-ring-topologies"},{"title":"The STIR/SHAKEN attestation model","href":"/concepts/stir-shaken-attestation-model"},{"title":"The PASSporT token model","href":"/concepts/passport-token-model"},{"title":"ANS Trust Card and trust registry","href":"/concepts/ans-trust-card-registry"},{"title":"Jambonz softswitch model","href":"/concepts/jambonz-softswitch"},{"title":"Jambonz verb extensions in Devotel Orbit: what the platform layers on","href":"/concepts/jambonz-extension-verbs"},{"title":"SIP credential lifecycle","href":"/concepts/sip-credential-lifecycle"},{"title":"SIP digest verification model","href":"/concepts/sip-digest-verification-model"},{"title":"Extension identity: one user endpoint spanning voice, SMS, and appearance","href":"/concepts/extension-identity-model"},{"title":"The voicemail and MWI (Message-Waiting Indicator) model","href":"/concepts/voicemail-mwi-model"},{"title":"The ACD queue model: presence, skills, dispatch, and overflow","href":"/concepts/acd-queue-model"},{"title":"Disposition and ACW model: reason codes, wrap-up timers, callbacks, suggestions, and analytics","href":"/concepts/disposition-and-acw-model"},{"title":"Agent distress alert model: the panic button, its fail-open sequence, and the audit chain","href":"/concepts/agent-distress-alert-model"},{"title":"The voice supervisor plane: monitor, whisper, takeover, and announce","href":"/concepts/voice-supervisor-plane-model"},{"title":"Call park and the lobby: the slot aliasing model","href":"/concepts/voice-call-park-lobby"},{"title":"Call flip and call pickup: the handoff-token and ringing-registry models","href":"/concepts/call-flip-and-pickup-model"},{"title":"Voice conference model: rooms, participants, and recordings","href":"/concepts/voice-conference-model"},{"title":"Wallboards and SLA telemetry: metric families, threshold alarms, and SLA policy","href":"/concepts/wallboard-and-sla-telemetry"},{"title":"Agent shrinkage: reading the per-agent state-history timeline","href":"/concepts/agent-shrinkage-and-state-history"},{"title":"The queue callback model: virtual hold, dispatch, and outcomes","href":"/concepts/queue-callbacks-model"},{"title":"The public appointment self-booking model: opt-in gate, payload, and abuse posture","href":"/concepts/public-appointment-self-booking"},{"title":"Dialer pacing: claim modes, enrollment ordering, best-time-to-dial, and the abandon ceiling","href":"/concepts/dialer-pacing-model"},{"title":"Number status map: from purchase to release","href":"/concepts/number-lifecycle"},{"title":"Number dormancy and rental spend","href":"/concepts/number-dormancy-model"},{"title":"Low DID inventory alerts and the auto-replenishment loop","href":"/concepts/number-inventory-low-stock-and-replenishment"},{"title":"Bulk Reserve model: the reservation state machine","href":"/concepts/number-bulk-reservation-model"},{"title":"Number portability: one model for port-in and port-out","href":"/concepts/number-portability-model"},{"title":"Hosted messaging: SMS enablement without porting","href":"/concepts/hosted-messaging-model"},{"title":"Number reuse, aging, and post-release posture","href":"/concepts/number-reuse-and-aging"},{"title":"Trial \u0026 shared-pool number model","href":"/concepts/number-trial-pool-model"},{"title":"Port-out lifecycle and the ownership model","href":"/concepts/number-port-out-model"},{"title":"Port-out PIN protection lifecycle","href":"/concepts/port-out-pin-protection-model"},{"title":"Connectivity SIM model: the eSIM / IoT data-line state machine","href":"/concepts/connectivity-sim-model"},{"title":"Call recording pipeline: from call end to a playable recording","href":"/concepts/call-recording-pipeline"},{"title":"Recording lifecycle: capture to retention purge, and the states in between","href":"/concepts/recording-lifecycle"},{"title":"Media planes","href":"/concepts/media-planes"},{"title":"Voice gateway: the realtime AI-voice media edge","href":"/concepts/voice-gateway-realtime-edge"},{"title":"Transport architecture","href":"/concepts/transport-architecture"},{"title":"Platform runtime map","href":"/concepts/platform-runtime-map"},{"title":"Multi-region media routing","href":"/concepts/media-region-routing"},{"title":"The video room model","href":"/concepts/video-room-model"},{"title":"The video registrant lifecycle","href":"/concepts/video-registrants-model"},{"title":"Video room templates and the background library","href":"/concepts/video-room-templates"},{"title":"Video live interpretation model","href":"/concepts/video-live-interpretation-model"},{"title":"Transcript-verified video-only gate","href":"/concepts/video-transcript-verified-gate"},{"title":"Broadcast captions and the translation model","href":"/concepts/video-caption-translation-model"},{"title":"Broadcast analytics model: live audience, in-room participation, recurring themes","href":"/concepts/broadcast-analytics-model"},{"title":"Video room engagement \u0026 chapter analytics pipeline","href":"/concepts/video-analytics-pipeline"},{"title":"Avatar bot dispatch queue","href":"/concepts/avatar-bot-dispatch-queue"},{"title":"Avatar video render lifecycle","href":"/concepts/avatar-video-render-lifecycle"}]},{"group":"Delivery \u0026 Schedulers","pages":[{"title":"Queued to sent: the outbound status primer","href":"/concepts/queued-to-sent-the-four-owner-map"},{"title":"Delivery lifecycle: queued to delivered, and the states in between","href":"/concepts/delivery-lifecycle"},{"title":"Message validity period: how long the carrier keeps retrying","href":"/concepts/message-validity-period"},{"title":"Email delivery lifecycle: bounces, complaints, and the retry queue","href":"/concepts/email-delivery-lifecycle"},{"title":"Email authoring and the seed lab: compose, compile, then measure where it lands","href":"/concepts/email-authoring-and-seed-lab"},{"title":"Email transport security: MTA-STS and TLS-RPT","href":"/concepts/email-transport-security-model"},{"title":"DMARC aggregate reports (RUA): ingest and analysis","href":"/concepts/dmarc-aggregate-ingest"},{"title":"The scheduled-sending model: how queue-park, quiet-hours gating, and fire-time form one contract","href":"/concepts/scheduled-sending-model"},{"title":"The scheduled-send lifecycle: from a future send_at to dispatch","href":"/concepts/send-at-scheduled-sends"},{"title":"Outbound send gating: the tenant-owned controls that decide whether a message dispatches","href":"/concepts/send-gating-and-quiet-hours"},{"title":"Recipient timezone resolution for quiet hours","href":"/concepts/recipient-timezone-resolution"},{"title":"NANP area-code and state resolution — inventory boundaries","href":"/concepts/nanp-area-code-and-state-resolution"},{"title":"Email quiet hours vs the marketing/lifecycle classification: where timezone restraint stops and consent starts","href":"/concepts/email-quiet-hours-and-marketing-classification"},{"title":"Deliverability Lab: pre-send content-risk lint and per-carrier delivery prediction","href":"/concepts/deliverability-lab-pre-send-scoring"},{"title":"Messaging deliverability alerting: thresholds, evaluation, and notification fan-out","href":"/concepts/messaging-deliverability-alerting"},{"title":"The cross-campaign send allocator: how concurrent campaigns share one budget","href":"/concepts/campaign-allocator-model"},{"title":"How Orbit processes work asynchronously","href":"/concepts/async-processing-model"},{"title":"Scheduler fleet model","href":"/concepts/scheduler-fleet-model"},{"title":"Operational sentinels: the status values that aren't deliveries","href":"/concepts/operational-sentinels"},{"title":"On-call and escalation policy model: rotation, timeline, and incident state","href":"/concepts/oncall-escalation-model"},{"title":"Omnichannel capacity and reservation model","href":"/concepts/omnichannel-capacity-reservation"}]},{"group":"Identity, Tenancy \u0026 Access","pages":[{"title":"Tenant isolation","href":"/concepts/tenant-isolation"},{"title":"Tenant isolation at a glance","href":"/concepts/tenant-isolation-at-a-glance"},{"title":"Tenant schema migration and evolution","href":"/concepts/tenant-schema-migration-model"},{"title":"The public catalog: a closed set of shared tables","href":"/concepts/public-catalog-tables"},{"title":"Tenant provisioning lifecycle","href":"/concepts/tenant-provisioning-lifecycle"},{"title":"Organization suspension and deletion lifecycle","href":"/concepts/org-suspension-deletion-lifecycle"},{"title":"Org and subaccount model: one vocabulary","href":"/concepts/org-and-subaccount-model"},{"title":"The subaccount organization model","href":"/concepts/subaccount-organization-model"},{"title":"Authentication and session model","href":"/concepts/authentication-model"},{"title":"Current-user preferences model","href":"/concepts/me-preferences-model"},{"title":"Signed-token public share plane: sharing with recipients who have no account","href":"/concepts/signed-token-public-share-plane"},{"title":"Account security model","href":"/concepts/account-security-model"},{"title":"Destructive-operation re-auth challenge","href":"/concepts/re-auth-challenge-model"},{"title":"The issuer-challenge model","href":"/concepts/issuer-challenges-model"},{"title":"Onboarding wizard lifecycle","href":"/concepts/onboarding-wizard-lifecycle"},{"title":"Operator plane vs tenant plane — admin APIs and their audit model","href":"/concepts/admin-tenant-plane-model"},{"title":"API key lifecycle and rotation: grace versus immediate","href":"/concepts/api-key-rotation-lifecycle"},{"title":"Identity federation: SAML and SCIM","href":"/concepts/identity-federation-saml-scim"},{"title":"Tenant config portability: the export/import bundle","href":"/concepts/tenant-config-portability-model"},{"title":"Roles, teams, and permissions","href":"/concepts/roles-teams-permissions"},{"title":"Team seat quota and invite enforcement","href":"/concepts/team-seat-quota-model"},{"title":"Custom fields: the definition model and the dependency-scan lifecycle","href":"/concepts/custom-fields-model"},{"title":"The contact record model","href":"/concepts/contact-record-model"},{"title":"Contact merge policy: the per-field survivorship decision tree","href":"/concepts/contact-merge-policy"},{"title":"Custom domains and managed SSL","href":"/concepts/custom-domains-and-ssl"},{"title":"The branding and theming console model","href":"/concepts/branding-and-theming-model"},{"title":"CSPaaS white-label operations","href":"/concepts/cspaas-white-label-operations"},{"title":"The composite pre-send risk verdict: four detectors, one score","href":"/concepts/risk-verdict-model"},{"title":"Synthetic-media provenance","href":"/concepts/synthetic-media-provenance"},{"title":"Redaction vault: a compliance-safe copy of every call transcript, with an audit of what was removed","href":"/concepts/redaction-vault"},{"title":"Encryption at rest: the platform envelope, and how BYOK fits on top","href":"/concepts/encryption-at-rest-model"}]},{"group":"Billing \u0026 Wallet","pages":[{"title":"The billing model map: four wallet/usage pages, one index","href":"/concepts/billing-model-map"},{"title":"Wallet spend-channel attribution: how each debit gets its channel","href":"/concepts/wallet-spend-channel-attribution-model"},{"title":"How billing meters your usage: wallet, rating, and the ledger","href":"/concepts/billing-and-wallet"},{"title":"Committed-use drawdown: the enterprise monthly commit meter","href":"/concepts/committed-use-drawdown-model"},{"title":"The outbound pause gate and the free-channel exemption","href":"/concepts/outbound-pause-and-free-channel-exemption"},{"title":"Outbound pause and the resume propagation loop","href":"/concepts/outbound-pause-recovery"},{"title":"The dunning lifecycle: a three-strike pause with a counter you cannot reset","href":"/concepts/dunning-lifecycle-model"},{"title":"Wallets, credits, and charges: how usage metering works","href":"/concepts/wallets-credits-and-charges"},{"title":"The reseller wallet funding model: one wallet per org, funded parent-down","href":"/concepts/reseller-wallet-funding-model"},{"title":"The two-phase authorize lifecycle: authorize, capture, release","href":"/concepts/two-phase-billing-lifecycle"},{"title":"eSIM reseller billing model: wallet charges and refunds on travel eSIMs","href":"/concepts/esim-reseller-billing-model"},{"title":"The outbound billing gate chain: what every send walks, in order","href":"/concepts/billing-gate-chain-model"},{"title":"Channel charge trigger model","href":"/concepts/channel-charge-trigger-model"},{"title":"RCS billing and metering model: what an RCS message costs, when the charge lands, and how to read it back","href":"/concepts/rcs-billing-and-metering-model"},{"title":"Spend alerts, burn rate, and the velocity-anomaly model","href":"/concepts/spend-anomaly-and-alert-model"},{"title":"Anomaly insights: detector shapes, baselines, and the alert handoff","href":"/concepts/anomaly-insights-model"},{"title":"Usage records: the per-record billing feed","href":"/concepts/usage-records-model"},{"title":"The usage metering pipeline: from a sent message to the wallet ledger","href":"/concepts/usage-metering-pipeline"},{"title":"Inbound cost metering: received traffic is reported, not debited","href":"/concepts/inbound-cost-metering-model"},{"title":"LLM spend attribution: feature × model × conversation, and the reconciliation behind it","href":"/concepts/llm-spend-cost-attribution-model"},{"title":"Channel cost rollup vs the billing ledger model","href":"/concepts/cost-channel-rollup-model"},{"title":"Pricing and rate resolution: how a per-operator price is attributed","href":"/concepts/pricing-rate-resolution"},{"title":"Volume-tier pricing auto-resolution: graduated rates that apply themselves","href":"/concepts/volume-tier-resolution-model"},{"title":"MCC/MNC override model — how per-operator overrides layer onto rate resolution","href":"/concepts/mccmnc-override-model"},{"title":"All-in pricing: the base rate plus the surcharge schedule","href":"/concepts/pricing-all-in-surcharges"},{"title":"What-if pricing model: rate preview over your real usage lanes","href":"/concepts/whatif-pricing-preview-model"},{"title":"FX-rate resolution: the four-source pipeline behind converted top-ups","href":"/concepts/fx-rate-resolution-pipeline"},{"title":"Reseller margin and the tax pipeline: marking up a rated amount, correctly ordered","href":"/concepts/reseller-margin-and-tax-pipeline"}]},{"group":"CDP \u0026 Intelligence","pages":[{"title":"What a Customer Data Platform (CDP) is on Orbit","href":"/concepts/what-is-a-customer-data-platform"},{"title":"The CDP event model","href":"/concepts/cdp-event-model"},{"title":"CDP streaming destinations: Kafka and Kinesis real-time egress","href":"/concepts/cdp-streaming-destinations"},{"title":"The media asset store","href":"/concepts/cdn-assets-model"},{"title":"The event-ledger projection model","href":"/concepts/event-ledger-projection-model"},{"title":"B2B accounts: golden records and hierarchy","href":"/concepts/cdp-accounts"},{"title":"Identity resolution and merge semantics","href":"/concepts/cdp-identity-resolution"},{"title":"Identity graph and device graph","href":"/concepts/cdp-identity-graph-and-device-graph"},{"title":"The contact scoring pipeline: daily cadence, batch execution, and the auditable scorer","href":"/concepts/cdp-scoring-pipeline"},{"title":"How CDP segments recompute: real-time evaluation, re-enrichment, and staleness","href":"/concepts/cdp-segment-recompute-model"},{"title":"Lists vs segments: the two membership models","href":"/concepts/list-vs-segment-membership-models"},{"title":"Three ways to materialize an audience at send time","href":"/concepts/audience-autosuggest-and-cohort-export"},{"title":"Predictive activation schedules: cadence-driven audience refresh","href":"/concepts/predictive-activation-schedule"},{"title":"CDP clean rooms: shared analytics without data egress","href":"/concepts/cdp-clean-room-model"},{"title":"CDP retention windows: per-data-class TTL governance","href":"/concepts/retention-policy-governance"},{"title":"The reverse-ETL destination model","href":"/concepts/reverse-etl-destination-model"},{"title":"The survey lifecycle: instrument, token, dispatch, scoring, and benchmark","href":"/concepts/survey-lifecycle-model"},{"title":"Conversations: the omnichannel thread model","href":"/concepts/conversations"},{"title":"Interactions: the unified cross-channel read model","href":"/concepts/interactions-unified-model"},{"title":"Interactions CSV export: the bulk-pull contract and its RBAC split","href":"/concepts/interactions-export-model"},{"title":"The team chat model: channels, huddles, presence, reactions, and attachments","href":"/concepts/team-chat-model"},{"title":"Conversation Intelligence","href":"/concepts/conversation-intelligence"},{"title":"Conversation and Call Intelligence Landscape","href":"/concepts/conversation-and-call-intelligence-landscape"},{"title":"Automation opportunities: turning conversation P\u0026L into agentable work","href":"/concepts/automation-opportunities-model"},{"title":"Session replay and search analytics","href":"/concepts/session-search-analytics"},{"title":"Global search fan-out","href":"/concepts/global-search-fan-out"},{"title":"Session replay model: recording lifecycle, two-tier storage, and playback","href":"/concepts/session-replay"},{"title":"Co-browse session model: consent postures and the privacy-masking contract","href":"/concepts/cobrowse-session-model"},{"title":"Widget flow model: runtime, web-call context, WebMCP guardrails, and trust policy","href":"/concepts/widget-flow-model"},{"title":"Next-best-product recommendations","href":"/concepts/recommendations"},{"title":"Next-best-action decisioning","href":"/concepts/decisioning"},{"title":"Analytics pipeline: from raw events to an aggregate read surface","href":"/concepts/analytics-pipeline"},{"title":"Per-tenant request metrics: how the Developer API analytics feed works","href":"/concepts/request-metrics-and-analytics-pipeline"},{"title":"Request-metrics reader gates: four bounded surfaces","href":"/concepts/request-metrics-reader-gates"},{"title":"Request Logs model: Cloud Logging under a deadline-backed read","href":"/concepts/request-logs-model"},{"title":"The insights rollup model: read-time derivations over existing events","href":"/concepts/insights-rollup-model"},{"title":"Ask-your-data copilot: how a question becomes a governed answer","href":"/concepts/ask-your-data-copilot-model"},{"title":"The carbon emissions and ESG footprint model","href":"/concepts/carbon-emissions-model"},{"title":"The personalization slots model: slot scoping, variant resolution, and lift semantics","href":"/concepts/personalization-slots-model"},{"title":"Customer-360 snapshot aggregation model: parallel fan-out, error isolation, and caching","href":"/concepts/customer-360-snapshot-model"},{"title":"CRM integration model: sync directions, object mapping, and verification","href":"/concepts/crm-integration-model"},{"title":"Import and migration lifecycle: connect → preview → run → reconcile","href":"/concepts/imports-migration-model"},{"title":"Ads attribution and lead ingestion","href":"/concepts/ads-attribution-lead-ingestion"},{"title":"CDP ad-audience incrementality","href":"/concepts/cdp-ad-audience-incrementality"}]},{"group":"AI \u0026 Automation","pages":[{"title":"AI agent architecture: flows, retrieval, tools, and the run lifecycle end to end","href":"/concepts/ai-agent-architecture"},{"title":"Canary rollout \u0026 shadow dispatch: taking a new agent version live safely","href":"/concepts/canary-and-shadow-rollout-model"},{"title":"Outcome-based AI-agent billing: pay per resolved conversation, not per token","href":"/concepts/outcome-pricing-model"},{"title":"AI-disclosure ledger: concept","href":"/concepts/ai-disclosure-ledger"},{"title":"Prompt template lifecycle: concept","href":"/concepts/prompt-template-lifecycle"},{"title":"Outbound channel templates lifecycle: concept","href":"/concepts/outbound-channel-templates"},{"title":"Orby operator assistant architecture: sessions, turns, tools, and the approval gate","href":"/concepts/orby-operator-assistant"},{"title":"Action approvals: the human-in-the-loop gate","href":"/concepts/action-approvals-model"},{"title":"PII egress guard: the last-pass scrub on agent tool arguments","href":"/concepts/pii-egress-guard-model"},{"title":"Guardrail policies and red-team gates: how agents are governed","href":"/concepts/guardrails-and-red-team-pipeline"},{"title":"Runtime turn classifiers and eval rubrics: how agent turns are judged","href":"/concepts/agent-turn-classifiers-and-eval-rubrics"},{"title":"Agent versioning and the change-log audit trail","href":"/concepts/agent-versioning-and-change-log"},{"title":"Agent run lifecycle: queued to completed, and the states in between","href":"/concepts/agent-run-lifecycle"},{"title":"The proactive outreach evaluation model: one trigger, one decision, one audit row","href":"/concepts/proactive-outreach-evaluation-model"},{"title":"Agent memory model","href":"/concepts/agent-memory-model"},{"title":"Agent presence and aux-code lifecycle: the five states dispatch checks before it rings","href":"/concepts/agent-presence-lifecycle"},{"title":"The knowledge-base ingestion pipeline: from upload to retrieval-ready","href":"/concepts/knowledge-pipeline"},{"title":"Retrieval scoping and grounding integrity: how agent retrieval stays inside your data","href":"/concepts/retrieval-scoping-and-grounding-integrity"},{"title":"The no-match miner → KB auto-draft loop: unanswered questions become reviewable articles","href":"/concepts/kb-auto-draft-loop"},{"title":"How flow executions run: states, branching, async waits, and webhook hand-off","href":"/concepts/flow-execution-model"},{"title":"The branch-decision contract: from CDP to flows","href":"/concepts/cdp-and-flown-each-other-branch-decision"},{"title":"What a flow template is, and how cloning detaches it","href":"/concepts/flow-templates-model"},{"title":"BYO MCP servers for AI agents","href":"/concepts/byo-mcp-servers"},{"title":"Hosted MCP server","href":"/concepts/mcp-hosted-server"},{"title":"A2A federation model","href":"/concepts/a2a-federation-model"},{"title":"Agentic commerce authorization and checkout model","href":"/concepts/agentic-commerce-model"},{"title":"MPP metered payment sessions","href":"/concepts/mpp-metered-payment-sessions"},{"title":"Cross-app access: Identity Assertion JWT Authorization Grant (ID-JAG)","href":"/concepts/cross-app-access-id-jag"},{"title":"The skill catalog: the canonical list of skills routing accepts","href":"/concepts/skill-catalog"},{"title":"QA evaluations and the performance leaderboard","href":"/concepts/qa-leaderboard-and-evaluations"},{"title":"Practice Studio: stateless simulated-customer roleplay sessions","href":"/concepts/practice-studio-model"},{"title":"The call-quality evaluation lifecycle","href":"/concepts/quality-evaluation-lifecycle"},{"title":"The LLM-judged evaluation ledger","href":"/concepts/llm-judged-evaluation-ledger"},{"title":"Pick a testing harness: the decision table","href":"/concepts/agent-testing-harness-picker"},{"title":"Agent A/B experiments: assignment, lift attribution, and promotion","href":"/concepts/agent-experiment-model"},{"title":"Agent playbooks: trigger-driven live guidance","href":"/concepts/voice-playbooks-model"},{"title":"Predictive routing: the trained agent-match model","href":"/concepts/predictive-routing-model"},{"title":"The squad routing model: classifier agents, handoff packets, and fallback","href":"/concepts/squad-routing-model"},{"title":"Inbox conversation push-routing (auto-assignment)","href":"/concepts/inbox-push-routing"},{"title":"Semantic response cache: serving near-duplicate first questions without a model round-trip","href":"/concepts/semantic-response-cache-model"}]},{"group":"Compliance, Send Controls \u0026 Rates","pages":[{"title":"Data placement and residency","href":"/concepts/data-placement-and-residency"},{"title":"Retention windows and deletion: the stores map","href":"/concepts/retention-windows-and-deletion"},{"title":"Consent, opt-out, and suppression: the recipient-state model","href":"/concepts/consent-and-suppression-model"},{"title":"The DSAR intake model","href":"/concepts/dsar-concept"},{"title":"Frequency-cap model: slot claims, counters, and gate order","href":"/concepts/frequency-caps-model"},{"title":"Message suppression model: the duplicate-content guard, and the two mechanisms it is not","href":"/concepts/message-suppression-model"},{"title":"Outbound gate chain: the interaction, campaign-preflight, keyword-rules, frequency-caps, and message-suppression stack","href":"/concepts/messages-gate-chain-and-suppression"},{"title":"The policy-scan pipeline model","href":"/concepts/policy-scan-pipeline-model"},{"title":"The DLP scanner model","href":"/concepts/dlp-scanner-concept"},{"title":"Outbound URL reputation and the smishing scan","href":"/concepts/url-reputation-smishing-scan"},{"title":"TCPA federal voice guard: the one 422 you can't unset","href":"/concepts/tcpa-federal-voice-guard"},{"title":"Voice pre-send gate chain: the order outbound calls are evaluated","href":"/concepts/voice-pre-send-gate-chain"},{"title":"TCPA quiet hours: federal, state, and tenant gates as one stack","href":"/concepts/federal-vs-state-vs-tenant-voice-gates"},{"title":"Omnichannel fallback compliance matrix — TCPA vs DNC vs registration per channel","href":"/concepts/omnichannel-compliance-matrix"},{"title":"The Reassigned Numbers Database (RND): how the safe-harbor scrub works end to end","href":"/concepts/reassigned-numbers-database"},{"title":"CTIA Messaging Principles as an ordered schema","href":"/concepts/ctia-messaging-principles"},{"title":"The US SMS Regulatory Model: Three Rule Books, One Control Plane","href":"/concepts/us-sms-regulatory-model"},{"title":"Tenant posture audit map — planes, ownership, and where the evidence lands","href":"/concepts/tenancy-posture-audit-map"},{"title":"The audit ledger model","href":"/concepts/audit-ledger-model"},{"title":"Tenant compliance defaults — the opt-in envelope","href":"/concepts/tenant-compliance-defaults-model"},{"title":"The tenant-owned compliance model: one page, every gate","href":"/concepts/compliance-tenant-owned-model"},{"title":"Outbound country allowlist — a tenant-owned opt-in gate","href":"/concepts/country-allowlist-gate-model"},{"title":"Country rules enumeration model: one row per country per channel","href":"/concepts/country-rules-enumeration-model"},{"title":"10DLC error taxonomy: registry rejections vs. delivery errors","href":"/concepts/tcr-vs-carrier-error-taxonomy"},{"title":"10dlc concept","href":"/concepts/10dlc-concept"},{"title":"Rate-limit and cooldown taxonomy: which limiter fired when a send returns 429","href":"/concepts/rate-limit-and-cooldown-taxonomy"},{"title":"API governance model: the org default + per-key override self-serve model","href":"/concepts/api-governance-model"},{"title":"Rate-limit and cooldown collector: how the API request boundary maps every bucket","href":"/concepts/rate-limit-cooldown-collector"},{"title":"Sender warming and reputation: how the ramp and trust kernels work","href":"/concepts/sender-warming-and-reputation"},{"title":"SMS complaint feedback loop: ingest, rollup, and auto-suppression","href":"/concepts/sms-complaint-feedback-loop"},{"title":"Spam-likelihood prediction: the score, its factors, and the remediation playbook","href":"/concepts/spam-likelihood-prediction"},{"title":"Template lifecycle and approval semantics","href":"/concepts/template-lifecycle"},{"title":"The WhatsApp WABA lifecycle — connect, register, migrate, disconnect","href":"/concepts/whatsapp-waba-lifecycle"},{"title":"WhatsApp quality and health model","href":"/concepts/whatsapp-quality-and-health"},{"title":"WhatsApp Flows and form submissions","href":"/concepts/whatsapp-flows-and-forms"},{"title":"WhatsApp Business Calling model","href":"/concepts/whatsapp-business-calling-model"},{"title":"WhatsApp Business Calling media relay","href":"/concepts/whatsapp-business-calling-media-relay"},{"title":"Verification session lifecycle: sent, checked, approved or failed","href":"/concepts/verification-lifecycle"},{"title":"The Verify fraud gate: score, verdict, and the fallback-constrained channel chain","href":"/concepts/verify-fraud-gate-timeline-model"},{"title":"The Verify dashboard: history surface, filters, and the role-access guard","href":"/concepts/verify-history-and-role-access"},{"title":"Identity risk gate: fused signals — port-event recency, SIM swap, and Silent Auth","href":"/concepts/identity-risk-gate-signals"},{"title":"Brand identity and trust score: the cross-channel verification rollup","href":"/concepts/brand-identity-trust-score"},{"title":"Fraud reputation: the shared cross-tenant network feed","href":"/concepts/network-signals-fraud-reputation"},{"title":"Network APIs and the CIBA silent-auth flow","href":"/concepts/network-apis-ciba"}]},{"group":"Webhooks \u0026 Platform Models","pages":[{"title":"Webhook delivery semantics: retries, ordering, and the dead-letter queue","href":"/concepts/webhook-delivery-semantics"},{"title":"The devotel CLI model: install, auth, profiles, and the webhook-forwarding loop","href":"/concepts/devotel-cli-model"},{"title":"Webhook fan-out: one event, many destinations","href":"/concepts/webhook-fan-out-and-event-sinks"},{"title":"Webhook subscription lifecycle: register through disable and re-enable","href":"/concepts/webhook-subscription-lifecycle"},{"title":"The SDK surface model: tiers, shared contract, and codegen","href":"/concepts/sdks-model"},{"title":"Inbound connector webhook authentication model","href":"/concepts/inbound-connector-webhook-auth-model"},{"title":"Inbound webhook debug log","href":"/concepts/inbound-webhook-debug-log"},{"title":"Idempotency and safe retries","href":"/concepts/idempotency-and-safe-retries"},{"title":"Public pixels, redirects, and short links","href":"/concepts/public-pixels-redirects"},{"title":"Web SDK and the public-key identify/track model","href":"/concepts/web-sdk-public-key-model"},{"title":"The notification model: event fan-out, categories, channels, and digests","href":"/concepts/notification-model"},{"title":"Short links, landing pages, and the publish lifecycle","href":"/concepts/short-links"},{"title":"QR code generation model","href":"/concepts/qr-code-generation-model"},{"title":"Marketplace listing lifecycle and trust model","href":"/concepts/marketplace-listing-lifecycle"},{"title":"Campaign lifecycle: draft to completed, blast vs drip vs journey","href":"/concepts/campaign-lifecycle"},{"title":"Campaign journey pipeline: enroll to funnel measurement","href":"/concepts/campaign-journey-pipeline"},{"title":"Journey enrollment fan-out: three routers, one entry chain","href":"/concepts/journey-enrollment-fan-out"},{"title":"The export families model","href":"/concepts/export-families-model"},{"title":"Event sources: the inbound consumer model","href":"/concepts/event-sources-inbound-model"},{"title":"Event consumer groups: managed offsets over the platform event stream","href":"/concepts/event-consumer-groups"},{"title":"USSD session model and the stateless menu engine","href":"/concepts/ussd-session-model"},{"title":"The WFM model: forecasting, scheduling, adherence, and the labor market","href":"/concepts/wfm-model"},{"title":"How voice biometrics verification works","href":"/concepts/voice-biometrics"},{"title":"Operate voice biometrics: thresholds, step-up, and the verification console","href":"/concepts/voice-biometrics-console"},{"title":"KBA caller verification: knowledge-based challenges on a live call","href":"/concepts/caller-verification-kba"},{"title":"MCID — the malicious-call trace model","href":"/concepts/mcid-call-trace-model"},{"title":"Voice Agent Quality Index (VAQI)","href":"/concepts/voice-agent-quality-vaq"},{"title":"Commerce checkout spine","href":"/concepts/commerce-checkout-spine"}]},{"group":"Files \u0026 Object Storage","pages":[{"title":"The media asset store","href":"/concepts/cdn-assets-model"},{"title":"Media file upload and the presign lifecycle","href":"/concepts/file-upload-and-presign-lifecycle"},{"title":"RCS demo videos: permanent share links","href":"/guides/file-video-share-link"}]},{"group":"Outbound","pages":[{"title":"Marketing hub model: wallet passes, loyalty, and referrals behind one redirect","href":"/concepts/marketing-hub-model"},{"title":"Referral program model: program → code → conversion → reward","href":"/concepts/referral-program-model"}]}]},{"group":"Features","pages":[{"title":"CXaaS: the four arcs of customer experience","href":"/guides/cxaas-four-arcs"},{"title":"Loyalty API: points, tiers, and redemption endpoints","href":"/api-reference/loyalty"},{"title":"Incentives: catalog, ledger, and fulfillment","href":"/concepts/incentives"},{"title":"Loyalty program model: points, tiers, and the CDP ledger","href":"/concepts/loyalty-program-model"},{"title":"Wallet pass lifecycle: issue, update, void","href":"/concepts/wallet-pass-lifecycle"}]},{"group":"Billing","pages":[{"title":"Billing overview","href":"/billing/overview"},{"title":"Revenue recognition","href":"/billing/revenue-recognition"},{"title":"Spend caps, budget alerts, and auto-cutoff","href":"/billing/spend-caps"},{"title":"Usage \u0026 delivery anomaly alerts","href":"/billing/usage-anomaly-alerts"},{"title":"Burn rate and wallet runway","href":"/concepts/billing-burn-rate"},{"title":"Spend caps on the dashboard","href":"/guides/spend-cap-console"},{"title":"Pricing calculator: estimate messaging, RTC, AI, and reseller payouts","href":"/billing/pricing-calculator"},{"title":"Billing Calculator: the presale cost-estimation walkthrough","href":"/guides/billing-cost-calculator"},{"title":"Inbound traffic cost metering: see what received calls and messages cost","href":"/guides/inbound-traffic-cost-metering"},{"title":"CDR export \u0026 billing reconciliation feed","href":"/billing/cdr-export-billing-reconciliation"},{"title":"CDR usage export for billing reconciliation","href":"/guides/cdr-usage-export-billing-reconciliation"},{"title":"Billing → Records: the usage record export console","href":"/guides/billing-records-export-console"},{"title":"Cryptocurrency payments","href":"/billing/crypto-payments"},{"title":"Crypto top-up API lifecycle","href":"/billing/crypto-topup-api-samples"},{"title":"Process NOWPayments crypto refunds in Orbit","href":"/billing/crypto-refunds"},{"title":"Credit refund lifecycle: lot eligibility, partial refunds, and two-leg settlement","href":"/concepts/credit-refund-lifecycle-model"},{"title":"Refunding unused card top-up credits: the owner's self-serve walkthrough","href":"/guides/credit-refund-self-serve-walkthrough"},{"title":"Wallet top-up currency conversion","href":"/billing/wallet-currency-conversion"},{"title":"Authorize wallet holds for multi-step purchases","href":"/guides/wallet-hold-capture"},{"title":"Rate cards: persisted price books you assign to subaccounts","href":"/billing/rate-cards"},{"title":"Cost-center chargeback: attribute spend to a department","href":"/guides/cost-center-chargeback"},{"title":"AI usage breakdown: attribute LLM spend per agent, model, and channel","href":"/guides/billing-ai-usage-split"},{"title":"What-if pricing simulator: back-test a rate card against your own traffic","href":"/guides/whatif-pricing-simulator"},{"title":"Committed-use discounts: decide, forecast, and enroll","href":"/guides/billing-committed-use-enrollment"},{"title":"Volume tiers and revenue recognition: the finance-ops workflow","href":"/guides/billing-revenue-and-volume-tiers"},{"title":"Revenue recognition: read deferred vs recognized schedules","href":"/guides/billing-revenue-recognition"},{"title":"Billing ops: invoices, statements, pay-by-link, and the price calculator","href":"/guides/billing-invoices-statements-and-pay-by-link"},{"title":"Run and download reseller invoices for subaccounts","href":"/guides/subaccounts-reseller-invoice-run"},{"title":"The invoice, statement, and subscription model","href":"/concepts/billing-documents-model"},{"title":"The pricing-preview pipeline: projected margin and payout before close","href":"/concepts/billing-pricing-preview-model"},{"title":"MCCMNC overrides: per-carrier rate overrides over the default rate card","href":"/guides/billing-mccmnc-overrides"},{"title":"Admin: Voice Destinations dial-code deck","href":"/guides/admin-voice-destinations-dial-code-deck"},{"title":"Per-operator SMS rates: maintain MCC/MNC rates per country","href":"/guides/billing-mccmnc-per-operator-rates"},{"title":"Configure wallet auto-top-up","href":"/guides/billing-auto-topup"},{"title":"Billing → Payment: methods, subscription, tax, outcome pricing","href":"/guides/billing-payment-surface"},{"title":"Notification digest vs. per-user preferences","href":"/guides/digest-and-notification-channels-faq"}]},{"group":"Webhooks","pages":[{"title":"Webhooks overview: receive real-time Orbit events","href":"/webhooks/overview"},{"title":"Build your first webhook receiver","href":"/webhooks/first-receiver"},{"title":"Webhook events: catalog of every event Orbit dispatches","href":"/webhooks/events"},{"title":"Webhook event payloads: envelope, headers, and metadata","href":"/webhooks/event-payloads"},{"title":"Inbound event catalog: every inbound status folded to its canonical webhook event","href":"/webhooks/inbound-event-catalog"},{"title":"Normalized inbound event envelope","href":"/webhooks/normalized-inbound-envelope"},{"title":"Inspect webhook deliveries and replay failures","href":"/webhooks/inspecting-deliveries"},{"title":"Webhook security: verify HMAC-SHA256 signatures","href":"/webhooks/security"},{"title":"Troubleshooting: webhook signature verification failures","href":"/webhooks/troubleshooting-signature-failures"}]},{"group":"Security \u0026 SSO","pages":[{"title":"Enroll SAML SSO: Okta and Microsoft Entra ID","href":"/guides/saml-sso-enrollment"},{"title":"SCIM 2.0 provisioning (Okta, Entra ID, generic IdPs)","href":"/compliance/scim-provisioning"},{"title":"Wire SCIM provisioning: Okta, Microsoft Entra ID, and OneLogin","href":"/guides/scim-provisioning"},{"title":"Password reset and API-key revocation","href":"/guides/auth-password-reset-and-key-revocation"}]},{"group":"Compliance","pages":[{"title":"Your Tenant Compliance Posture: The Toggle Map","href":"/compliance/posture-overview"},{"title":"TCPA State-by-State Map for 2026","href":"/compliance/tcpa-state-map-2026"},{"title":"Compliance hub route map","href":"/compliance/compliance-hub-route-map"},{"title":"Compliance hub console FAQ","href":"/compliance/console-compliance-hub-faq"},{"title":"Compliance hub by role: where each persona starts","href":"/compliance/persona-guide-compliance-officer"},{"title":"Accessibility in business messaging","href":"/compliance/accessibility-business-messaging"},{"title":"Compliance Glossary","href":"/compliance/glossary"},{"title":"Compliance Posture FAQ","description":"The recurring operator questions about Orbit's compliance posture — who owns the gates, what defaults open, what fails open versus closed, why an enabled toggle may not be blocking yet, and which approvals carry external lead time.","href":"/compliance/posture-faq"},{"title":"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview","href":"/compliance/quiet-hours-faq"},{"title":"Voice Traffic-Lane and Voice-Classification FAQ","description":"The most-asked questions about the outbound-voice guard's decision inputs — when a call resolves marketing vs transactional and how to claim marketing from your metadata, why a +1 recipient lookup fails on a call that is nothing like the blocked-call runbook, the exact stamping order that runs before the guard, and where the decision ledger records every verdict.","href":"/compliance/voice-lane-and-classification-faq"},{"title":"Compliance FAQ: sends, calls, and registration gates","href":"/compliance/faq"},{"title":"Compliance Approval Timelines \u0026 Trigger Runbooks","href":"/compliance/topic-faq"},{"title":"One Educated Customer, Ten Laws: Which Regulatory Family Owns Which Customer-Data Gate","href":"/compliance/ten-vs-educate-customer-data"},{"title":"Vertical Compliance Bundles","href":"/compliance/vertical-bundles"},{"title":"Vertical bundles console walkthrough","href":"/guides/compliance-vertical-bundles-walkthrough"},{"title":"Vertical bundles by industry: a decision guide for regulated buyers","href":"/compliance/vertical-bundle-industry-guides"},{"title":"Assembling a Debt-Collection and Receivables Compliance Posture End to End","href":"/compliance/debt-collection-compliance-posture"},{"title":"Industry landing pages: the buyer surface for each vertical","href":"/guides/industries-overview"},{"title":"Automotive recall service walkthrough","href":"/guides/automotive-recall-service-walkthrough"},{"title":"Staffing shift coverage and candidate pipeline: an end-to-end walkthrough","href":"/guides/staffing-shift-coverage-candidates-walkthrough"},{"title":"Real estate showing, listing, and closing notifications end to end","href":"/guides/real-estate-showing-closing-walkthrough"},{"title":"Build an end-to-end FNOL and claims lifecycle program","href":"/guides/insurance-claims-fnol-walkthrough"},{"title":"Configure Your Tenant's Compliance Posture Before the First Send","href":"/compliance/tenant-posture-first-run"},{"title":"Assembling a GDPR Posture End to End","href":"/compliance/gdpr-posture-guide"},{"title":"GDPR International Transfers","href":"/compliance/gdpr-international-transfers"},{"title":"CCPA/CPRA Posture: Consumer Rights on Orbit","href":"/compliance/ccpa-cpra-posture"},{"title":"US State Privacy Posture: The 2026 Map Beyond California","href":"/compliance/us-state-privacy-posture"},{"title":"COPPA and minor contacts posture","href":"/compliance/coppa-minors-posture"},{"title":"Assembling a US Marketing-SMS Posture End to End","href":"/compliance/tcpa-posture-guide"},{"title":"TCPA Consent-Record Defense Runbook","href":"/compliance/tcpa-consent-record-defense"},{"title":"Assembling a STIR/SHAKEN Outbound Posture End to End","href":"/compliance/stir-shaken-posture-guide"},{"title":"STIR/SHAKEN evidence-to-posture crosswalk","href":"/compliance/stir-shaken-evidence-crosswalk"},{"title":"Assembling a HIPAA Posture End to End","href":"/compliance/hipaa-posture-guide"},{"title":"Voice biometrics privacy posture: consent, retention, and deletion under BIPA, CUBI, MHMDA, and GDPR","href":"/compliance/voice-biometrics-bipa-posture"},{"title":"HIPAA compliance controls for healthcare messaging","href":"/compliance/hipaa"},{"title":"Business Associate Agreement (BAA) flow","href":"/compliance/baa"},{"title":"HIPAA BAA gate evaluation guide","href":"/compliance/baa-gate-guide"},{"title":"HIPAA tenant BAA attestation checklist — first run","href":"/compliance/hipaa-first-run-checklist"},{"title":"PHI-adjacent audience designations","href":"/compliance/phi-audiences"},{"title":"AI Turn Audit: Verbatim AI Decision Records","href":"/compliance/ai-turn-audit"},{"title":"Agent Identity Governance: NHI Inventory + Bulk Decommission","href":"/compliance/agent-identity-governance"},{"title":"Set up agent identity governance: inventory, sponsors, and bulk decommission","href":"/guides/agent-identity-governance-setup"},{"title":"Plan per-agent channel concurrency caps","href":"/guides/agent-channel-concurrency-caps"},{"title":"HIPAA onboarding: from BAA to audit-ready","href":"/guides/hipaa-onboarding"},{"title":"HIPAA first-enablement runbook","href":"/guides/hipaa-first-enablement"},{"title":"HIPAA readiness checklist — pre-go-live runbook","href":"/compliance/hipaa-checklist-runbook"},{"title":"Register PHI-adjacent audiences","href":"/guides/hipaa-phi-audiences"},{"title":"Build a HIPAA-postured patient engagement program","href":"/guides/healthcare-patient-engagement-walkthrough"},{"title":"Free Tool: STIR/SHAKEN Attestation Checklist","href":"/guides/stir-shaken-checklist-tool"},{"title":"EU AI Act Article 50 transparency for AI agents","href":"/compliance/eu-ai-act"},{"title":"EU AI Act deployer checklist for AI voice agents","href":"/compliance/eu-ai-act-deployer-checklist-communications-platforms-2026"},{"title":"Configure AI disclosure before you publish an agent","href":"/compliance/ai-disclosure-settings"},{"title":"AI disclosure pre-publish setup and evidence","href":"/guides/ai-disclosure-setup"},{"title":"Always-on live compliance monitoring for disclosure queues","href":"/guides/live-compliance-monitoring"},{"title":"Queue call-disclosure posture","href":"/compliance/queue-call-disclosure-posture"},{"title":"FCC 24-17 — written consent for AI voices","href":"/compliance/fcc-ai-voice-consent-guard"},{"title":"AI outbound voice compliance checklist for 2026 buyers","href":"/compliance/ai-voice-buyer-compliance-checklist-2026"},{"title":"SOC 2 Controls Mapping","href":"/compliance/soc2-controls"},{"title":"Assembling an ISO 27001 Posture End to End","href":"/compliance/iso-27001-posture-guide"},{"title":"Access lifecycle audit evidence (SCIM join / move / leave)","href":"/compliance/access-control-audit-evidence"},{"title":"PCI DSS compliance posture and SAQ A scope for Orbit","href":"/compliance/pci-dss"},{"title":"Call Recording Consent","href":"/compliance/recording-consent"},{"title":"Consent-Receipt Integrity Binding","href":"/compliance/consent-receipt-integrity"},{"title":"Voice Signatures (Verbal Contracts)","href":"/compliance/voice-signatures"},{"title":"STIR/SHAKEN attestation posture","href":"/compliance/attestation"},{"title":"Request a STIR/SHAKEN attestation letter","href":"/guides/compliance-attestation-request-runbook"},{"title":"Posture-History Rollups for the Audit Ledger","href":"/compliance/audit-ledger-posture-rollup"},{"title":"Do-Not-Originate (DNO) Caller-ID Blocking","href":"/compliance/do-not-originate"},{"title":"CALEA Lawful-Intercept Provisioning","href":"/compliance/calea-intercept"},{"title":"Voice Data Residency \u0026 Retention","href":"/compliance/voice-data-residency"},{"title":"Data Residency Overview","href":"/compliance/data-residency-overview"},{"title":"Pin, lock, and run a governed data-residency migration","href":"/guides/data-residency-pin-lock-migrate"},{"title":"Reading the subprocessor registry","href":"/compliance/subprocessor-registry"},{"title":"Immutable Archival Export (WORM)","href":"/compliance/archival-export"},{"title":"Trust Center vs Compliance Center — which surface serves which audience","href":"/compliance/trust-center-vs-workspace"},{"title":"Trust Center evidence pack","href":"/compliance/trust-center-evidence-pack"},{"title":"Stream audit logs to your SIEM","href":"/compliance/siem-sinks"},{"title":"Audit log export, chain verification, and refresh workflow","href":"/compliance/audit-export"},{"title":"Legal Holds on Messaging Conversations","href":"/compliance/legal-hold"},{"title":"Per-Domain Data Retention Policy","href":"/compliance/data-retention-policy"},{"title":"WhatsApp Restricted \u0026 Prohibited Content Policy","href":"/compliance/whatsapp-content-policy"},{"title":"WhatsApp Meta Policy Cadence \u0026 Tenant-Owned Posture","href":"/compliance/whatsapp-meta-policy-cadence"},{"title":"Data Subject Access Requests (DSAR)","href":"/compliance/dsar"},{"title":"Proof-of-Deletion Certificate Runbook","href":"/guides/compliance-dsar-erasure-certificate-runbook"},{"title":"On-demand message redaction","href":"/guides/on-demand-message-redaction"},{"title":"Data Processing Agreement (GDPR Article 28)","href":"/compliance/data-processing-agreement"},{"title":"GDPR Processing Register (ROPA + DPIA)","href":"/compliance/privacy-register"},{"title":"Breach incident register (GDPR Art. 33/34)","href":"/compliance/breach-incident-register"},{"title":"Operate the GDPR breach-incident register","href":"/compliance/breach-incidents-gdpr-register"},{"title":"DPO \u0026 EU/UK Representative Designation (GDPR Art.37 / Art.27)","href":"/compliance/dpo-representative"},{"title":"Consent Management \u0026 Receipts","href":"/compliance/consent-management"},{"title":"The Affirmative Opt-In Gate (consent_required)","href":"/compliance/consent-required-gate"},{"title":"Confirmed Consent (Double Opt-In) Handshakes","href":"/compliance/double-opt-in"},{"title":"Opt-in disclosure templates that clear 10DLC vetting","href":"/compliance/opt-in-disclosure-templates"},{"title":"Consent Posture: The Unknown-Consent Policies","href":"/compliance/consent-default-policy"},{"title":"Ad Consent Signals: TCF, GPP, GPC \u0026 us_privacy","href":"/compliance/ad-consent-signals"},{"title":"Opt-Out \u0026 Suppression Lists","href":"/compliance/opt-out-suppression"},{"title":"Bulk-import a suppression list from CSV","href":"/guides/suppression-csv-bulk-import"},{"title":"Opt-Out Keyword Alias Table","href":"/compliance/opt-out-keyword-alias-table"},{"title":"Opt-Out Entry Points by Channel","href":"/compliance/opt-out-entry-points-by-channel"},{"title":"Preference center: tenant controls and contract","href":"/compliance/preference-center"},{"title":"Suppression vs Consent Precedence Model","href":"/compliance/consent-vs-suppression-model"},{"title":"TCPA Reasonable Revocation (2025): One-to-One Consent Vacatur and the Reasonable-Revocation Era","href":"/compliance/tcpa-reasonable-revocation-2025"},{"title":"Keyword opt-outs on WhatsApp, RCS \u0026 Viber","href":"/guides/opt-out-rules-whatsapp-rcs"},{"title":"Fraud Shield — Tenant Triage \u0026 Chargeback Evidence","href":"/compliance/fraud-shield"},{"title":"Fraud Review Triage — Run the Response Loop","href":"/compliance/fraud-review-triage"},{"title":"Inbound Country Gate — Block or Flag Inbound Origins by Country","href":"/compliance/inbound-country-gate"},{"title":"Contact PII Vault (Tokenize + Detokenize)","href":"/compliance/pii-vault"},{"title":"Brand impersonation watchlist, scan \u0026 takedown cases","href":"/compliance/brand-impersonation-takedown"},{"title":"Wire a brand-identity watchlist and run smishing takedown cases","href":"/guides/brand-impersonation-takedown"},{"title":"Branded Calling (Rich Call Data) Configuration","href":"/compliance/branded-calling"},{"title":"Voice Destination Auto-Blocks (Traffic Pumping \u0026 Wangiri)","href":"/compliance/voice-destination-auto-blocks"},{"title":"Per-channel rate overrides","href":"/compliance/channel-rate-overrides"},{"title":"Fraud caps","href":"/compliance/fraud-caps"},{"title":"Frequency Caps as a TCPA Litigation-Risk Control","href":"/compliance/frequency-caps-compliance-posture"},{"title":"View and clear spend-anomaly auto-mitigations","href":"/guides/compliance-spend-anomaly-mitigations-self-serve"},{"title":"Export Consent \u0026 Suppression Records","href":"/compliance/consent-suppression-export"},{"title":"Compliance health","href":"/compliance/compliance-health"},{"title":"Compliance Readiness Summary","href":"/compliance/compliance-readiness-summary"},{"title":"Restricted \u0026 Prohibited Industries","href":"/compliance/restricted-industries"},{"title":"Political Campaign and GOTV Messaging for the 2026 US Cycle","href":"/compliance/political-campaign-gotv-messaging-2026"},{"title":"Country Compliance Requirements","href":"/compliance/country-requirements"},{"title":"Regional Posture Hub — Per-Country Rules Index","href":"/compliance/country-rules-directory"},{"title":"Sender-ID Decision Tree by Market","href":"/compliance/sender-id-by-market-decision-tree"},{"title":"Argentina CCM/AFIP Rules","href":"/compliance/argentina-enacom-rules"},{"title":"Country Rules Auto-Refresh Feeds","href":"/compliance/country-rule-feeds"},{"title":"CPNI (FCC U.S. Telecommunications)","href":"/compliance/cpni"},{"title":"Customer-Managed Keys (BYOK)","href":"/compliance/byok-customer-managed-keys"},{"title":"BYOK: register, activate, rotate, and revoke customer-managed keys","href":"/guides/compliance-byok-keys"},{"title":"BYOK rotation and lifecycle runbook","href":"/guides/compliance-byok-rotation-runbook"},{"title":"KYC Documents \u0026 the Compliance-Profile Lifecycle","href":"/compliance/documents-kyc"},{"title":"The KYC identity model: documents, profiles, and destinations","href":"/compliance/kyc-identity-model"},{"title":"Tenant-side KYC submission and renewal runbook","href":"/compliance/kyc-profile-submission-runbook"},{"title":"Regulated number-purchase compliance packets","href":"/guides/regulated-number-purchase-packets"},{"title":"KYC Submissions \u0026 Documents: Troubleshooting","href":"/troubleshooting/kyc-submission-and-documents"},{"title":"Assemble a Shared Compliance Profile Across Gated Surfaces","href":"/compliance/compliance-profile-assembly"},{"title":"10DLC brand \u0026 campaign compliance profiles","href":"/compliance/10dlc-brand-campaign-profiles"},{"title":"10DLC preflight: score, verdict, and finding codes","href":"/compliance/10dlc-preflight-linter"},{"title":"WhatsApp Business verification as a compliance profile","href":"/compliance/whatsapp-business-verification"},{"title":"Create a compliance profile with the wizard","href":"/guides/compliance-profile-wizard"},{"title":"Compliance-profile use cases and the surface each one opens","href":"/compliance/compliance-profile-use-cases"},{"title":"Sender-ID Registration","href":"/compliance/sender-id-registration"},{"title":"Sender-ID pre-registration: the market-choosing matrix","href":"/guides/sender-id-country-matrix"},{"title":"Sender-ID registration by market: the per-market walkthrough","href":"/guides/sender-id-registration-by-market"},{"title":"Country rules console: the per-country regulation map","href":"/guides/compliance-country-rules-console"},{"title":"Country-Gate Posture Playbook","href":"/guides/country-rules-posture-playbook"},{"title":"US CAN-SPAM Compliance for Email","href":"/compliance/can-spam"},{"title":"US TCPA Junk Fax Prevention Act Compliance for Fax","href":"/compliance/tcpa-junk-fax-posture"},{"title":"Gmail \u0026 Yahoo Bulk-Sender Requirements as a Compliance Posture","href":"/compliance/email-bulk-sender-requirements"},{"title":"List-Unsubscribe Header Posture for Email Deliverability","href":"/compliance/email-list-unsubscribe-posture"},{"title":"Canada PIPEDA Posture Guide","href":"/compliance/pipeda-canada"},{"title":"Quebec Law 25 Posture Guide","href":"/compliance/quebec-law-25-posture"},{"title":"CASL (Canada's Anti-Spam Legislation) for Commercial Email","href":"/compliance/casl-canada-anti-spam"},{"title":"Australia: Spam Act 2003 and the Do Not Call Register","href":"/compliance/au-spam-act"},{"title":"New Zealand: Unsolicited Electronic Messages Act 2007","href":"/compliance/nz-uem-act-sender-rules"},{"title":"DLT-India Onboarding","href":"/compliance/dlt-india"},{"title":"India DPDP Act 2023 Posture Guide","href":"/compliance/dpdp-india"},{"title":"Philippines NTC Sender Rules","href":"/compliance/philippines-sender-rules"},{"title":"Vietnam MIC Sender Registration + Marketing Rules","href":"/compliance/vietnam-mic-sender-rules"},{"title":"Mexico NOM-184 Consent Posture","href":"/compliance/mx-nom-184-consent"},{"title":"Mexico LFPDPPP Data-Protection Posture","href":"/compliance/mexico-lfpdppp-posture"},{"title":"Colombia Habeas Data + CRC Sender Rules","href":"/compliance/colombia-habeas-data-rules"},{"title":"Chile Ley 21.719 Data-Protection Rules","href":"/compliance/chile-ley-21719-data-protection"},{"title":"Peru Ley 29733 Data-Protection Rules","href":"/compliance/peru-ley-29733-data-protection"},{"title":"UK PECR and ePrivacy for Marketing Sends and Calls","href":"/compliance/uk-pecr-eprivacy"},{"title":"Brazil LGPD + Anatel Sender Posture","href":"/compliance/lgpd-brazil"},{"title":"Brazil Anatel Sender-ID Registration Rules","href":"/compliance/brazil-anatel-sender-rules"},{"title":"Brazil A2P Messaging: Anatel, LGPD and WhatsApp","href":"/compliance/brazil-a2p-sms-anatel-lgpd-2026"},{"title":"France Marketing SMS Rules","href":"/compliance/fr-marketing-sms-rules"},{"title":"Spain AEPD + LGT Marketing Rules","href":"/compliance/spain-aepd-lgt-rules"},{"title":"Japan APPI (Act on Protection of Personal Information)","href":"/compliance/japan-appi"},{"title":"Singapore and Thailand PDPA Posture","href":"/compliance/pdpa-singapore-thailand"},{"title":"Singapore PDPA (PDPC SG + DNC Register)","href":"/compliance/singapore-pdpa"},{"title":"Thailand PDPA (PDPA B.E. 2562 + PDPC Thailand)","href":"/compliance/thailand-pdpa"},{"title":"South Korea PIPA + KISA Opt-Out Posture","href":"/compliance/south-korea-pipa"},{"title":"Germany SMS \u0026 Voice Marketing Rules (UWG + BNetzA)","href":"/compliance/germany-uwg-bnetza"},{"title":"Austria TKG 2021 + RTR/DSB Sender Rules","href":"/compliance/austria-tkg-rtr-dsb-sender-rules"},{"title":"Switzerland Revised FADP + UCA Sender Rules","href":"/compliance/switzerland-fadp-ucw-sender-rules"},{"title":"Poland UKE + RODO Sender Rules","href":"/compliance/poland-uke-rodo-sender-rules"},{"title":"Netherlands Number \u0026 Sender Rules (ACM)","href":"/compliance/netherlands-acm-rules"},{"title":"Belgium BIPT + GBA Sender Rules","href":"/compliance/belgium-bipt-gba-sender-rules"},{"title":"Ireland Number \u0026 Sender Rules (ComReg + DPC)","href":"/compliance/ireland-comreg-dpc-sender-rules"},{"title":"Finland Number \u0026 Sender Rules (Traficom, formerly FICORA)","href":"/compliance/finland-ficora-rules"},{"title":"Sweden Number \u0026 Sender Rules (PTS)","href":"/compliance/sweden-pts-rules"},{"title":"Denmark Marketing Act Sender Rules (Markedsføringsloven, Datatilsynet)","href":"/compliance/denmark-marketing-act-sender-rules"},{"title":"Norway Marketing Act Sender Rules (Markedsføringsloven, Nkom)","href":"/compliance/norway-marketing-act-sender-rules"},{"title":"Portugal ePrivacy + CNPD Sender Rules (Lei 41/2004)","href":"/compliance/portugal-eprivacy-cnpd-sender-rules"},{"title":"Indonesia KOMDIGI Sender \u0026 Marketing Rules","href":"/compliance/indonesia-komdigi-sender-rules"},{"title":"Italy AGCOM + GDPR Sender Rules","href":"/compliance/italy-agcom-sender-rules"},{"title":"South Africa POPIA Posture","href":"/compliance/south-africa-popia"},{"title":"Turkey: KVVK and BTK Sender-ID Rules","href":"/compliance/turkey-kvkk-btk"},{"title":"Uae tdra sender rules","href":"/compliance/uae-tdra-sender-rules"},{"title":"Saudi Arabia CST Sender \u0026 Marketing Rules","href":"/compliance/saudi-arabia-cst-sender-rules"},{"title":"Malaysia MCMC Sender \u0026 Marketing Rules","href":"/compliance/malaysia-mcmc-sender-rules"},{"title":"Egypt NTRA Sender \u0026 Marketing Rules","href":"/compliance/egypt-ntra-sender-rules"},{"title":"Nigeria NCC Sender \u0026 Marketing Rules","href":"/compliance/nigeria-ncc-sender-rules"},{"title":"Kenya CA Sender \u0026 Marketing Rules","href":"/compliance/kenya-ca-sender-rules"},{"title":"Israel Sender \u0026 Marketing Rules (Spam Law 2008)","href":"/compliance/israel-isa-sender-rules"},{"title":"Singapore SGNIC Sender-ID Registration Rules","href":"/compliance/singapore-sgnic-sender-rules"},{"title":"Hong Kong PCPD + OFCA Sender Rules","href":"/compliance/hong-kong-pcpd-ofca-sender-rules"},{"title":"Long-Tail Market FAQ: KVVK, PIPA, APPI, POPIA, PDPA","href":"/compliance/long-tail-market-faq"},{"title":"Compliance evidence binder","href":"/compliance/evidence-binder"},{"title":"TCPA Evidence Pack in the Binder","href":"/compliance/tcpa-evidence-binder"},{"title":"Compliance activation bundles","href":"/compliance/plugin-marketplace"},{"title":"Vertical bundles: activation lifecycle semantics","href":"/compliance/vertical-bundles-activation-semantics"},{"title":"Troubleshooting: vertical-bundle activations duplicated, checklist stuck, or version-frozen","href":"/troubleshooting/vertical-bundle-activation-duplicates"},{"title":"Compliance endpoint permissions: the role matrix","href":"/troubleshooting/compliance-endpoint-permissions"},{"title":"TCPA Known-Litigator Gate","href":"/compliance/tcpa-known-litigator"},{"title":"Send Gates: BAA, Quiet Hours, DNC, RND, RMD, Emergency Codes, DNO \u0026 Country Rate","href":"/compliance/send-gates"},{"title":"Emergency Stop: The Org-Wide Outbound Halt","href":"/compliance/emergency-stop"},{"title":"Quiet-Hours Preview: Channel-by-Channel Semantics","href":"/compliance/quiet-hours-preview"},{"title":"Emergency Stop Runbook: The Org-Wide Kill Switch","href":"/guides/compliance-emergency-stop"},{"title":"Preference center: the public opt-in/opt-out page","href":"/guides/preference-center-opt-out-page"},{"title":"Choose your suppression entry point: CSV import, Consent API, or Preference Center","href":"/guides/suppression-three-entry-points"},{"title":"Reconcile suppression across email and phone","href":"/guides/compliance-multi-address-suppression-reconciliation"},{"title":"Pre-Send Policy Scanner \u0026 DLP","href":"/compliance/policy-scanner"},{"title":"Spam-Keyword Deliverability Classifier","href":"/compliance/spam-keywords"},{"title":"AI Brand-Safety Scan","href":"/compliance/ai-brand-safety-scan"},{"title":"DLP scanner — data classes \u0026 strict mode","href":"/compliance/dlp-scanner"},{"title":"Inbox AI privacy — keep message content off the LLM","href":"/compliance/inbox-ai-privacy"},{"title":"FCC Robocall Mitigation Database (RMD): Filing Lifecycle","href":"/compliance/rmd-registration"},{"title":"FCC Robocall Mitigation Database (RMD) certification","href":"/guides/compliance-rmd-robocall-mitigation"},{"title":"Honeypot trap DIDs and the caller-reputation feed","href":"/guides/honeypot-registry-operations"},{"title":"ITG Traceback: Handling Requests for Originating Numbers","href":"/compliance/itg-traceback"},{"title":"DNC Scrubbing: Sources, Freshness, and the Check Endpoint","href":"/compliance/dnc-scrub"},{"title":"Short-code preflight: checks and remediation","href":"/compliance/shortcode-preflight"},{"title":"Carrier Deactivation (Churn) Scrub: List Hygiene Against Carrier Disconnects","href":"/compliance/deactivation-scrub"},{"title":"Finalize-and-purge runbook: the 24-hour recording lifecycle after deactivation","href":"/guides/deactivation-scrub-minimization-runbook"},{"title":"Recycled-Number Complaint Hygiene: Deactivation, RND, and the List Scrub Working Together","href":"/guides/compliance-recycled-number-hygiene-runbook"},{"title":"RCS Universal Profile 3.0 rich deep-link guardrails","href":"/compliance/rcs-up3-guardrails"},{"title":"Report apparent CSAM to the NCMEC CyberTipline","href":"/guides/media-csam-reporting-runbook"},{"title":"Batch DNC Pre-Flight Scrubbing","href":"/guides/dnc-preflight-scrub"},{"title":"List-Hygiene Projection: DNC Suppression on the Pre-Flight Preview","href":"/guides/campaign-list-hygiene-projection"},{"title":"RND Safe-Harbor Pre-Contact Number Scrubbing","href":"/guides/rnd-safe-harbor-preflight"},{"title":"RND Scrub: FCC Reassigned Numbers Database Reference","href":"/compliance/rnd-scrub"},{"title":"US Calling Windows: Federal TCPA + State Overlays","href":"/compliance/state-calling-windows"},{"title":"Number Timezone and State Resolution","href":"/compliance/number-timezone-resolution"},{"title":"Emergency Calling: Kari's Law and RAY BAUM'S Act Posture","href":"/compliance/emergency-calling-and-karis-ray-baums-posture"},{"title":"Voice Guard: the Federal Dialing-Window Decision Check","href":"/compliance/voice-guard"},{"title":"The sole platform-global compliance guard (invariant #68)","href":"/compliance/invariant-68-explainer"},{"title":"Voice Guard Sentinel: the Observability Contract","href":"/compliance/voice-guard-sentinel-observability"},{"title":"Voice Guard Observability: the Deep-Dive Runbook","href":"/compliance/voice-guard-observability-deep-dive"},{"title":"Voice traffic-lane resolution at the federal dial gate","href":"/compliance/voice-traffic-lane-resolution"},{"title":"Dialer Abandoned-Call Safe Harbor","href":"/compliance/dialer-abandoned-call-safe-harbor"},{"title":"UK Ofcom Dropped-Call Posture","href":"/compliance/uk-ofcom-abandoned-call-posture"},{"title":"Troubleshoot a pending number or Sender ID","href":"/compliance/troubleshooting-pending-gated-surfaces"},{"title":"Troubleshoot a 'blocked' send — map the code to the gate","href":"/compliance/troubleshooting-blocked-class-errors"},{"title":"Compliance profile lifecycle errors — INCOMPLETE, REQUIRED, NOT_APPROVED, LOCKED, IN_USE","href":"/compliance/compliance-profile-lifecycle-errors"},{"title":"Carrier rejection feedback: reading your rejection reason and fixing it","href":"/compliance/carrier-rejection-feedback"},{"title":"Compliance send-gate error codes — decide the gate, own the fix, re-verify","href":"/compliance/troubleshooting-compliance-error-codes"},{"title":"Sends blocked by consent gates — 403 consent_required","href":"/troubleshooting/consent-required-blocked-sends"},{"title":"Compliance-gate error codes FAQ","href":"/compliance/compliance-gate-error-codes-faq"},{"title":"Send-gate decision fork — which check rejected your send","href":"/compliance/send-gate-decision-fork"},{"title":"The send-gate evaluation chain — which gate fires, in which order","href":"/compliance/send-gate-evaluation-chain"},{"title":"Run a quarterly compliance posture review","href":"/guides/compliance-posture-quarterly-review"},{"title":"Operating Compliance-Health Scores as an Early-Warning Signal","href":"/guides/compliance-health-alerting-runbook"},{"title":"Your first compliance posture, end to end: from tenant-owned controls to a sealed evidence binder","href":"/guides/compliance-first-evidence-binder-walkthrough"},{"title":"Assemble and seal an evidence binder, read gated surface verdicts","href":"/guides/compliance-evidence-binder"},{"title":"Fulfill a DSAR and operate the breach-incident register","href":"/guides/compliance-dsar-breach-register"},{"title":"Run the privacy register — ROPA intake, DPIA screening, and the Art.30 export","href":"/guides/compliance-privacy-register"},{"title":"Work a Fraud Shield alert end to end","href":"/guides/compliance-fraud-shield"},{"title":"Deploy the public self-service DSAR intake portal","href":"/guides/self-service-dsar-portal"},{"title":"DSAR Self-Service Portal End-to-End","href":"/guides/dsar-portal-setup"},{"title":"Execute the DPA and BAA, then manage per-call recording consent","href":"/guides/compliance-dpa-baa-recording-consent"},{"title":"Legal holds: preserve recordings and message threads from retention sweeps","href":"/guides/compliance-legal-hold"},{"title":"Third-party archive connectors: deliver records to Smarsh, Global Relay, or Bloomberg Vault","href":"/guides/compliance-archive-connectors"},{"title":"Navigating the Settings → Compliance Hub","href":"/guides/compliance-hub-navigation"},{"title":"Upload and manage compliance documents","href":"/guides/settings-compliance-documents-console"},{"title":"Compliance Translation Parity Tracker","href":"/translation-parity-compliance"}]},{"group":"Legal","pages":[{"title":"Legal index","href":"/legal/index"},{"title":"Open source attribution","href":"/legal/attribution"}]},{"group":"Brand \u0026 press","pages":[{"title":"Press and brand resources","href":"/press-kit"},{"title":"How to use the press kit","href":"/press-kit-usage-guide"}]},{"group":"Tutorials","pages":[{"title":"Compliance integration recipes","href":"/tutorials/compliance-integration-recipes"}]},{"group":"Changelog","pages":[{"title":"Orbit changelog: product updates and API changes","href":"/changelog"}]}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/whatsapp/getting-started"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/overview"}]},{"tab":"SDKs","pages":[{"title":"SDKs","href":"/sdks"}]},{"tab":"Reference","pages":[{"title":"Reference","href":"/reference/programmable-voice-dsl"}]}]},"basePath":"","title":"Quiet Hours FAQ: Org Gate vs. Campaign Fallback vs. Preview - Devotel Orbit Documentation","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":[],"chunks":[]}