What are Source Lists?
A batch dials contacts, and source lists are where those contacts come from. Instead of loading a fixed set of numbers into a batch, you attach one or more of your contact lists to it. The scheduler then draws contacts from those lists according to the rules you set — which list gets called first, how many calls each list may use per day and in total, which Call Script and outbound number each list’s contacts get — and keeps drawing as the lists grow. Source lists are managed in the List allocation section at the top of a batch’s Settings tab. The same allocation also appears read-only on the Summary tab (as a Source lists card before the batch has run) and in the batch analytics once calls complete, so you can compare results list by list. Two ideas underpin everything on this page:- Lists are live feeds, not snapshots. While a batch’s scheduler is active, new contacts added to an attached list flow into the batch automatically.
- Each contact is queued once per batch. However many of the batch’s lists a contact belongs to, they get exactly one place in the queue.
Adding source lists to a batch
Open the batch’s Settings tab. The List allocation table has a row at the bottom with two ways to add a source:- Add lists — opens a searchable picker of your existing lists (with a Search lists… field). Each option shows the list name and its contact count; lists already attached are marked Added and can’t be selected twice.
- Drag & drop a CSV — the adjacent drop zone (“Drag & drop a CSV or browse to add a new list”) creates a brand-new list from a file and attaches it in one step. The Create list from CSV dialog lets you name the list, review and deselect parsed contacts, and optionally map extra CSV columns to typed custom variables before importing. Rows with invalid phone numbers are listed separately and skipped, and duplicate phone numbers within the file are imported once. Australian numbers are normalised to international format (for example
0412 345 678becomes+61412345678).
The List allocation table
The panel header explains the model: “How daily slots split across source lists. Lower priority numbers get scheduled first; daily and total caps limit how many contacts can be planned from each list.” Above the table, the Allocation mix bar shows each list’s share of the batch’s contacts.
The Total row sums contacts and quotas and holds the batch’s default script selector (No default script until you choose one). A contact whose list has no script override and whose batch has no default script is never dialled — the row simply waits — so always set at least a batch default script.
Priorities: which list gets called first
Priority is an ordering, not a share. When the scheduler fills each day’s call slots it works through eligible contacts in strict order:- List priority — all of priority 1’s eligible contacts are planned before priority 2 is touched.
- Order within the list — contacts are taken in the order they joined the queue.
Daily and total quotas
Quotas cap how much of the batch’s capacity a list may consume:- Daily Quota limits planned calls from the list per calendar day (in the batch’s timezone).
- Total Quota limits planned calls from the list across the batch’s lifetime.
Script overrides and precedence
Each list can send its contacts to a different Call Script, which is how one batch runs different conversations for different segments. The script used for a queued contact resolves in this order:- Contact-level assignment — a script set for that specific contact when it was added (see Adding Contacts to a Batch).
- List override — the Script column for the contact’s primary list.
- Batch default — the default script in the Total row.
Outbound number overrides
The Number column works the same way for caller ID. Each list can place its calls from a different outbound number — useful when one batch spans regions or brands. At the moment a call dials, the from-number resolves in this order:- List override — the Number column for the contact’s primary list.
- Batch setting — the Trunk field under the batch’s Calling rules.
- Account default — your team’s default outbound number.
A/B testing script variants
A/B testing is a gated feature: it isn’t self-serve in the app today. A source list can carry an A/B test — two or more script variants, each with a label and a weight, splitting that list’s contacts between competing scripts — but it’s set up by the Voxworks team on your behalf. If you want to run an A/B script test, reach out to the Voxworks team directly to have it configured for your account. Once a list has an A/B test configured, an A/B badge appears beside its script in the List allocation table, on the Summary tab’s Source lists card, and in the batch analytics. Once a contact is assigned a variant, that assignment sticks: every attempt for that contact — including automatic retries after voicemail, no-answer or busy outcomes — carries the same variant and script forward rather than re-rolling it, and the variant is recorded against each queue row. That keeps the two arms of the test clean: a contact never drifts between variants mid-test, so completion rates and objective results in the batch analytics remain directly comparable between scripts. There is no in-app editor for creating A/B variants on a source list — this is by design, since setup goes through the Voxworks team. Speak to your Voxworks contact to request the feature or configure a new test.Script versions on batch calls
Batch calls always launch with the current version of the assigned script at the moment each call dials, and the exact version used is recorded against the queue row and the call. In practice this means:- If you publish an improved script version mid-batch, calls that haven’t dialled yet pick up the new version automatically; calls already made keep the version they ran with.
- A retry uses the same script as its original attempt, at whatever version is current when the retry dials.
Live intake: lists keep feeding the batch
While a batch’s scheduler is active, its source lists behave as feeders:- New list members join the queue automatically. When contacts are added to an attached, active list — from the Contacts page, a CSV import, an automation or the API — they are folded into the batch’s queue. Intake happens immediately when contacts are added through the platform’s list endpoints, and the scheduler also re-checks list membership on its regular planning pass, so new members are picked up within a few minutes either way.
- New contacts join the back of the queue with the list’s script, and are planned into future schedule slots by the normal priority and quota rules.
- New rows are screened before dialling. If screening gates are enabled on the batch, folded-in contacts start in a pending screening state and are held until screening clears them — they never launch unscreened. See Batch Screening Gates.
- Pausing a list stops it feeding and dialling. Set a list’s status to Paused and the scheduler stops planning new calls from it, and holds its already-planned calls at launch. Set it back to Active and it resumes where it left off — nothing is cancelled by pausing.
- Removing a list cancels its pending queue rows immediately, as the confirmation dialog warns.
Deduplication
Batches guarantee one queue row per contact:- Within a batch, a contact is queued exactly once no matter how many attached lists they appear on, and the platform enforces this at the database level — concurrent intake from several sources can never double-queue a contact. The contact keeps a record of all the batch lists they belong to (used for quota attribution), with the highest-priority list as their primary.
- Adding contacts to a launched batch filters out anyone already in the batch; if every selected contact is already present, the addition is rejected outright.
- Within a CSV import, duplicate phone numbers are imported once.
Next Steps
- Batch Scheduling & Pacing — business hours, daily caps, ramp profiles and how the day’s call slots are generated.
- Batch Queue Management — inspect every queued contact, filter by list, and lock or reschedule individual rows.
- Batch Calling Rules & Retries — per-outcome retry policies and how retries interact with quotas and variants.
- Lists — creating and maintaining the contact lists that feed your batches.

