Skip to content
AgentSDR
Star

WhatsApp outreach and calling

WhatsApp outreach and calling for sales, from your own number

Place a call from a lead's record, have both sides recorded to your own storage and transcribed by the model you choose. Or send a guarded message sequence. Replies go straight into the CRM.

agentsdr.your-company.com/calling/campaigns

Demo no-shows · call back

Active

Calls placed from AgentSDR, dialled and recorded in WhatsApp Web.

Leads

120

in this campaign

Calls placed

214

last 4 weeks

Connected

91

43% connect rate

Due today

8

first calls and retries

Contacts

Who to call next, and how each call went.

  • Aiko Tanaka

    Growth Lead @ Kestrel Health

  • Samir Haddad

    COO @ Parcelly

  • Hannah Weiss

    Head of Growth @ Lumen Freight

  • Rafael Costa

    VP Sales @ Brightloop

  • Chloé Martin

    Founder @ Atelier Nord

  • Marcus Lindqvist

    Partner @ Oakridge Capital

Aiko Tanaka

Recording · 04:12

On call
Rep0:08
Is now still a good time? Two minutes on follow-ups.
Lead0:15
Sure — most of ours never get sent.

WhatsApp calling

Call from the record, keep the recording

The Call Recorder is a Chrome extension. It dials inside your own WhatsApp Web, so the call comes from your number and nothing is routed through a third party.

One-click calls

Click Call, and WhatsApp Web does the dialling

AgentSDR hands the call to the extension, which opens the chat and presses Voice call. A live strip shows each stage, and recording starts when the lead picks up, so their first words are not lost.
  • Call from a People row or a CRM record header
  • Calls that nobody answers are discarded, not stored
  • If the extension cannot press Voice call, you press it and recording still starts

Recording

Both sides, saved to your own R2 bucket

The recording is stereo: your microphone on one channel, the lead on the other. It uploads straight to the Cloudflare R2 bucket you connected and is only ever played through short-lived links.
  • Up to 200 MB, about three hours
  • A failed upload falls back to your Downloads folder
  • Self-hosters add their own AgentSDR address on the extension's Options page

Transcripts and retries

A transcript from the model you pick

Choose a transcription model that accepts audio in Settings → AI provider and each recording is transcribed on your own OpenRouter key. Afterwards you mark the outcome, and a lead who did not pick up comes round again.
  • Language, a short summary and the utterances
  • Outcomes such as No answer, Interested or Meeting booked
  • No answer comes round again after 1, 2 and then 4 days

WhatsApp campaigns

Message sequences with the brakes built in

A first message and timed follow-ups from the numbers you choose. Every send passes the same server-side guards, whether it comes from a campaign, a reply or the CRM.

Sequence

A first message, then follow-ups on your schedule

Import up to 5,000 rows with a phone column, or add people from your database. Write up to six messages with merge fields, preview them for a real lead and launch. Campaigns are saved paused until you do.
  • Each message up to 4,096 characters
  • Merge fields from any imported column
  • A step is never sent twice; an uncertain delivery is flagged, not resent

Guardrails

Warm-up, daily limits and a gap between sends

A number starts no new chats for 24 hours after it is linked, at most 25 a rolling day, with 10 seconds between messages, and never to Do Not Contact. A held first message does not stop that number's follow-ups.
  • Enforced on the server under a per-number lock
  • Rules per organization, with a per-number override for new chats
  • A banned number loses its calling too, which is why the limits are strict

Refusals

What happens to a send a guard refuses

A refused message is not lost or forced through. A gap or rate limit waits for the next round, a warm-up or new-chat limit holds first messages while follow-ups continue, and Do Not Contact stops the lead.
  • Not connected: that number is skipped
  • WhatsApp rejects the number: the lead is Failed, with the error shown
  • Unipile unreachable: retried after 10 minutes, Failed after 3 attempts

Replies

Replies land in the CRM, whoever typed them

Replies from a known lead reach the CRM on a WhatsApp conversation. Messages carry an origin: lead, AgentSDR, or phone for something you typed in WhatsApp Web, and answering from your phone counts as answering the lead.
  • A reply on any channel marks the lead Replied
  • AgentSDR checks the chat again just before each send
  • Classified in Action required next to email and LinkedIn
warm-up before a newly linked number starts new chats
24 h
new chats per number in a rolling 24 hours, by default
25
minimum gap between messages from one number
10 s
messages in a campaign: one first message and five follow-ups
6

Honest limits

What to know before you rely on it

Calling works by driving WhatsApp Web, so it has the limits of that approach. We would rather you hear them here.

  • Only calls placed from AgentSDR

    Your own calls in WhatsApp Web are never recorded or touched.
  • WhatsApp Web in English

    The extension finds Voice call and End call by their English labels.
  • Consent is yours to get

    Many places require everyone on a call to agree to recording. Tell people, and follow local law.
  • Inferred speaker labels

    Transcription receives merged audio, so rep and lead are inferred rather than measured.

The details

Everything between the dial and the CRM

The pieces that make calling and messaging work as one workflow.

  • Your own storage

    Recordings live in the Cloudflare R2 bucket you connect, reached by presigned links only.
  • Transcripts

    Language, summary and utterances from the audio model you choose, on your own key.
  • Retries

    A failed transcription can be retried, and a lead who did not answer returns after 1, 2 and 4 days.
  • Sending hours

    Optionally restrict campaigns to hours you set. They apply to campaigns, not to messages you send yourself.
  • Do Not Contact

    A lead marked Do Not Contact is refused on every send and marked Stopped in a campaign.
  • One lead, one number

    Later steps go from the number that sent the first message.

Get started

From linked number to first recorded call

  1. 01

    Link a number

    Scan the QR code in Unipile, then Sync from Unipile in AgentSDR.
  2. 02

    Connect R2 and pick a model

    Storage for recordings, and a transcription model that accepts audio.
  3. 03

    Install the extension

    Download the Call Recorder from Settings, then load it unpacked in Chrome.
  4. 04

    Call or campaign

    Click Call on a lead, or launch a message campaign once warm-up has passed.

FAQ

Questions, answered

Can AgentSDR record WhatsApp calls?

Yes, calls placed from AgentSDR's Call button. A Chrome extension dials the number in WhatsApp Web and records both sides from pickup to hang-up, then uploads the file to your own Cloudflare R2 bucket. Calls you place yourself in WhatsApp Web are never recorded.

What do I need to make recorded calls?

Chrome 116 or newer, a linked and connected WhatsApp number, Cloudflare R2 connected for storage, and WhatsApp Web in English. The extension finds WhatsApp's Voice call and End call controls by their English labels. For transcripts, also choose a transcription model that accepts audio.

Where are recordings stored and who can hear them?

In your own R2 bucket. Recordings are never public: every play uses a short-lived link, and the upload link is valid for 15 minutes. A recording can be up to 200 MB, about three hours. If an upload fails, the file is saved to your Downloads instead.

How does call transcription work?

If you choose a transcription model in Settings → AI provider, each recording is transcribed after it saves, usually in under a minute, on your own OpenRouter key. You get the language, a short English summary and the utterances. Speaker labels are inferred because the model receives the channels merged. With no model chosen, transcription is off.

How many WhatsApp messages can I send a day?

Each number can start 25 new chats in a rolling 24 hours by default, with 10 seconds between sends, and starts no new chats for 24 hours after it is linked. Answering existing chats is not limited that way. All three are Sending rules, and one number can override its own new chats limit. Keep the defaults for a new number.

What does a WhatsApp campaign send?

A first message and up to five follow-ups, each up to 4,096 characters, from the numbers you choose. A follow-up waits from 1 hour to 30 days after the previous message and defaults to 48 hours. A lead stays on the number that sent its first message, and a reply on any channel stops the sequence.

Is recording WhatsApp calls legal?

That depends on where you and the lead are. Many places require everyone on a call to consent before it is recorded, and some require you to announce it. You are responsible for following the law, so tell people when you record and read the Responsible use page.

Call and message from your own number

Clone the repo, link a WhatsApp number and place your first recorded call. Recordings stay in your storage, and the limits are yours to set.