Redesigning the TeamShirts PLP

Redesigning the TeamShirts PLP | Making a B2B bulk pricing model transparent without changing the business model

Users were consistently surprised by their basket total because the default price shown on the PLP assumed 25 items, a quantity most buyers never reached. The business wouldn’t change the default. The design had to fix the perception problem instead.

Context

TeamShirts is a B2B print-on-demand platform for sports teams, and businesses | bulk orders with volume-based pricing. I was the sole designer on the product. The PLP had accumulated significant UX debt: outdated information hierarchy, accessibility issues, and a pricing mechanic that consistently confused users.

I ran a full Baymard best-practice audit alongside primary research and owned the redesign from discovery to stakeholder approval over three months.

Problem

TeamShirts’ pricing is bulk-based, the more items you order, the lower the per-unit cost. The live PLP displayed prices based on a default quantity of 25 items. But the majority of actual basket sizes were between 10 and 15 items, meaning the price users saw on the PLP was almost always lower than what they’d pay at checkout.

This created a predictable and repeated trust problem: users arrived expecting one price and were surprised, negatively at the end of the journey.

Discovery | Research

In interviews, users described the pricing as “not transparent.” In unmoderated tests, especially on mobile, many didn’t notice the 25-item qualifier at all. The surprise came at checkout, often after they’d already invested time building their order.

User Research

40+

Unmoderated usability tests

User Research

5

User interviews

User Data

10–15 items

Avg. actual basket size

The constraint

The logical UX fix was to change the default quantity to 15-item, closer to real basket behaviour. After multiple conversations with the TeamShirts Director, PO, and assortment manager, this wasn’t possible. The 25-item default was tied to the business model and discount structure, and it wasn’t going to change.

The design challenge became: how do you make a pricing model transparent when you can’t change the model itself?

Two approaches | And why one was rejected

Approach 1 | Simplified tier system (Rejected)
Show a simplified discount tier selector on the PLP | users pick their quantity bracket, prices update accordingly. Clean, transparent, and directly addresses the confusion.

Rejected

Approach 1 | Simplified tier system

Predefined tiers

Based on predefined amounts with clear way of communicating the associated discount.

Why it didn’t work

Discount percentages vary by product category and would eventually differ per product type. A unified tier display would show inaccurate percentages across the catalogue, replacing one trust problem with another.

Approach 2 | Transparent bulk pricing with per-product accuracy (Approved)
A prominent bulk discount component anchored at the top of the PLP (Mobil & Desktop), accessible input field, predefined quantity increments (25, 50, 100), and per-product price display that reflects the selected quantity accurately. Prices update per item based on real discount data, not a generalised tier.

Approved

Approach 2 | Transparent bulk pricing with per-product accuracy

Why it works

Users who know their quantity can set it immediately and browse with accurate prices. Users who don’t know yet see the default 25, but now it’s:

  • Clearly labelled as bulk pricing context, with a prominent component on top of the PLP.
  • Communicated on the PLP tiles too, “£15.65/pc 25 pieces”

What the redesign addressed

Pricing transparency

UI Screens

Bulk Context

Prominent above the fold

The bulk discount calculator is now the first thing users see on the PLP, especially on mobile, where it was previously easy to miss entirely.


UI Components

Product tiles

Price tied to quantity

“£15.65/pc · 25 pieces” displayed directly on every tile, connecting the per-item price to the quantity set at the top. No hidden assumptions.

Information hierarchy

UI Screens

Engagement

Category hero images

Team-in-action images introduced at the top of each product category, compensating for the absence of model imagery on tiles (an assortment constraint) and giving the page emotional context.


Page structure

Clear H1 and category navigation

A clear H1 title anchors each page. Product categories are surfaced immediately below, stand-alone on desktop, prominent above filters on mobile, rather than buried inside the filter panel.


Filters

Significant improvements across both breakpoints

Filter UI rebuilt for desktop and mobile. Active filter count now shown per filter (“Colours 3”), giving users a clear summary of what’s applied without opening each panel.

Product tiles

UI Components

Price clarity

Sale vs. bulk clearly separated

Sale prices and bulk discount prices now have distinct visual treatments — preventing users from misreading a volume price as a promotional deal.


Product properties

Organic cotton label with text

The icon-only organic cotton badge now includes a text label — making the attribute legible without relying on icon recognition alone.


Accessibility

Colour swatches always visible

Colour options are now permanently visible on tiles — no hover required. Contrast ratios meet accessibility standards throughout, fixing a major gap in the live version.

Before & After

Before

Bulk pricing

Prices displayed for 25 items by default with no prominent explanation. On mobile, the quantity context sits below the fold, most users miss it entirely.


Page structure

No hero image. Generic “Products” H1. Categories buried in a left-panel sidebar on desktop, hidden inside a single “Filter” dropdown on mobile.


Filters

Single undifferentiated “Filter” button on mobile with no indication of what’s active. No per-filter count. Users can’t tell what’s applied without opening the panel.


Product tiles

Bulk discounts and sale prices share the same visual treatment, a “-7%” badge that looks identical regardless of type. Organic label is icon-only. Colour swatches hidden behind hover.

After
UI Screens

Bulk pricing

Bulk discount calculator is the first element on the page. Price/item on every tile is explicitly tied to the selected quantity, no hidden assumptions, no checkout surprises.


Page structure

Team-in-action hero image sets emotional context. Clear H1 per category. Categories surfaced as stand-alone navigation, above filters on mobile, left panel on desktop.


Filters

Individual filter pills visible on both breakpoints. Active count shown per filter (“Colours 3”). Users see exactly what’s applied at a glance.


Product tiles

Sale and bulk prices visually distinct. Organic cotton label includes text alongside the icon. Colour swatches permanently visible, no hover required, with accessible contrast throughout.


Bulk discount input field


Filters


Loading state

Validation

The final direction was tested against the live version with users before stakeholder presentation. The key signal: users understood they were seeing per-item pricing for a specific quantity, without needing additional explanation.

Reflection

The most important skill this project required wasn’t visual, it was knowing when a constraint is fixed and designing around it rather than against it. The 25-item default wasn’t going to change. Spending more time advocating for it would have delayed a solution that users actually needed.

The simplified tier approach was cleaner on paper. Letting it go when the data accuracy problem became clear was the right call, a design that looks transparent but shows wrong numbers would have made the trust problem worse, not better.

Transparency isn’t about showing everything

It’s about making sure what you show is accurate and clearly contextualised.

This is a unique website which will require a more modern browser to work!

Please upgrade today!