Shruti · Product Design Case Study

Checkout · Conversion

Taking a step
out of checkout.

Returning shoppers were being asked to re-confirm shipping details we already had. So we stopped asking — and sent them straight from basket to payment.

RoleDesign Lead
SurfaceMobile app
ScopeMulti-brand · GCC
Shipped100% · mid-2026

Where this sits

The first move in a longer effort.

I design checkout across a group of e-commerce brands, spanning app, desktop, and mobile web. Checkout is where small friction gets expensive fast — every extra tap is a chance for someone to give up before they've paid.

This project was the start of a broader push to optimise that flow. It focuses on the people we already know: returning shoppers with a saved address. This write-up follows the app, though the work shipped across all three platforms.

The problem

Three rooms, when two would do.

The old checkout made everyone walk through three rooms: basket, shipping, payment. That's fine the first time.

But for a returning shopper, we already know where they live — their default address is saved. Asking them to stop and re-confirm it is a bit like asking someone their name every time they walk into a shop they visit every week. It adds friction and gives them nothing back.

The job a returning shopper is trying to get done is simple: pay, and be finished. The shipping step sat in the way of that — for people who'd already told us everything we needed.

Where it started

90%+

of repeat orders ship to the same saved address, every time. That's the gap the whole project came from — we were asking people to re-confirm the one thing we could already predict.

Before and after checkout flow. Before: three steps, Basket, Shipping, Payment. After: two steps, Basket, Payment.

The idea

Skip the step, keep the safety net.

So the way I thought about it: if a returning user has a saved default address, skip the shipping step entirely and drop them straight onto payment, with that address already applied. If anything about them is uncertain, fall back to the full flow. The change is invisible when it works — which is exactly the point.

Before three screens to pay
Before: a three-screen checkout — basket, a separate shipping-address screen, then payment.
After two screens to pay
After: a two-screen checkout — basket, then the saved address pre-applied with payment on the same screen.

Knowing when not to skip

A skip is only safe once you know exactly when not to.

The real design work wasn't the skip itself — it was defining the fallbacks. Any time a saved address can't be trusted, or the order needs more than an address can give, the flow has to fall back cleanly to the old path. I mapped these up front with IA, dev, and stakeholders in the room, so nothing broke quietly.

Fallback 01

The address can't be used

Deleted, incomplete, or not applicable to the order — we fall back to the full shipping step rather than push a broken address into payment.

Fallback 02

Guest checkout

A guest placing an order has no saved profile to skip from, so they stay on the standard flow — shipping step and all.

Fallback 03

Orders that need scheduling

Anything requiring calendar or delivery scheduling defaults to the old flow — deliberately out of scope for this phase, and first on the list for the next.

Each of these is a deliberate fall-back to the old, safe flow. The skip only fires when we're sure — everything else stays exactly as it was.

Testing our way in

We didn't guess the logic. We let the test decide.

Which preselection logic was “right” wasn't something I wanted to settle from a whiteboard — different brands had different needs. So we ran it as an A/B test across selected territories, with concepts competing on how much we pre-decided for the shopper.

Concept A

Returning users get their last-used address and last-used shipping method preselected.

Concept B

Returning users get their last-used shipping method with their default address preselected.

Once results came back positive and each brand had settled on the logic that fit them, we rolled it out to 100% of users, across all territories and concepts. The test did the arguing so we didn't have to.

My contribution

What I owned.

This was mine to design end to end. I owned the flow itself — the skip and every fallback around it — the edge-case thinking that made it safe, and the competing A/B concepts, including the preselection logic each one tested. I worked with the brand stakeholders to land on the logic that fit each of them.

PM held the product logic; engineering and QA stress-tested feasibility and the edge cases. I held the design, and the calls that shaped how the flow behaved.

What it did

Fewer steps, faster pay, more orders.

Removing one step for known users moved the numbers that matter at the bottom of the funnel — without touching anything for the users who still needed the full flow.

+11%Checkout conversion
basket → order placed
−44%Time to pay
basket → payment complete
↑ RevMeaningful uplift
directionally confirmed

How I think about it

The work I'm most proud of usually looks like less, not more. This was one step removed — and for a returning shopper, that's one fewer thing between them and being done.

Where it goes next

This was the start, not the finish.

It fixed the flow for the users we already knew. The harder, more interesting half is everyone else.