SMS quiet hours are periods when a messaging program should not deliver marketing texts because law, provider/carrier policy, or the sender’s own customer-experience rules restrict outreach at that local time.
SMS quiet hours- SMS quiet hours
- The federal baseline is not the whole rulebook
- Resolve the recipient’s local time
- Decide at send time, not campaign creation
- Defer versus drop
- Marketing versus requested/operational messages
- Timezone confidence should be a first-class field
- Policy versioning makes audits possible
- Merchant rules can be intentionally stricter
- Daylight-saving changes are scheduling events
- Unknown location should produce an explicit policy outcome
- Quiet-hours tests need boundary cases
- What does this page teach beyond a generic glossary definition?
- Worked example
- What SMS quiet hours requires
- A practical SMS quiet hours rollout
SMS quiet hours
The operational problem is not “what time is it on our server?” It is: what rules apply to this message for this recipient, and what time is it where the recipient is?
The federal baseline is not the whole rulebook
The FCC’s current TCPA implementing rules include the familiar federal restriction against telephone solicitations to residential subscribers before 8:00 a.m. or after 9:00 p.m. local time at the called party’s location. FCC rules also extend specified protections to wireless numbers.
That baseline is useful, but a marketer should not turn it into the claim “all US SMS is legally safe from 8:00 a.m. to 9:00 p.m.” State laws can impose different or additional requirements. Carrier and messaging-provider policies may be stricter. A merchant may deliberately choose an even narrower delivery window. For this reason, a durable platform should model quiet hours as policy inputs, not hard-code one national range forever.
Resolve the recipient’s local time
The phrase “local time” makes timezone handling a compliance feature. Possible signals include:
- an explicit customer timezone captured from the storefront or account
- shipping/billing geography when appropriate and reliable
- phone-number geography as a weak fallback, not a guarantee
- recent event/device timezone when lawfully and reliably available
Phone prefixes are not proof of current location. People port numbers and travel. A platform should attach a confidence level to inferred timezone and choose a conservative fallback when location is uncertain.
Daylight-saving changes also matter. Store a canonical timezone such as America/New_York, not merely a fixed UTC-5 offset, so the scheduler can apply daylight-saving transitions correctly.
Decide at send time, not campaign creation
Suppose a campaign is built at noon Singapore time for US recipients. It is tempting to compute all send times once and enqueue them. A safer decision for each message is:
The strictest window wins, decided fresh at send time
- YesSEND NOWRecipient is eligible and inside the window
- No, still valid before expiryDEFERHold for the next allowed local time
- No, would be stale by thenDROPNext allowed time exceeds message expiry
This also handles long queues. A worker reaching a recipient 2 hours later should evaluate the actual current local time, not the time at which the campaign audience was computed.
Defer versus drop
Not every blocked message should simply be delayed. A weekend sale campaign can usually wait until the next allowed morning. A “flash sale ends in 30 minutes” text that becomes eligible 8 hours later may be useless or misleading. The campaign should define an expiry time as well as a delivery window. A scheduling decision can therefore produce 3 outcomes:
- SEND NOW: recipient is eligible and inside the window
- DEFER: hold until the next allowed local time while the content remains valid
- DROP: message would be stale before it can be lawfully/politely delivered
Marketing versus requested/operational messages
Do not assume every message class has identical timing treatment. A requested security code, fraud alert or delivery exception serves a different purpose from a promotional campaign. Applicable law and provider rules can distinguish message classes.
The product should carry the message purpose as structured metadata so timing policy can make the correct decision. Avoid letting a marketer relabel a promotion as “transactional” merely to bypass quiet hours.
Timezone confidence should be a first-class field
A recipient-local scheduler should know how it knows the timezone. For example:
explicit_profile_timezone: high confidence- recent device/event timezone: medium to high confidence depending on source
- shipping address: useful for a current order but not necessarily current physical location
- phone-number area code: low confidence because numbers are portable and people travel
Store both the timezone and provenance/confidence. If the system is uncertain near a boundary, use a conservative policy rather than guessing in favor of sending.
Policy versioning makes audits possible
Quiet-hour rules can change after a campaign was created. Record the policy version used at the final decision. A send-decision record can say: > recipient timezone = America/Chicago; evaluated 2026-09-14 20:14 local; merchant window v3 = 09:00-20:00; result = defer until 2026-09-15 09:00.
This is much more useful than “message delayed by compliance.” It also lets a business reproduce why 2 recipients in the same campaign were treated differently.
Merchant rules can be intentionally stricter
A brand may choose not to send promotional messages on Sunday mornings, public holidays, or after 7 p.m. even where law/provider rules would permit them. These are legitimate customer-experience policies.
Store them separately from legal constraints so the UI can explain the reason accurately. “Deferred by merchant quiet hours” should not be rendered as “illegal to send.”
Daylight-saving changes are scheduling events
A job deferred until “9:00 a.m. local time” should stay attached to the recipient’s timezone, not to a fixed UTC offset calculated days earlier. When daylight-saving time changes, the UTC instant representing 9:00 a.m. can change.
For near-term jobs, storing a timezone-aware not_before plus the policy inputs used to derive it is usually enough. For long-running recurring programs, recompute local eligibility from the timezone identifier at each occurrence instead of assuming yesterday’s UTC offset remains valid.
Unknown location should produce an explicit policy outcome
Some contacts have no trustworthy recipient timezone. Hiding that uncertainty behind the account’s default timezone can cause a campaign to land during the recipient’s night. Define a merchant/platform policy for unknowns, for example:
- defer until a conservative globally safe window
- require a reliable timezone before promotional SMS
- use a documented low-confidence fallback and widen quiet hours
- exclude the contact from scheduled marketing while still allowing separately governed requested/operational messages
Whichever approach is chosen, record timezone_source=unknown/fallback in the decision trace. That makes the safety tradeoff visible rather than accidental.
Quiet-hours tests need boundary cases
Unit and integration tests should include exactly-at-open, exactly-at-close, daylight-saving transitions, jobs created before midnight and executed after midnight, and customers whose timezone changes between scheduling and dispatch. Timing policy is simple in a diagram and surprisingly easy to break in a distributed queue.
What does this page teach beyond a generic glossary definition?
It teaches quiet hours as a recipient-local policy intersection. The correct window is the strictest applicable combination of federal baseline, state overlay, provider/carrier policy and merchant preference, evaluated close to send time with timezone confidence and message expiry.
> This page does not provide a 50-state legal chart and is not legal advice. State telemarketing rules change frequently; businesses should maintain current legal guidance for the states in which they operate.
Worked example
A store schedules a new-product promotion at 8:30 p.m. Eastern.
- Recipient A is in New York, and the merchant’s own window ends at 8:00 p.m. The message is deferred even though the federal baseline extends later
- Recipient B is in another state with an applicable stricter rule. The state rule controls
- Recipient C is in California. The scheduler evaluates California local time and the policies that apply there, rather than using the campaign owner’s timezone
The campaign object is one thing; delivery eligibility is recipient-specific.
What SMS quiet hours requires
Federal baseline
Apply the federal restrictions relevant to the message and recipient.
State-law overlays
Some states have “mini-TCPA” or telemarketing rules with different definitions, windows, holidays, registration requirements or other constraints. Those rules change over time. A static 50-state table inside product code or a glossary article quickly becomes dangerous.
A better product architecture allows a maintained policy service or compliance configuration to add state-specific restrictions without changing the underlying scheduler.
Carrier/provider policy
Your CPaaS, messaging partner or carrier ecosystem may impose timing or content requirements beyond the statutory minimum. These are operational conditions of using the route, even when they are not themselves statutes.
Merchant-defined quiet hours
A brand may choose, for example, 9:00 a.m. to 8:00 p.m. local time because late promotional texts are annoying. The platform should apply the strictest applicable rule, not weaken a merchant’s chosen window because a broader legal baseline exists.
A practical SMS quiet hours rollout
One step.
- 01Scheduling at scaleFor millions of recipients, do not create one long-running timer per contact. A common architecture calculates a
not_beforetime after applying recipient-local policy, stores the job in a durable queue, and still performs a final check when the job is claimed. That second check protects against: - opt-out after scheduling; - changed timezone/geography; - policy updates; - daylight-saving boundaries; - a campaign pause; - content expiry. Quiet-hours scheduling and permission gating should therefore meet at the final dispatch step rather than live in isolated subsystems.
Every app on every plan. Connect your store and switch on the flows in an evening.