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

# Scheduling

> Weekly calling windows, timezones, and legal dialing-hours enforcement

The **Schedule** tab controls *when* the campaign dials. You set a timezone and one calling window per weekday; the platform overlays legal dialing-hours rules on top and enforces both automatically.

## Configure the Schedule

1. Select a **Timezone** (North American timezones are currently supported; search by name or abbreviation).
2. In the **Calling Hours** table, toggle each weekday **Active** and set its **Start** and **End** times (24-hour format).

Until a timezone is chosen, the day rows stay locked. When you enable a day it defaults to the full legal window for that timezone (for example 09:00–21:00), and the time pickers only offer legally allowed times.

<Note>
  The end time is exclusive — a 09:00–17:00 window places its last dial before 17:00. Changing the timezone clears the day rows so you can re-confirm each window under the new timezone's legal calendar.
</Note>

## Legal Dialing Hours

Regulations restrict when automated calls may be placed. The scheduler enforces them at two levels:

* **Campaign level** — the Schedule tab hides weekdays that are not in the legal calling calendar for your chosen timezone, restricts the pickers to legal times, and clamps saved times back into legal bounds if rules change.
* **Contact level** — before every dial, the platform resolves each contact's *local* timezone (from their ZIP code, falling back to their phone number's area code) and only dials inside the calling window that applies to *them*. Contacts outside their window are queued, not skipped.

Some jurisdictions also impose frequency caps (for example, Florida's limit of 3 calls per 24 hours). Contacts held by a frequency cap show as "Frequency capped" in monitoring and are retried automatically when the window expires.

## What Happens at the Window Edges

* **Launching outside the window** — the launch succeeds and the campaign is queued with a "Campaign queued — dialing starts …" message. Dialing begins automatically when the window opens.
* **Window closes mid-run** — the run moves to **Window Closed**; calls already in progress finish naturally, and no new dials are placed.
* **Window opens** — the run resumes automatically. No manual action is ever needed for schedule pauses (the Resume button is intentionally hidden for them).

## Callbacks and the Schedule

When a contact asks to be called back at a specific time, the AI agent schedules exactly one callback attempt at the requested time, interpreted in the **contact's** timezone:

* Callbacks must be within **30 days**.
* Requests sooner than 5 minutes out are scheduled at the earliest allowed time rather than dropped.
* The agent knows your calling hours and steers contacts toward times inside the window.

## Requirements to Save

The schedule autosaves once it is valid: a timezone is selected, at least one day is active, and every active day has a valid start-before-end range. A guard banner ("Select a timezone and at least one day to save your schedule.") shows while the schedule is incomplete — and **Schedule configured** is one of the launch checklist gates.

## Where to go next

<Columns cols={2}>
  <Card title="Launching & Live Monitoring" icon="activity" href="/campaigns/launching-and-monitoring">
    The launch checklist and real-time run dashboard.
  </Card>

  <Card title="Compliance & DNC" icon="shield-check" href="/campaigns/compliance-and-dnc">
    How per-contact legal windows and consent checks gate each dial.
  </Card>
</Columns>
