Batch & Campaign Calling
Batch calling lets you run an outbound campaign to a list of recipients. Each recipient gets a personalized call based on the dynamic variables you supply (name, service, main goal, etc.), and you can run the batch sequentially (one at a time) or in parallel.
Getting here
In NZ Leads, go to Voice Agent → Batch Calls.
You’ll need a Batch Calling Agent configured first. See Agent Configuration.
Creating a batch
Click New Batch
In Batch Calls, click New Batch.
Pick the agent and origin number
- Agent — select the Batch Calling Agent that will handle all calls in this batch.
- Origin phone number — a phone number assigned to the agent with Use for outbound enabled. The country code of this number must match the country code of every recipient in the batch.
Name the batch
Any descriptive label (e.g., “Q2 Maintenance Reminders — California”). Shown in the Batch Calls list.
Add recipients
Each recipient is one row with:
- to_number — the phone number to call, in E.164 format (e.g.,
+19095551234). - main_goal (dynamic variable) — the personalized goal for this specific call. Replaces the agent’s default main goal for this recipient.
- Any custom variables — add your own keys/values to personalize further. For example,
service_title,last_visit_date,discount_code. Reference them in the Main Goal using{{your_key}}placeholders.
Trial plans are limited to 100 recipients per batch. Upgrade for larger campaigns.
Example recipient:
to_number: +19095551234
main_goal: Confirm the customer still has the water heater we installed in 2023 and offer a maintenance visit.
service_title: Water Heater Maintenance
last_visit_date: 2023-08-14(Optional) Set agent override per task
You can override the agent for individual tasks inside the batch if you need a different voice or a tweaked prompt for a subset of recipients.
Calling Mode
Pick one of two sending modes:
- Standard (default) — all calls are dispatched at once, up to the limits of the agent’s outbound capacity. Use Standard when you want to burn through a list quickly and there’s no coordination needed between calls.
- Sequential — one call at a time. Each call only starts after the previous one ends. Use Sequential when the call outcome often produces a scheduling or bridging action your team needs to handle before the next call.
When Sequential is selected, an extra field appears:
- Hold after human transfer (minutes) — how long to pause before calling the next recipient if the previous call was transferred to a human. Default 10 minutes. Minimum 0. This only applies after transfers — when a call ends normally, the next one starts immediately.
Review and launch
Click Start to launch the batch. The status changes to ongoing.
Statuses
- planned — the batch is saved but hasn’t started yet.
- ongoing — the batch is currently dialing.
- sent — the batch completed all recipients.
- stopped — the batch was paused or cancelled before all recipients were called.
Managing a running batch
From the Batch Calls list you can:
- Pause an ongoing batch — calls stop, recipients not yet called are held.
- Resume a paused batch — calls continue from where they left off.
- Cancel a batch — no more calls are made. Recipients already called are still recorded.
- Delete a completed or cancelled batch — removes it from the list (the underlying call logs are preserved).
Stopping a sequential batch leaves partial progress — some recipients will have been called, others won’t. Review the individual call logs before deciding whether to resume or start a fresh batch.
Dynamic variables in prompts
Every recipient row can include any number of custom variables. Reference them anywhere in the agent’s Main Goal, Closing Sentences, or Custom Rules using {{key_name}} syntax.
Example Main Goal (per recipient):
Remind {{customer_name}} that their annual tune-up is due, reference the service done on {{last_visit_date}}, and offer a slot in the next 10 days.
Example recipient row:
to_number: +19095551234
customer_name: John
last_visit_date: August 2024
The agent says “Hi John, we did your annual tune-up back in August 2024…”.
Call hours
Sequential batches respect the agent’s Timing (call hours). If the transfer hold pushes the next call outside call hours, it waits until call hours resume.
Standard (parallel) batches are constrained by capacity but also respect call hours — calls won’t be placed outside configured windows.
Reviewing results
Every call in the batch appears in Call Logs, filterable by the batch name. For each call you get:
- Transcript and recording.
- AI summary including the “Callback: Yes/No” flag.
- Extracted data — customer name, phone, email, address.
- Appointment booked (if the agent completed a booking).
- Disconnection reason and duration.
See Call Logs & Analytics for filters, marking, and export.
Best practices
- Match country codes. The origin phone number’s country code must match every recipient’s country code. Mixed-country batches should be split into separate batches.
- Start small. Run a 10–20 recipient test batch with the same prompt and voice you plan to use at scale. Review the transcripts before going big.
- Use Sequential when transfers trigger manual work. If a transferred call kicks off a human task (dispatching a technician, preparing a quote), Sequential with a 10–15 minute transfer hold gives your team space before the next call lands.
- Use Standard for awareness campaigns. If the batch is announcing a promotion or leaving voicemails, Standard is faster and fine.
- Complete Trust Hub first. For US campaigns, campaigns without a configured Trust Hub profile get flagged as spam at much higher rates. See Caller ID & Trust Hub.
Troubleshooting
The batch won’t start.
- Confirm the origin phone number has Use for outbound enabled and is assigned to the chosen agent.
- Confirm every recipient phone is in E.164 format.
- Confirm no recipient has a country code that differs from the origin number’s country code.
The batch is paused automatically. The batch pauses if it hits the configured time outside call hours and resumes when call hours begin again.
Some recipients were skipped. Check the Call Logs for that batch — the skipped recipients will have a status (failed, busy, no-answer, invalid-number) explaining what happened.
Personalization isn’t showing up.
The placeholder keys in the Main Goal must match the variable keys in the recipient rows exactly (case-sensitive). {{customer_name}} in the goal requires customer_name in the recipient, not name or CustomerName.
Questions? Email support@nzleads.com.