Behavior rules give you fine-grained control over which messages Whatsy replies to, and how. Instead of treating every incoming message the same way, you can define conditions — keyword matches, contact labels, time windows, or message types — and pair each condition with an action. Rules run before the language model is ever called, keeping things fast and giving you a clear override layer between the raw message and the AI-generated reply.
How rules work
Rules are evaluated in the order they appear in your settings. The agent checks each enabled rule against the incoming message, and the first rule that matches determines what happens next. Once a matching rule’s action is applied, no further rules are checked.
Rule order matters. Put your most specific rules at the top — for example, a rule that matches a particular contact label — and leave broader catch-all rules toward the bottom. A broad rule placed first will shadow everything below it.
If no rule matches, the agent continues with normal processing: it builds conversation context, assembles the active persona prompt, and calls Ollama to generate a reply.
Conditions
Each rule has exactly one condition, defined by a condition type and a condition value.
| Condition | Description |
|---|
keyword | Matches when the incoming message text contains the specified keyword or phrase (case-insensitive). Useful for filtering recurring topics, commands, or spam patterns. |
contact_label | Matches when the sender’s contact note contains the specified label. You assign contact notes in Whatsy’s contact manager. Use this to route messages from business contacts, VIPs, or specific groups. |
time_of_day | Matches based on the current hour on your Mac. Set the value as a range in 24-hour format, e.g. 22-8 to match between 10 PM and 8 AM. Ranges that cross midnight are supported. |
message_type | Matches based on the type of message received. Set the value to any to match all message types regardless of content (text, image, sticker, and so on). |
Actions
When a rule’s condition matches, its action tells the agent what to do with the message.
| Action | Description |
|---|
skip | Do not reply. The message is logged in the activity dashboard with the rule name, but no reply is sent and no LLM call is made. |
reply_with_persona | Reply using a specific persona identified by its ID, overriding the currently active persona. Set the action value to the persona ID you want to use. |
notify_only | Log the message in the activity dashboard but do not send a reply. Use this when you want visibility into certain messages without triggering auto-reply. |
archive | Archive the conversation without sending a reply. The message is still logged. |
Example rules
1. Skip spam and newsletter messages
Automatically ignore messages that contain unsubscribe footers or marketing language, so the LLM never wastes time generating a reply for them.
- Condition:
keyword
- Condition value:
unsubscribe
- Action:
skip
Add a second rule with value newsletter and action skip to cover both patterns.
If you label certain contacts in Whatsy as business, you can route their messages to a polished, professional persona instead of your casual everyday one.
- Condition:
contact_label
- Condition value:
business
- Action:
reply_with_persona
- Action value:
<your-professional-persona-id>
This rule lets you maintain separate voices for personal and professional conversations without manually switching personas.
3. Silence all messages outside active hours
Stop Whatsy from replying late at night or early in the morning by creating a time-of-day rule that covers your off-hours window.
- Condition:
time_of_day
- Condition value:
22-8 (10 PM to 8 AM)
- Action:
skip
Place this rule near the top of your list so it takes precedence over other rules during those hours. Messages received during this window are logged but not replied to — they will not be retroactively answered when your hours resume.
4. Monitor all messages without replying
If you want a period of visibility before going fully live — for example, while you are fine-tuning your persona — you can set a catch-all rule that logs every incoming message without sending any reply.
- Condition:
message_type
- Condition value:
any
- Action:
notify_only
You will see every incoming message in the activity dashboard, but your contacts will not receive automated replies. Remove or disable this rule when you are ready to turn on full auto-reply.
For step-by-step instructions on setting up rules in the UI, see Setting Up Behavior Rules.