Dashboards & Analytics · Campaign Intake

Campaign Intake Dashboard With Source and UTM Filters

A filterable intake dashboard that lets operators slice incoming form submissions by campaign, source, and UTM so they can read each campaign's intake without exporting anything.

4 to 7 days
build time
4
outcomes
5
stack tools
6
build steps

Built with real HMX dashboard tool paths

Supabase PostgresSQL view + indexes (UTM dimensions)Next.js 16 server componentsMetabase (saved filters)Vercel hostingSupabase PostgresSQL view + indexes (UTM dimensions)Next.js 16 server componentsMetabase (saved filters)Vercel hosting

01 // Outcomes

Outcome signals

Filterable
intake by campaign, source, medium, and UTM
Saved presets
for the campaigns operators check most
Fast
server-side filtering on a growing intake table
Surfaced
untagged submissions for tagging cleanup

Case architecture

Campaign Intake Dashboard With Architecture

6 nodes
the intake fields that carry
indexes on the filter
Supabase Postgres
SQL view + indexes
Review Queue
Dashboard Action
  1. 01the intake fields that carry

    A filterable intake dashboard that lets operators slice incoming form submissions by campaign, source, and UTM so they can read each campaign's int...

  2. 02indexes on the filter

    Add indexes on the filter columns so server-side filtering stays fast on a growing table.

  3. 03Supabase Postgres

    Supabase Postgres contributes the trusted model for Campaign Intake Dashboard With so metrics are defined before they are visualized.

  4. 04SQL view + indexes

    Build a view exposing the campaign dimensions plus daily and rolling intake counts.

  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

    Filterable intake by campaign, source, medium, and UTM; Saved presets for the campaigns operators check most; Fast server-side filtering on a growi...

Problem

The operating gap

When several campaigns run at once, intake all lands in the same table and there is no fast way to filter 'just the spring campaign from paid social' — so campaign performance questions turn into manual exports and pivot tables.

Build

What gets built

A read-only intake dashboard backed by an indexed Postgres view that exposes campaign, source, medium, and UTM dimensions with saved filters, plus daily intake volume per campaign. Filters are driven server-side so large intake tables stay fast, and a Metabase model offers ad-hoc breakdowns on the same fields.

Build steps

How it ships

Campaign Intake Dashboard With Source and UTM Filters uses a reporting model and review layer for Dashboards. A filterable intake dashboard that lets operators slice incoming form submissions by campaign, source, and UTM so they can read each campaign's int... The architecture connects the intake fields that carry, supabase postgres, sql view + indexes, and dashboard action with an explicit control path.

  1. 01Map the intake fields that carry campaign / source / medium / UTM and confirm capture is consistent across forms.
  2. 02Add indexes on the filter columns so server-side filtering stays fast on a growing table.
  3. 03Build a view exposing the campaign dimensions plus daily and rolling intake counts.
  4. 04Implement saved filter presets (per campaign, per source) in the dashboard UI behind the admin session.
  5. 05Add a 'missing UTM' indicator so untagged intake is visible and fixable.
  6. 06Hand over with documented filter presets and a short note on keeping UTM tagging clean.

Stack

Tools and layers

  • Supabase Postgres
  • SQL view + indexes (UTM dimensions)
  • Next.js 16 server components
  • Metabase (saved filters)
  • Vercel hosting
  • Inputs layer: Map the intake fields that carry campaign / source / medium / UTM and confirm capture is consistent across forms.
  • Transform layer: Add indexes on the filter columns so server-side filtering stays fast on a growing table.
  • Metrics layer: Supabase Postgres contributes the trusted model for Campaign Intake Dashboard With so metrics are defined before they are visualized.
  • Visualization layer: SQL view + indexes (UTM dimensions) handles refresh, review, or reporting delivery while a read-only intake dashboard backed by an indexed Postgres view that exposes campaign, source, medium, and UTM dimensions with saved filters, plus...
  • Action layer: Filterable intake by campaign, source, medium, and UTM; Saved presets for the campaigns operators check most; Fast server-side filtering on a growi...

Data flow

  1. 01Map the intake fields that carry campaign / source / medium / UTM and confirm capture is consistent across forms.
  2. 02Add indexes on the filter columns so server-side filtering stays fast on a growing table.
  3. 03Build a view exposing the campaign dimensions plus daily and rolling intake counts.
  4. 04Implement saved filter presets (per campaign, per source) in the dashboard UI behind the admin session.
  5. 05Add a 'missing UTM' indicator so untagged intake is visible and fixable.
  6. 06Hand over with documented filter presets and a short note on keeping UTM tagging clean.

Controls

  • When several campaigns run at once, intake all lands in the same table and there is no fast way to filter 'just the spring campaign from paid socia...
  • A read-only intake dashboard backed by an indexed Postgres view that exposes campaign, source, medium, and UTM dimensions with saved filters, plus...
  • When automation confidence is low, route the record to a manual owner with the source, stage, and last action attached.