retellai-webhooks-eventsClaude Skill

Implement Retell AI webhook signature validation and event handling.

1.9k Stars
259 Forks
2025/10/10

Install & Download

Linux / macOS:

请登录后查看安装命令

Windows (PowerShell):

请登录后查看安装命令

Download and extract to ~/.claude/skills/

nameretellai-webhooks-events
descriptionRetell 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-toolsRead, Write, Edit, Bash(npm:*), Bash(curl:*), Grep
version2.0.0
licenseMIT
authorJeremy Longshore <jeremy@intentsolutions.io>
tags["saas","retellai","voice","telephony","ai-agents"]
compatible-withclaude-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

IssueCauseSolution
No webhook eventsURL not configuredSet webhook_url on agent
Function timeoutSlow backendRespond within 5 seconds
Missing transcriptShort callTranscript only for calls > 5 seconds

Resources

Next Steps

Common errors: retellai-common-errors

Similar Claude Skills & Agent Workflows