Post Purchase can affect fulfillments, so here are some steps you can take. Post purchase types utilize order editing functionality to add post purchased products directly to the same order. As a result, if your orders are syncing with a 3rd party fulfillment (3PL/ERP) system, the post purchased product could be missing at the time of syncing.
When upsell offers are presented to customers at checkout, the order fulfillment status is set to On hold until the customer completes their order. Once customer complete their order status will be changed from ” On hold” to “Unfulfilled“.
If a customer doesn’t complete a checkout, then the order status remains On hold for one hour and they will automatically clear after those 60 minutes. If a customer redeems a offer or clicks decline or “View order confirmation”, the fulfillment hold will automatically clear before the one hour .
You can view the developer documentation on fulfillment holds to learn more about what changes may be required to your fulfillment process.
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 – There’s a option to set “order delay” to sync order after the set of time interval until fulfillments hold is up from Shopify.
Known Incompatible apps:
- 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.
How do we add a remorse delay?
- Ask your fulfillment partner to leverage the created_at_max field on Shopify’s Order API 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 a offer is not redeemed outside this “remorse” period, make sure the offer has the expiration option enabled with a value of 15-30minutes max as detailed above.