How the desktop app records calls

What the desktop app watches for, when recording starts and stops, how the audio is captured, and how a finished call reaches your dashboard.

How a call is detected

WhatsApp offers no way for another program to be told that a call has started — no API, no event, no supported hook. So the app watches the WhatsApp Web interface it is already displaying and reads the state of the call surface: the panel, its controls, the name of the other party and the duration timer.

It is a reader of rendered interface, and nothing more. It does not patch WhatsApp’s JavaScript, read your cookies or storage, inspect network traffic, or send anything on your behalf.

The states it distinguishes

StateWhat it meansRecording?
Ringing (incoming)A call is coming in and has not been answeredNo
Ringing (outgoing)You are calling somebody and they have not picked upNo
ConnectingA call surface is up but no duration timer is running yetNo
ActiveThe call is answered and runningYes
EndedThe call finishedStops and saves

Why “connecting” is not “answered”

An end-call button is on screen from the first ring of an outgoing call, so its presence alone proves nothing. Treating it as answered is exactly how an earlier version produced a library of recordings of the dial tone. Only a running duration timer — or explicit “connected” text — promotes a call to recording.

The practical consequence: a call nobody answered is counted in your activity figures but never recorded, and never lands in the review queue. There is nothing to listen to, and a queue full of unanswered attempts is a queue nobody works.

How the audio is captured

Because the app is the thing playing the call rather than a microphone listening to a speaker, it captures the audio of its own WhatsApp view directly. Both sides of the conversation arrive at full strength.

Where capturing that view is not possible, it falls back to recording the computer’s own audio output, which also works but is broader — it picks up anything else playing on the machine. Either way, the agent’s microphone is captured too, and the two are mixed into one file with a single sample clock so the sides cannot drift apart over a long call.

  • Both sides, mixed, in one file per call.
  • Mono, at a speech-appropriate sample rate — small enough that a day of calls is not a problem on a laptop.
  • Written in pieces while the call runs, so a crash or a power cut does not cost the whole conversation.

Headphones beat speakers

Not required, but better. On speakers, the other person’s voice comes out of the speaker and back into the microphone, which makes the mix muddier than it needs to be. A headset removes that entirely.

From hang-up to your dashboard

  1. The call ends. The recording is closed and queued. A call surface that vanishes for a moment because WhatsApp re-rendered its own interface is not treated as a hang-up — otherwise one conversation would arrive as three files.
  2. It uploads. If there is a network. If there is not, it waits and is retried; the app does not discard a recording because the connection was down.
  3. The local copy is deleted. Once the server has confirmed it holds the audio. Recordings do not pile up on the machine.
  4. It appears in Calls with the agent, the customer, the direction, the duration and a Source of Desktop. Usually within a minute of hanging up.
  5. It may be sampled. Depending on your sampling rule, it either lands in the review queue or simply stays in the call history.

What it does and does not record

Calls in the app
Recorded. Voice calls are the real target; a video call’s audio is captured the same way, but no video is kept.
Calls in a browser tab
Not recorded. The app records its own window. An agent who makes a call at web.whatsapp.com in Chrome has made it outside the recorder.
Calls in the WhatsApp desktop client
Not recorded, for the same reason.
Messages
Never read or stored. The app reads the call surface and the open conversation’s header, which is how it knows whom to offer the disclosure notice for.
Group calls
Captured as one recording of what was heard. Individual participants are not separated.

Note

This is the single most common surprise in a rollout: an agent keeps using their browser out of habit and wonders why half their calls are missing. The Source column and each agent’s call count make it visible quickly — somebody with far fewer recorded calls than their colleagues is usually calling from the wrong place.

What the agent sees while it records

  • A recording indicator for the duration of the call.
  • The app itself, which is in front of them, since the call is happening inside it.
  • The disclosure notice, if the owner has enabled it — typed into the conversation for them to send, never sent automatically. See Subscription and settings.

There is no hidden mode and no setting that creates one. Recording a conversation is lawful in many places and conditional in others, and the condition is usually that everybody on the call knows — telling them is the customer’s responsibility, and the product is built so that the honest version is the easy one.

When WhatsApp changes its interface

Detection reads rendered interface, so a redesign can break it. The symptom is specific and worth recognising: calls stop appearing, while everything else about the app looks healthy.

The app can save a diagnostic snapshot of what it can see during a call, from its detection settings, and that snapshot is what the rules are rebuilt from — so a fix is a new build rather than a rewrite. If calls stop appearing across your whole team at once, that is almost certainly the cause: write to support@qualitify.net and say when they stopped.