Outbound Calls
Make your AI agents proactively reach out to customers by scheduling outbound voice calls. Whether you’re conducting surveys, sending appointment reminders, qualifying leads, or running customer outreach campaigns, Dasha BlackBox provides both dashboard and API-based tools for scheduling and managing outbound calls at scale.What are Outbound Calls?
Outbound calls are voice calls initiated by your AI agent to call recipients you specify. Unlike inbound calls where customers call your agent, outbound calls have your agent proactively dial phone numbers on your behalf.Common Use Cases
Sales and Lead Qualification- Call leads from CRM to qualify interest
- Schedule product demos automatically
- Follow up on abandoned carts
- Re-engage dormant customers
- Send appointment reminders (medical, service, consultations)
- Notify customers of delivery status
- Conduct satisfaction surveys after interactions
- Provide proactive support for known issues
- Mass notifications for critical alerts
- School closure announcements
- Service outage notifications
- Event reminders and confirmations
- Market research surveys
- Customer feedback collection
- Political polling
- Verification calls
Prerequisites
Before scheduling outbound calls, ensure you have:1. Configured Agent
Your agent must be:- Created and enabled (
isEnabled: true) - Tested and working via dashboard or widget testing
- Configured with appropriate prompts for outbound context
Use the Test & Deploy section in the agent creation wizard to verify your agent works correctly before scheduling real calls.
2. Caller ID Phone Number
You need a verified phone number for caller ID display: Why Caller ID Matters:- Recipients see this number when you call
- Improves answer rates (recognized numbers)
- Required by most carriers
- Compliance with telephony regulations
- Navigate to your agent’s Phone tab in the dashboard
- Add and verify a phone number via Twilio integration
- Number appears as
fromnumber on outbound calls
3. Valid Recipient Phone Numbers
Outbound calls require properly formatted phone numbers: Supported Formats:- E.164 format (recommended):
+1-555-123-4567 - SIP URIs:
sip:user@domain.com
- Must include country code
- Must be dialable from your carrier
- Should be active and in service
Scheduling Single Calls via Dashboard
Schedule individual outbound calls through the Dasha BlackBox dashboard.Step 1: Navigate to Agent Details
- Go to Agents page
- Click on the agent you want to use for outbound calls
- Navigate to the Calls tab
- Click “Schedule Outbound Call” button
Schedule outbound calls from the agent detail page
Step 2: Configure Call Parameters
Fill in the call scheduling form: Recipient Phone Number (required)- Enter phone number in E.164 format
- Example:
+1-555-123-4567 - Validates format on input
- Range: 0-10 (default: 5)
- Higher priority = earlier in queue
- Use for urgent calls or VIP customers
- Immediate: Call as soon as possible (default)
- Scheduled: Pick specific date and time
- Timezone: Uses agent’s configured timezone
- Maximum time to attempt the call
- Call canceled if not started by deadline
- Useful for time-sensitive offers or appointments
- JSON object with custom metadata
- Available in webhooks and transcripts
- Example: Customer ID, order number, campaign name
Step 3: Confirm and Schedule
- Review call parameters
- Click “Schedule Call”
- Call appears in Scheduled Calls list
- View status updates in real-time
Monitor scheduled calls in the calls queue
Queue Processing: Calls are processed by the DWRR (Dynamic Weighted Round Robin) scheduler based on priority, deadline, and agent availability.
Scheduling Single Calls via API
Schedule outbound calls programmatically using the REST API.Basic Call Scheduling
Schedule an immediate call to a single recipient:Scheduled Call with Deadline
Schedule a call for a specific time with a maximum deadline:Call with Custom Metadata
Include custom data for use in webhooks, transcripts, and analytics:- Available in all webhook payloads (
call.additionalData) - Visible in call transcripts and inspector
- Searchable in call results API
- Useful for CRM integration and tracking
Bulk Call Scheduling
Schedule hundreds or thousands of calls in a single API request.Bulk Scheduling Endpoint
UsePOST /api/v1/calls/bulk to schedule multiple calls at once:
Campaign Scheduling Example
Schedule a survey campaign to 500 customers:Handling Bulk Scheduling Errors
Check for failed calls in the response:- Invalid phone number format
- Duplicate call to same endpoint within short timeframe
- Agent disabled or deleted
- Concurrency limit reached
- Insufficient balance (if applicable)
Call Parameters Reference
Required Parameters
agentId (string)- UUID of the agent making the call
- Must be enabled and configured
- Example:
"550e8400-e29b-41d4-a716-446655440000"
- Recipient phone number in E.164 format
- Or SIP URI for VoIP calls
- Examples:
"+1-555-123-4567","sip:user@domain.com"
Optional Parameters
priority (integer, 0-10, default: 5)- Queue priority for this call
- Higher number = processed sooner
- Use for urgent calls or VIP customers
- Example:
8for high-priority appointment reminder
- Maximum time to start the call
- Call canceled if not started by this time
- Include timezone offset for accuracy
- Example:
"2025-10-20T17:00:00-05:00"
- Custom JSON metadata for this call
- Accessible in webhooks and transcripts
- No schema restrictions
- Example:
{ "customerId": "123", "campaignId": "fall_2025" }
- Timezone for deadline interpretation
- Uses agent timezone if not specified
- Example:
"America/New_York"
Call Queue Management
Monitor and manage scheduled calls in the queue.Viewing Scheduled Calls
Dashboard:- Navigate to Calls page
- Select Scheduled Calls tab
- Filter by status: “Queued”, “Pending”, “Created”
- Search by call ID or endpoint
Filter and search scheduled calls
API:
DWRR Scheduling Algorithm
Dasha BlackBox uses Dynamic Weighted Round Robin (DWRR) scheduling: How It Works:- Priority-based weighting: Higher priority = more queue weight
- Deadline awareness: Calls approaching deadline get priority boost
- Agent availability: Only schedules when agent has capacity
- Fair distribution: Prevents starvation of lower-priority calls
- Priority 10: Immediate processing (emergency)
- Priority 7-9: High priority (appointments, VIP)
- Priority 5-6: Normal priority (standard outreach)
- Priority 0-4: Low priority (bulk campaigns, surveys)
- Calls within 1 hour of deadline: +3 priority boost
- Calls within 15 minutes of deadline: +5 priority boost
- Missed deadline: Call automatically canceled
Queue Processing: Calls are processed continuously based on agent availability, concurrency limits, and priority weighting. Most calls start within 1-5 minutes of being queued.
Caller ID Configuration
Configure the phone number that appears as caller ID for outbound calls.Setting Outbound Number
Dashboard Configuration:- Go to agent Edit page
- Navigate to Phone tab
- Add phone number via Twilio Integration
- Verify ownership through Twilio
- Set as Outbound Caller ID
Caller ID Best Practices
Do:- ✅ Use local numbers (same area code as recipients)
- ✅ Verify number ownership with carrier
- ✅ Use consistent caller ID for brand recognition
- ✅ Include company name in CNAM (Caller Name) if possible
- ✅ Add number to Google Business listings
- ❌ Use spoofed or fake caller IDs
- ❌ Change caller ID frequently (confuses recipients)
- ❌ Use blocked/private caller ID
- ❌ Use invalid or unverified numbers
Call Timing and Scheduling
Control when outbound calls are made to maximize answer rates and compliance.Immediate vs Scheduled Calls
Immediate Calls (nodeadline specified)
- Queued immediately
- Processed as soon as agent available
- Subject to agent business hours (if configured)
- Typical start time: 1-5 minutes
deadline)
- Processed before deadline
- Respects agent availability schedule
- Automatically canceled if deadline passed
- Typical start time: Within 1 hour of deadline
Timezone Considerations
Agent Timezone (from agent schedule)- Used for interpreting business hours
- Default for call scheduling
- Example: Agent in
America/New_Yorkwon’t call during local night hours
timezone parameter)
- Overrides agent timezone for this call
- Useful for multi-timezone campaigns
- Example: Call West Coast customer at 9 AM Pacific, even if agent is in Eastern
Best Calling Times
Optimal Call Windows (based on industry data): Business Calls (B2B):- Best: 10 AM - 11 AM, 2 PM - 4 PM (recipient’s local time)
- Good: 9 AM - 10 AM, 4 PM - 5 PM
- Avoid: Before 9 AM, after 5 PM, lunch (12 PM - 1 PM)
- Best: 5 PM - 8 PM weekdays (after work)
- Good: 10 AM - 12 PM weekends
- Avoid: Early mornings (before 9 AM), late nights (after 9 PM)
- 24 hours before appointment
- 2 hours before appointment (if 24hr reminder missed)
Priority Levels Explained
Use priority to control queue processing order.Priority Scale (0-10)
| Priority | Use Case | Processing Time |
|---|---|---|
| 10 | Critical/Emergency | Immediate (highest) |
| 8-9 | High (VIP, Appointments) | under 5 minutes |
| 6-7 | Above Normal (Follow-ups) | under 15 minutes |
| 5 | Normal (Default) | under 30 minutes |
| 3-4 | Low (Surveys, Bulk) | under 1 hour |
| 0-2 | Lowest (Mass campaigns) | under 2 hours |
Priority Examples
Emergency Notification (Priority: 10)Canceling Scheduled Calls
Remove calls from the queue before they’re processed.Cancel via Dashboard
- Navigate to Calls page
- Select Scheduled Calls tab
- Find the call to cancel
- Click Remove button (trash icon)
- Confirm cancellation in dialog
Confirm call cancellation
Cancel via API
Single Call Cancellation:Cancellation Limitations: You can only cancel calls in “Queued”, “Pending”, or “Created” status. Calls already “InProgress” cannot be canceled via API.
Monitoring Outbound Calls
Track call status and results in real-time.Call Status Lifecycle
- Created: Call record created, not yet queued
- Queued: In scheduler queue, awaiting processing
- Pending: Being prepared for dialing
- InProgress: Currently calling/connected
- Completed: Call finished successfully
- Failed: Call failed (busy, no answer, error)
- Canceled: Removed from queue before starting
Dashboard Monitoring
Real-Time View:- Navigate to Dashboard for org-wide metrics
- Navigate to Calls page for detailed list
- Use Scheduled Calls tab for queue monitoring
- Use Past Calls tab for completed call results
- Total calls scheduled
- Calls currently in progress
- Completed calls count
- Failed calls count
- Average call duration
- Answer rate percentage
API Monitoring
Get Call Status:Webhook Notifications
Get real-time updates on call events via webhooks: Configure Webhooks in Agent:Best Practices
Compliance and Regulations
Do-Not-Call (DNC) Lists- Maintain internal DNC list
- Honor national DNC registries (US: donotcall.gov)
- Remove numbers upon request immediately
- Check numbers against DNC before scheduling
- Obtain express written consent for marketing calls
- Keep consent records with timestamps
- Provide opt-out mechanism in every call
- Honor opt-outs within 30 days
- US (TCPA): 8 AM - 9 PM recipient local time
- EU (GDPR): Business hours only, no weekends
- Check local regulations for your jurisdiction
- Disclose recording at start of call
- Obtain consent where required (two-party consent states)
- Secure storage of recordings
- Honor deletion requests
Optimizing Answer Rates
Call Timing:- Call during optimal hours for your audience
- Avoid meal times and very early/late hours
- Test different times and track answer rates
- Use local caller ID when possible
- Use local area code matching recipient
- Register business name with CNAM providers
- Maintain good reputation (low spam reports)
- Avoid frequent number changes
- Don’t retry immediately after busy/no-answer
- Wait at least 4 hours between retry attempts
- Maximum 3 attempts per number
- Track retry history in
additionalData
- Use recipient’s name in greeting (via
additionalData) - Reference recent interactions or purchases
- Tailor message to recipient’s interests
- Provide immediate value in introduction
Campaign Management
Segmentation:Error Handling and Retry Logic
Handling Failed Calls:- Busy: Retry after 4 hours
- No Answer: Retry after 24 hours, different time
- Invalid Number: Don’t retry, mark as invalid
- Network Error: Retry after 1 hour (transient)
- Max Retries: 3 attempts maximum
Troubleshooting
Common Outbound Call Issues
Calls Not Being Scheduled Symptoms:- API returns error on schedule attempt
- Calls don’t appear in queue
- Agent is disabled (
isEnabled: false) - Invalid phone number format
- Missing required parameters
- Exceeded rate limits
- Insufficient balance (if applicable)
- Calls remain “Queued” for extended time
- Never progress to “InProgress”
- Agent outside business hours (schedule configured)
- Concurrency limit reached
- Deadline passed (calls auto-canceled)
- Agent has connectivity issues
- Many calls marked “Failed: no-answer”
- Calls connect but recipient doesn’t stay on line
- Calling at wrong times
- Unrecognized caller ID (spam)
- Poor call quality
- Weak opening message
- Call during optimal hours (see Best Calling Times)
- Use local caller ID
- Register with CNAM providers
- Test agent voice quality via dashboard
- Refine opening message for clarity and value
- Status changes from “Queued” to “Failed” instantly
- No call attempt made
- Invalid destination number
- Blocked number (carrier or recipient)
- Telephony provider issue
- Missing caller ID configuration
Getting Support
If issues persist after troubleshooting:-
Gather Information:
- Call ID(s) experiencing issues
- Agent ID
- Timestamps of failures
- Error messages or API responses
-
Check Status Page:
- Visit status.dasha.ai
- Review recent incidents or maintenance
-
Contact Support:
- Email: support+blackbox@dasha.ai
- Include call IDs and reproduction steps
- Attach relevant logs or screenshots
Next Steps
Now that you understand outbound calling:- Configure caller ID in Phone Numbers
- Monitor call results with Call Management
- Set up webhooks for Call Events
- Analyze call data with Post-Call Analysis
- Review compliance with Production Checklist
API Cross-Refs
- POST
/api/v1/calls— Schedule single outbound call - POST
/api/v1/calls/bulk— Schedule bulk outbound calls - GET
/api/v1/calls/{callId}— Get call details - DELETE
/api/v1/calls/{callId}— Cancel scheduled call - GET
/api/v1/calls/queue/list— View call queue - GET
/api/v1/calls/statistics/statuses— Call statistics