Skip to content
All work

UCOOK

Conversion optimisation

Sign-up drop-off, diagnosed and rebuilt

Role
UX/UI Designer
Client
UCOOK, via Silvertree
Year
2025
Origin
Self-initiated

The challenge

Why were people abandoning sign-up while still expecting their meal boxes to arrive?

What it turned out to be

They thought they had finished. Payment came days later, so nothing told them they had not.

Customer service kept logging the same call. People were waiting for meal boxes against subscriptions that had never activated.

60+

incomplete sign-ups

In a single week

1.43%

retention through sign-up

56%

of first billings

Landed 1 to 5 days after sign-up

~R1.3m

a year

Revenue leaking through the funnel

This was not on the roadmap. I started looking because the complaints and the data were describing different things, and I wanted to know which one was right.

The gap

They thought they had finished

Every test participant expected to pay immediately. In the old flow the charge came days later, so nothing at the end of sign-up told them they were not finished.

Finishes sign-upExpects to pay now1 to 5 days of silenceFirst billing56% of first billingsland in this windowNothing in the flow told them they had not finished.So they waited for a delivery against a subscription that was never activated.
Sign-up completion against actual first billing

The problem

What it looked like from each side

User pain

People hesitated at the point the flow needed them to commit.
  • Sign-up was confused with simple account creation
  • Meals could not be found, and there was no way back a step
  • Subscription against on-demand ordering was unclear
  • Plan, meals, and delivery decisions arrived early and without context

Business pain

A revenue problem nobody was measuring.
  • Over 60 incomplete sign-ups in a single week
  • Roughly R1.3m a year leaking through the funnel
  • 56% of first billings landed 1 to 5 days after sign-up
  • No defined baseline funnel, so nothing could be tested against it

Constraints

Why payment could not simply move

The obvious fix is to charge at sign-up. Delivery and billing run on different cycles, which is where the mismatch comes from, so moving payment was not straightforward.

Model complexity

Delivery cycle

Weekly › Sunday or Monday

MONTUEWEDTHUFRISATSUNWEEK STARTMondayDELIVERYSundayorDELIVERYMonday1 WEEK DELIVERY CYCLEWeekly › Sunday or Monday

Billing cycle

Wednesday 9am › Wednesday 9am

MONTUEWEDTHUFRISATSUNMONTUEWEDBILLING STARTWednesday 9amBILLING ENDWednesday 9am1 WEEK BILLING CYCLEWednesday 9am › Wednesday 9am

The billing logic was complicated and did not match what people expected. Moving payment earlier created a refund problem, because a reduced order takes more than two days to reflect. That would put a billing error right at the point someone had just handed over their card.

Research

Seven ways of asking the same question

I used more than one method because a single source would not have been enough to get this prioritised. The interviews and tests told me what was happening. The analytics told me how much of it there was.

  1. 01

    Customer service interviews

    Tracked complaint categories and flagged incomplete sign-ups.

  2. 02

    Internal survey, 16 respondents

    55% flagged unclear communication. Sign-up scored 6 out of 10.

  3. 03

    Competitive benchmarking

    Marley Spoon, Taste Box, Hello Fresh. All use clear step patterns.

  4. 04

    Heuristic evaluation

    Against Nielsen's 10. Findings clustered into three themes.

  5. 05

    Unmoderated testing in Maze

    Blocked. There was no defined happy path to test against.

  6. 06

    Moderated usability testing

    Three sessions. Navigation and pricing clarity issues surfaced.

  7. 07

    Heatmaps and session recordings

    Validated the drop-off points and interaction patterns.

  8. 08

    Measurement planning

    Tag Manager triggers defined across each step of the funnel.

Evidence

Heuristic evaluation

Nielsen's 10 heuristics across the sign-up and reactivation flows. Three theme clusters came out of it: communication, navigation, and UI optimisation.

Activate NowNO ADDRESSASSOCIATEDNo recovery, no next step, no way back.
UI optimisation

Clicking Activate Now returned a no-address-associated error, and nothing happened beyond it. No efficiency of use.

STEP 1STEP 3STEP 5One journey. The furniture moves three times.
Navigation

Global navigation changed at least three times during sign-up, alongside inaccurate information. Flagged and fixed as a quick win.

CONFIRMEDTHEN SHOWNThe summary contradicted the step before it.
Communication

After phone verification, the order summary showed the wrong configuration.

Insights

Four things that decided the redesign

Synthesis

  1. 01

    Users did not understand the journey upfront

    "What am I signing up for?" was unclear from the start.

  2. 02

    Too many decisions, too soon

    People were asked to choose plan, meals and delivery before committing to anything.

  3. 03

    Weak sense of progress

    No way to tell how far in they were, or what remained.

  4. 04

    Trust gaps at the critical moments

    Pricing, commitment, and flexibility were not communicated clearly.

People needed to understand what they were signing up for before being asked to commit to it.

The principle everything else was measured against

Design

What changed

  1. 01

    Restructured the flow

    Easy steps first. The bigger decisions moved later, once someone had already put something in.

  2. 02

    Introduced clear progression

    Five steps with a progress indicator, so people can see how much is left.

  3. 03

    Simplified decision points

    Fewer choices per screen, each with the context needed to make it.

  4. 04

    Improved trust and transparency

    A full pricing breakdown, and skip or cancel stated where people were hesitating.

  5. 05

    Defined scroll and interaction behaviour

    Nothing hidden below the fold. The main action stays visible.

  6. 06

    Made payment the finish line

    A payment step at the end, which is where everyone expected it.

Option considered

Pay on sign-up

Move payment to the start, use the cart as the entry point, and build the customer profile from the order. I worked it through and it did not hold up.

01

Meal kit page

02

Add to cart

03

Checkout

04

Address and banking

05

Pay

06

Auto-profile

Why it was rejected

  1. 01

    The subscription model is not communicated before payment

    Users commit without understanding recurring billing.

  2. 02

    Pause and cancel are unclear at the point of commitment

    Neither is explained anywhere near the payment step.

  3. 03

    It solves acquisition only

    The retention problem stays exactly where it was.

  4. 04

    Post-payment order changes introduce refund risk

    Reduced orders take more than two days to reflect, so the refund problem stays.

Solution

Two workstreams

The quick fixes shipped while the structural work carried on, so they did not wait on the payment timing decision.

Quick wins

Communication, navigation, and UI clarity. Shipped as they were found.

Structural redesign

A funnel that could be measured, with payment at the end.

Four entry paths, one outcome

People arrive at sign-up from four different places. All four now end in the same activated state.

HomepageSign up
PlansActivated
HomepageSign upGet started
PlansActivated
HomepageSign upMeal kitsGet started
PlansActivated
HomepageLet's get started
PlansActivated

Wireframes

The funnel, drawn

The full funnel. Six steps, one page.
Delivery address. Validation before the delivery-day choice unlocks.
Payment details. The step that makes finishing feel like finishing.
Confirmation. Every field editable before activation.

In production

The redesigned funnel, shipped

Five steps in a single flow. These are live app screens, not mockups.

Entry, step 1/5
1/5Entry
Servings, step 1/5
1/5Servings
Pick a plan, step 2/5
2/5Pick a plan
Delivery address, step 3/5
3/5Delivery address
Payment, step 4/5
4/5Payment
Confirm, step 5/5
5/5Confirm
Welcome, step done
doneWelcome
Meal kit menu, step next
nextMeal kit menu

Handoff

Specs developers can build from

Annotated prototypes with the interaction detail written down, so the behaviour was settled before build.

scrollIntoView()

Step transitions and error states.

Sticky header

Keeps users oriented throughout sign-up.

Form validation

Inline errors that prevent incomplete submits.

Progress tracking

GTM triggers on each funnel step.

Result

What moved

MeasureBeforeAfter
Entered step 14051,994
Abandoned91.1%75%
Completed sign-up3.7%9.3%

Bars are proportional within each row. Top bar before, bottom bar after.

+5.6%

Absolute increase in completion

Top-of-funnel abandonment dropped from 91.1% to 75%, so more people reached the later steps.

~R255k

Six-month impact, Aug 2025 to Jan 2026

R405k × 63%, the relative lift from 3.7% to 9.3%.

Still open

  • Payment timing decision outcomes
  • A/B testing results
  • Post-release refund and billing impact

Outcome

Completion went from 3.7% to 9.3%. The old funnel saw 405 users enter step 1 with 91.1% abandoning. The new funnel had 1,994 enter with abandonment down to 75%.

Reflection

What I took from it

  • 01

    People rarely drop off for one reason. It accumulates

  • 02

    Explaining things earlier did more than any persuasion later in the flow

  • 03

    Scroll behaviour mattered as much as the bigger structural changes

  • 04

    This was not on the roadmap. The numbers are what got it on there