
The Contacts page, showing each contact's conversation count and last conversation.
When to use it
- Your CRM is the source of truth. Sync contacts in from Salesforce or HubSpot and map their fields to agent variables once, instead of passing the same values on every API call.
- Conversations span more than one call. When a long call drops or the person calls back, the agent picks up with the context from last time rather than restarting discovery.
- You run follow-up or chase sequences. The next call can act on what the last one produced.
- You want one set of fields across agents. Post-call data mappings are set per workspace, not per agent, so every agent writes to the same contact fields.
Example
A tutoring company runs 20-minute enrollment calls. They storeprogram_interest, budget_range, and last_topic_discussed as contact fields, filled from post-call analysis. When a prospect calls back after a dropped call, the agent already has all three and resumes at the pricing conversation instead of starting over.
How contacts are created
Contacts arrive three ways, and all of them match on phone number:- Automatically, after a conversation. When a phone call or SMS chat ends, Retell looks up the number (the caller’s number on inbound, the number you dialed on outbound). If no contact matches, it creates one, then updates the contact’s conversation count and last-conversation time. Web calls and web chats have no phone number, so they don’t create contacts.
- Manually, from Actions → Add contact.
- From your CRM, if you’ve connected Salesforce or HubSpot and configured inbound sync.
Add a contact

Everything on the Contacts page that changes data lives in the Actions menu.
Open the form

The Add Contact form, with the workspace's custom fields below the built-in ones.
Enter the phone number
+14155552671. This is the key everything else matches on.Fill in the rest
Create
Work with the contacts table
The table lists every contact in the workspace with these built-in columns, plus one for each custom field you’ve defined:Open a contact
Selecting a row opens a panel with two halves:- Contact information lists every field on the record and lets you edit them in place. Saving an edit on a CRM-linked contact also pushes the change back to your CRM, if outbound sync is configured.
- Conversations lists the calls and chats attached to that number, newest first, with total time and a split of inbound calls, outbound calls, and messages. Selecting one opens the full session.

A contact's fields on the left, every call and chat with that number on the right.
Define contact fields
Beyond the built-in fields, you can define custom fields to store anything else you want to keep about a person. Open Actions → Manage contact fields. The fields table shows, for each field, its type, the CRM field it syncs with, the post-call analysis field that writes to it, and when it last changed.
Contact fields, with CRM sync and post-call mappings shown per field.
Add the field

Adding a contact field. The type can't be changed once the field exists.
Name it
contact or external (both reserved), and can’t repeat an existing field.Describe what it holds
Map it to post-call data (optional)
- Overwrite replaces the stored value every time.
- Fill only if empty writes once and leaves it alone after that.
- Accumulate & summarize merges the old and new values with a model, following your field description.
Use contact data in a conversation
When a phone call starts, Retell looks up the contact by number and passes its fields to the agent as dynamic variables:first_name, last_name, do_not_call, and one per custom field, each named after the field. Reference them in the prompt the same way as any other dynamic variable, for example {{first_name}}.
This applies to inbound calls, outbound calls, and batch calls. Chats update contacts after they end, but don’t receive contact fields as variables. If no contact matches the number, the variables are simply absent, so write prompts that read naturally without them.
Backfill fields from past conversations
New mappings only apply going forward. To apply one to conversations that already happened, select Actions → Backfill from Post-Call Data, choose which fields to fill, and scope the run by agent and call time.
Backfilling contact fields from conversations that already happened.
- You need at least one post-call data mapping configured, or the run is rejected.
- One backfill runs at a time per workspace. Starting a second returns “A backfill job is already running.”
- Progress shows as a banner on the Contacts page while the job runs.
Keep contacts in sync with your CRM
With Salesforce or HubSpot connected, contacts sync both directions: CRM records flow in as contacts, and edits flow back out. Two entries in the Actions menu control it, both disabled until a CRM is connected:- Manage CRM sync opens the field mapping settings. See CRM data mappings.
- Run full sync re-imports the full contact set instead of waiting for the next scheduled sync.
Who can use it
Contacts needs CRM view permission to open, and CRM edit permission for anything that changes data: adding contacts, editing fields, running a backfill, or triggering a full sync. Without edit permission the controls are visible but disabled. See Access Control.FAQ
Can I import contacts from a CSV?
Can I import contacts from a CSV?
Why do contacts appear that I never added?
Why do contacts appear that I never added?
Why doesn't a contact show a conversation I know happened?
Why doesn't a contact show a conversation I know happened?
Can I delete a contact?
Can I delete a contact?
What happens to my contacts if I disconnect the CRM?
What happens to my contacts if I disconnect the CRM?

