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.

How alerts are deliveredWhen a dataset publishes or a run finishes, each alert rule checks its condition. A match fires one alert, which is always kept in Local Notifications with its matching rows. The rule can also send it to one destination: a message to Slack, email, a webhook or browser notifications, or rows to an output such as Google Sheets, a warehouse table, S3 or a webhook.Dataset publishesor a run finishesAlert rulewatches one dataset or pipelineFireskept with its matching rowsLocal Notificationsevery fire: bell + NotificationsA messageSlack · email · webhook · browserOr rows to an outputSheets · warehouse · S3 · webhookmatchesone destination
A rule is checked when a dataset gets a new version or a run finishes. Each fire is kept in Jsonify and sent to the rule's one destination.

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.

The Rules tab of the Integrations page with rule cards, each showing what it watches, where it sends and an on/off switch
The Rules tab. Each card shows what the rule watches, where it sends, and a switch.

Each card shows:

  • Icons. What the rule watches, then where it sends. A run rule on one pipeline shows that pipeline’s icon, linking to it; other rules show a pipeline or dataset symbol. The destination is the integration’s logo, or a bell for Local Notifications only.
  • Name and trigger. The rule’s name, and its trigger in words as the subtitle: “When a run fails”, “When current_price changes by more than 10%”.
  • Footer. The watched pipeline’s name, “Every pipeline” for a run rule on the whole workspace, or the dataset’s name.
  • Switch. On the right. Off means the rule is not checked at all and nothing is recorded while it is off.
  • Menu. Delete, which removes the rule and its history at once, with no confirmation.

Click a card to open the rule’s page. Above the cards:

  • View alerts. Opens Notifications, every fire in the workspace.
  • New rule. The primary button. An Add rule tile at the end of the cards does the same.
  • Search alert rules… Matches the name and description.
  • Type. All, Pipeline runs, Data changes or Urgent, each with a count.
  • Sort. 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.

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.

The New alert rule dialog with five Quick start chips, the description box and the Send to selector
Step 1. Pick a quick start or describe the rule in a sentence.
  1. Start. Press New rule. The dialog is titled New alert rule.
  2. 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 …”.
  3. 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.
  4. 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.”
  5. Build alert rule. (Cmd/Ctrl+Enter also works.) Jsonify reads your datasets’ columns and your pipelines and proposes a rule.
  6. 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
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.

A rule's Settings tab with On, Watches, Fires when, Sends to destination cards, Rows and Tab fields
The Settings tab of a rule that sends rows to Google Sheets. Every change saves as you make it.

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.

A rule's Test tab with Would it fire and Check now, and See the message with Send test message
The Test tab. Check now sends nothing; the second button does.
  • Would it fire? Check now checks the rule against the latest data, or the last finished run for a run rule. “Nothing is sent.” The answer reads “Yes — it would fire.” or “No — it would not fire.” with the reason, and See the N matching rows opens the rows.
  • See the message (notification destinations). Send test message sends a message marked [Test] to the destination right now, whether or not the rule would fire.
  • See the rows (outputs). Send rows now writes the rows the rule would send, right now, if it would fire. Otherwise “The rule wouldn’t fire right now, so no rows were sent.”

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:

  • Fired or Checked, didn’t fire, and a Test badge for tests.
  • sent or failed when it fired.
  • The reason, and “Delivery error:” with the destination’s answer when it failed.
  • How long ago.

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 rule's History tab listing checks with Fired labels, sent badges and reasons
A rule's History tab. Each entry opens the notification it sent.

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

  • The switch on a card, or On in Settings. Off stops checking; no history is written while off. Turn a rule off rather than deleting it if you might want it back.
  • Delete from a card’s menu removes the rule and its history at once, with no confirmation. Bulk delete and the Delete tab ask 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 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.

What’s next

Connect your data assistant

Build datasets and work with your data in Claude, ChatGPT, Copilot or another assistant.

Connect in Claude

  1. Open the Jsonify connector: Open on Claude.ai ↗
  2. Select Connect and sign in to Jsonify.
  3. In a chat, enable Jsonify under + → Connectors and describe the data you need.
Advanced

Team or Enterprise account? Your workspace owner enables Jsonify once for everyone from Admin settings → Connectors. Jsonify is a community connector in the directory — some admins allow those by default, some review them first.

No directory? Add it by hand: Settings → Connectors → + Add custom connector, name it Jsonify, paste the server URL below, then Connect.

Server URLhttps://factory.jsonify.com/mcp

Official Claude custom-connector guide ↗

Then say: “build me a dataset of competitor product prices and availability, refreshed daily”. Full instructions per client on /connect.