NEXSUM_LABS
  1. Home
  2. Work
  3. A grocery app's checkout redesign removed the step that was costing the most carts
Book a call

[ Case study ]

Grocery deliveryFigmaPrototypingModerated usability testingFunnel analytics

A grocery app's checkout redesign removed the step that was costing the most carts

The app's checkout required account creation before browsing, asked for delivery-slot selection mid-flow, and lost 38% of carts between cart review and payment. The team knew the funnel leaked but not which decision was breaking it.

CLIENT a neighborhood grocery delivery app — FOCUS Test the funnel before redesigning it

Figma UI/UX DesignDesign & BrandingFigma UI/UX DesignGrocery deliveryRepresentative example
Client
a neighborhood grocery delivery app
Industry
Grocery delivery
Engagement
6 weeks — experience pod — designer + researcher
Service
Design & Branding / Figma UI/UX Design
Headline outcome
Cart abandonment between cart review and payment, first month post-ship: 38% → 19%, read from Funnel analytics

Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.

Where they started

Grocery delivery at neighborhood scale: one warehouse, a small fleet of drivers, a few thousand regular customers. The product side is three engineers and a designer-founder; the operational side runs on delivery-slot scheduling designed around van capacity, not customer preference. Growth came from word of mouth and a local Facebook group rather than paid acquisition, so nobody had instrumented the funnel properly — the team knew where orders died because the founder watched order counts dip, not because anyone measured it.

What it was costing

The app's checkout required account creation before browsing, asked for delivery-slot selection mid-flow, and lost 38% of carts between cart review and payment. The team knew the funnel leaked but not which decision was breaking it.

What they could see

  • Order completion fell off sharply between cart review and payment, while earlier funnel steps looked healthy.
  • Customer-support messages mentioned being forced to create an account before they could even browse the shelves.
  • Older shoppers phoned the shop to place orders instead of using the app, and staff could hear why.
  • Reserved delivery slots expired unused on abandoned checkouts, occasionally blocking capacity for orders that would have completed.
  • The team's opinions about the cause conflicted — payment step, account wall, slot picker — and no data existed to settle it.

The constraints we worked inside

  • Delivery-slot logic was an operational constraint — the design could change where it's asked, not whether.
  • The dev team could ship one redesign per sprint; the fix had to be prioritized, not total.
  • Usability testing had to include the actual user mix — elderly shoppers were a real cohort.

What had been tried before

The team A/B tested a brighter payment button and reordered the checkout steps twice, judging results by weekly order totals.
Weekly totals moved with weather and promotions, not design; without per-step analytics the tests read as noise and the changes were kept or reverted on vibes.
A freelance consultant delivered a heatmap report recommending a redesigned checkout screen with annotated wireframes.
The recommendations targeted the payment screen everyone already suspected, required a full redesign in one release, and never accounted for the slot-booking constraint the operations side imposed.
Guest checkout was enabled through a settings toggle in the platform's admin panel.
It skipped account creation but kept the mid-flow slot picker, so abandonment barely moved — and the team concluded guest checkout itself had failed rather than the flow around it.

What we proposed

We proposed testing before redesigning: five moderated sessions with the app's real customer mix, instrumented per-step funnel analytics, and a redesign scoped to the two measured breaking points rather than the whole checkout. Capacity set the scope: a dev team that ships one redesign per sprint needed the smallest change that moved the number, not the most thorough one. We designed around the operational constraint instead of against it: delivery slots were non-negotiable, so we changed where the question is asked and how it feels, deferring account creation to after the order, when the customer is already invested.

Just as important is what we ruled out, and why:

  • A one-page checkout combining every stepSlot scheduling interacts with van capacity and driver routes; collapsing the steps would have hidden a genuinely operational decision and put more load on the three-engineer team to maintain.
  • Removing the slot picker from checkout entirelyOperations needs commitment before dispatch routing; the picker is a business constraint wearing a UI costume, so it moved and shrank but never disappeared.
  • Full checkout rebuild in a single sprintThe dev team ships one redesign per sprint with no QA slack; a big-bang release risked the whole flow for a team that couldn't roll back quickly.

How the work ran

01Test the funnel before redesigning it

Five moderated sessions identified the account-wall and the slot-picker as the two abandoning moments — not the payment step everyone assumed.

02Redesign around the two breaking moments

Guest browsing with account creation deferred to post-order, and the slot-picker moved to a persistent bar — each change targeted a measured leak.

03Prototype and test with the real cohorts

Sessions with elderly shoppers reshaped type sizes and button targets before handoff — the prototype was the test, not a deck.

Delivered by the experience pod — designer + researcher over 6 weeks, with working increments reviewed with the client every week.

The stack, and the reasoning

Figma
The designer-founder already worked in Figma, so redesigns landed in the file the three engineers already pulled specs from — no new tooling for a team of four.
Prototyping
Interactive prototypes let the slot-picker and post-order account creation be tested on phones before a sprint was spent building them — the demo was the experiment.
Moderated usability testing
Five sessions recruited from the actual customer base, including elderly shoppers, exposed the account wall and slot-picker friction that internal opinions had misattributed for months.
Funnel analytics
Per-step event tracking was added for checkout, because weekly order totals had made every design change unreadable; the team finally saw which step leaked and by how much.

What went wrong

Obstacle

The analytics platform's existing events fired on page names, not actions, so the original tracking counted the slot-picker and payment step as one undifferentiated checkout page.

Handled: We instrumented checkout manually with named step events, validated against a day of paired session recordings, and only then trusted the baseline we were redesigning against.

Obstacle

Recruiting the elderly cohort for sessions took longer than planned — three of five scheduled participants were far younger than the recruiting script promised.

Handled: We recruited the rest from the shop's phone-order list — exactly the customers who had given up on the app — and scheduled sessions around their delivery windows.

Obstacle

The sprint scoping session revealed the persistent slot bar required a backend change the ops side hadn't approved — a design decision turned out to be an operations decision.

Handled: We split the release: the account-wall fix shipped that sprint, and the slot bar went to the ops manager's Monday review, where it passed once capacity graphs were shown.

How we worked together

Cadence
Thursday demos with the founder and the lead engineer, thirty minutes; the ops manager joined whenever a design touched slot scheduling, which was more often than anyone predicted.
Client side
The designer-founder owned decisions and sat in every session; the lead engineer scoped each sprint; the ops manager guarded the delivery-slot rules.
Decisions
Anything the demo couldn't settle waited for funnel data — the team agreed up front that measurements outranked opinions, including the founder's.
They provided
Access to the order database for funnel analysis, five usability participants recruited through their customer list, and protected sprint capacity for one redesign per cycle.

What changed

The headline: cart abandonment between cart review and payment, first month post-ship38% → 19%, read from Funnel analytics. A second check: guest checkouts converting to accounts within 30 days at +26%.

The checkout argument ended, which changed the team's week more than the number did. Instead of relitigating guesses, the Tuesday standup reviews per-step funnel numbers the team now trusts, and design changes ship with an expected direction they can check. Support stopped receiving account-creation complaints, and the phones ring for actual grocery questions again. The elderly regulars who used to phone in orders now arrive in the app occasionally — and when they struggle, there's a testing group who hear about it before churn does.

The result was read from Funnel analytics against the pre-engagement baseline over the stated window, with a guardrail check on guest checkouts converting to accounts within 30 days. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.

What they own now

  • The redesigned checkout flows in Figma with annotated states and edge cases
  • The per-step funnel event definitions wired into their analytics platform
  • A usability-testing script and recruiting playbook they can rerun per cohort
  • Recorded session highlights reel used to onboard future hires to customer reality

What we would do differently

We would have run the first usability round in week one — the account-wall finding was suspected but unproven for months because nobody tested.

Design & BrandingFigma UI/UX DesignGrocery deliveryFigma

Next case study

An agency portal's design went from 'looks done' to 'is buildable' in one handoff