Record caller's voice
Record the caller for compliance or QA. Needs the call-recording add-on. To take a message, use the Voicemail node.
What it does
Records the caller for compliance or QA — a spoken consent, a read-back,
a survey answer. The node beeps (if asked) and captures the caller's leg up to
the maximum length; the platform stores the audio and the walker's
recording-complete webhook files it as a flow_record recording, visible in
the call's recordings. Needs the call-recording add-on: without it the
node records nothing and the flow simply continues on its success handle.
To take a message, use the Voicemail node. Record no longer makes
voicemail: the old saveAs: "voicemail" option and the
confirmVoicemail / discardVoicemail nodes were removed in the voicemail
rebuild (a flow that still carries them is rewritten to the Voicemail node).
The node continues immediately (it does not wait for the recording to be saved).
When to use it
- "I agree" contractual confirmation — record the spoken consent.
- Read-back QA capture during an order-taking flow.
- An open-ended survey answer.
Configuration
Record the caller for compliance or QA. Needs the call-recording add-on. To take a message, use the Voicemail node.
| Field | Label | Type | Required | Default | Notes |
|---|---|---|---|---|---|
| saveAs | Save the recording as | select | Optional | "" | Options: ``, audioAsset. Record by phone (*86) uses this. A prompt take stays a draft until the flow saves it; unsaved takes are removed after a day. |
| mode | Mode | text | Optional | "" | |
| recordedBy | Recorded by (user id) | text | Optional | "" | |
| recordedByExtension | Recorded on extension | text | Optional | "" | |
| maxLengthSecs | Max length | select | Optional | 30 | Options: 30, 60, 120, 180, 300. |
| playBeep | Play beep before recording starts | boolean | Optional | false | A short tone so the caller knows recording has started. |
| finishOnKey | Finish on key press | select | Optional | "" | Options: ``, #, *. Lets the caller end the capture early by pressing this key. |
| silenceTimeoutSecs | Stop after silence (seconds) | number | Optional | 0 | Ends the capture after this many seconds of silence. 0 or blank = off. Clamped to 60. |
Outgoing events: call.recording.saved, call.hangup
Examples
Consent capture
{
"id": "consent-capture",
"type": "record",
"config": { "maxLengthSecs": "60", "playBeep": true },
"on": { "call.recording.saved": "thank-you", "call.hangup": "end" }
}
Gotchas
- Gated by the call-recording add-on. Without it the node is a no-op that advances — the Voicemail node is the one that is never gated.
- The recording notice plays first when the caller has not heard it.
With
mode: start, if nothing earlier on the call said it is recorded (the start-of-call notice, the AI assistant's line), the platform's recording notice ("Thanks for calling {business}. This call is recorded.") plays once, then the recording starts. This holds in a sub-flow or a flow a transfer reached. If the notice cannot be fetched, the recording does not start and the flow carries on. It cannot be turned off or replaced. - Multiple records in one call make multiple recordings. Each capture is its own row; a re-fired webhook is idempotent.
maxLengthSecsis enforced by the platform. The capture stops at the cap, mid-sentence if need be.- Handled by
handle_recordinrust/crates/heyquad-walker-core/src/walk.rs.
