DEV Community

insightlab
insightlab

Posted on

The MRR Dashboard Every Bootstrapped Founder Needs (No Paid Tools Required)

Every bootstrapped founder has the same problem: you need to know your numbers, but you're not ready to pay $50-200/month for Baremetrics, ChartMogul, or ProfitWell. You're pre-revenue or early MRR, and every dollar counts.

Here's the truth — you don't need those tools yet. You need a dashboard that answers six questions:

  1. What's my current MRR?
  2. Is it growing or shrinking?
  3. Where is the growth (or churn) coming from?
  4. How long do customers stay?
  5. What's my cash runway?
  6. What should I worry about this week?

You can build this dashboard for free using Google Sheets and a bit of automation. Let me show you exactly how.

The Metrics That Matter (and the Ones That Don't)

Before building anything, clarify what to track. SaaS metrics can spiral into an endless rabbit hole. Here's what matters at the bootstrapped stage:

Track These

Metric What It Tells You Why It Matters
MRR (Monthly Recurring Revenue) Revenue baseline Your north star
Net New MRR Growth rate after churn Are you actually growing?
Churn MRR Revenue lost to cancellations Your leak
Expansion MRR Revenue from upgrades/add-ons Your silent growth engine
Logo Churn Rate % of customers who left Customer satisfaction signal
ARPA (Avg Revenue Per Account) Pricing health Are upgrades working?
LTV (Lifetime Value) Total revenue per customer Acquisition budget ceiling
CAC (Customer Acquisition Cost) Cost to acquire a customer Efficiency of growth
Cash Runway Months until you run out of money Survival metric

Step 1: Set Up Your Data Source

Your data source is your billing system. If you're using Stripe (and you probably are), you can export everything you need.

Stripe Export Setup

  1. Log into your Stripe Dashboard
  2. Go to Reports → Exports
  3. Create a recurring export for Subscriptions (active and canceled) and Invoices (paid and refunded)
  4. Schedule it as a weekly CSV export to your email

Alternatively, use the Stripe API with Google Apps Script for real-time data:

function fetchStripeSubscriptions() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Raw Data');
  var apiKey = 'sk_live_YOUR_SECRET_KEY'; // Use PropertiesService in production

  var url = 'https://api.stripe.com/v1/subscriptions?limit=100&status=all';
  var options = {
    method: 'get',
    headers: { 'Authorization': 'Bearer ' + apiKey },
    muteHttpExceptions: true
  };

  var response = UrlFetchApp.fetch(url, options);
  var data = JSON.parse(response.getContentText());

  sheet.clear();
  var headers = ['Subscription ID', 'Customer ID', 'Plan', 'Status',
    'Amount (cents)', 'Created Date', 'Canceled Date'];
  sheet.appendRow(headers);

  data.data.forEach(function(sub) {
    sheet.appendRow([
      sub.id, sub.customer,
      sub.items.data[0].price.nickname || sub.items.data[0].price.id,
      sub.status, sub.items.data[0].price.unit_amount,
      new Date(sub.created * 1000),
      sub.canceled_at ? new Date(sub.canceled_at * 1000) : ''
    ]);
  });
}
Enter fullscreen mode Exit fullscreen mode

Set this to run weekly via Triggers → Add Trigger → Week timer → Monday → 6:00 AM.

Step 2: Build the MRR Calculation Sheet

Create a second sheet tab called MRR Calculations. This is where raw data becomes meaningful numbers.

Column Structure

Column A: Month Column B: Customer Column C: Plan Column D: Monthly Amount Column E: Status Column F: MRR Contribution
2025-01 user@email.com Pro $49 Active $49
2025-01 user2@email.com Team $199 Active $199
2025-02 user@email.com Pro $49 Active $49
2025-02 user3@email.com Starter $19 Churned -$19

MRR Contribution formula (Column F, row 2):

=IF(E2="Churned", -D2, IF(E2="New", D2, IF(E2="Upgraded", D2-previous_amount, D2)))
Enter fullscreen mode Exit fullscreen mode

Monthly MRR Summary

Create a third sheet tab called MRR Summary:

Month New MRR Expansion MRR Churn MRR Net New MRR Total MRR
2025-01 $500 $0 -$50 $450 $500
2025-02 $300 $100 -$150 $250 $750
2025-03 $400 $50 -$100 $350 $1,100

Key formulas:

  • Net New MRR = New MRR + Expansion MRR - Churn MRR
  • Total MRR = Previous Total MRR + Net New MRR
  • MRR Growth Rate = Net New MRR / Previous Total MRR

Step 3: Calculate LTV and CAC

LTV Calculation

LTV = (ARPA × Gross Margin) / Churn Rate

In Google Sheets, with ARPA in B2 (e.g., $45), gross margin in B3 (use 0.80 for bootstrapped SaaS), and monthly churn rate in B4 (e.g., 0.05 for 5%):

=(B2 * B3) / B4
Enter fullscreen mode Exit fullscreen mode

This gives LTV = $720.

CAC Calculation

CAC = (Sales + Marketing Spend) / New Customers Acquired

For bootstrapped founders, your "spend" is primarily software costs, content production, and contractor costs related to acquisition.

Month Acquisition Spend New Customers CAC
2025-01 $200 10 $20
2025-02 $350 15 $23
2025-03 $300 20 $15

LTV:CAC Ratio

The benchmark is 3:1. Below 3:1, you're spending too much to acquire. Above 5:1, you're under-investing. For bootstrapped founders, 2:1 is acceptable early on, especially with content-led growth (near-zero CAC). Focus on MRR growth first — optimize this ratio later.

Step 4: Calculate Cash Runway

Cash runway is the single most important number for a bootstrapped founder — it tells you how many months you have before you run out of money.

Cash Runway = Current Cash Balance / Monthly Burn Rate

Where Monthly Burn Rate = (Total Expenses) - (Total Revenue). If pre-revenue, Burn Rate = Total Expenses.

Google Sheets Setup

Create a sheet called Cash Tracking:

Month Cash In Cash Out Net Burn Cash Balance Runway (months)
2025-01 $500 $2,000 -$1,500 $10,000 6.7
2025-02 $750 $2,100 -$1,350 $8,650 6.4
2025-03 $1,100 $2,000 -$900 $7,750 8.6

Runway formula (row 2):

=F2 / ABS(E2)
Enter fullscreen mode Exit fullscreen mode

Use ABS() to handle negative burn correctly. If your runway drops below 6 months, reduce expenses or increase revenue. Below 3 months is emergency territory.

Step 5: Build the Dashboard View

Create a final sheet tab called Dashboard — the one you look at every Monday morning.

Top Section: Headline Numbers

Current MRR: $1,100     MRR Growth Rate: 46%
Net New MRR: $350       Churn Rate: 4.5%
ARPA: $55               LTV: $978
CAC: $15                LTV:CAC: 65:1
Cash Balance: $7,750    Runway: 8.6 months
Enter fullscreen mode Exit fullscreen mode

Middle Section: MRR Waterfall Chart

Create a waterfall chart: Starting MRR → + New MRR → + Expansion MRR → - Churn MRR → = Ending MRR. This shows where your growth is coming from (or where it's leaking).

Bottom Section: Trend Lines

Three line charts: Total MRR over time, Net New MRR over time (acceleration/deceleration), and Churn MRR over time (is churn worsening?).

To set up: Select your MRR Summary data → Insert → Chart → choose Waterfall or Line chart → customize colors (green for positive, red for churn).

Step 6: Set Up Weekly Alerts

You shouldn't have to open the dashboard to know if something needs attention. Set up automated alerts with Google Apps Script:

function sendWeeklyMRRReport() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('MRR Summary');
  var lastRow = sheet.getLastRow();

  var latestMonth = sheet.getRange(lastRow, 1).getValue();
  var totalMRR = sheet.getRange(lastRow, 6).getValue();
  var churnMRR = sheet.getRange(lastRow, 4).getValue();
  var netNewMRR = sheet.getRange(lastRow, 5).getValue();
  var prevMRR = sheet.getRange(lastRow - 1, 6).getValue();
  var growthRate = ((totalMRR - prevMRR) / prevMRR * 100).toFixed(1);

  var body = 'Weekly MRR Report\n\nTotal MRR: $' + totalMRR +
    '\nChurn MRR: $' + churnMRR + '\nNet New MRR: $' + netNewMRR +
    '\nGrowth Rate: ' + growthRate + '%\n\n';

  if (churnMRR > totalMRR * 0.1) body += '⚠️ Churn exceeded 10% of MRR.\n';
  if (netNewMRR < 0) body += '⚠️ Net New MRR is negative.\n';

  MailApp.sendEmail({
    to: 'founder@yourdomain.com',
    subject: 'Weekly MRR Report — ' + latestMonth,
    body: body
  });
}
Enter fullscreen mode Exit fullscreen mode

Set this to run every Monday at 8 AM via a time-driven trigger.

Step 7: Benchmark Your Numbers

Once your dashboard is running, compare your metrics against industry benchmarks compiled from public SaaS metrics (Baremetrics Open, ChartMogul SaaS Report, KeyBanc SaaS Survey):

Metric Early Stage (<$10K MRR) Growth Stage ($10K-$100K MRR) Red Flag
Monthly MRR Growth Rate 10-25% 5-15% <3% sustained
Monthly Churn Rate (Logo) 5-10% 2-5% >10%
Monthly Churn Rate (MRR) 3-8% 1-4% >8%
ARPA $20-100 $50-500 Declining over time
LTV:CAC >2:1 >3:1 <1:1
Net Revenue Retention >90% >100% <80%
Cash Runway >6 months >12 months <3 months

If your MRR growth is above 15% and churn is below 5%, you have a healthy early-stage SaaS. If churn exceeds 10%, stop everything and fix it — at 10% monthly churn, you lose 72% of customers over 12 months. If your LTV:CAC is below 1:1, you're spending more to acquire than customers are worth — cut acquisition spend and focus on organic growth.

Maintenance and Review Rhythm

Weekly (15 min): Check dashboard, review email summary, note anomalies.

Monthly (1 hour): Reconcile Stripe data, update LTV/CAC, cash balance, runway, compare against benchmarks.

Quarterly (2 hours): Email 10 churned customers. Review pricing and CAC. Update 12-month projection.

Final Thoughts

Building your own MRR dashboard isn't just about saving money. It's about understanding your numbers at a level that paid tools won't give you. When you build the formulas yourself, you understand what drives each metric.

Your free dashboard works until $10K MRR. Beyond that, consider ChartMogul ($50/mo) or Baremetrics ($129/mo). Switch when data entry takes 30+ min/week or when you need cohort analysis.

Set aside 2-3 hours this weekend. Build the dashboard. Start tracking. The clarity from seeing your actual numbers will change how you make decisions.

Written by Insight Lab

Top comments (0)