Issue with Variable Substitution in Voice Response
Hi Vapi Support Team,
I’m reaching out regarding an issue where the voice bot says “offer range is offer range” instead of speaking the actual value, even though the webhook is returning the correct data.
Use Case:
We’re calling prospects who submitted their car details on our website for a valuation and may be interested in selling. The goal is to collect car details (make, model, year, etc.), give them an estimated offer range via webhook, and schedule a car inspection if they’re interested. After the inspection, they receive a final offer.
What’s working fine:
The entire flow is built in N8N
The webhook is triggered correctly with the right inputs
Google Sheets returns the correct offer range (e.g., 115 to 135 thousand dirhams)
The data is passed back cleanly to the Respond to Webhook node
I’ve added a tool called get_offer_range with a clear description about expected output
The system prompt includes explicit instructions not to say variable names, along with 10 real examples of how to pronounce the offer range naturally
The issue:
Despite all that, the voice bot still says:
“Based on your car’s details, the estimated offer range is offer range.”
Only when you ask it something like “What does that mean?” does it respond correctly with:
“Sorry, the offer range is 115 to 135 thousand dirhams.”
I've attached:
A PDF with the relevant section of the system prompt where this is explained clearly
Screenshots showing correct webhook execution and returned data
Could you please look into why this placeholder variable isn’t being replaced consistently during the natural dialogue? It’s blocking the main value moment of the call.
Thanks in advance for your help!
Best regards,
Mohammad Samir
I’m reaching out regarding an issue where the voice bot says “offer range is offer range” instead of speaking the actual value, even though the webhook is returning the correct data.
Use Case:
We’re calling prospects who submitted their car details on our website for a valuation and may be interested in selling. The goal is to collect car details (make, model, year, etc.), give them an estimated offer range via webhook, and schedule a car inspection if they’re interested. After the inspection, they receive a final offer.
What’s working fine:
The entire flow is built in N8N
The webhook is triggered correctly with the right inputs
Google Sheets returns the correct offer range (e.g., 115 to 135 thousand dirhams)
The data is passed back cleanly to the Respond to Webhook node
I’ve added a tool called get_offer_range with a clear description about expected output
The system prompt includes explicit instructions not to say variable names, along with 10 real examples of how to pronounce the offer range naturally
The issue:
Despite all that, the voice bot still says:
“Based on your car’s details, the estimated offer range is offer range.”
Only when you ask it something like “What does that mean?” does it respond correctly with:
“Sorry, the offer range is 115 to 135 thousand dirhams.”
I've attached:
A PDF with the relevant section of the system prompt where this is explained clearly
Screenshots showing correct webhook execution and returned data
Could you please look into why this placeholder variable isn’t being replaced consistently during the natural dialogue? It’s blocking the main value moment of the call.
Thanks in advance for your help!
Best regards,
Mohammad Samir






