Which integration do I need?
| Your stack | Use | How calls arrive |
|---|---|---|
| Vapi | Native API key | Webhooks — you paste Zelto’s URL into Vapi |
| Retell | Native API key | Webhooks — you paste Zelto’s URL into Retell |
| Speechify | Native API key | Per-agent webhook — you set Zelto’s URL as the agent’s webhook_url |
| Telnyx | Native API key | Import assistants today; forward calls via Custom & other providers for now |
| LiveKit | Push from your worker | Your agent forwards each finished session with an API key |
| ElevenLabs | Native API key | Post-call webhook you add in ElevenLabs (signed), with hourly pull as backup |
| Anything else — Bland, Pipecat, in-house | Custom & other providers | You POST calls to /webhooks/calls |
What “connected” looks like
However a call arrives, the path through Zelto is the same:The payload is recorded
Zelto records the raw payload in an append-only log before anything else, so
ingestion is replayable and no delivery is lost.
A conversation appears
A row shows up in Conversations with the transcript and,
when present, the re-hosted recording.
Analysis runs
The call is analyzed in the background; findings attach as they
surface.
Verify your first call
Place a test call to your agent, then:- Open Conversations and confirm the call is listed with its transcript.
- Check the agent’s Connections card — it shows whether a webhook has arrived recently, the fastest “is anything getting through?” signal.
Troubleshoot a missing call
If a call doesn’t appear in Conversations, where you look depends on how it arrives:- Vapi or Retell — open the agent and check its Connections card. A recent “last call received” time means calls are flowing; “no recent calls” means nothing has arrived lately; “last webhook errored” means the most recent delivery reached Zelto but couldn’t be turned into a conversation. No calls at all? Re-check the webhook URL in the provider, and that the provider is actually sending events.
- LiveKit or a custom stack — check the HTTP response your code got back from
/webhooks/calls. A{ "received": true }body means Zelto accepted the call; a4xxreturns the reason in the body — a missing or wrongX-Zelto-Providerheader, a failed field validation, or an invalid API key. Fix the payload against the canonical fields in Custom & other providers, then re-send.
Related
- Integrations overview — every provider and channel.
- Vapi · Retell · Speechify · Telnyx · LiveKit · ElevenLabs · Custom & other providers
- Conversations — where ingested calls land.
- Quickstart — the five-minute version.

