---
id: structured-outputs
title: Call data
slug: /structured-outputs
description: Define the details you want captured from every call — name, email, budget, whether they qualified — and get them back as data instead of prose.
keywords:
  - structured outputs
  - call data
  - fields
  - data capture
---

**Call data** turns a conversation into named fields. Where a call summary is
prose you have to read, call data comes back as **a value per field** — the
caller's email, whether they qualified, which service they asked about — so you
can act on it or send it into your own systems.

You define the fields once as a **field set** and attach it to the agents that
should fill it in. Open it from **Build → Call data**.

:::note
This feature was previously called **Structured Outputs**. Existing field sets
and API names are unchanged.
:::

## Create a field set

1. Open **Call data** and choose **New**.
2. Give it a **name** and a short **description** of what it captures.
3. Add the **fields** you want filled in.
4. **Link at least one agent** — a field set does nothing until an agent uses it.

## Field types

| Type | Use it for |
| --- | --- |
| **Text** | Names, addresses, free answers. |
| **Number** | Quantities, budgets, counts. |
| **Boolean** | Yes/no facts — qualified, consented, existing customer. |
| **Multiple Choice** | A fixed set of answers you list yourself. |

Each field has a **name** and a **required** toggle. Name fields the way you want
to see them in your own data (`customerName`, `budget`) rather than as a
question. The name is the key you will read later, not something the caller
hears.

For **Multiple Choice**, list the options you will accept, such as
`Email, Phone, SMS, None`. A small, distinct set is far more likely to return the
right one.

:::tip
Mark a field **required** only when the call genuinely cannot be useful without
it. Every required field is something the agent has to steer the conversation
toward.
:::

## Link agents

A field set applies to the agents you link, and one set can serve several. Reuse
a set across agents doing the same job so their results stay comparable; create
separate sets when the data you need is different.

You can also link a field set from an agent's own **Knowledge & call data** tab.
See [Agents](./agents.md).

## Where the data shows up

Captured values appear on the call in [Calls](./calls.md) once it ends.

## Manage your field sets

The list is searchable by name. Each set can be viewed, edited or deleted.
Editing changes what is captured on **future** calls; data already collected is
not rewritten.

## Troubleshooting

| Problem | What to check |
| --- | --- |
| It won't save | At least one agent must be linked, and every field needs a name. |
| A field comes back empty | It was never asked or never answered. Mark it required, or adjust the agent's instructions to ask for it. |
| A multiple-choice answer looks wrong | The options may overlap. Make them distinct and include an explicit "None". |

## Next steps

- [Agents](./agents.md) — link a field set to the agent that should fill it.
- [Calls](./calls.md) — see captured data on each call.
