Anatomy of an agent
| Field | What it holds |
|---|---|
| Name | Display name, editable in Zelto and independent of the provider. |
| Description | Optional free-text note. |
| System prompt | The agent’s prompt, shown next to transcripts when you review and audit it. |
| Provider | The stack the calls came from (vapi, retell, livekit), or empty for direct uploads. |
| External ID | The provider’s own id for the agent — how Zelto matches incoming calls to an existing agent. |
| Type | ai for a bot, human for a person on the line. |
Agent activity
Click into an agent for a call-volume trend chart, an hour-by-day heatmap, and its most recent conversations, alongside its system prompt and the findings surfaced from its calls. Each agent can also post a daily status message to Slack — yesterday’s conversation count, at a time you choose — once Slack is connected.How calls reach an agent
Every payload Zelto receives lands in the append-only webhooks table first, then becomes a conversation with a turn-by-turn transcript. How each provider delivers a call:| Provider | How calls arrive |
|---|---|
| Vapi | One end-of-call-report webhook per finished call. |
| Retell | call_ended, then call_analyzed once Retell finishes its own post-call pass. |
| LiveKit | Your worker POSTs each finished session to /webhooks/calls. |
| Custom & other | POST the canonical call payload to /webhooks/calls. |
Connection status
Each agent’s detail page carries a Connections card — the at-a-glance signal that calls are reaching Zelto. It names the provider the agent ingests from and reports on the last call received:- “Last call received 2 hours ago” — calls are flowing; ingestion is healthy.
- “No recent calls” / “integration may be stale” — connected, but nothing has arrived lately. Place a test call, or check that the provider is still sending.
- “Last webhook errored” — the most recent delivery reached Zelto but couldn’t be turned into a conversation.
- “No calls received yet” — the agent has a provider but has never received a call.

