Shared Team Inbox

Your Whole Team on One WhatsApp Number

Every customer chat lands in one real-time inbox. Claim, assign and resolve conversations, reply with quick replies, templates or interactive buttons, and always see how much of the 24-hour window is left. The shared inbox is on the Team and Business plans.

✦ 14-day free trial · Your own WhatsApp Business number · Meta bills messages directly

One Inbox, Updated in Real Time

New messages appear the moment they arrive, and browser push notifications reach the teammates who can see the chat, even when the tab is closed. Search by name or number, switch between the All, Active and My chats tabs, and filter by unread, assignee, open or closed 24-hour window, or tag. Each chat shows who owns it and whether you can still reply freely or need a template.

  • Search chats by name or number
  • All, Active and My chats tabs
  • Filters for unread, assignee, window open/closed and tag
  • Push notifications only to teammates who can see the chat
  • A live countdown on the 24-hour window
StartMessaging shared WhatsApp team inbox

A Composer That Follows WhatsApp’s Rules

While the customer’s 24-hour window is open, reply with free text, files, up to 3 reply buttons or a list of up to 10 rows. Type / to drop in a saved quick reply. Once the window closes, the composer offers your approved templates, and the customer’s next message opens a new 24 hours. If Meta refuses a message, the chat explains the error in plain language and what to do next.

  • Type / for shared quick replies
  • Approved templates at any time
  • Interactive replies: 3 buttons or a 10-row list
  • Attachments, plus Meta errors explained in plain language
Replying to a WhatsApp customer inside the 24-hour window
Teamwork

Built for Teams That Share a Number

Clear ownership, fair distribution and the customer’s context in every chat.

  • Claim, Assign, Resolve, Reopen

    Claim an unassigned chat, hand it to a teammate, or resolve it when it’s done. A resolved chat reopens by itself if the customer writes again.

  • Round-Robin Auto-Assignment

    An Admin can switch on round-robin, which hands each new unassigned chat to the next available Agent or Manager in turn.

  • Agent Availability

    Each person marks themselves available or away for new chats, and Managers can switch someone off while they’re out. Chats already assigned stay with their owner.

  • See Who Else Is Viewing

    The chat shows when a teammate has the same conversation open, so two people don’t answer the same customer twice.

  • Contact Panel Beside Every Chat

    Add tags, internal notes and a follow-up date without leaving the conversation, and on the Business plan, a pipeline stage. Notes are internal; the customer never sees them, and a note you no longer need can be deleted.

  • WhatsApp Form Answers in the Chat

    When a customer submits a WhatsApp Form, the answers appear in the conversation as labelled fields, ready for the agent to act on.

  • Photos, Videos and Voice Notes in the Chat

    Open a photo full size in a new tab, and play videos and voice notes right in the conversation. Quoted replies, reactions, shared locations and contact cards a customer sends are shown in the chat too.

  • Campaign Context on Replies

    When a customer answers a campaign, the chat labels it “Campaign: name”, so the agent knows which offer or reminder they are replying to.

  • Templates Shown as the Customer Saw Them

    A template message in the thread looks like it did on the customer’s phone: the footer, working buttons (links open, codes copy, phone numbers dial), a limited-time offer with its end time and coupon, and every carousel card with its image, text and buttons.

  • Free Ad Window and Held Messages

    A chat that came from a Click-to-WhatsApp ad shows a “Free ad window ends…” pill while Meta’s 72-hour free entry point window is open and Meta charges nothing for its messages. A message Meta is holding back is marked “Held by Meta”: it goes out on its own, or fails if Meta doesn’t release it.

  • Five Team Roles

    Owner, Admin, Manager, Agent and Viewer. Agents see their own chats and open unassigned ones; Managers and above see everyone’s and can assign; Viewers can read but not reply.

  • Keyboard Shortcuts

    Press j and k to move up and down the chat list, Esc to close, and ? to open in-app help.

  • Hand-Off From Chatbot Flows

    An “assign agent” step in a chatbot flow puts the conversation in a teammate’s My chats, with the whole history above it. Chatbot flows are on the Business plan and the 14-day free trial.

Compare

Shared Inbox vs. a Shared Phone

What changes when your team works WhatsApp from a shared inbox instead of passing a phone around or using personal numbers.

Capability StartMessaging Shared Inbox Shared phone / WhatsApp Business app Personal numbers per agent
One business number for every customer ✗ (customers get a different number per agent)
Owner per chat (claim, assign, resolve) ✗ (labels only) Whoever owns the phone
Automatic distribution of new chats ✓ Round-robin to available agents
See who else is viewing a chat
Role-based access ✓ Owner, Admin, Manager, Agent, Viewer ✗ (everyone with the phone sees everything)
Chat history stays with the business when an agent leaves ✓ (on that phone) ✗ (it stays on the agent’s phone)
Chatbot hand-off to a person ✓ “Assign agent” step (Business)
REST API and webhooks
Conversations API

Assign and resolve chats from your own system

# Assign a conversation to a teammate
curl -X PATCH https://waba-api.startmessaging.com/api/v1/conversations/0f8e2b6a-3c1d-4e5f-9a7b-2c4d6e8f0a1b \
  -H "Authorization: Bearer sm_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "assignedToUserId": "5b1d9e2c-7a3f-4c8e-b6d1-2f4a8c9e0b7d"
  }'

# Resolve it when the work is done (send "open" to reopen)
curl -X PATCH https://waba-api.startmessaging.com/api/v1/conversations/0f8e2b6a-3c1d-4e5f-9a7b-2c4d6e8f0a1b \
  -H "Authorization: Bearer sm_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "status": "resolved" }'
const BASE = 'https://waba-api.startmessaging.com/api/v1';
const headers = {
  'Authorization': 'Bearer ' + process.env.SM_API_KEY, // sm_live_your_api_key
  'Content-Type': 'application/json',
};

// Open, unassigned chats (newest activity first)
const list = await fetch(BASE + '/conversations?status=open&assignedToUserId=unassigned&limit=25', { headers });
const { data } = await list.json();

for (const conv of data.items) {
  // Hand each one to a teammate; null would put it back in the queue
  const res = await fetch(BASE + '/conversations/' + conv.id, {
    method: 'PATCH',
    headers,
    body: JSON.stringify({ assignedToUserId: '5b1d9e2c-7a3f-4c8e-b6d1-2f4a8c9e0b7d' }),
  });
  const { data: updated } = await res.json();
  console.log(updated.id, updated.assignedToUserId, updated.windowOpen);
}
import os, requests

BASE = 'https://waba-api.startmessaging.com/api/v1'
headers = {'Authorization': f"Bearer {os.environ['SM_API_KEY']}"}  # sm_live_your_api_key

# Open, unassigned chats (newest activity first)
items = requests.get(
    f'{BASE}/conversations',
    headers=headers,
    params={'status': 'open', 'assignedToUserId': 'unassigned', 'limit': 25},
).json()['data']['items']

for conv in items:
    res = requests.patch(
        f"{BASE}/conversations/{conv['id']}",
        headers=headers,
        json={'assignedToUserId': '5b1d9e2c-7a3f-4c8e-b6d1-2f4a8c9e0b7d'},
    )
    data = res.json()['data']
    print(data['id'], data['assignedToUserId'], data['windowOpen'])
<?php
$ch = curl_init('https://waba-api.startmessaging.com/api/v1/conversations/0f8e2b6a-3c1d-4e5f-9a7b-2c4d6e8f0a1b');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'PATCH',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . getenv('SM_API_KEY'), // sm_live_your_api_key
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'assignedToUserId' => '5b1d9e2c-7a3f-4c8e-b6d1-2f4a8c9e0b7d',
    ]),
]);
$data = json_decode(curl_exec($ch), true)['data'];
echo $data['id'] . ' ' . $data['assignedToUserId'];
{
  "id": "evt_01JCA4M2XQ",
  "type": "conversation.assigned",
  "createdAt": "2026-10-07T10:45:12.000Z",
  "workspaceId": "ws_9f2c",
  "data": {
    "conversation": {
      "id": "0f8e2b6a-3c1d-4e5f-9a7b-2c4d6e8f0a1b",
      "contactId": "ct_88b1",
      "contactPhone": "+919812345678",
      "status": "open",
      "assignedToUserId": "5b1d9e2c-7a3f-4c8e-b6d1-2f4a8c9e0b7d"
    },
    "actor": { "type": "api_key", "id": "key_41c7" }
  }
}
FAQs

Shared Inbox — FAQ

Which plans include the shared inbox?

Team and Business. Both include the shared inbox, interactive replies, quick replies, round-robin routing and keyword auto-replies. Chatbot flows and agent analytics are on Business, and the 14-day free trial includes everything in Business. Developer plans are the API with a view-only dashboard: chats your app starts through the API, and the replies to them, show in the inbox, but replying from it needs Team or Business.

How does the inbox handle the 24-hour window?

WhatsApp allows free-form replies only within 24 hours of the customer’s last message. Each chat shows a countdown of the time left. After it closes, only an approved template can be sent, and the customer’s next message opens the window again. Your own messages don’t extend it.

How does round-robin assignment work?

An Admin turns it on in Inbox settings. Each new unassigned inbound chat then goes to the next available Agent or Manager, taking turns. Anyone marked unavailable stops receiving new chats, but keeps the chats they already own.

What can each team role do in the inbox?

Agents see their own chats and open unassigned ones. Managers, Admins and the Owner see every chat and can assign them. Viewers can read but not send messages, and see only open chats nobody has claimed. Managers and above also create the shared quick replies.

Can a chatbot hand a conversation to a person?

Yes. Add an “assign agent” step to a chatbot flow, for example after a “Talk to a person” button. The chat lands in the agent’s My chats with the full conversation and the contact’s tags and fields. Chatbot flows are on the Business plan and the 14-day free trial.

Can keyword auto-replies answer for us?

Yes, on Team and Business. A rule replies with fixed text or an approved template when a message is exactly a keyword, contains it or starts with it. Keywords match whole words: “hi” matches “Hi there!”, not “this”. A rule stays quiet if anything was sent in the chat in the last 30 seconds, so it never talks over an agent.

Can I assign or resolve chats from my own system?

Yes. GET /api/v1/conversations lists chats with filters for status, assignee (or unassigned), contact phone and updatedSince, and reports whether the window is open. PATCH /api/v1/conversations/{id} with an API key that has the conversations:write scope can assign, unassign, resolve or reopen a chat. Subscribe to the conversation.assigned and conversation.resolved webhooks to hear about changes made in the inbox. Reading conversations through the API works on every plan, Developer included; changing them with PATCH needs Team or Business.

Who pays for the messages my team sends?

Meta bills WhatsApp message charges directly to your own WhatsApp Business Account. Meta charges every delivered template, utility templates included, even inside the 24-hour window; service replies to customers who wrote in are free up to a monthly allowance per number. In a chat that came from a Click-to-WhatsApp ad, Meta charges nothing while its 72-hour free entry point window is open. StartMessaging is a Meta Tech Provider and charges only a flat CRM subscription, with no per-message markup.

WhatsApp API

Bring Your Team Into One WhatsApp Inbox

14-day free trial. Connect your own WhatsApp Business number with Facebook login and invite your team.