Skip to main content

Outbound sales campaign

Take a list of cold or stale leads, dial them with an AI agent that re-qualifies and books demos straight into your sales team's calendars. Concurrency-paced so you don't blow through your trunk limits; outcomes auto-tagged by intent so you can see what worked.

What you'll build

  • A contact list uploaded from CSV (or pulled from your CRM).
  • A voice assistant scripted for re-qualification.
  • A calendar pool shared across your sales reps.
  • An outbound campaign that paces calls and tags outcomes.
  • An intent library that classifies each call (qualified_lead, not_interested, bad_number, callback_requested).

Step 1 — Upload the contact list

  1. Open Outreach → Contacts.
  2. Click Import CSV. At minimum: first_name, last_name, phone. Add any custom fields you want the agent to reference (e.g. last_product_viewed, signup_date).
  3. Tag the import (e.g. q4-stale-trials) so you can target this batch in the next step.

Step 2 — Build the qualification assistant

  1. Build → Assistants → Add assistant.

  2. Pick gpt-4o for outbound work — empathy and improvisation matter when you're cold-calling.

  3. System prompt:

    You're calling former trial users of Acme CRM who let their trial expire 30+ days ago. Your goal is to re-engage and, if they seem interested, book a 15-minute demo with a rep this week.

    Open with: "Hi {{contact.first_name}}, this is Maya from Acme CRM — do you have 30 seconds?"

    If they say no: thank them, offer to text a recap, end the call. If they say yes: ask one question about why the trial didn't convert. Listen. Then offer a 15-minute demo with a specialist. If they accept, check the calendar pool and book.

    Never push past two attempts to schedule. Never quote pricing — say "your demo specialist will walk through pricing live."

  4. Pick a voice. For outbound, slightly warmer pacing performs better than the receptionist preset.

Step 3 — Build the intent library

  1. Build → Library → Intents → Add intent.
  2. Add at least these intents — each is a name + 1-2 line description the LLM uses to classify the call:
    • qualified_lead — caller engaged, asked questions, agreed to a demo or showed strong interest.
    • callback_requested — caller wants to talk later, gave a time.
    • not_interested — explicit decline, no future interest.
    • bad_number — wrong person or non-working number.
  3. Attach the intent set to the assistant.

Intents fire at conversation close and become a tag on each call record — invaluable for slicing campaign performance later.

Step 4 — Set up the demo calendar pool

A calendar pool lets the agent treat several reps' calendars as one bookable resource and spread demos across them.

  1. Automation → Calendar Pools → Add pool.
  2. Connect each demo rep's Google Calendar.
  3. Use least-busy distribution so demos spread evenly.
  4. Set 30-minute slots with a 15-minute buffer.

Link the pool on the assistant so the agent can offer real available slots in real time.

Step 5 — Launch the campaign

  1. Open Outreach → Campaigns → New campaign.
  2. Pick the contact tag from Step 1 (q4-stale-trials).
  3. Pick the assistant from Step 2.
  4. Configure pacing:
    • Concurrent calls — start low (e.g. 3) and ramp once you've seen the agent perform on real calls.
    • Calling window — local time per contact (e.g. 9am–6pm in each contact's time zone).
    • Retries — up to 2 attempts per number, 24 hours apart.
  5. Click Start. The campaign queues calls and respects pacing automatically.

Step 6 — Monitor and tune

  • Engagements → Conversations — filter by campaign + intent. Listen to a sample of qualified_lead and not_interested calls. Iterate on the system prompt and intent definitions based on what you hear.
  • Calendar pool — check that bookings are spreading across reps evenly. If one rep is getting all the demos, switch the pool from least-busy to round-robin.

What to do next

  • Auto-route qualified leads to Slack — add a Workflow on the qualified_lead intent that fires a call_webhook to your Slack incoming-webhook URL.
  • Sync outcomes to your CRM — connect HubSpot or Zoho and write the call disposition + intent back as a contact activity.
  • A/B-test scripts — clone the assistant, change the opener, run half the list through each. Compare qualified_lead rates in the conversations dashboard.