Squad + assistant.started webhook
# support
k
Hi Vapi team, We're building a voice assistant system for a legal referral service with the following architecture: Emma — main intake assistant 40+ specialist assistants — each handles a specific practice area All connected via a Squad so Emma can transfer callers to the right specialist Previous architecture (worked fine): Before using Squad, we used a single assistant with assistant-request webhook. This allowed us to dynamically inject a returning caller context into the system prompt and change firstMessage to greet them by name (e.g. "Hi Jake, it's Emma again..."). This worked perfectly. Current architecture (Squad — broken): After migrating to Squad, we no longer receive assistant-request. Instead we receive assistant.started — but this webhook appears to be notification-only. Our server returns a full assistantOverrides response (with updated firstMessage, additional system message with returning caller context, updated toolIds) but Vapi completely ignores our response. We verified this by checking the actual call — Emma greets the caller with the default firstMessage instead of the personalized one, and the returning caller system message is never injected. What we need: Is there a way to dynamically override assistant config (specifically firstMessage and model.messages) for a Squad call? Either via assistant.started response, or any other mechanism? Thanks
v
Currently, dynamic per-call overrides (like
firstMessage
or
model.messages
) are only supported via the
assistant-request
webhook, which is not triggered for Squad calls.
The
assistant.started
webhook is informational and does not process responses, so your overrides are ignored. To achieve dynamic personalization, you must use a single assistant with
assistant-request
or dynamically construct your Squad before the call starts and return it in your webhook response:
Copy code
json
{
  "squad": {
    "members": [
      { "assistantId": "emma", "assistantOverrides": { "firstMessage": "Hi {{name}}, it's Emma again!" } },
      { "assistantId": "specialist-1" },
      // ...other specialists
    ]
  }
}
Action: Build the Squad dynamically in your server's response to the initial webhook, injecting personalized data before the call is created. [See Vapi events documentation for details.](https://docs.vapi.ai/server-url/events) Source: - [Vapi Events Webhook Documentation](https://docs.vapi.ai/server-url/events)
z
The issue is simple: in Squad mode, assistant.started is a notification-only webhook. Vapi does not read or apply anything you return to it. Only assistant-request expects a response with overrides. Since Squad calls tied to a phone number usually don’t trigger assistant-request, your dynamic firstMessage and system prompt injections are ignored — that’s why Emma falls back to the default greeting. The correct way to personalize greetings in Squad is to pass overrides at call creation, not via webhook. You either start the call from your backend using the API and include assistantOverrides (or membersOverrides) inside the Squad payload, or you define dynamic variables like Hi {{name}} in Emma’s config and send the variable values when initiating the call. There is no supported way to override firstMessage mid-call via assistant.started.
k
For inbound calls on a phone number tied to a Squad — is there any way to pass dynamic variableValues per call? For example, can we use a server webhook on the phone number to inject variables before the assistant speaks?
z
If the call comes in on a fixed Squad number, Vapi won’t pause to ask your server for variables, so you can’t set them before the assistant speaks. The only way to personalize first messages with dynamic variables is to start the call via the API with assistantOverrides.variableValues included.
c
Hi @kiryhanchik, You can still pass dynamic overrides using live call control. You can find more information about it here: https://docs.vapi.ai/calls/call-features. This feature is more powerful when it is combined with server events like
assistant.started
, you can load dynamic data with the call control feature right after receiving the assistant.started data.