When somebody messages your business on any supported channel — webchat, SMS, a missed call, or WhatsApp — the AI assistant reads the conversation history, replies in about two seconds, and creates a lead in your CRM if one does not exist yet. It uses the business context you configure (services, pricing, hours) so the answers sound like they came from you, not a generic chatbot.
The feature is included on every plan. The only thing that varies is the monthly response cap.
webchat, sms, phone, whatsapp.The toggle applies per organisation. If you run multiple orgs, configure each one separately.
Webchat — When a visitor sends a message in the website widget, the AI replies inline. Because webchat is anonymous until the visitor leaves contact info, the AI tries to surface useful answers without forcing a phone capture.
SMS — When a customer texts your DunaHub number, the AI auto-replies. The AI flow runs inside waitUntil, so the webhook returns 200 to Twilio fast and the AI response is dispatched in the background.
Missed call (phone) — When a call goes unanswered (no-answer / busy / failed / canceled), the AI generates an SMS reply to the caller. This replaces the legacy static text-back when AI is enabled and 'phone' is in the channel list. If AI is disabled or the channel is not enabled, the static missed-call text-back still fires.
WhatsApp — The AI replies in WhatsApp via Evolution. Messages sent with WhatsApp privacy (the new @lid addressing) are resolved to a real phone via Evolution's remoteJidAlt field so the AI can match the contact to existing SMS/voice history.
Two ways to take over a conversation:
Keyword handoff. When the lead writes one of your configured keywords (default: speak to someone, manager, human, etc.), the AI logs an ai_handoff event and stops responding on that lead's conversation. The lead is flagged so you can prioritise the reply.
Grace period. If you (a human teammate) send a reply yourself, the AI pauses for the configured grace window (default 60 minutes). This stops the AI from talking over you when you are mid-conversation. The grace resets every time a human replies.
| Plan | AI responses per month | | ------- | ---------------------- | | Free | 50 | | Starter | 500 | | Pro | 2,000 | | Growth | Unlimited |
The counter resets on the first day of each UTC month. Usage is tracked in ai_usage_monthly and exposed in the admin/dashboard.
The AI flow gates before calling the language model — once the month's quota is exhausted, no more LLM calls are made (so no surprise costs). Three things still happen:
ai_handoffs with reason: 'monthly_limit' so you can see in the audit log which leads were affected.To resume AI replies, either upgrade the plan or wait until the next UTC month resets the counter.
Every AI run writes a row to ai_conversation_runs with:
model — currently deepseek-chat (DeepSeek-V3.x).prompt_tokens, completion_tokens — token counts for the run.cost_usd — computed in USD from the provider's published rate (≈ $0.0008 per response at typical lengths).latency_ms — end-to-end LLM latency.delivery_status — sent or failed. If the LLM responded but the platform send (Twilio SMS or Evolution WhatsApp) failed, this is set to failed and delivery_error carries the cause.This audit is per-org and visible from the dashboard. Use it to monitor usage and spot delivery problems early.
DunaHub uses DeepSeek as the LLM provider. The typical per-response cost is about $0.01 USD — well below the per-message price of any SaaS that resells AI as an add-on. We absorb the cost inside your plan; you pay nothing extra.