How does post purchase upsells affect the natural Fulfillment Status progression?

When a customer pays for their order in checkout, the order is created in Shopify. If the customer is shown a post-purchase upsell, the order will be created with a fulfillment status of On Hold.

The order is placed On Hold because the customer might accept a post-purchase upsell which would add an item to the order. The On Hold status is an indication that the order should not be fulfilled yet because additional item(s) may be added. The hold will be lifted when the buyer reaches the Shopify Thank You Page, or after one hour if they don't reach the Thank You Page.

Once the fulfillment hold is released, the order fulfillment status will change to Unfulfilled.


The following table describes the timeline of when the post-purchase fulfillment hold is released for various customer scenarios.

Scenario Order fulfillment status at time of creation Fulfillment hold release timeline Number of transactions/payments Order edited after creation?
Customer is not shown a post-purchase upsell Unfulfilled N/A 1 No
Customer sees a post-purchase upsell and declines On Hold Hold is released as soon as customer declines the offer 1 No
Customer sees a post-purchase upsell and closes browser tab On Hold Hold is released after a fixed delay (since we can't tell they closed the tab) 1 No
Customer sees a post-purchase upsell and accepts On Hold Hold is released as soon as customer accepts the offer 2 (or 3 if the customer accepted two upsells) Yes

As per the Fulfillment Orders update by Shopify on May 3rd, 2021 ( More details can be found in Shopify's documentation here), after the hold is released, the fulfillable_quantity will be updated to the correct quantity of items ordered, fulfillment_status will be set to open, and the order can be successfully fulfilled. Please note that orders with "On hold" status can't be fulfilled as the fulfillable_quantity = 0 at that time


To be compatible with any post-purchase app that works on Shopify Checkout, all 3rd Party Logistics (3PL) apps and services must use the fulfillable_quantity field as noted here by Shopify in their API documentation.


This change should not have any impact on any 3rd party fulfillment apps using the Shopify Order Fulfillment API. However, fulfillment apps that consume some other API (Order API, etc.) to work will not be able to fulfill orders while the orders have an "On hold" status and they could have other issues with fulfillment orders where post-purchase was shown or bought. Using the Order Fulfillment API is highly recommended, but if that’s not possible for your 3rd party fulfillment provider to do, then retrying the fulfillment after one hour has passed is the recommended workaround.


Questions or Issues with your 3rd party fulfillment app? Contact us via our in app widget or email us at hello@apphq.co.
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us