🔒

Protected case study

This project is under NDA. Enter the password to view.

Incorrect password
Case Study · Farfetch · 2022–2023

Farfetch
Comms
Templates

Farfetch STORM — Comms Templates UI
My role Product Designer
Team PM · Engineering Lead · CRM
Duration Platform redesign · 2022–2023
Platform Farfetch STORM (Web)
The Challenge
Farfetch's CRM team was rebuilding the same work, over and over.
40%
of all campaigns existed solely to reuse content from another — each requiring a full retranslation cycle
50hrs
per week copy-pasting translations from XTM into Phoenix — before a single campaign was sent
What needed to change
No content reuse
Every campaign was a blank slate — even when 80% of the content already existed elsewhere in the system
No approval workflow
Campaigns could be changed after sign-off — errors went live with no audit trail, no rollback
No interface
The predecessor tool, Phoenix, ran on Google Sheets — there was no product to improve, only to replace
of campaigns were duplicates — wasted retranslations, no content reuse
50hrs
per week spent copy-pasting translations from XTM to Phoenix — the baseline the platform had to beat

Before STORM, the CRM tool was a Google Sheet

Phoenix — Farfetch's predecessor communications system — ran on Google Sheets. No interface. No approval workflow. No cross-channel visibility. The translations team spent over 50 hours a week copy-pasting content from the translation platform (XTM) directly into spreadsheet cells.

In 2022, Farfetch built STORM to replace this — a proper CMS for email, push, and SMS campaigns. The MVP worked. But once the team started scaling it across markets, a new class of problems emerged: content couldn't be reused or localised without duplicating entire campaigns.

My role was to lead the UX for the next phase — turning STORM from a campaign creation tool into a composable content platform.

Redesign how Farfetch creates, reuses, and localises content

This wasn't a sprint to add features to an existing tool. The brief was to rethink the content layer of STORM entirely — so that CRM teams across EMEA, AMER, and APAC could stop duplicating work and start composing it.

I led the UX through a 4-day Design Sprint to define and validate the right solution before a single screen was built. Stakeholders: PM, Engineering Lead, CRM team. The sprint produced the design decisions that went directly into development.

The system needed composability, not more templates

Adding more templates to an inflexible system would compound the problem. Every new template added to Phoenix needed its own translation cycle — the duplication rate would keep climbing.

The right intervention was at the content layer: reusable tokens, pre-translated modules, and structured grouping. Not at the campaign layer.

The system had streamlined campaign creation — but duplication of campaigns for different markets continued to be time-consuming. Global teams in EMEA, AMER, and APAC were each running their own copy of the same content, updated manually, translated separately.

Google Design Sprint — compressed to 4 days

The sprint framework gave the team a shared language and prevented the usual "let's just build something" instinct. Each phase had a clear deliverable before moving forward.

1
Understand
User Journey
CRM Interviews
2
Define
Workshop
HMW Exercises
3
Ideate
Design Together
Key Solutions
4
Design
Hi-Fi Designs
Prototype
5
Test
User Testing
Conclusion

Revisiting the customer journey post-MVP

Before ideating solutions, I mapped the current CRM workflow — end to end, across the full campaign production cycle. This revealed where the friction was real versus perceived.

🗺
User Journey Map — STORM Campaign Flow
Add screenshot: user-journey-map.png
"The user journey post-MVP revealed that localization and content reuse were the dominant pain points — not campaign creation itself."
— Finding from the journey mapping session with PMs and CRM team

Interviews with CRM managers

Three sessions with the CRM team to validate the journey map and surface the gap between what the system did and what they needed.

Bright spot
Modular Flexibility
The ability to visually build campaigns using modular blocks. Real-time adjustments. Less back-and-forth with engineering.
Bright spot
Ease of Use
The interface was intuitive for campaign management and replication. Adoption was high — a strong signal the system had the right foundation.
Bright spot
Dynamic Content
Dynamic modules enabled personalised communication. Users valued the power — even when the implementation was rough.
Pain point
Limited Campaign Types
The system was restricted to transactional campaigns only. No promotional sequences. This constrained the scope of marketing strategy.
Pain point
Restricted Module Variety
Limited range of content modules constrained the ability to diversify campaigns. Generic layouts forced manual workarounds.
Pain point
No Content Reuse
Despite modularity, content couldn't be carried across campaigns. The duplication rate was 40% — every copy needed full retranslation.

Workshop with PM, Engineering & CRM

A 3-part workshop to go from problems to prioritised solutions. I facilitated all three sessions and synthesised the outputs into a voting matrix for the team.

Session 1 · 30 min
Ask the experts + HMW
Each stakeholder brought their domain knowledge. HMW framing turned complaints into design opportunities — and gave us a shared vocabulary.
Session 2 · 10 min
Present & Vote
Solutions briefly presented for each HMW. Dot voting ensured consensus-building without design-by-committee. Fast, low-ego.
Session 3 · 30 min
Define User Goals & Use Cases
Winning HMWs translated into concrete user goals and use cases. This became the brief for the Ideate phase.
Create templates?
Eliminate redundant translations?
Preview different localisation versions before launch?
Integrate real-time data into dynamic modules?
Leverage information from Promo tool?
Streamline the content review process?

● = votes received in workshop

User Goals & Use Cases

Goal User need Use case
Dynamic Tokens Seamlessly insert dynamic content — user names, promo codes — that auto-updates at send time Marketers insert {{USER_NAME}} or {{PROMO_DISCOUNT}} — system resolves at send
Static Tokens Predefined, translated messages reusable across campaigns without retranslation Create "Enjoy Black Friday here" token once — reuse in any campaign, across markets
Generic Modules Universally applicable templates to standardise headers, footers, and shared blocks Library of generic module templates customisable per campaign
Content Modules Pre-translated, customisable promotional blocks reusable without modification Create a promotional block once — adapt and reuse across campaigns with minimal adjustments
Template Management Manage email templates, sequences, and campaigns from a centralised view Add to sequence, manage sequences, view statistics, edit settings — without leaving the tool

Four features. One cohesive system.

01
Dashboard with Template Grouping & Translation Status
A centralised view that organises templates into groups, with a comprehensive translation status column. CRM managers could scan the health of their entire template library at a glance — without opening individual campaigns.
🖥
Feature 01 — Dashboard Screenshot
Add: farfetch-feature-01-dashboard.png
02
Add Template Modules to Sections
Enhanced module-addition flow allowing users to choose between default or templated modules. A section-level modal with a live preview reduced the trial-and-error cycle that was driving duplicate campaigns.
🧩
Feature 02 — Add Modules Modal
Add: farfetch-feature-02-add-modules.png
03
Module Header with Inline Identification
A persistent module header showing template type, edit-in-context link, and targeting status. Operators could identify which modules were templated vs custom — removing the guesswork that caused unintentional overwrites.
🏷
Feature 03 — Module Header
Add: farfetch-feature-03-header.png
04
Dynamic Sticky Bar & Token Pills
A sticky bar that organises tokens into dynamic and static groups with inline search. Token pills showed the resolved value on hover — closing the feedback gap between "I inserted a token" and "I know what it will output at send time".
⚡️
Feature 04 — Dynamic Sticky Bar
Add: farfetch-feature-04-sticky-bar.png
05
Duplicate Experience
The highest-impact interaction in the sprint — and the one that drove the duplication rate from 40% to 4%. Instead of recreating campaigns from scratch, users now choose exactly what to carry over.
The problem

Campaign operators were duplicating entire campaigns just to reuse structure or copy — carrying over unneeded translations, inflating the duplication rate to 40%. There was no way to duplicate selectively.

The decision

A single modal with two modes — Basic and Full — letting users choose exactly how much to carry over. The campaign destination (same or new) is also configurable in the same step.

Mode 01
Basic Duplicate
Copies campaign structure and EN-US content only. Translations start fresh. The right choice when localising for a new market from scratch.
Use when: entering a new market, reusing structure without inherited copy
Mode 02
Full Duplicate
Carries over all translations, ready to send. The right choice for seasonal re-sends or minor copy changes across an existing language set.
Use when: re-sending a seasonal campaign, making small edits to a fully translated set
Destination
Users choose whether the duplicate lives under the same campaign or a new one — all in the same modal step, no navigation required.
Result
Duplication rate dropped from 40% to 4%. The workaround of cloning full campaigns to reuse structure became unnecessary.
Why it worked
The modal surfaced a decision that was previously implicit — forcing operators to be intentional about what they were copying, not just what was convenient.
🔁
Feature 05 — Duplicate Experience Modal
Add: farfetch-feature-05-duplicate-modal.png

What the sprint produced

4%
Duplicate Campaign Rate
Down from 40%. Dynamic and static tokens, combined with reusable content modules, dramatically reduced the need to duplicate campaigns for content reuse.
71%
Time-to-Market Reduction
From a two-week campaign development cycle to just four days when using pre-translated modules — enabling faster responses to market trends.
User & Stakeholder Satisfaction
The redesign was met with widespread adoption, evidenced by willingness to participate in ongoing iteration cycles. The tool became a platform, not a workflow bottleneck.
What I'd do differently
The 4-day sprint produced strong outputs — but compressed timelines mean compressed validation. I ran the user testing phase after the design was largely baked. A next version of this sprint would front-load a lightweight concept test after Ideate, before Hi-Fi — catching assumption gaps before they're expensive to fix. The duplicate-to-4% result validated the direction. It doesn't validate whether 4% was achievable in half the timeline with a quicker feedback loop.

Future Roadmap

Identified opportunities that go beyond the scope of this sprint — each one a direct extension of the composability principle the four features established.

01
More Content Modules
Expand the module library to cover diverse marketing needs — promotional blocks, seasonal layouts, product showcase templates.
02
Campaign Preview
Real-time preview of how campaigns appear to recipients — enabling in-tool adjustments before launch without a send-and-check cycle.
03
Content Review & Approval
Structured workflow for content review and approval within the tool — ensuring quality gates without leaving STORM.
04
Collaboration Features
Shared editing and feedback loops to streamline campaign development across distributed CRM teams.
05
User Permissions
Granular permission controls for different tool functionalities — enabling secure, workflow-specific access without admin overhead.
06
Full Campaign Templates
Complete, fully customisable campaign templates that can be reused end-to-end — the natural evolution of the module-level work in this sprint.