Skip to main content
The Collect Data tool lets your AI agent gather specific information from callers-email, phone, license plate, address, or any custom field-with built-in validation and confirmation. A specialized sub-agent temporarily takes over: it asks for the data, handles voice quirks (“dot” for ”.”, letter-by-letter spelling), validates, reads it back, and only accepts it once the caller explicitly agrees. Then it hands control back to your main agent with the confirmed value.

Data Types

telli has five built-in data types, each with its own specialized sub-agent:
How It Works During a Call
  1. Main agent calls the tool-Based on your prompt, it calls collect_data with the relevant key(s).
  2. Sub-agent takes over-A type-specific sub-agent takes control; the main agent pauses.
  3. Collection flow-The sub-agent asks for the data, processes voice quirks, validates, re-asks on failure, reads the value back, and waits for explicit confirmation in a separate speech turn (so it can’t confirm its own readback).
  4. Outcome-Either confirmed (caller agreed) or declined (caller refused, with a reason).
  5. Main agent resumes-Control returns with the value, and the main agent is instructed to never re-ask or re-confirm an already-confirmed value.
You can collect multiple fields in one call (e.g. @collect_data for email and case_number together); the sub-agents run in sequence within the same task group.
Every task has a behavior setting:
  • Auto (default)-The sub-agent runs its built-in collection flow (ask, validate, read back, confirm). Optimized for accurate voice collection; no configuration needed. Best for most use cases.
  • Custom Prompt-Additional instructions (max 4,000 characters) appended to the built-in flow. Lets you customize how the agent collects without replacing the core validation. For example, greet the caller by name first, reassure a hesitant caller, or ask them to read a code slowly one digit at a time.
Custom prompts are appended, not a replacement-the core validation and confirmation flow always runs regardless.

Integration & Prompt

Collected data appears in the call_ended webhook under collected_data (or null if no tasks were triggered):

Outcomes vs. Collected Data

Use both together: collect the email with @collect_data:email (verified), and use a call outcome to score whether they’re a qualified lead (AI analysis).

Workflows-Automating What Happens After the Call

Workflows are telli’s visual automation system: define what happens after a call ends-send a webhook, update your CRM, fire an email, schedule a follow-up-based on collected data and call outcomes. Each workflow is linked to a specific agent and triggers on Call Ended (call data available) or Contact Created (no call data).
A Call Ended workflow can reference everything from the call; values are unwrapped automatically ({{callOutcome.sentiment}} gives "positive" directly):

Full Example

Collected Data gives verified, caller-confirmed input. Call Outcomes give AI-derived analysis of what happened. Workflows let you act on both-automatically, every time.

Tips and Best Practices

  • Use descriptive keys-customer_email beats email_2 when reading webhook payloads.
  • Write clear descriptions-They tell the AI when to use each task. “Collect the email when they request an order confirmation” beats “Email collection.”
  • Set appropriate constraints-If a code is always 8 characters, set an exact length so partial input is rejected.
  • Don’t over-collect-Each task adds a formal ask-validate-confirm flow. Reserve it for data where accuracy and structure matter.
  • Test with voice-The flow is optimized for voice; call your agent and dictate data to check it feels natural.
  • Use Auto first-Built-in flows are well-tested. Switch to Custom when you need specific adjustments.
  • Check the status field-Don’t assume every value is confirmed. Handle declined, error, and in_progress gracefully.