When developing business software, it’s one of those things that you implement at one point or another – keeping tracking of the who/what/when. Who changed this value, what was the previous value and when was it changed? In my personal experience, this rarely gets used for tracking down some rogue user in the system that has been incorrectly updating records. Instead, it turns out to be a lifeline when trying to undo an issue caused by a bug in some automation, some script or other piece of code.
A Sidebar on Field-Tracking in SQL Server
Different software systems have different ways of handling this problem. Back in the day, I remember trying to solve this problem manually by creating “history” or “archive” tables in SQL based database systems where a delete or an update operation would take the current record and insert into a shadow table in its current state prior to actually completing the requested operation on the main table. This often turned out to be a game of whack-a-mole as developers often didn’t have the judiciousness to apply this practice when new tables were created or when new fields were added. And inevitably, when an uh-oh moment materializes, it is that one field that you forgot to add to the history table that becomes the most important piece of data that should have been saved! SQL Server got a built-in feature that made this quite foolproof called Temporal tables. Once the feature is enabled, it prevents the primary table from being “accidentally” altered by preventing any alterations without having to explicitly turn off the temporal history tracking, making the modification and then turning the feature back on.
“Out of the Box” Field Tracking in Salesforce
Salesforce has a few different ways of addressing this concern. The most straightforward one is the default, out of the box solution that lets you turn this on for specific fields that you specify. In order to configure it, go to Setup > Object Manager, find the object that you are interested in, navigate to Fields and Relationships and click on the “Set History Tracking” button. Add the fields that you are interested in tracking.
Now, in order to see this field history, you should add that to your Page Layout, under “Related Lists”. Below, I modified my default page layout for my “Tiger” object to show “Tiger History”, like so:
If you open your record again and navigate to the “Related” tab, you’ll see the field history listed there:
This “out-of-the-box” solution can get you through most basic use cases but you should be aware of the limitations. As of the writing of this blog (October 2021), some of those limitations are:
- You only get up to 18 months of history on the UI, 24 months via the API.
- You can only track up to 20 fields per object.
- Fields with more than 255 characters are simply marked as “edited” the actual values are not included in the history tracking.
Please review the official docs for additional information.
Field Audit Trail
If you are on one of the higher-end editions, Field Audit Trail gets you some more added benefits. Notably, this option allows you to track 60 fields per object and retain data for up to 10 years.
Field Tracker App by Algoworks – an AppExchange Solution
This free app available through the AppExchange gets you over a lot of the limitations that you face with the built-in solutions. Notably, you can track 40 custom objects, 40 standard objects, even some of the ones you can’t track using the built-in solution such as User and Campaign objects. It also lets you track date fields and other special fields that the out-of-the-box solution doesn’t allow. You can check out their listing here: Field Tracker App by Algoworks – Algoworks Solutions Inc – AppExchange (salesforce.com).
Salesforce Shield – Not a Free Solution
My post won’t be complete without mentioning the Salesforce Shield product. From what I understand, this product comes with a hefty price-tag. You must speak to your sales rep to figure out what that exact price is. However with this paid product, you get more than just field level tracking. The Shield solution is a more comprehensive security solution that provides various encryption options, compliance auditing, automation of security policies and much more.