Out of Stock Inventory Shopify: Preorders, Backorders, and SEO That Protect Sales
Out of stock inventory Shopify stores face is fixable with the right settings, theme tweaks, and operational controls. This guide shows how to enable selling at zero, run preorders/backorders, capture waitlists, improve SEO, and prevent overselling—without hurting customer trust.
What “Out of Stock” Means in Shopify
Inventory tracking vs not tracked
Tracked: Shopify decrements inventory on order. When it hits zero, variants become unavailable unless you allow continuing to sell.
Not tracked: Shopify never checks inventory. Use this for made-to-order or services, not stocked SKUs.
Set tracking at the variant level in the product editor.
Variant-level status across locations
Availability is calculated per variant per location.
Online Store availability is the sum of all locations serving that channel.
POS can have different availability if a location is excluded from Online Store.
Audit which locations serve each channel to avoid silent stockouts.
The 'Continue selling when out of stock' setting
At the variant level: inventory policy “continue” allows sales below zero (backorders/preorders).
Use it with clear messaging, ETAs, and limits to avoid chargebacks and support load.
Decide Your Strategy: Hide, Waitlist, Backorder, or Preorder
Pros/cons and when to use each
Hide
Pros: Clean UX; avoids disappointment.
Cons: Kills SEO and discovery; no demand signal.
Use when: Low demand, long/unknown lead time, low margin, discontinued prep.
Waitlist (notify me)
Pros: Captures intent; no cash flow risk.
Cons: Conversion delay; requires notifications.
Use when: Short/variable lead times, good alternatives exist.
Backorder (continue selling)
Pros: Preserves conversion; demand certainty.
Cons: Oversell risk; fulfillment complexity; potential support impact.
Use when: Reliable lead time, robust vendor SLAs, margin covers extra handling.
Preorder (launch date future-dated)
Pros: Marketing momentum; better expectations.
Cons: Compliance requirements; date risk.
Use when: New launches with clear ship-by date.
Decision tree by demand, lead time, and margin
High demand + reliable lead time + healthy margin → Backorder or Preorder.
High demand + uncertain lead time → Waitlist; avoid charging until stock secured.
Low demand + long lead time → Hide or Waitlist.
Discontinued or superseded → Keep live with substitutes for 30–60 days, then retire.
Set expectations with ETAs and limits
Show an ETA range (e.g., “Ships in 2–3 weeks”).
Cap quantity per order for backorders (e.g., max 2).
For preorders, disclose “Not yet available” and latest ship-by date.
For more patterns and deep dives, browse our inventory management blog.
More time, More Sales
Configure Shopify for Each Strategy
Enable/disable continue selling (variant-level)
Product > Variant > Inventory > Check “Continue selling when out of stock”.
Use bulk editor to update many variants quickly.
For non-stocked SKUs, set “Inventory not tracked” instead of continue selling.
Set up preorder/backorder messaging and badges
Add a product/variant metafield:
Namespace/key: custom.restock_eta
Type: date or single-line text (e.g., “Ships week of Mar 25”)
Display conditional labels and button text based on inventory policy and quantity.
Capture emails with back-in-stock notifications
Use an app or a simple form tied to your ESP.
Minimum data: product/variant ID, customer email, timestamp, consent.
Send a one-click return-to-cart link when stock is replenished.
Limit quantities and prevent oversell
Cart validation: enforce per-order limits for OOS items via theme/cart scripts or checkout validation (for Plus).
Safety stock: keep a buffer so “0” online means “>0” in the warehouse to cover shrinkage/damages.
For multi-location, choose which locations are allowed to oversell (ideally none).
Channel-specific visibility (Online Store, POS, marketplaces)
POS: You can sell at POS even if online is OOS by including the POS location and excluding Online Store.
Marketplaces: Sync rules vary; prevent oversell by disabling continue selling for channels that lack real-time decrementing.
International: Duplicate products per market if ETAs or legal text must differ.
Bulk inventory updates via CSV or API
CSV: Use the Inventory CSV to adjust quantities per location quickly.
API: Use InventoryLevel (REST) or GraphQL to set quantities, adjust safety stock, and programmatically toggle continue selling.
Automate nightly syncs from WMS/ERP to avoid stale counts.
Staff alerts and reorder points
Add product metafields for reorder point and target stock.
Notify purchasing when stock ≤ reorder point (see Automation section).
Theme Implementation (Liquid + JS)
Show 'Sold out'/'Preorder' badges on PDP/PLP
Preorder badge when
current_variant.inventory_quantity <= 0andcurrent_variant.inventory_policy == 'continue'.Sold out badge when
product.available == false.
Example conditions:
Preorder→inventory_quantity <= 0ANDinventory_policy == 'continue'Sold out→!product.available
Swap Add to Cart to 'Notify Me' or 'Preorder'
Button label logic:
If sold out and not continue selling → show
Notify meflow.If continue selling and qty ≤ 0 → show
Preorderlabel.
Disable quantity inputs if you set a strict per-order cap; validate at cart as well.
Minimal logic idea:
if !current_variant.available and current_variant.inventory_policy != 'continue' => Notify Meif current_variant.inventory_quantity <= 0 and current_variant.inventory_policy == 'continue' => Preorderelse =>
Add to cart
Display ETA via metafields
Read
product.metafields.custom.restock_etaorcurrent_variant.metafields.custom.restock_eta.Fallback order:
Variant ETA
Product ETA
Generic message “Ships in 2–3 weeks”
Collection sorting: in-stock first
Split the loop into two:
First render
collection.products | where: 'available', trueThen render
collection.products | where: 'available', false
Add an “Exclude sold out” filter toggle for shoppers.
Variant selection and URL handling
Ensure the URL updates with
?variant=IDfor shareability and analytics.Keep canonical to the product root unless variants have materially different content.
Auto-select the first in-stock variant on page load to prevent “Sold out” confusion.
SEO for Out-of-Stock Products
Schema.org availability (InStock, OutOfStock, PreOrder)
Add Offer availability per variant:
InStock for available variants
OutOfStock for unavailable with waitlist
PreOrder for preorder-enabled variants
Include
price,sku,url, andavailabilityin structured data.
Keep URLs live vs redirect; avoid soft-404s
Temporarily OOS: Keep the URL live. Provide substitutes and waitlist.
Permanently discontinued: Keep live 30–60 days with “successor” links, then:
If a direct replacement exists → 301 redirect
If not → keep a lightweight product page with “discontinued” context to avoid soft-404.
Canonicals, sitemaps, and noindex rules
Keep canonicals pointing to the main product URL.
Do not noindex temporary OOS products; they continue to rank and earn traffic.
Exclude discontinued products from sitemaps only after redirect or retirement.
Discontinued vs temporarily OOS handling
Discontinued page should state “No longer available” and link substitutes.
Temporarily OOS should include ETA, waitlist, and alternative recommendations.
Internal links and substitute recommendations
On OOS pages, add “You may also like” for in-stock substitutes driven by tags, collections, or sales rank.
Keep top internal links pointing to in-stock products to preserve conversion flow.
Notifications and Automation
Shopify Flow recipes for stock alerts and tagging
Tag products “at-risk” when days-of-cover < X or when stock <= reorder point.
Auto-email purchasing with SKU, vendor, and suggested PO quantity.
When stock hits 0, tag product “oos” and trigger theme badge/collection exclusion.
Back-in-stock emails/SMS (native or Klaviyo)
Capture and store requests by variant ID.
When stock increases, trigger a flow:
Deduplicate requests
Prioritize high-value customers
Throttle sends to avoid instant sellouts
Include 1-click deep link
?variant=and expire the link after N days.
Auto-hide/republish on stock thresholds
Flow can remove “oos” products from key collections when qty = 0 and republish when qty > X.
Apply different thresholds for high-traffic collections vs long-tail collections.
Trigger purchase orders (Stocky) and vendor emails
When stock <= reorder point:
Create draft PO to primary vendor with lead time noted.
Email vendor with target delivery date and partial shipment approval.
Feed demand signals and seasonality from your forecasting tool. If you need more robust demand modeling directly inside Shopify, explore our Shopify inventory forecasting
Inventory Controls and Forecasting
Safety stock per location
Calculate safety stock by SKU and location:
Simple: safety stock = max(1, average daily sales × lead time variability in days)
Better: z-score × demand std dev during lead time
Store the buffer in a metafield and exclude it from sellable online quantity.
Reorder points and lead times
Reorder point (ROP) = demand during lead time + safety stock.
Use vendor-specific lead times; update after each PO receipt to reflect reality.
For kits/bundles, base ROP on the bottleneck component.
Track OOS rate and lost sales
OOS rate = time OOS ÷ time listed, or visits to OOS variants ÷ total visits.
Estimate lost sales conservatively:
Lost units = sessions on OOS × baseline conversion rate
Lost revenue = lost units × AOV per SKU
Forecasting with sales velocity and seasonality
Blend:
Recent velocity (7–28 days) weighted with seasonality index
Event overrides (promos, launches)
Channel mix shifts
Run scenario plans for vendor delays or MOQ constraints.
For calculators and worksheets that help set ROP and safety stock, see our inventory planning tools
Shipping and Fulfillment for Preorders/Backorders
Split shipments and partial fulfillments
Allow partial fulfillments so in-stock items ship first.
Communicate split shipping at checkout and in order confirmation.
Separate shipping profiles/rates for preorders
Create a profile with longer handling times or labeled “Preorder Shipping”.
Avoid mixing preorder and stocked items when it inflates shipping costs.
Estimated ship dates in checkout and emails
Surface the ETA metafield in cart, checkout notes, and order confirmation.
Provide a latest-possible date (buffered) to reduce WISMO contacts.
Handling delays and proactive updates
If dates slip:
Email/SMS with revised ETA, apology, and easy cancellation path.
Offer a comparable substitute or partial refund of shipping.
Update product and cart messaging to the new window.
B2B and Bulk Ordering Considerations
Allocations and backorder caps
Allocate a portion of inbound stock to key accounts.
Cap backorders per customer or per order to protect retail availability.
Price lists and availability rules
Show customer-specific pricing and availability.
Hide preorder from customers without allocation; expose waitlist instead.
Net terms and fulfillment timelines
For backorders on terms, confirm ship-by dates and cancellation windows in writing.
Provide EDI/CSV ASN updates with revised ETAs.
If you also operate a wholesale catalog on another platform, our WooCommerce inventory forecasting plugin can help you align demand planning across sites.
Playbooks and Templates
Email templates: preorder, delay, restock
Preorder confirmation
Subject: Thanks—your preorder is locked in
Body: Item, ETA window, split-ship note, cancellation policy, contact.
Delay notification
Subject: Update on your order—new ship window
Body: Apology, new ETA, why it changed, options (wait, substitute, cancel).
Back in stock
Subject: It’s back—your saved item is available
Body: Variant, direct link, limited-quantity disclaimer, expiry.
Support macros and policy updates
Macro: “Preorder ETA + options”
Macro: “Backorder status check”
Policy: Preorders charged now vs on ship; cancellation terms; split shipments.
Prelaunch checklist before publishing changes
Variants labeled with correct badge logic.
ETA metafields populated and reviewed by operations.
Cart/checkout messaging tested on mobile.
Flow automations enabled for alerts and republish.
Collections sorted in-stock first.
SEO structured data updated with availability.
Soft CTA: Pick one high-traffic SKU, add an ETA metafield, enable waitlist or preorder with clear limits, and create one Flow for low-stock alerts. Measure OOS rate and lost sales for 14 days, then iterate.
FAQs
How do I allow customers to buy when inventory is zero in Shopify?
Enable “Continue selling when out of stock” at the variant level. Pair it with clear preorder/backorder messaging, an ETA, and quantity limits to prevent oversell.
Should I hide sold-out products or keep them live for SEO?
Keep temporarily OOS products live with waitlists and substitutes. Hide (or redirect) only discontinued items after a short transition. Avoid noindexing short-term OOS pages.
What’s the difference between backorder and preorder in Shopify?
Backorder sells an existing item with zero on-hand; ships when replenished. Preorder sells an upcoming item with a future ship date. Both need disclosures; preorders should include a clear ship-by date.
How can I send back-in-stock alerts without an app?
Capture emails via a simple form tied to your ESP and store the variant ID. When stock increases, trigger an automated email/SMS with a one-click variant link and expiration.
How do I prevent overselling across multiple locations?
Disable continue selling where you lack real-time sync, maintain safety stock per location, and validate cart quantities. Restrict which locations can fulfill Online Store if needed.
How do I add 'Preorder' badges and change the Add to Cart button?
Use theme conditions: show Preorder when inventory_quantity <= 0 and inventory_policy == 'continue'; swap button label to ‘Preorder’. If sold out and not continue, show ‘Notify me’.
How should I handle discontinued products in Shopify?
Keep the page live 30–60 days with “discontinued” messaging and substitutes, then 301 to the closest alternative. Update structured data and remove from sitemap.
Does schema.org availability help with out-of-stock SEO?
Yes. Mark InStock, OutOfStock, or PreOrder on Offers. It clarifies status to search engines, reduces soft-404 risk, and can improve the accuracy of rich results.
