Configure
Outbound campaigns
Reach out first. Name the campaign and its goal, add the companies you want to win (upload a CSV or type a short list by hand), and your AI persona researches each one, drafts personalized outreach from your knowledge base, and sends it on the channel you choose — email, SMS, or an AI phone call. You review each message before it goes out (or let it auto-send), and replies come straight back into your inbox.
Outbound campaigns are available on the Scale plan, or as the Outbound Campaigns add-on on any plan.
1. Name it & set the goal
Go to Campaigns → New campaign. Start with the basics: a name, the campaign’s purpose (what you’re trying to achieve, e.g. “book 15-minute demos of our analytics dashboard with e-commerce founders”), the outreach mode — email, SMS, or an AI phone call — and the persona that will reach out. The purpose is woven into every message so the outreach stays on-goal. (One mode per campaign for now.)
Email campaigns send from the persona’s own connected mailbox — so outreach comes from the right address and replies land back in that inbox. What the persona does with a reply comes down to one chip on its Email inbox row (Personas → [persona] → Channels → Where visitors reach [persona] → Email inbox): Auto-reply to emails. On, the AI sends responses automatically; off, responses are saved as drafts for you to review before sending. Connect the persona’s inbox first — until it is, Email inbox sits in the dashed Not set up yet group on that same tab. Inbox monitoring is a Scale feature that no add-on unlocks, so on Scale that row offers a Connect button, and on any other plan — including one running these campaigns through the add-on — it shows a Scale plan pill and an Upgrade button instead. Without a connected inbox the campaign falls back to the widget’s default mailbox and replies aren’t auto-handled.
2. Add your contacts
Two ways to add who you’re reaching:
- Upload a file — a CSV with a header row and one contact per line. Include whatever you have: company, contact name, email, phone, and company domain. Column names and order are flexible — we suggest a mapping and you confirm it. Not sure of the format? Click Download example CSV in the wizard to start from a template.
- Enter manually — type a short list right in the wizard (add a row per contact). Best for a handful of hand-picked accounts.
Either way, each contact needs the field the mode requires — an email for email campaigns, a phone number for SMS and calls. We show how many contacts are sendable and which were skipped (missing a required field, a duplicate, or already opted out).
3. Message, pacing & consent
Each campaign runs a workflow you can edit — the default researches the company’s website, pulls the most relevant value from your knowledge base, and composes the outreach toward your campaign purpose. If the goal is to book meetings, turn on “Invite prospects to book a meeting” — email and SMS then include your connected Calendly scheduling link as a clear call-to-action (connect Calendly in Integrations first). On a live phone call the persona can book the meeting directly. Build a follow-up ladder — retry the primary channel a chosen number of times a few hours apart, then fall back to other channels. For example: call three times, then text twice, then email once. An attempt only happens if the previous one didn’t connect (calls) or get a reply (email / SMS), and a connected call or any reply stops the whole ladder. A fallback channel is automatically skipped for a contact you don’t have that channel’s details for (e.g. no email on file). Then choose how many messages go out per hour and per day, and whether to review each one before it sends. For SMS and phone calls — including as a fallback — you must attest that your contacts have consented to be contacted — cold texting and cold AI calls are unlawful in the US without prior express written consent. Cold lists should go out by email.
You are responsible for compliance. For SMS and calls we send only during the recipient’s local 8am–9pm window — quiet hours (9pm–8am) are blocked automatically, in each recipient’s own timezone. We honor STOP and unsubscribe, and never message a suppressed contact — but the legal basis for reaching each contact is yours.
4. Draft, review & launch
Everything up to this point is a draft — a campaign you’re still building. A draft doesn’t send anything; it just sits staged with its contact list and cadence ready to go. Use Edit on the campaign page to change its settings while it’s a draft — the name, the message workflow, review on/off, the pacing caps, the send window and timezone, and (for SMS/calls) the consent basis — or delete the draft entirely. The audience, channel, and persona are fixed when you create it: to change those, create a new campaign. Once you launch, these settings are frozen; from then on your only controls are pause, resume, and cancel.
By default each composed message waits for your review on the campaign page — approve or skip individually or in bulk, and edit any draft before it goes out. Review applies to every touch, not just the first, so you see each follow-up before it sends. Turn review off to auto-send each message as soon as it’s composed.
What “Launch” does
Launch hands the campaign to the sending engine. First it checks a few things: your plan includes outbound campaigns, there’s at least one sendable contact, — for SMS and call campaigns — that you’ve attested consent (required by the TCPA), for any campaign that sends email at any step that your business has a postal address on file, and for any campaign that texts or calls at any step that you have a phone number it can send from. If those pass, the campaign flips from draft to running and a background worker begins processing it within about a minute. Launch itself sends nothing — it just turns the campaign on and hands it off.
From the dashboard, Launch starts the campaign immediately.
To schedule one to start at a future time, launch it through the
API with a scheduled_for timestamp
— it waits as scheduled and the engine promotes it to running
when the time comes.
Email campaigns need your business address. Commercial email has to carry a real physical postal address (CAN-SPAM), so we put yours in the footer of every campaign email alongside the one-click unsubscribe link. It comes from your main location — add the street address and city there and you’re set. If it’s missing, Launch stops with a message instead of letting the campaign run and skip every contact. This applies to a call or SMS campaign too if any follow-up step sends email.
SMS and call campaigns need a number to send from. Launch checks that your brand has at least one Twilio or Telnyx number that is enabled. A SIP trunk doesn’t count — it only receives. If there’s nothing usable, Launch stops and tells you which of the two it is: no number connected at all, or numbers connected but none that can originate. Add or enable one under Phone numbers and launch again. This applies to an email campaign too if any follow-up step texts or calls.
Choosing which number a campaign sends from
If your brand has more than one number that could send the campaign, Launch asks you which one to use rather than picking for you. The number your recipient sees is who they think is contacting them — it is the number they will call back — and it decides which carrier’s A2P 10DLC / STIR‑SHAKEN registration the traffic runs under. Choose the number, and the campaign uses it for every text and call it makes.
You’re offered every number on the brand that can send, ordered the way the sending engine would consider them — the campaign’s persona’s numbers first if it has any, then its location’s, then the rest. The first option is what would have been picked for you, and any of the others is a valid choice.
Launch only asks when the choice would genuinely be arbitrary. If the persona has exactly one number of its own, that’s the answer and Launch just runs — nothing changes for a single-number brand.
Once chosen, the number is shown on the campaign under the persona (“Sending from +1…”) with a Change link, and you can change it while the campaign is a draft or paused. If that number is later disabled, released, or moved to another brand, the next Launch — or Resume — stops and asks you to pick again. We never quietly send from a different one: if it somehow becomes unusable mid-run, the remaining contacts are skipped with a reason and revived by Restart once you’ve chosen again.
What happens after you launch
A background engine works through your contacts in stages, a batch at a time, on a loop (roughly once a minute) — you don’t have to keep the page open:
- Research — each contact is enriched with whatever context the persona can gather about them.
- Compose — the persona writes that contact’s message individually (personalized per recipient, not a mail-merge template).
- Review — if review mode is on, the message waits for your approval; if it’s off, it goes straight to sending.
- Send — approved messages go out, paced by your hourly and daily caps and your send window.
Pacing & send window. The engine only sends inside your send window (in the campaign’s timezone) and never faster than your hourly and daily caps. Anything held back by the window or the caps isn’t lost — it simply waits and goes out on a later pass once the window is open and the caps refill.
Per-recipient rules still apply to every message. On top of your campaign send window, each message is checked at send time. For SMS and calls, if a recipient is in their own local quiet hours (outside 8am–9pm in their timezone, inferred from their phone number), that contact is held and automatically retried when their local window opens — shown as deferred on the campaign page — so people in other timezones are reached at a sensible hour instead of being dropped. A contact is only skipped (final, with the reason shown) when it can’t be sent at all: they’re on your suppression list, you haven’t attested consent, or they’ve already hit the once-per-day frequency cap from another message.
Follow-up cadence (multi-step campaigns)
If you set up a cadence — say a call, then a text a day later, then an email — each contact walks the ladder one touch at a time. After a touch goes out, the contact waits the delay you set, then the next touch is composed and sent. The engine skips any step a contact can’t receive (an email step for someone with no email, a text or call for someone with no phone). For calls, the next step waits on the call outcome: a connected call ends the cadence for that contact, while a no-answer, busy signal, or voicemail moves on to the next step. And a contact stops early the moment they reply.
What each message says
By default the persona writes every touch itself — from your campaign goal, the research it does on each company, and your knowledge base. It also sees what the earlier touches already said, so a follow-up opens on a new angle instead of restating the last one. And if those earlier touches never actually reached the contact — calls that rang out, say — it knows that too, and won’t write “as I mentioned last time” to someone who has never heard from you.
You can override any touch individually in the wizard. Each one offers three choices:
- Let the AI write it — the default, described above.
- Give it the gist — you write the point this touch has to land (“lead with the free migration offer; it expires end of month”), and the persona writes the actual words in its own voice. Available on every channel.
- Write it myself — you write the exact subject and body and it’s sent as written; the AI won’t rephrase it. Useful when the copy has already been through legal or brand review. Available for email and text.
Why “write it myself” isn’t offered for calls: a call is a live conversation, not a message. The person will interrupt, ask something unexpected, or say now isn’t a good time — and an assistant reciting a fixed script can’t respond to any of it. For calls you give it the goal, and it holds the conversation.
In exact-wording mode you can personalise with {{contactName}} and
{{companyName}}. If a contact is missing one of those values that contact is
skipped — it is never sent a message with a blank where a name
should be.
Voicemail
When a call campaign reaches an answering machine the default is to hang up. Tick “Leave a voicemail when nobody picks up” in the wizard and the persona will instead wait for the beep and leave a short message, composed for that contact like any other touch — and editable in review, if review is on.
A voicemail is only left when we are confident a machine picked up. If the carrier can’t tell a person from a machine, we treat it as a person and the assistant talks: better to pitch a voicemail than to hang up on a real prospect.
Worth deciding deliberately. Leaving a recorded message is treated differently from a call that simply goes unanswered, particularly on a cold list — a judgement about your list and your obligations, which is why it stays off until you turn it on.
Pause, resume, cancel, restart & completion
You can pause a running campaign at any time — it stops picking up new sends (a message already in flight finishes its step) — and resume picks it back up. Cancel stops it for good and marks every remaining contact as skipped. A launched campaign can’t be edited or deleted — cancel it instead.
Changed your mind after cancelling? Restart returns the campaign to an editable draft with its unfinished contacts restored, so you can review (and tweak) it and Launch again. Contacts that already completed or opted out are left as they are, and nothing that was already sent goes out twice. A campaign marks itself completed automatically once every contact has reached a final state (sent, skipped, or failed).
Restart also works on a completed campaign — useful when a setting on your account stopped it from sending (for example, a missing business address on an email campaign). Fix the setting, hit Restart, and the contacts that were skipped for that reason go back in the queue. Contacts who unsubscribed, are on your suppression list, or hit a frequency cap are never brought back.
Replies & results
When someone replies to a campaign email or text, it lands in your inbox like any other conversation — your persona (or a teammate) picks it up from there — and the campaign marks that contact as replied. The campaign page shows the full funnel: researched, composed, sent, replied, deferred (held for a recipient’s local quiet hours), skipped, and failed.
Opt-outs & the suppression list
Anyone who replies STOP to a text or clicks unsubscribe in an email is added to your suppression list and is never contacted again on any campaign or channel. Manage it under Settings → Suppression list, where you can also add contacts manually or import opt-outs from another system.
Send from your own code
Everything a campaign does per contact is also available via the
Outbound API: POST
/api/v1/outbound/email, /sms, and /calls,
plus /api/v1/suppressions to sync your opt-out list — all
behind your developer key, with the same compliance pipeline.