confirmVoicemailConfirm voicemail
Marks the most recent recording to be KEPT as a voicemail when the call ends — it's saved and the owner is emailed on hangup. Use after a 'review your mes…
type: confirmVoicemail status: stable sinceVersion: 0.1.0 seeAlso: [discardVoicemail, record, say, gatherDigits] keywords: ["confirmVoicemail", "confirm", "voicemail", "recording", "voice"]
What it does
Marks the most recent recording to be KEPT as a voicemail. It sets the
_commitVoicemailOnHangup flag on the run, then auto-advances via
node.on['__next'] to the next step. When the call ends, the call:status
hangup handler promotes that recording to a voicemail — saving it and
emailing the box owner.
This is the "send my message" path of a voicemail-review flow. It pairs with the Discard recording node, which is the "cancel / re-record" path. The node itself is a pure state marker — the actual save + email happen on hangup, so the caller hears whatever your downstream nodes say next (typically a short "your message has been sent, goodbye" then a hangup).
When to use it
- "Press 1 to send your message" branch of a review menu
- Immediately after a
recordstep when you want the recording kept as a voicemail with no review menu (record → confirm → goodbye → hangup) - After an upstream
customScriptvalidated the recording and decided to keep it
Configuration
The node has no configuration fields — it just marks the recording to keep.
Marks the most recent recording to be KEPT as a voicemail when the call ends — it's saved and the owner is emailed on hangup. Use after a 'review your message' menu when the caller chooses to send. Pairs with the Discard recording node for the cancel path. The flow continues immediately (typically to a goodbye prompt + hangup).
This node has no configurable fields.
Outgoing events: __next
Examples
Review menu — send branch
After a "press 1 to send, 2 to re-record" gather, "press 1" lands here, which flags the voicemail to commit on hangup, then plays a goodbye.
{
"id": "confirm-and-send",
"type": "confirmVoicemail",
"config": {},
"on": { "__next": "goodbye", "call.hangup": "end" }
}
The node advances synchronously after setting the flag — no webhook is involved; the save + email run when the call hangs up.
Gotchas
- The save happens on HANGUP, not here. This node only sets a flag.
If the call never reaches a hangup (e.g. it gets transferred away into
another flow that clears the flag), the voicemail may not commit. For
a plain leave-a-message flow, follow this node with a goodbye
say+hangupso the commit fires promptly. - No webhook event. Like
discardVoicemail, this node advances synchronously. Wire__nextas the outgoing edge — that's the only event the node looks up. - Hangup-fallback commits even without this node. The worker's
hangup handler will commit the most recent recording as voicemail by
default after a
recordstep.confirmVoicemailmakes that intent explicit (and survives adiscardVoicemailearlier in the flow by re-setting the keep flag).
