Audit voice agents built on ElevenLabs
Evidova reads the post-call transcript ElevenLabs already sends, and scores the call it describes.
What it catches
ElevenLabs hands you the transcript and the recording. It does not tell you whether the agent did the job you built it for. Evidova scores that transcript against the checks you approved: whether the agent answered what was asked, whether it said it was not a person when asked, whether it read back a price nobody gave it, which tool call failed, and where the caller gave up.
Connect ElevenLabs
- In Evidova, open Setup, choose ElevenLabs, and paste your signing secret.
- Copy the URL we generate.
- In the ElevenLabs dashboard, add it as a post-call webhook on the agent.
https://app.evidova.com/ingest/webhooks/elevenlabs/<your-token>What we read from ElevenLabs
| conversation_id | The call's identity. Required |
|---|---|
| metadata.phone_call.external_number | The caller's number on a telephone call, so repeat calls from one caller group. An embedded or in-app call falls back to the conversation id |
| metadata.start_time_unix_secs | When the call started |
| metadata.call_duration_secs | How long it ran. The end of the call is the start plus this, not an event of its own |
| transcript[].role, .message | The turns. Roles agent and user |
| transcript[].time_in_call_secs | When each turn happened, as whole seconds from the start of the call |
| transcript[].tool_calls, .tool_results | What the agent called, what came back, and whether it failed |
| version_id | Which build of the agent spoke |
What we ignore, and why
More than one kind of post-call webhook arrives at the same URL. We read post_call_transcription and nothing else. The audio-only delivery carries no metadata, so there is no call to file it under and nothing to score in it. A delivery we do not read still gets its 202 and is kept as the raw body. It just produces no turns.
One trap worth knowing
ElevenLabs signs the delivery time and the body together, and we refuse a delivery whose time is more than 30 minutes from our own clock. That limit is deliberate. It covers the documented retry backoff and ordinary clock drift, and it stops a delivery somebody captured being replayed at us the next day. A retry that arrives later than that is refused with a 401 and recorded against the connector, so it reads as a refusal you can query rather than a call that quietly never arrived.
What ElevenLabs gives us
| Channel | voice |
|---|---|
| Audio | Yes |
| Timestamps | Seconds, on ElevenLabs's clock |
| Delivery | Webhook, push |
| Retries | ElevenLabs retries |
Read next
- Quickstart: connect a platform · Ten minutes, one path, from a webhook to your first score.
- Webhook reference · The URL, the signature, and what we answer a delivery with.
- All twelve platforms · Every voice and chat stack Evidova reads, side by side.