Articles on: Post-Purchase

How do post-purchase offers affect fulfillment holds?

When you show a post-purchase offer, it might affect fulfillment holds for that order. Post purchase offers use order editing functionality to add upsell products directly to the same order. As a result, if your orders are syncing with a 3rd party fulfillment (3PL/ERP) system, the upsell product could be missing at the time of syncing.

Fulfillment holds
Shopify recently released fulfillment holds which get activated under specific conditions. Any customer that is shown a post purchase upsell on the native post purchase page location will activate a fulfillment hold.

Fulfillment holds are activated for any order that displays a native post purchase upsell. These holds will change the fulfillment status to On Hold and will last for up to 60 minutes and they will automatically clear after those 60 minutes. If a customer accepts an upsell or clicks decline or "View order confirmation", the fulfillment hold will automatically clear before the 60 minutes. If a customer closes their browser tab upon landing on the post purchase upsell or leaves the browser open, the fulfillment hold would last the full 60 minutes. You can view the developer documentation on fulfillment holds to learn more about what changes may be required to your fulfillment process:

Compatible Warehouse Management Systems (WMS)
The following is a list of warehouse management systems that are known to support Shopify's fulfillment hold statuses in order to support post-purchase offers:

ShipStation - Please reach out to ShipStation's support to enable order editing.
ShipHero - They import the order, automatically put it on a hold and then release it when the post purchase page is closed or times out (60).
ShipBob - Ensure that you have at least 1 hour or 2 hour "order delay" set within ShipBob to delay order sync until after the 60 minute fulfillment hold is up from Shopify. Read more on their support portal.

Known Incompatible Warehouse Management Systems (WMS):

BrightPearl - They do not support order editing. Any edits made to orders after placement will not be synced to BP.
ShippingEasy - They do not support fulfillment holds which Shopify uses for post purchase.

We recommend the following:

If possible, add support for order editing and fulfillment holds to the fulfillment system.
Alternatively, build in a delay between order placement and order syncing. We recommend 60 minutes as a default "remorse" period where the 3rd party would wait before importing the order to their system.
Also be sure to use the upsell expiration option to ensure a customer must redeem a promotion within say 15 minutes so that promotional products are not added after the order has been sent to the 3rd party system:

How do we add a remorse delay?
Ask your fulfillment partner to leverage the created_at_max field on Shopify's Order API (Show orders created at or before date (format: 2014-04-25T16:15:47-04:00) which can take the current time and add a buffer of 30 - 60 minutes to ensure any order created within the last X minutes is not fetched at that sync interval and would be fetched in the next sync. In this example, created_at_max would be current time - 60 minutes for example.
Also note, to ensure an upsell is not redeemed outside this "remorse" period, make sure the upsell has the expiration option enabled with a value of 15-30 minutes max as detailed above.

Updated on: 02/05/2023

Was this article helpful?

Share your feedback


Thank you!