Holding a job until the customer approves the proof

Half of this is native, free and better than most people realise — Shopify will stop a single line of an order from being fulfilled until you release it. The other half does not exist: there is no state for "waiting on the customer", and nothing tells them you are waiting.

Shopify will stop an order being fulfilled, and it will do it to one line and not the others. That is the part most people do not know, it is free, and Shopify's own instructions put no plan condition on it.

"Your inventory can be reserved, but fulfillment is blocked until the hold is released."

The stock stays committed to the order, so nothing is oversold while you wait, and the fulfilment itself simply cannot start: an order on hold "can't be initiated until the hold on the fulfillment order is released."

And it is per line, from the admin. Shopify's own instructions say to "Select the items that you want to put on hold", and behind them a hold applied without naming lines puts "all line items of the fulfillment order" on hold — so naming them holds only those. The engraved item waits for your proof while the two ordinary items in the same order ship today.

Shopify Flow can do it without anybody watching, and Flow "is a free app available on the Basic, Grow, Advanced, and Plus plans". Its action "changes the status of the order that triggers the workflow to On hold". A rule that holds any order containing a personalised SKU is genuinely ten minutes of work, at no cost, on Basic and above. One limit to know before you rely on it: Flow holds the whole order. Holding one line and shipping the rest is a choice you make on the order itself.

So the mechanical half of proof approval is solved, and better than the apps selling it usually admit.

The half that does not exist

There is no such thing as "waiting for the customer" in Shopify. Holds carry a reason, and the list of reasons is fixed: awaiting payment, awaiting return items, high risk of fraud, incorrect address, out of stock, a post-purchase cross-sell, unknown delivery date, and other.

That is the whole list. Proof approval is other, described by Shopify as "The fulfillment hold is applied for another reason", with a free-text note beside it. Which works — but it means the count of orders waiting on customers is one you keep yourself: a tag and a saved view in your Orders list, or the note on the hold. As far as Shopify is concerned they are waiting for nothing in particular.

And nothing tells the customer you are waiting. Shopify's list of the emails it sends shoppers has no entry for a hold — confirmation, cancellation, refund and the shipping messages are the whole set — so the message is yours to send. (The one thing not pinned down is what the Shop app shows somebody tracking the order, which Shopify does not document for a held order.) From the buyer's side, an order that has been paid for and then goes quiet looks exactly like an order you have forgotten.

Jobs going to production before anybody approved them? Describe what has to be approved first →

Approval before payment, or after

Which shape you want decides almost everything else, and it is worth choosing deliberately.

Approve first, then pay. The order does not exist yet; you send a quote with the proof attached, and the customer approves by paying. Shopify supports this natively with draft orders — the invoice carries "a secure checkout link for reviewing and paying for the order", and once paid the draft "becomes a regular order on your Orders page". Nothing needs holding, because nothing was committed. The cost is that you have lost the impulse purchase; the customer has to come back.

Pay first, then approve. The customer checks out normally, the line goes on hold, you send the proof, and you release the hold when they say yes. Better for conversion, and the reason the hold mechanism matters. The cost is that you are holding money against work that might change.

Most workshops end up with the second for repeat customers and the first for anything complicated or expensive.

If what has to be approved is a document rather than a design, the choice is usually already made for you. A prescription, a vet's authorisation, a trade licence, a signed waiver — anything where somebody has to read a document before the goods may leave — needs the approval attached to the customer, not to the order, because the same document covers their next six orders too. That is a different job with a different answer: checking the document once, on the account, and looking again when it expires. The hold described here is still what stops the shipment on the day, and it is worth knowing that the hold's own reason list has no entry for waiting for the customer — so the reason a package is sitting there is only ever as clear as whatever you write beside it.

One trap if you plan to track the state with tags: an order update takes "A new list of tags for the order. Overwrites the existing tags." So anything that writes the whole list without reading what is already there will quietly erase everything else you use tags for. Adding a tag is safe — Flow's own Add order tags action adds rather than replaces — and the trap is only in writing the list wholesale.

Which route is yours

What you need Where it comes from
Stop a job being fulfilled Native — a fulfilment hold, every plan
Hold one line, ship the rest Native — name the lines on the hold
Do it automatically for certain products Native — Shopify Flow, free from Basic upwards
A status that says "waiting on the customer" Not native — the reason list has no such entry
Telling the customer you are waiting Not documented — assume it is yours to send
Approval before any money moves Native — a draft order with an invoice
A page where the customer clicks approve Not native — an app on the Order status page, an email, or a page of your own

What Shopivibe does

A job needs approving because of what it is — an engraved SKU, a print product, a made-to-order line — and that is what the rule reads. The proof itself is a file a person opens and a customer answers; what travels with an upload is its own page.

And Shopify has no approve-the-proof control of its own. There is one place inside your store where an app can put one: the Order status page, where extensions run on every plan except Starter. Otherwise the click lives in an email or on a page you build. Anybody who tells you Shopify does this natively is describing their own app, which is a fine thing to buy — but it is worth knowing that is what you are buying.

What is worth describing to us is the sequence around those two: "any order containing an engraved item waits before it is fulfilled, the studio is told the moment it arrives, and when I mark it approved the rest goes ahead." That is a rule, it spans the parts of the order Shopify keeps in different places, and it is the kind of thing that quietly stops working when somebody changes a product or a tag. The holding half is Flow's when the whole order can wait, and a permission your store grants at setup when one line must wait while the rest ship.

It is built for you rather than switched on: a person here takes it on straight away and has it working in your store within 24 hours, and part of that conversation is telling you when Flow's free version of the hold is the whole answer and you should go and set it up yourself.

Shopivibe solves the problem in your store and keeps what it adds maintained, including when Shopify changes something underneath. Shopivibe is free during early access, with 3,500 credits included. Credits beyond the included 3,500 cost $0.06 each.

Know what must be approved before it is made? Describe the rule in your own words →

Checked against Shopify's documentation and the App Store on 21 September 2026.