CRM & AutomationPlaybook14 min readPublished August 15, 2026

Three field-history APIs · one audit pattern · human sign-off on every correction

Who Changed That Field? CRM History Audits with AI

Every major CRM already records who changed which field, when, and from what value to what. Zoho exposes it through a Timeline API, Salesforce through Field History Tracking and Field Audit Trail, HubSpot through property history on object reads. This guide turns that trail into scheduled accountability audits — an agent assembles the evidence, a human approves every fix.

DA
Digital Applied Team
Senior strategists · Published Aug 15, 2026
PublishedAug 15, 2026
Read time14 min
Sources10 vendor + independent docs
Zoho Audit Log retention
3yrs
fixed window · official docs
Salesforce Field Audit Trail
200
fields per object · primary docs
HubSpot change sources
50+
documented edit origins
Zoho audit-log export cap
1M
entries · CSV only

A CRM field-history audit answers a different question than data hygiene ever will: not “is this record clean?” but “who changed this field, when, and was the change legitimate?” Every major CRM already captures that evidence — Zoho in its Timeline API, Salesforce in Field History Tracking and the Field Audit Trail add-on, HubSpot in per-property change history. Most teams never query it until something has already gone wrong.

That is the waste this guide targets. A field-history API turns “who changed this and when” from a support ticket — someone noticing a broken record, someone else spelunking through the UI’s history panel — into a query an AI agent can run on a schedule. Pipeline stages that moved backwards, customer-facing fields used as internal scratchpads, owner reassignments nobody remembers approving: all of it sits in the change log, attributed to a named user with a timestamp and the before-and-after values.

This guide covers what each vendor’s history API actually records, the tracked-field limits and retention windows that constrain what an audit can see, a four-step audit pattern that generalizes across platforms, and a worked example — catching deals that moved backwards through pipeline stages — that keeps a human approving every correction.

Key takeaways
  1. 01
    Accountability auditing is a different job from hygiene.Dedupe and enrichment fix the state of a record today. A field-history audit reconstructs how it got that way and who did it — different APIs, different questions, different outputs.
  2. 02
    All three major CRMs expose the raw material.Zoho’s Timeline API returns who, what, when, old value, new value, and the change’s origin. Salesforce tracks field history natively and archives it via Field Audit Trail. HubSpot returns per-property history on object reads.
  3. 03
    Retention windows are uneven — and they are the constraint.Zoho’s system-wide Audit Log keeps a fixed 3 years, then deletes permanently. Salesforce’s standard field history runs roughly 18 months per third-party documentation; the paid Field Audit Trail extends up to 200 fields per object with configurable, potentially indefinite archival. HubSpot publishes no ceiling at all in the docs we checked.
  4. 04
    The audit pattern is: question, pull, reconcile, escalate.Define the rule you are enforcing, pull history via the API, reconcile each change against the rule, and escalate exceptions to a human with the evidence attached. The agent proposes; a person approves.
  5. 05
    No vendor ships the audit layer itself.None of the documentation we reviewed offers a turnkey “find backwards stage moves” or “find misused fields” feature. The history APIs are raw material — the audit logic on top is yours to build.

01ScopeAudits are not hygiene — and not agent observability either.

Three jobs get blurred together under “CRM data quality,” and the blur is expensive because each job needs different tooling. The first is data hygiene: deduplicating contacts, enriching missing fields, normalizing formats. It cares about the state of a record today and mostly ignores how the record got that way. We have covered that job in depth — the contact-management hygiene guide for the manual discipline, and the agent-run dedupe and enrichment pipeline for the automated version.

The second is agent observability: logging what your own AI agents did to the CRM, so their actions can be reviewed. That is the agent writing its own diary, and our agent audit-trail design guide covers it. The third job — this post — is forensic auditing of human edit history the CRM platform itself already captured: which person changed which field, when, from what value to what value. The evidence is generated passively by the platform whether or not you ever look at it.

The distinction matters operationally. A hygiene pipeline that merges two duplicate contacts destroys nothing you cannot reconstruct. An accountability audit is the opposite: its entire value is the reconstruction — proving a deal was demoted from a late stage to an early one, naming the user who did it, and checking whether anyone documented why. Hygiene tools do not answer that question, and hygiene metrics will not tell you it is happening.

A field-history API turns ‘who changed this and when’ from a support ticket into a query an agent can run on a schedule.— The working thesis of this guide

02The Raw MaterialWhat the field-history APIs actually record.

The good news for anyone building an audit: the per-change record is remarkably consistent across vendors. Each entry identifies the actor, the field, the timestamp, the before-and-after values, and — crucially for triage — the origin of the change: a human in the UI, an API call, a workflow rule, an import.

Zoho CRM’s v8 REST API carries a dedicated Timeline endpoint per record. Its response includes done_by (name, ID, and profile of whoever made the change), field_history entries with the field’s API name plus old and new values, an audited_time ISO 8601 timestamp, an action type such as updated, added, tag_added, or owner_assigned, and a source distinguishing the CRM UI from API calls and workflow automation. Pagination defaults to 200 entries per page with a page token for more, and the endpoint returns an empty 204 when no timeline data matches your filters. The same timeline also covers non-field events — tasks, calls, meetings, emails, notes, and attachments — so one endpoint can answer “was there a note near this change?” as well as “what changed?”

Salesforce splits the job in two. Standard Field History Tracking writes per-object history you can query; the paid Field Audit Trail — sold as part of Salesforce Shield or licensed separately — extends coverage and archives history into a FieldHistoryArchive Big Object under a configurable HistoryRetentionPolicy, documented on Salesforce’s own developer reference. HubSpot takes a third route: its CRM object read endpoints accept a parameter — documented as propertiesWithHistory in developer-community material and in third-party connector documentation — that returns each requested property’s change history alongside its current value. We could not fetch HubSpot’s own developer reference page for this endpoint at the time of writing, so treat exact parameter spelling and request shape as something to confirm against the live docs rather than copy from here. Per the third-party connector documentation that has to match the real API to function, each history entry carries the value, an ISO 8601 timestamp, a source type such as API, import, or CRM UI, a source label, and the ID of the user who made the update.

Zoho CRM
Timeline API
per-record timeline · v8 REST

One endpoint per record returns who (done_by), what (field API name, old and new values), when (audited_time), how (action type), and from where (CRM UI, API, workflow). 200 entries per page, token-based pagination.

Vendor developer reference
Salesforce
Field History + Field Audit Trail
native tracking · Big Object archive

Standard tracking covers a limited per-object field set; the Shield-tier Field Audit Trail extends to 200 fields per object and archives history under a configurable retention policy, per Salesforce’s developer docs.

Metadata API · HistoryRetentionPolicy
HubSpot
Property history on reads
object reads with history parameter

Request specific properties with history and get every change back: value, timestamp, source type, source label, updating user ID. Parameter naming per developer-community and third-party connector docs — confirm on the live reference.

CRM object API · hedged sourcing

One implementation nugget from the independent-connector world is worth stealing: one widely used third-party connector’s documentation notes that it deliberately skips syncing HubSpot’s hs_lastmodifieddate meta-field to avoid duplicate change tracking. If you build your own pipeline, apply the same rule on every platform — exclude last-modified meta-fields from the change stream, or every real edit will appear twice. For a broader map of how agents plug into these three platforms, our cross-platform CRM agent guide covers the integration surfaces beyond history.

03ConstraintsTracked-field limits and retention windows are the content.

An audit can only see what the platform kept. Before designing any recurring audit, map three constraints per platform: which fields are tracked at all, how long the history survives, and which mechanism — record-level history or the system-wide audit log — actually holds the answer to your question. The table below consolidates what we could verify, with the sourcing status of each figure stated plainly, because these numbers vary in how well they are documented.

Field-history and audit-log mechanisms across Zoho CRM, Salesforce, and HubSpot, with each mechanism’s scope, tracked-field limit, retention window, and the sourcing status of those figures.
MechanismWhat it capturesTracked-field limitRetentionSourcing status
Zoho CRM
Timeline API (v8)Per-record change history: actor, field, old and new values, timestamp, action, origin; plus tasks, calls, notes, attachmentsNo per-field cap stated on the API referenceNot stated — do not assume unlimitedZoho developer reference (vendor primary)
Field Tracker (picklist)Each value change of one tracked picklist becomes a record in an auto-created tracking moduleOne picklist field per moduleNot stated on the article we reviewedZoho Kaizen help article (vendor)
Audit Log (system-wide)Record edits with before/after values, mass operations, imports/exports with IP, logins, setup changes, GDPR actionsAll actions — not field-scopedFixed 3 years; older entries permanently deletedTwo official Zoho help pages (vendor primary)
Salesforce
Field History Tracking (standard)Per-object field edits: user, timestamp, old and new valuesUp to 20 fields per object, per third-party documentationRoughly 18 months, per third-party documentationSecondary-corroborated; not confirmed on a Salesforce-rendered page at the time of writing
Field Audit Trail (Shield add-on)Extended field history archived to the FieldHistoryArchive Big Object under a HistoryRetentionPolicyUp to 200 fields per objectConfigurable: archive after 1–18 months, then retained up to indefinitely per policydeveloper.salesforce.com Metadata API reference (vendor primary)
Setup Audit TrailAdministrative and configuration changes — not record field editsn/a — config log180 days, per third-party documentationTwo independent secondary sources; not Salesforce-primary-confirmed at the time of writing
HubSpot
Property history on object readsPer-property change history: value, timestamp, source type, source label, updating userYou choose which properties to request per callNo ceiling published in the docs we checkedDeveloper-community material + third-party connector docs; vendor reference not directly fetched
Verbatim, from Zoho’s help docs
On the system-wide Audit Log, Zoho’s own documentation is unusually blunt: “Zoho CRM only captures actions performed in the last 3 years. Any action prior to that is permanently deleted.” The export path has its own caps — CSV only, up to 3 years or one million entries, whichever is smaller, and filtered exports require a date range within 180 days. Design your archive cadence around those numbers, not around an assumption that the log will wait for you.

Two smaller Zoho constraints round out the picture. Access to the Audit Log is role-restricted — non-admin users see only their own actions and their subordinates’, so an audit agent needs admin-scoped credentials to see the whole org. And per-feature caps hide in odd corners: in the Appointments module, the rescheduling tracker retains only the most recent 20 reschedule events per appointment. Assume every platform has similar small caps that only surface in feature-level documentation.

04The MethodThe four-step audit pattern: question, pull, reconcile, escalate.

The pattern below generalizes across all three platforms because it depends only on what Section 02 established every history API returns: actor, field, timestamp, before, after, origin.

Step 1 — Define the question as a rule

A useful audit question is falsifiable per change entry. “Is our pipeline healthy?” is not auditable. “Which records moved backwards through a pipeline stage in the last 30 days, who moved them, and was a note added within a day of the move?” is. The rule encodes your operating policy — for example, “stage regressions require a documented reason” — so the audit is enforcement of something already agreed, not a fishing expedition.

Step 2 — Pull history via the API, on a schedule

The agent queries the record-level history API for the fields the rule touches — the stage field, the owner field, whichever customer-facing text field keeps being misused — over the audit window. This is where tracked-field limits from Section 03 bite: if the field is not tracked, there is no history to pull, and the first audit finding is “enable tracking on this field.”

Step 3 — Reconcile each change against the rule

For every change entry, the agent evaluates the rule: was the transition allowed? Was the actor someone with authority over that record? Does the origin field say a human did it in the UI, or did a workflow or API integration do it — which changes who you ask about it? Cross-referencing the same record’s notes and activity timeline turns “this looks wrong” into “this stage was demoted with no note within one day, by a user outside the record’s team.”

Step 4 — Escalate exceptions with the evidence attached

Everything that fails the rule goes to a named human reviewer as a proposed correction: the record, the change entry (actor, timestamp, before, after, origin), the rule it violated, and the proposed fix. The human approves, amends, or rejects. Only after sign-off does anything write back to the CRM. That review step is what makes the whole exercise an audit rather than another automation writing to production data on its own authority — a governance pattern we design into every CRM automation engagement.

The design rule that keeps audits safe
The agent’s job ends at evidence and proposal. The field-history trail is what justifies each correction to the reviewer — “here is who changed it, here is when, here is the value it should return to.” If a proposed fix cannot cite its history entry, it does not ship. That single constraint prevents the audit layer from becoming a second source of unexplained edits.

05In PracticeWorked example: catching backwards stage moves.

Consider a sales team at example.com whose pipeline policy says deal stages move forward only — a deal that reached “Proposal Sent” should never silently return to “Qualifying.” Backwards moves happen anyway: a rep resets a stage to reuse a workflow, an integration overwrites the field during a sync, a manager demotes a deal without recording why. Each one quietly corrupts pipeline reporting, and none of them is visible in a dashboard that only shows current stage.

The audit agent runs weekly. It defines the stage order as an ordered list, pulls the stage field’s history for every deal touched in the window, and compares each transition’s old and new values against the ordering. On Zoho, that is one Timeline API call per candidate record, filtered to the stage field; the done_by block attributes each transition, and the source value separates human UI edits from workflow and API writes. On Salesforce, the same reconciliation runs over field history entries; on HubSpot, over the stage property’s history entries with their source types and updating user IDs.

The output is a short exceptions report, not a mutation: five deals moved backwards this week; three were API-sourced from the same integration user, suggesting a sync misconfiguration rather than human error; two were UI edits by named users, one with a note attached the same day (“client restarted procurement — reset to Qualifying, agreed with manager”), one with no note at all. The reviewer clears the documented one in seconds, asks the integration owner about the sync, and follows up on the undocumented demotion with the change entry as the conversation starter. If a correction is agreed — restoring the stage, relocating a misplaced note — it is applied by a person or by the agent under explicit per-record approval, and the correction itself lands in the same history trail, fully attributed.

The same skeleton audits field misuse. If consultants keep typing internal follow-up notes into a customer-visible field, the history API shows every write to that field, attributed and timestamped; the agent classifies each old-to-new diff (does the new value look like activity notes rather than the field’s intended content?), and the proposed fix — relocate the text to a proper note, restore or blank the field — carries its evidence with it. Attribution matters here: the fix is a training conversation with the two people who wrote most of the entries, not a memo to the whole team.

06The ClockRetention is the audit deadline.

The retention picture across vendors — and across features within one vendor — is genuinely uneven, and it sets the deadline for every audit you have not run yet. Salesforce alone spans three windows: roughly 18 months for standard field history and 180 days for the Setup Audit Trail, both per third-party documentation, and up to indefinite for the paid Field Audit Trail, per Salesforce’s own developer reference. Zoho states no ceiling for the Timeline API — which is not the same as promising unlimited — while its separate Audit Log is a hard 3 years. HubSpot publishes no retention ceiling for property history in any of the pages we checked: the developer reference we attempted, the change-sources Knowledge Base article, and a major third-party connector’s documentation. That silence is a finding worth planning around, not a guarantee.

Documented retention windows · shown as a share of the longest (3 years)

Documented windows only. Not charted: Salesforce Field Audit Trail (configurable, up to indefinite — vendor primary), Zoho Timeline API (retention unstated), HubSpot property history (no published ceiling in docs checked).
Zoho Audit LogSystem-wide log · official Zoho help docs · fixed window
3 years
Salesforce Field History TrackingStandard tier · per third-party documentation
~18 months
Salesforce Setup Audit TrailConfig log, not field edits · per third-party documentation
180 days

The practical implication: export and archive audit findings before the platform ages them out. None of the record-level trackers guarantees indefinite retention by default — the only mechanism in the table that can is Salesforce’s paid Field Audit Trail, and even there the default policy archives after 18 months rather than keeping everything hot. If a compliance question or a customer dispute arrives in year four, the Zoho Audit Log has already deleted year one, permanently. A monthly export of exceptions and their supporting history entries into storage you control costs almost nothing and removes the deadline entirely.

Zoho Audit Log
Fixed window, then permanent deletion
3yrs

Official Zoho help docs: actions older than 3 years are permanently deleted. Exports are CSV only, capped at 3 years or one million entries, and filtered exports need a date range within 180 days.

Vendor primary
Salesforce FAT
Per object, with policy-driven archival
200flds

Field Audit Trail extends tracking to 200 fields per object and archives to a Big Object after a configurable 1–18 months, retained up to indefinitely — per Salesforce’s Metadata API reference.

developer.salesforce.com
HubSpot
Change sources, no published ceiling
50+

HubSpot’s Knowledge Base documents 50+ distinct change sources per property edit — UI, import, workflow, AI, and more — but no retention ceiling appears in any of the pages we checked.

knowledge.hubspot.com

07The GapThe audit layer is the part no vendor ships.

Here is the original-analysis point this whole guide builds to: in all the vendor documentation we reviewed for this piece, no platform offers a turnkey “find backwards stage moves” or “find misused fields” feature. The vendors ship the evidence layer — and as Section 03 showed, they ship it with real limits — but the reconciliation logic that encodes your rules is yours to build. That is not a criticism; a stage-regression rule or a field-usage policy is inherently org-specific. But it means the interesting question for 2026 is not “which CRM has the best audit log” — they are more alike than different — but “who turns their audit log into a scheduled, human-reviewed control first.”

Looking forward, the trajectory seems clear enough to plan around. History APIs are already attributing changes made by AI features — HubSpot’s documented change sources include its own AI and calculation systems alongside human and import origins — so the volume of writes needing review can grow faster than any team’s manual attention. Teams that establish the audit pattern now, while most CRM writes still come from humans and simple workflows, will have the control in place before agent-originated writes make it indispensable. Choosing where to start is straightforward:

One suspicious record
Attribute a single change

Reach for the record-level API: Zoho’s Timeline endpoint, Salesforce field history, HubSpot property history. One call returns actor, timestamp, before, after, and origin — no pipeline needed.

Record-level history API
Recurring policy
Enforce a rule on a schedule

Stage regressions, field misuse, unauthorized owner changes: encode the rule, run the four-step pattern weekly, route exceptions to a named reviewer with evidence attached.

Scheduled agent + review queue
Org-wide questions
Exports, logins, setup changes

Who exported which fields, who logged in from where, who changed a workflow rule — that lives in the system-wide audit log, not field history. In Zoho’s case it is role-restricted and hard-capped at 3 years.

System-wide audit log
Long-horizon evidence
Keep findings past the window

If disputes or compliance may arrive years later, archive exceptions and their history entries outside the CRM on a schedule — or, on Salesforce, price the Field Audit Trail add-on for indefinite retention.

External archive cadence

08ConclusionThe evidence already exists. The audit is the missing habit.

Accountability, on a schedule

Your CRM has been keeping the receipts. Start querying them.

Field-history audits are the cheapest governance upgrade in the CRM stack because the expensive part — capturing who changed what, when, from what to what — is already done, passively, by the platform. Zoho’s Timeline API, Salesforce’s field history and Field Audit Trail, and HubSpot’s property history all return the same essential evidence. What is missing at most organizations is the habit of querying it before something breaks.

The pattern that holds up is deliberately unambitious about autonomy: the agent assembles evidence, a human approves every fix. Define the rule, pull the history, reconcile, escalate with the change entries attached. Keep hygiene pipelines doing hygiene, keep agent observability logging your agents, and let this third discipline do the one thing the other two cannot: attribute.

And respect the clock. Retention windows are uneven, partly undocumented, and in at least one case — Zoho’s 3-year Audit Log — they end in permanent deletion. The audit you schedule this quarter can see evidence the audit you postpone until next year cannot. That asymmetry, more than any feature comparison, is the argument for starting now.

Put your CRM history to work

Turn the change log you already have into a control you actually run.

We design and build human-approved CRM audit workflows — field-history pipelines, exception queues, and correction flows with full attribution — on Zoho, Salesforce, and HubSpot.

Free consultationExpert guidanceTailored solutions
What we work on

CRM governance engagements

  • Field-history audit pipelines with human review queues
  • Pipeline-integrity rules — stage regressions, silent edits
  • Field-misuse detection and evidence-backed cleanup
  • Retention-aware archives for audit findings
  • Agent-assisted corrections with per-record approval
FAQ · CRM field-history audits

The questions we get every week.

Data hygiene — deduplication, enrichment, normalization — improves the state of a record today and mostly ignores how it got that way. A field-history audit works on the change log instead: it reconstructs who edited which field, when, and from what value to what value, then checks each change against a rule you are enforcing. The two disciplines use different APIs (hygiene reads current records; audits read timeline and history endpoints), answer different questions, and produce different outputs — hygiene produces cleaner records, audits produce attributed exceptions for a human to review. They complement each other: an audit can reveal why a field keeps getting dirty, which turns a recurring hygiene chore into a one-time process fix.
Related dispatches

Continue exploring CRM automation.

CRM & Automation

When an AI Agent Owns First Response, Who Owns the SLA

An agent that always replies instantly pushes first-response time near zero and stops it separating good service from bad. A replacement metric set instead.

August 17, 2026 · 18 minRead
CRM & Automation

What an AI Agent Should Write Back Into Your CRM

Field, note, task or activity log: an agent has to choose a write target. A framework that keeps reporting fields clean and context where humans read it.

August 16, 2026 · 16 minRead
CRM & Automation

From Zapier Zaps to Real Agents: A Migration Playbook

Migrate on decision criteria, branching depth, exception rate and data judgment, not on hype. High-volume deterministic zaps should stay zaps, permanently.

August 6, 2026 · 21 minRead
CRM & Automation

CRM Migration With AI Agents Doing the Heavy Lifting

Not the migration checklist and not the platform comparison: this covers who executes the middle of the plan, and the guardrails agents need to do it safely.

August 5, 2026 · 14 minRead
CRM & Automation

CRM Statistics 2026: Market, Adoption and ROI Data

The global CRM market hit ~$113B in 2025, heading toward $163B by 2030. A sourced reference on CRM market size, vendor share, adoption, and ROI.

June 12, 2026 · 12 minRead
CRM & Automation

Anthropic Cowork Customize: Personalize Claude Guide

Anthropic's Cowork platform lets businesses customize Claude's persona, memory, and behavior at workspace level. Setup guide, use cases, and API integration.

March 19, 2026 · 14 minRead