Diagnosing changes
Know why MRR or signups moved, with the cause already worked out
A number going down is not information until you know why. Joinsight splits every change into the segments that drove it, by plan, billing source, country, channel and page, and sends one alert when a change is large enough to matter, with the cause attached.
No card required. The trial clock starts when your first revenue source connects.
Why it's hard to answer today
- A billing dashboard shows MRR fell, then leaves you to filter customers one segment at a time.
- Failed renewals look like churn until you open each subscription.
- Traffic, signups and revenue live in three tools, so a search drop and a signup drop are never seen together.
| Contributor | Churned MRR |
|---|---|
| Plan: Solo monthly | €58 |
| Country: Germany | €58 |
| First touch: /blog/mrr-calculator | €29 |
Segments overlap across dimensions: the same customer can appear under a plan, a country and a page.
How Joinsight answers it
Five alerts, at most one a day each
Churn spikes, signup drops, a money page slipping in search, failed payments and data health. Each needs a minimum baseline, so small numbers don't page you.
The cause comes with it
Each alert ranks the segments that contributed most to the change, such as one plan, one country or traffic from one channel landing on one page. For churn, that includes why customers left: the reason they gave when canceling, or a failed payment.
Movements, per customer
New, expansion, reactivation, contraction and churn, computed per customer day over day, and broken down by plan, source, country or first-touch channel.
Context on the chart
Stripe price changes are added as annotations automatically. Add your own notes for a launch or an outage, and they appear on every chart and in explanations.
What you connect
Good to know
- Channel and page breakdowns need the snippet. Plan, source and country work from billing data alone.
- Alerts compare the last 7 days with the 4 weeks before. Billing history is imported, so churn alerts work from the start; signup alerts need about a month of identify() calls first.
- Search Console lags 2 to 3 days, so a search-driven drop shows up in the data after the signups have already fallen.
- Web customers give a cancellation reason only once you turn on the question in Stripe's customer portal. Apple and Google never ask, so mobile cancellations carry the store's reason at most.
Set it up
- Alerts, the Monday brief and new-customer pings
The five alert rules and when they fire, what the Monday brief contains, and how to send new-customer pings to Slack or Discord.
- Read the dashboard
What each screen answers: Overview, Revenue and customers, Content and channels, and Connections. Periods, provenance labels and the MRR share card.
Further reading
Other questions it answers
- Content-led SaaSWhich blog posts bring paying customers?Revenue per landing page, measured from the first visit of each customer who paid.
- SEO planningWhat should I write or refresh next?Queries close to page one, on pages that already earn, ranked by what a better position is worth.
- Web and mobile appsWhat is my real MRR across the web and the App Store?Stripe and RevenueCat combined, with a subscription in both counted once.
- Launches and socialDid the launch or the post bring customers?Revenue per channel and community, from Hacker News to Product Hunt, with tagged links where referrers are stripped.
- AI assistant reviewCan I just ask my AI assistant about my numbers?Yes. The MCP server returns the dashboard's numbers, with their definitions and labels.
See what makes you money.
Connect Stripe or RevenueCat and Search Console, and you see combined MRR and 16 months of search history on day one. Page and keyword revenue follow as the snippet collects first touches.
No card required. The trial clock starts when your first revenue source connects.