# Conditions
Source: https://alius-docs.frimty.com/features/conditions
Filter which events trigger a notification using field-level conditions
## Overview
Conditions are optional filters on a trigger that narrow down which events generate a notification. Without conditions, a trigger fires for every event of its type. With conditions, you can restrict it to specific cases — e.g., only orders over \$200, or only products from a specific vendor.
***
## How Conditions Work
Each condition has three parts:
| Part | Description | Example |
| ------------ | ------------------------ | ----------------- |
| **Field** | The data point to check | `Total Inventory` |
| **Operator** | How to compare the value | `Less than` |
| **Value** | The threshold or target | `10` |
Multiple conditions can be added to a single trigger. When you have more than one condition, you choose how they combine:
| Mode | Behavior |
| ----------------------------- | ---------------------------------------------- |
| **All conditions must match** | Every condition must be true (AND logic) |
| **Any condition can match** | At least one condition must be true (OR logic) |
If no conditions are set, the trigger fires for all events of its type (subject to change detection for update events).
***
## Operators
**String fields:**
| Operator | Behavior |
| --------------- | ------------------------------------------------- |
| Equals | Exact match (case-insensitive) |
| Doesn't Equal | Does not match exactly |
| Contains | Field includes the search text (case-insensitive) |
| Doesn't Contain | Field does not include the search text |
**Numeric fields:**
| Operator | Behavior |
| ------------- | ------------------------------------------- |
| Equals | Exact numeric match |
| Doesn't Equal | Not equal |
| Greater than | Field value is strictly above the threshold |
| Less than | Field value is strictly below the threshold |
***
## Condition Fields by Entity
### Product
Available for: **Product created**, **Product updated**, **Product deleted**
| Field | Type | Description |
| ------------ | ------ | -------------------------------- |
| Title | String | Product title |
| Status | String | `active`, `draft`, or `archived` |
| Product Type | String | Product type classification |
| Vendor | String | Vendor/manufacturer name |
| Tags | String | Comma-separated product tags |
| URL Handle | String | URL-friendly slug |
| Description | String | Product description (HTML body) |
| Field | Type | Description |
| --------------- | ------ | ----------------------------------- |
| Published At | String | When the product was published |
| Published Scope | String | Publication scope (`web`, `global`) |
| Field | Type | Description |
| ------------------------- | ------ | --------------------------------------------------- |
| Category | String | Shopify product category |
| Is Gift Card | String | Whether the product is a gift card (`true`/`false`) |
| Requires Selling Plan | String | Whether a selling plan is required |
| Has Only Default Variant | String | Whether the product has just one variant |
| Has Out-of-Stock Variants | String | Whether any variant is out of stock |
| Collections | String | Collections the product belongs to |
| Field | Type | Description |
| ---------------- | ------ | --------------------------- |
| Price | Number | Product price |
| Compare at Price | Number | Compare-at (original) price |
| Unit Price | Number | Per-unit price |
| Cost per Item | Number | Cost of goods per item |
| Field | Type | Description |
| ----------------- | ------ | --------------------------------------- |
| Total Inventory | Number | Sum of inventory across all variants |
| Charge Tax | String | Whether tax is charged (`true`/`false`) |
| Physical Product | String | Whether the product requires shipping |
| Inventory Tracked | String | Whether inventory tracking is enabled |
| Field | Type | Description |
| -------------------- | ------ | ------------------------ |
| SEO Page Title | String | Meta title for SEO |
| SEO Meta Description | String | Meta description for SEO |
***
### Order
Available for: **Order created**, **Order updated**, **Order paid**, **Order fulfilled**, **Refund created**
| Field | Type | Description |
| ------------ | ------ | ---------------------------- |
| Order Number | Number | Sequential order number |
| Order Name | String | Display name (e.g., `#1001`) |
| Field | Type | Description |
| ---------------------- | ------ | ------------------------------ |
| Total Price | Number | Grand total of the order |
| Subtotal Price | Number | Subtotal before tax/shipping |
| Total Discounts | Number | Total discount amount applied |
| Total Tax | Number | Total tax charged |
| Total Line Items Price | Number | Sum of all line item prices |
| Total Outstanding | Number | Amount remaining to be paid |
| Total Weight | Number | Combined weight of items |
| Current Total Price | Number | Current total (after edits) |
| Current Subtotal Price | Number | Current subtotal (after edits) |
| Total Tip Received | Number | Tip amount |
| Field | Type | Description |
| -------------------------- | ------ | ------------------------------------- |
| Email | String | Email on the order |
| Contact Email | String | Contact email address |
| Phone | String | Phone number |
| Currency | String | Order currency code (e.g., `USD`) |
| Presentment Currency | String | Display currency |
| Financial Status | String | `paid`, `pending`, `refunded`, etc. |
| Fulfillment Status | String | `fulfilled`, `partial`, `unfulfilled` |
| Display Financial Status | String | Human-readable financial status |
| Display Fulfillment Status | String | Human-readable fulfillment status |
| Customer ID | String | Associated customer ID |
| Note | String | Order notes |
| Source Name | String | Where the order originated |
| Tags | String | Order tags |
| Customer Locale | String | Customer's locale |
| Cancel Reason | String | Reason for cancellation |
| Landing Site | String | Landing page URL |
| Payment Gateway Names | String | Payment methods used |
| Field | Type | Description |
| ----------------------- | ------ | --------------------------------- |
| Buyer Accepts Marketing | String | Marketing opt-in status |
| Test Order | String | Whether this is a test order |
| Tax Exempt | String | Whether the order is tax exempt |
| Taxes Included | String | Whether prices include tax |
| Confirmed | String | Whether the order is confirmed |
| Edited | String | Whether the order has been edited |
| Duties Included | String | Whether duties are included |
| Field | Type | Description |
| ------------------ | ------ | ---------------- |
| Shipping City | String | City |
| Shipping Province | String | Province/state |
| Shipping Country | String | Country |
| Shipping Zip | String | Postal/ZIP code |
| Shipping Address 1 | String | Street address |
| Shipping Phone | String | Phone on address |
| Shipping Name | String | Name on address |
| Field | Type | Description |
| ----------------- | ------ | ---------------- |
| Billing City | String | City |
| Billing Province | String | Province/state |
| Billing Country | String | Country |
| Billing Zip | String | Postal/ZIP code |
| Billing Address 1 | String | Street address |
| Billing Phone | String | Phone on address |
| Billing Name | String | Name on address |
| Field | Type | Description |
| ------------------- | ------ | --------------------- |
| Customer Email | String | Customer's email |
| Customer First Name | String | Customer's first name |
| Customer Last Name | String | Customer's last name |
| Customer Phone | String | Customer's phone |
***
### Customer
Available for: **Customer created**, **Customer updated**, **Customer deleted**
| Field | Type | Description |
| ------------------------- | ------ | --------------------------------------- |
| Email | String | Customer email address |
| First Name | String | First name |
| Last Name | String | Last name |
| Phone | String | Phone number |
| Tags | String | Customer tags |
| Accepts Marketing | String | Email marketing opt-in (`true`/`false`) |
| Lifetime Amount Spent | Number | Total amount the customer has spent |
| Lifetime Number of Orders | Number | Total number of orders placed |
| Locale | String | Customer's locale |
| Product Subscriber Status | String | Subscription status |
| Tax Exemptions | String | Tax exemption info |
***
### Returns
Available for: all **Return** trigger types (requested, approved, declined, processing, closed, cancelled, reopened, updated)
| Field | Type | Description |
| ------------------- | ------ | ------------------------------ |
| Status | String | Current return status |
| Return Reason | String | Reason provided for the return |
| Line Item Count | Number | Number of items in the return |
| Total Refund Amount | Number | Total refund value |
| Currency | String | Currency code |
| Order ID | String | ID of the associated order |
| Customer Email | String | Customer's email address |
***
### Cart Abandoned
Available for: **Cart abandoned**
| Field | Type | Description |
| --------------- | ------ | --------------------------- |
| Customer Email | String | Customer's email address |
| First Name | String | Customer's first name |
| Last Name | String | Customer's last name |
| Total Price | Number | Cart total value |
| Currency | String | Currency code |
| Line Item Count | Number | Number of items in the cart |
***
## Condition Evaluation
Conditions are evaluated when a webhook is processed:
1. The worker loads the current entity data (enriched via Shopify GraphQL where needed — e.g., collections and inventory totals for products).
2. For each active trigger of the matching type, the evaluator checks every condition row.
3. Each condition's field value is looked up and compared using the specified operator.
4. Results are combined using the condition mode (`all` = AND, `any` = OR).
5. If the result is `true`, the notification is dispatched.
For **Product updated** and **Order updated** triggers, a notification is only sent when actual changes are detected compared to the previous snapshot. This prevents duplicate alerts from Shopify's occasional webhook re-deliveries.
# Dashboard
Source: https://alius-docs.frimty.com/features/dashboard
Overview of the Alius home page — setup guide, metrics, and plan status
## Overview
The **Home** page is the main landing screen when you open Alius. It shows your setup status, activity metrics, current plan, and integration connection states.
***
## Setup Guide
When you first install Alius, the Home page displays a three-step setup checklist:
| Step | Description | Auto-detected |
| ------------------------- | ---------------------------------------------------------- | ------------------------------------------------------- |
| 1. Connect an integration | Connect Slack, Email, or Telegram on the Integrations page | Detected when any integration is connected |
| 2. Send a test message | Send a test notification to confirm delivery is working | Detected when a test message has been sent successfully |
| 3. Create a trigger | Create at least one trigger | Detected when any trigger exists |
Each step can also be manually checked off using the checkbox, which is useful if setup was completed outside the app's standard flow.
# Goals
Source: https://alius-docs.frimty.com/features/goals
Set a target, track progress, and get accountability alerts
## Overview
A **Goal** is an accountability automation: you set a target for a store metric over a date range, and app tracks your progress and sends alerts as you approach — or fall behind — the target.
Goals turn a number you care about ("\$50,000 in revenue this quarter") into proactive nudges delivered to your hub, so you never have to remember to check.
Goals are a **Free / Pro / Max** feature and live under the **Automations** section alongside Triggers and Reports.
***
## What you can track
| Metric | Measures |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| Revenue | Total sales since the goal start date |
| Order count | Number of orders since the start date |
| New customers | First-time buyers since the start date. A record is counted when a customer places their first-ever order within the period. |
| AOV | Average order value over the period |
| Each goal has a **target value**, a **start date**, and an **end date**. Progress is measured cumulatively from the start date using Shopify's analytics engine. | |
***
## Alert Types
A goal can send three kinds of deterministic alerts:
Fires once each as you cross **25% / 50% / 75% / 100%** of the target. Choose
which milestones to enable.
Alerts when your actual progress trails the expected linear pace by more than
10 points — so you know early if you're behind. Throttled to once per 7 days.
An optional weekly progress snapshot for the duration of the goal.
The goal is marked **completed** the moment progress reaches 100%, regardless
of which milestone alerts are enabled.
Goals are evaluated once per day at **08:00 UTC**.
***
## Lifecycle
```
scheduled → in_progress → completed (target reached)
└→ failed (end date passed without hitting target)
```
* **Scheduled** — the start date hasn't arrived yet.
* **In progress** — actively tracking; alerts may fire.
* **Completed** — target reached.
* **Failed** — the end date passed before the target was met.
***
## Creating a Goal
1. Click **Create Automation** → choose the **Goal** tab.
2. Pick a template or **Blank**.
3. Set the **Title**.
4. Choose a **Metric** (Revenue / Order count / New customers / AOV).
5. Enter the **Target value**.
6. Pick a **Start date** and **End date**.
7. Choose which **milestone alerts** to enable (all on by default).
8. Toggle **Pace warning** and **Weekly check-in** as desired.
9. Select a **Hub** and its channels/recipients.
10. Save.
Use **Fire (test)** to send a one-off progress snapshot without affecting the goal's saved state.
***
## Limits
| Plan | Active Goals |
| ---- | ------------ |
| Free | 1 |
| Pro | 5 |
| Max | Unlimited |
Only **active** goals count toward the limit. See [Pricing](/guides/pricing).
# Guards
Source: https://alius-docs.frimty.com/features/guards
Instant alerts for costly mistakes, with a one-tap Undo
## Overview
A **Guard** watches for damage, not events. You don't pick a Shopify event or write a condition — you choose *which kinds of mistake* to watch for, and Alius classifies every product and order change against that list. When something matches, you get an alert with the old value, who made the change (when Shopify's data allows it), and — for most classes — a button that undoes it.
A trigger fires whenever its event happens, whether the change was good or bad.
A Guard only speaks up when a change looks like a **mistake** — a price cut in
half, a product taken off sale, a link that's about to 404.
Guards are a **Pro / Max** feature and live under the **Automations** section alongside Triggers, Reports, Goals, and Insights.
***
## What you can watch
A sharp price move, a fake-looking sale badge, a product unpublished,
archived, or deleted, stock hitting zero, or inventory tracking turned off.
A product's URL changing — breaking every existing link to it — or its SEO
title/description getting wiped.
An order selling below cost after discounts, or a price/cost move that
leaves margin dangerously thin.
You can pick any combination of change classes on one Guard, or create several — the Guards tab offers ready-made bundles for each group above, plus a **Custom Guard** with every class as a checklist.
***
## The button is the point
Most other automations tell you something happened. A Guard alert carries a button that **fixes** it:
| Change | Button | What it does |
| ----------------------------------- | ------------------- | ----------------------------------------------------------------- |
| Price, availability, or SEO changed | **Undo** | Reverts the exact field to its value before the change |
| URL handle changed | **Create redirect** | Points the old URL at the new one, so existing links keep working |
**Undo refuses rather than guessing.** If the product changed again after the alert — someone else edited it, or you tapped twice — Undo tells you so and shows the old, alerted, and current values instead of silently overwriting a later edit.
Two classes are alert-only, on purpose:
* **Stock count changes** aren't undoable — inventory moves for real reasons, and reverting a count would corrupt it.
* **Deletions** aren't undoable — the alert carries the product's last known values so you can recreate it by hand, but the deletion itself is final.
Undo and Create redirect work on **Slack**, **Telegram**, and **Discord (Bot)**. On hubs without buttons (Email, Discord via incoming webhook, HTTP webhook), the alert still arrives in full.
***
## Who made the change
When Shopify's data allows it, the alert names who made the change:
* **A staff member** — by name, when Shopify's admin log captures it, otherwise "by a staff member"
* **An app** — by name (useful for catching a bulk-editing app you forgot was installed)
* **Alius** — when the change was your own Undo or redirect
Shopify only reliably tracks *who* for some kinds of change — publishing,
unpublishing, and deleting. Price, handle, SEO, and inventory changes ship
without a "who" line rather than guessing one. You'll still see exactly what
changed and when.
***
## Bulk changes collapse to one alert
A price-list import or a bulk-editing app can touch hundreds of products in seconds. Guards wait briefly (about 90 seconds) after the first change before sending anything, so every change in that window arrives as **one** message instead of hundreds:
> **312 products changed** in 90 seconds — price up on 300, unpublished on 12.
Below 5 products in a window, each gets its own alert with its own Undo button. At 5 or more, you get one summary with a few examples and a link to the full list in [Notification History](/features/notification-history) — there's no bulk-Undo button; a one-tap revert of hundreds of products is worth doing from the admin, deliberately.
The same product changing the same way again within 6 hours doesn't alert
twice.
If a shop somehow generates a flood of alerts in one day, the rest collapse
into a single end-of-day digest instead of a wall of notifications.
***
## Margin Guard
The **Money** group watches for changes that cost you on the sale itself, not just visibility:
* **Sold below cost** — an order sells units for less than they cost you, after discounts. This checks the price you actually received, not the list price, so a stacked discount that quietly pushes a sale into a loss is exactly what it catches.
* **Margin razor-thin** — a price or cost change leaves your margin below a floor you set (defaults to 15%), even though the product is technically still profitable.
If Alius has no recorded cost for a product, it stays silent on that product
rather than guessing whether a sale was a loss.
***
## Creating a Guard
1. Click **Create Automation** → choose the **Guards** tab.
2. Pick a bundle (Price & Availability, Discoverability, Money) or start with **Custom Guard**.
3. Set the **Title**.
4. Check the change classes you want. Some show a threshold — e.g. "alert when the price rises by more than 20%" — that you can adjust.
5. Optionally narrow the Guard to specific vendors, product types, or tags.
6. Review the action buttons (Undo, Create redirect) — both are on by default and can be turned off.
7. Select a **Hub** and its channels/recipients.
8. Save.
There is no schedule to pick and no condition builder — a Guard watches instantly.
Use **Fire (test)** to preview a real alert before it matters. A test fire never changes anything in your store and never creates a working Undo button.
***
## Where Guards show up
Guard alerts arrive on your hub like any other automation and are recorded in [Notification History](/features/notification-history), including what was undone, refused, or left unactioned.
***
## Limits
| Plan | Active Guards |
| ---- | ----------------- |
| Free | 0 (not available) |
| Pro | 3 |
| Max | Unlimited |
All change classes on one Guard draw from the same slot, so a Pro store can run up to 3 Guards covering any combination of classes. Only **active** Guards count toward the limit. See [Pricing](/guides/pricing).
# Insights
Source: https://alius-docs.frimty.com/features/insights
Automatic anomaly detection — no rules to configure
## Overview
An **Insight** is the one automation you don't configure. You don't pick an event, write a condition, or guess a threshold. You choose *what kind of problem* to watch for, and Alius compares **every product against its own history**, staying quiet unless something is genuinely wrong.
That last part is the point. A trigger fires whenever its event happens. An Insight is designed to say nothing on most days.
Insights compare each product to **its own** past performance — not to a store average
or to your other products. A product selling 3 units a day that drops to zero matters
just as much as one selling 300, if it earns a meaningful share of your revenue.
Insights are a **Pro / Max** feature and live under the **Automations** section alongside Triggers, Reports, and Goals.
***
## What you can watch
A product that reliably sold quietly stops — and Alius confirms it isn't just
out of stock or unpublished before telling you.
A product starts selling far faster than usual, with **Restock** and
**Alert supplier** buttons so you can act before it sells out.
A product starts getting returned far more often than its own history — a
quality, sizing, or listing-accuracy problem surfacing early.
Each Insight watches **one** of these. To cover all three, create three Insights — which is exactly what the Pro allowance of 3 is sized for.
***
## Why Sales Drop is the one to start with
When a single product stops selling, your store-level revenue barely moves. Nothing looks wrong on any dashboard, so the loss goes unnoticed for weeks — and revenue lost to a dead listing is revenue you can't recover later.
The hard part isn't spotting a decline; it's spotting a decline that *means something*. Alius rules out the boring explanations before it alerts you:
* The product is **out of stock** → no alert (that's a supply problem you already know about)
* The product is **unpublished or archived** → no alert (you took it down on purpose)
* The product's stock data looks **stale** → no alert (Alius would rather stay quiet than guess)
So when a Sales Drop alert arrives, it means demand actually fell while the product was available to buy.
***
## Sensitivity
Sensitivity is the only setting. It controls how large a change must be before you hear about it.
| Sensitivity | Sales Drop fires at | Sales Surge fires at | Return Rate Spike fires at |
| ------------ | ------------------- | -------------------- | -------------------------- |
| **High** | a 50% decline | 2× the usual rate | 2× the usual rate |
| **Balanced** | a 60% decline | 2.5× the usual rate | 2.5× the usual rate |
| **Low** | a 71% decline | 3.5× the usual rate | 3.5× the usual rate |
**Balanced is recommended.** High surfaces more, including some ordinary fluctuation. Low only speaks up when something is unmistakable.
Everything else — the comparison windows, the minimum sales volume, the revenue threshold — is fixed deliberately. The promise of an Insight is that Alius finds the pattern, so there is nothing else for you to tune.
***
## How Alius keeps Insights quiet
Noise is what kills alerting tools. Four rules keep Insights worth reading:
At most **3** velocity alerts per store per day, ranked by revenue impact. The
products that matter most reach you first.
A product must account for at least **1% of your store's revenue** to qualify.
A \$3 accessory dropping from 20 units to 2 is dramatic and irrelevant.
If many products move at once — a sale ending, a season turning, an ad budget
cut — Alius says nothing. That's one story, not twenty problems.
An ongoing problem alerts **once**. You'll only hear about it again if it gets
materially worse, or if it resolves and comes back.
Insights are evaluated once per day at **04:30 UTC**.
***
## Where the sales history comes from
When you create a Sales Drop or Sales Surge insight, Alius imports roughly the
**last 5 weeks of your per-product sales history** from Shopify's own analytics,
so detection starts right away rather than after a month of waiting.
A product still needs enough selling history of its own to establish a reliable
baseline. Products you only recently started selling stay quiet until they do —
that's deliberate, since judging a product on a few days of data would flag
ordinary fluctuation as an anomaly.
Two details worth knowing:
* Imported history is measured **net of returns and discounts**, while data Alius
records from then on is measured gross. The difference is small, and it fades
out entirely within about five weeks as live data replaces the imported rows.
* Importing affects Sales Drop and Sales Surge only. **Return Rate Spike** builds
its baseline from live order and return data, so it needs a few weeks of your
store's activity before it can fire.
Use **Fire (test)** at any point to see exactly what an alert will look like.
***
## Action buttons on Sales Surge
A surge is only useful if you can act on it before the product sells out. On **Slack**, **Telegram**, and **Discord (Bot)**, Sales Surge alerts carry two buttons:
| Button | What it does |
| ------------------ | ---------------------------------------------------------------------------------------- |
| **Restock +N** | Adds stock to every inventory-tracked variant of the product, sized to the current surge |
| **Alert supplier** | Emails your supplier a prebuilt reorder request for that product |
Both are **on by default** and can be turned off individually. Enabling **Alert supplier** requires a supplier email address.
On hubs that don't support buttons (Email, Discord via incoming webhook, HTTP webhook), the alert still arrives in full with no broken controls.
**Restock** here works on the whole product, adding stock to each tracked variant.
The similar button on the [Predictive Stockout report](/features/reports) targets one
specific variant instead — Insights work at the product level.
***
## Creating an Insight
1. Click **Create Automation** → choose the **Insights** tab.
2. Pick an anomaly type: **Sales Drop**, **Sales Surge**, or **Return Rate Spike**. There's no "Blank" option — the anomaly type *is* the template.
3. Set the **Title**.
4. Choose a **Sensitivity** (High / Balanced / Low — Balanced recommended).
5. For **Sales Surge**, review the **action buttons** and add a supplier email if Alert supplier is enabled.
6. Select a **Hub** and its channels/recipients.
7. Save.
There is no schedule to pick and no conditions to build — detection runs automatically once a day.
Use **Fire (test)** to preview a real alert. If no product has enough history yet, the test uses sample numbers and tells you so. A test fire never affects real alerts.
***
## Where Insights show up
Insights have no separate findings page. Everything Alius detects arrives as a notification on your hub and is recorded in [Notification History](/features/notification-history) like every other automation.
***
## Limits
| Plan | Active Insights |
| ---- | ----------------- |
| Free | 0 (not available) |
| Pro | 3 |
| Max | Unlimited |
All three anomaly types draw from the same allowance, so a Pro store can run one of each. Only **active** Insights count toward the limit. See [Pricing](/guides/pricing).
# Integrations
Source: https://alius-docs.frimty.com/features/integrations
Connect Slack, Email, Telegram, and Discord to receive Alius notifications
## Overview
Alius delivers notifications through four hubs: **Slack**, **Email**, **Telegram**, and **Discord**. Each must be connected before it can be selected in a trigger. Connections are managed on the **Integrations** page.
***
## Slack
Slack is connected via **OAuth 2.0**. Alius installs a bot in your workspace that posts messages to selected channels.
### Connecting Slack
1. Go to **Integrations** in the sidebar.
2. Click **Connect to Slack**.
3. You'll be redirected to Slack's OAuth authorization page. Select your workspace and click **Allow**.
4. After authorization, Alius stores the bot token and the status changes to **Connected**.
### Enabling Channels
Once connected, a list of your workspace's public channels appears.
1. Toggle on the channels where Alius should be allowed to post.
2. Click **Save** — the bot automatically joins each enabled channel.
Only enabled channels appear in the trigger form's channel picker. The bot must be a member of a channel to post messages to it.
### Sending a Test Message
Click **Send test notification** to post a test message to all enabled channels. This confirms the token is valid and the bot has channel access.
### Disconnecting Slack
Click **Disconnect** to remove the Slack integration. This clears the bot token, disables all channel mappings, and stops all Slack notifications. Your triggers are preserved and will resume sending once Slack is reconnected.
Alius uses a Slack bot token with permission to read channels and post messages. It does not read your team's private messages.
***
## Email
Email notifications are sent via Resend. You manage a list of verified recipient addresses — only verified and active recipients receive notifications.
### Adding a Recipient
1. Go to **Integrations** → **Email** section.
2. Enter an email address and click **Add Recipient**.
3. Alius sends a verification email to that address.
### Verifying a Recipient
The recipient must click the verification link in the email. Until verified, the address will not receive notifications.
Verification tokens expire. If the link is not clicked in time, you can regenerate the token by editing the recipient and changing the email address, then re-entering it.
### Managing Recipients
Each recipient has two states that can be toggled independently:
| State | Description |
| ------------ | ----------------------------------------------------- |
| **Verified** | Set automatically after the recipient clicks the link |
| **Active** | Controls whether this address receives notifications |
A recipient must be both verified **and** active to receive notifications.
To remove a recipient, click the delete icon next to their address.
***
## Telegram
Telegram notifications are sent via a Telegram bot. The bot is linked to a specific chat (personal chat, group, or channel) using a connection token.
### Connecting Telegram
1. Go to **Integrations** → **Telegram** section.
2. Click **Generate Connection Token**. A token is displayed — it is valid for **15 minutes**.
3. Open your Telegram chat (where you want to receive notifications) and send:
```
/connect
```
to the Alius bot.
4. The bot confirms the connection and the status changes to **Connected**.
### Sending a Test Message
Click **Send test notification** to post a test message to the connected chat. This confirms the bot token is valid and the chat ID is correctly linked.
### Disconnecting Telegram
Click **Disconnect** to unlink the chat. This stops all Telegram notifications. Reconnect at any time by generating a new token.
### Rate Limiting
Telegram enforces message rate limits. If Alius receives a rate-limit response (HTTP 429), it automatically retries the message up to 3 times with backoff. If all retries fail, the notification is logged as **Failed** in [Notification History](/features/notification-history).
***
## Discord
Discord notifications are sent via an **incoming webhook** — no OAuth or bot setup is required. You create the webhook inside Discord and paste the URL into Alius.
### Creating a Discord Webhook
1. In Discord, open the channel where you want to receive notifications.
2. Go to **Channel Settings** → **Integrations** → **Webhooks**.
3. Click **New Webhook**, give it a name, and click **Copy Webhook URL**.
### Connecting Discord
1. Go to **Integrations** → **Discord** section.
2. Paste the webhook URL into the **Webhook URL** field.
3. Click **Connect**. Alius validates the URL format and saves it.
4. The status changes to **Connected**.
The webhook URL must start with `https://discord.com/api/webhooks/` or `https://discordapp.com/api/webhooks/`. Any other URL is rejected.
### Sending a Test Message
Click **Send test message** to post a test notification to the connected channel. This confirms the webhook is valid and the channel is accessible.
### Enabling and Pausing
Once connected, use the **Enable notifications** toggle to pause and resume Discord messages without disconnecting. Toggling it off stops all Discord notifications while preserving the webhook URL.
### Disconnecting Discord
Click **Disconnect** to remove the integration. This clears the webhook URL and stops all Discord notifications. Your triggers are preserved and will resume sending once Discord is reconnected.
### Message Format
Discord messages are posted as **embeds** by Alius, using Shopify green (`#008060`) as the accent color. The username shown in the channel is "Alius". If the trigger's content includes an admin link, the embed title links directly to the relevant resource in Shopify Admin.
### Rate Limiting
Discord enforces webhook rate limits. If Alius receives an HTTP 429 response, it reads the `retry_after` value from Discord's response and waits before retrying — up to 3 times. If all retries fail, the notification is logged as **Failed** in [Notification History](/features/notification-history).
# Notification History
Source: https://alius-docs.frimty.com/features/notification-history
View, filter, and search all notification delivery records
## Overview
The **History** page shows a log of every notification Alius has attempted to send. Each entry records what was sent, when, to which hub and recipient, and whether it succeeded.
***
## Notification Statuses
| Status | Description |
| ------------- | -------------------------------------------------------------------------------------------------- |
| **Sent** | The notification was delivered successfully |
| **Failed** | The delivery attempt failed (see the error message on the entry) |
| **Scheduled** | A batched notification is pending its send window (see [Schedule Types](/features/schedule-types)) |
***
## Log Entry Fields
Each entry in the history log contains:
| Field | Description |
| --------------- | --------------------------------------------------------------------- |
| Trigger title | The name of the trigger that fired |
| Trigger type | The event type (e.g., `order created`, `product updated`) |
| Hub | The notification hub used: Slack, Email, or Telegram |
| Recipient | The specific channel, email address, or Telegram chat |
| Message preview | A short preview of the notification content |
| Timestamp | When the notification was created |
| Error message | Populated only for **Failed** entries — the error returned by the hub |
***
## Filtering
The history log can be filtered along three dimensions simultaneously:
| Filter | Options |
| ---------- | ---------------------------------------------------- |
| **Status** | All · Sent · Failed · Scheduled |
| **Type** | All · Products · Orders · Customers · Returns · Cart |
| **Search** | Free-text search on trigger title |
Filters are applied in combination — for example, you can search for failed notifications from order triggers.
***
## Sorting
Results can be sorted by:
* **Date** (newest first by default)
* **Hub** (Slack / Email / Telegram)
* **Status**
***
## Pagination
The history log displays **25 entries per page** by default. Use the pagination controls at the bottom of the page to navigate through older records.
***
## Failed Notifications
When a notification fails, the entry's error message field shows the reason returned by the hub (e.g., invalid token, channel not found, rate limit exceeded). Use this to diagnose delivery issues with your integration.
Common causes:
* **Slack**: Bot token revoked or bot removed from channel
* **Email**: Recipient address bounced or recipient is inactive
* **Telegram**: Chat ID no longer valid, or repeated rate-limit failures after retries exhausted
# Reports
Source: https://alius-docs.frimty.com/features/reports
Scheduled analytics summaries pushed straight to your hub
## Overview
A **Report** is a scheduled automation that pulls analytics from your store, optionally adds an AI-written summary, and delivers it to a notification hub (Slack, Email, Telegram, or Discord) on a recurring schedule.
Where a [Trigger](/features/triggers) reacts to an event, a Report runs on a clock — daily, weekly, or monthly — so you don't have to open the Shopify admin to know how the store is doing.
Reports live alongside Triggers and Goals under the **Automations** section.
***
## Data Source
Each report pulls its data one of two ways:
| Source | Description |
| ---------------------- | ------------------------------------------------------ |
| **Pre-built template** | A ready-made analytics query — pick from the dropdown. |
| **Custom query** | Write your own ShopifyQL query for full control. |
### Pre-built Report Templates
| Template | Default Schedule | What it shows |
| ----------------------- | ---------------- | ---------------------------------------- |
| Daily Revenue Summary | Daily, 8am | Total & gross sales for the previous day |
| Weekly Performance | Weekly, 9am | Day-by-day sales for the last 7 days |
| Inventory Health | Weekly, 9am | Low / out-of-stock variants |
| Monthly Business Review | Monthly, 8am | Sales over the last 3 months with totals |
| Lapsed Customers | Weekly, 9am | Customers who haven't ordered recently |
| Sales Pace Check | Daily, 12pm | Trailing 30-day revenue vs. pace |
Reports run on Shopify's analytics engine (ShopifyQL). The full set of stats
is available without any extra setup beyond connecting a hub.
***
## AI Summaries (Pro / Max)
On paid plans, Alius can prepend a short, plain-English **AI summary** above the report data:
> **AI Summary:** Revenue is up 12% week-over-week, driven mainly by repeat customers. Three products are now low on stock.
>
> ***
>
> *(the full report table follows)*
* Generated by AI from the rendered report — fast and inexpensive.
* **Fail-open:** if the summary can't be generated, the report still sends with its data intact.
* The deterministic data table is always included; the AI text is an addition, never a replacement.
Free plan reports send the data table without an AI summary.
***
## Creating a Report
1. Click **Create Automation** → choose the **Report** tab.
2. Pick a pre-built template or **Blank** to start from scratch.
3. Set the **Title**.
4. Choose a **Data source** (pre-built template or custom ShopifyQL).
5. Choose a **Schedule** and UTC hour (non-daily schedules require Pro/Max).
6. Select a **Hub** and its channels/recipients.
7. Save.
Use the **Fire (test)** button to send the report immediately and verify the output — this runs the real data + AI path.
***
## Limits
| Plan | Active Reports |
| ---- | -------------- |
| Free | 3 |
| Pro | 10 |
| Max | Unlimited |
Only **active** reports count toward the limit. See [Pricing](/guides/pricing) for full details.
# Schedule Types
Source: https://alius-docs.frimty.com/features/schedule-types
Control when notifications are sent — immediately or batched over time
## Overview
Every trigger has a **schedule** that controls when its notifications are delivered. Alius supports five schedule options: one immediate and four batched.
***
## Schedule Options
| Schedule | Behavior |
| ----------- | ----------------------------------------------------------- |
| **Instant** | Notification is sent immediately when the trigger fires |
| **Hourly** | Events are batched; one notification is sent once per hour |
| **Daily** | Events are batched; one notification is sent once per day |
| **Weekly** | Events are batched; one notification is sent once per week |
| **Monthly** | Events are batched; one notification is sent once per month |
The schedule is set per trigger when creating or editing it.
***
## Instant
Instant is the default schedule. The notification is dispatched as soon as the webhook is processed and conditions are met. There is no delay or batching.
Use instant when you need to act on events as they happen — for example, high-value orders, low stock alerts, or abandoned cart recovery.
***
## Batched Schedules (Hourly / Daily / Weekly / Monthly)
When a batched schedule is selected, Alius stores each matching event as a **Scheduled Notification** rather than sending it immediately. At the end of each scheduled interval, the worker collects all pending notifications for that trigger and sends a single consolidated message.
### What a batched notification contains
Each batched notification includes the message content from the most recent event in the batch window. The batch is cleared after sending.
### Batched notifications in History
Pending batched notifications appear in [Notification History](/features/notification-history) with a status of **Scheduled** until they are sent. Once sent, the status changes to **Sent**.
### When to use batched schedules
| Schedule | Use case |
| -------- | ---------------------------------------------------------------------------------------------- |
| Hourly | Frequent events where per-event noise is too high (e.g., product updates during a bulk import) |
| Daily | End-of-day summaries — daily order counts, new customer signups |
| Weekly | Weekly digest reports — inventory changes, return summaries |
| Monthly | Monthly business reviews — aggregate order or customer metrics |
# Templates
Source: https://alius-docs.frimty.com/features/templates
Customize notification message content using Markdown and dynamic variables
## Overview
Templates control the text content of notifications. If a trigger has no template assigned, Alius uses a built-in default format. Custom templates let you control exactly what appears in each notification using Markdown and `{{variable}}` placeholders.
***
## Template Types
Each template is scoped to an entity type, which determines which variables are available:
| Type | Available variables |
| -------- | --------------------------------- |
| Product | `product.*`, `product_previous.*` |
| Order | `order.*` |
| Customer | `customer.*` |
| Returns | `returns.*` |
| Cart | `cart.*` |
***
## Creating a Template
1. Go to **Templates** in the sidebar.
2. Click **Create Template**.
3. Fill in:
* **Title** — Name for the template (e.g., "High-value order alert")
* **Type** — Entity type (Product, Order, Customer, Returns, or Cart)
* **Content** — The message body using Markdown and variables
4. Click **Save**.
The template is then available in the trigger form's template picker.
***
## Markdown Syntax
Templates support a limited Markdown subset:
| Syntax | Output |
| --------------- | --------------------------- |
| `## Heading` | Bold heading / header block |
| `**bold text**` | Bold text |
| `[label](url)` | Clickable link |
| `---` | Horizontal divider |
| Plain text | Rendered as-is |
Markdown is converted per hub at send time:
* **Slack**: Headings → bold, links → `` format, `---` → divider block
* **Email**: Full HTML rendering with inline CSS
* **Telegram**: Headings → `*bold*`, links → Markdown v1 format, `---` → `──────────`
***
## Color Customization
Templates have optional color settings that apply per hub:
| Setting | Hub | Description | Default |
| ------------------- | -------- | ----------------------------------------------- | --------- |
| Email Header Color | Email | Background color of the email header bar | `#008060` |
| Email Link Color | Email | Color of hyperlinks in the email body | `#008060` |
| Telegram Background | Telegram | Background color accent in the Telegram message | `#008060` |
Colors are entered as hex values (e.g., `#FF5733`).
***
## Template Priority
When a notification is sent, Alius resolves the message content in this order:
1. **Linked Template** — If the trigger has a `templateId`, the saved template's content is used.
2. **Inline Message Template** — If the trigger has a custom message stored directly on the trigger record.
3. **Default Template + Conditions** — The built-in default for the entity type, automatically extended with any condition fields from the trigger.
4. **Built-in Formatter** — A fallback that generates a readable summary of what changed.
### Auto-Extension with Condition Fields
When a trigger uses the default template and has conditions configured, the default template is automatically extended to include those condition fields. For example, if your trigger has a condition on `inventoryTotal`, the notification will include:
```
Total Inventory: {{product.inventoryTotal}}
Previous Total Inventory: {{product_previous.inventoryTotal}}
```
***
## Built-in Default Templates
If no custom template is selected, Alius uses these defaults:
**Product Updated:**
```
Product Updated: {{product.title}}
Title:
Previous: {{product_previous.title}}
New: {{product.title}}
View Product in Shopify: {{product.adminUrl}}
```
**Order Created:**
```
Order Created: {{order.name}}
Customer: {{order.customerFirstName}} {{order.customerLastName}}
Total: {{order.totalPrice}} {{order.currency}}
View Order in Shopify: {{order.adminUrl}}
```
**Customer Updated:**
```
Customer Updated: {{customer.firstName}} {{customer.lastName}}
Email: {{customer.email}}
Tags: {{customer.tags}}
View Customer in Shopify: {{customer.adminUrl}}
```
**Cart Abandoned:**
```
Cart Abandoned
Customer: {{cart.firstName}} {{cart.lastName}}
Email: {{cart.customerEmail}}
Total: {{cart.totalPrice}} {{cart.currency}}
Items: {{cart.lineItemCount}}
Recovery URL: {{cart.recoveryUrl}}
```
***
## Template Variables Reference
Use `product_previous.*` variants for "previous" values in update notifications.
| Variable | Description |
| ----------------------------------- | --------------------------------------- |
| `{{product.id}}` | Product ID |
| `{{product.adminUrl}}` | Link to product in Shopify Admin |
| `{{product.title}}` | Product title |
| `{{product.status}}` | `active`, `draft`, or `archived` |
| `{{product.productType}}` | Product type classification |
| `{{product.vendor}}` | Vendor/manufacturer |
| `{{product.tags}}` | Comma-separated tags |
| `{{product.handle}}` | URL handle |
| `{{product.description}}` | Product description (HTML) |
| `{{product.publishedAt}}` | Publication date |
| `{{product.publishedScope}}` | Publication scope |
| `{{product.category}}` | Shopify product category |
| `{{product.isGiftCard}}` | Whether it's a gift card |
| `{{product.requiresSellingPlan}}` | Whether a selling plan is required |
| `{{product.hasOnlyDefaultVariant}}` | Whether only one variant exists |
| `{{product.outOfStockVariants}}` | Whether any variant is out of stock |
| `{{product.collections}}` | Collections the product belongs to |
| `{{product.price}}` | Product price |
| `{{product.compareAtPrice}}` | Compare-at price |
| `{{product.unitPrice}}` | Per-unit price |
| `{{product.costPerItem}}` | Cost of goods per item |
| `{{product.inventoryTotal}}` | Total inventory across all variants |
| `{{product.requiresShipping}}` | Whether the product requires shipping |
| `{{product.inventoryTracked}}` | Whether inventory tracking is enabled |
| `{{product.taxable}}` | Whether tax is charged |
| `{{product.seoTitle}}` | SEO meta title |
| `{{product.seoDescription}}` | SEO meta description |
| `{{product_previous.*}}` | All above fields for the previous state |
| Variable | Description |
| ------------------------------------ | --------------------------------- |
| `{{order.id}}` | Order ID |
| `{{order.adminUrl}}` | Link to order in Shopify Admin |
| `{{order.name}}` | Order name (e.g., `#1001`) |
| `{{order.orderNumber}}` | Order number |
| `{{order.totalPrice}}` | Grand total |
| `{{order.subtotalPrice}}` | Subtotal before tax/shipping |
| `{{order.totalDiscounts}}` | Total discount applied |
| `{{order.totalTax}}` | Total tax charged |
| `{{order.totalLineItemsPrice}}` | Sum of all line item prices |
| `{{order.totalOutstanding}}` | Amount remaining to be paid |
| `{{order.totalWeight}}` | Combined item weight |
| `{{order.currentTotalPrice}}` | Current total after edits |
| `{{order.currentSubtotalPrice}}` | Current subtotal after edits |
| `{{order.totalTipReceived}}` | Tip amount |
| `{{order.currency}}` | Currency code |
| `{{order.presentmentCurrency}}` | Display currency |
| `{{order.financialStatus}}` | Financial status |
| `{{order.fulfillmentStatus}}` | Fulfillment status |
| `{{order.displayFinancialStatus}}` | Human-readable financial status |
| `{{order.displayFulfillmentStatus}}` | Human-readable fulfillment status |
| `{{order.cancelReason}}` | Cancellation reason |
| `{{order.paymentGatewayNames}}` | Payment methods used |
| `{{order.email}}` | Email on the order |
| `{{order.phone}}` | Phone number on the order |
| `{{order.customerId}}` | Associated customer ID |
| `{{order.customerEmail}}` | Customer's email |
| `{{order.customerFirstName}}` | Customer's first name |
| `{{order.customerLastName}}` | Customer's last name |
| `{{order.customerPhone}}` | Customer's phone |
| `{{order.buyerAcceptsMarketing}}` | Marketing opt-in status |
| `{{order.locale}}` | Customer locale |
| `{{order.landingSite}}` | Landing page URL |
| `{{order.sourceName}}` | Order source |
| `{{order.tags}}` | Order tags |
| `{{order.note}}` | Order notes |
| `{{order.test}}` | Whether this is a test order |
| `{{order.confirmed}}` | Whether the order is confirmed |
| `{{order.edited}}` | Whether the order has been edited |
| `{{order.taxExempt}}` | Whether the order is tax exempt |
| `{{order.taxesIncluded}}` | Whether prices include tax |
| `{{order.dutiesIncluded}}` | Whether duties are included |
| `{{order.shippingName}}` | Name on shipping address |
| `{{order.shippingAddress1}}` | Shipping street address |
| `{{order.shippingCity}}` | Shipping city |
| `{{order.shippingProvince}}` | Shipping province/state |
| `{{order.shippingCountry}}` | Shipping country |
| `{{order.shippingZip}}` | Shipping postal code |
| `{{order.shippingPhone}}` | Shipping address phone |
| `{{order.billingName}}` | Name on billing address |
| `{{order.billingAddress1}}` | Billing street address |
| `{{order.billingCity}}` | Billing city |
| `{{order.billingProvince}}` | Billing province/state |
| `{{order.billingCountry}}` | Billing country |
| `{{order.billingZip}}` | Billing postal code |
| `{{order.billingPhone}}` | Billing address phone |
| Variable | Description |
| -------------------------------------- | --------------------------------- |
| `{{customer.id}}` | Customer ID |
| `{{customer.adminUrl}}` | Link to customer in Shopify Admin |
| `{{customer.email}}` | Email address |
| `{{customer.firstName}}` | First name |
| `{{customer.lastName}}` | Last name |
| `{{customer.phone}}` | Phone number |
| `{{customer.tags}}` | Tags |
| `{{customer.locale}}` | Locale |
| `{{customer.acceptsMarketing}}` | Marketing opt-in status |
| `{{customer.amountSpent}}` | Lifetime amount spent |
| `{{customer.numberOfOrders}}` | Lifetime number of orders |
| `{{customer.productSubscriberStatus}}` | Subscription status |
| `{{customer.taxExemptions}}` | Tax exemption info |
| Variable | Description |
| ------------------------------- | ------------------------------ |
| `{{returns.status}}` | Current return status |
| `{{returns.returnReason}}` | Reason provided for the return |
| `{{returns.lineItemCount}}` | Number of items in the return |
| `{{returns.totalRefundAmount}}` | Total refund value |
| `{{returns.currency}}` | Currency code |
| `{{returns.orderId}}` | ID of the associated order |
| `{{returns.customerEmail}}` | Customer's email address |
| Variable | Description |
| ------------------------ | --------------------------------- |
| `{{cart.id}}` | Checkout ID |
| `{{cart.recoveryUrl}}` | URL to recover the abandoned cart |
| `{{cart.customerEmail}}` | Customer's email address |
| `{{cart.firstName}}` | Customer's first name |
| `{{cart.lastName}}` | Customer's last name |
| `{{cart.totalPrice}}` | Cart total value |
| `{{cart.currency}}` | Currency code |
| `{{cart.lineItemCount}}` | Number of items in the cart |
# Triggers
Source: https://alius-docs.frimty.com/features/triggers
Define which Shopify events to watch and where to send notifications
## Overview
A trigger is a rule that watches for a specific Shopify event and sends a notification to a hub (Slack, Email, Telegram, or Discord) when that event occurs. Each trigger can be filtered with [conditions](/features/conditions) and scheduled for immediate or batched delivery.
***
## Trigger Types
Alius supports 20 trigger types across six Shopify entities:
### Product
| Trigger Type | Fires when… |
| --------------- | ---------------------------------------- |
| Product created | A new product is added to the store |
| Product updated | Any field on an existing product changes |
| Product deleted | A product is removed from the store |
### Order
| Trigger Type | Fires when… |
| --------------- | ---------------------------------- |
| Order created | A new order is placed |
| Order updated | An existing order's details change |
| Order paid | An order's payment is confirmed |
| Order fulfilled | An order is marked as fulfilled |
### Refund
| Trigger Type | Fires when… |
| -------------- | ------------------------------ |
| Refund created | A refund is issued on an order |
### Customer
| Trigger Type | Fires when… |
| ---------------- | ------------------------------------------ |
| Customer created | A new customer account is created |
| Customer updated | A customer's profile or preferences change |
| Customer deleted | A customer record is removed |
### Returns
| Trigger Type | Fires when… |
| ----------------- | -------------------------------------- |
| Return requested | A customer submits a return request |
| Return approved | A return request is approved |
| Return declined | A return request is declined |
| Return processing | A return is being processed |
| Return closed | A return is closed |
| Return cancelled | A return is cancelled |
| Return reopened | A previously closed return is reopened |
| Return updated | Any field on a return changes |
### Cart
| Trigger Type | Fires when… |
| -------------- | ----------------------------------------------- |
| Cart abandoned | A checkout is abandoned (no purchase completed) |
***
## Trigger Fields
Each trigger has the following configurable fields:
| Field | Required | Description |
| ----------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| **Title** | Yes | A descriptive name shown in the triggers list |
| **Status** | Yes | Active (live) or Disabled (paused) |
| **Type** | Yes | The Shopify event to watch (see trigger types above) |
| **Notification Hub** | Yes | Where to send the notification: Slack, Email, Telegram, or Discord. Pro plan: select multiple hubs simultaneously |
| **Channels/Recipients** | Yes | For Slack: one or more enabled channels. For Email: verified recipients. For Telegram or Discord: the connected destination |
| **Schedule** | Yes | When to send: Instant, Hourly, Daily, Weekly, or Monthly. See [Schedule Types](/features/schedule-types) |
| **Template** | No | A saved [template](/features/templates) to use. Defaults to the built-in format if not set |
| **Conditions** | No | One or more field-level filters. See [Conditions](/features/conditions) |
***
## Trigger Status
Each trigger has an **Active** / **Disabled** toggle:
* **Active** — The trigger is live and will fire notifications when events occur.
* **Disabled** — The trigger is paused. No notifications are sent, but configuration is preserved.
Triggers can be enabled or disabled from the trigger form or from the triggers list.
***
## Creating a Trigger
Creating a trigger is a two-step process:
**Step 1 — Choose a template**
Clicking **Create Trigger** opens the **template picker** page. You can either:
* Select a **pre-built template** (see [Pre-built Templates](#pre-built-templates) below) to start with a pre-configured type and conditions.
* Click **Blank Template** to start from scratch.
**Step 2 — Fill in the form**
1. Fill in the **Title**.
2. The **Type** and **Conditions** are pre-filled if you chose a template — you can adjust them.
3. Select a **Notification Hub**. On the Free plan this is a single-select dropdown; on Pro it is a multi-select so you can send to several hubs at once.
4. Select the **Channels/Recipients** for each hub.
5. Select a **Schedule** (defaults to Instant; non-instant schedules require Pro).
6. Optionally select a saved **Template**.
7. Click **Create Trigger**.
The trigger starts processing events immediately.
***
## Pre-built Templates
The template picker offers nine ready-made configurations. Selecting one pre-fills the trigger type, category, conditions, and condition mode — all of which can be adjusted before saving.
| Template | Type | Pre-set Condition |
| -------------------- | ---------------- | -------------------- |
| Low Stock | Product updated | Inventory total \< 5 |
| Out of Stock | Product updated | Inventory total = 0 |
| High-Value Order | Order created | Total price > \$500 |
| Abandoned Checkout | Cart abandoned | — |
| New Order | Order created | — |
| Order Refund | Refund created | — |
| Return from Customer | Return requested | — |
| Return from Admin | Return approved | — |
| New Customer | Customer created | — |
Templates are client-side only — no extra data is stored for choosing a template.
***
## Multi-Hub Notifications (Pro)
On the **Pro plan**, a single trigger can send to multiple hubs simultaneously — for example, Slack and Email and Discord all at once.
* The hub selector on the trigger form changes to **multi-select checkboxes**.
* Each selected hub uses its own channel/recipient configuration.
* Each hub+recipient pair produces a separate entry in [Notification History](/features/notification-history).
On the **Free plan**, only one hub can be selected per trigger. A banner in the form explains the restriction and links to the upgrade page.
***
## Editing and Deleting Triggers
* Click any trigger row on the **Triggers** page to open the edit form.
* Use the checkbox column to select multiple triggers and delete them in bulk.
* A confirmation modal appears before deletion.
***
## Trigger Limits
| Plan | Active Trigger Limit |
| ---- | -------------------- |
| Free | 3 |
| Pro | 10 |
| Max | Unlimited |
Triggers are one of four automation types — Reports, Goals, and Insights have their own separate limits. See [Reports](/features/reports), [Goals](/features/goals), [Insights](/features/insights), and [Pricing](/guides/pricing).
When the plan limit is reached:
* The **Create Automation** button is disabled with a warning banner.
* The banner includes an **Upgrade** button linking to Shopify's pricing page.
* The server also enforces the limit — the form submission is rejected if the UI is bypassed.
# Best Practices
Source: https://alius-docs.frimty.com/guides/best-practices
Proven trigger configurations for the most common Shopify store alerts
## Overview
This guide covers the most popular alert setups that Shopify store owners rely on daily. Each recipe includes the exact trigger configuration, recommended conditions, and a suggested custom template — all achievable with Alius's current feature set.
***
## 1. Low Stock Alert
**Why it matters:** Running out of stock on a best-seller means lost revenue and disappointed customers. A low-stock alert gives you lead time to reorder before it's too late.
### Configuration
| Setting | Value |
| ------------------ | ------------------------- |
| **Title** | Low Stock Warning |
| **Type** | Product updated |
| **Condition Mode** | All conditions must match |
**Conditions:**
| Field | Operator | Value |
| ----------------- | --------- | ----- |
| Total Inventory | Less than | 10 |
| Inventory Tracked | Equals | true |
### Suggested Template
```
🚨 Low Stock Alert: {{product.title}}
Inventory is running low!
Current Stock: {{product.inventoryTotal}}
Previous Stock: {{product_previous.inventoryTotal}}
Vendor: {{product.vendor}}
Product Type: {{product.productType}}
Status: {{product.status}}
⚡ Reorder now before it's too late!
View Product: {{product.adminUrl}}
```
### Why This Works
* The **Total Inventory** field is the sum of all variant inventory quantities, fetched via the Shopify GraphQL API.
* Adding **Inventory Tracked = true** prevents false alerts for products where inventory isn't tracked (e.g., digital goods, services).
* Alius only fires this alert when the inventory value **actually changes** (thanks to snapshot-based change detection), so you won't get spam from unrelated product updates.
### Variations
| Variation | Condition Change |
| --------------------------- | --------------------------------------------- |
| Critical stock (almost out) | Total Inventory \< 3 |
| Warehouse buffer | Total Inventory \< 50 |
| Per-vendor monitoring | Add condition: Vendor Equals "\[Vendor Name]" |
***
## 2. High-Value Order Alert
**Why it matters:** Large orders deserve immediate attention — faster fulfillment, personalized thank-you notes, and fraud review.
### Configuration
| Setting | Value |
| ------------------ | ------------------------- |
| **Title** | High-Value Order |
| **Type** | Order created |
| **Condition Mode** | All conditions must match |
**Conditions:**
| Field | Operator | Value |
| ----------- | ------------ | ----- |
| Total Price | Greater than | 200 |
### Suggested Template
```
💰 High-Value Order: {{order.name}}
Total: {{order.totalPrice}} {{order.currency}}
Customer: {{order.customerFirstName}} {{order.customerLastName}}
Email: {{order.email}}
Financial Status: {{order.financialStatus}}
Fulfillment: {{order.fulfillmentStatus}}
Shipping To:
{{order.shippingName}}
{{order.shippingCity}}, {{order.shippingProvince}} {{order.shippingCountry}}
View Order: {{order.adminUrl}}
```
### Variations
| Variation | Condition Change |
| ---------------------- | ------------------------------ |
| VIP threshold (\$500+) | Total Price > 500 |
| Specific currency | Add: Currency Equals "USD" |
| Exclude test orders | Add: Test Order Equals "false" |
***
## 3. New Customer Welcome Alert
**Why it matters:** New customers are a growth signal. Alerting your team lets you welcome them, trigger onboarding sequences, or flag trends in acquisition.
### Configuration
| Setting | Value |
| ------------------ | -------------------------------------------- |
| **Title** | New Customer Signup |
| **Type** | Customer created |
| **Condition Mode** | (No conditions — fire for all new customers) |
### Suggested Template
```
👋 New Customer: {{customer.firstName}} {{customer.lastName}}
Email: {{customer.email}}
Phone: {{customer.phone}}
Accepts Marketing: {{customer.acceptsMarketing}}
View Customer: {{customer.adminUrl}}
```
### With Conditions (Marketing-Opted-In Customers Only)
| Field | Operator | Value |
| ----------------- | -------- | ----- |
| Accepts Marketing | Equals | true |
This filters to only customers who opted in to marketing — ideal for triggering welcome email sequences.
***
## 4. Order Fulfillment Status Change
**Why it matters:** Tracking fulfillment status changes helps operations teams stay on top of shipping, identify delays, and update customers proactively.
### Configuration
| Setting | Value |
| ------------------ | ------------------------- |
| **Title** | Order Fulfilled |
| **Type** | Order updated |
| **Condition Mode** | All conditions must match |
**Conditions:**
| Field | Operator | Value |
| ------------------ | -------- | --------- |
| Fulfillment Status | Equals | fulfilled |
### Suggested Template
```
📦 Order Fulfilled: {{order.name}}
Customer: {{order.customerFirstName}} {{order.customerLastName}}
Email: {{order.email}}
Total: {{order.totalPrice}} {{order.currency}}
Shipped To:
{{order.shippingCity}}, {{order.shippingCountry}}
View Order: {{order.adminUrl}}
```
### Variations
| Variation | Condition Change |
| ------------------- | --------------------------------------- |
| Partially fulfilled | Fulfillment Status Equals "partial" |
| Not yet fulfilled | Fulfillment Status Equals "unfulfilled" |
***
## 5. Refund & Cancellation Monitor
**Why it matters:** Spotting refunds and cancellations quickly lets you reach out to unhappy customers, investigate quality issues, and track return rates.
### Configuration (Refund Alert)
| Setting | Value |
| ------------------ | ------------------------- |
| **Title** | Order Refunded |
| **Type** | Order updated |
| **Condition Mode** | All conditions must match |
**Conditions:**
| Field | Operator | Value |
| ---------------- | -------- | -------- |
| Financial Status | Equals | refunded |
### Configuration (Cancellation Alert)
| Setting | Value |
| ------------------ | ------------------------- |
| **Title** | Order Cancelled |
| **Type** | Order updated |
| **Condition Mode** | All conditions must match |
**Conditions:**
| Field | Operator | Value |
| ---------------- | -------- | ------ |
| Financial Status | Equals | voided |
### Suggested Template (Refund)
```
⚠️ Order Refunded: {{order.name}}
Total Refunded: {{order.totalPrice}} {{order.currency}}
Customer: {{order.customerFirstName}} {{order.customerLastName}}
Email: {{order.email}}
Cancel Reason: {{order.cancelReason}}
View Order: {{order.adminUrl}}
```
***
## 6. Product Price Change Alert
**Why it matters:** Unintended price changes can cost revenue or erode customer trust. Monitoring price changes catches mistakes before they impact sales.
### Configuration
| Setting | Value |
| ------------------ | ------------------------------------------- |
| **Title** | Price Change Monitor |
| **Type** | Product updated |
| **Condition Mode** | (No conditions — monitor all price changes) |
### Suggested Template
```
💲 Price Change: {{product.title}}
Current Price: {{product.price}}
Previous Price: {{product_previous.price}}
Compare at Price: {{product.compareAtPrice}}
Previous Compare at: {{product_previous.compareAtPrice}}
Cost per Item: {{product.costPerItem}}
Vendor: {{product.vendor}}
View Product: {{product.adminUrl}}
```
Since Alius's snapshot system tracks all product fields, this trigger will fire whenever **any** product field changes. The template ensures the price information is always visible even if the change was to a different field. For true price-only alerts, add a condition: **Price Doesn't Equal 0** (to filter out products without prices), or use multiple triggers with specific price thresholds.
### Variation: Significant Price Drop
| Field | Operator | Value |
| ----- | --------- | ----- |
| Price | Less than | 20 |
This alerts you when any product's price drops below \$20 — useful for catching accidental discounts.
***
## 7. International / Regional Order Routing
**Why it matters:** If you ship internationally, certain countries may require customs documentation, different carriers, or longer handling times. Routing these orders to a dedicated Slack channel keeps your logistics team organized.
### Configuration
| Setting | Value |
| ------------------ | ---------------------------- |
| **Title** | International Order (Non-US) |
| **Type** | Order created |
| **Channel** | #international-orders |
| **Condition Mode** | All conditions must match |
**Conditions:**
| Field | Operator | Value |
| ---------------- | ------------- | ----- |
| Shipping Country | Doesn't Equal | US |
### Suggested Template
```
🌍 International Order: {{order.name}}
Shipping To: {{order.shippingCountry}}
{{order.shippingName}}
{{order.shippingAddress1}}
{{order.shippingCity}}, {{order.shippingProvince}} {{order.shippingZip}}
Total: {{order.totalPrice}} {{order.currency}}
Customer: {{order.customerFirstName}} {{order.customerLastName}}
View Order: {{order.adminUrl}}
```
### Variation: Specific Country Alerts
| Goal | Condition |
| ------------------ | ------------------------------------------------------------------------------------- |
| Orders from Canada | Shipping Country Equals "CA" |
| EU orders | Shipping Country Contains "DE" (repeat for each EU country, condition mode = **Any**) |
***
## 8. VIP Customer Activity Tracker
**Why it matters:** Your biggest spenders deserve VIP treatment. Track when their profiles are updated so you can maintain personalized service.
### Configuration
| Setting | Value |
| ------------------ | ------------------------- |
| **Title** | VIP Customer Change |
| **Type** | Customer updated |
| **Condition Mode** | All conditions must match |
**Conditions:**
| Field | Operator | Value |
| --------------------- | ------------ | ----- |
| Lifetime Amount Spent | Greater than | 1000 |
### Suggested Template
```
⭐ VIP Customer Update: {{customer.firstName}} {{customer.lastName}}
Email: {{customer.email}}
Lifetime Spent: {{customer.amountSpent}}
Total Orders: {{customer.numberOfOrders}}
Tags: {{customer.tags}}
View Customer: {{customer.adminUrl}}
```
***
## 9. Product Deleted / Unpublished Monitor
**Why it matters:** Accidental product deletions or status changes to "draft" can make products disappear from your storefront. Catching these immediately prevents lost sales.
### Configuration (Deleted)
| Setting | Value |
| ------------------ | ---------------------------------------- |
| **Title** | Product Deleted Alert |
| **Type** | Product deleted |
| **Condition Mode** | (No conditions — fire for all deletions) |
### Configuration (Unpublished/Archived)
| Setting | Value |
| ------------------ | ----------------------- |
| **Title** | Product Archived |
| **Type** | Product updated |
| **Condition Mode** | Any condition can match |
**Conditions:**
| Field | Operator | Value |
| ------ | -------- | -------- |
| Status | Equals | draft |
| Status | Equals | archived |
### Suggested Template (Deleted)
```
🗑️ Product Deleted: {{product.title}}
This product has been permanently removed from your store.
Vendor: {{product.vendor}}
Type: {{product.productType}}
Tags: {{product.tags}}
```
***
## 10. Tagged Order Routing
**Why it matters:** Many merchants use order tags to flag special handling — wholesale orders, subscription renewals, gift orders, etc. Routing tagged orders to dedicated channels keeps workflows clean.
### Configuration
| Setting | Value |
| ------------------ | ------------------------- |
| **Title** | Wholesale Order |
| **Type** | Order created |
| **Channel** | #wholesale |
| **Condition Mode** | All conditions must match |
**Conditions:**
| Field | Operator | Value |
| ----- | -------- | --------- |
| Tags | Contains | wholesale |
### Suggested Template
```
🏷️ Wholesale Order: {{order.name}}
Tags: {{order.tags}}
Total: {{order.totalPrice}} {{order.currency}}
Customer: {{order.customerFirstName}} {{order.customerLastName}}
Source: {{order.sourceName}}
Payment: {{order.paymentGatewayNames}}
View Order: {{order.adminUrl}}
```
### Variations
| Goal | Condition |
| -------------------- | --------------------------------- |
| Gift orders | Tags Contains "gift" |
| Subscription renewal | Tags Contains "subscription" |
| Priority shipping | Tags Contains "rush" or "express" |
***
## Free Plan Strategy
On the **Free plan** (1 trigger limit), here's how to maximize value:
**Use a broad trigger** with a well-crafted template to cover the most ground. The best single-trigger options are:
1. **"Order created" (no conditions)** — Captures every new sale. The most universally useful alert for solo merchants.
2. **"Order created" with Total Price > \[threshold]** — If you get high volume, filter to only significant orders.
3. **"Product updated" with Total Inventory \< 10** — If inventory management is your top priority.
When you're ready for more granular control, upgrade to **Pro** for unlimited triggers and create targeted alerts for each scenario in this guide.
***
## Channel Organization Tips
Use channels like `#orders`, `#inventory-alerts`, `#customer-activity` to keep different alert types separated.
Send critical alerts (low stock, high-value orders) to a channel with Slack notifications enabled. Send informational alerts (new customers, product updates) to a channel with notifications muted.
Send order alerts to the fulfillment team's channel, inventory alerts to operations, and customer alerts to customer success.
Configure per-channel notification preferences in Slack so team members are only interrupted by truly urgent alerts.
# Pricing
Source: https://alius-docs.frimty.com/guides/pricing
Alius Free, Pro, and Max plans — what's included and how billing works
## Plans Overview
Alius has three tiers. Limits apply **per automation type** — Triggers, Reports, Goals, Insights, and Guards each have their own allowance.
**\$0 / month**
* ✅ 3 active triggers
* ✅ 3 active reports
* ✅ 1 active goal
* ❌ Insights not included
* ❌ Guards not included
* ✅ All trigger types & conditions
* ✅ Custom templates
* ✅ Slack, Email, Telegram, Discord, HTTP
* ✅ Single hub per automation
**\$9.99 / month**
* ✅ 10 active triggers
* ✅ 10 active reports
* ✅ 5 active goals
* ✅ **3 active insights** — one of each type
* ✅ **3 active guards**
* ✅ **Multi-hub** per automation
* ✅ **AI summaries** on reports & digests
**\$19.99 / month**
* ✅ **Unlimited** triggers
* ✅ **Unlimited** reports
* ✅ **Unlimited** goals
* ✅ **Unlimited** insights
* ✅ **Unlimited** guards
* ✅ Multi-hub per automation
* ✅ AI summaries
## Plan Comparison
| Feature | Free | Pro | Max |
| ---------------------------------- | -------------- | --------- | ---------- |
| **Price** | \$0/mo | \$9.99/mo | \$19.99/mo |
| **Active Triggers** | 3 | 10 | Unlimited |
| **Active Reports** | 3 | 10 | Unlimited |
| **Active Goals** | 1 | 5 | Unlimited |
| **Active Insights** | ❌ Not included | 3 | Unlimited |
| **Active Guards** | ❌ Not included | 3 | Unlimited |
| Trigger types & conditions | ✅ | ✅ | ✅ |
| Custom Templates | ✅ | ✅ | ✅ |
| Slack / Email / Telegram / Discord | ✅ | ✅ | ✅ |
| **Multi-Hub per automation** | ❌ Single only | ✅ | ✅ |
| **Schedule Types** | All types | All types | All types |
| **AI Report & Digest Summaries** | ❌ | ✅ | ✅ |
| Notification History | ✅ | ✅ | ✅ |
| Dashboard Metrics | ✅ | ✅ | ✅ |
An automation only counts toward your limit while it is **active**. Disabled
triggers, reports, goals, insights, and guards do not consume a slot.
***
## Frequently Asked Questions
Each automation type (Trigger, Report, Goal, Insight, Guard) has its own limit
and counts independently. Only **active** automations count — disabled ones are free.
No. Excess automations are set to "disabled" status, never deleted. Upgrade
again to re-enable them.
The **oldest** entries (by creation date) per type, up to the target plan's
limit. The rest are disabled.
Pro raises every limit and unlocks multi-hub, AI summaries,
[Insights](/features/insights), and [Guards](/features/guards). Max removes
the limits entirely — unlimited triggers, reports, goals, insights, and guards.
[Insights](/features/insights) run daily anomaly detection across your whole
catalogue and write an AI narrative for each finding, so they carry a real
ongoing cost per store. The Free limit is genuinely **0** rather than a
reduced allowance. Pro includes 3 — one of each anomaly type.
[Guards](/features/guards) watch every product and order change instantly and
carry a real ongoing cost per store, same reasoning as Insights. The Free
limit is genuinely **0** rather than a reduced allowance. Pro includes 3.
Probably not — Insights are **designed** to stay silent unless something is
genuinely wrong, and most days nothing is. Alius imports your recent sales
history when you create the insight, so detection is already running. It also
caps alerts at 3 per day, ignores products below 1% of store revenue, and goes
quiet entirely when many products move at once. Use **Fire (test)** to confirm
delivery works, and see [Insights](/features/insights) for details.
Your subscription state is synced from Shopify's Partner API automatically.
An active paid subscription is restored.
# Introduction
Source: https://alius-docs.frimty.com/introduction
What Alius is and how it works
## What is Alius?
**Alius** is a Shopify app that delivers the right store information to **Slack, Email, Telegram, and Discord** at the right time — without you ever opening the Shopify admin.
It does this through **Automations**, which come in five kinds:
* **Triggers** — react to a Shopify event (new order, low stock, return…) and alert you instantly.
* **Reports** — pull scheduled analytics (daily revenue, weekly performance…), optionally summarized by AI, and push them to your hub.
* **Goals** — track a target metric over time and nudge you as you approach or fall behind.
* **Insights** — watch every product against its own history and speak up only when something is genuinely wrong. Nothing to configure.
* **Guards** — watch every product and order change for known-dangerous mistakes (a price cut in half, a product unpublished, a sale below cost) and offer a one-tap Undo.
All five are managed together under the **Automations** section.
***
## How it works
Connect Slack via OAuth, add verified email recipients, link a Telegram chat using a connection token, or paste a Discord incoming webhook URL. Each hub is configured on the **Integrations** page.
Add a Trigger to watch for events, a Report for scheduled analytics, a Goal to track a target, an Insight to catch problems you didn't know to look for, or a Guard to watch for costly mistakes — and pick which hub each one notifies.
Alius processes Shopify webhooks in real time and runs scheduled reports, goals, daily anomaly detection, and instant Guard classification, delivering everything to your configured hubs.
***
## Core Concepts
| Concept | Description |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Automation** | Any of the five automation types — Trigger, Report, Goal, Insight, or Guard — all managed under the **Automations** section. |
| **Trigger** | A rule that defines which Shopify event to watch, where to send the notification, and optional filters and schedule. |
| **Report** | A scheduled analytics summary (daily/weekly/monthly), optionally enriched with an AI summary, delivered to a hub. |
| **Goal** | A target metric tracked over a date range, with milestone, pace, and check-in alerts. |
| **Insight** | Automatic per-product anomaly detection — no rule to configure. Alerts when a product's sales collapse, surge, or return rate spikes against its own history. Pro/Max. |
| **Guard** | Watches product and order changes for known-dangerous mistakes (price, availability, discoverability, margin) and offers a one-tap Undo. No rule to configure. Pro/Max. |
| **Condition** | An optional filter on a trigger — e.g., "only when Total Price > 50" or "only when Vendor equals Nike". |
| **Template** | A reusable message format with dynamic placeholders like `{{product.title}}` or `{{order.totalPrice}}`. |
| **Integration** | A connection to a notification hub: Slack, Email, Telegram, or Discord. |
| **Schedule** | Controls delivery timing: Instant (immediate) or batched (Hourly, Daily, Weekly, Monthly). |
| **Snapshot** | An internal record of the last known state of a product, order, or customer — used to detect what actually changed. |
| **History** | A log of all notification delivery attempts with status, recipient, and error details. |
***
## Supported Events
Alius monitors the following Shopify events:
| Entity | Events |
| ------------- | -------------------------------------------------------------------------------------- |
| **Products** | Created · Updated · Deleted |
| **Orders** | Created · Updated · Paid · Fulfilled |
| **Refunds** | Created |
| **Customers** | Created · Updated · Deleted |
| **Returns** | Requested · Approved · Declined · Processing · Closed · Cancelled · Reopened · Updated |
| **Cart** | Abandoned |
Each event type supports [conditions](/features/conditions) with dozens of filterable fields.
***
## Features
20 trigger types across products, orders, customers, returns, and carts.
Scheduled analytics summaries with optional AI insights, pushed to your hub.
Track a target metric over time with milestone and pace alerts.
Automatic anomaly detection with no rules to configure — know when a product
quietly stops selling, suddenly takes off, or starts getting returned.
Watch for costly mistakes — a price cut in half, a product unpublished, a
sale below cost — with a one-tap Undo to fix them.
Filter triggers with field-level conditions across 50+ fields per entity.
Deliver notifications to Slack, Email, Telegram, or Discord.
Customize message content with Markdown and dynamic `{{variable}}` placeholders.
Send instantly or batch notifications hourly, daily, weekly, or monthly.
View delivery logs with status, recipient, message preview, and error details.
***
## Next Steps
Get up and running in under 5 minutes.
Free, Pro, and Max plan details.
# Quickstart
Source: https://alius-docs.frimty.com/quickstart
Get Alius up and running in under 5 minutes
## Prerequisites
* A **Shopify store** (development or live)
* A notification destination: a **Slack workspace**, an **email address**, a **Telegram chat**, or a **Discord channel with an incoming webhook**
## Step 1 — Install Alius
Install Alius from the Shopify App Store. After installation, Alius appears in your Shopify Admin under **Apps → Alius**.
When you open the app for the first time, the **Home** page displays a setup guide checklist.
## Step 2 — Connect a Notification Hub
Alius supports four notification hubs: **Slack**, **Email**, **Telegram**, and **Discord**. Connect at least one before creating triggers.
Navigate to **Integrations** in the left sidebar and follow the steps for your chosen hub:
**Slack (OAuth):**
1. Click **Connect to Slack**.
2. Authorize on Slack's OAuth page and click **Allow**.
3. Once connected, enable the channels where Alius should post and click **Save**.
**Email:**
1. Enter an email address in the Email section and click **Add Recipient**.
2. The recipient must click the verification link sent to that address.
3. Once verified, toggle the recipient to **Active**.
**Telegram:**
1. Click **Generate Connection Token** — the token is valid for 15 minutes.
2. In your Telegram chat, send `/connect ` to the Alius bot.
3. The bot confirms the connection.
**Discord:**
1. In Discord, open the target channel → **Channel Settings** → **Integrations** → **Webhooks** → **New Webhook**.
2. Copy the webhook URL.
3. Paste it into the **Webhook URL** field in the Discord section and click **Connect**.
See the [Integrations](/features/integrations) page for full details on each hub.
## Step 3 — Send a Test Message
On the **Integrations** page, click **Send test notification** for your connected hub. Confirm the message arrives at the destination.
## Step 4 — Create Your First Trigger
1. Navigate to **Triggers** in the left sidebar.
2. Click **Create Trigger**. You'll land on the **template picker** page.
3. Choose a pre-built template (e.g., "New Order") or click **Blank Template** to start from scratch.
4. Fill in the form:
* **Title:** A descriptive name (e.g., "New Order Alert").
* **Type:** Pre-filled if you chose a template — change it if needed.
* **Notification Hub:** Select your connected hub.
* **Channels/Recipients:** Pick the target channel, email, Telegram chat, or Discord webhook.
5. Click **Create Trigger**.
Alius will now send a notification every time the selected event occurs.
## Step 5 — (Optional) Add Conditions
To filter which events trigger a notification — for example, only orders over \$100:
1. On the trigger form, click **⊕** under "Additional conditions".
2. Set:
* **Field:** Total Price
* **Operator:** Greater than
* **Value:** 100
3. Save the trigger.
See [Conditions](/features/conditions) for the complete list of filterable fields and operators.
## What's Next?
All 20 trigger types and configuration options.
Full setup guide for Slack, Email, Telegram, and Discord.
Customize notification message content.
Filter triggers with 50+ condition fields.