Improving customer clarity

for product availability

for product availability

for product availability

  • Before

  • After

To address a lack of transparency on when products were available, we designed a new flow to show availability across the shopping experience

Key contributions

Understanding & untangling data plumbing

Understanding & untangling data plumbing

Constant collaboration with engineering to understand the different data sources for each piece of product data surfacing and the constraints that placed on the final solution

Constant collaboration with engineering to understand the different data sources for each piece of product data surfacing and the constraints that placed on the final solution

Clarifying & condensing language

Clarifying & condensing language

Given a complex set of bespoke product schedules, devised a templated system for content to appear consistently across three separate component types, from the very small (product card) to roomy (dialogue)

Given a complex set of bespoke product schedules, devised a templated system for content to appear consistently across three separate component types, from the very small (product card) to roomy (dialogue)

Change management

Change management

Because the schedules would continue to be managed by a stakeholder group (site operations), led multiple hand off sessions and created template documentation for a seamless transition to the new process

Because the schedules would continue to be managed by a stakeholder group (site operations), led multiple hand off sessions and created template documentation for a seamless transition to the new process

Project details

Role

Lead UX content designer

Team

Product design, data engineering, site operations, product management

Responsibilities

All copy across product card, product detail page, cart, and checkout flow, copy templates and guideline creation, change management

Opportunity

H-E-B sells hundreds of products online that are only available to order for curbside or delivery during specific time periods—for example, made-in-house rotisserie chickens can only be ordered between 10am and 7pm.

Because customers can add items to their carts before selecting a time slot for delivery or pick up, they could add a rotisserie chicken to their cart, proceed to check out, choose a time slot, and only then would they learn the item isn’t available for the time they chose.

At that point, users were left with few options: remove the items from their cart and proceed with their order at the selected time, or, if they really wanted that rotisserie chicken, select a new time and risk other items being unavailable for that time.

Goals

  • Improve the visibility of an item’s availability schedule

  • Alert users of time slot conflicts earlier in their journey

  • Give users alternate paths when they run into a conflict

  • Reduce number of "shorts" (item customer orders not included in final order) and "subs" (item customer orders substituted for something else)

My approach

1

Understanding the partner experience

We started by mapping the existing processes in place for internal partners (the site operations team) to manage time-restricted products. We found out:

  • Site ops' primary tool for product availability management had a highly manual interface, by which they set up rules for individual products (or a category of products) based on times and days of the week

  • The site ops team was also responsible for writing and inputting a message for each product, leading to worries about QA, length, and clarity

  • We would only be able to account for the products we knew about during design, so any new products added into the catalogue after launch would need to be managed by site operations—we'd need to create an easy-to-follow system once we wrapped the work

2

Untangling the data that powers the experience

Another roadblock was the data that powered the availability management tool: the system was technically only for blacking out items for online orders.

As an online shopper (for pickup or delivery) you can only order a rotisserie chicken between 10am and 7pm for operational reasons. However, if you were to go in-store at 8pm, there may well still be a chicken there you could buy.

The data available to us to show customers online, regardless of their shopping mode or intent, was the pickup and delivery blackout times. We needed to determine the risk of showing an item’s availability based on pickup/delivery times and whether that would be misleading to customers. After evaluating each product's schedule, we saw that the benefit of seeing those times would outweigh the risk of someone assuming a product wasn't available at all—at best, it would prevent someone from going in-store and finding an item wasn't available, and at worst, that customer might not make the trip.

3

Mapping the content to our components

Once we untangled the data plumbing, we realized that the message generated in the availability management tool was used in multiple places: the product card, the cart conflict sheet (triggered by selecting a time slot that didn't work for items already in your cart), and the cart conflict modal (triggered by adding to cart from the product detail page) with a "conflict" time selected. This presented a challenge for content: what language would make sense in all three spots (that each had their own very different formatting).

Data sources for time restricted products

4

Testing customer preferences on conflict resolution

The main difference between the two main solutions we were beginning to explore were giving customers the option to resolve time restriction-related conflicts at the product level or at checkout. We developed and executed a usability test using UserTesting.com to gauge customer preference and get additional feedback on how much context users wanted on time restrictions (especially if they didn't have a time slot already selected).

We conducted an unmoderated test where users were guided through three prototypes and then answered a series of questions on ease of use and preference.

User preference was for the experience where the conflict was resolved at checkout—with added visibility into availability along the way—on both the product card and the product detail page.

In version A (on left), completely removing the Add to cart button and asking a user to change their time in the middle of browsing and shopping was too disruptive and restrictive. Users preferred version B (on right), where they got information on the availability of the item, but they could still add to cart.

In version A (on top), completely removing the Add to cart button and asking a user to change their time in the middle of browsing and shopping was too disruptive and restrictive. Users preferred version B (on bottom), where they got information on the availability of the item, but they could still add to cart.

Users also preferred to change their time directly from the cart conflict sheet.

5

Finalizing the solution

Product card availability message

  • We created an availability message that would appear on product cards only when a customer selected a time slot in conflict with that product's availability, determining that showing the message at all times would increase cognitive load at a time when the customer’s intent isn’t clear

  • We also added a secondary CTA, “Choose new pickup time” — this provided users with a path to find a time that would work for them

  • I developed a set of templates for site operations to work from when creating new messages (see screenshot X).

Product detail page

  • To alleviate friction, we added the availability schedule (When it's available) for users on each individual item’s PDP. Instead of having to rely on site operations partners to manually enter this information, we were able to utilize and transform the availability data into a user-friendly summary. I worked closely with backend on that translation.

  • We gave the schedule a prominent, dedicated spot on the PDP, knowing from research that users often skip or skim the “Product details” section — I didn’t want this important information buried there.

  • If a user has a conflicting time slot selected, we included an alert banner at the top of the PDP communicating that they wouldn't be able to add to cart, and giving them an option to change their selected time.

Content decisions

Language standardization

Language standardization

One of the biggest issues with copy in the previous experience was how inconsistent it had become, mostly due to different teams owning different parts of the flow. Availability language can show up on product cards, PDPs, add-to-cart modals, and cart conflict sheets, so I ensured the same language was used no matter where a user encountered it. This included how we talked about time slots, changing your time, and the formatting of the date and time ranges.

One of the biggest issues with copy in the previous experience was how inconsistent it had become, mostly due to different teams owning different parts of the flow. Availability language can show up on product cards, PDPs, add-to-cart modals, and cart conflict sheets, so I ensured the same language was used no matter where a user encountered it. This included how we talked about time slots, changing your time, and the formatting of the date and time ranges.

Not available vs. available

Not available vs. available

On the product card, I needed to determine whether the copy should reflect when a product is available, or when it is not. To alleviate potential negative perceptions of seeing a bunch of "Not available" across products in the search grid, I opted to emphasize when products are available. This also helped eliminate any mental math a user might need to do to determine what time slot would get them what they wanted.

On the product card, I needed to determine whether the copy should reflect when a product is available, or when it is not. To alleviate potential negative perceptions of seeing a bunch of "Not available" across products in the search grid, I opted to emphasize when products are available. This also helped eliminate any mental math a user might need to do to determine what time slot would get them what they wanted.

Day and time formatting

Day and time formatting

For the availability schedule on the product detail page, I looked for any opportunity to distill the copy down to make it easily skimmable. For example, instead of listing out individual days that had the same time ranges, I collapsed those into day ranges or "Every day."

For the availability schedule on the product detail page, I looked for any opportunity to distill the copy down to make it easily skimmable. For example, instead of listing out individual days that had the same time ranges, I collapsed those into day ranges or "Every day."

Results, impact & learnings

Fewer cart conflicts at checkout = happier customers.

We saw a 43% drop in users seeing a conflict at checkout for blackout items two months after launch, suggesting that they resolved those conflicts on their own earlier in their journey instead of being surprised with a disappointing "not available" at the end of their shop.

Codifying formatting decisions.

Because I had to dig so deeply into how I wanted to format date and times, it led to some content team-wide conversations about our overall approach to time formatting. We now have more detailed documentation that other content designers can use when they need to show dates and times in the flows their teams are working on.

Laying the ground work for phase 2.

As soon as we wrapped this work, we tackled the other half of this problem—items that become available for more unpredictable reasons, like machinery outages or supply chain issues. We were able to leverage our approach fairly seamlessly, with some tweaks to the language.