Skip to main content
An agent in Zelto is the bot (or human) on the other end of a conversation. Each agent belongs to one organization and is tied to the provider its calls come from — Vapi, Retell, or LiveKit — or to none at all when you upload calls directly.

Anatomy of an agent

Agents are created the first time a call references them: ingestion looks up the provider’s external id and reuses the matching agent, or creates one if it’s new. If a provider rotates external ids from call to call, Zelto can collapse those onto a single agent with an org-level pattern, so you don’t accumulate duplicates.

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. When an agent has a decision tree and mapped calls, its Decision Tree tab also shows a flow diagram of how calls moved between the tree’s steps. It only includes steps that calls actually traversed, so it stays out of the way until mappings are available for that prompt version. 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: Recording the raw payload first means ingestion is always replayable, so a delivery is never lost even if processing has to be re-run.

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.
If a call never showed up, start here. For which signal to check per provider, see Connect a voice provider.

Test a prompt change before shipping

When Simulations are enabled for your organization, you can draft a candidate prompt on an agent and replay it against synthetic callers to see whether an edit is safe — without placing a real call. Run the same scenarios against your live prompt and against the candidate, then compare pass rates. See Simulations. Owners and admins can create a candidate from either the Versions tab or the Prompt tab. On the Prompt tab, enter a version name and select Create version to save the prompt currently in the editor as a draft. This does not change the live agent, including when the editor contains a prompt you just fetched from Retell.

Recording storage

Most providers hand Zelto a recording URL that stays valid — Vapi, for example, returns a permanent URL that Zelto stores as-is. Some providers instead return a short-lived presigned URL that expires within the hour. For those, a background job downloads the audio and re-hosts it on Zelto storage, so the player on the conversation detail page keeps working long after the upstream URL is gone.