Skip to main content

Overview

Connecting a voice AI provider to Voxfra takes two steps:
  1. Create the inbound webhook in the Voxfra admin console — this gives you a unique URL for the client.
  2. Configure your provider to POST call events to that URL.
This guide walks through both steps for each supported provider.

Step 1 — Create an inbound webhook in Voxfra

1

Open client settings

In the admin console, navigate to your organization, select the client you want to connect, then open Settings → Webhooks → Inbound.
2

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.
Click Create Webhook.
3

Copy the webhook URL

After creation, the dialog shows your unique webhook URL:
https://api.voxfra.com/webhook/vapi/{your-slug}
Copy it — you’ll paste it into your provider’s dashboard in the next step. The URL is also accessible any time from the Inbound tab.

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.
1

Open the assistant in Vapi

Go to your Vapi dashboardAssistants → select the assistant that handles calls for this client.
2

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.
https://api.voxfra.com/webhook/vapi/{your-slug}
Setting the URL at the assistant level gives it the second-highest priority in Vapi’s hierarchy (phone number → assistant → organization). This ensures calls from this assistant always reach the correct Voxfra client endpoint, regardless of any org-level server URL you may have set.
3

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.
4

Save and test

Save the assistant. Run a test call, then return to Voxfra Settings → Webhooks → Inbound and confirm the Last Used timestamp and Requests count have updated for your endpoint.
Vapi minimum payload — Voxfra reads the following fields from the end-of-call report:
FieldRequiredNotes
call.idYesUsed for idempotency
call.statusYesMust be completed
call.startedAt / call.endedAtYesISO 8601 timestamps
customer.numberYesCaller phone number
transcriptRecommendedFull call transcript
recordingUrlOptionalDirect audio link
analysis.summaryOptionalPopulated by Vapi if configured
analysis.sentimentOptional
analysis.intentOptional

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:
ColumnWhat it shows
Statusactive / inactive / revoked
RequestsTotal payloads received
Last UsedTimestamp of the most recent delivery
HMACWhether signature verification is enabled
Click any row to view details, update the IP allowlist, toggle HMAC verification, or replace the endpoint with a new URL.

Troubleshooting

  • Confirm the webhook URL is pasted correctly in your provider dashboard — no trailing spaces or missing characters.
  • For Vapi, verify the end-of-call-report message type is enabled in the assistant’s server messages list.
  • Check that the endpoint status in Voxfra is active, not inactive or revoked.
  • Run a test call and inspect provider-side delivery logs for any HTTP errors returned by Voxfra.
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.
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.
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.