Direct answer
A retention and engagement dashboard for product managers needs five core widgets (cohort heatmap, retention curve, funnel conversion, DAU/MAU trend, LTV curve) that each answer a distinct question a PM actually asks, filters (country, acquisition channel, signup cohort, platform) that propagate consistently across every widget, a daily refresh cadence, and a pre-aggregated storage layer so the whole page loads quickly even as history grows into the billions of rows.
Structured elaboration
Widget 1: cohort retention heatmap. Signup cohort on one axis, day/week offset on the other, color intensity encoding retention rate; answers "is any specific cohort or any specific point in the lifecycle underperforming."
Widget 2: retention curve. Line-per-cohort or line-per-segment view of retention over offset; answers "what does the SHAPE of decay look like," a question the heatmap's color encoding does not answer as precisely as a line chart does.
Widget 3: funnel conversion. Step-by-step conversion through the early-lifecycle flow (signup to activation to first value); answers "where in onboarding are we losing people," a question retention curves alone cannot localize to a specific step.
Widget 4: DAU/MAU trend. A time series of the stickiness ratio, not just raw DAU or MAU; answers "is the ACTIVE base becoming more or less habitual over time," independent of whether the base is growing or shrinking in raw size.
Widget 5: LTV curve. Cumulative revenue per user by cohort at standard maturity horizons (7/30/90 days); answers "which cohorts and channels are worth the most," connecting the retention story to the revenue story a PM ultimately has to justify roadmap investment against.
Filters, applying consistently to every widget above. Country, acquisition channel, signup cohort date range, and platform; a PM's typical workflow starts at one widget, notices something, then applies a filter to see if it's concentrated in a specific segment, which only works if the filter state is shared page-wide rather than scoped to a single chart.
Recommended data refresh cadence. Daily, computed via an overnight batch job; retention and LTV numbers do not need real-time freshness (unlike an operational uptime dashboard), and a daily cadence is both sufficient for the decisions this dashboard supports and dramatically cheaper to compute than a live, on-demand aggregation over raw event history.
Performance considerations. A nightly batch job pre-aggregates each cohort's day/week-offset retention counts, DAU/MAU per day, and LTV-at-horizon figures into small, indexed summary tables, so the dashboard's live queries only ever touch these pre-computed rows rather than scanning the full raw events/purchases history on every page load or filter change. Materialized views (or an equivalent pre-aggregation table maintained by the batch job) are the standard mechanism; without them, a filter change on a multi-year event history would require a full re-scan, an unacceptable latency for an interactive tool.
Worked example
A PM filters the dashboard to country=Germany, channel=paid_search, cohort_range=last 8 weeks. Every widget updates consistently: the heatmap narrows to the 8 matching cohort rows; the retention curve shows just those cohorts' lines; the funnel widget recomputes conversion using only Germany/paid_search signups; the DAU/MAU trend restricts to Germany/paid_search users; and the LTV curve shows only that segment's revenue curve. Because the underlying pre-aggregation table was built with country, channel, and cohort_week as dimensions (not just pre-aggregated at the global level), this filtered view returns from the pre-computed summary table directly rather than falling back to a live scan of raw events, keeping the interaction fast even though the filter combination is fairly specific.
Trade-offs and pitfalls
- Pre-aggregating only at the GLOBAL level (no dimension breakdown) defeats the purpose of offering filters at all: the moment a PM filters by country or channel, the dashboard would have to fall back to a slow live scan, which is the exact failure mode the pre-aggregation layer exists to prevent; the summary tables need to be built WITH the filter dimensions baked in, not just as a single flat daily total.
- Five widgets is a deliberate scope limit, not an oversight: adding more (a segment-comparison table, a cohort-composition breakdown) without a clear PM-facing question each one answers risks the same "cluttered CEO screen" mistake that a lighter executive-audience dashboard variant should avoid, just at a different altitude; every widget on a working-layer PM tool still needs to earn its place by answering a distinct question.
- A daily refresh cadence is a real trade-off against freshness, and a PM investigating a fast-moving incident (an active production issue actively harming retention right now) may need a faster, narrower ad-hoc query outside this dashboard entirely; the dashboard is built for regular monitoring and trend-spotting, not for minute-by-minute incident response.