There are a couple methods to report on changes to Salesforce data.
The most common is field history. To summarize, once enabled, you can report on when field changes occur, the old value and the new values.
To enable this feature, navigate to the desired object in Object Manager and click “Set History Tracking” from the Field & Relationship menu. You can select up to 20 fields per object to track. Change history is limited to 1.5 years by default, but you can open a case to extend that limit. Salesforce recommends a max of 5 years, but you can push it to 10 (if you dare!).
Once activated, you simply build a report using the “{Object Name} Field History” report type and voila!
The second method is not as popular, but it’s definitely very powerful! It’s called snapshot reporting. To summarize, once enabled, it keeps track of field values over time. So you can report on how many opportunities had a stage of Open last month compared to the number of opportunities that have a stage of Open today.
The setup process is a little longer and involves a custom object but the outcome is worth it. If you’re curious to know the steps, see How to Create a Salesforce Snapshot Report.
The takeaway
Field history will show you when field values change, but snapshots will know the field values at specific intervals in time. Use each appropriately.