How to Allow Only Local Pickup For Order in WooCommerce

Trying to find a way to mark the entire order, a single product, or a group of products for local pickup OR in-store pick-up WooCommerce?

The nature of your eCommerce Store, lack of delivery solutions or the size/weight of your product might call for local pickup only so that you can minimize costs for both you and the customer, as well as delivery time. WooCommerce allows you to do this by creating a shipping zone and selecting “Local pickup” as a shipping method.

Set up local pickup via WooCommerce “Shipping Zone”

WooCommerce “Shipping Zones” offers a fairly easy way to create different shipping options for different geographic areas via WooCommerce settings, without the need for an additional plugin.

The idea is that, for each geographical zone, you select your preferred shipping methods, and the customer, once they fill in their address, they only see the shipping methods offered for their address. Each customer matches only one geographical zone, however, you can offer as many shipping methods as you wish for each geographical zone.

For example, you could have one shipping zone for your city, offering only local pickup, one shipping zone for your country, offering local pickup and free delivery, and one shipping zone worldwide, offering flat-rate shipping.

Let’s walk through the setup of shipping zones that allow local pickup:

Creating a new “Shipping Zone” for your store

In WooCommerce > Settings, select the “Shipping” tab and click on “Add Shipping Zone“.

Screehshot of WooCommerce settings screen

Name the zone “Local pickup”. The rest of the options on this screen can be used and combined to create various solutions for different needs. Let’s walk through them one by one:

Creating the shipping method

Let’s start with the shipping method, which will allow us to define the local pickup option, as well as any charges or taxes applied.

Click on “Add shipping method” method at the bottom of the screen and select “Local Pickup” from the dropdown on the pop-up.

Screehshot of shipping method dropdown

Click “Add method“, which will close the popup. Now, edit your new shipping method (1) and edit the tax status and the cost (2) in the popup. It is customary for local pickup to be free and non-taxable, but your situation may vary.

Screehshot of local pickup edit screen 1

Screehshot of local pickup edit screen 2

Defining the locations that offer local pickup

You probably want to offer local pickup only for specific locations, where you have physical stores that your customers can go to and pick up their orders. To do so, select the region you want in the “Zone regions” field (1). If you have multiple physical stores in a geographic region, you can type the appropriate zip codes for local pickup (2), one postal code per line:

Screehshot of local pickup edit screen 3

Setting up shipping zone order

If the customer’s address is in one of the shipping zones that allow local pickup, the option “Local pickup” should appear automatically in the checkout, as long as it is the only shipping method offered. However, make sure that it is actually the first shipping zone in the WooCommerce > Settings > Shipping screen. If it is not, drag the icon on the left of the zone name (see picture) and move the shipping zone on the top.

Screehshot of shipping zone settings

Here, it is worth noting that, if in WooCommerce > Settings, in the option “Shipping location“, you have selected “Ship to all countries”, you might need to set a shipping method for an additional, “catch-all” shipping zone, for example, for the default “Locations not covered by your other zones”.

How to allow local pickup for multiple locations?

In the “Shipping Zone” options screen, you can add as many locations as you need. The option for local pickup will appear for all the selected locations.

Supercharge your WooCommerce local pickup options

Now that we have set a basic local pickup method, let’s delve in and fine-tune it even more.

More options for local pickup and custom email notifications

The free plugin Advanced Local Pickup for WooCommerce allows you to notify your customer when their order is ready for pickup, either via email or in the order details page, or both, and customize the emails sent to the customers.

After installing the plugin, you can view the options it offers at WooCommerce > Local pickup.

Screehshot of "advanced local pickup" plugin settings

In the second tab, “Pickup Locations”, you have the option to give special instructions to your customers for the pickup, as well as to select the business hours where your store is open.

Only offer local pickup for certain products

If you want to only allow local pickup for certain items, you can take advantage of WooCommerce Shipping classes to achieve this. In WooCommerce > Settings > Shipping, select the “Shipping classes” tab and create a new shipping class, giving it a name and slug.

Now, a few things to consider, if you want to offer only local pickup for certain products: In a multi-item order, the customer might have selected a few products that offer a different shipping method, such as delivery. In this case, you can split the cart into packages, allowing delivery for some products and local pickup for others.

Split the cart into packages to separate local pickup products

For this, we will use the WooCommerce addon WooCommerce Advanced Shipping Packages. It is a paid addon, that however offers exactly the option to split your cart into separate shipping packages.

To use it, go to WooCommerce > Settings > Shipping and click on the “Packages” tab. Click on “Add shipping package” and create your new package. In the Shipping Package conditions area, make sure that your condition is “Contains shipping class” “Equal to” and the name of the new shipping class you created earlier (1).

Right below, in “Shipping Package settings & content”, make sure the option “Whitelist shipping methods” is selected (if not, press the “refresh” symbol to switch to it (2) ) and type “Local pickup” (3).

Screehshot of "advanced shipping packages" plugin settings

Finally, at the bottom, in “Add the products that match one of the following rule groups to the package”, make sure the condition reads “Shipping class” “Equal to” and the name of the shipping class you created earlier.

Now, edit the product you wish to only allow local pick up for and, in the “Product Data” options group, go to the tab “Shipping” and choose your local pickup only shipping class and the name of the local pickup shipping class.

Screehshot of product edit screen

Wrapping up

While WooCommerce, with its multiple options and settings, might look complicated, it is in fact fairly straightforward. In this article we saw how to:

  • Enable local pickup for the entire order, depending on the region
  • Allow local pickup for multiple locations
  • Set up custom email and user account screen notifications for items that are to be picked up, as well as how to set our physical store’s business hours for local pickup
  • How to enable local pickup on a per-product basis and split the cart into different shipping packages, if necessary


I hope you enjoy reading this blog post. If you want my team to do WooCommerce Maintenance for you, click here.

2 thoughts on “How to Allow Only Local Pickup For Order in WooCommerce”

  1. This plugin works great to only allow pickup for certain items, thank you! But I was wondeing, is there a way to get the SHIPPING to say something else in the Cart besides “Free Shipping”

    Mine says SHIPPING “Free Shipping”

    But I would like it to say SHIPPING “No Shipping Charges, this Item is Only available for Local Pickup” – or just “Local Pickup”

  2. Hi,

    This sounds like an excellent solution. Do customers know that an item is for in store pikcup when they add it to a cart, or is it just that the item triggers a change in the available shipping options?


Leave a Comment

Your email address will not be published. Required fields are marked *