The CRM-to-Voice AI Workflow, Explained Without the Jargon


Connecting a CRM to an AI voice agent comes down to four handoffs. The CRM decides who gets called. The call request carries what the agent needs to know. The agent has the conversation. The results land back on the same CRM record. Most integration confusion comes from blurring those four together, or from not knowing which system owns each one.
This guide walks through the sequence using a HubSpot workflow as the example, then shows the same loop for any CRM that can send a webhook.
Trigger, context, conversation and writeback:
A CRM workflow triggers the call in one of two ways: a native workflow action, or a webhook that your own service turns into an API call.
Native action (HubSpot). The Retell AI app in the HubSpot Marketplace adds a Make a Phone Call action to HubSpot workflows. Start from a trigger you already use: a form submission, a new record, a deal stage change, or a date property such as an appointment date. Add a "Phone number is known" condition so contacts without a number never enroll. Then fill in three fields on the action: From (the Retell agent and phone number), To (the contact's phone token) and, optionally, Dynamic Variables as JSON. The workflow pauses until the call finishes.
Webhook plus API (any CRM). If your CRM can send a webhook from a workflow, point it at a small service you own. That service calls Retell's Create Phone Call API with four things: from_number, to_number, the context fields in retell_llm_dynamic_variables, and the CRM record ID in metadata. Retell stores metadata with the call and returns it in the call object on later webhooks, which is how the result finds its way back to the right record.
Lists instead of events. For a campaign against a segment rather than a single event, export the list and run it as a batch call: a CSV with a phone number column, where every extra column becomes a variable the agent can use.
Two prerequisites apply on every path. The calling number needs an outbound agent bound to it, and the numbers you dial need to be valid E.164 (for example, +14155550123).
Through dynamic variables: named values such as {{first_name}} or {{deal_stage}} that Retell fills in before the agent speaks. They come from three places:
retell_llm_dynamic_variables.When the same name comes from more than one source, the request value beats the synced contact field, and anything the agent collects during the call beats both.
Three rules prevent most cases of an agent reading a placeholder out loud:
"42" and "true", not 42 and true.{{client.name}} won't resolve; send client_name instead.{{braces}} form in the prompt.The agent runs the conversation from its prompt and variables, and can act on the CRM mid-call if you give it tools.
With HubSpot connected through Retell's native integration, the agent can use tools such as Search Contact, List Contact Deals, Update Deal, Update Contact and Create Task while it's talking. It can correct an email address the contact just gave, or create the follow-up task the contact agreed to. For a CRM without a native integration, a custom function does the same job by calling your own API mid-call.
Plan for two behaviors. If a CRM tool call fails or times out, the conversation carries on, so the prompt should tell the agent what to say when a lookup comes back empty. And when an outbound call reaches voicemail instead of a person, the agent can hang up or leave a message, depending on how you configure it, and the call is flagged with in_voicemail. That flag matters at writeback.
After the call ends, Retell runs post-call analysis on the transcript (the product calls it Post Call Extraction). The results then reach the CRM through one of three paths, depending on what your CRM supports and who should own the mapping logic.
What gets produced. Every call gets call_summary, user_sentiment, call_successful and in_voicemail. You add custom fields for your own outcomes, each typed as boolean, text, number or selector: qualified, budget_range, callback_requested. The call record also carries the full transcript and a recording URL. See post-call analysis for how fields are defined.
Path 1: the HubSpot Marketplace app. When the call completes, the app writes the summary and analysis to the contact's activity timeline, puts the recording and transcript in the call log, and shows the log on the associated company's timeline. The paused workflow then resumes and can branch on outputs like Call Success, User Sentiment or Call Outcome: a follow-up email on success, a retry or an SMS on no answer.
Path 2: native CRM integration. Retell's integrations with HubSpot, Salesforce, Microsoft Dynamics 365, GoHighLevel and Zoho CRM map post-call analysis fields onto contact fields and push them to the CRM record. Each mapping has an update mode: Overwrite for status fields, Fill only if empty for stable facts like email, or Accumulate & summarize to merge notes across calls. Turn on Log activities automatically and each call is also logged on the contact, as a Call engagement in HubSpot or a Task in Salesforce, for example. Post-call functions add targeted writes on top, such as a HubSpot Create Task that runs only when a followup_needed field is true.
One catch with Path 2: it writes only to contacts imported from the active CRM connection. A number that doesn't match a synced contact produces no activity record, and Retell updates existing CRM records rather than creating new ones unless you turn on Create new contacts in CRM.
Path 3: a webhook into your CRM. Retell posts a call_analyzed event to your endpoint with the full call object: transcript, recording URL, analysis results and the metadata you sent at trigger time. Your service reads the record ID from metadata and writes to the CRM's API. Verify the x-retell-signature header, and return a 2xx within 10 seconds, because Retell retries up to 3 times otherwise. Deduplicate on call_id so a retry never writes the same call twice. Listen for call_analyzed, not call_ended: the call_ended payload is sent before analysis runs, so it carries no analysis results.
The table maps common HubSpot triggers to what the agent does and what lands back on the record. The webhook path follows the same three columns.
| CRM trigger | What the agent does on the call | What gets written back |
|---|---|---|
| Form submission (new lead) | Greets the lead by name from the form fields, asks qualification questions | qualified (boolean) and lead_status (selector) overwrite contact properties; the summary is logged to the timeline |
| Deal stage changes | Reads the open deal with List Contact Deals, confirms next steps | Call logged to the timeline; a follow-up task created only when followup_needed is true |
| Appointment date approaching | Confirms the appointment, or reschedules it through a connected calendar such as Cal.com | Confirmation status written to a contact field; workflow branches on the outcome |
| Contact inactive for a set period | Checks current interest and asks what changed | Notes merged into an interaction-history field with Accumulate & summarize; sentiment recorded |
| Any of the above, but no one answers | Hangs up or leaves a voicemail, per the agent's voicemail setting | call_successful false or in_voicemail true; the workflow branches to a retry or an email |
Custom analysis fields are not filled for calls that never connected, so build the no-answer branch on the built-in fields and the call outcome, not on your custom ones.
do_not_call contact field doesn't block calls by itself; pass honor_internal_dnc: true on API calls to have Retell reject them, and keep your CRM's own suppression rules in the trigger.If HubSpot is your system of record, the Retell HubSpot integration covers both halves of this loop: the native connection that gives the agent context and writes results back, and the Marketplace app that lets a HubSpot workflow place the call. For the click-by-click setup, including the private app scopes, follow the HubSpot setup guide. Running Salesforce, Dynamics 365, Zoho or something else? Start from the integrations directory, and use the webhook path for any CRM that isn't listed.
Related reading: The outbound phone number checklist, scoping a first partner deal, and more guides in the Retell Learn hub.
See how much your business could save by switching to AI-powered voice agents.
Total Human Agent Cost
AI Agent Cost
Estimated Savings
A Demo Phone Number From Retell Clinic Office

Start building smarter conversations today.




