> ## Documentation Index
> Fetch the complete documentation index at: https://clearskies.cc/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Find record changes

> Read the field history on your accounts and deals: what changed, from what to what, when, and who did it.

**Find Record Changes** answers a different question than Find Records. Find Records tells you what a record looks like now. Find Record Changes tells you what happened to it, the close date that moved twice this month, the stage that slipped back, the owner who changed last week.

It selects records exactly the way [Find Records](/docs/workflows/find-and-filter-records) does, then returns those records' **changes** instead of the records themselves.

It's read-only. Like Find Records, it gathers data but doesn't take an action, so it doesn't satisfy a workflow's requirement to include at least one action step, pair it with a Slack message, an email, an agent, or a CRM write.

## Before you start

Change history is recorded going forward only. There is no backfill. A workspace that just turned this on has **no history until records start changing**, so a step that looks back 90 days will return nothing on day one and fill in from there. If a step comes back empty, this is usually why.

Only **accounts** and **deals** are history-tracked. Other object types have no change history to read.

## Build it

1. Add a **Find Record Changes** step anywhere after the trigger.
2. Choose the **object type**, **Account** or **Deal**.
3. Pick the records: describe them in plain language with **AI**, or select them precisely with **Logic** conditions, a list of record IDs, or external IDs. Set one, not several.
4. Set how many **records** to select, between **1 and 100**.
5. Optionally narrow what comes back: a **time period**, a single **field**, and a per-record **changes limit**.

## Field reference

| Setting | Required | What it does |
| :- | :- | :- |
| **Object type** | Yes | **Account** or **Deal**, the only history-tracked types |
| **Record limit** | Yes | How many records to select, **1–100**. This caps records, not changes |
| **Selection** | Yes | Exactly one of: an AI prompt, Logic conditions, record IDs, or external IDs |
| **Period** | No | The window to read. A relative token (for example, 30 days ago), a single absolute date meaning "changed since that date," or leave it off to mean "changed ever" |
| **Field** | No | Scope the step to one field's changes, close date only, stage only |
| **Changes limit** | No | Max changes read **per record**, **1–1000**. Defaults to **10** |
| **AI model** | No | Applies only when you're selecting records with an AI prompt; ignored otherwise |

## Using the results

The step returns **one row per change**, and each row carries:

| Field | What it holds |
| :- | :- |
| `recordId` | The record the change belongs to |
| `revisionId` | The revision this change was recorded in |
| `field` | The field that changed |
| `fieldSource` | Where that field comes from |
| `oldValue` | The value before |
| `newValue` | The value after |
| `changedAt` | When it changed |
| `actor` | Who changed it |
| `source` | What made the change |

Reference the rows as `{{<step-id>.changes}}`, feed that into a [loop](/docs/workflows/loops) to act on each change. Two more values come with it: `{{<step-id>.count}}`, the number of changes returned, and `{{<step-id>.truncated}}`, which is true when a limit dropped rows. Check `truncated` before you describe a result as complete; if it's true, raise the changes limit or narrow the period.

## In practice

A Monday-morning schedule selects every open deal closing this quarter, then a **Find Record Changes** step scoped to the **close date** field over the last 30 days pulls every date move. A loop posts one Slack line per slip: deal, old date, new date, who moved it. Nobody has to open a report to see which dates are drifting.

## Beyond workflows

The same change history is available from Claude or ChatGPT through the `find_record_changes` tool on the [Clearskies MCP server](/docs/building-with-clearskies/mcp-server), so you can ask what moved on an account in conversation instead of building a workflow for it.

## Related

* [Find & filter records](/docs/workflows/find-and-filter-records), the same record selection, returning current records instead of changes
* [Loops](/docs/workflows/loops), act on every change the step returned
* [Workflows overview](/docs/workflows/overview), how steps fit together in a run

Questions? We're here to help at [support@clearskies.cc](mailto:support@clearskies.cc)
