Trigger rules are the core of MagicAI Engage: they decide who gets contacted, on which channels, and how the outreach is measured. This article covers the nine default rules, how to create and edit a rule, the condition fields and operators, the delivery channels and paths, the A/B test, saving and activating, the messaging guards, and how priority resolves members who match several rules at once.
Contents
- The nine default trigger rules
- Create and edit a trigger rule
- Conditions: who gets targeted
- Condition field reference
- Operators
- Contract type filter
- Channels: how members are reached
- Delivery path: one-way or via the AI agent
- A/B test
- Messaging guards
- Save and activate
- Priority and multi-match resolution
- Interlock with MagicAI Chat
The nine default trigger rules
Nine default rules are created automatically when you create a configuration, ordered by priority (position 0 runs first). They all start inactive.
| Priority | Rule | Category | Default condition | Cooldown |
|---|---|---|---|---|
| 0 | Churn Risk | Churn Risk | Churn risk band ≥ High | 30 days |
| 1 | New Joiner Churn 3M | New Joiner Churn | New joiner churn band 3M ≥ High | 30 days |
| 2 | New Joiner Churn 6M | New Joiner Churn | New joiner churn band 6M ≥ High | 30 days |
| 3 | New Joiner Churn 12M | New Joiner Churn | New joiner churn band 12M ≥ High | 30 days |
| 4 | Dormancy | Dormancy | Days since last visit > 15 | 30 days |
| 5 | Attendance Drop | Attendance Drop | Is drifting = Yes | 14 days |
| 6 | Contract Expiry | Contract Expiry | Days until contract end ≤ 30 | 14 days |
| 7 | New Member | New Member | Days since contract start < 14 | 7 days |
| 8 | Custom | Custom | None (add your own) | 7 days |
In the live build, rules 0 to 3 are of type AI Model; rules 4 to 8 are of type Custom Rule. These defaults are starting points. You can edit conditions, channels, cooldowns, and priorities freely.
At go-live there is one built-in Custom rule (priority 8, rule #9), which you configure like any other rule. In a later release, operators will additionally be able to create their own custom rules, up to 5 per Members audience, as one-message triggers (not dynamic follow-up workflows).
The nine rules above are all on the Members audience. Two further triggers run on their own event-driven audiences. On the Leads audience, a New-Lead welcome trigger fires when a new lead is created and reaches out once. On the Former Members audience, a win-back trigger reaches out to a member who has cancelled, once, at cancellation plus a configurable number of days (default 30), and only ever once per member. Both are event-driven rather than scheduled in the daily batch, and both sit outside the A/B split.
What the categories mean:
- Churn Risk: members with an elevated general churn risk band. This is the broadest retention rule.
- New Joiner Churn: members in their first year whose early behavior suggests elevated churn risk. Scored by dedicated models 42 days (6 weeks) after the contract starts, across three cancellation horizons (3, 6, and 12 months). See also: The churn risk signal.
- Dormancy: members who have stopped visiting entirely. The default threshold is 15 days since the last visit. This is your "we miss you" rule.
- Attendance Drop: members who are still visiting but noticeably less often. Distinct from dormancy: the member is active but declining, which is often the earlier and more actionable signal.
- Contract Expiry: members whose contract ends soon. Use this to re-engage before a cancellation decision is made. A contract in its cancellation notice period is still active until the end date.
- New Member: members who just joined. Use this to welcome them and guide onboarding during the critical first two weeks.
- Custom: no default condition. Build any targeting logic from the available condition fields.
Create and edit a trigger rule
Expand a rule row in the Configuration tab to edit it. The editor is organized into WHO (targeting conditions), HOW (delivery channels), WHEN (trigger cooldown), and A/B testing. A summary banner at the top translates the rule into plain language, the Rule Info card shows type, category, priority, and channel count, and the Audience card shows how many members currently match.
The rule editor (Churn Risk): WHO conditions, HOW channels, WHEN cooldown, and A/B test in one place, with a live audience count.
Conditions: who gets targeted
Add at least one condition. When a rule has multiple conditions, a member must match all of them. Conditions are evaluated against a member data snapshot that refreshes once per day, so a rule always sees each member's state as of the most recent refresh.
Condition field reference
The condition fields below can be combined in any rule; the fields are not restricted by category, and they appear as a single flat list in the drop-down. The defining condition of a default rule is editable and deletable, not locked.
| Field | What it contains and how it is calculated |
|---|---|
| Churn risk | The general churn risk band: Very Low, Low, Medium, High, or Very High. Empty when the member has no band (no marketing consent, no active contract, under 18, or insufficient data). Comparisons are ordered, so "≥ High" matches High and Very High. |
| New joiner churn risk (3M) | Risk band from the dedicated new-joiner model at the 3-month cancellation horizon, using the same five bands. Available once the member has been scored; empty before that. |
| New joiner churn risk (6M) | Risk band from the new-joiner model at the 6-month cancellation horizon, using the same five bands. |
| New joiner churn risk (12M) | Risk band from the new-joiner model at the 12-month cancellation horizon, using the same five bands. |
| Days Until Contract End | Full days between today and the contract's scheduled end date. Empty for open-ended contracts. The default Contract Expiry rule uses "≤ 30". |
| Days Since Last Visit | Full days since the member's most recent check-in. 0 means they visited today. Empty if the member has not visited in the last 12 months. The default Dormancy rule uses "> 15". |
| Days Since Contract Start | Full days between the contract start date and today. The default New Member rule uses "< 14". |
| Days Since Cancellation | Full days since the cancellation was registered. Only cancelled contracts have a value. |
| Visits (Last 14 Days) | Count of check-ins in the rolling 14-day window ending today. |
| Visits (Last 60 Days) | Count of check-ins in the rolling 60-day window ending today. |
| Contract Type | The type of the member's main membership contract. Works with =, ≠, and contains. This is also available as the rule-wide include/exclude contract-type filter. |
| Contract price | Price charged for the current contract payment period. |
| Payment frequency | How often the contract is billed, such as monthly, quarterly, or yearly. |
| Contract extension | Extension model for the contract, such as fixed-term or automatically renewing. |
| Payment method | The member's configured payment method, such as direct debit, card, or cash. |
| Payment type | Type of payment arrangement associated with the contract. |
| Payment interval unit | Time unit used for billing, such as day, week, month, or year. |
| Payment interval length | Number of payment interval units between charges. For example, 3 months means quarterly billing. |
| Pre-use type | Configuration for the period before the contract can be used. |
| Contract term | Length of the contract term in months. Terms stored in weeks or days are converted using an average month length. |
| Days since contract created | Full days since the current contract was created in the system, which can differ from the contract start date. |
| Days since last collection | Number of days since the latest payment collection date. |
| Last payment amount | Total expected amount of the latest payment collection. |
| Last payment paid amount | Amount actually paid for the latest collection after adjustments. |
| Attendance trend | Recent attendance direction. Values include very high increase, slight increase, normal, slight decrease, very high decrease, and no data. |
| Is drifting | Whether the member is losing their training habit: Yes when they had 3 or more check-ins in the fortnight before last (days 15–28) and only 1 or 2 check-ins in the last fortnight (days 1–14), otherwise No. The default Attendance Drop rule uses "= Yes". |
| Origin type | The acquisition source that created the lead, such as a landing page, a personalised offer page, or MySports. Use contains MySports to cover MySports, MySports App, and MySports Web in one rule; is MySports does not include the App and Web values. Primarily used by the lead triggers; see Configure the New lead trigger in Engage. |
The WHO condition fields offered in the drop-down.
Operators
Which operators are offered depends on the field type. A risk-band field offers four (≥, ≤, =, ≠). A numeric field offers five (>, ≥, <, ≤, =, with no ≠). The contract type field offers =, ≠, and contains.
| Operator | Works with | Meaning |
|---|---|---|
| > | Numeric fields | Member value is strictly greater than the threshold |
| ≥ | Numeric fields, risk bands | Member value is greater than or equal to the threshold |
| < | Numeric fields | Member value is strictly less than the threshold |
| ≤ | Numeric fields, risk bands | Member value is less than or equal to the threshold |
| = | Numeric fields, risk bands, contract type | Member value exactly equals the threshold |
| ≠ | Risk bands, contract type | Member value does not equal the threshold |
| contains | Contract type | Member value contains the threshold as a substring (case-insensitive) |
Risk bands compare in this order: Very Low < Low < Medium < High < Very High.
Contract type filter
Independently of conditions, you can include or exclude specific contract types for the whole rule. Use this to keep trial or corporate contracts out of retention campaigns, for example.
Channels: how members are reached
Add at least one channel. Every channel requires a message template (created in the Templates tab). Only WhatsApp offers an AI agent path; Email, SMS, and the MySports App push are direct, one-way sends.
| Channel | Template | Agent |
|---|---|---|
| Required ("WhatsApp requires a template"). Uses the Meta connection and a Meta-approved template. See also: Setting up WhatsApp for Engage. | AI Chatbot (two-way). Delivered via the MagicAI Chat agent, so the member can reply. | |
| Required. Sent to the member's email address on file; members without one are skipped for this channel. | None (direct) | |
| SMS | Required. Sent to the member's mobile number on file; members without one are skipped for this channel. | None (direct) |
| MySports App | Required. Push notification via the MySports App; requires the app to be activated for the studio. | None (direct) |
Channels and the agent path in the HOW step: only WhatsApp can be agent-backed (via the MagicAI Chat AI agent); Email, SMS, and the MySports App push are one-way.
A default template is provided for each trigger and each channel, so every rule has something to send from the start. Edit these or create your own in the Templates tab.
Delivery path: one-way or via the AI agent
Each delivery is recorded with one of two paths, shown in the Path column of the Delivery tab:
- One-way: the message goes straight to the member via the channel provider (email provider, SMS gateway, and so on).
- Agent: the message is delivered through the MagicAI Chat agent. The outreach lands as a chat conversation, the member can reply, and the AI agent handles the follow-up.
You do not pick the path with a separate selector. It is determined by whether you configure an agent on the channel in the rule editor: if the WhatsApp channel on a rule has an agent configured, delivery uses the Agent path; otherwise it is one-way.
Prerequisite: delivery via the AI agent requires an active MagicAI Chat configuration. Without one, the message goes out as a regular one-way send. The MySports App push is always a one-way notification.
A/B test
A/B testing is configured once, globally, for the Members audience, at the top of the Configuration tab. It is optional and off by default; while it is off, all matching members receive messages.
- When enabled, you set the split between the treatment group (Group A, contacted) and the control group (Group B, held back). Three presets are offered: 90/10, 80/20, and 50/50. 80/20 is a good default for most studios.
- The split is global for the Members audience: each member keeps the same group across every trigger and every run. A member in the control group receives no messages from any Members trigger and appears in the delivery log as control (not messaged).
- One global split, rather than a separate split per trigger, keeps the measurement clean. A per-trigger split could put the same member in treatment under one trigger and control under another, which would cancel the value of the impact analysis.
- Leads and Former Members sit outside the split: their event-driven triggers always send to everyone who matches.
The trade-off is deliberate: the control group receives no outreach, so you give up some short-term reach in exchange for knowing whether the outreach works. See also: Impact Analysis.
Global A/B testing, Members only, with presets 90/10, 80/20 and 50/50 and live treatment/control counts.
Messaging guards
Engage has built-in protection against over-messaging. Two guards are configured on each trigger rule and via priority; two more are global settings on the Delivery tab.
- Per-rule cooldown. Configured on each trigger rule in days. If a member received a sent message from this specific rule within the last N days, they are skipped. Defaults: 30 days for Churn Risk, New Joiner Churn, and Dormancy; 14 days for Attendance Drop and Contract Expiry; 7 days for New Member and Custom. Setting the cooldown to 0 disables it for that rule.
- Multi-match dedup. Within a single daily run, a member can only be contacted by one rule (see Priority and multi-match resolution, below).
- Quiet hours and daily and weekly frequency caps are global settings configured on the Delivery tab and shared by all studios attached to the configuration. See also: Running triggers (schedule, preview and execution log) for how these are configured and how they behave.
Save and activate
- On save, each rule must have at least one condition and one channel, and every condition must have a value. The Custom rule ships without a condition, so you must add one before it can be activated.
- Toggle each rule active or inactive. Only active rules run in the daily batch.
- Set priority by moving rules up or down in the list. Priority determines which rule wins when a member matches several (see below).
Priority and multi-match resolution
A member can easily match several rules at once: someone with a high churn risk who has not visited in three weeks matches both the Churn Risk and the Dormancy rule. Engage resolves this with a simple rule.
First claim wins. If a member matches multiple active rules, the rule with the highest priority (lowest position number) contacts them first. Lower-priority rules skip that member for the same daily run, so no member receives more than one message per daily run.
How it works in practice:
- Rules run in priority order, position 0 first. You set the order by moving rules up or down in the Configuration tab.
- When a rule contacts a member, that member is claimed for the rest of the daily run. Lower-priority rules log the member as "Skipped (dedup)".
- The dedup applies within one daily run of one studio. The next day, the member can match again (subject to cooldowns and frequency caps).
- Manual runs ("Run now") do not dedup against the daily run's other rules; a manual run stands alone.
Put your most important rules at the top. If retention is your priority, keep Churn Risk at position 0 so at-risk members always get the retention message rather than a generic one.
Interlock with MagicAI Chat
When a channel delivers via the AI agent, the outreach lands as a chat conversation instead of a one-way message. The member can reply, and the MagicAI Chat agent continues the conversation. This turns a retention nudge into a dialogue: the member can ask about class schedules, book a session, or raise a concern directly in the thread.
- Prerequisite: an active MagicAI Chat configuration for the organization.
- How to enable it: configure an AI agent on the WhatsApp channel of a trigger rule. There is no separate MagicAI Chat tab in Engage; the interlock is simply the agent delivery path of a channel.
- Without a chat configuration: the message goes out as a regular one-way send. Members cannot reply into a conversation.
See also: Setting up MagicAI Chat. See also: Setting up WhatsApp for Engage.