Skip to content

Rollups vs. Salesforce Roll-Up Summary Fields

Native Salesforce Roll-Up Summary fields are fine. The recurring complaint about “unreliable rollups” in the Salesforce ecosystem is a complaint about their workarounds, not about rollups themselves: Roll-Up Summary fields only work across a Master-Detail relationship, so anyone who needs an aggregate across a Lookup relationship reaches for Salesforce’s Data Processing Engine or the third-party Declarative Lookup Rollup Summaries (DLRS) package. Both run asynchronously – on a schedule or via a triggered batch – and asynchronous recalculation is where the lag and eventual-consistency complaints come from. The real Salesforce limitation is narrower than “rollups are unreliable”: rollups are gated behind Master-Detail.

A rollup field is available on any lookup relationship, not restricted to relationships shaped like a Master-Detail. See Relationships and Lookups: Rollups – rollups are decoupled from relationship type by design.

Every rollup is maintained by a database trigger that recalculates the aggregate on every insert, update, delete, and reparent of a child record, in the same transaction as the write that changed the child. There is no scheduled job, no batch window, and no separate consistency model to reason about – the aggregate is as current as the last committed write.

Five aggregation functions are available: count, sum, min, max, avg. For sum, min, max, and avg, the field also declares a sourceField on the child object to aggregate.