Dashboard

What goes in a session frustration signals dashboard?

A session frustration signals dashboard aggregates the behavioral distress signals session tools capture — rage clicks, dead clicks, error clicks, and abandoned flows — normalized by traffic so a busy page doesn't automatically look like a broken one.

For: Product managers, designers, and frontend engineering leads. Refresh: daily. Source: modeled feedback, survey, and product-usage tables in a Metabase-connected database.

Which cards belong on this dashboard?

  • Rage clicks per 1,000 sessions by page
  • Dead and error clicks by flow over time
  • Frustrated-session share with trend
  • Top frustration pages this week vs. last
  • Frustration signals by release or deploy marker
  • Funnel steps with the highest abandonment
  • Frustration by device and browser
  • Sessions affected by frontend errors

What data does this dashboard need?

  • Daily session rollups per page or flow (sessions, rage, dead, error clicks)
  • Conversion or funnel-step outcomes per flow
  • Release or deploy markers with timestamps
  • Device and browser dimensions on rollups
  • Frontend error groups where the tool tracks them

How do you build it?

  1. Sync the source tools into a database and retain raw IDs, timestamps, statuses, and segment fields.
  2. Build modeled tables at the grain this dashboard requires.
  3. Create one saved question per card and certify the shared models and definitions.
  4. Add dashboard filters for Date range, page or flow, device, browser, release.
  5. Show refresh time, and exclude internal and test activity from every headline card.

Example card SQL

Pages with rising rage-click rates week over weekPostgreSQL
WITH weekly AS (
  SELECT
    page_or_flow,
    date_trunc('week', usage_date) AS week,
    1000.0 * SUM(rage_clicks) / NULLIF(SUM(sessions), 0)
      AS rage_per_1k
  FROM session_rollups
  GROUP BY 1, 2
), compared AS (
  SELECT
    page_or_flow,
    week,
    rage_per_1k,
    LAG(rage_per_1k) OVER (
      PARTITION BY page_or_flow ORDER BY week
    ) AS prior_week
  FROM weekly
)
SELECT
  page_or_flow,
  ROUND(rage_per_1k, 2) AS this_week,
  ROUND(prior_week, 2) AS last_week
FROM compared
WHERE week = date_trunc('week', CURRENT_DATE)
  AND rage_per_1k > COALESCE(prior_week, 0)
ORDER BY this_week DESC;

Dashboards

Integrations

Metrics

Analytics

FAQ

Are rage clicks a reliable signal?
Directionally, yes — spikes correlate with broken interactions and dead UI. But baselines differ by page type (data tables invite multi-clicking), so trend each page against itself and normalize per session before comparing pages.
Which tools produce this data?
Session intelligence platforms like Fullstory, LogRocket, and Contentsquare all track frustration signals. Land their daily rollups in a warehouse and keep replay drill-downs in the source tool.