Campaigns
Run outbound calling campaigns at scale — upload a contact list, pick an agent, and Nerva dials each contact for you.
A campaign is a list of contacts that Nerva calls automatically using one of your voice agents. Perfect for appointment reminders, lead qualification, re-engagement drips, customer surveys, and any outbound calling at volume.
You upload the list, configure how aggressively to dial, and start it. Nerva handles the rest — dialling, recording, retrying busy/no-answer numbers, tracking which contacts answered, and writing per-contact outcomes back to your CRM.
When you need one
You want a campaign whenever you'd otherwise pay someone to make the same call 100+ times. Common use cases:
- Appointment reminders — call patients/clients 24 hours before their booking to confirm or reschedule.
- Lead qualification — call new website leads within minutes to qualify them and book a follow-up with a human salesperson.
- Re-engagement — call dormant customers with an offer.
- Survey / NPS — quick post-purchase satisfaction calls.
- Renewal outreach — call customers whose subscription is about to expire.
- Event reminders / RSVP — confirm attendance before a webinar or event.
Creating a campaign
Dashboard → Campaigns → New.
You'll need three things:
1. A voice agent
Pick one of your existing voice agents — the one whose prompt is tuned for the script you want. If your agent doesn't exist yet, create it first (Voice agents).
The agent's system prompt should explicitly handle the outbound context. Example for an appointment reminder agent:
You're calling to confirm an existing appointment. Greet the contact by name, state the date and time of their appointment, and ask if they can still make it. If yes, thank them. If no, offer to reschedule and capture their preference. Keep the call under 60 seconds.
2. A contact list
Upload a CSV with at minimum a phone column. Add as many extra columns
as you want — they become prompt variables the agent can reference.
Example CSV:
In your agent's system prompt, reference any column with {{column_name}}.
For example:
Each contact gets a personalized call with their own variables substituted.
3. A phone number
Pick one of your phone numbers as the caller ID. See Phone numbers.
Campaign settings
| Setting | What it controls |
|---|---|
| Start time | When dialling begins. "Now" or a specific date/time. |
| Concurrency | How many calls to run in parallel. Higher = faster but more load on your endpoints; respect your plan's concurrent-calls cap. |
| Calling window | The hours during which dialling is allowed (e.g., 9 AM – 5 PM contact-local time). Calls queue outside the window. |
| Retry policy | What to do on busy / no-answer. Defaults: retry busy after 30 min, retry no-answer after 2 hours, up to 3 total attempts. |
| Stop after | Auto-pause if N consecutive calls fail, to catch bad lists early. |
Running a campaign
Click Start and Nerva begins dialling. The campaign page shows:
- Live progress — contacts called / answered / pending.
- Per-contact rows — phone, status, duration, outcome, link to the call detail page.
- Real-time chart — answers per hour, with calling-window overlay.
You can pause at any time — in-flight calls finish, queued calls hold. Resume picks up where you stopped.
Outcomes
Each contact gets an outcome the agent (or the LLM analysis) decides:
| Outcome | Meaning |
|---|---|
reached | Contact answered and conversation completed |
voicemail | Voicemail detected; agent left a message (or didn't, per your config) |
no_answer | Rang out without anyone picking up |
busy | Line was busy |
failed | Dial failed (invalid number, blocked, carrier error) |
do_not_call | Contact requested to be removed |
You can export the outcome CSV any time during or after the campaign.
Compliance basics
Most jurisdictions regulate outbound calling. A few non-negotiables to respect:
- Time-of-day rules — many regions ban calls before 8 AM or after 9 PM local time. Use the Calling window setting.
- Do-not-call lists — never dial numbers from registry-listed contacts. Maintain your own DNC list and filter your CSV against it.
- Consent — you should already have permission to call these contacts. This is your responsibility, not Nerva's.
- Disclosure — many regions require agents to disclose they're AI when
asked. Bake "If asked, say you're an AI assistant on behalf of
{company}" into your agent prompt. - Opt-out handling — when a contact says "remove me", the agent should
acknowledge and exit. The contact's outcome becomes
do_not_calland you should respect it in future campaigns.
We provide the tools. You're responsible for using them within your local laws.
Webhooks
Subscribe to these events to integrate campaigns with your stack:
campaign.completed— fires when the campaign finishes (org-scoped event)contact.reached— fires per contact that answered (org-scoped event)call.ended/call.analyzed— same per-call events as any other voice call
See Webhook events.
Per-contact CRM sync
If your campaign agent has a CRM integration attached (e.g., GoHighLevel), every successful call writes back to that CRM:
- Contact created/updated (matched on phone)
- Note appended with the call summary
- Tag applied based on outcome
- Pipeline stage moved according to your mapping
See CRM integrations.
Limits
Campaigns are subject to your plan's limits:
- Campaigns per month
- Contacts per campaign
- Concurrent calls (a cap across all campaigns combined)
See Billing & plans for the per-tier numbers.
Tips for SMB owners
- Test with 5 contacts first. Always run a tiny campaign to catch agent-prompt issues before dialling 1,000 people.
- Time it right. Appointment reminders work best at 10 AM the day before. Sales outreach: Tuesday/Wednesday 10 AM – 12 PM.
- Personalize ruthlessly. Use every CSV column you have — first name, last visit, last product purchased, anything specific. Generic calls get hung up on.
- Keep it short. 30–60 seconds is the sweet spot. Longer calls have higher hang-up rates.
- Always offer a way out. Train the agent to take "remove me" / "don't call again" gracefully.
See also
- Voice agents — the agents that power campaigns
- Phone numbers — caller ID and provisioning
- CRM integrations — write outcomes back to your CRM
- Webhook events —
campaign.completed,contact.reached