Field History Tracking
Field History Tracking is the Salesforce feature that records changes to specific fields on an object into a durable audit log.
Definition
Field History Tracking is the Salesforce feature that records changes to specific fields on an object into a durable audit log. When a tracked field changes, the platform writes a History record (AccountHistory, ContactHistory, OpportunityHistory, etc.) capturing the old value, the new value, the user who made the change, and the timestamp. The log is the canonical answer to "who changed what when" for audit, compliance, and dispute resolution purposes, and it persists independently of the source record.
Up to 20 fields can be tracked per object. The retention is 18 months by default, with Field Audit Trail (a Shield add-on) extending retention up to 10 years. The history records are queryable through SOQL and reportable through standard report types, but they are not editable: once written, a history row cannot be modified or deleted except by the platform during retention expiration. This immutability is the property that makes the log trustworthy for compliance.
How Field History Tracking captures audit data
History objects and what they record
Every object with Field History enabled has a paired History object: Account has AccountHistory, Opportunity has OpportunityHistory, custom objects have CustomObject__History. Each row stores Field (the API name of the changed field), OldValue and NewValue (the values as strings), CreatedBy (the user who triggered the change), and CreatedDate (the timestamp). For long text or restricted-visibility fields, OldValue and NewValue may be blank with the change still logged, depending on field type and FLS.
The 20-field cap and how to use it
Each object can track up to 20 fields. Choose fields that materially affect the record's business meaning: Stage on Opportunity, Owner on Account, Status on Case, key custom fields used for revenue or compliance reporting. Avoid tracking fields that change automatically (LastActivityDate) because they produce noise without audit value. Some objects allow more than 20 fields under specific licensing; check current docs for the exact limits.
Retention: 18 months default, 10 years with Field Audit Trail
Default retention is 18 months. Records older than 18 months are deleted by the platform; no manual cleanup is required. Field Audit Trail extends retention to up to 10 years for selected fields, providing the long horizon compliance auditors expect. Field Audit Trail is licensed separately under Shield. Without it, audit data is durable but only for a year and a half, which may not meet regulatory requirements like SOX or HIPAA.
Activating tracking on an object
Setup > Object Manager > Object > Fields and Relationships > Set History Tracking. Enable the master toggle on the object, then check each field to track. Existing data is not retroactively logged; tracking starts at the moment of activation. Plan activation deliberately for high-value objects because the prior history is not recoverable.
Limitations on tracked fields
Not every field type is trackable. Long text areas, rich text areas, formula fields, geolocation, encrypted fields (under certain Shield configurations), and a few special types cannot be tracked. Standard system fields like CreatedDate and LastModifiedDate are inherently tracked but as part of the record metadata, not as History entries. Confirm trackability per field before promising audit coverage for a regulatory framework.
Reporting on field history
Standard report types ship for the History objects, with grouping by Field, User, and Date. Build a report showing all changes to Stage on Opportunity over the past quarter, grouped by week, to see the rate of stage churn. Custom report types can join History to the parent object for richer queries (Opportunity Amount alongside Stage changes). The reporting layer is the most common consumer of history data; queries and ad-hoc audits are secondary.
Field Audit Trail Shield extension
Field Audit Trail (FAT) extends Field History Tracking with longer retention, the ability to track up to 60 fields per object, and a FieldHistoryArchive object that holds the extended history. FAT is licensed as part of Shield Compliance and adds storage and query options for long-horizon audit. Customers in regulated industries (financial services, healthcare, public sector) commonly add FAT to satisfy multi-year audit retention requirements.
Enable Field History Tracking on an object
Enabling Field History Tracking is two settings deep but the field-selection decision needs business and compliance input. The steps below cover both halves.
- Gather compliance requirements
Identify which fields require audit logging based on regulatory frameworks (SOX, HIPAA, internal controls). Get the list signed off in writing.
- Open Set History Tracking
Object Manager > Object > Fields and Relationships > Set History Tracking. The page lists all fields with a checkbox each.
- Enable object-level tracking
Check Enable History Tracking at the top of the page. Without this, no field tracking takes effect even if individual fields are checked.
- Check the target fields
Check the fields gathered from compliance. Stay within the 20-field cap; if more are needed, evaluate Field Audit Trail.
- Save and confirm
Save the settings. Edit a test record's tracked field and confirm a History record is created (query AccountHistory or check the History related list on the record).
- Add the History related list to layouts
Page Layout Editor > drag the History related list onto the record layout. This gives end users visibility into recent changes without needing reports.
- Build reports
Use the standard report type for the History object, or build a custom report type joining History to the parent. Schedule weekly for audit and compliance teams.
Master toggle per object. Required for any field tracking to take effect.
Individual fields to track. Up to 20 per object under standard licensing.
Extends retention to 10 years and field cap to 60. Licensed separately.
Page layout component showing recent History records on the record page. Adds the audit log to the end-user UI.
Built on History objects for richer reporting. Standard report types are limited; custom types unlock joining with parent.
- Tracking is not retroactive. Activation logs only future changes; prior history is not recoverable. Activate early for compliance objects.
- The 20-field cap is per object. Hitting the cap on a key object usually requires either Field Audit Trail or a tough prioritization conversation with compliance.
- Long text, formula, and some encrypted fields cannot be tracked. Confirm trackability against the field type list before promising coverage.
- Default retention is 18 months. Records older are auto-deleted with no recovery. For multi-year audit, Field Audit Trail is the only path.
- Bulk updates produce one History record per changed record. A bulk load updating 10,000 records on a tracked field writes 10,000 History rows, which can spike storage and reporting cost.
Trust & references
Straight from the source - Salesforce's reference material on Field History Tracking.
- Field History TrackingSalesforce Help
- Turn On Field History TrackingSalesforce Help
About the Author
Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He runs salesforcedictionary.com to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.
Test your knowledge
Q1. What does Field History Tracking record?
Q2. What's the typical limit on tracked fields per object?
Q3. What feature extends history retention?
Discussion
Loading discussion…