Scheduling & Availability
Control when your agent is available to handle calls by configuring business hours and timezone settings. Scheduling ensures your agent only takes calls during appropriate times and manages call routing based on your configured hours.Overview
Agent scheduling allows you to:- Define business hours for each day of the week
- Set timezone for accurate call routing and scheduling
- Configure call handling for outside-hours requests
- Manage multiple time blocks per day for complex schedules
Scheduling is optional. If no schedule is configured, your agent will be available 24/7 when enabled.
When to Use Scheduling
Use scheduling when you need to:- Match business hours: Only accept calls during your organization’s operating hours
- Geographic alignment: Match agent availability to specific timezones
- Resource planning: Limit call volume during specific time windows
- Regional operations: Support different hours for different regions with multiple agents
Configuring Business Hours
Dashboard Configuration
Configure scheduling in the Schedule tab when creating or editing an agent:
Step 1: Set Timezone
Select the timezone for your agent’s schedule:- Click the Timezone dropdown
- Search for your timezone (e.g., “America/New_York”, “Europe/London”)
- Select the appropriate IANA timezone identifier
- US East Coast:
America/New_York - US West Coast:
America/Los_Angeles - US Central:
America/Chicago - UK:
Europe/London - Central Europe:
Europe/Paris - India:
Asia/Kolkata - Japan:
Asia/Tokyo - Australia (Sydney):
Australia/Sydney
Step 2: Configure Daily Hours
Set business hours for each day of the week: For each day (Monday-Sunday):- Toggle the day ON to enable it (enabling a day automatically adds a 00:00-23:59 slot)
- Click the time selectors to adjust Start Time and End Time
- Click ”+” button to add additional time blocks for split shifts
- Click ”×” button to remove a time block (if multiple exist)
- Use the Copy icon to duplicate this day’s schedule to other days
API Configuration
Configure scheduling programmatically when creating or updating agents:- Create with Schedule
- 24/7 Schedule
- Multiple Time Blocks
Schedule Data Structure
AgentSchedule Schema
Field Details
timezone (required)- Type:
string - Format: IANA timezone identifier
- Examples:
"America/New_York","Europe/London","Asia/Tokyo" - Required when schedule is configured
- Type:
TimeSlot[]ornull - Empty array
[]= Agent not available on this day - Array of time slots = Agent available during specified times
- If all days are empty arrays or null, backend applies 24/7 fallback
start: Start time of availability windowend: End time of availability window- Multiple time slots per day supported (for split shifts)
hour: 0-23 (24-hour format)minute: 0-59
Timezone Handling
Understanding Timezones
BlackBox uses IANA timezone identifiers (e.g., “America/New_York”) for accurate timezone handling: Why IANA Timezones?- Handles daylight saving time (DST) automatically
- More accurate than UTC offsets
- Accounts for historical timezone changes
- Consistent with modern web standards
| Region | Timezone Identifier | UTC Offset (Standard) |
|---|---|---|
| New York, USA | America/New_York | UTC-5 (EST) |
| Los Angeles, USA | America/Los_Angeles | UTC-8 (PST) |
| Chicago, USA | America/Chicago | UTC-6 (CST) |
| London, UK | Europe/London | UTC+0 (GMT) |
| Paris, France | Europe/Paris | UTC+1 (CET) |
| Tokyo, Japan | Asia/Tokyo | UTC+9 (JST) |
| Sydney, Australia | Australia/Sydney | UTC+10 (AEST) |
| Mumbai, India | Asia/Kolkata | UTC+5:30 (IST) |
DST Handling: The platform automatically adjusts for daylight saving time. You don’t need to update schedules when DST changes occur.
Scheduling Calls Across Timezones
When scheduling outbound calls to different timezones: Best Practices:- Set agent timezone to your business location
- Schedule calls using recipient’s local time
- Use deadline parameter in API calls to specify exact call time
- Consider caller timezone when choosing call windows
Managing Holidays
Since BlackBox does not provide a built-in holiday configuration UI, you can manage holidays using the following approaches:Option 1: Disable Agent Temporarily
Disable the agent programmatically for holidays:Option 2: Holiday Guard via Start Webhook
Use a start webhook to reject calls on specific dates:Best Practice: Maintain holiday lists in your external automation system rather than relying on platform-level configuration. This gives you more control and flexibility for managing downtime.
Call Routing & Behavior
Calls During Business Hours
When a call arrives within business hours:- Agent accepts the call immediately
- Call proceeds normally according to agent configuration
- Full conversation capabilities available
Calls Outside Business Hours
When a call arrives outside business hours: Inbound Calls:- The platform does not automatically reject inbound calls based on schedule
- Recommendation: Use a start webhook to handle after-hours inbound calls (see “Managing Holidays” section above)
- Alternative: Disable the agent entirely during after-hours periods
- Calls are enqueued even when outside agent working hours
- The scheduler calculates
nextScheduleTimebased on the agent’s schedule usingScheduleUtils.CalculateNextScheduleTimeWithTimezone - Calls remain in the queue with status
Createduntil working hours resume - When the scheduler runs during working hours and finds calls with
nextScheduleTime <= now, it checks if the current time is within working hours usingScheduleUtils.IsTimeWithinAgentWorkHours - If within working hours: Call status advances to
Pending→Queuedand is dispatched - If outside working hours but deadline not yet passed:
nextScheduleTimeis recalculated and the call waits - If the deadline is exceeded before working hours resume: Call is marked as
Canceled
- Business hours resume
- Agent becomes enabled
nextScheduleTimeis reached and current time is within working hours
- Calls are processed in DWRR (Dynamic Weighted Round Robin) order
- Earlier deadline = higher priority
- Respects call priority settings if configured
Common Scheduling Patterns
Pattern 1: Standard Business Hours (9-5, Mon-Fri)
Pattern 2: Retail Hours (Extended Weekends)
Pattern 3: Global Support (Follow-the-Sun)
Create multiple agents in different timezones:Pattern 4: Night Shift Coverage (Split Across Days)
Since the validator requiresstart < end within the same day, overnight coverage must be split into two separate time slots:
Overnight Coverage: Time slots cannot cross midnight. To cover overnight hours (e.g., 22:00-06:00), split into two slots: one ending at 23:59 on the first day, and another starting at 00:00 on the next day.
Best Practices
Scheduling Strategy
Do:- ✅ Set timezone to your business location
- ✅ Include buffer time before/after shifts for system processing
- ✅ Use multiple agents for 24/7 coverage instead of one agent
- ✅ Test schedule changes with a disabled agent first
- ✅ Document your schedule configuration for team reference
- ✅ Track holiday downtime in your external automation system
- ❌ Use UTC unless your business actually operates in UTC
- ❌ Configure overlapping time slots in the same day
- ❌ Forget to account for daylight saving time changes (platform handles automatically)
- ❌ Set unrealistic 24/7 availability on a single agent without redundancy
- ❌ Change schedules frequently without testing impact on queued calls
Performance Considerations
For High Call Volumes:- Configure multiple agents with overlapping schedules
- Use load balancing across agents
- Monitor queue depth during business hours
- Add capacity during peak hours (e.g., lunch time, early morning)
- Create region-specific agents with local timezones
- Use geographic call routing
- Maintain consistent hours in local time (e.g., always 9-5 in each region)
Maintenance Windows
When updating schedules on live agents:- Test first: Create test agent with new schedule
- Monitor impact: Check queued calls before applying
- Communicate: Notify team of schedule changes
- Gradual rollout: Update one agent at a time if using multiple
- Verify: Check agent availability after changes
Troubleshooting
Agent Not Taking Calls During Business Hours
Possible causes:- Agent is disabled (
isEnabled: false) - Timezone is incorrect (check against your location)
- Time slots are malformed (start >= end)
- Current day has empty array
[] - All days are empty, triggering 24/7 fallback (but agent is disabled)
Calls Being Rejected Unexpectedly
Possible causes:- Schedule recently changed
- Timezone mismatch (agent in different timezone than expected)
- Agent is disabled
- Verify timezone matches your location
- Check if agent is enabled
- Test with a disabled agent before applying changes
Timezone Issues
Symptoms:- Agent available at wrong times
- Scheduled calls running at unexpected hours
- Verify IANA timezone identifier is correct
- Check for DST transitions on problematic dates
- Use ISO 8601 format with timezone offset in API calls
Next Steps
Now that you understand scheduling:- Configure your agent schedule in the Agent Creation flow
- Schedule outbound calls using Outbound Calls
- Monitor call queue with Call Management
- Set up webhooks for outside-hours call handling in Webhooks Overview
API Cross-Refs
- POST
/api/v1/agents— Create agent with schedule - PUT
/api/v1/agents/{agentId}— Update agent schedule - GET
/api/v1/agents/{agentId}— View current schedule - POST
/api/v1/calls— Schedule calls with deadline - GET
/api/v1/calls/queue/list— View queued calls