A ground-up rebuild of the cart page for the same Magento 2 storefront, plus a custom upsell module that runs in the moment before checkout. Same playbook as the storefront redesign: nothing hidden, everything explained.
drag the handle to compare.
same cart, same items. everything that used to be hidden is now on the surface.
The cart is where money is decided, and ours treated it like a receipt. A bare table of rows: name, quantity, price. It answered none of the questions people actually have at that moment. Is it in stock? When does it ship? Did my discount apply? What am I saving? Every unanswered question is a reason to open a new tab, and people who leave carts rarely come back.
Same principle as the storefront redesign: lay everything out. Every line item now carries a visible, high-contrast status tag: pre-order with its ship date, in stock with the dispatch window, the exact discount and what it saves. Tags are readable at a glance and accessible by design: real text, strong contrast, never color alone carrying the meaning. Nobody should have to decode a cart.
Designed in Figma, then built as a custom Magento 2 module rather than a theme patch, so the cart logic (free-shipping progress, reward-points preview, gift handling, bundle pricing) lives in one testable place and survives platform upgrades. The upsell module is its own component with server-side pricing, so the discounts it promises are the discounts the order actually gets.
No numbers yet, so here is the reasoning each one rests on.
Stock status, pre-order dates and discounts used to hide in fine print. Now they are the first thing on every line item: high-contrast text badges, not color-coded mystery dots. The accessible version turned out to be the more persuasive version, which is not a coincidence.
"Free shipping over $150" is a rule. A progress bar that fills as the cart grows is a goal. Same policy, different psychology: people finish bars. When it is already unlocked, the cart says so and celebrates it instead of staying quiet about a win.
The points program existed, but customers only learned what an order earned after paying. Moving the exact number ("earn 1,820 points for this order") into the cart turns a loyalty afterthought into a reason to finish now, and a reason to register.
Promo gifts used to appear as unexplained $0.00 rows, which reads as a glitch, and glitches at checkout kill trust. The gift line now says exactly what it is: added free with your order, original price crossed out, clearly not chargeable.
Discounted items show the math: original price struck through, new price, and a plain "You save $25.99". The order summary repeats the total savings line. If a discount is doing its job, the customer should never have to compute it themselves.
Everything else was stripped. No banners, no unrelated recommendations inside the cart itself. Cross-sell has its own dedicated moment (below), so the cart page keeps a single job: confirm and proceed.
Quantity steppers, save for later, and a discount code field that actually expands instead of hiding behind a link. The old cart made changing your mind harder than starting over. Now it's one click, and the total updates in place.
A custom Magento 2 module that intercepts the moment between "Proceed to Checkout" and checkout itself, once, politely.
the modal, mid-flow. mobile gets a bottom sheet.
Upsells inside the cart compete with checkout; upsells after payment are too late. The one honest window is the click between them. The module shows once per order, never re-arms on decline, and the "no thanks" path is one tap. Pushy upsells pay for themselves in refunds.
It offers low-cost consumables and care items that genuinely pair with what is already in the cart, the things people forget and reorder later at full shipping cost. Small ticket, high attach-rate logic, not "customers also bought" roulette.
The 20% bundle price, the savings line and the new total are computed by the module in Magento, not painted on by JavaScript. What the modal promises is exactly what the order charges, including the countdown: the offer really is order-scoped.