Net revenue retention, one table at a time
The formula is one line. Getting the rows right takes the rest of the post: which accounts count, what to do with annual prepayments, and the cohort table we use every month.
How we run revenue reviews and incident reviews, why the product works the way it does, and what changed in each release.
The formula is one line. Getting the rows right takes the rest of the post: which accounts count, what to do with annual prepayments, and the cohort table we use every month.
Column stores, a sort cache keyed by view, and the two indexes we removed.
Recent items first, commands that show their keys, and why we cap results at 12.
Four questions, one table of affected accounts, and no blame. The template we use.
Density settings, touch targets and the compact mode half our users turn on.
Retry timing, the email that recovers the most cards, and when to pause billing.
What we record, how we store it for seven years, and the export format we settled on.
Every version, newest first. Breaking API changes get 90 days' notice and a line here.
Exports now include API key events and the IP address behind each change.
Every table and menu now follows the 32px compact setting, and it syncs across devices.
Retention by signup month, with each cell opening its accounts.
A Mumbai region with the same features as eu-west.
Part of the Design Systems Library