Skip to main content
Collect Data lets your telli agent actively gather specific pieces of information from callers during a conversation — like an email address, a license plate number, or a case number. Unlike regular conversation where the agent just listens and responds, Collect Data runs a structured, interactive process: the agent asks the caller for the information, listens to their answer, reads it back for confirmation, and only saves it once the caller confirms it’s correct. This is especially important for voice calls where things like email addresses and reference numbers are easily misheard. The agent handles the back-and-forth of “Did you say S as in Sam or F as in Frank?” automatically.

Quick Start

1

Go to Agent Settings

Navigate to your Agent Settings and find the Collect Data section
2

Add a Data Task

Select the type (Email, License Plate, or Custom) and configure it
3

Set the key and description

For Custom: set a key (e.g., postcode, customer_id) and describe what to collect
4

Add validation rules (optional)

For Custom: add constraints like exact length, min/max length, or regex patterns
5

Update your agent prompt

Mention when the agent should collect this data in your system prompt
We recommend only using Collect Data with the ElevenLabs Turbo 2.5 model.

What Can You Use It For?

  • Email addresses — The agent spells it back letter by letter and confirms before saving
  • License plates — Currently supports German plates, including handling ambiguous area codes
  • Any custom data — Numbers, customer IDs, phone numbers, names, postal codes — anything you define with optional validation rules

Data Types

TypeWhat it collectsBuilt-in behavior
EmailAn email addressHandles noisy voice transcription, validates format, spells back for confirmation
License PlateA vehicle license plate (currently German only)Parses plate format, handles ambiguous area codes, confirms with caller
CustomAny freeform data you defineYou describe what to collect and optionally add validation constraints

Validation Constraints (Custom Type Only)

For custom data collection, you can add rules to make sure the agent collects values in the right format:
ConstraintWhat it doesExample
Exact LengthValue must be exactly N charactersA 6-digit code → length 6
Min/Max LengthValue must be between N and M charactersA reference number between 4–10 characters
AlphabetRestrict allowed character types (letters, numbers, special characters, spaces)Numbers only for a PIN code
RegExpMatch a specific pattern with a regular expressionA postal code pattern like ^\d{5}$
You can combine multiple constraints — for example, “exactly 8 characters” + “numbers only”.
Exact Length and Min/Max Length cannot be used together on the same task.

How It Works During a Call

  1. The agent decides to collect — Based on the conversation flow and your prompt, the LLM triggers the collect data tool
  2. A sub-agent takes over — A specialized mini-agent temporarily takes over the conversation, focused entirely on collecting that one piece of data
  3. Interactive back-and-forth — The sub-agent asks the caller, listens, and reads the value back for confirmation. If the caller corrects something, the agent updates and confirms again
  4. Caller confirms or declines — The caller either says “Yes, that’s correct” (confirmed) or “No, I don’t want to share that” (declined)
  5. Control returns — The main agent takes back over and continues the conversation, aware of what was collected
Example conversation flow (email):
Agent: “Could you please give me your email address?” Caller: “Sure, it’s john dot smith at example dot com” Agent: “Let me confirm — that’s j-o-h-n dot s-m-i-t-h at e-x-a-m-p-l-e dot c-o-m. Is that correct?” Caller: “Yes, that’s right.” Agent: “Perfect, I’ve got that noted down. Now, how can I help you further?”

Result Statuses

Each collected data field ends up with one of these statuses:
StatusMeaningColor
ConfirmedThe caller confirmed the value is correct🟢 Green
DeclinedThe caller chose not to share the information🟡 Yellow
ErrorSomething went wrong during collection🔴 Red
In ProgressCollection was started but the call ended before it completed⚪ Gray

Where to See Collected Data

  • Call Details — Open any call and you’ll see a Collected Data section showing each field with its value and status
  • API — The collected_data field is included in call responses from the telli API, with each key mapped to { status, value }
  • Webhooks — The call_ended webhook includes the collected data, so you can automatically process it in your own systems (e.g., save the email to your CRM)

Best Practices

Be Specific in Descriptions

Instead of “Get the email”, write “Ask the caller for their email address after confirming they want to receive a confirmation email”.

Guide Timing in Your Prompt

Tell the agent when during the conversation to ask for the data. Asking at the right moment feels more natural.

Use Constraints for Structured Data

If you know a case number is always 6 digits, add an exact length + numbers-only constraint. This prevents the agent from accepting invalid values.

One Task Per Data Point

Create separate tasks for each piece of information you need (e.g., one for email, one for case number).

Keys Must Be Unique

Each task needs a unique key. The key is used in the API and webhooks to identify the data.

Good to Know

  • The specialized sub-agent that handles collection is designed to be resilient to voice transcription errors — it knows that “at” might be transcribed as ”@” or that letters can sound similar
  • You can configure multiple collect data tasks on a single agent — the agent will handle each one when appropriate during the call
  • Task keys must start with a letter or underscore, followed by letters, numbers, or underscores (e.g., email, case_number, customer_id_2)
  • Collected data is stored on the call record permanently — it’s available in the API and webhooks even after the call ends
For the best experience, test your data collection with real voice calls to ensure the agent handles transcription errors and confirmation flows smoothly.