Skip to Content

Webhook Action

The Webhook action sends a POST request with call data to any URL you specify. This is the most flexible action type — it lets you connect BuildVoiceAI to any external system that can receive HTTP requests.

For most Zapier, Make, and n8n integrations, you may not need a workflow webhook action at all. BuildVoiceAI’s automatic webhook forwarding (configured in Settings → API & Webhooks) sends all call events to your endpoint without requiring individual workflow actions. Use the workflow Webhook action when you need conditional forwarding — for example, only sending data for calls longer than 60 seconds or with positive sentiment.

Configuration

FieldRequiredDescription
URLYesThe destination URL that will receive the POST request
Custom HeadersNoOptional HTTP headers to include with the request (e.g., authentication tokens)

Setting the URL

Enter the full URL where you want the call data sent. This must be a publicly accessible HTTPS endpoint.

https://your-server.com/api/call-webhook

Adding Custom Headers

If your endpoint requires authentication or custom headers, add them as key-value pairs. Common examples:

HeaderValuePurpose
AuthorizationBearer your-api-keyAPI key authentication
X-API-Keyyour-keyAlternative API key header
Content-Typeapplication/jsonAlready set by default

Payload Format

The webhook sends a JSON payload with the following structure:

{ "event": "call_ended", "call_id": "call_abc123", "agent_id": "agent_xyz", "agent_name": "Sales Agent", "status": "completed", "direction": "inbound", "from_number": "+14155551234", "to_number": "+14155555678", "duration_seconds": 245, "cost_cents": 37, "transcript": "Agent: Hello, thanks for calling...\nUser: Hi, I need help with...", "recording_url": "https://storage.example.com/recordings/abc123.mp3", "summary": "Caller inquired about pricing for the premium plan...", "sentiment": "positive", "started_at": "2026-03-16T14:30:00.000Z", "ended_at": "2026-03-16T14:34:05.000Z", "metadata": {}, "provider": "retell" }

All available call data is included in every webhook payload. You can ignore fields you do not need on the receiving end.

Use Cases

Zapier

Create a Zapier Zap with a “Webhooks by Zapier” trigger (Catch Hook). Zapier gives you a unique URL — paste that into the webhook URL field. You can then connect the call data to any of Zapier’s thousands of integrations.

Make (formerly Integromat)

Create a Make scenario with a “Webhooks” module (Custom webhook). Use the generated URL in BuildVoiceAI. Make will parse the JSON automatically and let you map fields to subsequent modules.

n8n

Set up an n8n workflow with a Webhook node. Use the production URL from n8n as your webhook URL. n8n runs self-hosted or in the cloud and provides full control over data processing.

Custom Backend

Point the webhook at your own API endpoint to process call data however you need. Common implementations include:

  • Storing call records in your own database
  • Triggering custom business logic based on call outcomes
  • Syncing data with systems that BuildVoiceAI does not natively integrate with
  • Building custom dashboards or reports

Testing Your Webhook

The fastest way to test is using the Send Test Webhook button in Settings → API & Webhooks. This sends a sample payload to your configured URL immediately, without needing to make a real call.

For testing workflow-specific webhook actions:

  1. Go to webhook.site  and copy the unique URL
  2. Paste it into the webhook URL field in your workflow action
  3. Make a Test Call with the agent assigned to this workflow
  4. Check webhook.site to see the incoming request and inspect the payload
💡

Always test your webhook before going live. This lets you verify the payload format, check for authentication issues, and confirm your endpoint processes the data correctly.

⚠️

Make sure your endpoint responds within 10 seconds. If the request times out, the action will be marked as failed in the Execution Log. For long-running processing, have your endpoint accept the request quickly and process the data asynchronously.

Last updated on