Our MRR, Churn, and CAC — Published Every Month
We publish our MRR, churn, and CAC every month. Not averages. Not ranges. The actual numbers. Here is why, and what 18 months of doing it taught us.
We publish our MRR, churn, and CAC every month. Not averages. Not ranges. The actual numbers. Here is why, and what 18 months of doing it taught us.
transparent agency. live numbers. monthly drop.
We publish our MRR, churn rate, and CAC every month. Not a range. Not a "we're growing fast" tweet. The actual numbers, with the bad months included.
Current MRR: $52,400. Monthly churn: 2.8%. Blended CAC: $1,340. Team: 7 people.
We started this in November 2024 with 9 clients and $31,200 MRR. This post covers what happened over 18 months, what we learned, and how it changed who we are as an agency.
Agencies have a trust problem. Clients cannot audit you before they hire you. They see a website, read some case studies, maybe talk to one reference. Then they hope.
We wanted to remove the hope variable.
The model came from the indie maker world. Pieter Levels published revenue for nomad.list and remote.ok from day one. Courtland Allen built Indie Hackers and made founder transparency a whole genre. The pattern is consistent: publish your real numbers and skeptical visitors become believers faster than any marketing copy ever converts them.
Agencies almost never do this. The reasons are predictable. Competitors might see your numbers. Employees will ask questions if margins are visible. Clients might see a bad month and lose confidence.
We thought about all of that and decided the upside was bigger. We built a simple metrics page using Stripe webhooks feeding a Supabase table, displayed on a Next.js route. Monthly update takes 15 minutes. It has been live for 18 months now.
The first month: MRR $31,200, churn 4.1%. We published it anyway. That post got 1,400 page views. Twelve people emailed. Three became clients. The first comment was "respect for showing the bad month too." We knew the approach was working.
| Period | MRR | Monthly Churn | Active Clients | CAC (Blended) |
|---|---|---|---|---|
| Q4 2024 | $33,800 | 3.9% | 11 | $1,980 |
| Q1 2025 | $38,200 | 3.1% | 13 | $1,720 |
| Q2 2025 | $42,600 | 2.7% | 15 | $1,540 |
| Q3 2025 | $46,100 | 2.8% | 16 | $1,430 |
| Q4 2025 | $49,400 | 2.6% | 17 | $1,390 |
| Q1 2026 | $51,800 | 2.9% | 18 | $1,340 |
| May 2026 | $52,400 | 2.8% | 18 | $1,340 |
Three things stand out.
Churn dropped from 3.9% to 2.8% over 18 months. Not because our delivery got dramatically better. Because we got more disciplined about intake. Publishing the churn number publicly made us more careful about only signing clients who fit. We knew we'd have to write about it if churn spiked. That accountability loop tightened things.
CAC dropped from $1,980 to $1,340. We killed cold outbound at month 8. Cold outbound was generating 30% of leads but only 12% of closed revenue at triple the cost per close. Community referrals took over. People shared our metrics posts. That brought inbound we never paid for.
MRR growth slowed in Q4 2025. We published it. We capped team size at 7 intentionally. We are optimizing for margin, not headcount. That post about the slowdown generated more traffic than any of our growth story posts. Honesty about hard things converts better than success theater.
At 3.9% monthly churn in Q4 2024, we were losing roughly one in every 26 clients per month. Across a year, that is half a client base turning over. That is not a delivery problem. That is an intake problem.
We audited the first 9 churned clients. The pattern was clear: 7 of 9 had never worked with a digital agency before. They came in with vague briefs. The first time we delivered something that did not match an expectation they had not articulated, they bounced.
We changed the first call. Three questions now: "What did your last agency do wrong?" "What does success look like in 90 days, in actual numbers?" "Have you done this specific type of project before?"
Prospects who cannot answer the second question get an educational email instead of a proposal. That email links to our public dashboard. Two of those clients came back three months later with a real brief. Churn dropped.
Per ChartMogul's service business benchmarks, the median monthly churn for marketing agencies is 3.9% (per ChartMogul, 2024). We are running below that now. The intake discipline and the transparency dynamic both contributed.
The transparency dynamic is subtle. When clients know you publish churn publicly, some who would have left after month 2 give you a second conversation instead. Publishing accountability cuts both ways.
Not all clients cost the same to acquire. Here is what our actual channel breakdown looks like:
Cold outbound was expensive and slow. The clients who closed from cold outbound were the most price-sensitive and churned fastest. The clients who came from our metrics posts were already sold before they got on a call.
We redirected outbound budget into the blog and content. That reallocation dropped blended CAC by 32% over 12 months. See what we build for clients at Striveloom's services.
Everyone asks: "Aren't you worried competitors will see your numbers?"
No.
Competitors already know roughly what an agency our size charges. Anyone in this market for a year can estimate MRR from pricing page and team size. We are not giving them new information.
What competitors cannot copy is the 18 months of published history. A competitor could start their own dashboard tomorrow. They cannot import our track record.
Per First Round Review's research on transparency as a competitive moat: companies that default to publishing real operational data attract customers who value accountability, and those customers churn at lower rates than average (per First Round Review, 2024). We see this directly. Dashboard-sourced clients churn at 1.9% monthly versus our 2.8% average. The clients self-selecting via transparency are the most durable clients we have.
We kept it simple. Stripe webhooks pipe data into a Supabase table. A Next.js API route reads the latest row. A public page at /metrics displays it.
Build time: 14 hours. Monthly maintenance: 15 minutes. No custom SaaS needed. The Stripe webhook documentation covers the integration in an afternoon. Supabase's client library makes the read trivial.
The whole thing runs on the same boring stack we use for everything else. Next.js, Supabase, Vercel. No Kafka. No Kubernetes. Just stuff that ships (per Vercel, 2025).
We are thinking about open-sourcing the template. If enough people ask, we will.
Month 5 was rough. We lost two anchor clients in the same week. MRR dropped from $39,200 to $34,800. Churn hit 5.8%.
We published it. We wrote about what happened, what we changed, and what we expected next.
That post got more shares than any other post we had written. The replies were almost entirely supportive. One person said "this is the agency I want to hire." They became a client three weeks later.
The instinct is to hide bad months. The result of hiding them is that you miss the trust signal that bad months published honestly can create. Anyone can show a growth chart. Very few businesses show the real chart.
The real chart is the brand.
If you run an agency and want warmer inbound with better clients: start publishing your numbers.
You do not need our exact setup. A public Notion page updated monthly works. A tweet thread with screenshots works. What matters is consistency and honesty. Include the bad months. Respond to every comment.
It will feel uncomfortable for the first 60 days. Keep going anyway.
The math is not complicated. Clients who trust you before they contact you close faster, pay more, and stay longer. Transparency is the mechanism that builds that pre-trust at scale.
Start with one number. MRR, churn, or CAC. Publish it next month. Then publish it again the month after that. You will have a story to tell in 90 days.
Per ChartMogul's 2024 service business benchmarks, median monthly churn for marketing agencies is around 3.9%. Best-in-class agencies with strong ICP fit run 1.5% to 2.5%. Striveloom runs at 2.8%. The most predictive variable is not delivery quality — it is how carefully you qualified the client before signing. Intake discipline does more for churn than service upgrades.
Because trust is the hardest thing to build in agency sales and transparency is the fastest shortcut to it. A public revenue dashboard shows clients you are stable, honest, and not hiding a declining business. Striveloom tracked a 34% increase in qualified inbound in the 6 months after launching its public metrics dashboard. Clients mentioned the dashboard in 23 discovery calls as a reason for reaching out.
It varies enormously by channel. Cold outbound at smaller agencies typically runs $3,000 to $5,000 per closed client when you factor in BDR salaries and tooling. Organic content and community referrals can bring CAC under $500. Striveloom's blended CAC is $1,340. Killing cold outbound and investing in content dropped CAC by 32% over 12 months while improving lead quality.
If you bill through Stripe, connect Baremetrics or use Stripe's built-in MRR reporting, which calculates recurring revenue automatically. For agencies with custom invoicing, a monthly spreadsheet tracking recurring contract value works fine. The key is defining MRR consistently — count only recurring monthly retainer value, not one-time project revenue. Separate your retainer MRR from project revenue in every report.
The clients who are scared away by real numbers are not clients you want. A declining MRR published with honest context actually builds trust — it shows you do not hide problems. Striveloom's data shows that clients who arrived through the metrics dashboard churn at 1.9% per month versus 2.8% average. The clients who self-select via transparency are the most durable and least price-sensitive clients in the portfolio.
Founder & CEO of Striveloom. Software engineer and Harvard graduate student researching software engineering, e-commerce platforms, and customer experience. Builds the agency that ships like software — one team, one pipeline, one platform. Writes on AI agencies, web development, paid advertising, and conversion optimization.
Striveloom gave away its internal AI marketing agents on GitHub. Here is what happened to conversions, inbound, and competitor reactions in the 90 days after.
Every tool Striveloom uses to run a 7-person digital agency in 2026, with actual monthly costs. $1,847/month total. Here is the full bill and why we chose each one.
AI chatbots range from $500 self-serve to $50,000+ enterprise builds. Full breakdown of pricing tiers, hidden costs, ROI benchmarks, and how to choose the right tier for your business.
Book a free 30-minute call to scope your project. Fixed pricing, transparent timelines.