beauty & skincare · Teardown
Glossier
A mobile beauty store with the monetisation furniture already bolted on: a shipping threshold, a PDP add-on, real set bundles, subscribe-and-save, Afterpay. What leaks is sequencing and reach on a phone: the bundle machinery hides a marathon scroll below the buy box, the add-on never echoes into the bag, and a cart that quotes a 70-euro gap offers nothing to clear it.
Glossier breaks our usual mobile pattern: the second-sale machinery is already wired into the phone build. The PDP carries an "ADD ON" bump, a three-deep "SAVE WITH SETS" bundle stack, subscribe-and-save, and Afterpay; the bag drawer runs a live free-shipping bar. So the brief was never whether to monetise on mobile; it was tracing where basket value drains out of mechanics that are live but placed where a thumb never reaches them. We walked each finding back to a placement and to the AOV it actually shifts, screen by screen, marking every spot where the second sale gets stranded below the fold or abandoned at the bag.
Home page
Open the store on a phone and a full-screen interstitial loads first: 'Some light beach reading. Enter your email to be the first to know about offers, new product launches like Glossier You Soel, and so much more!', with an email field and 'Sign up' / 'No thanks' controls. It blankets the 'Free standard shipping on orders $40+' value bar, so the whole opening viewport belongs to the modal before a single product or shipping cue can register.
Fix: Every session that bounces off a load-time wall is a basket that never reaches a bump, a set, or the bag drawer, so this interstitial taxes the entire upsell stack at the front door. We'd retime the capture to exit-intent or post-first-scroll and keep the $40 threshold pinned above it: a visible threshold on the first screen is the cheapest AOV primer there is, and right now it's buried.

Past the dismissed popup, the home page opens on three square category tiles (MAKEUP, FRAGRANCE, SKINCARE) with a 'SHOP ALL' link and a 'Shop now' button beneath. On a phone, those tiles stacked on top of the cleared modal mean a shopper burns an entire viewport on navigation before the first buyable product (the Boy Brow carousel) ever loads.
Fix: Wayfinding tiles that defer the first 'Add to bag' also defer the first basket we can attach anything to. We'd interleave one shoppable best-seller (the Boy Brow card already lives further down) among the category tiles, so a high-intent thumb starts a cart inside the first scroll. The sooner the basket opens, the more surfaces downstream get a shot at the second sale.

A horizontal carousel runs a 'BEST SELLER' badge on Boy Brow: 'Grooming pomade', '$22', a strip of shade swatches with 'Dark Brown' selected, and a full-width 'Add to bag' button. The neighbouring card is half-clipped behind a 'MIX + MA…' badge, hinting at a swipeable rail, but no dots or counter confirm there's more to swipe.
Fix: In-card shade selection plus a one-tap add from the home rail is exactly the friction-free entry we want feeding the basket. No notes there. The leak is reach: a half-peeked second card with no pagination means most thumbs never discover the rest of the rail, and every undiscovered best-seller is a starting basket we never open. We'd add a dots-or-count indicator so the full swipeable set gets seen and bought.
Product page

The Glossier You Soie buy box stacks well for a phone: title, 'Eau de parfum', a 4-star rating with '(352)', a 'NEW' badge, '50 ml / 8 ml' variant tiles, a 'One-time purchase' versus 'Subscribe and save 10%' radio with a 'Details' link, then a full-width 'Add to bag $82' button carrying the price on its right edge, and 'or 4 interest-free payments of $20.50 with Afterpay' beneath. The layout is right, but the ATC renders light grey, leaving the single revenue action as the faintest element on the screen, while the subscribe option is a bare percentage with no recurring-value case made.
Fix: A washed-out primary button costs conversions, and a conversion lost is a basket no bump ever attaches to, so we'd lift the ATC to a high-contrast colour and make it sticky down this very long PDP. On subscribe, a one-line 'ships every 60 days, skip anytime' beside the toggle turns a percentage into a recurring-revenue story; the 10% only earns its keep if the cohort holds, so check the saving against your margins and prove the take-rate before defaulting it on.

Between the buy box and the revenue modules sits the description block: 'You smell like vacation… Show More', '8 ml, 50 ml', 'Cruelty-free, vegan.' The 'ADD ON' bump and the 'SAVE WITH SETS' stack only surface after that copy, on a page that also stacks scent notes, a 352-review module, and a 'YOU MAY ALSO LIKE' carousel, so on a phone the entire AOV apparatus sits a long scroll past the 'Add to bag' button.
Fix: Money modules that fire after the buy decision are money modules that miss most of the orders: the basket is already closed or gone by the time a thumb reaches them. We'd lift a condensed 'ADD ON' bump and the top set (Fragrance Trio, SAVE 21%) directly under the ATC, ahead of the long-form copy, so the second sale is offered during the decision, not after it. The components convert; they're just sequenced out of the buyer's path.

Under the description, an 'ADD ON' module presents one product ('Glossier You') as a thumbnail row with a '+' control, a one-tap attach without leaving the PDP. It functions, but it's a single-SKU dead end, and the live bag drawer never re-surfaces it as a cross-sell once the cart opens.
Fix: A one-product bump caps its own attach rate, and a bump that vanishes after the PDP forfeits the second-highest-intent moment in the funnel. We'd run it dynamic, two or three high-attach companions such as the 8 ml travel size or Futuredew (already at $30 in 'You may also like'), and, more to the point, mirror the same attach inside the bag drawer (Upsellr in-cart cross-sell) so a shopper who skipped it on the PDP meets it again the instant they open their bag. Same SKU, two intent windows, two shots at AOV.

A 'SAVE WITH SETS' block carries three expandable bundles, each a thumbnail, a '+' control and a savings chip: 'Fragrance Trio SAVE 21%', 'Vacation Essentials SAVE 16%', 'Fragrance Duo SAVE 15%'. All three ship collapsed, so the contents and the saving stay hidden until tapped, and the whole module sits low on a long phone scroll.
Fix: Quantified-saving bundles parked where mobile shoppers never scroll are pure AOV the store already built and then hid. We'd promote at least the top set (Fragrance Trio, SAVE 21%) up beside the ATC, pre-expanded, framed as 'buy the set instead' against the single 50 ml, repositioning it as an upgrade to the purchase in hand rather than an extra further down. A larger unit at a margin-positive saving is the cleanest second sale on this page; surface it where the decision happens.
Cart drawer

The headless 'BAG' drawer ships the lever most stores lack: a live free-shipping progress bar that, for an under-threshold cart, reads '€70 away from free standard shipping' and recalculates as items go in. But nothing else in the drawer helps clear that €70: no recommended products, no add-on, no goal-matched filler. The bar names the gap and then leaves it open.
Fix: A threshold that quotes the exact spend to free shipping and then offers nothing to add is an AOV lever that announces the opportunity and declines to capture it, the single most expensive gap in this funnel. We'd load two or three gap-sized recommendations straight into the drawer (Upsellr in-cart goal): the 'Glossier You' add-on and the 8 ml travel size already merchandised on the PDP, scaled to bridge the €70. That turns a passive counter into a one-tap basket-builder and converts the stated gap into incremental units.
The empty-bag state reads 'Your bag is empty, but you still look good.' with a smiley and one 'Shop all' link. Nothing recommended, no best-sellers: the drawer offers zero products to start a cart from.
Fix: An empty drawer is a starting basket waiting to happen, and a lone 'Shop all' link throws that away by sending the shopper back to browse cold. We'd seed it with two or three proven sellers (Boy Brow $22, the home-page hero; Futuredew $30) so the first move from an empty bag is adding a known winner, opening the cart that every later upsell then builds on.
Screens

What we'd fix
- 1Lift the light-grey 'Add to bag $82' button to a high-contrast colour and make it sticky down the long mobile PDP, so the one revenue action stays the dominant, always-reachable element a bump can attach to.
- 2Turn 'Subscribe and save 10%' from a bare percentage into a recurring-value case (cadence plus skip-anytime) beside the toggle, so the subscription compounds LTV instead of defaulting to one-time.
- 3Resequence the mobile PDP so a condensed add-on and the top-saving set sit under the ATC, ahead of the long-form copy, keeping the second sale inside the buy decision.
- 1Mirror the PDP 'ADD ON' (Glossier You) and the 8 ml travel size into the bag drawer as gap-sized recommendations, so the '€70 away from free standard shipping' threshold becomes a one-tap basket-builder, not a dead counter.
- 2Promote the highest-saving set (Fragrance Trio, SAVE 21%) up beside the ATC, pre-expanded and framed as a margin-positive upgrade to the single 50 ml, instead of leaving it collapsed far down the scroll.
- 3Seed the empty 'Your bag is empty, but you still look good.' drawer with two or three proven sellers so an empty bag turns into an opened cart the rest of the upsell stack can compound on.
Want these upsells live without dev?