← All work
01

Case Study · Toddle · 2023–2025

83% of notifications were being ignored.

Role
Sr Product Designer — sole lead
Timeline
2 years · 6 phases
Scope
285 types · 24 modules · 3 channels
Platforms
Web · iOS · Android
83%
Notifications unread — the baseline
285
Notification types catalogued and redesigned
24
Product modules with consistent system
8s1s
Redirect latency — eliminated at architecture level

A system technically present but behaviourally broken.

Toddle's notification system spanned three channels, three platforms, 285 notification types, and four user types. This wasn't a single feature — it was a multi-phase, multi-year initiative that started as a bug-fix exercise and became a fundamental redesign of how the platform communicates.

I was the sole design lead across all six phases — problem framing, competitive research, copy framework, IA, component design, settings UX, and coordination with 14 module-owning engineers.

45-day observed window

83%

of 9.93M notifications — unread

Teachers (staff)97% unread
Students84% unread
Families80% unread

Six failures — all compounding each other.

01

No omnipresent entry point

The notification bell was only accessible from the homepage. Working deep inside a module — reviewing submissions, planning a unit — teachers had no way to know a notification had arrived. A structural flaw, not a UI flaw.

02

Redirect latency destroying trust

Clicking a notification could take 8+ seconds. The system loaded all class data, then all unit data, then the specific item — before redirecting. This created learned behaviour: don't click notifications because it breaks your flow.

03

Volume fatigue with no triage

100+ notification types, 24 modules, no prioritisation, no grouping. Every notification in the same flat list. A teacher managing 8 classes could receive 50+ a day, most low-signal. Desensitisation was inevitable.

04

Inconsistent and meaningless copy

Written by whoever built each feature. Some used ALL CAPS module names. Others had grammatical errors in production — "sent you a audio" — that had never been fixed.

05

Three-channel chaos, no user control

In-app, email, and push existed with incomplete configurations and no logical relationship between channels. No way to say "push for urgent, email for updates." Effectively all or nothing.

06

Zero admin governance

Schools had no ability to control what notifications their students and families received. Admins had no notification access at all.

"The 83% wasn't a panel problem. It was a discoverability and trust problem. Users weren't reaching the panel — and when they did, the redirect failure had taught them not to engage."

Five decisions that rebuilt the system.

Architecture

Global header — not a tray, not a sidebar

An earlier option was a floating "Magic Tray." I built its full interaction model and QA list before concluding it created growing z-index debt across every module. The global header was always the right answer. Moving the bell to a persistent header visible on every page resolved the discoverability failure permanently.

State model

Three states: Unseen → Seen → Read

Most systems use two states. Seen ≠ Read. Scrolling past a notification doesn't process it. The Unread tab is a work queue that only empties through explicit action. Without this distinction, users scroll the panel, everything marks as read passively, and triage value disappears within weeks.

Structure

Four tabs: All / Important / Unread / Mentions

I explored seven tab structures. The final four was the only approach that simultaneously solved the announcement IA problem, gave a triage mechanism (Unread as work queue), a priority filter (Important), and surfaced direct-address events (Mentions). All = history. Important = can't miss. Unread = still need to process. Mentions = being pulled in.

Governance

Admin OFF always wins

Hierarchy: System mandatory → Admin default → User preference. Admin OFF cannot be overridden. Schools like Strathcona-Tweedsmuir and Durham Academy specifically requested the ability to enforce notification-off states — not just set defaults. An advisory model doesn't work when the obligation is institutional.

Infrastructure

Direct hyperlinks, not layered loading

The redirect latency was an architecture problem, not a caching one. The system loaded entire entity trees before navigating. The fix: direct hyperlinks to specific entities, bypassing the load chain. Target: sub-1-second. This single change did more for click-through than any UX or copy improvement could have.

The things that will follow me.

1
Teachers are the most notification-blind — not the most engaged.97% unread, worst of any type. Teachers are in active flow and context-switching is high cost. Notifications need to reach them where they're working — contextually — or the signal is lost.
2
Discoverability is a prerequisite for everything else.No copy quality, panel UX, or tab structure matters if users aren't reaching the panel. The global header move was the most important decision — and the most likely to be deprioritised on cost grounds.
3
Multi-school complexity is not an edge case.44,889 parents in the EU alone had children in more than one school. Designing as if users have one school, one child means the settings model is structurally broken for a significant segment.
4
Trust is rebuilt through reliability, not features.The 8-second redirect taught users not to engage. No UX improvement would fix that. Only structurally eliminating the root cause could repair the trust.

Next case study

The inbox preview is the product →