Setting a campaign up is one thing; running it is another. This is the day-to-day side: monitoring progress, checking the AI's opening, working contacts, and logging what happened. For creating a campaign, importing contacts, call windows, and the consent/compliance rules, see Run an outbound calling campaign.
Outbound campaigns are included on Pro and above. You'll be asked to accept a one-time outbound-calling acknowledgment before creating your first campaign.
The campaigns list
Open Campaigns in the left navigation for the roll-up across every campaign:
- Headline stats: Appointments booked, Transferred to staff, Booking rate, Active campaigns, and Contacts queued by default. The gear button next to Blocked numbers lets you show others instead, such as Connect rate, Transferred rate, No answer, Not interested, and Total contacts.
- Filter chips: All, Active, Draft, Paused, Archived (All hides archived).
- Campaign cards: each shows the name, a status pill, the goal and calling mode (AI agent or Staff), a Smart Timing chip when it's on (Learning, Ready, or Optimizing), and a progress bar of how far through the queue it is. A campaign that paused itself shows the reason on its card.
- Card menu: Start or Pause campaign, Rename, Duplicate (copies the settings into a fresh draft, not the contacts), and Archive. An archived campaign offers Restore as paused, Duplicate, and Delete.
- Blocked numbers: opens your practice's shared do-not-call list (with its count).
Click any card to open its control room.
The campaign page
The header shows the campaign name, its status pill, and a subline like "AI agent calling · goal: book appointment." What you do next depends on the mode.
AI calling
- Start / Resume / Pause: Start moves a draft live; the agent then auto-dials the queue on your schedule. Pause stops dialing; Resume picks back up.
- Live progress: while an AI campaign is active, the page updates on its own as calls finish, so booked and no-answer results appear without a manual reload.
- Smart Timing card: at the top of every AI campaign, it shows the best calling times found so far, a heatmap by day and hour in the patient's local time, how many calls until it can be more specific, and Apply / Undo for the learned pacing. Turn it on or off here or in Campaign settings. Full guide: Smart Timing: find the best times to call.
Staff calling
- Call Next: there's no auto-dialer. Press Call Next and FrontDesk connects you to the next queued contact with their context. The campaign activates automatically on your first call.
- After a call ends, a Log outcome button appears for the person you just dialed so you can record the result.
Hear the opening: send a test call
On an AI campaign, use Send a test call (in the kebab menu, or the button under "How the call opens"):
- Enter your own phone number.
- Optionally pick a contact so the preview uses their record.
- FrontDesk calls you and plays the exact opening line the AI would use, with that contact's name filled in.
No real client is dialed. The required automated-call disclosure and recording notice are always spoken, state-specific opt-out lines are added per contact, and prices are never said aloud. The "How the call opens" panel also shows this opening as a read-only preview: expanded while the campaign is a draft, collapsed to a one-line summary once it's live.
Why contacts are (or aren't) dialing
A status banner on the page explains the current dialing state so you're never left guessing:
- No phone number: the location has no active number to call from; set one up first.
- Staff mode: contacts never dial automatically; use Call Next.
- Paused: for a pause you made, the banner says the campaign is paused and to press Resume to continue auto-dialing. A campaign that paused itself shows the reason instead (see below).
- Not a calling day / outside the window: dialing resumes at the next allowed time. Days and blocks are checked in the campaign's calling time zone (and in each person's own time zone when it's known); the banner still says "the practice's local time", which is the default calling time zone.
- Active: confirms the cadence, e.g. "one call every 4 minutes within your window," and notes that contacts may still be skipped if they're on do-not-contact or in a restricted state.
If you enabled a restricted state after importing, a green banner offers to Re-queue the contacts that were skipped for it, with no re-import needed.
When a campaign pauses itself
The dialer pauses a campaign on its own when it can't call safely or can't pay for the calls:
| Reason shown | What to do |
|---|---|
| The calling time zone isn't a real time zone, or the campaign has none (and neither does the practice) | Click Choose time zone, pick one in Campaign settings, then Resume. |
| Your plan doesn't include outbound campaigns | Click View plans and choose a plan that includes them, then Resume. |
| The AI minutes included in your free trial are used up, or the plan's AI calling allowance has run out | Click View plans (or add minutes under Settings → Billing), then Resume. |
| The account owner's email address isn't verified yet, so AI calls can't be placed | The account owner uses the link in their verification email, or Resend email on the Verify your email notice in FrontDesk. Then Resume. |
A brief error while FrontDesk checks your usage doesn't pause a campaign: that contact goes back in the queue and the dialer tries again on its next run.
The reason appears on the campaign page and on its card in the campaigns list. The account owner, the location's admins and managers, and whoever set up the campaign get a Campaign paused notification in the app and by push, and an email with the reason and an Open the campaign link. Everyone still waiting to be called keeps their place, and calling picks up where it stopped when you press Resume, which also clears the reason. A pause you make yourself sends no notice.
If you try to start a campaign whose time zone isn't recognised, the page says This campaign can't start yet, with a Choose time zone button.
Work the contact queue
The contact list has four views: All, Up next (queued, in the order they'll be called), Needs follow-up (didn't pick up; book them by hand or wait for the retry), and Done (finished, no more calls). On any row:
- Call: dial this contact yourself.
- Activity: see every attempt and result for the contact, and log an outcome from there.
- Book: appears for contacts who need another touch; it opens Log outcome with Booked appointment picked so you can record the visit.
Each contact shows their status and the last result, so you can see history at a glance.
Log an outcome
Logging outcomes is what makes a campaign auditable. Choose from:
Booked appointment · Transferred to staff · Callback requested · No answer · Left voicemail · Not interested · Call failed · Other
Add notes for context. If you pick Booked appointment, you can capture the appointment date, time, type, and provider right there so it lands on your calendar.
Good to know
- Duplicating a campaign copies its settings into a new draft but not its contacts, so import a fresh list.
- Blocked and opted-out numbers are suppressed automatically across every campaign; manage them from Campaigns → Blocked numbers. See Run an outbound calling campaign for the full compliance rules.
- Archiving hides a campaign and its queue; you can restore it later from the list.
- Campaign settings (kebab menu on an AI campaign) edits the agent, calling days and blocks, the Calling time zone, pacing, restricted states, and the Smart Timing switch without recreating the campaign.