Skip to main content
Contact memory gives your Retell AI agents a running brief about a contact’s previous phone calls and SMS chats. Agents can save useful context after a conversation and recall it the next time they speak with the same person, without a connected CRM or an external database. Memory belongs to the contact, matched by phone number within your workspace. Different agents can contribute to and read the same memory.

When to use it

Use memory when the next conversation should pick up where the last one ended: a caller’s preferences, a request still waiting on a response, or an agreed callback. Use contact fields for structured facts you need to filter, map to a CRM, or reference individually, such as an account tier or renewal date. For example, Ada calls a home-services company about a repair. She prefers afternoon appointments and is waiting for a revised estimate. A follow-up agent can ask whether she received the estimate and offer an afternoon slot without repeating the intake questions. After she accepts the estimate, the next memory update can replace the unresolved request with the agreed next step.

How does contact memory work?

Saving and reading are separate agent settings. New agents default to saving off and reading on; check both switches on existing agents: Turn on both settings for an agent that should use and update memory. Reading alone doesn’t enable updates. Turning off saving stops future automatic updates; it doesn’t erase stored memory. With Use Contact Memory enabled, the agent uses saved context to personalize responses and asks only for missing information. The caller’s corrections take priority over saved values. The default prompt preserves useful context and unresolved items, removes resolved action items, and avoids repeating values already in contact fields. Memory is limited to 2,000 characters (as of September 2026). Automatic saving supports phone calls and SMS chats. Web calls and web chats don’t automatically save contact memory. A conversation with no usable user message doesn’t produce an update; a failed or empty memory generation leaves the previous memory unchanged.

Set up memory on an agent

1

Check storage and chat settings

Under Security & Fallback Settings, choose Everything or Everything except PII for data storage. Basic Attributes Only disables memory saving because a transcript is required. With Everything except PII, memory generation uses the redacted transcript.For a chat agent, enable Auto-Close Inactive Chats in Chat Settings first. Memory is updated when the SMS chat ends, not after each message.
2

Save conversations to memory

Open Post call memory settings and turn on Save conversation to memory. The Memory prompt appears below it.
Conversation flow editor with the expanded Post call memory settings section on the right. A blue outline highlights the section heading. Save conversation to memory is enabled beside a cost icon. Its description shows $0.005 per run and a Learn more link. The Memory prompt states that edits affect every agent in the workspace.

Enable saving in Post call memory settings. The prompt is shared across the workspace.

You can also use Save conversation to memory on the Workflow page. It controls the same agent setting and shows memory processing after the conversation ends.
3

Let the agent recall memory

Open Knowledge Base & Memory and turn on Use Contact Memory. You don’t need to attach a knowledge base or add a memory variable to your prompt for this setting to work.
Knowledge Base & Memory panel in the conversation flow editor, with the Use Contact Memory switch highlighted. The switch is off and its description says the agent can recall past interactions with a contact.

Use Contact Memory controls recall independently from saving.

4

Check the next conversation

After a phone call or SMS chat ends, open the matching contact under Data → Contacts and inspect Conversation Memory. On a later conversation with that number, an agent with Use Contact Memory enabled can use the stored context. Allow post-conversation processing to finish before checking.A browser test call alone won’t create contact memory. Use a phone or SMS conversation associated with the contact, or backfill eligible past conversations.

Customize what agents remember

Select the Memory prompt to open its editor. This prompt controls how memory is rewritten; it is separate from the agent’s conversation prompt.
Memory prompt dialog over the agent editor. The dialog explains that the prompt is shared across the workspace and includes an editable prompt, a character counter out of 2000, Reset to default, Cancel, and Save.

Edit the workspace prompt, or restore the default before saving.

A custom prompt can contain up to 2,000 characters (as of September 2026). For the home-services example:
Select Save to apply the prompt to future memory updates across the workspace. Editing it doesn’t immediately rewrite existing contacts. To use Retell’s default again, select Reset to default, then Save; Cancel discards the change. An over-limit prompt can’t be saved, and a failed save leaves the editor open with an error. You need CRM view permission to read the workspace prompt and CRM edit permission to change it, as well as permission to edit the agent. These permissions don’t require a connected CRM. See access control.

Skip questions memory already answers

In a conversation flow, select a Conversation or Subagent node, open Node Settings, and turn on Use memory to skip this node to make it skippable. Before entering a skippable node, the agent checks whether information already available satisfies an outgoing transition condition. It can use answers from the current conversation; with Use Contact Memory enabled, it can also use saved contact memory.
Patient Verification node selected on the flow canvas with Node Settings open. The Use memory to skip this node switch is off, with a docs link beside it. A blue outline highlights the switch and its description covering saved memory and information collected during this call.

Node skipping can use saved memory or information collected during the current call.

With both settings on, returning callers can skip nodes that would collect information already known. With Use Contact Memory on and Use memory to skip this node off, the node still runs and can use remembered information in its responses.

Write instructions for skippable nodes

Describe what information is needed and when the task is complete. Keep the node instruction and transition condition consistent.

Conversation node: collect contact details

For a Conversation node that collects the caller’s name and email address, enable Use Contact Memory and Use memory to skip this node. Node instruction:
Transition condition:
If both values are already known, the flow can skip this node. If only the name is known, the agent asks for the email address before continuing.

Subagent node: collect contact details

For a Subagent node that collects the caller’s name, email address, and delivery address, enable Use Contact Memory and Use memory to skip this node. Node instruction:
Transition condition:
If all three details are already known, the flow can skip this node. If memory includes the caller’s name and email address, the agent asks only for the missing delivery address before continuing. Memory must contain the actual information: “email is on file” doesn’t supply an email address. If a step requires fresh confirmation, state it in both the instruction and transition condition. For example, use “Ask the caller to confirm their delivery address during this call” with “The caller has confirmed their delivery address during this call.” Leave Use memory to skip this node off for steps that must always run.

Use memory in a single-prompt agent

For a single-prompt agent, enable Use Contact Memory under Knowledge Base & Memory and include memory guidance in the agent’s prompt. Node skipping and outgoing transition conditions apply to conversation flows; a single-prompt agent follows one prompt throughout the conversation.
Knowledge Base & Memory expanded beside a single-prompt agent's editor. The Use Contact Memory switch, shown off, and its recall description are outlined in blue.

Open Knowledge Base & Memory in the single-prompt editor to enable recall.

For a home-services agent that collects details for a repair request, use a prompt like this:
For example, memory includes Ada’s name, email address, service address, and an earlier water-heater repair. Today, she reports a leaking kitchen sink. The agent asks when the leak started without collecting her name and email again. It confirms whether the repair is at the remembered address and summarizes the new sink issue before completing intake. If Ada gives a different address, that correction takes priority for this request. Reading memory doesn’t enable saving; configure Save conversation to memory separately if the agent should update it afterward.

Manage and backfill memory

Open a contact to view, edit, or clear its memory. You can also read its memory in the Contact information panel in call and chat history; editing is available from Contacts. To build memory from earlier calls and SMS chats, choose Actions → Backfill and select Memory. Memory is a built-in target and doesn’t need a Post Call Extraction mapping. Backfill uses the current workspace memory prompt and processes eligible conversations oldest first, starting with the contact’s existing memory. Agents must have saving enabled in their latest configuration, and the past conversations must have retained transcripts. See backfill requirements and progress.

Memory and custom contact fields

Built-in memory doesn’t require creating extraction fields or configuring Accumulate & summarize. Those mappings remain useful when you need a separate, structured record: For a custom summary field, create a text Post Call Extraction field, map it to a text contact field, and choose Accumulate & summarize. The contact field’s description supplies its merge instructions. For example: “Keep current appointment preferences, replace preferences the contact changes, and remove duplicates.” See CRM data mappings for the full setup. You can sync these fields to a connected CRM through outbound field mappings. Contact fields are available as dynamic variables, including {{contact_memory}} when stored. Explicitly referencing a variable is separate from Use Contact Memory, which adds memory to the agent’s context automatically.

Pricing

As of September 2026, saving contact memory costs $0.005 per run. Memory backfill costs $0.005 per conversation processed, so one contact with multiple eligible conversations can incur multiple updates. Custom-field Accumulate & summarize merges are a separate operation with their own merge pricing.

FAQ

Saved memory summarizes earlier conversations and may omit details the node needs. If a required value is also missing from the current conversation and prompt, the agent may ask for it again, even when the node instruction is correct.For example, a node needs the caller’s name and email address, but memory says “Ada Lovelace called about a repair; email is on file.” The agent knows the name and still needs to ask for the email address. “On file” or “confirmed” doesn’t supply the actual value.To investigate repeated questions:
  1. Inspect the saved memory. Under Data → Contacts, open the contact matching the caller’s phone number in your workspace. Read Conversation Memory in Contact information and check for the values the node needs.
  2. Check the agent settings. Enable Use Contact Memory on the agent handling the new call. The earlier call’s agent must have had Save conversation to memory enabled to save it automatically. Wait for memory processing to finish before testing again.
  3. Review the memory prompt. Under Post call memory settings, open Memory prompt and specify the details future conversations need. This workspace prompt controls what gets saved; the node instruction controls the call. Prompt changes apply to future updates and don’t rewrite existing memory immediately.
  4. Check contact fields. The default memory prompt avoids repeating values stored in contact fields. If a required value is stored there, reference its contact dynamic variable in the agent or node prompt.
  5. Update the memory and retest. Edit existing memory or backfill eligible conversations using the updated memory prompt. Check the saved values before starting a new call.
If the node requires confirmation during the current call, the agent should ask even when it remembers the value. Keep the node instruction and transition condition consistent.
Clear memory to test without outdated or incorrect information from earlier calls. If only one detail needs correcting, edit the memory instead. Clearing memory doesn’t recover missing answers or remove contact fields.To start a fresh test:
  1. Clear the saved memory. Under Data → Contacts, open the contact for the phone number you’re testing. Select Edit in Contact information, delete the text in Conversation Memory, and save Contact information. If you use the expanded memory editor, save that draft first, then save the contact.
  2. Start a new phone call. Enable Save conversation to memory and use the same contact’s phone number. The agent may ask for details again because saved memory is now empty. A browser test call doesn’t save memory.
  3. Check the new memory. After the call ends and memory processing finishes, check for the values your node needs. Then test another call with Use Contact Memory enabled.
Clearing memory leaves your agent’s prompt and memory settings unchanged. To rebuild memory from older calls, backfill eligible conversations. If details are still missing after a new call, review the Memory prompt and contact fields before clearing again.
Check that data storage is Everything or Everything except PII. Chat agents also need Auto-Close Inactive Chats enabled. If those settings are correct, check your agent edit permissions.
Saving must be enabled on the agent that handles the conversation. Check that a phone call or SMS chat has ended, contains a usable user message, and has finished processing. Enabling saving doesn’t fill past conversations automatically; use backfill for those.
No. The memory prompt is shared across the workspace. Each agent’s save and read switches are independent, but every memory update uses the workspace prompt.
Neither is required for built-in memory. Extraction mappings populate separate contact fields, and a connected CRM is optional.
Later memory updates use the edited memory as their starting point and rewrite it with new conversation context. Clearing memory doesn’t stop saving; turn off saving on contributing agents if you want to stop automatic updates.