Make Calls
Launching single tests or advanced bulk outbound campaigns via CSV.
The Make Calls interface is your command center for outbound traffic. Located in the sidebar, it allows you to bypass the API and trigger calls directly from the UI.
1. Single Call (Testing)
Designed for rapid QA. Use this to verify your Script logic before launching a campaign.
Select Campaign
Choose the Outbound Campaign. This loads the default Agent, Script, and Caller ID strategy.
Enter Destination
Enter the phone number in E.164 format (e.g., +1234567890).
Fill Variables
The system automatically detects variables in your script.
- Base Values: You can fill in default values (e.g.,
customer_name= "Test User") here.
Launch
Click Launch Call. The system places the call immediately.
2. Bulk Calls (CSV Upload)
The Bulk Call engine is designed for scale. You can upload thousands of contacts, and the system will process them according to your concurrency limits.
Base Configuration vs. Overrides
- Base Config: You set default variables in the UI (e.g.,
campaign_name= "Winter Sale"). - CSV Overrides: Any value in the CSV row overrides the base configuration for that specific call.
The CSV Schema
Iqra AI supports a sophisticated CSV format that allows you to change the Agent, Language, or Retries per row.
Required Column:
to_number: The destination phone number (International format).
Advanced Columns (Optional):
| Header | Description |
|---|---|
from_number_id | Override the Caller ID (Must be a valid UUID from your Numbers tab). |
dynamic_variables | A JSON object string containing specific variable values. |
override_agent_id | UUID of a different Agent to handle this specific call. |
override_agent_script_id | UUID of a different Script to run. |
override_agent_language_code | Force a language (e.g., en, ar) for this call. |
override_retry_on_call_declined | JSON configuration for retry logic. |
Example CSV Data
Notice how dynamic_variables accepts a JSON object for complex data injection.
to_number,dynamic_variables,override_agent_language_code
+96899999999,"{""first_name"": ""Ali"", ""balance"": 500}",en
+97150000000,"{""first_name"": ""Fatima"", ""balance"": 120}",arCSV Formatting
When putting JSON inside a CSV column, you must escape double quotes by doubling them (e.g., ""key"": ""value"").
Scheduling & Expiry
You don't have to call everyone right now. You can manage the Time Window of the blast.
1. Start Time
- Immediate: Begins processing the queue instantly.
- Scheduled: Holds the queue until a specific future date/time.
2. Max Schedule Try (Expiry)
This is a critical "Safety Switch."
- The Problem: You upload 5,000 leads at 4:00 PM. Your concurrency limit is 10 calls. The queue is slow. By 9:00 PM, the system is still dialing, disturbing people at night.
- The Solution: Set Max Schedule Try to
08:00 PM. - Behavior: If a queued call attempts to launch after 8:00 PM, the system cancels it automatically.
Monitoring Progress
Once launched, the job creates a Queue.
- Go to the Conversations Tab.
- Filter by Status: Queued.
- Concurrency: The system respects the limits defined in your Billing Plan. If you have 50 slots, it processes 50 rows at a time.