Message, keyword, and time triggers
Rules can match a new message, listed keywords, or an out-of-hours condition. The first_message_only flag supports welcome flows.
WhatsApp Automation
Wavy's automation engine evaluates inbound WhatsApp messages against rules. Each rule has a trigger (what event starts it), filters (what conditions must match), and an action (what happens). Built-in rules handle welcome replies, out-of-office messages, and broadcast unsubscribe. Custom rules can send messages, hand off to a bot, or invoke AI Copilot — but send actions respect the channel's configured or dry-run state, and AI features require a server-side LLM key.
How automation works
This is the real rules-engine flow in the backend — not a generic automation overview.
/webhooks/meta endpoint. The verifier checks the HMAC signature (constant-time). The message is persisted to the conversation and message tables.new_message, keyword, and out_of_hours triggers. New-message rules may use first_message_only; keyword rules read their keyword list from the trigger.out_of_hours for working-hour settings. It is not a general visual condition builder for arbitrary message fields.unsubscribe action immediately suppresses the contact by setting their opted_in flag to False. Automation replies are recorded with provider message IDs when available, so the conversation log reflects what actually happened.Built-in rules
These are defined in the rules service and seeded when the backend starts. They can be toggled off or replaced with custom rules.
opted_in to False and marks the lead Unsubscribed.What you need
Automation without a configured channel is a dry run. Automation with AI features needs an LLM key.
LLM_API_KEY set server-side, Copilot methods return a not-configured response.Safeguards
configured property. Unconfigured sends do not call Meta — they return synthetic IDs so the automation log shows what would have been sent without actually sending it.Automation capabilities
Rules can match a new message, listed keywords, or an out-of-hours condition. The first_message_only flag supports welcome flows.
The current filter implementation supplies working-hour settings to out-of-hours rules; it is not yet a general condition canvas.
Sends a configured text body through WhatsAppClient. It respects configured and dry-run states — no real send occurs without credentials.
Immediately sets the contact's opted_in flag to False. Suppressed contacts are excluded from future campaign segments.
Copilot can suggest replies, summarise conversations, and translate — but only when an LLM key is configured server-side.
Questions
The rule fires, but the send-message action goes through the WhatsAppClient, which returns a synthetic ID and does not call Meta. This is the dry-run fallback. No real reply reaches the contact until the channel is configured.
No. They are seeded on startup but can be toggled off or replaced with custom rules. You control which rules are enabled for your workspace.
No. Automation is triggered by inbound messages arriving via the Meta webhook. Without a verified webhook, no inbound message reaches the rules engine.
AI Copilot can suggest replies and summaries, but it requires an LLM key configured server-side. Without it, Copilot methods return a not-configured response. AI-generated replies are suggestions for a human to review, not autonomous sends.
The unsubscribe built-in rule fires and immediately suppresses the contact by setting their opted_in flag to False. They are excluded from future campaign segments from that point forward.
It runs when the conversation is marked as bot-handled and an enabled workspace connector exists. The current selector is workspace-level, so connector routing requires careful review before live use.
The rules engine fires on real inbound messages, but send actions respect your channel's configured state. Configure your webhook and channel to move from dry-run to live automation.