Dashboards & Analytics · Lead Sources

Lead Source Review Dashboard for the Weekly Operator Sync

A single read-only view that breaks incoming leads down by source so operators can see which channels actually feed the pipeline before the weekly review.

3 to 6 days
build time
4
outcomes
6
stack tools
6
build steps

Built with real HMX dashboard tool paths

Supabase PostgresSQL view (source/UTM normalization)Next.js 16 server componentsMetabase (read-only BI)Vercel hostingAdmin HMAC sessionSupabase PostgresSQL view (source/UTM normalization)Next.js 16 server componentsMetabase (read-only BI)Vercel hostingAdmin HMAC session

01 // Outcomes

Outcome signals

One view
replaces the weekly source export and guesswork
Per-channel
volume, qualified, and booked side by side
Visible
unknown/blank sources flagged for cleanup, not hidden
Minutes
to answer 'which channel worked' instead of an export

Case architecture

Lead Source Review Dashboard for the Architecture

6 nodes
Audit how source and UTM
a normalization view that
Supabase Postgres
SQL view
Review Queue
Dashboard Action
  1. 01Audit how source and UTM

    A single read-only view that breaks incoming leads down by source so operators can see which channels actually feed the pipeline before the weekly...

  2. 02a normalization view that

    Write a normalization view that maps raw source strings to a clean channel set and exposes volume / qualified / booked per channel.

  3. 03Supabase Postgres

    Supabase Postgres contributes the trusted model for Lead Source Review Dashboard for the so metrics are defined before they are visualized.

  4. 04SQL view

    Define the rolling window and the 'unknown source' bucket so dirty data stays visible instead of silently dropped.

  5. 05Review Queue

    When automation confidence is low, route the record to a manual owner with the source, stage, and last action attached.

  6. 06Dashboard Action

    One view replaces the weekly source export and guesswork; Per-channel volume, qualified, and booked side by side; Visible unknown/blank sources fla...

Problem

The operating gap

Leads arrive from paid ads, organic forms, referrals, and manual entry, but the source tag lives in scattered records and nobody can answer 'which channel is working this week' without exporting a spreadsheet and guessing at the UTM mess.

Build

What gets built

A read-only dashboard built on a Postgres view over the leads table that groups by normalized source/UTM, shows volume, qualified count, and booked count per channel for a rolling window, and surfaces unknown or blank sources as a cleanup flag rather than hiding them. It renders as a Next.js server-component page behind the existing admin session, with an optional Metabase question for ad-hoc slicing.

Build steps

How it ships

Lead Source Review Dashboard for the Weekly Operator Sync uses a reporting model and review layer for Dashboards. A single read-only view that breaks incoming leads down by source so operators can see which channels actually feed the pipeline before the weekly... The architecture connects audit how source and utm, supabase postgres, sql view, and dashboard action with an explicit control path.

  1. 01Audit how source and UTM values are currently stored and list every variant (blank, mislabeled, duplicate spellings).
  2. 02Write a normalization view that maps raw source strings to a clean channel set and exposes volume / qualified / booked per channel.
  3. 03Define the rolling window and the 'unknown source' bucket so dirty data stays visible instead of silently dropped.
  4. 04Render the channel table and trend as a server component behind the admin session, with sort by volume and by booked rate.
  5. 05Add a read-only Metabase question pointed at the same view for operators who want to slice further.
  6. 06Walk the operator through reading it in the weekly sync and document what each column means.

Stack

Tools and layers

  • Supabase Postgres
  • SQL view (source/UTM normalization)
  • Next.js 16 server components
  • Metabase (read-only BI)
  • Vercel hosting
  • Admin HMAC session
  • Inputs layer: Audit how source and UTM values are currently stored and list every variant (blank, mislabeled, duplicate spellings).
  • Transform layer: Write a normalization view that maps raw source strings to a clean channel set and exposes volume / qualified / booked per channel.
  • Metrics layer: Supabase Postgres contributes the trusted model for Lead Source Review Dashboard for the so metrics are defined before they are visualized.
  • Visualization layer: SQL view (source/UTM normalization) handles refresh, review, or reporting delivery while a read-only dashboard built on a Postgres view over the leads table that groups by normalized source/UTM, shows volume, qualified count, and booked...
  • Action layer: One view replaces the weekly source export and guesswork; Per-channel volume, qualified, and booked side by side; Visible unknown/blank sources fla...

Data flow

  1. 01Audit how source and UTM values are currently stored and list every variant (blank, mislabeled, duplicate spellings).
  2. 02Write a normalization view that maps raw source strings to a clean channel set and exposes volume / qualified / booked per channel.
  3. 03Define the rolling window and the 'unknown source' bucket so dirty data stays visible instead of silently dropped.
  4. 04Render the channel table and trend as a server component behind the admin session, with sort by volume and by booked rate.
  5. 05Add a read-only Metabase question pointed at the same view for operators who want to slice further.
  6. 06Walk the operator through reading it in the weekly sync and document what each column means.

Controls

  • Leads arrive from paid ads, organic forms, referrals, and manual entry, but the source tag lives in scattered records and nobody can answer 'which...
  • A read-only dashboard built on a Postgres view over the leads table that groups by normalized source/UTM, shows volume, qualified count, and booked...
  • When automation confidence is low, route the record to a manual owner with the source, stage, and last action attached.