T
Telephony SOPKnowledge Base
Search
← All topics

Voicemail Drop — Pre-Recorded Outbound Voicemail Delivery

runnable

Voicemail drop is the practice of placing an outbound call, detecting the recipient's voicemail beep, and playing a pre-recorded message — agent never speaks live. Implemented via SignalWire AMD (Answering Machine Detection) + SWML `play` triggered on `machine_end_beep` event. TCPA compliance requires prior express written consent for telemarketing; transactional drops are looser but still rule-bound. Often misused — handle with care.

voicemail-dropoutbound-voiceamdanswering-machine-detectionsignalwire
Agent trigger phrases: voicemail drop · pre-recorded voicemail · AMD answering machine detection · ringless voicemail · drop a voicemail · outbound voicemail

Voicemail Drop

Voicemail drop is the outbound pattern where an agent (or automated dialer) places a call, detects the answering machine, plays a pre-recorded message, and hangs up. The recipient gets a voicemail; the agent never speaks live, saving time on cold outbound where most calls go to voicemail anyway.

Often conflated with ringless voicemail (RVM) — which is a different and far more legally treacherous technique. See the section below.

How it works

  1. Outbound call placed via SignalWire REST API.
  2. AMD (Answering Machine Detection) runs during ringing — listens to the answer audio and classifies: human, machine, fax, unknown.
  3. If machine detected, wait for the beep ("machine_end_beep" event).
  4. After the beep, play the pre-recorded message via SWML play.
  5. Hang up.
  6. If human detected, the dialer can either (a) play a different message, (b) hand off to a live agent, or (c) hang up to avoid abandoned-call concerns.

SignalWire AMD integration

Compatibility API (LaML)

client.calls.create(
    to="+13105551234",
    from_="+12125551111",
    url="https://your.api/voicemail-drop.xml",
    machine_detection="DetectMessageEnd",
    machine_detection_timeout=10,
    machine_detection_speech_threshold=2400,
    machine_detection_speech_end_threshold=1200,
    machine_detection_silence_timeout=5000,
)

machine_detection="DetectMessageEnd" tells SignalWire to wait through the voicemail greeting and only fire the callback after the beep — so the recording starts in the actual message slot, not over the outgoing greeting.

The webhook URL receives a AnsweredBy parameter:

| AnsweredBy value | Meaning | |---|---| | human | A person answered | | machine_start | Voicemail/IVR started (early detection) | | machine_end_beep | Voicemail beep detected, message slot open | | machine_end_silence | Machine ended without a clear beep | | machine_end_other | Machine ended via tone or hang-up | | fax | Fax tone detected | | unknown | Detection inconclusive |

Response XML for voicemail drop

<Response>
  <Play>https://cdn.example.com/voicemail-drop-v3.mp3</Play>
  <Hangup />
</Response>

SWML version

version: 1.0.0
sections:
  main:
    - answer:
        answer_on: machine_end_beep
    - play:
        url: https://cdn.example.com/voicemail-drop-v3.mp3
    - hangup: {}

AMD tuning parameters

| Parameter | Default | Description | |---|---|---| | machine_detection_timeout | 30 sec | Max time to make a detection decision | | machine_detection_speech_threshold | 2400 ms | Min duration of initial speech to consider it a machine greeting | | machine_detection_speech_end_threshold | 1200 ms | Silence after greeting to call it "ended" | | machine_detection_silence_timeout | 5000 ms | Silence period that indicates a human pause vs. machine end |

Tune for your audience: business phones with long voicemail greetings need longer thresholds; personal mobile voicemails are shorter.

AMD accuracy and the cost of being wrong

AMD is not perfect. Industry-typical accuracy: 90-95% on human/machine distinction. Failure modes:

| Failure | Consequence | |---|---| | Human classified as machine | Pre-recorded plays over a live person's "hello" — embarrassing, annoying, possibly TCPA violation | | Machine classified as human | Voicemail drop didn't fire, no message left | | Beep missed | Message plays mid-greeting, partially recorded |

Production callbacks should handle the ambiguity:

if answered_by == "human":
    return live_message_response()  # different copy, or hand to agent
elif answered_by in ("machine_end_beep", "machine_end_silence"):
    return voicemail_drop_response()
elif answered_by == "machine_start":
    # too early — voicemail greeting still playing
    return hold_response()  # wait, or call back
else:
    return hangup_response()  # don't risk it

Voicemail drop vs ringless voicemail (RVM)

Critical distinction. Both deliver pre-recorded messages but the mechanism is different.

| Attribute | Voicemail drop | Ringless voicemail (RVM) | |---|---|---| | Mechanism | Standard outbound call, AMD-triggered drop | Direct insertion to voicemail server, bypassing the phone ring | | Recipient experience | Phone rings, may show missed call | No ring, voicemail appears | | Carrier interaction | Standard PSTN call setup | Server-side voicemail injection (often deemed not a "call" by vendors) | | TCPA status | Treated as an outbound call → subject to TCPA full | Vendor argument: not a call, not subject to TCPA. FCC and most courts disagree. | | Risk | Manageable with consent | High legal risk |

SignalWire does not offer RVM as a product. Voicemail drop via AMD is the supported, legally safer path.

TCPA compliance

The 1991 Telephone Consumer Protection Act regulates auto-dialed and pre-recorded calls. Voicemail drop is unambiguously a pre-recorded call.

Required consent

| Call type | Required consent | |---|---| | Pure transactional (appointment reminder, delivery notification) | Implied or express consent (relationship establishes it) | | Service notification (account changes, security alerts) | Express consent (opted into the relationship) | | Telemarketing / promotional | Prior express written consent (PEWC) — signed disclosure with TCPA-compliant language |

PEWC is the strict standard. Requires:

  • Signature (electronic OK)
  • Clear and conspicuous disclosure of marketing nature
  • Identifies the seller
  • Specifies the called party's phone number
  • Acknowledges that consent is not a condition of purchase

Penalties

TCPA private right of action: $500-$1500 per violation. Class actions over voicemail drop campaigns regularly settle for tens of millions.

Time of day restrictions

Federal rule: telemarketing calls only between 8 AM and 9 PM local time of the called party. Voicemail drop counts.

Do-Not-Call registry

Telemarketing voicemail drops to numbers on the National DNC list = $1,500/violation. Scrub the call list against DNC weekly minimum, ideally daily.

State-by-state additional rules

| State | Additional rule | |---|---| | California | Mini-TCPA (CIPA) — adds wiretap-style claims for unconsented recordings | | Florida | FTSA — explicit written consent for autodialed calls; stricter than TCPA | | Washington | Mini-TCPA — robocall restrictions | | Oklahoma | TCPA OK — similar to Florida |

A Florida FTSA voicemail drop without compliant consent is $500 per call minimum, with class action exposure.

Production patterns

Pattern 1: Transactional reminders

Appointment reminders, delivery confirmations, account alerts.

  • Consent: established by the prior business relationship
  • Time: still observe 8 AM - 9 PM local
  • DNC scrub: not required (transactional exemption)
  • Sample: "This is a reminder that your appointment with Dr. Smith is tomorrow at 2 PM. Reply HELP or call us back to change."

Pattern 2: Two-stage outbound (live attempt → voicemail drop)

Live agent dials. If human answers, agent talks. If machine answers, agent triggers the drop button — pre-recorded plays, agent moves to next call.

def agent_drop_voicemail(call_sid, message_url):
    client.calls(call_sid).update(
        twiml=f"""
            <Response>
                <Play>{message_url}</Play>
                <Hangup />
            </Response>
        """
    )

This is the most defensible pattern because a human is attempting live conversation first — the drop is just a polite "leave a message" move.

Pattern 3: Pure automated voicemail-drop campaign

Dialer auto-runs through a list, AMD-triggers drop on every voicemail. Highest TCPA risk. Only acceptable with iron-clad PEWC, DNC scrubbing, and recording.

Carrier-level filtering

Even with consent, carriers may filter:

  • STIR/SHAKEN unverified outbound calls get "Spam Likely" tag → answer rate drops
  • High-volume short-duration calls trigger carrier robocall mitigation → blocked or rate-limited
  • Same caller ID dialing many numbers per minute flags as robodialer → blocked

Mitigation: see STIR/SHAKEN, use multiple numbers, pace the dial rate (5-15 calls per minute per number).

Quality and content

Recorded message best practices:

  • Identify yourself within 3 seconds
  • State the purpose immediately
  • Provide a call-back number
  • Provide opt-out instructions (per TCPA)
  • Keep under 30 seconds

Required opt-out language (TCPA 47 CFR 64.1200(a)(7)):

"If you do not wish to receive future calls from us, you can request to be added to our internal do-not-call list by pressing 9 now, or by calling [number]."

For pre-recorded marketing calls, the opt-out mechanism must be activated within 2 seconds of the message ending. Press-9 to opt out is the standard implementation.

Common pitfalls

  • AMD misclassifying human as machine — embarrassing UX, possible TCPA hit. Tune thresholds, test with diverse voicemail systems.
  • Playing the message over the greeting — use DetectMessageEnd not Enable for AMD mode.
  • No opt-out mechanism — TCPA violation by default, even for compliant consent.
  • Dialing outside permitted hours — caller's local time, not the dialer's.
  • DNC violations on stale lists — scrub recently.
  • Calling RVM "voicemail drop" — different products, different risk profiles. Don't conflate.

Related patterns

References

  • TCPA 47 USC §227 — Telephone Consumer Protection Act
  • 47 CFR §64.1200 — TCPA implementing rules including opt-out requirements
  • FCC Declaratory Ruling on Ringless Voicemail (2017)
  • Florida FTSA Fla. Stat. §501.059
  • SignalWire docs — AMD (Answering Machine Detection) parameters