---
title: "Row detail and provenance"
description: "Open any row to see its values, edit them, and trace each one back through the run, the step and the fetch to the page it came from."
url: "https://www.jsonify.com/docs/datasets/provenance"
---

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

# Row detail and provenance

Open any row to see its values, edit them, and trace each one back through the run, the step and the fetch to the page it came from.

Every row a pipeline publishes carries a record of how it was made. Open a row and you can see the values, the run and step that produced them, the pages that were fetched, and what those pages looked like at the time.

Every row links to the run that produced it, the step inside that run, the fetch of the source page, and the captured page itself.

The provenance chain. Each link is recorded by the workers as the run happens; nothing is reconstructed afterwards.

## Opening a row

There are two views of a row.

*   **The row dialog.** Click any row in the dataset grid. It opens over the grid with **Previous row** and **Next row** buttons (Left and Right arrow keys) that step through the rows on the current page, and a link back to the dataset. Escape closes it.
*   **The row page.** Press **Open in full page** in the dialog, or follow a link to a row from search, an alert or a colleague. It has its own address (`/datasets/{dataset}/rows/{row}`) and is the only place you can edit values.

![A row page showing the row id in the header, the Copy link and View actions, and the Data tab with field values](/assets/images/product/datasets-row-page.png)

The row page. Tabs are Data, then Provenance or Origin, then Activity, each with a count.

The header shows the row’s short id, the breadcrumb trail back to the dataset and version, and two actions:

*   **Copy link.** Copies the page address, including the worksheet and version, to your clipboard. The label flips to **Copied** for a moment.
*   **View.** A menu with **Full dataset** (the dataset page at this worksheet and version) and **Pipeline run** (the run that produced this version; disabled for uploaded and example datasets).

## The Data tab

Every field of the row as a label and value. Empty fields are hidden by default with a note such as “4 empty fields hidden” and a **Show empty fields** toggle. Values are rendered the same way as the grid, expanded: nested records as indented blocks, lists of records as an inner table (three rows, then **Show all**), images and videos as galleries.

### Editing a value

On the row page, hover a value and it reads **Click to edit**.

1.  **Click the value.** It becomes a text box (a number box for numeric, currency and percentage columns).
2.  **Type the new value.** Enter or clicking elsewhere saves; Escape cancels.
3.  **Check the toast.** A rejected value shows why, for example “abc” is not a valid number. Blank saves as empty.

Numbers are cleaned as you save: currency symbols, thousands separators and `%` are stripped, so “$1,299.00” is stored as 1299. Booleans accept true, yes or 1.

Each save writes a new dataset version with your change and makes it active, leaving the previous version intact. See [Versions](https://www.jsonify.com/docs/datasets/versions). Values cannot be edited in the grid or in the row dialog.

> Edits to a pipeline-produced dataset last until the next run publishes. If a value is wrong because the source is read wrongly, ask Jason to fix the pipeline so every future row is right.

## The Provenance tab

For datasets produced by a pipeline or ingested from an integration, the second tab is **Provenance**. It has two parts.

**Attributed source.** The website the row came from, with its favicon, and up to four link pills for any URL columns on the row (`source_url`, `url`, `menu_url` and similar). Click a pill to open the page on the source site in a new tab. This is how you “view source” for a row.

**Timeline.** The events that produced the row, grouped by pipeline step, newest last. Each event is a card with a label, the site it touched, how long it took and a short detail line:

| Event | What it records |
| --- | --- |
| Page Fetch | The page address, the HTTP status, the size of what came back, and whether it was served fresh or reused from the cache. |
| Data Extraction | How many rows and which fields were extracted from that page. |
| Source Evidence | A snippet of the page content that supports a value. |
| API Call | A request to a site’s own data endpoint, with its status and size. |
| Browser Action | An action taken in a real browser session: a click, a scroll, a form entry. |
| Computer Use | A step where a browser agent navigated the page; includes a screenshot. |
| Web Search | The search query and how many results came back. |
| Delegated Agent | Work handed to a specialised collection agent for one source. |
| Step | A processing step with no fetch: matching, normalising, checking. |

Expand a card to see the full address, a **screenshot** of the page as it was when the step ran (where a browser was used), the fetched page content rendered as text (the first 5,000 characters, loaded on demand), and a **Raw detail** disclosure with everything recorded.

If the version you are viewing reused rows from an earlier run, the row’s provenance is resolved to the run that actually produced it, so the timeline is always the real one. When the timeline hides fetches that belonged to other rows in the same batch, a note reads “3 unrelated batch fetches hidden.”

Messages you may see: “No provenance data recorded for this row.” (the row was written without a run, for example by an upload into a pipeline dataset) and “No detailed provenance was recorded for this source.”

## The Origin tab

For datasets you uploaded and for example datasets, the second tab is **Origin** instead. It states where the rows came from: “This row was imported from products.csv.” for an upload, or a note that the row is example data and does not correspond to a real source.

## The Activity tab

A flat list of every fetch in the row’s provenance, one line each: “Fetched retailer.com/product/123”, “Reused retailer.com/… (cached 2h ago)” for cache hits, or “Tried …” for a failed attempt, with size and duration. Click a line to open the fetch: tabs for the **Rendered** page, the **Raw** response and the **Data** extracted from it, plus a chip per attempt when the page needed more than one try. Very large bodies show a “Stored preview only” banner.

When the row’s lineage is long, the tab shows the most recent related fetches and says so.

> Provenance is kept for as long as the dataset version is retained. See [Data retention](https://www.jsonify.com/docs/workspace/data-retention).

## Using provenance

A few things provenance is good for:

*   **Checking a surprising value.** Open the row, expand the fetch, look at the screenshot. Either the site really said that, or the pipeline read it wrongly. If the latter, select the row and tell Jason.
*   **Auditing a report.** Share links include provenance, so a reader of a shared dataset can click through to the source page for any row. See [Sharing](https://www.jsonify.com/docs/datasets/sharing).
*   **Explaining a change.** A `column_changed` alert links to the row; the row links to the fetch that observed the new value and the one before it.

> This row says the 65-inch TV is $62.49, which cannot be right. What happened?

> Jason opens the row’s provenance, finds that the page fetch returned a listing page rather than the product page, and offers to repair the pipeline so the step follows the product link before extracting. The previous version’s value is unaffected.

## Keyboard shortcuts

*   **Left / Right arrows** in the row dialog: previous and next row on the current page.
*   **Escape**: close the dialog, cancel an edit, close an image.
*   **Enter**: save an edit on the row page.

## What’s next

[**Run detail**

The run this row's version came from, step by step.

](https://www.jsonify.com/docs/runs/run-detail)[**Versions**

How an edit becomes a new version.

](https://www.jsonify.com/docs/datasets/versions)[**Verification and repair**

What happens when a source stops saying what the pipeline expects.

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

Provenance is visible on share links too.

](https://www.jsonify.com/docs/datasets/sharing)

[PreviousQuery and export](https://www.jsonify.com/docs/datasets/query-and-export) [NextSharing](https://www.jsonify.com/docs/datasets/sharing)

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

## On this page
