Overview
Connecting a voice AI provider to Voxfra takes two steps:- Create the inbound webhook in the Voxfra admin console — this gives you a unique URL for the client.
- Configure your provider to POST call events to that URL.
Step 1 — Create an inbound webhook in Voxfra
Open client settings
In the admin console, navigate to your organization, select the client you want to connect, then open Settings → Webhooks → Inbound.
Create a webhook endpoint
Click Create Webhook. In the dialog:
- Provider — select the voice platform you use (e.g.
Vapi). - Advanced security & access (optional) — expand to configure:
- IP allowlist — restrict incoming requests to your provider’s IP ranges.
- HMAC Secret — generate or paste a secret for payload signature verification. Save this value — it is shown only once.
Step 2 — Configure your provider
Vapi
Vapi supports server URLs at three levels — organization, assistant, and phone number — in ascending priority. We recommend setting the Voxfra URL at the assistant level so it applies precisely to the assistant you want tracked and does not interfere with other org-level configuration.
Open the assistant in Vapi
Go to your Vapi dashboard → Assistants → select the assistant that handles calls for this client.
Set the server URL
In the assistant editor, scroll to Advanced → Server URL (or Server Configuration depending on UI version) and paste the webhook URL you copied from Voxfra.
Select the end-of-call-report message type
Under Server Messages, enable
end-of-call-report and disable any message types you don’t need. Voxfra expects the end-of-call report and ignores other message types.Sending only end-of-call-report reduces noise and keeps your rate limit headroom clear.See Vapi — Setting Server URLs for the full reference on server URL priority and message type selection.
| Field | Required | Notes |
|---|---|---|
call.id | Yes | Used for idempotency |
call.status | Yes | Must be completed |
call.startedAt / call.endedAt | Yes | ISO 8601 timestamps |
customer.number | Yes | Caller phone number |
transcript | Recommended | Full call transcript |
recordingUrl | Optional | Direct audio link |
analysis.summary | Optional | Populated by Vapi if configured |
analysis.sentiment | Optional | |
analysis.intent | Optional |
Retell
In the Retell dashboard, go to Agent Settings → Webhook and paste your Voxfra webhook URL. Retell posts a call-ended event automatically at the end of each call.Bland
In Bland’s dashboard, go to Integrations → Webhooks for your campaign and add the Voxfra webhook URL. Bland fires the webhook on call completion.LiveKit
In the LiveKit Cloud console, go to Webhooks → Add Endpoint and paste your Voxfra URL. Select the Room Ended event — LiveKit will post a room lifecycle payload when the session closes.ElevenLabs
In ElevenLabs, go to Conversational AI → Webhook in your agent settings and add the Voxfra webhook URL.Verifying delivery
Once configured, every inbound call report appears on the Inbound tab of client settings. For each endpoint you can see:| Column | What it shows |
|---|---|
| Status | active / inactive / revoked |
| Requests | Total payloads received |
| Last Used | Timestamp of the most recent delivery |
| HMAC | Whether signature verification is enabled |
Troubleshooting
Requests count is not incrementing
Requests count is not incrementing
- Confirm the webhook URL is pasted correctly in your provider dashboard — no trailing spaces or missing characters.
- For Vapi, verify the
end-of-call-reportmessage type is enabled in the assistant’s server messages list. - Check that the endpoint status in Voxfra is
active, notinactiveorrevoked. - Run a test call and inspect provider-side delivery logs for any HTTP errors returned by Voxfra.
Getting 404 responses
Getting 404 responses
The slug was not found or the endpoint is inactive. Either the URL was copied incorrectly or the endpoint has been revoked. Generate a new webhook URL in Voxfra and update your provider configuration.
Getting 429 rate limit errors
Getting 429 rate limit errors
The default rate limit is 1,000 requests per minute per endpoint. If you’re hitting this with legitimate traffic, contact support@voxfra.com to have the limit raised.
HMAC verification failing
HMAC verification failing
Ensure the HMAC secret in your provider’s webhook settings matches exactly what was generated in Voxfra (no extra whitespace). If you’ve lost the secret, replace the webhook endpoint — this generates a new URL and a new secret.