<turbo-stream action="update" target="wiki_card"><template>

<h1>LastModifiedDate vs. SystemModStamp in Salesforce</h1>
<div class="trix-content"><div>Salesforce provides two key timestamp fields—<strong>LastModifiedDate</strong> and <strong>SystemModStamp</strong>—that track changes on records. Although both may appear similar at first glance, understanding their distinct behaviors can help you make better architectural and reporting decisions.<br><br><br></div><p><strong><em><u>A. LastModifiedDate<br></u></em></strong><strong><em><br></em></strong><strong>What It Is?<br></strong><br></p><ul><li><strong>LastModifiedDate</strong> captures the date and time when a record was last updated due to a <em>real change</em> in one or more of its fields.</li></ul><div><strong>How It Works?<br></strong><br></div><ul><li>When a record is first created, <em>LastModifiedDate</em> is set to the same value as <em>CreatedDate</em>.</li><li>Whenever an actual field change occurs—whether by a user through the interface or by an automated process (like a Flow, Process Builder, or Apex)—<em>LastModifiedDate</em> is updated to the current date and time.</li><li>If an update attempt does not result in a changed field (for example, setting a field to the same existing value), <em>LastModifiedDate</em> typically does <strong>not</strong> change.</li></ul><div><strong>Common Uses<br></strong><br></div><ul><li><strong>Reporting on Recent Updates</strong>: You can filter reports or list views by <em>LastModifiedDate</em> to see which records were most recently changed by your team or by automation.</li><li><strong>Conditional Logic in Automations</strong>: You can compare <em>LastModifiedDate</em> against a date or timeframe in a Flow or apex if you only want to process records changed recently.</li></ul><p><strong><em><u>B. SystemModStamp</u></em></strong><strong><br></strong><br></p><div><strong>What It Is?<br></strong><br></div><ul><li><strong>SystemModStamp</strong> also tracks the most recent time Salesforce recognizes <em>any</em> update to the record, but it is broader in scope than <em>LastModifiedDate</em>.</li></ul><div><strong>How It Works?<br></strong><br></div><ul><li><em>SystemModStamp</em> can change even when no user-facing fields appear to be updated such as internal processes (sharing rule recalculations, roll-up summaries, and other behind-the-scenes tasks).</li><li>It always updates <em>at least</em> as often as <em>LastModifiedDate</em> does but can update <em>more</em> frequently because of these system-driven changes.</li></ul><div><strong>Common Uses<br></strong><br></div><ul><li><strong>Data Synchronization</strong>: Integrations that replicate Salesforce data often rely on <em>SystemModStamp</em> to find all records that <em>might</em> have changed, ensuring no updates slip through.</li><li><strong>Detecting Any Internal Changes</strong>: If you need to know whether Salesforce itself has performed a system-level update, <em>SystemModStamp</em> is the more accurate indicator.</li></ul><p><strong><em><u>C. Key Differences and Implications</u></em></strong><strong><br></strong><br></p><ol><li><strong>Granularity of Changes</strong>:<ul><li><em>LastModifiedDate</em> increments only when a record’s field truly changes.</li><li><em>SystemModStamp</em> can increment for both field updates and internal processes.</li></ul></li><li><strong>Usage in Automation</strong>:<ul><li>If you want to avoid unnecessary updates or triggers, rely more on <em>LastModifiedDate</em> to confirm that data <em>actually</em> changed.</li><li>If you need a guaranteed “catch-all” of any activity (including background jobs), use <em>SystemModStamp</em>.</li></ul></li><li><strong>Performance Considerations</strong>:<ul><li>Using <em>LastModifiedDate</em> in queries or flows can sometimes narrow your scope to <em>truly</em> changed records, reducing wasted processing.</li><li>Using <em>SystemModStamp</em> ensures you don’t miss system-initiated updates but may include additional records that haven’t had user-visible changes.</li></ul></li></ol></div>
</template></turbo-stream>

