Marie calls your dental clinic in Laval for the fifth time this month. She's been a loyal customer since 2019. And yet your AI voice agent still asks her: "Hi there, is this your first visit with us?"
Marie sighs. She hangs up. She calls the competitor.
If that scenario makes you cringe, you're not alone. It's probably the number-one frustration Quebec SMBs have reported to us since AI voice agents went mainstream in fall 2025. The good news: ElevenLabs just shipped (April–May 2026) an update that fixes this for good. And contrary to what you might think, getting it set up doesn't require a senior developer or a $20,000 budget.
Why "customer memory" changes everything for a Quebec SMB
Quebec has a culture of close, personal service. The corner store knows your coffee brand. The mechanic in Trois-Rivières remembers which winter you swapped your tires. That's a real competitive edge — and it's exactly what the first generation of AI voice agents broke by treating every call as if it came from a complete stranger.
The metric we watch closest with our Quebec clients: the hang-up rate within the first 15 seconds. On a generic agent, it averages 18 % across the province. On an agent that recognizes the caller and personalizes the greeting, that number drops to about 4 %. For a clinic taking 80 calls a day, that's roughly 11 extra calls saved per day. If each appointment is worth $150, do the math.
OK. So how do we do it?
What ElevenLabs shipped (and almost nobody noticed)
In the April 27, 2026 update, ElevenLabs quietly added a parameter to the API: starting_workflow_node_id. Combined with their workflow nodes (pre-built conversation branches) and dynamic variables (variables injected at the start of the call), you can now do three things that were impossible before:
- Identify the caller by their phone number before the agent says a word.
- Inject their first name, history, and preferences into the conversation context.
- Start the conversation at a specific node — for example, "Hey Marie, are you calling to confirm your Tuesday appointment?" instead of the full welcome script.
For the official documentation, look at the ElevenLabs Agent Workflows page and the April–May 2026 changelog. What follows is our field-tested version, deployed across several Quebec SMBs.
Before you start: the 5 prerequisites
- An ElevenLabs Agents account at minimum on the Creator plan ($29 USD/month). The free tier doesn't support workflow nodes.
- A database where your customers live. It can be Zoho, HubSpot, Airtable, or even a Google Sheet — as long as there's an API or webhook.
- A Twilio phone number wired to your agent (or another supported SIP provider).
- An up-to-date privacy policy. In Quebec, the moment you store someone's number and link it to personal data, you fall under Law 25. We'll come back to that at the end.
- 30 to 45 minutes. No more, if you follow the tutorial as written.
Step 1 — Enable the opt-in flag
In the ElevenLabs dashboard, go to Agent Settings → Platform Overrides → Conversation Initiation. Tick the enable_starting_workflow_node_id_from_client box. It's off by default, and that's intentional — ElevenLabs wants you to opt in consciously, because this feature exposes a parameter that the client can manipulate.
One tip: don't enable it on all your agents at once. Start with the one that takes the most repeat calls. For most of our customers, that's the appointment-booking agent.
Step 2 — Build the pre-call webhook
Before ElevenLabs starts the conversation, we need to look up the caller's identity. ElevenLabs supports a conversation initiation webhook that fires with the caller's phone number as a parameter. You configure it under Agent Settings → Webhooks → Conversation Initiation.
What your webhook needs to do, in essence:
POST /webhook/lookup-caller
Body: { "caller_phone": "+15145551234" }
→ Look up your CRM
→ Return JSON with:
{
"dynamic_variables": {
"client_name": "Marie",
"client_status": "regular",
"last_visit": "2026-04-15",
"next_appointment": "2026-05-12 14:00"
},
"starting_workflow_node_id": "node_returning_client"
}
If the number isn't in your database, just return an empty object — the agent will fall back to the default entry node. That's the documented behavior, and it works without any extra code.
Step 3 — Build the two starting nodes in your workflow
In the visual workflow editor, you'll now have two entry points:
- Default node (new caller): "Hi, you've reached Clinic X. How can I help you today?"
- "Returning client" node (
node_returning_client): "Hey {{ client_name }}, good to hear from you again. Are you calling about your {{ next_appointment }} appointment, or something else?"
Notice the dynamic variables in double curly braces. They're swapped at runtime with whatever your webhook returns. That's also what makes the agent feel less robotic — not just that it says your name, but that it already knows what you want to talk about before you've opened your mouth.
Step 4 — Test (the part everyone skips)
ElevenLabs has a simulation mode in the dashboard. Run at least six test calls:
- Unknown number → must hit the default node.
- Known regular customer → must say the right first name.
- Known number but database is down → must fall back gracefully without hanging.
- Number with special characters or international format → must be normalized correctly.
- Caller with an appointment in 5 minutes → agent should mention it.
- Caller who calls again right after hanging up — does the short session memory work?
Test 3 is where most SMBs get burned. If your webhook crashes and there's no fallback, the agent freezes for 4 seconds before finally speaking. It's unbearable. Set a max timeout of 1.5 seconds, and beyond that, automatic fallback.
Step 5 — Short-term vs long-term memory: don't mix them up
Heads up — ElevenLabs offers two kinds of "memory" people often confuse:
- Conversation memory (within a call): the agent remembers what was said in the last 30 seconds. You don't have to do anything; it's native.
- Persistent memory (across calls): what this tutorial is about. It lives in your database, not in ElevenLabs.
This distinction matters for two reasons. First, ElevenLabs doesn't store your data long-term — which is good news for compliance. Second, if you want true smart memory ("last time, Marie was upset about a delay"), you have to build it yourself. It's doable, but it's not included.
Step 6 — The voice-swap trap
Classic mistake: you set up the returning-client node with a different voice than the default node, because you think it "personalizes things better." Don't. To make your agent sound natural, keep the same voice across all nodes. What changes is the tone and content, not the voice itself.
Step 7 — Law 25 compliance: the three boxes to tick
In Quebec, the moment you store someone's phone number tied to their name and history, you're processing personal information. Law 25 obliges you to:
- Maintain a public privacy policy that explicitly mentions collecting and using the phone number for personalization.
- Offer an opt-out mechanism: "If you don't want me to recognize you anymore, just say forget me." The agent must then purge the record from your database.
- Limit retention. Recommended practice: 24 months without contact, then automatic purge.
For a deeper dive on compliance, see our Law 25 practical guide.
Step 8 — Measure whether it actually works
For the two weeks following deployment, watch four metrics:
- Hang-up rate under 15 seconds — should drop 60 to 80 %.
- Average call duration — may go up, but that's normal: recognized customers talk longer because they're more comfortable.
- Conversion rate (appointments booked / calls received) — that's the real KPI. Aim for +12 to +18 %.
- Lookup webhook latency — if it regularly exceeds 800 ms, your database is poorly indexed.
When should you graduate to a more complex architecture?
The tutorial above is enough for 90 % of Quebec SMBs. If you handle more than 500 calls a day, or if you run multiple teams (reception, technical support, sales), look at our piece on multi-agent architecture instead. The memory layer we just built becomes the shared layer across all sub-agents.
For useful external sources: Goodcall's research on personalized greetings reports engagement rates up to 97 % when the customer's name is used in the greeting. That tracks with what we're seeing in the field across Quebec.
The bottom line
An SMB that goes from a generic agent to one that recognizes its customers isn't just "modernizing" service. It's bringing back the human dimension that the first generation of voice AI had killed. Marie, when she calls back in two weeks, will tell her partner: "You know, they hired a new receptionist at the clinic. She's really good."
She'll never know she's talking to an AI. That's exactly the point.
If you want us to set this up for you (the TECHMA team handles it end to end: ElevenLabs, webhook, database, training), grab 15 minutes with us. Full deployment usually takes between 4 and 7 business days.
