Audit voice agents built with Bolna
Evidova reads the call Bolna reports when it is over, and scores the conversation inside it.
What it catches
Bolna tells you the call ran and how it finished. It does not tell you whether the agent did its job. Evidova reads the transcript Bolna sends with the completed call and scores it against the checks you approved.
- Whether the agent answered the question asked.
- Whether it said it was not a person when asked.
- Whether it promised something nobody authorised.
- Where the caller gave up.
Connect Bolna
- In Evidova, open Setup, choose Bolna, and paste your API key. Leave the signing secret empty unless something sits in front of Bolna that can add an Authorization header, because Bolna publishes no way to sign a delivery.
- Copy the URL we generate.
- In Bolna, set it as the webhook on your agent.
https://app.evidova.com/ingest/webhooks/bolna/<your-token>What we read from Bolna
| id | The call's identity. Required, and the delivery is refused without it |
|---|---|
| created_at | When the call started. Required as well |
| updated_at | When it finished. Falls back to created_at |
| status | What the delivery is worth. completed brings the transcript; no-answer, busy, failed, canceled, stopped, error and balance-low end the call with no turns; anything earlier records only that the call started |
| transcript | The turns, as one block of text. Every line beginning assistant: or user: becomes a turn, in the order given |
| user_number | The contact's number whichever way the call went, so repeat calls from one caller group |
| telephony_data.call_type, .from_number, .to_number | Used when user_number is absent. An inbound call takes from_number, an outbound one takes to_number |
| telephony_data.recording_url | Audio, kept on the end of the call |
What we ignore, and why
A transcript line beginning with neither assistant: nor user: is not a turn. Bolna gives us that block as plain text with no structure inside it, so a line in any other shape is left out rather than attributed to somebody.
A delivery that arrives before the call is over is not thrown away. It records that the call started, and the completed delivery that follows carries the same identity, so the two collapse into one call.
One trap worth knowing
One Bolna webhook carries one time for the whole call, to the second. Every turn in it would otherwise sit on that same second, and no reply would appear to have taken any time at all.
So we read the call back out of Bolna's own executions record and use the per-turn timings in it. That read needs your API key.
Without it the turns keep the single second the webhook gave them, and the delivery is kept anyway. So paste the API key: it is what makes a reply time on this platform mean anything.
What Bolna gives us
| Channel | voice |
|---|---|
| Audio | Yes |
| Timestamps | Seconds, on Bolna's clock |
| Delivery | Webhook, push |
| Retries | Bolna retries |
Questions about Bolna
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.