---
title: "Alert rules"
description: "Describe what you want to be told about, confirm the rule Jsonify proposes, choose a channel, and get alerts when data changes or a run finishes."
url: "https://www.jsonify.com/docs/alerts/rules"
---

[Documentation](https://www.jsonify.com/docs/) Filter pages

## Getting started

*   [What is Jsonify?](https://www.jsonify.com/docs/)
*   [How pipelines work](https://www.jsonify.com/docs/how-jsonify-works)
*   [Your first pipeline](https://www.jsonify.com/docs/getting-started/first-pipeline)
*   [Workspaces](https://www.jsonify.com/docs/getting-started/workspaces)
*   [Glossary](https://www.jsonify.com/docs/getting-started/glossary)

## Tutorials

*   [Track the Hacker News front page](https://www.jsonify.com/docs/tutorials/hacker-news)
*   [Monitor prices across retailers](https://www.jsonify.com/docs/tutorials/price-monitoring)
*   [Get a Slack alert when a price drops](https://www.jsonify.com/docs/tutorials/slack-price-alert)
*   [Use a dataset from your agent](https://www.jsonify.com/docs/tutorials/agent-query)

## Jason

*   [Chatting with Jason](https://www.jsonify.com/docs/jason/chat)
*   [Changing a pipeline](https://www.jsonify.com/docs/jason/changing-a-pipeline)
*   [Agents, workers and repairs](https://www.jsonify.com/docs/data-agents)

## Pipelines

*   [The pipeline page](https://www.jsonify.com/docs/pipelines/overview)
*   [Statement of work and steps](https://www.jsonify.com/docs/pipelines/statement-of-work)
*   [Inputs and parameters](https://www.jsonify.com/docs/pipelines/inputs)
*   [Settings reference](https://www.jsonify.com/docs/pipelines/settings)
*   [Versions and changelog](https://www.jsonify.com/docs/pipelines/versions)

## Runs

*   [Running a pipeline](https://www.jsonify.com/docs/runs/running)
*   [Scheduling](https://www.jsonify.com/docs/runs/scheduling)
*   [Run detail](https://www.jsonify.com/docs/runs/run-detail)
*   [Run lifecycle](https://www.jsonify.com/docs/runs/lifecycle)
*   [Verification and repair](https://www.jsonify.com/docs/runs/verification-and-repair)

## Datasets

*   [Dataset pages](https://www.jsonify.com/docs/datasets/overview)
*   [Versions](https://www.jsonify.com/docs/datasets/versions)
*   [Query and export](https://www.jsonify.com/docs/datasets/query-and-export)
*   [Row detail and provenance](https://www.jsonify.com/docs/datasets/provenance)
*   [Sharing](https://www.jsonify.com/docs/datasets/sharing)

## Analytics

*   [Dashboards](https://www.jsonify.com/docs/analytics/dashboards)
*   [Newsletters](https://www.jsonify.com/docs/analytics/newsletters)

## Alerts

*   [Alert rules](https://www.jsonify.com/docs/alerts/rules)
*   [Alert history and notifications](https://www.jsonify.com/docs/alerts/history)

## Integrations

*   [Integrations overview](https://www.jsonify.com/docs/integrations/overview)
*   [Slack and email](https://www.jsonify.com/docs/integrations/slack-and-email)
*   [Sheets, warehouses and webhooks](https://www.jsonify.com/docs/integrations/destinations)
*   [Ingest and serve API](https://www.jsonify.com/docs/integrations/api)
*   [Connect your agent (MCP)](https://www.jsonify.com/docs/integrations/mcp)
*   [Command line](https://www.jsonify.com/docs/integrations/cli)

## Workspace and account

*   [Workspace settings](https://www.jsonify.com/docs/workspace/settings)
*   [Team](https://www.jsonify.com/docs/workspace/team)
*   [Billing and usage](https://www.jsonify.com/docs/workspace/billing)
*   [Data retention](https://www.jsonify.com/docs/workspace/data-retention)

## Plans

*   [Radar or Benchmark? Enterprise](https://www.jsonify.com/docs/radar-vs-benchmark)
*   [Row pricing and managed service](https://www.jsonify.com/docs/pricing-model)

## More

*   [Connect your agent](https://www.jsonify.com/connect)
*   [Pricing](https://www.jsonify.com/pricing)
*   [Contact support](https://www.jsonify.com/contact)

[Docs](https://www.jsonify.com/docs/)/Alerts

# Alert rules

Describe what you want to be told about, confirm the rule Jsonify proposes, choose a channel, and get alerts when data changes or a run finishes.

An alert rule watches a dataset or a pipeline and fires when its condition is met: new rows appeared, a price moved by more than 10%, a run failed. Every fire is recorded in the workspace’s alert history and the bell, and delivered to one channel if you attach one.

When a dataset publishes or a run finishes, each alert rule evaluates its condition. A match fires one alert that is delivered to the channels the rule selects: in-app, Slack, email, webhook or browser push.

A rule is evaluated when a dataset publishes a new version or a run finishes. Each fire is stored in the workspace and sent to the rule's channel.

## The Alert Rules page

**Alert Rules** in the sidebar lists every rule in the workspace as a card.

![The Alert Rules page listing rule cards tinted by severity with their channel and enable switches](/assets/images/product/alerts-rules.png)

Alert Rules. Each card is tinted by severity and shows its channel and an on/off switch.

*   **Card.** Tinted red (**danger**), amber (**warning**), blue (**info**) or green (**success**), with the severity as a pill, the rule name, its description, and the channel it delivers to (or **Dashboard only**).
*   **Switch.** On the right of each card. Off means the rule is not evaluated at all; nothing is recorded while it is off.
*   **Menu.** **Delete**, which removes the rule and its history immediately, with no confirmation.
*   **Search** (“Search alert rules…”) matches name and description. **Severity** filter: **All**, **Danger**, **Warning**, **Info**, **Success**, each with a count. **Sort** by **Last Updated** (default) or **Name**.
*   **Folders and bulk actions.** Folders as on other list pages; select several cards to **Delete** them together (with a confirmation) or move them to a folder.
*   **New alert rule.** The primary button.

Click a card to open the rule for viewing and editing.

## Creating a rule

You do not fill in a form of fields. You describe the rule, or pick a quick-start, and Jsonify proposes the dataset, trigger, name and severity for you to confirm.

![The New alert rule dialog with four Quick start chips, the description box and the Send to channel selector](/assets/images/product/alerts-new-rule.png)

Step 1. Pick a quick start or describe the rule in a sentence.

1.  **Start.** Press **New alert rule**. Under **Quick start**, four chips: **A pipeline run fails** and **A pipeline run completes** skip straight to confirmation; **New rows appear** and **A value changes** pre-fill the description box for you to finish (“Alert me when new rows appear in …”).
2.  **Or describe it yourself.** Type a sentence, for example “alert me when any product drops below $100” or “tell me when the availability column changes”. Name the dataset and column if you know them; the more specific, the less you will need to refine.
3.  **Send to.** Choose a channel: **Dashboard only (no channel)**, or any live notification integration in the workspace, shown as “Slack (slack)”, “Email notifications (email)” and so on. If there is exactly one, it is pre-selected. **\+ Add integration** takes you to Integrations. Whatever you choose, every fire also appears in the bell.
4.  **Build alert rule.** (Cmd/Ctrl+Enter also works.) Jsonify reads your datasets’ columns and pipelines and proposes a rule.
5.  **Confirm.** The proposal shows an explanation, then **Name**, **Description**, **Severity** (editable pill), **Dataset** with a **Worksheet** selector or **Pipeline** (for run rules, **All pipelines in this workspace** or one), **Channel**, and **Trigger** in words. Adjust the pills and selectors, or press **Refine** to go back and reword. Press **Create alert rule**.

If the description was not enough to pick a dataset, the confirmation says “Needs a dataset — refine your description” and the create button stays disabled until you do. Any Slack or email mentioned in the sentence is ignored; the channel is always the **Send to** choice.

> Warn me when the current price of any product in Live product offers changes by more than 15%

> Proposal: name “Price change over 15%”, severity warning, dataset Live product offers, worksheet main, trigger “When current\_price changes by more than 15%”. Press **Create alert rule**.

## Condition types

Six kinds of trigger. Data conditions compare the newest version of one worksheet with the version before it, each time a new version is published. Run conditions look at each finished live run.

| Trigger (as shown) | Fires when | Example sentence |
| --- | --- | --- |
| When new rows appear | At least one row is in the new version that was not in the previous one. | “Tell me when new products are discovered in Live product offers.” |
| When rows disappear | At least one row from the previous version is missing from the new one. | “Alert me if any venue drops out of the restaurants dataset.” |
| When {column} changes (optionally by more than N%) | For rows present in both versions, the value in that column differs. With a threshold, only numeric moves of at least that percentage count. | “Warn me when current_price changes by more than 10%.” |
| When {column} {is / is not / above / below / contains} {value} | Any row in the new version matches the comparison. It looks at the new version alone, so it fires again on every version while any row still matches. | “Alert me when availability is Out of stock.” or “…when review_score is below 3.” |
| Fuzzy match: {your words} | A judgement call made from your description over a sample of the old and new rows, for conditions that cannot be expressed as a column and a threshold. Use it sparingly; it is slower and less predictable. | “Let me know if the new rows look like they contain test or placeholder products.” |
| When a run fails / succeeds / finishes (optionally scheduled runs only) | A live run of the chosen pipeline (or any pipeline in the workspace) ends in that state. | “Ping me when Price & promotion tracking fails.” |

How rows are matched between versions: by the dataset’s key columns when the pipeline set them (for example `product_id`); otherwise a row is matched on all of its values, so a change to any cell looks like one row removed and one added.

> A dataset’s very first version has nothing to compare with, so **new rows** fires for every row and **rows disappear** and **changes** cannot fire until the second version.

Run rules ignore Jason’s test runs and repair checks; only live runs of the pipeline count. Rules evaluate only when a new version is written or a run finishes, never on a timer, so a pipeline that has not run produces no alerts.

## Channels

A rule delivers to at most one channel. Channels are notification integrations, set up on the Integrations page and listed in the rule’s **Send to** / **Channel** selector once they are live.

| Channel | What arrives | Set up |
| --- | --- | --- |
| Dashboard only | Nothing is sent. The fire is recorded and shown in the bell and Alerts history. | Nothing to set up. |
| Slack | One message with an emoji for the severity, the rule name in bold, and the reason, plus a link to the run for run rules. | An incoming webhook URL. See Slack and email. |
| Email | Subject “[Jsonify] {rule name}”, the reason, and a View run or View notification button. | A recipient address. Every workspace starts with an Email notifications channel addressed to its owner. |
| Webhook | A POST to your address with the title, body, reason, severity and the rows or run that triggered it. | A target URL. See Sheets, warehouses and webhooks. |
| Browser push | A notification on every browser you have enabled, even with Jsonify closed. Bound to the person who created it. | Enable on this device on the Integrations page. See Alert history and notifications. |

Whatever the channel, every fire is kept in the workspace history. See [Alert history and notifications](https://www.jsonify.com/docs/alerts/history).

## Severity

| Severity | Colour | Use for |
| --- | --- | --- |
| danger | Red | Something is wrong: a run failed, stock is out, a price crossed a critical line. |
| warning | Amber | Worth a look soon. |
| info | Blue | For your information. |
| success | Green | Good news: a run completed, new opportunities appeared. |

Severity is proposed from the wording of your description and can be changed on the confirmation step or later. It colours the card, the history row, and the emoji in Slack. Rules can also be grouped into folders on the Alert Rules page.

## Viewing and editing a rule

Click a card. The dialog has an **Edit** tab and a **History** tab, and a footer with an **Enabled** switch, **Send test** and **Close**.

**Edit tab.** Each setting saves as soon as you change it:

*   **Alert rule.** The description, with an **Edit** link. Editing works like creation: say what should change (“change the threshold to 20%”, “watch the offers worksheet instead”) and press **Preview changes**; fields you did not mention are kept. Confirm with **Save changes**.
*   **Severity.** The pill selector.
*   **Channel.** **None — dashboard only** or a live notification integration.
*   **Pipeline** (run rules). **All pipelines in this workspace** or one pipeline.
*   **Dataset** and **Worksheet** (data rules). The dataset is a link; change it through the description edit. The worksheet is a selector.
*   **Trigger.** The condition in words, read-only.

**History tab.** The last 20 evaluations of this rule: **Triggered** or **Evaluated — no trigger**, the delivery status (**sent**, **failed**, or grey for skipped and dashboard-only), the reason, a **View run** link where there is one, and “Delivery error: …” if the channel rejected it.

![A rule dialog open on the History tab listing recent evaluations with Triggered labels and reasons](/assets/images/product/alerts-rule-history.png)

A rule's History tab. Dry run adds an entry without sending anything.

*   **Dry run.** Evaluates the rule now against the latest data (or the last finished run) and records the result with a “\[test\]” prefix, without delivering. Use it to check a threshold.
*   **Send test.** Evaluates and then delivers through the channel regardless of the result, with the title prefixed “\[Test\]”. Disabled when the rule has no channel.

## Enable, disable and delete

*   **Switch on a card or in the dialog footer.** Off stops evaluation; no history is written while off. Turn a rule off rather than deleting it if you might want it back.
*   **Delete** from the card menu removes the rule and its history at once, with no confirmation. Bulk delete from a selection asks first.

> There is no cooldown or de-duplication. A rule fires on every version or run that meets its condition: a “value below” rule fires on every publish while any row is still below the line, and a “run fails” rule fires on every consecutive failure. If a rule is too noisy, raise its threshold, narrow it to one pipeline, or switch it to a change-based trigger, which only fires when something moves.

## Alerts and Jason

Jason can create, change and test rules from chat, and will offer one when you ask a question you seem to want answered regularly. “Set up the same price-drop rule for the Inventory signals dataset” works. Rules are also shareable resources; a shared rule shows its name and description only. See [Sharing](https://www.jsonify.com/docs/datasets/sharing).

## What’s next

[**Alert history and notifications**

Where fires go, the bell, push and email.

](https://www.jsonify.com/docs/alerts/history)[**Tutorial: Slack price alert**

Connect Slack and see the first alert land.

](https://www.jsonify.com/docs/tutorials/slack-price-alert)[**Slack and email**

Set up the channels rules deliver to.

](https://www.jsonify.com/docs/integrations/slack-and-email)[**Verification and repair**

What a failed run means and what happens next.

](https://www.jsonify.com/docs/runs/verification-and-repair)

[PreviousNewsletters](https://www.jsonify.com/docs/analytics/newsletters) [NextAlert history and notifications](https://www.jsonify.com/docs/alerts/history)

Something missing or wrong? [Tell us](https://www.jsonify.com/contact).[Build it →](https://factory.jsonify.com/setup)

## On this page
