Loading

Difference between SystemModStamp and LastModifiedDate

Publish Date: May 30, 2026
Description

In Salesforce, you may notice that the SystemModstamp and LastModifiedDate fields on a record show different values. While both fields capture date and time information about when a record was last modified, they are updated under different conditions.

Understanding this difference is important for data synchronization, delta query patterns, integration development, and SOQL query performance tuning.

Resolution

LastModifiedDate and SystemModstamp — What Each Field Tracks

LastModifiedDate is the date and time when a record was last modified by a Salesforce user through a direct action (such as editing and saving a record, running a data import, or performing a DML operation in Apex).
SystemModstamp is the date and time when a record was last modified by either a user or an automated internal Salesforce process (such as an internal trigger or background system process). In this context, "trigger" refers to Salesforce internal code that implements standard platform functionality — not Apex triggers written by developers.
As a result, SystemModstamp is always equal to or more recent than LastModifiedDate. The two fields will show different values whenever an automated Salesforce process updates the record without a direct user action.

Scenarios Where SystemModstamp and LastModifiedDate Will Differ

The following scenarios cause SystemModstamp to be updated while LastModifiedDate remains unchanged:

  • The archive date on a record is extended by more than 365 days.
  • An existing picklist value on the record is updated by Salesforce (not replaced with another existing picklist value by a user).
  • A Contact's email address is flagged by the Email Bounce Management process.
  • The LastActivityDate field on a record is modified by an automated process.
  • A Roll-up Summary field is created on a parent object. This triggers an asynchronous recalculation of all parent records, updating their SystemModstamp. Note: Recalculation also occurs if the Summary Type of the roll-up field is changed.
  • Some Salesforce internal backend processes update SystemModstamp to signal that a record or its related data may have changed, prompting internal processes to synchronize themselves to the updated record data.

Note: In some cases, these automated updates happen asynchronously, meaning the SystemModstamp update may occur slightly after the triggering event.

Recommendation for Integration and Delta Queries

When building integrations or delta-load processes that rely on detecting record changes, use SystemModstamp rather than LastModifiedDate. SystemModstamp captures a broader set of changes and is more reliable for ensuring your integration picks up all modified records, including those updated by automated Salesforce processes.
For detailed guidance on SOQL query performance implications of using each field, see the Force.com SOQL Performance Tips: LastModifiedDate vs SystemModStamp article.

Knowledge Article Number

000387261

 
Loading
Salesforce Help | Article