Pre-order Shipping

Dear Snipcart Team
We have the following initial situation / challenge with a customer:
There is currently an Advent calendar that can be pre-ordered, but will not be delivered until the beginning of December.
If a customer orders the advent calendar and adds more products to the shopping cart, the shipping (due to the pre-order) would have to be charged twice, as the advent calendar is shipped later.

Is there a solution that we can add fixed shipping costs with the advent calendar or at least configure the shopping cart so that if an advent calendar is ordered, no additional products can be added?

Thanks for the help

Any news here? Hope for a reply soon

Hi @christoph.richard,

Unless I’m mistaken the only way you could achieve this would be by using our shipping webhooks.

Essentially, this gives you the ability to handle shipping rates calculation by yourself.

Let me know if that helps,


Hi Michael

I think you have misunderstood something.
We want that if the product which is pre-ordered in combination with a normal product, the shipping cost will be pre-charged. The product on pre-order will not be shipped at the same time as normal products and therefore must be shipped again with charges that the customer must pay.

Sorry for the confusion here @christoph.richard,

Unfortunately, this goes a bit outside of what’s possible at the moment. Your best bet would be the scenario you proposed in the original post, where the customer has to place a separate order.

Unfortunately, there’s nothing built-in to enforce that only specific products or combinations are added to the cart.

At the moment, you’d need to listen to cart changes using the SDK Store and dynamically remove products depending on whether or not the combination is allowed.

This is something we hope to make more straightforward in the future. However, we can’t commit to an ETA at the moment.

Hi Christoph,

although your use case in quite difficult to handle, maybe I can help you achieve a sub-optimal solution (I had a similar case with a client of mine).

By subscribing to events you can do whatever you want:

  • if you want to add ‘fixed’ shipping costs when the calendar is added and the cart contains OTHER PRODUCTS, you can programmatically add a fake “delayed calendar shipping” product. You also have to listen to cart remove events, to handle the case in which the user removes non-calendar products when the calendar is present in the cart, because in that case you should also remove the fake shipping product

  • locking the cart is maybe even simpler. If you use react/vue/angular, it’s trivial to disable all the buttons to add products to the cart when the calendar is added, maybe changing the labels to explain that you can’t add more products when the advent calendar is present in the cart.
    You should also listen for cart events and make sure that no other products can be added, that would be your second-layer of security to enforce your policy.

Everything can be done by using the SDK and listening for certain events.
I guess that a SPA application in react or vue would be easier to patch to enforce this behaviour, but you can do the same with jQuery, with a little more work