If you’ve ever found yourself pulling ARR numbers from Stripe, Salesforce, and a half-broken spreadsheet, welcome. You’re not alone.
When I joined Intercom, that’s exactly what it was like. Every board meeting, we were stitching together numbers at the last minute. No one trusted the data. Everyone had their own version of ARR.
So we built the thing I wish I’d had on day one.
A single table that answered every question we ever had about ARR.
We called it the ARR Mega Table.
Imagine a giant spreadsheet where every row is a customer, and every column tells you what’s happening with their ARR. And it does that every single day.
You can open it and immediately see:
• How much ARR a customer had on any given day
• Whether it was new ARR, expansion, contraction, churn, or a restart
• What plan they were on
• Where they came from (outbound, paid, self-serve)
• What features they used
• What segment they’re in (SMB, mid-market, enterprise)
• And a hundred other useful things
It’s a journal for every customer’s revenue journey. Updated daily. Joinable to everything else in your business.
Why is that useful?
Because now you can ask:
• How much ARR did we close last quarter from B2B companies in Europe with 50 to 200 employees?
• What percent of expansion ARR came from Sales versus Self Serve?
• Which acquisition channels lead to churn within 60 days?
And you don’t need a team of analysts or ten dashboards to answer those. Just one table.
If your ARR reporting feels like a mess, it’s not your fault. You’re just missing the table.
Here’s what we built.
How the ARR Mega Table is actually constructed
At its core, this table is simple. One row per customer per day.
But the power is in what each column tells you, and what conversations it forces you to have.
Core columns (the what and when)
customer_id
The unique ID we use to track a customer over time.
This forces you to define: What counts as a customer? Is it one billing entity? A workspace? A user?
date
Every day the customer was active.
Why? Because we want to see changes over time. Most metrics are about deltas.
arr_amount
How much ARR this customer represented on that day.
The foundation. Everything else compares to this.
Change columns (the story)
These tell you what changed between today and yesterday.
gross_new_arr
ARR from new customers starting a paid subscription.
What date do you recognize revenue? When they sign? When they pay? When they start using the product?
expansion_arr
Existing customers who started paying more.
Did they add seats? Upgrade plans? Buy a new product? What counts as expansion versus restart?
contraction_arr
Existing customers who started paying less.
Did they downgrade? Remove users? Cancel an add-on?
churned_arr
Customers who fully canceled their subscription.
How do you define churn? After how many days inactive? At invoice end? At contract cancellation?
restart_arr
Previously churned customers who came back.
What’s your window for classifying a restart? Three months? Twelve? Or do they count as new again?
net_new_arr
The sum of all the above changes for that customer on that day.
This is the headline number you’re trying to move.
Context columns (the why)
These fields give you the why behind the change.
plan_name
What plan the customer is on.
How do you treat legacy or discounted plans? Are those plans reflected in your pricing tiers?
contract_type
Monthly, annual, or multi-year?
This impacts churn definitions and revenue forecasting.
payment_terms
Are they paying monthly, annually upfront, or something else?
Helps distinguish cash flow versus ARR behavior.
acquisition_channel
Where the customer came from.
Sales, self-serve, paid ads. Gold for measuring ROI and cohort quality.
region, company_size, industry
Usually pulled from your CRM or enrichment tools.
Useful for slicing and comparing performance by segment.
product_usage_metrics
Things like DAUs, feature adoption, or events triggered.
Lets you correlate product activity with expansion, churn, and retention.
Why this table forces clarity
You can’t build this table without making hard decisions.
What does churn mean for your business?
When do you start recognizing ARR?
What happens when a customer upgrades and downgrades in the same month?
Is a trial customer a customer?
Do you count ARR from implementation services? From overages? From discounts?
If you need more support building out this table, I wrote a very detailed book with Chris Burgner on how EXACTLY to get there. It’s completely free to read here.
Good write up Bobby
Great post Bobby! That first sentence hit hard 😂