It is a retention moat. It is no longer a growth claim, and the two get confused on one slide in most board decks.
The example
Jason Lemkin's case: ServiceTitan shut off Podium's integration for roughly 1,000 shared customers after a nine-year partnership, and kept essentially all of them. The contractors stayed because their jobs, invoices, customer history, and technician schedules live in ServiceTitan.
That bought retention. It added no new revenue. Lemkin's line, and it is the right one: the switching cost that keeps customers in is a separate asset from the thing that makes them spend more.
The growth numbers say the same. By his read of the quarter, Salesforce's applications business, the actual record, grew 7% in constant currency, while Data 360, Headless Platform, and Other went from $2.95B to $3.68B. Zero Copy volume grew 277% year over year, and Salesforce Engineering's own post reports 104.3 trillion connected records, 81.5 trillion of them Zero Copy rows. The biggest system of record grows fastest where it does not hold the data.
Where I part with the conclusion
Lemkin says growth moved down a layer to Snowflake and Databricks. That is a description of this year's revenue, and it is a volume story: agents produce enormous exhaust and somebody has to hold it cheaply.
But Zero Copy cuts both ways. If the record can be federated, the warehouse can be swapped. The data layer is rentable too. Neither is where the incremental dollar sticks.
Stripe published the better test the same week. New platform businesses up over 180% year over year, and the durable ones run the workflow, hold the history, and move the money. Eric Noeth of Advent: a high-signal indicator of defensibility is what breaks the day the customer turns it off. If operations keep running, the product is exposed. If claims don't pay and cars don't sell, it is hard to dislodge.
That is a loop question, not a storage question.
The two lines
Replace the slide with these.
What breaks the day they turn us off. If the answer is "they would have to export a lot of data," you have a retention moat and you already knew that. If the answer is "their dispatch stops," write that down, because that is the moat and it has nothing to do with where the bytes live.
What did the product decide last quarter that it could not have decided the quarter before. A record that grows is an archive. A record that changes what the product does next is a loop, and the loop is the only thing in this argument that does not port. Heidi's Signals layer taught me this the expensive way: it held everything, displayed it cleanly, and compounded nothing.
The full argument is in Kill the System-of-Record Slide, and the earlier piece on where switching costs went is Context Is King. Written Context Is Rented.