Voicemail webhooks
Send new voicemails, transcripts and missed-call alerts straight into your CRM, helpdesk or custom app.
Where to set it up
On an existing mailbox
- Go to Premium Features > Voicemail > Mailboxes and edit the mailbox.
- Open the Webhooks & API tab.
- Turn on one or both options:
- Notify my system — new voicemail: sends a message when someone leaves a voicemail, and again when the transcript is ready (if transcription is on).
- Notify my system — missed call alert: sends a message when a caller hangs up during your greeting without leaving a message.
- Enter your address in Notification URL.
- Optional: enter a Security code (up to 64 characters).
- Click Save Mailbox.
When creating a new mailbox
The same settings appear in step 4 of the wizard, Webhooks (Optional).
The missed call webhook can also be switched on from the Alerts & Notifications tab, under Missed Call Alerts > API Webhook. Both switches control the same setting.
Click Webhook Documentation on the Webhooks tab to see example messages.
Tip: if your staff read voicemail in the Crazytel inbox, they already get live updates there. Webhooks are for sending voicemail into another system.
Events you will receive
| Event | When it is sent | Setting needed |
|---|---|---|
voicemail.received | A new voicemail has been recorded and saved. | Notify my system — new voicemail |
voicemail.transcription_completed | The voicemail transcript is ready. | Notify my system — new voicemail, and transcription turned on for the mailbox |
voicemail.missed_call | A caller hung up during your greeting without leaving a message. | Notify my system — missed call alert |
All enabled events go to the same Notification URL.
Example messages
New voicemail
{
"event": "voicemail.received",
"account_code": "ACC123",
"settings_uuid": "e830f0f5-5d93-455b-80a5-fbbdb9783f98",
"message_uuid": "b20e03be-fa9c-4861-acfa-647d9692487e",
"caller_id": "61400000000",
"destination_did": "61299999999",
"original_did": "61298786988",
"duration_seconds": 45,
"file_size_bytes": 720000,
"recording_url": "https://s3.crazytel.com/voicemail/messages/ACC123/...",
"retention_expires_at": "2026-12-03T00:11:00Z",
"created_at": "2026-06-03T00:11:00Z"
}
Transcript ready
{
"event": "voicemail.transcription_completed",
"account_code": "ACC123",
"settings_uuid": "e830f0f5-5d93-455b-80a5-fbbdb9783f98",
"message_uuid": "b20e03be-fa9c-4861-acfa-647d9692487e",
"caller_id": "61400000000",
"destination_did": "61299999999",
"original_did": "61298786988",
"duration_seconds": 45,
"transcript": "Hello, I was calling to check on the progress of our order.",
"transcription_cost": 0.075,
"created_at": "2026-06-03T00:12:00Z"
}
Missed call
{
"event": "voicemail.missed_call",
"account_code": "ACC123",
"settings_uuid": "e830f0f5-5d93-455b-80a5-fbbdb9783f98",
"caller_id": "61400000000",
"destination_did": "61299999999",
"original_did": "61298786988",
"hangup_cause": "NORMAL_CLEARING",
"occurred_at": "2026-06-03T00:13:00Z"
}
| Field | What it means |
|---|---|
settings_uuid | Which mailbox received the call. |
message_uuid | A unique ID for the voicemail. Links the "received" and "transcript ready" events. Not included on missed calls, because no message was left. |
destination_did | The number the voicemail was left on. |
duration_seconds | Length of the voicemail in seconds. |
file_size_bytes | Size of the audio file. |
recording_url | A temporary download link for the audio. It expires quickly, so download the file straight away if you need to keep it. For later access, use the message_uuid. |
retention_expires_at | When the voicemail will be automatically deleted under your retention settings. |
transcript | The text of the voicemail. |
transcription_cost | What the transcription cost, in dollars. |
Security
If you set a security code, each request includes:
X-CrazyVoicemail-Signature: <signature>
User-Agent: CrazytelVoicemail/1.0
The signature is plain hexadecimal, without a sha256= prefix. See Verifying webhook signatures.
Delivery and retries
- Your server should reply with a
2xxstatus within about 10 seconds. - If it does not, Crazytel tries again after 5 minutes, 15 minutes, 1 hour, 4 hours, then 12 hours. After 5 attempts the message is marked as permanently failed.
How to test
Leave a test voicemail on the mailbox, then check that your system received a voicemail.received message.
