> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.vapi.ai/llms.txt.
> For full documentation content, see https://docs.vapi.ai/llms-full.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.vapi.ai/_mcp/server.

# E‑commerce order management squad

> Build a multi-assistant experience for order tracking, returns processing, and VIP handling using Squads.

## Overview

Use Squads to split responsibilities: an Orders assistant handles tracking/status, a Returns assistant manages eligibility and labels, and a VIP assistant provides white‑glove support.

**Squad Capabilities:**

* Order lookup and status updates
* Return eligibility and label creation
* VIP routing and concierge service
* Context‑preserving warm transfers

## 1. Define members

```json title="Example squad payload"
{
  "members": [
    { "assistant": { "name": "Orders", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Orders specialist. Handle tracking and delivery questions."}] }, "toolIds": ["ORDER_LOOKUP_ID"], "firstMessage": "Hello, how can I help with your order?", "firstMessageMode": "assistant-speaks-first" } },
    { "assistant": { "name": "Returns", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Returns specialist. Check eligibility and generate labels."}] }, "toolIds": ["RETURNS_TOOL_ID"] } },
    { "assistant": { "name": "VIP", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "VIP concierge. Prioritize premium customers and coordinate resolutions."}] } } }
  ]
}
```

## 2. Configure transfer rules

* Orders → Returns for return requests
* Any → VIP for high‑value customers or sentiment issues
* Warm-transfer summary for human agents if needed

## 3. Implement

```typescript
import { VapiClient } from "@vapi-ai/server-sdk";
const vapi = new VapiClient({ token: process.env.VAPI_API_KEY! });

await vapi.calls.create({
  transport: { type: "web" },
  squad: {
    members: [
      { assistant: { name: "Orders", model: { provider: "openai", model: "gpt-4o", messages: [{ role: "system", content: "Orders specialist. Handle tracking and delivery questions." }] }, firstMessage: "Hello, how can I help with your order?", firstMessageMode: "assistant-speaks-first" } },
      { assistant: { name: "Returns", model: { provider: "openai", model: "gpt-4o", messages: [{ role: "system", content: "Returns specialist. Check eligibility and generate labels." }] } } },
      { assistant: { name: "VIP", model: { provider: "openai", model: "gpt-4o", messages: [{ role: "system", content: "VIP concierge. Prioritize premium customers and coordinate resolutions." }] } } }
    ],
  },
});
```

```python
import os
from vapi import Vapi

client = Vapi(token=os.getenv("VAPI_API_KEY"))
client.calls.create(
    transport={"type": "web"},
    squad={
        "members": [
            {"assistant": {"name": "Orders", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Orders specialist. Handle tracking and delivery questions."}]}, "first_message": "Hello, how can I help with your order?", "first_message_mode": "assistant-speaks-first"}},
            {"assistant": {"name": "Returns", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Returns specialist. Check eligibility and generate labels."}]}}},
            {"assistant": {"name": "VIP", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "VIP concierge. Prioritize premium customers and coordinate resolutions."}]}}},
        ]
    },
)
```

```bash
curl -X POST "https://api.vapi.ai/call/web" \
  -H "Authorization: Bearer $VAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "squad": {
      "members": [
        { "assistant": { "name": "Orders", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Orders specialist. Handle tracking and delivery questions."}] }, "firstMessage": "Hello, how can I help with your order?", "firstMessageMode": "assistant-speaks-first" } },
        { "assistant": { "name": "Returns", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "Returns specialist. Check eligibility and generate labels."}] } } },
        { "assistant": { "name": "VIP", "model": {"provider": "openai", "model": "gpt-4o", "messages": [{"role": "system", "content": "VIP concierge. Prioritize premium customers and coordinate resolutions."}] } } }
      ]
    }
  }'
```

## 4. Test and validate

Attach a phone number to the Squad and simulate order, return, and VIP scenarios.

## Next steps

* **Custom Tools**: [Build tools](/tools/custom-tools)