The resolver behind every customer portal load. It chooses between the newest customer-visible sent version and the link's own refreshed snapshot. A deliberate pin beats both. With no customer-visible send version at all, the link's snapshot is used. It never throws — on any error it returns the fallback so the portal always renders something.
Also called: portal showing an old version · wrong quote on their page · version vs link snapshot
- 1Load the customer-visible send versions for this estimate, newest first.
- 2If a selection row points at one of them, that is a pin and it wins outright.
- 3A selection pointing at anything else is leftover state, not a choice, and is ignored.
- 4Otherwise compare the newest version's timestamp with the link's snapshot_refreshed_at and take the newer.
- 5Every query is scoped to the link's own organization.
The same $11,568 of services went missing on a customer portal for a second reason: the customer's copy had been refreshed correctly, but it was losing to an older sent version that outranked it simply by being a version. The rule had been newest version, otherwise the link, which quietly assumed a version is always at least as fresh as the link. An explicit pin now wins, and otherwise the genuinely fresher of the two wins, with freshness compared rather than assumed. Freshness needed its own timestamp because the obvious one moves whenever a customer opens their portal — comparing against that would have made the link permanently newer than every version the first time anyone looked at their estimate. A reader must never change which document is authoritative.
- A stale sent version outranking a freshly refreshed customer document
- A customer merely opening their page changing which document is authoritative
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →