A wide flat systems illustration where product and inventory signals enter a promise-control checkpoint, then branch to a waitlist workflow or a pre-order payment, allocation, fulfilment, and exception workflow.
Journal
Shopify Development & Integrations · 8 min read

Shopify pre-order apps: choose the promise before the app

An out-of-stock product creates two different decisions. A merchant can record interest and notify the customer later, or accept an order now and promise fulfilment later. Many Shopify apps offer both buttons, but the operational consequences are not interchangeable.

A waitlist is a demand signal. A pre-order is an order, payment decision, inventory commitment, shipping representation, and customer-service obligation. Choose the promise before choosing the app.

Decide what the customer is being promised

Reader question: Is the store collecting intent or accepting an obligation?

A back-in-stock signup records a contact, variant, market, channel, consent state, and notification status.[6] It creates no order and takes no payment. Shopify documents several marketing-automation templates, but not a variant-specific restock alert, so verify the native gap before adding an app.[5]

A pre-order creates an order before the product is ready to ship. Shopify supports full, partial, or no payment at order time through pre-order apps.[1] The operation must cap or reserve quantity, handle failed balances, monitor promised dates, and give delayed customers a cancellation and refund path.

For US orders, the FTC says sellers need a reasonable basis for the stated shipping time. If no time is stated, the default is 30 days. A missed promise requires notice, a revised date or explanation, and a choice to accept the delay or cancel for a prompt refund.[11] This is operational guidance, not legal advice.

Shopify can continue selling after stock reaches zero, but that setting is only an oversell control.[4] Shopify's documented pre-order workflow requires an app that exposes the purchase option on the product page and checkout.[1][2]

Current Shopify restrictions matter: pre-orders are limited to Online Store and Custom Storefront; do not support Shop Pay, Apple Pay, Google Pay, several local payment methods, customized checkouts, Shop Promise, or Buy X get Y discounts; and cannot combine different purchase options on the same product.[2]

Choose the smallest operating model

Reader question: Which system matches the real uncertainty and obligation?

ModelUse it whenCritical controlMain failure
Shopify oversellFew known units, one firm date, full payment nowManual cap and daily exception reviewOrdinary order looks immediately available
Waitlist appTiming or quantity is uncertainVariant, market, consent, release quantity, send throttleFalse alert or more recipients than units
Pre-order appAllocation and ship window are defensiblePurchase terms, cap, reservation, payment, delay workflowOversell, failed balance, missed promise
Combined appProducts genuinely need both statesSeparate rules, labels, owners, and reportsTwo promises collapse into one funnel
Custom integrationERP, B2B, allocation, or made-to-order logic exceeds appsProduct ownership, protected API access, monitoringThe merchant becomes the software vendor

A seasonal product with a moving supplier date belongs on a waitlist. A limited drop with a confirmed inbound allocation may justify capped pre-orders. A made-to-order product constrained by production hours needs a capacity model, not an inventory-zero trigger.

Shopify purchase-option apps extend checkout, admin, storefront, and customer-account surfaces. They require protected capabilities that an admin-created custom app cannot use.[7] Build custom only when the operating requirement justifies owning security, data integrity, releases, and support.

Model the promise state, not only stock

Reader question: What should trigger a button, order, or alert?

A promise-state flow that separates a back-in-stock waitlist from a pre-order order while both depend on variant, market, location, sellable quantity, payment, fulfilment, and exception controls.
Raw inventory movement is an input. The customer promise is the controlled output.

The useful trigger is available-to-promise quantity, not every unit reported as available. A returned unit may be quarantined. A transfer may reach a location that does not fulfil online orders. A bundle, wholesale allocation, damaged-stock hold, safety buffer, or ERP correction can make positive inventory unsafe to sell.

For a waitlist, calculate a release quantity before selecting the audience. If 20 units are safe and 600 customers are waiting, an all-at-once alert recreates the sold-out experience. Control batch size, market eligibility, suppression, cooldown, and stop conditions.

For a pre-order, define whether inventory is committed at sale or fulfilment. Shopify says some apps expose this choice.[3] Also define the cap, inbound allocation, current and revised ship dates, amount due now, amount due later, payment retries, fulfilment hold, cancellation, refund, and customer-message history.

Write the field and event contract

Reader question: What must the app export and reconcile?

A vendor demo passes only when the operator can locate each record, identify its command system, and test failure recovery.

RecordMinimum fieldsFailure test
OfferVariant, market, mode, cap, promise date, rule versionVariant or market changes after launch
Sellable supplyLocation, on hand, committed, unavailable, buffer, allocation, source timeReturn, transfer, bundle, stale ERP update
Waitlist and alertContact, variant, consent, status, batch, suppression, send, purchaseDuplicate event, wrong market, sends exceed units
Pre-order and paymentOrder line, selling plan, allocation, due amounts, attempt, refund, holdMixed cart, failed authentication, partial cancellation
Customer notice and exitPromise version, revised date, response, export status, unresolved workNotice fails or export omits open obligations

Keep the funnels separate. Waitlist conversion is notification-to-purchase. Pre-order performance includes on-time shipment, cancellation, failed balance collection, refund time, support contacts, and ageing obligations.

Test compatibility, access, and cost

Reader question: What access and storefront change does the feature justify?

Test the exact production theme, not a product-page screenshot:

  • product page, quick add, collection card, search result, recommendation, and cart drawer;
  • variant change, sold-out transition, market, language, currency, and slow JavaScript;
  • keyboard, screen reader, consent state, and app-disabled fallback;
  • checkout, supported payments, mixed cart, subscription, bundle, POS, custom storefront, and Shop channel.

Review the live install screen. A combined app can require customer, product, order, inventory, analytics, theme, Markets, payment-term, purchase-option, translation, and selling-plan access.[8] App blocks and embeds can also place functionality on multiple theme surfaces.[14] Map every permission to an enabled feature, role, export, retention rule, and removal step.

Pricing was verified August 22, 2026 and can change. STOQ currently lists a free tier, then $10, $29, and $69 monthly plans with different pre-order and alert allowances; some tiers add order overages and SMS charges.[8][9] Stok lists free, $10, $20, and $49.99 monthly tiers with different message, pre-order, channel, and overage limits.[10]

Model peak volume, not the average month. Include delivered-message cost, lifecycle tools, discounts, payment fees, refunds, chargebacks, support, split shipping, failed balance collection, and parallel-app cost during cutover.

Run the twelve-scenario pilot

Reader question: Can the promise survive production exceptions before launch?

A twelve-scenario pilot for pre-order and back-in-stock apps, covering state, storefront, inventory, payments, notices, monitoring, and exit.
Every scenario needs an expected state, audit evidence, owner, repair limit, and rollback.

Use test products and controlled orders. Do not enable automatic balance collection or bulk alerts until these pass:

  1. Variant moves from in stock to waitlist or pre-order and back without a stale button.
  2. Stock at a non-selling location does not trigger the promise.
  3. A quarantined return stays unavailable.
  4. A bundle, buffer, or wholesale allocation reduces sellable units.
  5. Duplicate inventory events create one state change.
  6. Alert batches stop when released units are exhausted.
  7. Concurrent checkouts, edits, cancellations, and refunds respect the cap.
  8. Full, partial, deferred, failed, retried, and refunded payments reconcile.
  9. Mixed carts calculate shipping, due dates, discounts, holds, and copy correctly.
  10. A missed ship date creates a notice, customer choice, response, and refund record.
  11. Mobile, variants, quick add, market, translation, and supported payments show the correct state.
  12. Export, disable, finish open work, restore the theme, and verify billing.

If a scenario passes only after a vendor manually edits production data, record that as an ongoing support dependency.

Monitor the obligation

Reader question: Who notices when the promise drifts?

Assign merchandising to eligibility and promises; supply planning to allocation and available-to-promise logic; operations to rules and exceptions; finance to balances and refunds; fulfilment to release and shipment; lifecycle marketing to consent and alert batching; support to delays; engineering to theme, events, monitoring, exports, and rollback.

Monitor two queues. The waitlist queue needs ageing entries, duplicate signups, sends without sellable units, delivery failures, batch progress, and purchase by variant and market. The pre-order queue needs orders near the promise date, delayed orders without a recorded response, failed balances, holds, refunds, and negative or over-cap allocation.

Pause alerts when inventory reconciliation is stale. Close pre-orders when allocation, inbound confidence, or on-time probability crosses the agreed stop condition. The storefront promise should be rolled back before it becomes the exception queue.

Know when neither path is safe

Reader question: Which conditions should stop the project?

Do not launch a waitlist when variant identity changes during imports, sellable locations are unreliable, consent cannot be classified, duplicate sends cannot be prevented, or nobody can explain the release quantity. Do not launch pre-orders when supply has no defensible allocation or date, product specifications can still change, refunds are not operationally owned, or fulfilment cannot separate pre-order and in-stock lines.

Also hold when the app fails the active theme, payment, discount, subscription, bundle, POS, custom storefront, market, language, ERP, OMS, WMS, or lifecycle requirement; when the required feature exists only on an unapproved tier; when permissions exceed the approved data boundary; or when the export omits open orders, consent state, or event history. A scheduled in-stock release or clearly labelled coming-soon page may be safer than either app path.

Plan rollback and exit before launch

Reader question: What must remain operable when the app is removed?

Shopify says app workflows stop after uninstall, theme code can remain, external billing can continue, and app data might be unrecoverable.[12] Shopify also says app-created pre-order data, excluding payment information, is deleted after 48 hours unless the app provides recovery.[1][13]

Require a representative export before installation. Preserve contact, consent, variant, market, notification, suppression, order line, selling plan, allocation, payment terms, promise dates, notices, cancellation, refund, and audit history.

Use this cutover order:

  1. Stop new offers in the old app.
  2. Finish open pre-orders under the system that created them.
  3. Export waitlist state and consent before redirecting signups.
  4. Disable blocks and embeds in a theme preview.
  5. Reconcile orders, alerts, payments, billing, integrations, and theme residue.
  6. Uninstall only after an owner approves the export and 48-hour risk.

Take one safe action this week

Reader question: What can the team do without installing an app?

Choose five recently out-of-stock variants. Record market, selling location, on-hand quantity, unavailable quantity, buffer, inbound quantity and confidence, available-to-promise quantity, customer promise, owner, stop condition, and rollback.

Then choose waitlist, pre-order, scheduled in-stock release, or neither. If the team cannot fill the row from systems it trusts, the immediate task is inventory and ownership repair, not app selection.

No commercial relationship, sponsorship, affiliate arrangement, or endorsement involving Shopify, STOQ, Stok, or another pre-order or waitlist provider is known or implied.

Sources

Manish Vasaniya, Shopify Migration, CRO & AI Commerce Specialist
About the author
Manish Vasaniya
Shopify Migration, CRO & AI Commerce Specialist

Manish Vasaniya helps ecommerce founders and teams migrate to Shopify, improve conversion, and manage the long-term evolution of complex storefronts. His work connects commerce strategy, UX, engineering, analytics, integrations, and practical AI adoption, giving brands a technical and commercially grounded path from platform decision to post-launch growth.

Shopify apps & integrationsCRO & growthCommerce UXLong-term support