How to Report on Field History in Salesforce

Header image: how to report on field history in Salesforce, a history report grouped by field showing old and new values for Stage and Amount.

Hey friends,

To report on field history in Salesforce, turn on Field History Tracking for the fields you care about, then build a report from that object's history report type, like Account History or Opportunity Field History. Each row is one change, with the field, the old value, the new value, who edited it and when.

It sounds simple, and it mostly is. The traps are in what the report can't show you. Facts below are from the Field History Tracking Overview and Opportunity History pages in Salesforce Help. If you haven't set up tracking yet, start with my Field History Tracking setup guide.

Which history report type should you use?

Decision table: use the Account History report type for tracked account fields, Opportunity Field History for tracked opportunity fields, Opportunity History for stage, amount, probability and close date changes, the custom object history report type for custom fields, and Field Audit Trail via API for changes older than 18 months.

Pick the report type from the question you're trying to answer.

Behind the scenes, history lives in objects named AccountHistory, OpportunityFieldHistory or MyObject__History for a custom object. The report types sit on top of those.

How do you build a field history report?

  1. Confirm tracking is on for the field. Only tracked fields appear, and only changes made after you turned tracking on.
  2. For a custom object, make sure Allow Reports is checked on the object so its history report type shows up.
  3. Create a report and choose the history report type, for example Account History.
  4. Add columns for the field name, old value, new value, who edited it and the edit date.
  5. Filter on the field you care about and a date range, then group by field or by user.

Help notes you can group or filter a field history report to show specific tracked fields, users or time periods, and that this works for custom objects defined as detail objects too. Older blog posts say detail objects can't be reported on, so trust the current Help page.

Why I care about this stuff: certs changed my career. I used Focus on Force on the way to 17 Salesforce certifications, and the thing that worked best was rapid-fire practice tests, again and again, until the wrong answers stopped surprising me. Cert Lab is my version of that loop, with up-to-date links and screenshots. A cert teaches you what matters fast, and it gets you interviews and raises.

Cert Lab by Nick Frates

Let the Platform Administrator II Cert Lab test you to success

Scenario questions on reporting, auditing and the rest of the Admin II exam, with every option explained and linked to the Help page behind it.

Start the Platform Administrator II Cert Lab for $9.99 →

What's the difference between Opportunity History and Opportunity Field History?

This one shows up in real orgs and on the exam. Opportunities have two separate history lists:

Opportunity Field HistoryOpportunity History (Stage History)
What it tracksThe opportunity fields your admin selectedAmount, Probability, Stage and Close Date
Who picks the fieldsThe adminNobody, it's fixed
Needs Field History TrackingYesNo
RetentionSame as other field historyNot automatically deleted

Changes to Amount and Quantity are tracked even when they come from changes to the opportunity's products or schedules. If you want month-end snapshots of those four fields over time, look at the Opportunity Trends report instead.

What can't a history report show?

  • Anything before tracking started. There's no backfill.
  • Long text values. For long text fields over 255 characters, you only see that it changed.
  • Old history. Without Field Audit Trail, history is kept for up to 18 months in the app. Use Data Loader or the queryAll() API for history that's 18 to 24 months old.
  • Turned-off custom objects. If you disable tracking on a custom object, you can no longer report on its field history. Standard objects keep history up to the date you turned it off.
  • Changes the user couldn't make. If automation changes a field the current user can't edit, that change isn't recorded on most objects.

Common mistakes I see

  • Expecting history from day one. Turn tracking on before the business needs the report, not after.
  • Tracking formula fields. You can't. Track the input fields instead.
  • Reading a trigger rewrite as a user mistake. If a trigger changes a value right after a user saves, you'll see two rows: the user's change and the trigger's change.
  • Sorting by timestamp alone. Two edits in the same second share a timestamp and can look out of order.
  • Forgetting access. Users need Read on the object and the tracked fields to see the history.

What if you need history beyond 18 months?

That's Field Audit Trail territory. It keeps up to 200 fields per object until you delete them, but you query it through the API instead of building a normal report. I compare both in Field Audit Trail vs standard field history.

FAQ

Why is my history report empty?

Tracking is probably off for that field, or it was turned on after the changes you're looking for.

Can I create a custom report type on a history object?

Use the history report type Salesforce provides for the object. For a custom object, check Allow Reports so it appears.

Does Opportunity History need field history tracking?

No. Stage History tracks Amount, Probability, Stage and Close Date automatically, and you can't change which fields it tracks.

Where should you go next?

Cert Lab by Nick Frates

Let the Platform Administrator II Cert Lab test you to success

Lessons, flashcards, section quizzes and four 60-question practice exams for all seven Platform Administrator II sections, every answer explained.

Start the Platform Administrator II Cert Lab for $9.99 →

Hope this helps!

Best,

Nick

Keep reading

See all posts →

Salesforce Saturdays

Join 1,033 Salesforce pros getting one 10-minute tip on Salesforce tech or career growth every Saturday.