Dashboard

Real Stripe data where it's computable today (heartbeat, revenue, renewal rate, failed collections, target tracker, invoices). Tiles with a light red background still need input from you or a new integration — see the note on each.
Daily heartbeat
—

Loading…

Live from Stripe
Paying members
—
Loading…
Free members
—
Loading…
MRR
—
From paying members only
ARR
—
Annualized run rate
Renewal rate — by month
MonthRenewedChurnedNot paidRate
Renewal rate — by quarter
QuarterRenewedChurnedNot paidRate

Uses each subscription's real cancellation date (Stripe's canceled_at/ended_at), not the rolled-forward current_period_end — so a canceled subscription only counts as churned once it actually ends. "Renewed"/"Not paid" come from invoices with billing reason "subscription_cycle" (an actual renewal charge, not a new signup).

Q3 2026 target tracker (current quarter — Q4's 1,350 target starts tracking Oct 1)
Opening (Jul 1) —
Target — 1,350 members by Dec 31 (Q4)
Opening
—
Renewals retained
—
Churn
—
New members
—
Closing (today)
—
of 1,350 Q4 target

This is a live reconstruction of Q3-to-date (Jul 1 → today) from real subscription start/cancellation dates, to prove the model works. It'll switch to tracking Q4 (Oct 1 → Dec 31) against the 1,350 target automatically once Q4 begins.

Failed collections — never counted as revenue
MemberEmailAmountFailed onDays agoStatus

Pulled live from Stripe invoices with status "open" (past due) or "uncollectible", scoped to subscriptions that are still active, trialing or past due today — a now-canceled subscription's old unpaid invoice won't show up here. These aren't in MRR/ARR above since only active/trialing subscriptions are counted there — but they're worth a dedicated view so an unpaid member is never mistaken for a paying one. "Visible in HubSpot" (per the requirement) is Phase 2 — for now this proves the underlying Stripe data is solid.

Membership lead pipeline (HubSpot deals)

Tracking toward the 611 new members targeted for Q3–Q4 2026 — live from the HubSpot deal pipeline, stage by stage.

Invoices on the HubSpot contact record — mockup of a contact-embedded module, real invoice data

Stripe's hosted invoice links expire after 30 days — this keeps every invoice permanently reachable from the contact itself.

InvoiceAmountStatusIssued

The table itself and its data are real (a real customer's real recent invoices) — what's still a mockup is WHERE it lives: actually embedding this on the HubSpot contact record is Phase 2 build work, not something this app can do yet.