Skip to main content

Automation: rules and auto-responder

Answer incoming SMS automatically, label conversations, file contacts into groups or call your tools, with rules evaluated in order, a built-in anti-loop guard and a global switch.

A rule watches every SMS you receive. When the message matches its trigger (a keyword, a pattern, a first contact, a message outside opening hours...), the rule runs its actions: reply by SMS, label the conversation, add the sender to a group, call one of your tools. Together, your rules form the auto-responder.

Rules live in Rules, in the Automation section of the menu. The global switch that turns all automatic replies off or on lives in Settings > Auto-responder.

What rules are for

  • Answering PRICES, HOURS or ADDRESS with the right information, day and night.
  • Telling people who write in the evening or on weekends when you will answer.
  • Welcoming a new number with a message and filing it into a "Leads" group.
  • Labelling every message that contains "invoice" so the accounting team finds it.
  • Notifying your CRM or n8n when a customer writes a given keyword.

How the rules are evaluated

When an SMS arrives, the gateway walks through your active rules from top to bottom:

  1. A rule whose trigger does not match is skipped.
  2. The first rule that matches runs its actions, in their order.
  3. Then the chain stops, unless that rule has Let the chain continue checked: in that case the next matching rules run too.
  4. An action Stop the chain ends everything at once, including the remaining actions of that rule.

The order is therefore part of the behaviour. Reorder the list by dragging a rule by its handle, or with the Move up and Move down buttons; the order is saved immediately. Each rule shows a badge that sums up its effect on the chain (Stops the chain when it matches, Lets the chain continue, Stops everything), and a rule that can never be reached because an earlier rule catches every message is flagged Never reached, with a warning naming the culprit.

Rules only look at received SMS. They never react to what you send.

Create a rule

Click New rule. The form has the following options.

General options

Option Default Allowed values Effect
Rule name None 1 to 80 characters, unique For you and for the Activity log
Trigger None See the table below What makes the rule fire
Rule active On On or off An inactive rule is kept but never evaluated
Let the chain continue Off On or off Off: when this rule matches, the rules below are skipped. On: evaluation goes on
Anti-loop window (minutes) 60 minutes (empty field) 1 minute to 7 days At most one automatic reply per contact over this period, all rules together
Delay before replying (seconds) 0 (empty field) 0 to 120 Waits before the reply leaves, for a more natural feel

Triggers

Trigger Fires when What to fill in
Exact keyword The whole message is one of the keywords Keywords, separated by commas: 50 at most, 120 characters each
Keyword contained The message contains one of the keywords Keywords
Regular expression The message matches the pattern Regular expression, without slashes, 500 characters at most
Any incoming message Every message. Put it last: it catches everything Nothing
First contact The first message from a number never seen before Nothing
Outside hours A message received outside the opening hours of the rule Opening hours, below

Keywords and regular expressions ignore case and accents, and spaces around keywords: Tarif, TARIF and tarif all match the keyword tarif.

Opening hours (trigger Outside hours)

Option Default Effect
Working days Monday to Friday Days on which you are open. At least one
Opens at 09:00 Start of the opening hours
Closes at 18:00 End of the opening hours. Must be after the opening time
Time zone The platform time zone The zone in which these hours are read

These hours belong to the rule. They have nothing to do with the night and Sunday pauses of the settings, which only hold campaigns and never an automatic reply.

Actions

A rule has 1 to 10 actions, run in the order shown; Add an action, reorder or remove them in the form.

Action Options Effect
Reply by SMS Reply content: Free text (up to 4000 characters) or Saved template Sends an SMS to the sender. Template placeholders are filled from the sender's contact record; see Templates
Call a webhook Webhook URL (http or https), Signing secret Sends a signed HTTP call to your tool. The secret is write only: it is never shown again
Add to a group Group The sender's contact joins the group
Remove from a group Group The contact leaves the group
Label the conversation Label (40 characters at most), Thread state: Open, Pending (default) or Resolved Tags the conversation and sets its triage state in Conversations
Stop the chain None Ends evaluation here: remaining actions of this rule and all later rules are skipped

The call made by Call a webhook carries the rule identifier and name, the conversation identifier, the sender's number masked (+261******89) and the time. It never carries the text of the SMS. It is signed and retried like any webhook: see Webhooks.

The guards that protect you

An auto-responder that answers another auto-responder can send thousands of SMS in minutes, all billed to you. Three guards stand in the way of every automatic reply:

Guard What it does
Anti-loop window One automatic reply per contact per window, whichever rule answers. If three rules match the same message, only one SMS leaves
Opt-out A number that sent STOP never gets an automatic reply. This is a legal obligation, no rule can bypass it
Global switch Send automatic replies in Settings > Auto-responder. Off, no rule replies any more

When a guard holds a reply back, the Activity log says so with the reason ("anti-loop guard", "opted out", "switched off"). The window is used up as soon as a reply is queued, even if the phone then fails to send it: at worst a contact misses one automatic reply.

Test before you publish: the rule tester

Under the list, Rule tester lets you type a Fictitious sender number (international format, for example +33612345678) and a Fictitious incoming message, then Simulate. Two extra options help with the special triggers:

  • Simulate an unknown number, to exercise First contact;
  • Simulated reception time, to exercise Outside hours without waiting for the evening.

The result lists the rules that would fire, the exact text that would be sent, the actions that would run, and any reply a guard would hold back. It is a simulation only: no SMS leaves, no contact is filed, no webhook is called, the anti-loop window is not consumed and the trigger counters do not move. You can run it as often as you like, even with a Read only account.

The global switch: Settings > Auto-responder

Option Default Who can change it Effect
Send automatic replies On Superadmin Off: every Reply by SMS action is held back. Applies from the next message received, no restart

Turning it off stops the replies only. Everything else keeps working:

  • Label the conversation, Add to a group, Remove from a group, Call a webhook and Stop the chain still run;
  • the trigger counters still move;
  • the anti-loop window is not consumed: a contact who wrote while the switch was off gets an answer to their next message once you turn it back on.

This is the switch for a holiday, an incident or a moment when you want to answer by hand, without touching your rules. The same tab shows a summary: number of rules, active ones, active ones that reply, rules per trigger, and the active rules in the order they are evaluated, with a Manage rules link to the Rules screen.

On the Rules screen

Each rule shows whether it is Active or Inactive (with an Enable / Disable button), its trigger count and Last triggered date. Deleting a rule removes it and its counter; messages already sent are not affected.

Who can do what

Role Rules Global switch
Read only See the rules, use the tester See it
Operator Create, edit, reorder, enable, delete See it
Superadmin Everything Turn it on or off

With the API

Method Path What it does
GET /api/v1/rules Every rule, in evaluation order
POST /api/v1/rules Creates a rule: name, trigger, actions, optional enabled, keywords, pattern, schedule, cooldownSeconds, replyDelaySeconds, continueProcessing
GET /api/v1/rules/{ruleId} One rule
PATCH /api/v1/rules/{ruleId} Changes a rule
DELETE /api/v1/rules/{ruleId} Deletes a rule
PUT /api/v1/rules/order New evaluation order: send the complete list of rule identifiers
POST /api/v1/rules/test The rule tester
PATCH /api/v1/settings {"autoresponder": {"enabled": false}} turns the global switch off

With an API key, reading needs the read scope and every change needs the admin scope. See API keys.

Trigger values: keyword_exact, keyword_contains, regex, any_message, first_contact, outside_hours. Action types: reply, webhook, group_add, group_remove, label, stop_processing. The events rule.triggered and rule.suppressed can notify your tools; see Webhooks.

Troubleshooting

What you see Why, and what to do
A rule never fires It is inactive, or a rule above it catches the message and stops the chain (look for Never reached). Try the message in the Rule tester
The contact got no reply the second time The anti-loop window: one automatic reply per contact per window. Shorten it on the rule if needed
No rule replies at all, but labels still appear Send automatic replies is off in Settings > Auto-responder
A number never gets a reply It opted out (STOP). See Contacts and groups
The reply contains {firstname} The sender is not in your contacts or has no first name. Add a fallback: {firstname|there}
"Outside hours" replies during the day Check the Working days, the hours and the Time zone of the rule

Search the documentation

Type a few words, then pick a page.