WALMART ONLINE GROCERY SUBSTITUTION ACCEPT/REJECT

Solving communication and control to earn trust

Collaborators: Content Strategy · PM · User Research · 4 SWE

Impact

  • 0% reduction in refunds for unacceptable substitutions
  • 0% decrease in order cancellation
  • +0pt fulfillment CSAT
  • ~$0M projected retention impact

The Frame

Walmart Grocery was losing $160M annually on substitution issues. The surface symptom was refund volume. The deeper cost was customer trust and retention.

The brief was a UI improvement on the Accept/Reject screen. Research surfaced seven customer pains — four about what they wanted to know (Communication), three about what they wanted to decide (Control):

Communication

  1. I was not aware of this feature until check-out
  2. Will I be charged for substitutions? How do I return unwanted items?
  3. I want to receive notifications while shopping if items are low in stock
  4. I would love it if I could receive a substitution notice before pick-up time (worst pain)

Control

  1. I'm very picky about certain items. I'd like to choose my replacements
  2. I like to have the flexibility to change and edit my preferences
  3. When is the option given to decline substitutions with a delivery? (worst pain)

Working with PM, engineering, and research, the work scoped up. The fix wasn't a clearer button — it was rebuilding the communication and control system across the shopping journey. Solve communication and control, and trust follows.

Substitution had to become an experience across the entire shopping journey — before, during, and after substitution decisions. We chose to start with what happens after — giving clear notice and the ability to decline unwanted substitutions. Delivery and curbside pickup customers had no chance to review substitutions until they arrived. Unwanted items got charged. Returns were hassle.

This case study covers the first project — addressing substitution after the fact. It closed three insights: #2, #4, and #7. The remaining four were addressed in Project 2.

Shopping journey timeline mapping the substitution layers across touchpoints, from Open App through Review Order, Picking, Dispensing, to Customer Picked up, with the Project 1 post-substitution touchpoints highlighted.

Full substitution journey


The Architecture

The solutions spanned four moments on the timeline; in the design they resolved into three surfaces. The last two — live substitution updates and the return entry — are one continuous post-order screen, so the four-part journey became three design layers, addressing three of the seven insights through the post-substitution flow.

Timeline mapping the four post-substitution layers onto the order journey: (1) send a substitution notification at Finish Picking (Wed 1:00 PM), (2) allow Accept/Reject selections through Dispensing Ready (Wed 3:30 PM), (3) give substitution updates and return instructions while Out for Delivery, and (4) provide a prominent return entry once the order is Delivered (Wed 4:00 PM) and Picked up (Wed 4:10 PM).

Four moments of Accept/Reject design

Notification

Addresses: “I would love it if I could receive a substitution notice before my pick-up time” (worst pain) — Insight #4

Pushed the moment picking finished — 2.5–3 hours before dispensing. That cleared the 30 minutes to an hour customers said they needed to respond, and still left store associates a buffer to act on rejections before the order went out.

Delivered through SMS, push, email, and a persistent homepage message — at least two forms of notification for every customer, selected by order type and platform. Research showed customers welcomed SMS interruption for grocery orders: they considered grocery important enough to be worth interrupting their day for.

Timeline from Finish Picking (Wed 1:00 PM) through Accept/Reject selection ending (Wed 3:00 PM) to Dispensing Ready (Wed 3:30 PM): the substitution notification is sent at picking, leaving time for store associates to adjust the order before dispensing.

* Most customers request at least 30mins - 1hr to make selections.

* We’ll finish picking 3 hours ahead of dispensing time.

Platform Email Push SMS Home Msg
Pick up
Opt in SMS
Web
Apps
Pick up
Opt out SMS
Web
Apps
Delivery Web
Apps

* At least 2 forms of notification for all users.

Substitution communication shown across channels — SMS, push, email, and a persistent homepage message — so every customer receives at least two forms of notification.

Accept/Reject control

Addresses: “When is the option given to decline substitutions with a delivery?” (worst pain) — Insight #7

A focused screen let customers review each substitution and accept or reject it, with a hard save for confidence and a running order total that updated as they chose. But the screen was only half the design. For a choice to exist at all, the operation behind it had to make room — and to understand that operation, we visited stores and interviewed pickers and store managers to map the actual picking and dispensing timeline. That fieldwork is where the window came from: enough time after picking for customers to decide, enough lead time for an associate to act on a rejection before the order went out. The coordination had no UI — it was service design, the choreography between the customer's tap and the store's workflow. The visible control worked only because the invisible timing did, and we only knew the timing because we went and watched it happen.

Accept/Reject UI screens showing substitution states across Web and app: original item, suggested substitution, out-of-stock, accept/reject controls, and explicit-substitution confirmation.

Substitution updates and return entry

Addresses: “Will I be charged for substitutions? How do I return unwanted items?” — Insight #2

During the Accept/Reject window, a countdown showed how long customers had to edit, and they could keep changing decisions while picking was still in progress. Rejected items kept a strikethrough on their price — making it visible that they weren't being charged for what they didn't accept, surfacing a goodwill that already existed: Walmart absorbed the difference, now stated plainly instead of left invisible. After the window closed, those items moved into an “Unavailable” section so the order stayed legible at a glance. And once the order was on its way — dispatched for delivery or ready for pickup — a prominent “Start a return” entry replaced the edit affordance, answering the other half of the insight: how to send back what you didn't want.

Three order states side by side: during the Accept/Reject window with an Edit affordance and running total, after the window closes with rejected items moved to an Unavailable section, and the delivered order with a Start a return entry.

Built in Code, Not Just on Canvas

Three interaction patterns had to be compared for the Accept/Reject flow, and the differences lived entirely in the feel — hard save versus auto-save, the feedback on each tap, the order total updating as decisions were made. None of that survives on a static canvas; you have to put a thumb on it to know which one earns trust. So I hand-coded all three as standalone HTML prototypes with production-grade SCSS architecture — partials, mixins, design tokens. The code wasn't a showcase; it was how the decision got made, and it aligned the engineering patterns before handoff.

Tap to compare the feel

Variant A · Toast confirmation
Variant B · Edit → review → result
Variant C · Inline toggle

These are live, hand-coded prototypes — best viewed on a wider screen.

User testing was run on InVision prototypes — the right tool for fast iteration and remote sessions where production-grade fidelity wasn't the bottleneck. Option A won — a dedicated page with hard save. The separate page reduced noise around the decision, and the explicit save action gave customers confidence their choices were recorded.


Five Years Later

The Accept/Reject architecture is still in production, having migrated through Walmart's app consolidation into the unified Walmart One app.

The other four insights — #1, #3, #5, #6 — remained. They required intercepting earlier, before substitution decisions were made. That became the second project.