Skip to main content
A campaign is how you point an agent at a list of people instead of one number at a time. You upload contacts, set the days and hours calls may go out and how unanswered calls are redialled, assign an agent, and Osvi manages the queue.

Creating a campaign

Go to Campaigns → New campaign. The dialog has two steps:
1

Campaign setup

Name the campaign, pick its type and, optionally, the agent that makes the calls:
  • Outbound — call a list of contacts you upload.
  • Inbound — receive calls on the agent’s numbers (and track the ones you miss).
Calls go out from the agent’s own phone number, so there is no number to pick here. You can also assign agents later from the campaign.
2

Timing and retries

  • Calling days — the days of the week calls may go out. Every day is on by default; keep at least one.
  • Call window — the hours (IST) calls may go out. Anything unfinished waits for the next window.
  • Call retry — optionally redial unanswered contacts: how long to wait between attempts and how many times.
Calling days and hours can be changed later with Edit on the campaign’s Overview tab, and the retry policy from the same tab.

Campaign status

Activate, pause and resume a campaign from the switch on the campaign list, or from the button at the top of the campaign itself. Archive and unarchive from the campaign’s menu in the list. Calls only go out inside the campaign’s calling days and window. That includes calls handed off from a chat to a voice agent: if the voice agent is on a campaign, the call waits for the campaign’s hours. A voice agent on no campaign calls straight away.

The campaign page

Opening a campaign shows its status, a Pause or Resume button, and five tabs: Overview, Agents, Lists, Called and Queue (inbound campaigns have Missed Calls instead of the last three). Until the campaign is ready, Overview starts with a short checklist: calling hours, an agent, a list, and activation.
Campaign Overview with campaign information and retry settingsCampaign Overview with campaign information and retry settings
Overview holds the campaign’s details and its redial policy:
  • Retry unanswered calls — the master switch.
  • Quick retries — how many times to redial and how long to wait between attempts.
  • Follow-up schedule — optional. Without one, redials use the flat delay above; with one, you can space later attempts out over days.
  • How it works — what a contact will actually experience, ending with the total number of calls they can receive.

Assigning agents

The Agents tab with an assigned agent and its Stop agent controlThe Agents tab with an assigned agent and its Stop agent control
On the Agents tab, Add Agent assigns agents to the campaign. Each row has its own Start agent / Stop agent control, so you can stop one agent without pausing the campaign. Removing an agent asks you to confirm first; its lists and call history stay on the campaign. Each list is dialled by the agent it was uploaded for, so with several agents you choose one per list.

Uploading lists

The Lists tab with Upload CSV, the format requirements, and the listsThe Lists tab with Upload CSV, the format requirements, and the lists
On the Lists tab, Upload CSV takes a file with these columns:
  • phone — a 10-digit Indian mobile number, or +91 followed by 10 digits.
  • person_name — required on every row.
  • Any extra columns are passed to the agent’s prompt as {{variable}} values and echoed back in webhook results.
  • Up to 100,000 contacts per file. Download sample CSV gives you the format.
Before anything is uploaded, Osvi shows a preview: the columns, how many contacts the file holds, and any rows it would reject (invalid numbers or missing names, with their row numbers). A number that appears twice is merged into one contact. If the campaign has more than one agent, pick the agent that dials the list first. Each list then shows what’s happening to it: Queueing on a draft or paused campaign still works: you’re told the contacts will be called once the campaign is activated. The same applies to contacts added through the campaign contacts API (POST /v1/campaigns/{id}/contacts), which returns a warnings array. List progress above the lists shows, for each list, how many contacts are waiting, being called, answered, not answered, failed or skipped.

Called contacts

The Called tab lists every number the campaign has called, newest activity first: the number of attempts (redials and callbacks included), the latest outcome (Answered, Not answered, Failed or In progress), why the last call ended, and which list it came from. Search by number or name, or filter by outcome.

Monitoring the queue

The Queue tab is the live view, refreshing every 30 seconds.
The Queue tab with queue distribution, buffer and worker countsThe Queue tab with queue distribution, buffer and worker counts
Total queue distribution splits everything still pending into three: Alongside it: Buffer is the contacts being dialled right now, Workers running is how many agents are processing calls, and Total queued is everything still pending.
Per-agent breakdown with queue counts and buffer entriesPer-agent breakdown with queue counts and buffer entries
Per-agent breakdown repeats all of that for each assigned agent. Expanding one shows whether its worker is running, its own queue counts, and the buffer entries being dialled. Advanced (closed by default) clears whole queues: everything pending, or just the normal queue, the callbacks or the not-picked redials, for every agent or for one. Clearing never touches contacts already called. To clear a single list, use Clear queue on its row instead. Elsewhere:
  • Conversations — every campaign call lands in the call log; filter by campaign or by list.
  • Missed Calls tab (inbound campaigns) — every call you didn’t answer, with an export button.
Redials and callbacks keep the list they came from, so per-list and per-campaign call counts (and GET /v1/campaigns/{id}/status) count calls, not contacts: a contact redialled twice counts three times. Use List progress or the Called tab for numbers of contacts.

Practical tips

The Calls by hour chart on the dashboard shows when people in your list actually answer. A 10:00–13:00 window typically outperforms a full-day spray.
Queue a 10-row list of your team’s numbers first and check the results before releasing the full list.
Unanswered calls are redialled automatically under the campaign’s policy — there’s no need to re-upload them.