---
title: "How do I stop pre-orders from shipping before the stock arrives?"
description: "Stop pre-orders shipping early with Shopify fulfillment holds: what gets held, when holds are released, ship dates, and how to work with a 3PL."
url: "https://smart-preorder.com/help/preorders/fulfillment-holds-and-3pls"
updated: "2026-11-02"
product: "SMART Preorder & Back in stock"
section: "Help center / Pre-orders"
---


# How do I stop pre-orders from shipping before the stock arrives?

Set the campaign's **Fulfillment** to **On hold** on its Settings tab. Seconds after checkout the app puts each fulfillment order with a pre-order item on hold in Shopify, and Shopify blocks fulfillment until the hold is released. Deposit orders are released when the balance is paid, full-payment orders with a specific ship date on that date, and the rest when you release them.

## Unfulfilled or On hold

| Fulfillment status for pre-orders | What happens |
| --- | --- |
| **Unfulfilled** (default) | Pre-orders land in your orders like any other order, ready to fulfill. Nothing is held. |
| **On hold** | Shopify puts pre-orders on hold so nobody ships them early. Release them when the stock arrives, or let the app release them (below). |

To change it, open the campaign, go to the **Settings** tab, and pick the option under **Fulfillment** in the **Orders** card. It applies to new orders only; orders placed before keep their status.

## What gets held

- Each fulfillment order that contains a pre-order item, with Shopify hold reason "Inventory out of stock" and the note "Pre-order".
- In-stock items that Shopify put in a separate fulfillment order stay ready to ship. If Shopify puts both in one fulfillment order, all of it is held.
- While held, Shopify blocks fulfillment until the hold is released, and the order leaves the Unfulfilled list in your admin ([Shopify Help Center](https://help.shopify.com/en/manual/fulfillment/fulfilling-orders/holding-fulfillments)).

## Campaigns with a specific ship date

- With **Ships on a specific date** in the Delivery card, Shopify itself schedules the order: its status is **Scheduled** until that date, and it becomes ready to fulfill on the date.
- Shopify doesn't accept a hold on a scheduled order. So for **On hold** campaigns, if a deposit balance is still owed on the ship date, the app holds the order on that date (reason "Awaiting payment") until the balance is paid.
- To change when scheduled orders become ready, use the **Change fulfillment date** bulk action on the **Orders** tab.

## When holds are released

| Order | Released |
| --- | --- |
| Deposit, any delivery option | When the balance is paid: by the app's charge, the customer's payment link, or a payment marked in Shopify. Even after the ship date, an unpaid deposit stays held. |
| Full payment, **Ships on a specific date** | On that date. The app checks every 15 minutes. |
| Full payment, **Ships as soon as possible**, a set window, or **Ship date not known yet** | Not automatically. Release them yourself when the stock arrives. |
| Cancelled | Shopify closes the fulfillment orders; nothing to release. |

Ways to release yourself: **Release for fulfillment** on the order page (under **More actions**) or as a bulk action on the Orders tab, Shopify's own **Release hold** on the order, or the Shopify Flow action **Release pre-order holds**. Releasing an order that still owes its balance lets you ship before it's collected; the app warns you first. **Release for fulfillment** also makes scheduled orders ready now. The app releases only its own holds: holds from other apps or your team stay. Restocking the product releases nothing by itself.

## Working with a 3PL or fulfillment app

- Holds work at fulfillment service (3PL) locations too: the app can hold and release those fulfillment orders.
- The hold lands seconds after Shopify creates the order. If no fulfillment order is visible yet, the app tries again every 15 minutes.
- A 3PL that imports orders the instant they're created can take one before the hold lands. Ask your 3PL to delay imports a little, or to skip orders tagged "Pre-order". The tag is added seconds after the order is created and never removed, so it's safe to filter on.
- Use **Deduct inventory: When the order is fulfilled** (Settings tab > Orders > Inventory) if you don't want pre-orders to lower your stock until they ship.

## Rules and edge cases

- **On hold** can't be combined with collecting the balance **When you fulfill the order**: the hold would block the fulfillment that triggers the charge. The editor refuses that save.
- A mixed cart can create two fulfillment orders, one held and one ready. How shipping is charged then depends on your delivery profiles. See [Mixed carts](https://smart-preorder.com/help/preorders/mixed-carts).
- Fulfilling a pre-order in Shopify marks it fulfilled in the app. Partly fulfilled orders stay open, and customers can't cancel them themselves.

**Ship pre-orders only when they're ready** Automatic Shopify fulfillment holds, released when the balance is paid or the ship date arrives. Free on the Shopify App Store. [Install SMART Preorder & Back in stock on the Shopify App Store](https://apps.shopify.com/smart-preorder-back-in-stock).

## Frequently asked questions

### My 3PL shipped a pre-order before the stock arrived. How do I stop that?

Set the campaign's Fulfillment to On hold, then ask your 3PL to skip or delay orders tagged Pre-order. Fast importers can pick an order up in the seconds before the hold lands.

### I restocked the product. Why are the pre-orders still on hold?

Restocking doesn't release holds. Full-payment orders without a specific ship date wait for you: select them on the Orders tab (the On hold tab helps) and use Release for fulfillment.

### Will the app release a hold another app placed?

No. It releases only the holds it placed, by their Shopify hold IDs. Other apps' and manual holds stay until they're released separately.
