Connect
- Open Settings → Integrations → ElevenLabs and click Connect ElevenLabs.
- Paste your ElevenLabs API key. Create one at elevenlabs.io under your profile’s API Keys. We use it to fetch agent metadata and call data on demand.

Turn on real-time delivery
By default calls arrive via the hourly pull. To have them land within seconds instead, add an ElevenLabs post-call webhook that points at Zelto, then paste its signing secret back into the integration so Zelto can verify each delivery. The webhook is a workspace-level setting in ElevenLabs — it covers every agent in the workspace (you can also scope it per agent through an agent’s webhook overrides), and only workspace admins can configure it.1
Copy Zelto's webhook URL
Open Settings → Integrations → ElevenLabs → Manage. The card shows the
webhook URL Zelto exposes — copy it.
2
Create the webhook in ElevenLabs
In ElevenLabs, open Settings → Webhooks and create a webhook with HMAC
authentication pointing at Zelto’s URL. ElevenLabs shows the signing secret
once, at creation — copy it now.
3
Enable it for post-call transcription
In Agents → Settings, turn on post-call webhooks and select the webhook you
just created, so each finished call fires the
post_call_transcription event.
You don’t need to enable Send audio data — Zelto fetches each recording
itself over the authenticated audio endpoint.4
Paste the signing secret into Zelto
Back in the ElevenLabs card, paste the signing secret next to the matching
account and save. Zelto verifies every webhook’s
ElevenLabs-Signature
against it, so an unsigned or tampered request is rejected.
What gets ingested
Zelto ingests ElevenLabs Conversational AI calls two ways:- Post-call webhook — once the webhook above is configured, each finished call is pushed to Zelto with its transcript inline, so it lands as a conversation within a few seconds. The recording is fetched for you over the authenticated audio endpoint (ElevenLabs exposes no recording URL), so it re-hosts shortly after.
- Hourly pull + 14-day backfill — every imported agent is also pulled once an hour as a backfill and safety net, and importing an agent backfills its calls from the past 14 days. Re-import an agent at any time to refresh that history. The two paths dedupe on the ElevenLabs conversation id, so a call never lands twice.

tool_calls / tool_results — with
their name, arguments, and result. They render inline in the transcript, feed
the AI analysis, and are recorded as queryable
tool-call traces. Nothing to configure.
Verify the first call
Place a test call to your ElevenLabs agent, then open Conversations — with the webhook configured the call shows up within a few seconds with its transcript. If it doesn’t, the agent’s Connections card shows whether calls are arriving and flags the most recent delivery if it errored. A signed delivery that’s rejected usually means the signing secret in Zelto doesn’t match the one in ElevenLabs. See Connect a voice provider.Connection status & disconnecting
The card shows the connected account, the webhook URL, and whether a signing secret is configured. The Disconnect action removes the stored API key and signing secret; remove the webhook from your ElevenLabs settings separately to stop the push side.
Related
- Connect a voice provider — pick a path and verify ingestion.
- Conversations — where ElevenLabs calls land.
- Agents — how Zelto models each agent.
- Findings — what analysis surfaces from each call.
- Speechify · Retell · Vapi — the other native voice integrations.

