Skip to content

One WhatsApp number. Your whole team on it.

Nobody complains about the message you missed. They just buy somewhere else.

Start free trial

Free for 7 days · No credit card · 5-minute setup

  • Official WhatsApp Business API provider
  • Trusted by 5,000+ businesses

Works with your tools through Zapier, Make, n8n and Integrately

Shared WhatsApp inbox

Your WhatsApp, before and after

Same number, same customers. The difference shows when two messages arrive at once.

  • Two people answer the same customer
  • Only one person can reply
  • The 9pm question waits until 9am
  • Nobody knows how long anyone waited
  • You see who is already replying
  • Everyone replies from their own login
  • An AI answers the 9pm question
  • You know exactly how long anyone waited
In practice

The screenshots, not the pitch.

Nobody answers twice

You can see who has it before you open it.

Talk to your inbox

Connect Claude or ChatGPT and work your WhatsApp by asking.

One message, the whole list

Write it once. Every reply lands in the shared inbox.

What actually happened this week

Response times, volume, and who carried the load, per number.

Nobody answers twice1/4
Talk to your inbox2/4
One message, the whole list3/4
What actually happened this week4/4
Where to start

Come at it from where you are

Every conversation in one inbox, every reply signed. Ana takes it and everyone can see it is hers.

See the shared inbox
How it works

Five minutes, and the team is on it

No new number, nobody technical.

  1. Connect your number

    The one your customers already write to.

  2. Confirm it with Meta

    Official Meta signup. Your number goes on the WhatsApp Business API, in your name.

  3. Invite your team

    Add agents, create departments, set who sees what.

  4. You're answering

    Everyone on the same number, and the routine questions answered without you.

Already working in Claude or ChatGPT? Point it at this inbox. About the MCP server

Free for 7 days · No credit card · 5-minute setup

Use it the way your team already works

Team Chat

Assign, note and resolve without ever leaving the thread.

Campaigns

Templated sends, scheduled and tracked.

Dashboard

Today's load at a glance, per agent and department.

Analytics

Response times and engagement over time.

Contacts CRM

Metadata, labels and history per customer.

Edit contacts & files

Update details and share documents in the thread.

The same inbox, in your pocket

The WaliChat mobile app for iOS and Android keeps assignment, notes and labels in sync with the desktop inbox.

AI agents & Flows

Your night shift never clocks out

An AI agent answers overnight. You get the hot leads in the morning.

Flow · after hours23:40
"Do you ship to Portugal?"AI agent answers
"We need 200 units by Friday"Qualified → assign to Sales, 09:00

<Hello World/> Developers!

One REST API for everything the inbox does.

  • 15+code languages
  • No codevia Zapier, Make and n8n
  • Webhooksevery inbound event
  • Live testerrun calls from the docs
+7 more in the docs
# Send a messagecurl -X POST https://api.wali.chat/v1/messages \  -H "Authorization: $WALI_TOKEN" \  -H "Content-Type: application/json" \  -d '{"phone": "+14155550142",       "message": "Your order shipped"}'# Send a file: same call, media body  -d '{"phone": "+14155550142",       "media": {"url": "https://acme.co/cat.pdf"}}'# Schedule it: same call, deliverAt  -d '{"phone": "+14155550142",       "message": "Doors open at 9:00",       "deliverAt": "2026-08-25T09:00:00Z"}'
// One tiny client for every callconst wali = (body) =>  fetch('https://api.wali.chat/v1/messages', {    method: 'POST',    headers: {      Authorization: process.env.WALI_TOKEN,      'Content-Type': 'application/json'    },    body: JSON.stringify(body)  })// Send a messageawait wali({ phone: '+14155550142',  message: 'Your order shipped' })// Send a fileawait wali({ phone: '+14155550142',  media: { url: 'https://acme.co/cat.pdf' } })// Schedule it for tomorrow at 9:00await wali({ phone: '+14155550142',  message: 'Doors open at 9:00',  deliverAt: '2026-08-25T09:00:00Z' })
import os, requestsdef wali(**body):    return requests.post(        "https://api.wali.chat/v1/messages",        headers={"Authorization":                 os.environ["WALI_TOKEN"]},        json=body)# Send a messagewali(phone="+14155550142",     message="Your order shipped")# Send a filewali(phone="+14155550142",     media={"url": "https://acme.co/cat.pdf"})# Schedule it for tomorrow at 9:00wali(phone="+14155550142",     message="Doors open at 9:00",     deliverAt="2026-08-25T09:00:00Z")
<?php // composer require guzzlehttp/guzzle$wali = new GuzzleHttp\Client([  'base_uri' => 'https://api.wali.chat/v1/',  'headers'  => [    'Authorization' => getenv('WALI_TOKEN')  ]]);// Send a message$wali->post('messages', ['json' => [  'phone'   => '+14155550142',  'message' => 'Your order shipped']]);// Send a file$wali->post('messages', ['json' => [  'phone' => '+14155550142',  'media' => ['url' => 'https://acme.co/cat.pdf']]]);// Schedule it for tomorrow at 9:00$wali->post('messages', ['json' => [  'phone'     => '+14155550142',  'message'   => 'Doors open at 9:00',  'deliverAt' => '2026-08-25T09:00:00Z']]);
// One helper for every callfunc wali(body string) {  req, _ := http.NewRequest("POST",    "https://api.wali.chat/v1/messages",    strings.NewReader(body))  req.Header.Set("Authorization",    os.Getenv("WALI_TOKEN"))  req.Header.Set("Content-Type",    "application/json")  http.DefaultClient.Do(req)}// Send a messagewali(`{"phone": "+14155550142",       "message": "Your order shipped"}`)// Send a filewali(`{"phone": "+14155550142",       "media": {"url": "https://acme.co/cat.pdf"}}`)// Schedule it for tomorrow at 9:00wali(`{"phone": "+14155550142",       "message": "Doors open at 9:00",       "deliverAt": "2026-08-25T09:00:00Z"}`)
require "net/http"; require "json"def wali(**body)  uri = URI("https://api.wali.chat/v1/messages")  Net::HTTP.post(uri, body.to_json,    "Authorization" => ENV["WALI_TOKEN"],    "Content-Type"  => "application/json")end# Send a messagewali(phone: "+14155550142",     message: "Your order shipped")# Send a filewali(phone: "+14155550142",     media: { url: "https://acme.co/cat.pdf" })# Schedule it for tomorrow at 9:00wali(phone: "+14155550142",     message: "Doors open at 9:00",     deliverAt: "2026-08-25T09:00:00Z")
// Java 11+, one helper for every callHttpClient http = HttpClient.newHttpClient();void wali(String body) throws Exception {  http.send(HttpRequest.newBuilder()    .uri(URI.create(      "https://api.wali.chat/v1/messages"))    .header("Authorization",      System.getenv("WALI_TOKEN"))    .header("Content-Type", "application/json")    .POST(BodyPublishers.ofString(body))    .build(), BodyHandlers.ofString());}// Send a messagewali("""  {"phone": "+14155550142",   "message": "Your order shipped"}""");// Send a filewali("""  {"phone": "+14155550142",   "media": {"url": "https://acme.co/cat.pdf"}}""");// Schedule it for tomorrow at 9:00wali("""  {"phone": "+14155550142",   "message": "Doors open at 9:00",   "deliverAt": "2026-08-25T09:00:00Z"}""");
// One client for every callvar http = new HttpClient();http.DefaultRequestHeaders.Add(  "Authorization",  Environment.GetEnvironmentVariable(    "WALI_TOKEN"));Task Wali(object body) =>  http.PostAsJsonAsync(    "https://api.wali.chat/v1/messages", body);// Send a messageawait Wali(new { phone = "+14155550142",  message = "Your order shipped" });// Send a fileawait Wali(new { phone = "+14155550142",  media = new { url = "https://acme.co/cat.pdf" } });// Schedule it for tomorrow at 9:00await Wali(new { phone = "+14155550142",  message = "Doors open at 9:00",  deliverAt = "2026-08-25T09:00:00Z" });
RESPONSE · 201
{"id": "6a1f…c7","status":"delivered" }

7 days free trial. No card required. No strings attached.

Professional

$39.90per month

$33.25per month

Billed monthly. Cancel anytime.

$399 billed once a year

Team members
3
Text messages per month
20,000
Contacts stored
5,000
No-code AI agents & Flows
Not included
Campaigns per day
1
Chat history retention
270 days
Start free trialDiscover more features

Enterprise

$99.90per month

$83.25per month

Billed monthly. Cancel anytime.

$999 billed once a year

Team members
9
Text messages per month
Unlimited
Contacts stored
Unlimited
No-code AI agents & Flows
50
Campaigns per day
10
Chat history retention
2,190 days
Start free trialDiscover more features

WhatsApp Business API numbers are billed per number, plus Meta conversation fees. See API pricing

Compare all features

Questions, answered

Do I have to change my WhatsApp number?

No. You keep your current number, and your chats.

How many people can work on one number?

Your whole team, at the same time. Your plan sets how many.

What can the AI agent actually do?

You build it to answer your common questions day and night, and to pass the rest to a person.

How long does setup take?

About five minutes: connect your number and invite your team.

Can I integrate WaliChat with my own systems?

Yes. Through our API, or with no-code tools like Zapier, Make and n8n.

Is there a mobile app?

Yes, on iOS and Android, with the same shared inbox.

What does a plan cost per number?

Everything in your plan is included, at a predictable price per number each month. Meta charges conversation fees separately.

Is this the official WhatsApp Business API?

Yes. WaliChat is an official WhatsApp Business API provider, and your number is registered with Meta rather than running through a workaround.