Voicerecordstable

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.

FieldLabelTypeRequiredDefaultNotes
saveAsSave the recording asselectOptional""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.
modeModetextOptional""
recordedByRecorded by (user id)textOptional""
recordedByExtensionRecorded on extensiontextOptional""
maxLengthSecsMax lengthselectOptional30Options: 30, 60, 120, 180, 300.
playBeepPlay beep before recording startsbooleanOptionalfalseA short tone so the caller knows recording has started.
finishOnKeyFinish on key pressselectOptional""Options: ``, #, *. Lets the caller end the capture early by pressing this key.
silenceTimeoutSecsStop after silence (seconds)numberOptional0Ends the capture after this many seconds of silence. 0 or blank = off. Clamped to 60.

Outgoing events: call.recording.saved, call.hangup

Examples

{
  "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.
  • maxLengthSecs is enforced by the platform. The capture stops at the cap, mid-sentence if need be.
  • Handled by handle_record in rust/crates/heyquad-walker-core/src/walk.rs.

See also