retellai-webhooks-eventsClaude Skill
Implement Retell AI webhook signature validation and event handling.
1.9k Stars
259 Forks
2025/10/10
| name | retellai-webhooks-events |
| description | Retell AI webhooks events — AI voice agent and phone call automation. Use when working with Retell AI for voice agents, phone calls, or telephony. Trigger with phrases like "retell webhooks events", "retellai-webhooks-events", "voice agent". |
| allowed-tools | Read, Write, Edit, Bash(npm:*), Bash(curl:*), Grep |
| version | 2.0.0 |
| license | MIT |
| author | Jeremy Longshore <jeremy@intentsolutions.io> |
| tags | ["saas","retellai","voice","telephony","ai-agents"] |
| compatible-with | claude-code, codex, openclaw |
Retell AI Webhooks Events
Overview
Handle Retell AI webhook events for call lifecycle, transcripts, and function execution.
Prerequisites
- HTTPS webhook endpoint
- Agent configured with webhook URL
Instructions
Step 1: Configure Webhook URL
// Set webhook URL in agent configuration await retell.agent.update(agentId, { webhook_url: 'https://your-app.com/webhooks/retell', });
Step 2: Webhook Endpoint
import express from 'express'; const app = express(); app.post('/webhooks/retell', express.json(), async (req, res) => { const { event, call } = req.body; switch (event) { case 'call_started': console.log(`Call started: ${call.call_id} from ${call.from_number}`); break; case 'call_ended': console.log(`Call ended: ${call.call_id}`); console.log(` Duration: ${call.duration_ms}ms`); console.log(` Status: ${call.call_status}`); if (call.transcript) { await saveTranscript(call.call_id, call.transcript); } break; case 'call_analyzed': console.log(`Analysis ready: ${call.call_id}`); console.log(` Summary: ${call.call_analysis?.call_summary}`); break; default: console.log(`Unhandled event: ${event}`); } res.status(200).json({ received: true }); });
Step 3: Handle Function Calls During Conversation
// When agent triggers a function, Retell calls your URL app.post('/functions/book-appointment', express.json(), async (req, res) => { const { patient_name, phone, date, time } = req.body.args; // Process the booking const booking = await bookAppointment(patient_name, phone, date, time); // Return response for agent to speak res.json({ result: `Appointment booked for ${patient_name} on ${date} at ${time}. Confirmation number: ${booking.id}`, }); });
Output
- Webhook handling for call lifecycle events
- Transcript storage on call completion
- Function execution during live calls
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| No webhook events | URL not configured | Set webhook_url on agent |
| Function timeout | Slow backend | Respond within 5 seconds |
| Missing transcript | Short call | Transcript only for calls > 5 seconds |
Resources
Next Steps
Common errors: retellai-common-errors
Similar Claude Skills & Agent Workflows
safe-file-deletion
6.2k
Enforces explicit user permission before any file deletion.
healthcheck
267.6k
Host security hardening and risk-tolerance configuration for OpenClaw deployments.
1password
267.6k
Set up and use 1Password CLI (op).
feishu-perm
267.6k
Feishu permission management for documents and files.
idapython
5.1k
IDA Pro Python scripting for reverse engineering.
webhook-signature-validator
1.0k
Validate webhook signature validator operations.