Alert rules
Rules decide when something is sent and where. Watch a pipeline's runs or a dataset, send a message or rows to one destination, test the rule, and read its history.
An alert rule watches a pipeline’s runs or a dataset and fires when its condition is met: a run failed, new rows appeared, a price moved by more than 10%, the dataset updated. Every fire is kept in Jsonify, in Notifications and the bell. A rule can also send each fire to one destination: a message to Slack, email, a webhook or your browser, or rows to an output such as Google Sheets or a warehouse table.
The Rules tab
Rules live on the Rules tab of the Integrations page, next to Inputs, Outputs and AI. The tab shows how many rules the workspace has.
Each card shows:
Click a card to open the rule’s page. Above the cards:
A workspace with no rules shows “No rules yet. Rules decide when to send: a message when a run fails or data changes, or rows to an output like Google Sheets.” with a Create rule button.
Creating a rule
You do not fill in a form. You pick a quick start or describe the rule, and Jsonify proposes the dataset or pipeline, the trigger and a name for you to confirm.
- Start. Press New rule. The dialog is titled New alert rule.
- Pick a quick start. Five chips. A pipeline run fails, A pipeline run completes and Every update go straight to the confirmation step. New rows appear and A value changes fill in the description box for you to finish: “Alert me when new rows appear in …”.
- Or describe it yourself. Type a sentence under Or describe it yourself, for example “alert me when any product drops below $100”. “Describe it in plain English. We’ll pick the dataset and trigger for you — you confirm before saving.” Name the dataset and column if you know them.
- Send to. Choose where fires go: Local Notifications only, or any live notification integration or output, listed as “Slack #pricing-alerts (slack)” and, for outputs that take rows, “Market watch (google-sheets) · rows”. If there is exactly one, it is chosen for you. + Add integration opens the Outputs tab. “Every fire also shows in Local Notifications, the top-right notifications dropdown.”
- Build alert rule. (Cmd/Ctrl+Enter also works.) Jsonify reads your datasets’ columns and your pipelines and proposes a rule.
- Confirm. Check the proposal, adjust it, and press Create alert rule. The rule’s page opens. Refine goes back to reword.
The confirmation step shows, in order:
| Field | Shown for | What it is |
|---|---|---|
| Explanation | Every rule | One or two sentences saying what the rule will do |
| Name | Every rule | The rule’s name. It also names the tab or table its rows land in |
| Description | Every rule | What the rule is for |
| Pipeline | Run rules | All pipelines in this workspace, or one pipeline |
| Dataset | Data rules | The dataset to watch |
| Worksheet | Data rules | Which worksheet. Every update rules also offer All worksheets |
| Send to | Every rule | As in step 4 |
| Rows | Rules sending to an output | The write mode. Default: Add new rows to the bottom for new-rows rules, Keep it matching otherwise |
| Tab, Table, Object name or Destination | Rules sending to an output | Where the rows land. Blank uses the rule’s name |
| Urgent | Data rules | Normal (default) or Urgent. See Urgent |
| Trigger | Every rule | The condition in words |
If the description was not enough to pick a dataset, the step says “Missing required details. Choose a dataset, or refine your description.” and Create alert rule stays disabled until you choose one. Any Slack channel or email address in the sentence is ignored; the destination is always the Send to choice.
The same dialog opens from an integration’s Rules tab, with that integration already chosen, and from a pipeline’s Integrations tab, where the rule is scoped to that pipeline and the run chips read A run fails and A run completes.
Warn me when the current price of any product in Live product offers changes by more than 15%
Proposal: name “Price change over 15%”, dataset Live product offers, worksheet main, trigger “When current_price changes by more than 15%”. Press Create alert rule.
Triggers
Data triggers compare the newest version of one worksheet with the version before it, each time a new version is published. Run triggers look at each finished live run.
| Trigger (as shown) | Fires when | Example sentence |
|---|---|---|
| Every time the dataset updates | On every new version, whatever changed. Sent to an output, it keeps a copy of the whole dataset there | “Keep my sheet in sync with Retail prices.” |
| 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 / is more than / is at least / is less than / is at most / contains} {value} | Any row in the new version matches. 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.” |
| When {your words} | A judgement made from your description over the old and new rows, for conditions a column and a threshold cannot express. Slower and less predictable; use it sparingly | “Let me know if the new rows look like test or placeholder products.” |
| When a run fails / succeeds / finishes (optionally scheduled runs only) | A live run of the chosen pipeline, or of any pipeline in the workspace, ends that way | “Ping me when Price & promotion tracking fails.” |
| When a run returns far fewer rows than usual | A run completed with fewer than half the rows of its recent runs | “Tell me if the price tracker’s run comes back much smaller than usual.” |
How rows are matched between versions: by the dataset’s key columns when they are set (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.
Far fewer rows than usual compares the run with the median of the pipeline’s last seven completed runs. It needs at least three earlier runs with a median of ten rows or more, and it ignores runs capped at ten rows or fewer. It watches completed runs only, because a failed run has its own trigger. The New alert rule dialog does not offer it; ask Jason in a conversation, for example “Tell me in Slack if a run of Price & promotion tracking returns far fewer rows than usual.”
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 count. Rules are checked when a new version is written or a run finishes, never on a timer, so a pipeline that has not run produces no alerts.
Destinations
A rule sends to one destination, or to none. Whatever you choose, every fire also appears in Local Notifications: the bell and the Notifications page.
| Destination | What arrives | Set up |
|---|---|---|
| Local Notifications only | Nothing is sent anywhere else | Nothing to set up |
| Slack alerts | One message with an emoji, the rule name in bold, the reason, links to what a run produced, and View notification | An incoming webhook URL. See Slack and email |
| Subject “[Jsonify] {rule name}”, the reason, the matching rows or the run’s datasets as Excel files, and a View notification button | A recipient address. Every workspace starts with an Email notifications integration addressed to its owner | |
| Alert webhook | A POST to your URL with the title, reason, severity and the rows or run that caused it | A target URL. See Alert webhooks |
| Browser notifications | A notification on every browser you have enabled, even with Jsonify closed. Bound to the person who created it | Enable on this device. See Browser notifications |
| An output (Google Sheets, Snowflake, BigQuery, Postgres, MySQL, S3, webhook output) | Rows, not a message: the whole dataset for Every update, what a run published for a run rule, or the matching rows | See Sheets, warehouses and webhooks |
Urgent
Data rules have an Urgent switch. An urgent rule’s messages stand out: red in Jsonify and in emails, and 🚨 (:rotating_light:) on Slack. “It doesn’t change when the rule fires.” Urgency is proposed from your wording (“critical”, “stock out”, “immediately”) and can be changed at any time.
Run rules have no switch. Their messages take their look from what the run did:
| Run outcome | Email header | Slack |
|---|---|---|
| Failed | “Run failed”, red | :rotating_light: |
| Succeeded | “Run succeeded”, green | :white_check_mark: |
| Completed with far fewer rows than usual | “Run succeeded” | :warning: |
| Cancelled | “Run cancelled”, grey | :bell: |
In Notifications, run alerts are marked red for a failed run, amber for a cancelled one and green for a completed one.
The rule page
Click a card to open the rule. Its address is /notifications/<rule id>, and each tab has its own address.
The header shows the rule’s name (click to rename it), a Paused pill when it is off, the trigger in words, an arrow to where it sends (the integration, or Local Notifications), and “Last fired 2h ago” or “Not fired yet”. Below it are four tabs: Settings, Test, History and Delete.
Settings
Each setting saves as soon as you change it.
| Setting | What it does |
|---|---|
| On | On or Paused. “The rule is checked after every run or data update.” / “Paused: the rule isn’t checked and nothing is sent.” |
| Watches | The pipeline (run rules), or the worksheet and dataset (data rules). Click to change: pick Every pipeline in this workspace or one pipeline, or a dataset and, when it has several, a worksheet. Save or Cancel. If the dataset has no column the trigger needs, it warns: “… has no “price” column, so this rule won’t match.” |
| Fires when | The trigger and the description. Click to edit either in your own words, then press Preview. You see Before and After; press Save to keep the new trigger (“Alert rule updated”) or Back to keep editing |
| Sends to | A card for every notification integration and output. Click one to choose it; the chevron opens that integration. A card reading Needs setup has not been set up yet. Add integration (“Email, Slack, webhook…”) asks Jason to connect a new message service and point this rule at it. Local Notifications (“The top-right notifications dropdown”) sends nowhere else |
| Rows | Outputs only. The write mode. The help says what is sent: “Every dataset the run published, each into its own tab.”, “The whole dataset, each worksheet into its own tab.” or “The rows that matched, into a tab named after this rule.” |
| Tab, Table, Object name or Destination | Outputs only. “Where the rows land. Blank uses the rule’s name.” Saved when you leave the field |
| Urgent | Data rules only. See Urgent |
Test
Try the rule without waiting for the next run or update.
The result reads “Sent to Slack #pricing-alerts.” or “Not sent:” with the reason. Both buttons need a destination; without one the tab says “Pick where this rule sends in Settings first.” Tests also appear in History, marked Test.
History
“Every time this rule was checked, newest first, and whether a message went out.” The last 50 checks, each with:
Refresh reloads the list. Click an entry to open its notification page: the rows that matched, where it was sent and, for a run, what the run produced. See One notification.
A new rule’s History reads “Not checked yet. Entries appear after the next pipeline run or dataset update.”
Delete
Delete alert rule asks you to confirm. “Removes it permanently. Nothing more will be sent to Slack #pricing-alerts. Its history is deleted too.”
Enable, disable and delete
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 a conversation, and offers 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, and so does “Keep a Google Sheet in sync with Retail prices”, which gives you a Sheets output and an Every update rule in one go.