Why Integrate WhatsApp with Chat SDK?
WhatsApp is the most popular messaging platform globally, with over 2 billion users. Adding WhatsApp support to your chatbot opens up direct communication with your customers where they already are. The new Kapso adapter for Chat SDK makes this integration seamless, handling all the WhatsApp Business API complexity—credentials, webhooks, and message routing—so you can focus on your bot's logic.
This guide walks you through the entire process: installing the adapter, configuring it, and running your first WhatsApp bot. By the end, you'll have a working bot that responds to direct messages and @-mentions.
For a deeper understanding of how large-scale data management works, check out our related piece on How Netflix Manages Millions of Data Assets with Data Projects.

Setting Up the Kapso Adapter
Prerequisites
- Node.js 18+ installed
- A Chat SDK project (if you don't have one, create a new project with
npm initand installchat) - A Kapso account and API key (sign up at kapso.com)
- A WhatsApp Business phone number (set up via Kapso dashboard)
Installation
First, install the Kapso adapter package:
npm install @kapso/chat-adapter
Basic Configuration
Create a new bot instance with the Kapso adapter. Here's the complete setup code:
import { Chat } from "chat";
import { createMemoryState } from "@chat-adapter/state-memory";
import { createKapsoAdapter } from "@kapso/chat-adapter";
// Initialize the bot with Kapso adapter
export const bot = new Chat({
userName: "support",
state: createMemoryState(),
adapters: {
kapso: createKapsoAdapter({
kapsoApiKey: process.env.KAPSO_API_KEY,
phoneNumberId: process.env.KAPSO_PHONE_NUMBER_ID,
webhookSecret: process.env.KAPSO_WEBHOOK_SECRET,
}),
},
});
// Handle direct messages
bot.onDirectMessage(async (thread, message) => {
await thread.post(`You said: ${message.text}`);
});
Handling @-Mentions
To respond to @-mentions in WhatsApp group chats, add a listener:
bot.onMention(async (thread, message) => {
await thread.post(`Hi! You mentioned me: ${message.text}`);
});
The adapter automatically maps each WhatsApp conversation to a Chat SDK thread, tied to a specific phone number and contact. Each inbound WhatsApp message becomes a Chat SDK message, so you can use all standard Chat SDK features like buttons, cards, media, reactions, contacts, and conversation history.
Environment Variables
Create a .env file in your project root:
KAPSO_API_KEY=your_kapso_api_key
KAPSO_PHONE_NUMBER_ID=your_whatsapp_phone_number_id
KAPSO_WEBHOOK_SECRET=your_webhook_secret

Limitations and Caveats
- Rate Limits: WhatsApp Business API has strict rate limits. Kapso handles queuing, but you should design your bot to be stateless and handle retries gracefully.
- Media Support: While the adapter supports media, file sizes are limited (typically 16MB for images, 64MB for videos).
- Session Persistence: By default, state is stored in memory using
createMemoryState(). For production, switch to a persistent state adapter (e.g., Redis or database) to avoid losing conversations on server restart. - Webhook Security: Always validate the
webhookSecretto prevent unauthorized access.
Next Steps for Learning
- Explore the Kapso documentation for advanced features like message templates and broadcast messages.
- Read the Complete Guide to Chat SDK to understand end-to-end deployment across platforms.
- Learn about scaling your bot with GPU-accelerated inference by reading Maximizing GPU Utilization for LLM Inference: A Deep Dive into NVIDIA Runai & NIM.

Conclusion
Integrating WhatsApp with Chat SDK using Kapso is straightforward. You get a production-ready adapter that abstracts away the WhatsApp Business API complexity. Start with the basic setup above, then extend your bot with rich media, buttons, and conversation history. Remember to handle rate limits and use persistent state for production deployments.
Key takeaways:
- Kapso adapter handles all WhatsApp Business setup and webhooks
- Use standard Chat SDK APIs for messages, threads, and media
- For production, replace in-memory state with a persistent store
- Check Kapso and Chat SDK docs for advanced features