Integrations Overview
Choose the right integration pattern for connecting WhatsApp to your existing tools.
open-wa provides several ways to connect WhatsApp to other services. This guide helps you choose the right pattern for your use case.
Decision Tree
Start Here
Ask yourself:
- Do you want to push events to an existing service? Use webhooks
- Do you want a full inbox experience? Use Chatwoot or a CRM integration
- Do you want to build custom logic? Use plugins or SocketClient
- Do you want AI agents to control WhatsApp? Use MCP
Integration Patterns
| Pattern | Best for | Complexity |
|---|---|---|
| Webhooks | Pushing events to your service | Low |
| SocketClient | Building a bot in Node.js | Medium |
| Plugins | Reusable integrations | Medium |
| Chatwoot | Full inbox with agents | Medium |
| MCP | AI agent control | Low |
| Embedded runtime | Full control over browser | High |
Data Flow: WhatsApp to Your Service
Webhook Flow
WhatsApp → open-wa → HTTP POST → Your ServiceMessages and events are pushed to your endpoint as JSON payloads.
Plugin Flow
WhatsApp → open-wa → Plugin → External API → ResponsePlugins run inside the open-wa process and can call external services directly.
Chatwoot Flow
WhatsApp → open-wa → Chatwoot API → Agent Inbox
Agent Reply → Chatwoot API → open-wa → WhatsAppBidirectional sync between WhatsApp and Chatwoot.
Contact and Message Sync
How Contacts Work
When a message arrives, open-wa has access to:
- The sender's phone number (in
message.from) - The sender's display name (if available)
- Group membership information
Message Synchronization
- Incoming messages: Delivered to your integration in real-time
- Outgoing messages: Sent through your integration's API
- Message status: Delivery receipts, read receipts, and typing indicators
Security and Compliance
Data Storage
- open-wa stores session data locally (authentication tokens, browser state)
- Messages are not stored by open-wa unless your integration saves them
- Media is decrypted on demand and not persisted
GDPR Considerations
- You are responsible for handling personal data in messages
- Consider implementing message retention policies
- Document what data your integration stores and why
Data Retention
Implement retention policies in your integration:
- Delete old messages after a set period
- Allow users to request data deletion
- Log only what is necessary for operation
Licensing for Integrations
Licensing follows the methods and runtime behavior that an integration uses, not only its wrapper name. Each integration can call different parts of the API surface. Examine the pricing page and method reference before you promise a workflow to a customer.
Choosing Your Path
For Quick Integrations
Start with webhooks:
- Add
@open-wa/integration-webhooktopluginsinwa.config.* - Point
pluginConfig.webhook.urlat your service endpoint - Handle incoming JSON payloads
For Custom Logic
Use plugins:
- Install the plugin SDK
- Build your integration as a plugin
- Load it via
wa.config.js
For Full Inbox
Use Chatwoot:
- Set up Chatwoot
- Configure the Chatwoot plugin
- Connect your WhatsApp session
For AI Agents
Use MCP:
- Enable MCP in config with
mcp: { enabled: true }and keepapiKeyconfigured - Verify whether your installed build mounts the configured
/mcproute - If
/mcpis mounted, point your AI client at that endpoint so it can discover and call WhatsApp methods - If your build does not mount
/mcp, give the agent the HTTP API docs or OpenAPI schema. You can also give it the Postman collection.
Related
- Webhooks for business - Webhook setup and payloads
- MCP Integration - AI agent integration
- Chatwoot integration - Full inbox setup
- Plugin getting started - Build custom integrations
Was this helpful?
Your answer includes the page path and docs version.
