How does post purchase promotions affect fulfillments?

Checkout Promotions can affect fulfillments if you are showing post purchase promotions. This article details how orders are affected when using post purchase promotions and what steps you can take. Post purchase promotion types utilize order editing functionality to add promotional products directly to the same order. As a result, if your orders are syncing with a 3rd party fulfillment (3PL/ERP) system, the promotional product could be missing at the time of syncing. 

In this article

Fulfillment Holds

Shopify recently released fulfillment holds which get activated under specific conditions. Any customer that is shown a post purchase promotion on the native post purchase page location will activate a fulfillment hold. It's important to note that customers who see a post purchase promotion on the thank you page will NOT activate fulfillment holds as fulfillment holds are only supported for the native post purchase location at this time.

Fulfillment holds are activated for any order that displays a native post purchase promotions. 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 redeems a promotion 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 promotion 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:

You can view our article on Promotion Types to learn more about native post purchase vs thank you page promotions.

Compatible WMS Providers

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 WMS Providers:

  • 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.

Recommendations

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 promotion 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:
    • Additionally, we offer the ability to auto-remove products that were added via upsell but are missing payment. This could happen if the credit card expired or payment could not be confirmed:

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 a promotion is not redeemed outside this "remorse" period, make sure the promotion has the expiration option enabled with a value of 15-30minutes max as detailed above.
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