UXFixUXFix
Language
Audit my store free
Audit findings

Out-of-Stock Product Page Best Practices: Rule PDP-007 Scored

Abdulhameid Grandoka·4 September 2026
Out-of-Stock Product Page Best Practices: Rule PDP-007 Scored

The best practice for an out-of-stock product page is to keep the page live, state plainly that the item is sold out, offer a one-field notify-me form in the buy button's slot, and show in-stock alternatives beside the price. Rule PDP-007 in the UXFix audit checks exactly that. A sold-out page with neither remedy loses the shopper today and the return visit next month, and gives AI shopping agents nothing to act on.

What rule PDP-007 checks

PDP-007 is one of the product page rules in our 115-rule book. It is tagged medium severity, decision stage, flow category. Decision stage means the shopper has already found the product and is working out whether to buy. Flow means the rule is about keeping that shopper moving rather than stopping them dead.

The check is a single sentence: out-of-stock items offer notify-me or alternatives. Our auditor loads a product that is unavailable, either fully sold out or with a sold-out variant selected, and looks for two things in the primary product area. Is there a working way to be told when it returns? Is there a visible route to something similar that is in stock right now?

Either one, done properly, is enough to pass. Both is better and the report says so, but the rule is deliberately an "or". A single-product brand that restocks every six weeks has different tools than a marketplace with 40 near-identical items and no restock date.

We treat the following as not meeting the rule on their own:

  • A disabled Add to Cart button with no explanation.
  • The words "Out of stock" or "Sold out" with nothing else on the page changed.
  • A generic "You may also like" carousel at the bottom of the page that includes other sold-out items.
  • A notify-me link that opens a full account sign-up.
  • A 404, or a redirect to the category page.

That last one surprises people. Removing the page feels tidy, but it destroys the ranking the URL has earned, breaks every inbound link and bookmark, and tells a returning shopper nothing about whether the product will return. The full reasoning is in Why Out-of-Stock Pages Quietly Kill Your Conversion Rate. This article is about what the page should show once you have kept it.

The rule also applies per variant. A t-shirt page with medium sold out is an out-of-stock page for every shopper who wants medium. If selecting medium just greys the button, that variant state scores as a fail even though the product technically has stock.

Why does a sold-out page lose the sale?

A shopper who lands on a sold-out product page arrived with intent. They clicked a search result, an ad, an email, or a link from a friend. The page has already done the expensive part of the funnel. What happens in the next five seconds decides whether that intent is captured, redirected, or thrown away.

The disabled button is where most of it is thrown away. Nielsen Norman Group's first usability heuristic is visibility of system status: the interface should always tell people what is going on. A grey button that does nothing when tapped violates it directly. On mobile we watch test shoppers tap two or three times, assume the site is broken, and leave. They do not blame the stock. They blame you.

41%
of sold-out PDPs we audit offer neither notify-me nor an in-stock alternative · UXFix, n=200
23%
show a greyed-out Add to Cart with no explanation of what to do next · UXFix, n=200
70%
average documented cart abandonment rate, the ceiling you are already fighting · Baymard

The second loss is quieter. Even a shopper who understands the item is sold out has no reason to come back unless you give them one. Restock dates are guesses, and almost nobody sets a personal reminder for a backpack. A notify-me form turns a vague "maybe later" into an email address you hold and a message you send on the day the stock lands.

The third loss is the sale you could have made instead. A shopper who wanted navy at 40 litres will often take black at 40 litres, or navy at 35, if you put it in front of them at the moment of disappointment. If the only way to find it is to go back to the category page and start again, a large share will not bother.

None of this is an argument for hiding stock status. Baymard's checkout research is consistent that late surprises drive abandonment, and its aggregate cart abandonment rate sits around 70% across the studies it tracks. Letting someone add a sold-out item and discover the problem at checkout is the worst version of this. Say it is sold out, say it early, then give them somewhere to go.

How we score it: fail, partial and pass

Our auditor assigns one of three states to PDP-007. The table below is the exact criteria. To self-audit before running the tool, load your most popular sold-out product on a phone and check the first screen against it.

State What the page shows Typical evidence
Fail Sold-out status with no notify-me and no in-stock alternative in the product area. Or the page is removed or redirected. Disabled button, "Sold out" badge, generic footer recommendations only.
Partial One remedy exists but is weak: buried below the fold, requires an account, includes other sold-out items, or gives no confirmation. Notify-me text link under the description. "Similar items" carousel with two of four also sold out.
Pass Status stated in plain words next to the price. Notify-me with one field and a confirmation, or at least three in-stock alternatives, visible without scrolling on mobile. Replaced primary button, inline form, alternatives with price and stock shown.

What a fail looks like

The most common fail is not an ugly page. It is a well-designed page that has been switched off. The photography is still there, the price is still there, and the only signal is that the button has gone grey. Nothing acknowledges that the shopper has a problem, let alone helps with it.

The second common fail is the page that says "Sold out" and does nothing else. Honest, but a dead end. We also score a fail when the sold-out variant simply vanishes from the selector, so a shopper looking for size 10 cannot tell whether it never existed or ran out.

What a partial looks like

Partial is where most stores that have thought about the problem end up. There is a notify-me option, but it is a text link under the description that opens a modal asking for name, email, phone and marketing consent. Or there is a recommendations carousel, but it is the same block that appears on every page, it sits below the reviews, and two of its four items are sold out too.

Partial also covers a form that works but gives no confirmation. The shopper taps submit, the field clears, and they are left wondering whether it went anywhere. We test this by submitting a real address and watching the page.

What a pass looks like

A pass replaces the primary call to action rather than disabling it. The slot that said "Add to cart" now says "Email me when it is back", with an inline email field directly above or beside it. The sold-out status is written next to the price. Below the form, three or four in-stock alternatives show image, name, price and a stock indicator. All of it fits on the first mobile screen.

Before

Price, colour swatches, a grey Add to Cart that does nothing, then 900px of description and reviews before a generic carousel.

After

Price with "Sold out, restocking" beside it, the sold-out swatch struck through, one email field and a Notify me button in the primary slot, then three in-stock alternatives with prices.

A pass does not need both remedies. A single-product brand with no alternatives passes on a good notify-me form alone. A marketplace passes on strong alternatives alone, provided every item shown is actually in stock. The report notes which route you took.

115 research-backed rules. Zero guesswork.
✕ PDP-018 ✓ CRT-008 ~ CHK-031 ✕ PDP-042
Baymard · NNG · WCAG 2.2 · agent-commerce specs
Audit my store →

The notify me when back in stock button, done properly

The notify-me pattern is old and well understood, which is exactly why it is so often done carelessly. Here is what we look for and why.

Put it where the buy button was

The Add to Cart button is the one element every shopper is trained to look for. When the item is sold out, that slot is the most valuable space on the page. Filling it with the restock form means the shopper finds the remedy without reading anything. Leaving it grey and putting the form elsewhere means they have to hunt, and most will not.

If you run a sticky Add to Cart bar on mobile, the sticky bar should switch to the notify-me action too. We cover that bar in Sticky Add to Cart Button: How We Score Rule PDP-003, and the two rules interact: a sticky bar that keeps saying "Add to cart" on a sold-out item fails both.

One field

Ask for an email address. Nothing else. Name, phone number, consent tick boxes and account creation each cut completion, and none of them is needed to send one restock message. If your jurisdiction requires explicit marketing consent, separate it: the restock email is a transactional message the shopper asked for, and the marketing opt-in is a separate, unticked box beneath.

Prefill the field for logged-in shoppers. Offer SMS if your audience wants it, but never make the phone number mandatory.

Say what happens next

After submit, replace the form with one sentence in the same slot: "Done. We will email a***@example.com the moment this is back. Nothing else unless you ask." That line resolves three anxieties at once: did it work, what will I get, and will you spam me.

The fastest way to lose trust here is a form that silently clears. The second fastest is a redirect to a thank-you page that loses the product context.

Send the email like you mean it

Trigger it from inventory the moment stock is live, not in the next scheduled campaign. Include the product image, price, the size or colour they asked about, and one button that opens the product page with that variant preselected. If stock is limited, say roughly how much.

Then stop. One email per restock. If it sells out again before they open it, offer to keep them on the list rather than pretending nothing happened.

Do
  • Replace the Add to Cart button with the notify-me form, same position, same size.
  • Confirm inline with the captured address and a promise about what you will send.
  • Mark sold-out variants on the swatch itself so shoppers see it before they select.
Don’t
  • Ask for a name, phone number or password to register interest.
  • Hide the form behind a text link below the description.
  • Send a restock email for an item that sold out again before you hit send.

Handle the variant case

Most out-of-stock situations are partial. The product is in stock, just not in the size or colour this shopper wants. The form should capture the selected variant, so the email is for a medium in navy and not for the product in general, and the link back should preselect it.

Show stock state on the swatches. A struck-through or labelled swatch tells the shopper before they tap. A swatch that looks normal and then greys the button is a small betrayal repeated on every visit.

In-stock alternatives that get clicked

The second remedy in PDP-007 is showing something the shopper can buy now. It sounds trivial, and most stores already have a recommendations block. The reason so many score partial rather than pass is that the block was never designed for this moment.

Alternatives are not recommendations

A "You may also like" carousel is built to raise order value on a page where the main item is available. It surfaces complementary products, best sellers, or whatever the algorithm has learned about the visitor. On a sold-out page the job is different. The shopper wants this thing and cannot have it. Show them the closest available substitute.

Closest usually means the same product in another colour or size, then the same category at a similar price, then a newer version of the item if one exists. Substitutes should share the attribute the shopper cared about. If they chose a 40-litre backpack, show 35 and 45 litre packs, not a wallet.

Every alternative must be in stock

This is the criterion that fails the most carousels. Show four alternatives with two also sold out and you have sent the shopper down a second dead end. Filter the block to items with available stock, in the shopper's selected size where sizes apply. If that leaves fewer than three, show fewer. Two real options beat five with two duds.

Put them where the shopper is looking

Alternatives belong directly beneath the sold-out notice and the notify-me form, above the description. On mobile that means within the first screen or one thumb scroll. A block that appears after 1,200 pixels of reviews is not an alternative, it is a footer.

Each card needs image, name, price and a plain stock indicator. If the price differs from the sold-out item, show it. Shoppers accept a small difference on the product page; they do not forgive finding it in the cart.

Label the block for the moment

"You may also like" is the wrong headline. "Available now" or "In stock in your size" tells the shopper why the block exists and that it will not waste their time. If you offer both remedies, put the form first and the alternatives immediately beneath, never behind tabs or an accordion that forces a choice.

What AI shopping agents need from a sold-out page

UXFix scores every product page twice: once for a human shopper and once for an AI shopping agent. PDP-007 is one of the rules where the two scores diverge most, because the human remedies are visual and the agent remedies are structural.

An agent answering "find me this jacket in medium" does not see a greyed-out button. It reads the page, and it strongly prefers structured data over inferring meaning from layout. If the page carries no machine-readable availability, the agent either guesses, reports the item as available and sends the shopper to a dead end, or skips your store for one that answered cleanly. Our wider findings are in Why ChatGPT and Gemini Don't Recommend Your Store.

Mark up availability honestly

The schema.org Offer type has an availability property with a precise vocabulary. Use the value that matches reality, per variant where you can:

  • https://schema.org/InStock when the shopper can buy now.
  • https://schema.org/OutOfStock when it is sold out and you do not know when it returns.
  • https://schema.org/BackOrder when the shopper can pay now and receive later.
  • https://schema.org/PreOrder for items not yet released.
  • https://schema.org/Discontinued when it is not coming back.

The full list is on the ItemAvailability page. The most common mistake we see is a page that says "Sold out" to humans and InStock to machines, because the structured data was set once at launch and never wired to inventory.

A minimal honest Offer for a sold-out variant:

json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Ridge 40L Backpack, Navy",
  "sku": "RDG-40-NVY",
  "offers": {
    "@type": "Offer",
    "price": "129.00",
    "priceCurrency": "GBP",
    "availability": "https://schema.org/OutOfStock",
    "url": "https://example.com/ridge-40l-backpack?variant=navy"
  }
}

If you know the restock date, add availabilityStarts with an ISO date. An agent that reads it can tell the shopper "back on the 14th" instead of "unavailable", which is a different recommendation.

Make the alternatives machine-readable too

An agent that finds OutOfStock will look for a substitute. If your alternatives block is injected by client-side JavaScript after load, some agents will never see it. Render the alternatives server-side, give each its own link with name and price in plain HTML, and reference them with isSimilarTo on the Product where your platform allows.

Keep the page and keep it consistent

Agents rely on the URL they found last time still resolving. A sold-out product that returns a 404 tells the agent your catalogue is unreliable, and unreliable catalogues get recommended less. Return 200, keep the canonical, mark OutOfStock, and flip it back the moment stock lands. If the item is truly gone, use Discontinued and link the replacement.

The out-of-stock PDP checklist

Run this against a sold-out product on a phone and against the page source. Every line maps to something our auditor tests.

  • The page returns 200 and keeps its canonical URL.
  • "Sold out" or equivalent is written next to the price, not only implied by a grey button.
  • The primary button slot holds a notify-me form with one field and a clear label.
  • Submitting gives an inline confirmation naming the address and what will be sent.
  • The form captures the selected variant.
  • Sold-out variants are marked on the swatch before selection.
  • At least three in-stock alternatives, with price and stock shown, appear within one scroll.
  • The alternatives block is filtered to available items only.
  • The sticky bar, if any, switches to the notify-me action.
  • Offer availability in structured data matches the visible state, per variant.
  • availabilityStarts is set when a restock date is known.
  • Alternatives are present in the server-rendered HTML.

Twelve lines. A store that ticks the first four and the tenth already passes PDP-007 for both shoppers and agents. The rest of the book is in All 115 Ecommerce Checkout UX Rules We Audit Against.

Frequently asked questions

Should I hide sold-out products from category pages and search?

Not by default. Hiding them removes the shopper's chance to learn the item exists, register interest, or see when it returns, and it costs the page its search standing. Show them in category pages with a clear "Sold out" label, sort them below in-stock items, and let shoppers filter them out if they want. The exception is a permanently discontinued product with a direct successor: redirect that one to the successor and mark it Discontinued.

Is notify-me enough on its own, or do I need alternatives as well?

PDP-007 passes on either remedy done well. Notify-me alone fits a store with few products, reliable restocks, and a genuinely distinct item. Alternatives alone fit a store with many close substitutes and uncertain restock timing. Most stores with more than a handful of SKUs should offer both, form first and alternatives directly beneath, because the shopper willing to wait and the shopper who needs it this week are both on the page.

What if I never restock the item?

Say so. A notify-me form on a product that is not coming back is a promise you will break. Mark it discontinued in the visible copy and with https://schema.org/Discontinued in the structured data, keep the page live long enough for inbound links and search to land somewhere useful, and make the alternatives block the primary element. If a direct successor exists, name it and link it on the first screen.

Do AI shopping agents actually check availability before recommending a product?

Yes, and agents with browsing will open the page to verify. What they check is the structured data and the visible text, not the button state, so a page with InStock in its JSON-LD and a grey button reads as available to the agent and as sold out to the shopper it sends you. Keeping Offer availability wired to real inventory, per variant, is the single change that moves the agent score on this rule.

Keep reading

Audit findingsPDP-001: Price Visible Above the Fold on Desktop and Mobile, Without Scrolling or TappingRule PDP-001 fails more mobile product pages than any other pricing rule we audit, and the fix is usually a layout change you can ship this week.Audit findingsShipping Cost on the Product Page: How PDP-004 Is ScoredPDP-004 is one of the most-failed critical rules in our audits: here is exactly what a passing product page shows, where it shows it, and how to make the data readable by AI shopping agents.Audit findingsProduct Page Stock Availability UX: How We Score Rule PDP-006Every product page must say, in words next to the price, whether the selected variant is in stock, low or gone; here is how UXFix scores it and what failing, partial and passing pages look like.

See what UXFix finds on your own store

115 rules, your product page, cart and checkout, a screenshot of every issue. About four minutes.

Audit my store free