inconsistent dynamic variable use in first message

I’m experiencing an issue with dynamic variables when my agent first starts speaking at the beginning of a phone call. When the call connects, the agent sometimes says the variable name itself (e.g., {{agent_name}}) instead of the actual substituted value.

This only happens in the first message and is inconsistent — sometimes it works correctly, sometimes it doesn’t.

As a workaround, I tried splitting the greeting:

First message: “Hello

Prompt: “My name is {{agent_name}}, how can I help you?

This fixes the substitution issue but introduces a new inconsistency: sometimes the agent just says “Hello” and waits for a response, other times it continues with the full greeting in one go.

Questions:

Is this a known issue?

Is there a way to guarantee the dynamic variable is always substituted before the first message is spoken?

Will Vapi continue to use the current “first message” structure? I feel the performance here is worse compared to Retell.ai, where the node has a “AI speaks first” option.

Would it be possible to add a “skip user response” option? Sometimes even with an empty edge, the agent still doesn’t continue the conversation automatically.

Thanks in advance for your help,
Was this page helpful?