All projects
Company
Kahuna
Industry
Marketing analytics, B2B SaaS
Role
UX Designer
Scope
Research, IA, data viz, interaction, visual design
Team
Product, Design, Engineering
Campaign performance dashboard

Redesigning Kahuna’s campaign dashboard so marketers could find the insight, not just the numbers

Kahuna Analyze Messages dashboard in trend view, with a left filter rail, KPI tiles, and a multi-metric line chart

Summary

I redesigned Kahuna’s campaign performance dashboard so marketers could answer “is this campaign working?” without drowning in metrics, inconsistent toggles, or a filter bar that ate the first two rows of the screen.

Research with 13 campaign managers and marketing heads shaped a left-rail filter, a smaller set of high-level KPIs, and a visualization model that could add channels without splitting the story across charts.

The context

Campaign managers send campaigns to onboard new users, drive engagement, or retain people who are slipping away. After launch, they need to know whether delivery is on track and whether the campaign is actually working.

My goal was a campaign performance dashboard that made those insights easy to find — not a wall of numbers that required a specialist to interpret.

Design challenge

Design a performance surface that leads with decisions, stays scannable as Kahuna adds channels, and keeps the selected filters in view — so marketers can move from “is this working?” to “what should we change?” without fighting the UI.

01 — The problem

The dashboard was hard to read and harder to trust

Customer feedback clustered around two issues: confusing interaction, and missing or poorly presented KPIs. Some tiles were static and some were toggles, with no visual distinction. Channels were icons. Split charts made it difficult to compare an overall trend. Finding a specific campaign meant scrolling an infinite list. Date range ate the first two rows.

Legacy Kahuna Campaign Performance dashboard with numbered callouts on KPI tiles, split charts, campaign list, and date range

The existing Campaign Performance dashboard, annotated with the five issues that kept coming up in customer feedback.

What was breaking down

  • KPI tiles mixed static cards with hidden toggles — new users did not know what they could click.
  • Channel icons were hard to recognize, especially once more than a couple of channels were in play.
  • Splitting channels into separate charts made it difficult to compare and read the overall trend.
  • An infinite-scroll campaign list made a specific campaign hard to find.
  • Date range and filter controls took too much vertical space before any insight appeared.
02 — Research

What campaign managers and marketing heads actually needed to see

To understand how marketers monitored a campaign, and where the current workflow failed them, we interviewed six campaign managers and seven heads of marketing.

We have different goals for different campaigns, but I mostly care about the conversion rate.

Head of Marketing
Campaign Manager

Needs aggregate and detailed metrics, then uses past-campaign data to form hypotheses for the next send.

Head of Marketing

Needs high-level engagement, goals, and conversion — and a trend that can be presented to the executive team.

Persona sheet for Catherine Morgan, Campaign Manager

Catherine, Campaign Manager — she analyzes campaigns in aggregate, then dives into the data to test hypotheses for the next one.

Persona sheet for Daniel, Head of Marketing

Daniel, Head of Marketing — he watches high-level engagement, goals, and conversion, then maps the trend back to business strategy.

Key findings

  • Both audiences care about the numbers — the disagreement is which numbers, and at what altitude.
  • Heads of marketing read high-level metrics and trend to set strategy.
  • Campaign managers watch delivery, test hypotheses, and judge whether the campaign is effective.
03 — Design goals

Simplify the interaction, then make it scale

Kahuna planned to offer more channels. The current interface could not absorb that growth. We used the research, the existing pain points, and that business constraint to prioritize what to fix first.

What we set out to improve

Remove hidden interaction

Eliminate togglable KPI tiles and other controls that looked static until someone happened to click them.

Give filters a real home

Clean up and relocate date range and filter selection so they no longer consumed the first two rows of the dashboard.

Make the campaign list searchable

Replace infinite scroll with a list people could scan, search, and keep in context.

Design for more channels

Build a layout and KPI model that could add SMS — and whatever came next — without splitting the story across charts.

04 — Filter placement

Where does the filter live?

Campaign managers review performance and use it to plan the next send — so they need to know what is currently filtered. On the existing dashboard, those controls took the first two rows.

I sketched three placements, then reviewed them with product managers and the design team.

Three options

Expand in place

A filter toggle reveals the panel and pushes content down. It saves space, but the main view jumps, and collapsed filters disappear — people can no longer see what they selected.

Wireframe of a dashboard with a full-width filter bar that pushes KPIs and the chart down

Filter options expand as a full-width bar above the KPI row.

Popup panel

A toggle opens filters as an overlay. It also saves space, but it covers the data, hides the current selection when closed, and sits in a weak spot in the hierarchy — changing a filter affects both KPIs and the chart.

Wireframe of a dashboard with a filter popup covering the lower-right of the chart

Filter options as a popup over the main content.

Fixed left rail

Filters stay on the left. It uses more width, but the selection is always visible, and changing a filter and reading the result happen in the same glance. We shipped this one: hiding filters saved space, but most people preferred to see what they had selected.

Wireframe of a dashboard with a fixed left filter rail beside KPI tiles and a chart

A persistent left panel keeps type and channel in view beside the dashboard.

Legacy dashboard with date range presets and type and channel checkboxes spanning the top of the page

The current screen: date range, type, and channel occupied the first two rows before any KPI or chart appeared.

Hand-drawn sketches of three dashboard filter placements: accordion, popup, and fixed left panel

Early sketches: expand-in-place, a popup panel, and a fixed left rail. The question was not only space — it was whether the selected filters stayed visible.

05 — KPI tiles

High-level metrics, not a tile for every channel

Across Kahuna’s analytics dashboards, some KPI tiles toggled series on the chart and some did not. Customer Success told us most people never realized the difference.

Scalability made it worse. More channels meant more breakdowns, and some metrics only existed for one channel — unsubscribe for email, for example. Showing every metric as a tile would not hold.

Audience Engagement dashboard with annotations marking which KPI tiles can toggle the chart and which cannot

On the engagement dashboard, some tiles were static and some were toggles. The interaction was not labeled, so the pattern could not be learned.

Four KPI tile layout explorations, ending with Delivered, Engagement, Responses, Primary Goals, and Attritions

Iterations: two rows of mixed positive and negative metrics, a horizontal scroller, and the direction we shipped — five high-level tiles with negative metrics grouped as Attritions.

KPI row with a Show Channels toggle revealing Push, In-App, Email, and SMS breakdowns

A Show Channels toggle reveals per-channel counts on the tiles without adding a tile per channel. Detail lives on the individual campaign.

What we shipped

Show only high-level KPIs. Bucket negative metrics as Attritions. Use a channel toggle for breakdowns. If someone needs the long tail of metrics, they open the specific campaign.

06 — Visual design

One component set, so every analytics view could scale

To make the redesign scale beyond this dashboard, I inventoried reusable pieces, standardized color and layout, and cleaned up the rest of the analytics surfaces so they shared one visual language.

Visual specification for Kahuna KPI tiles, legends, chart popovers, and metric color palette

The component kit: KPI tiles with and without channel breakdown, clickable legends, chart popovers, and a split palette for positive versus negative metrics.

A composite of Kahuna analytics dashboards after visual cleanup

Applying the same layout, color, and tile language across Kahuna’s analytics dashboards so none of them felt like a one-off.

High-fidelity Kahuna Analyze Messages prototype in trend view

The high-fidelity prototype of Analyze Messages: left-rail filters, five outcome tiles, and a single comparable trend.

High-fidelity prototype

Walking the redesigned dashboard: changing filters, reading the tiles, and moving between trend and list.

07 — Final

Trend for the story, list for the campaign

The shipped dashboard has two complementary views. Trend answers whether performance is moving. List finds a specific campaign and keeps name and status in view while scrolling.

Key interactions

Filters update immediately

Changing type, channel, or date range updates the tiles and chart in place, so the left rail is a control surface rather than a form to submit.

Screen recording of Kahuna dashboard filters updating KPI tiles and the chart immediately

Adjusting filters and watching the dashboard respond without a page reload.

Legend, chart, and KPI stay linked

Clicking a legend shows or hides the series. Hovering the chart lights the matching KPI top bar, so the relationship between tile and line is visible rather than implied.

Screen recording of chart hover and legend interaction lighting the matching KPI top bar

Legend clicks and chart hover highlighting the related KPI tile.

A list that stays oriented

The campaign table pins header, name, and status, so scrolling through hundreds of campaigns does not lose the row you were trying to compare.

Screen recording of the Kahuna campaign list with sticky header and status while scrolling

Campaign list view with a fixed header, name, and status column.

Final Kahuna campaign dashboard in trend view

Trend view — outcome first, then a comparable chart across channels.

Final Kahuna campaign dashboard in list view with a sortable campaign table

List view — find a campaign, keep status in view, expand a cross-channel row for detail.

The resolution

The redesign gave marketers a performance surface they could scan: filters they could see, KPIs they could trust, and a path from business outcome down to a single campaign — without waiting for Kahuna to stop adding channels.

My involvement

I led UX for the campaign performance dashboard — research synthesis, information architecture, data visualization, and visual design — partnering with product and front-end engineering. Tara led development; David was the senior designer on the team; Justin oversaw the project.

© 2026 Grace Lee