Dynamic Content

Dynamic Content project artwork

Klaviyo / Product design

I redesigned how marketers find and configure dynamic data, then see it in their messages.

Personalization was hiding in code

A first name, an abandoned-cart item, or a fallback greeting could make an email more relevant. But in the classic editor, those values appeared as template code. Customers worried that changing it would break their message, and some avoided adapting templates to their own brand.

Classic editor · Template code on the canvas
Classic email editor displaying first-name and product personalization as code inside an email.
Customers had to read the code to understand what their recipients would see.

The problem extended beyond the canvas. Customers could miss that a subject line or button label supported personalization at all. Setting a fallback or formatting a value often meant leaving the editor to find help documentation.

My response covered both discovery and configuration. I worked on entry points in the fields customers were editing, then on an insertion flow that explained the selected value, its formatting, and what to show when data was missing.

Make the choices visible

We looked at email editors and tools such as HubSpot and Airtable to understand how people browse data and anticipate what it will do. Categories organized the catalog. Examples and fallback explanations showed what a selected value would do.

Reference · Data selection across other tools
Research board comparing dynamic content selection, categorization, and configuration in web applications.
The research compared how tools explained a value while someone was choosing it.

I explored the insertion flow, category navigation, configuration, and how a selected value would appear in a message. We worked with Product stakeholders to separate the initial release from later improvements.

Exploration · Browse and choose
Annotated exploration showing search, data categories, and a path to configuring a dynamic value.
Search and categories offered two ways into the same catalog.
Exploration · Edit an inserted value
Exploration of a first-name tag with editing actions and an inline configuration panel.
The insertion flow also needed a clear route back into configuration.

A filter people could see

Our hypothesis was that keeping category filters visible would help both new customers learning what was possible and experienced customers finding a specific value. We tested two Figma prototypes: one with pill filters, another with dropdowns.

Usability prototype · Pill filters
Categories remain available while browsing the list.
Usability prototype · Dropdown filters
The alternative used the existing dropdown pattern.

Customers preferred the pill filters. We proposed them as a new Design System component, while keeping an MVP path that used existing controls.

Testing also helped us reduce noise. A description added little to a familiar item such as First Name, but was useful for less familiar data from sources such as Shopify. Recommendations needed their own visual treatment to stand apart from the rest of the list.

From discovery to a readable message

Show where personalization is possible

I brought the entry point into supported fields so customers could find personalization while writing a subject line or message. A bolt appears when the field receives focus. First-use guidance introduces the feature when someone inserts or interacts with dynamic content.

Redesigned UI · Finding dynamic content
Dynamic content entry points in a subject line and email body, with a first-use explanation.
The subject line and email body expose the same route into personalization.

Recommend data in context

The picker uses the field, commonly used data, and the message’s goal to recommend relevant items. Search and category filters let customers find something else.

Redesigned UI · Choosing a value
Annotated dynamic content picker showing search, category filters, recommendations, and data items.
Recommendations provide a starting point without hiding the wider catalog.

Configure before inserting

Customers worried that changing defaults could break their content. I made fallback configuration an explicit step before insertion, with an explanation of what happens when data is missing. Other controls handle formatting and the details of a particular value, such as which item to choose from an abandoned cart.

Configuring dynamic content

1 / 4

Compare the configuration controls and their context.

Redesigned UI · Fallback

Set the text to use when a value is missing.

First-name configuration with a fallback value and contextual explanation.
Redesigned UI · Data options

Choose the item or property the message needs.

Configuration controls for an ecommerce data value.
Redesigned UI · Formatting

Adjust how the selected value is presented.

Formatting choices in the dynamic content configuration panel.
Redesigned UI · Link defaults

Start with pre-approved text for specific links.

Unsubscribe-link configuration with a default link-text control.

Replace code with a value people can recognize

After insertion, a visual tag names the data in the field. Customers can inspect it for details or select it to change the configuration. The tag also needs to reflect styling when it sits inside formatted email text.

Redesigned UI · Dynamic values on the canvas
Redesigned email editor showing named dynamic-content tags in place of template code.
The message remains readable while its dynamic values stay editable.

Keep the direction, make room for an MVP

The preferred pill filter was not yet in the Design System. I worked with that team to guide its implementation and provided an alternative using the components already available. That gave the team a path forward without making the first release depend on a new component.

Proposed picker · Visible categories
Detail of the proposed picker: All, Profile, Event, Links, Account, and Date and time filters sit immediately beneath search.
Category pills stay visible beneath search. The existing dropdown offered a path to release, but did not support these filters.
Proposed configuration · Explain the fallback
First-name default-value field explaining that the fallback appears when First Name is unavailable, and leaving it empty shows nothing.
The default-value field explains the missing-data behavior before insertion. We also specified an existing modal as an alternative to this popover.

View the full filter specification ↗ · View the full configuration specification ↗

More confidence working with personalization

The readable values helped customers understand what a name or product reference would do in their message. Fallback controls also made missing data part of the setup, so customers could decide what a recipient would see when that data wasn’t available.

That made reviewing messages and revisiting existing templates easier. Customers could discover and try personalization without the same fear that a missed bracket would send broken code to their audience.

Research and early explorations

Later picker work · 2023

The 2023 picker project began with a support baseline of more than 200 tickets a month.

Reference · Competitive research
Comparison table of dynamic content capabilities across email tools.
The competitive review recorded how other editors exposed and configured dynamic data.
Planning · Initial scope and later improvements
Feature prioritization table used with Product stakeholders to discuss the scope of dynamic content.
We used this inventory to distinguish the initial release from later improvements.
Exploration · Custom data
Early selection and configuration layouts for custom dynamic content.
Custom data needed a route through the same insertion experience.
Exploration · Search and selection
Search-result exploration with a selected first-name value and annotations.
The exploration considered how selection would follow from a search.
Exploration · Configuration layouts
A set of alternative layouts for configuring dynamic values.
These studies compared where configuration could fit within the flow.
Exploration · Browsing behavior
Annotated browsing and navigation states for the dynamic content picker.
These studies compared navigation and actions within the picker.
Design specification · Tag behavior
Visual-tag specification covering structure, styling, edge cases, and inspection behavior.
The tag had to remain recognizable across styling, interaction, and content variations.

Continue to Universal Content →