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

AI Forecasting For E-Commerce Merchants

AI Forecasting For E-Commerce Merchants

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 <= 0 and current_variant.inventory_policy == 'continue'.

  • Sold out badge when product.available == false.

Example conditions:

  • Preorderinventory_quantity <= 0 AND inventory_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 me flow.

    • If continue selling and qty ≤ 0 → show Preorder label.

  • 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 Me

  • if current_variant.inventory_quantity <= 0 and current_variant.inventory_policy == 'continue' => Preorder

  • else => Add to cart

Display ETA via metafields

  • Read product.metafields.custom.restock_eta or current_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', true

    • Then 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=ID for 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, and availability in 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.

Ditch CSV Exports and Excel Formulas

Ditch CSV Exports and Excel Formulas

AI Forecasting For Shopify Merchants

AI Forecasting For Shopify Merchants