---
title: "Changing a pipeline"
description: "How to ask Jason for a change, what happens between your request and the new active version, how to check it, and how to go back."
url: "https://www.jsonify.com/docs/jason/changing-a-pipeline"
---

[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/)/Jason

# Changing a pipeline

How to ask Jason for a change, what happens between your request and the new active version, how to check it, and how to go back.

A pipeline is never edited in place. Every change you ask for becomes a new version that is built, verified on real data, reviewed independently and then activated. The previous version stays in the history. This page shows how to ask, what to expect back, and how to check the result.

A change request or repair produces a candidate version that is built and tested, then independently reviewed. Only an approved candidate is activated; earlier versions are kept and later runs use the new one.

Your request produces a candidate. Only a candidate that passes verification and review becomes the active version.

## Three ways to ask

### From the pipeline page

**Edit pipeline** in the pipeline’s header opens a dialog with one box (**What should change? Jason picks it up straight away.**), **Attach**, and a row of suggestion pills based on the pipeline’s specification and last run. Press **Send to Jason** (or ⌘↵). A new chat scoped to this pipeline opens in the Jason panel and the request is sent immediately.

### From a chat

In any chat, mention the pipeline with `@` so there is no ambiguity about which one you mean, then describe the change. This is the right route when the change involves more than one pipeline or a dataset.

> @inventory-monitoring should also read the “Only 3 left” badge into a low\_stock flag. @product-identity-matching then needs to carry that flag through to the matched rows.

### From the statement of work

On the pipeline’s **Statement of Work**, select any passage and a small floater offers to comment. Type the change in the box (**Describe the change you want…**) and add it. Comments collect in the right margin as anchored cards you can reply to or dismiss. When you are done, the amber bar at the top reads **N pending changes** with **Commit (N)**; committing sends the whole batch to Jason as one request, so related changes land in one version.

> Selected: “One row per product per retailer per day.” Comment: “Change to one row per product per retailer per _observation_; we want to run twice a day from next week.”

## What Jason does

1.  **Reads the request** together with the pipeline’s specification, steps, inputs, recent runs and the chat so far. If anything is ambiguous, Jason asks before changing anything (see [questions](https://www.jsonify.com/docs/jason/changing-a-pipeline#what-jason-asks-instead-of-guessing)).
2.  **Builds a candidate version.** The transcript shows **Start pipeline change** and **Edit pipeline**, followed by the pages Jason fetches to check its assumptions.
3.  **Verifies it.** **Test candidate** runs the candidate against real sources. The status row reads **Testing candidate**; the run appears under **Latest runs** as a **Test run**, and publishes nothing.
4.  **Sends it for review.** An independent reviewer compares the candidate’s output with the statement of work. Its card shows **Passed**, **Failed** or **Needs evidence**, with **View report**.
5.  **Activates it.** A passed candidate becomes the current version. The step diagram embeds in the chat as **Pipeline — name · vN**, and the reply ends with a **Task completed** card.

If the reviewer rejects the candidate, Jason revises it and tries again. If it cannot produce a version that passes, it says so and explains what it found instead of activating something unverified.

> Candidate tests can take up to an hour on a large pipeline because they collect real pages. After 30 seconds the chat offers **Notify me** so you do not have to wait on the page.

## What you get back

| Item | Where |
| --- | --- |
| A new version | The version chip in the pipeline header increments, for example v2 → v3. Earlier versions remain in the chip’s menu. |
| A changelog entry | Changelog & Notes on the pipeline page records what changed and why, in Jason’s words. |
| A verification run | The Test run that validated the candidate, in Runs and on Latest runs. Its outputs show what the new version produces without touching the published dataset. |
| A reviewer report | The Pipeline reviewer card in the chat, with findings and Activated as pipeline version N. |
| An updated statement of work | The Statement of Work reflects the new scope, fields and rules. |

The next scheduled or manual run uses the new version and publishes a new [dataset version](https://www.jsonify.com/docs/datasets/versions).

## Good change requests

Be concrete about the outcome; leave the mechanics to Jason. Some shapes that work well:

**A new field**

> Add a `unit_price` column: the price per 100g or per 100ml as the retailer displays it, as a number, blank when the site does not show one.

**A source added or removed**

> Add Waitrose as a fourth retailer for the same product list. Drop Ocado; we no longer stock against them.

**A schedule**

> Run twice a day, 06:00 and 18:00 Europe/London, instead of once. Keep the daily rollup pipeline on its current schedule.

**A matching rule**

> When matching our SKUs to retailer products, require the pack size to match as well as the brand and name. A 6-pack and a 12-pack are different products.

**A threshold or check**

> Hold any row where the price is more than 40% below the previous observation for the same product, and flag it in the run instead of publishing it.

**A format**

> Store all prices in pence as whole numbers and add a `currency` column set to GBP.

Attach an example when you have one: a row showing the value you expect, or a screenshot of the badge you want captured.

## What Jason asks instead of guessing

Some requests have more than one reasonable reading. Jason pauses with a question card rather than pick one silently:

| You ask | Jason asks |
| --- | --- |
| “Add the discount” | Whether you want the percentage, the amount off, or the promotional text as shown. |
| “Include out-of-stock products” | Whether to publish them with a blank price, a status column, or hold them separately. |
| “Match by name” | How strict: exact, normalised (case and punctuation), or fuzzy with a threshold. |
| “Run more often” | The cadence and time zone. |
| “Use the new site” | Which fields, if any, should change when the new site shows different ones. |
| “Prices per unit instead of per pack” | Whether to replace the existing price column or add a second one, since dashboards depend on the first. |

A short, specific answer gets the change moving again. Details of the question card are on [Chatting with Jason](https://www.jsonify.com/docs/jason/chat#questions-jason-asks).

> A request that would remove data other things rely on — a column a dashboard reads, a dataset another pipeline consumes — gets a question, not a silent removal.

## Checking the change

1.  **Open the version chip** in the pipeline header. The menu lists every version with its source (**build**, **edit**, **Auto-heal**), the **current** marker and when it was activated. See [Versions and changelog](https://www.jsonify.com/docs/pipelines/versions).
2.  **Read the changelog.** **Changelog & Notes** describes each version. Compare the note with what you asked for.
3.  **Check the verification run.** In **Runs**, open the **Test run** from the change. **Outputs** shows the rows the new version produced; **Steps** shows what changed in the flow.
4.  **Look at the latest outputs.** After the next live run, **Latest outputs** on the pipeline page and the dataset itself show the change in published data. A new column should be present and typed; a removed source should be absent from the row’s origin.
5.  **Watch the next scheduled run.** If the change affects volume, the [row-count check](https://www.jsonify.com/docs/runs/verification-and-repair) compares it with previous runs before publishing.

## Undoing a change

Every version is kept, and restoring is itself a change:

1.  **Open the version chip** and click the version you want to go back to. The statement of work and steps switch to that version, and an amber bar reads **Viewing vN · current is vM**.
2.  **Press Restore vN.** Jason receives a request to reproduce that version’s behaviour as a new current version, verifies it and has it reviewed like any other change.
3.  **Confirm in the chat.** The toast reads **Jason is restoring version vN**; the panel opens on the restore chat.

Restoring never rewrites history. If the current version is v5 and you restore v3, you get v6 that behaves like v3, and v4 and v5 remain in the list. If Jason is already working on the pipeline, the restore waits until that turn finishes.

> A restore is a pipeline change, not a dataset change. Published dataset versions are not rolled back; the next run of the restored version publishes a new one. To read older rows, switch the dataset version instead. See [Dataset versions](https://www.jsonify.com/docs/datasets/versions).

## Changes Jason makes on its own

Two kinds of version appear without a request from you:

*   **Auto-heal.** When a run fails persistently, Jason diagnoses it, repairs the pipeline as a new candidate, verifies and activates it, and resumes the run. The version’s source reads **Auto-heal**, and its changelog says what changed. See [Verification and repair](https://www.jsonify.com/docs/runs/verification-and-repair).
*   **Settings changes.** Turning the schedule on, changing the fetch cache or the automatic repair setting from the pipeline’s **Settings** does not create a version; those settings live beside the pipeline. See [Settings reference](https://www.jsonify.com/docs/pipelines/settings).

## What’s next

[**Versions and changelog**

Immutable revisions and viewing an older version.

](https://www.jsonify.com/docs/pipelines/versions)[**Statement of work and steps**

The contract every version is checked against.

](https://www.jsonify.com/docs/pipelines/statement-of-work)[**Verification and repair**

What is checked before anything is published.

](https://www.jsonify.com/docs/runs/verification-and-repair)[**Chatting with Jason**

Mentions, attachments and questions.

](https://www.jsonify.com/docs/jason/chat)

[PreviousChatting with Jason](https://www.jsonify.com/docs/jason/chat) [NextAgents, workers and repairs](https://www.jsonify.com/docs/data-agents)

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

## On this page
