How can I manage regionalized inventory based on postcode?

Hi,

I have a client who only sells some products via certain shipping methods, and other products by ALL shipping methods.

ie…

  • eggs and flowers can ONLY be shipped via pickup or sameday-in-house-delivery to LONDON postcode only

  • bread & cakes can also be sent using these methods, to London postcodes

  • bread & cakes can also be sent to the whole of the UK, via 24 or 48hr courier

How can we achieve this?

Is it supported natively, or is there an app that can do it?

Thanks,

Bass

Hi Bass @onyxweb ,

I hope you’re doing well!

I’m Klaudia with the Zapiet team and it sounds like our app Store Pickup + Delivery would be able to meet your requirements :slightly_smiling_face:

Our app’s widget is able to display three options: store pickup, delivery and shipping

We also have a ton of features where you can control which items you would like to offer for pickup, delivery, or shipping or for two methods or all methods as well. As for delivery, you may control which postcodes you deliver to by using our validation feature where customers would have to key in their postcode to see if their area can be delivered to. If it is an accepted postcode, they may proceed to checkout.

Here’s a glimpse of our app’s widget on the cart page:

You may also explore and interact with our widget by visiting our Demo Store!

Furthermore, I would recommend signing up for our 14-day free trial to explore all of our features and test it out! Along with the free trial, we also offer a free 45-minute setup session where a member of our team will help to set up the app and answer any questions you might have!

If you have any questions, please let me know and I’d be delighted to answer them. You may also reach out to us via email at support@zapiet.com.

Kindest regards,

Klaudia

Hi Klaudia,

Thanks for getting back to me.

Is there an option for a customer to enter their details as they enter the site, so that ONLY products that can be delivered to them are displayed?

Saves them typing their postcode into every product to see if it is available in their area? They are likely to forget to do tghis, which will just lead to frustration.

Thanks,

Bass

Hi Bass,

I’m afraid there isn’t the feature of entering their details first and then displaying the products to them.

We do have a delivery validator widget that is displayed at the top of the page.

You may also arrange your store into collections. You could have a collection for “Delivery only” products.
There is also the option of informing customers which items in their cart are “Delivery Only”. To get a glimpse of this, you may view our article on how to display pickup only tags.
In the article, we refer to pickup, but this can be applied to delivery.

I hope this clarifies and if you have any other questions, I would be delighted to answer them!

Wishing you a wonderful day!

Use delivery profiles to set shipping methods and rates on a per product basis

https://help.shopify.com/en/manual/shipping/setting-up-and-managing-your-shipping/shipping-profiles

To prevent customers entering the checkout with a cart of mixed items using incompatible shipping methods you will need a theme customization and have your products either tagged or have metafields with info indicating their shipping method. Or find a suitable app.

An untested example of checking a cart for mutually exclusive line_items

{%- assign allow_checkout = true -%}
{%- assign exclusion_tags = "tag-shipping-global,tag-shipping-local-only" | split -%}
{%- assign cart_item_tags = cart.items | map: product | map: tags -%}
{%- assign number_of_exclusion_tags_in_cart = 0 -%}

{%- for exclusion_tag in exclusion_tags -%}
  {%- if cart_item_tags contains exclusion_tag -%}
    {%- assign number_of_exclusion_tags_in_cart = number_of_exclusion_tags_in_cart | plus: 1 -%}

    {%- if number_of_exclusion_tags_in_cart > 1 -%}
      {%- assign allow_checkout = false -%}
      {%- break -%}
    {%- endif -%}

  {%- endif -%}
{%- endfor -%}

{%- if allow_checkout -%}
  {%- comment -%}checkout buttons{%- endcomment -%}
{%- else -%}
  {%- comment -%}Checkout error message{%- endcomment -%}
{%- endif -%}