User features for owners and members, deep product capabilities, and the technical architecture that powers the platform.
How user-facing and technical capabilities connect.
What owners and members can do in the panel.
Full access: billing, team members, invitations, instances, and all product features within plan limits.
Billing & subscription, Invite & remove members, Manage WhatsApp instances, All dashboard features, Settings (Team, Billing, Usage, Instances, AI, Developers, Activity, Security)
Use the product within the team: inbox, CRM, campaigns, automation, AI — no billing or member management.
Dashboard, Contacts, Campaigns, Templates, Automation, Analytics, AI Drive (if enabled), Find leads (if enabled), Settings (except Billing; invite form hidden)
Access to Admin Panel only: users, teams, plans, branding. No app sidebar; redirect to /admin.
Overview, Users, Teams, Plans, Branding
From first visit to daily use — how users move through the platform.
Next.js 16 (App Router, React 19), TypeScript, PostgreSQL, Drizzle ORM, Pusher (real-time), Airwallex (payments), Resend (email), Evolution API (WhatsApp: Baileys + WABA)
Backend capabilities and integration points.
Internal APIs (session auth): /api/chats, /api/contacts, /api/messages, /api/campaigns, /api/templates, /api/instance/*, /api/automation/*, /api/leads/*, /api/features, /api/usage, /api/team, /api/user, and more.
Public/verified: POST /api/webhook/evolution (WhatsApp events), POST /api/airwallex/webhook (subscriptions), POST /api/v1/send (API key auth for sending messages).
Per-team limits: max users, contacts, WhatsApp instances, automations, API calls/month, AI requests/month. Feature flags: AI, Flow builder, Campaigns, Templates, AI Drive, Find leads, Integrations, Webhook trigger. Enforced in APIs and UI.
Product capabilities in detail.

Manage all your WhatsApp conversations in one place. Search and filter chats by unread, assigned agent, or tags. Assign conversations to team members so everyone knows who handles what. Real-time updates via Pusher keep the whole team in sync as messages arrive. Supports both WhatsApp Web (Baileys, QR connection) and the Official WhatsApp Business API (WABA), so you can mix personal and business numbers. Never miss a message: all chats, media, and status updates flow into a single inbox with live notifications.

A visual Kanban pipeline with custom stages (e.g. New lead, Qualified, Proposal, Closed) and custom fields per team. Move contacts from first touch to close by dragging cards between stages. Tag contacts for segmentation, track full conversation history, and assign an owner per contact. Custom fields let you store data like company size, budget, or source. One contact is linked to each chat; funnel stages and tags are shared across the team so everyone sees the same pipeline and filters.

Drag-and-drop flow builder to design automations without code. Start with a keyword trigger (e.g. "hello" in the first message) or a webhook trigger for external systems. Add nodes: send message, delay, conditions (if/else), save contact (update funnel or tags), HTTP request, Integration tool for 1000+ apps, or an AI node for smart replies. Each run has sessions and variables so you can pass data between steps. The webhook trigger exposes a unique URL per automation with rate limiting so you can safely trigger flows from your own apps or CRMs.

Send bulk messages using official WhatsApp Business templates that comply with Meta’s policies. Create and submit templates in the app, sync with Meta, and track approval status. Once approved, run campaigns by selecting a template, mapping variables, and choosing contacts or segments. Delivery and read status are tracked per lead. Access is plan-gated (isCampaignsEnabled, isTemplatesEnabled) so you can offer campaigns only on higher tiers. Ideal for announcements, follow-ups, and marketing that stays within WhatsApp’s rules.

Configure your AI provider (Google Gemini or OpenAI), model, and system prompts in Settings. Multi-agent support lets you create several agents (e.g. sales, support, qualification) and attach them to the inbox, campaigns, or automation nodes. Use function calling so agents can look up contacts, update the funnel, or call tools. Plan limits (max AI requests per month) are enforced so usage stays within your subscription. Agents can reply in the inbox, power automation nodes, or drive template-based flows with personalized answers.

Create API keys in Settings → Developers and use them to call internal APIs for chats, contacts, messages, campaigns, templates, instances, automations, and usage. All requests are authenticated and counted against your plan’s API limit. In-app docs describe endpoints and parameters. Use the same keys for server-side integrations or headless workflows. Plan flags control access to integrations and webhook-triggered automations so you can offer advanced features on select plans.

Sessions use cookies with JWT and bcrypt for passwords; optional Google OAuth lets users sign in with one click. Activity logs record actions (sign-up, invite, create instance, etc.) with timestamp and IP for audit and support. Users can reset password, delete their account, or unlink Google. Admin-only routes are protected server-side so only users with the admin platform role can access the Admin Panel. No sensitive credentials are stored in the front end.

Platform roles: admin (access only to the Admin Panel for users, teams, plans, branding), owner (full app access plus invite form and billing). Team roles: owner (billing, members, instances, all settings) and member (inbox, CRM, campaigns, automation, AI — no billing or member management). Invitations are sent by email via Resend; accepting adds the user to the team with the chosen role. The plan’s max_users limit is enforced when sending an invite so you stay within your subscription.

Discover and qualify leads before you message them. Run a search by business type (e.g. restaurant, plumber) and location (city, address, or coordinates with optional radius). Results are scraped from a Google Maps–style provider and stored with name, phone, address, category, website, and rating. Use a WhatsApp Web (Baileys) instance to check which businesses are on WhatsApp, then import selected leads into your CRM with a funnel stage and tags. Save selections as named lists for later use or export to CSV/Excel. Plan limit max_scraped_leads_per_run caps each run; Find leads is gated by is_lead_scraper_enabled.

Connect one or more WhatsApp numbers through Evolution API. Two options: WhatsApp Web (Baileys) for personal or small-business numbers — scan a QR code, no Meta Business verification. Or Official WhatsApp Business API (WABA) for verified business numbers — add Meta token, Business Account ID, and Phone Number ID for template messaging and campaigns. Each instance is created in the app and stored with an Evolution token for sending. Webhooks point to your app so incoming messages and status updates are received in real time. Instance count is limited per plan (max_instances).

Connect external apps and use them inside automations. Link accounts (e.g. Gmail, Slack, CRM) in Settings → Integrations; then in the flow builder add an Integration tool node and choose from 1000+ actions. Credentials are stored encrypted per team. Use integrations to send emails, create calendar events, or update external CRMs from a WhatsApp flow. Plan flag is_integrations_enabled controls access; optional max_connections_per_team can limit how many connections each team has.

See how your team and channels perform. Dashboard and Analytics surfaces usage and trends: messages sent, campaign delivery, automation runs, and API consumption. Track funnel movement and contact growth. Usage data feeds into plan limits (API calls, AI requests) so you can monitor quota. Combine with activity logs for a clear picture of who did what and when, useful for auditing and optimizing workflows.

All live updates are pushed to the browser via Pusher. New messages, read receipts, and typing indicators appear without refresh. Chat list and conversation view stay in sync for every team member. Instance connection status and QR code updates are also real time. No polling: the app subscribes to channels per team and instance so you get instant feedback whether you’re in the inbox, CRM, or dashboard.

Incoming WhatsApp events are sent to your app at POST /api/webhook/evolution; the app stores messages, updates chats, and runs automations (e.g. keyword trigger) before AI. You can also start automations from outside: create a flow with a Webhook trigger, copy the unique URL and token, then POST contactId or phone (and variables) to run the flow. The webhook endpoint is rate limited per token. Use it to trigger flows from your CRM, landing pages, or custom backends. Plan flag is_webhook_trigger_enabled controls access to the webhook trigger node.
Ready to get started?
Start free trial