WooCommerce local pickup as free and paid shipping method

Local Pickup as WooCommerce free and paid shipping method
Author Bartosz Gajewski
Updated:
2019-05-19
Reading time:
5 minutes read

The customers simply love local pickup! According to the latest research, nearly 67% of the US shoppers picked this method while placing an order at least twice in the past six months. That’s why implementing the local pickup to your WooCommerce store is an idea you should definitely give a try to! It’s easy to set up, can boost your sales, and its configuration takes only a few minutes. Interested? Just keep on reading…

What is Local Pickup shipping?

It’s a popular delivery option that allows customers to pick up purchased products directly from sellers. It’s an alternative solution that can be simply implemented as WooCommerce shipping option. Usually, this way of delivering products is a cheaper alternative for customers. Especially if it involves regional stores. This solution will also work great if the item you’re selling is large or just difficult to ship.

Local pickup, however, should not be a transfer of responsibility for preparing and collecting the order to the customer. It is important to make the pickup process as convenient as possible for clients. Make sure that the customer receives information about the pickup location and that they can easily find it in your store. It is good practice to add pickup instructions in the footer of the page, along with information about the pickup time availability.

How to add Local Pickup to WooCommerce?

Foremost, let’s take a closer look at how the Local Pickup works. It allows your customers to choose to come and get the ordered products by themselves. You don’t need to install any additional plugins to use its basic functionalities, since it’s a one of the default and in-built WooCommerce shipping methods. As a matter of fact, it works pretty similar to the flat rate shipping method, however, it’s dedicated for collecting the products personally which makes its options slightly limited.

Order summary - Free local pickup selected
Local pickup at Order summary

 

To add the Local Pickup in your WooCommerce store, go to WooCommerce → Settings → Shipping:

WooCommerce - Settings - Shipping
WooCommerce → Settings → Shipping → Shipping zones

Next, click the WooCommerce shipping zone‘s name where you want to offer your customers the local pickup in. As you can see on the screenshot above, in my case I have only USA.

If you have e.g. a few distribution centers or pickup sites, and want to offer local pickup in more shipping zones than one, simply repeat the following steps for each of the shipping zones with available pickup locations.

Once you click the shipping zone, you should see the shipping methods available for this particular shipping zone if you added them here before. In my case, it’s the fixed price USPS shipping handled by the Flat Rate. No matter what shipping methods you have here or if you haven’t got any yet, hit the Add shipping method button.

Then, select the Local Pickup from the dropdown list and confirm your choice with Add shipping method button:

Add shipping method: Local Pickup
Add shipping method: Local Pickup

Free and paid Local Pickup

Having the new method added, click its name on the shipping methods list. In the popup which should appear, you can modify its Title displayed in the cart and checkout. A good practice is to put the pickup point’s address here (e.g. ‘Pick up at 123 Sample St, Beverly Hills, CA 90210’) to let your customers know where exactly they can collect their orders. You can also choose whether it should be taxed or not with the Tax status and define its cost.

WooCommerce Local Pickup settings
Local Pickup settings

As I mentioned before, it’s free by default, since collecting the products usually eliminates the need of shipping them. However, if for some reason your case requires charging the customers even when picking up the ordered products personally, simply fill in the Cost field with the right value to set the fixed price.

Configure it to fit your needs, or simply leave it with the default setup to make it free. Save the changes with the button below, and that’s it. Nothing more left to do – Local Pickup should be available now to select by your customers in the cart and checkout.

Local Pickup displayed in the cart
Local Pickup’s custom name displayed in the cart

Ok, but what about the last case when you need the…

Advanced Local Pickup in WooCommerce

According to what I’ve said earlier, the default WooCommerce Local Pickup method does have its limitations. It is useful, nevertheless, there are many situations when it turns out to be not enough. It indeed gives you a possibility to define a fee for collecting the products in person, however, its price is always fixed. In other words, it will charge every customer the same amount no matter what the order consists of. Local Pickup’s fee based on the order specifics

As I believe, you are fully aware that each order is different. So are the time and money you and your team need to spend to process the order, from collecting it from the warehouse to packing it for the customer.

To be able to handle them smoothly, you require undoubtedly to set Local Pickup’s fee based on the order specifics. This is where the Flexible Shipping plugin is helpful. Allow me to introduce a real shipping Swiss army knife and the only shipping plugin you will ever need! It will definitely help you with configuring even the most advanced shipping scenarios.

Flexible Shipping WooCommerce

The best and most powerful Table Rate Shipping plugin for WooCommerce. Discover its endless possibilities and create the shipping cost calculation rules based on weight, price and more!

View Details or Add to cart
100,000+ Active Installations
30-day money back guarantee
Last Updated: 2024-12-09
Works with WooCommerce 9.1 - 9.5.x

It’s the best and most powerful WooCommerce plugin with Table Rate Shipping option. Discover its endless possibilities and create the shipping cost calculation rules based on weight, price and more! It was trusted by more than 217,060 people who use it in their shops on a daily basis.

 

Using it you will be able to charge your customers for Local Pickup based on multiple conditions:

I’ll describe three most popular cases of the advanced Local pickup in WooCommerce.

WooCommerce local pickup only for certain products

One of the most popular scenarios for advanced in-person pickup is to make this option available if a particular product appears in the cart. This usually applies to stores that sell heavily differentiated products in size. In this situation, the available shipping options in the store should look like this:

  • regular shipping for small items
  • local pickup for big products
  • local pickup for orders including both types of products.

It seems complicated, but with Flexible Shipping PRO, this can be solved by adding two properly configured shipping methods:

Regular shipping method that hides when certain product is in the cart

First shipping method is a typical flat rate delivery option that won’t be visible for certain products. To achieve that, just add new Flexible Shipping method and configure it like that:

Regular shipping method that hides when certain product is in the cart

If you need additional information about Flexible Shipping methods, check our complete guide to shipping methods.

First rule, adds a regular cost for shipping. In my example, it’s $10, but you can set your shipping cost based on different conditions. The second rule causes this shipping method to be hidden when a product from the shipping class “furniture” is added to the cart. Note that this is due to the Hide special action set for this rule.

In the same way, you can hide the shipping method for product categories or even specific products. You can find more detailed information about it in our complete guide about hiding WooCommerce shipping methods.

Local pickup option only for certain products

The second method is local pickup, which will only be available when a specific product is added to the cart. It should be basically a mirror image of the first method, so it should appear when the first method is hidden.

To do so, add a second Flexible Shipping method and configure it like that:

Local pickup option only for certain products

This setting will cause that when a product from the shipping class “furniture” appears in the shopping cart, this shipping method will be available and free. You can set it cost if you want to. Importantly, this method will also be available when other products appear in the shopping cart in addition to the product belonging to the “furniture” shipping class. All orders meeting these conditions will have only local pickup available.

Local Pickup only for oversized or overweight products

Similarly, you can offer local pickup for orders that exceed the appropriate weight or size. Again, only two methods will suffice:

Regular shipping method that hides when for overweight or oversized orders

Regular shipping method that hides when for overweight or oversized orders

This shipping method will be hidden, when the total order weight exceeds 20 kg. You can set different ranges and use other conditions like height, width, length and more.

Local pickup option only for oversized or overweight orders

Local pickup option only for oversized or overweight orders

This shipping method will be displayed, when the total order weight exceeds 20 kg.

Summary

Summing up, as you probably realized, the Local Pickup‘s configuration in the WooCommerce store is not as challenging as it might seem. I strongly believe that following my instructions will let you set it up in your shop flawlessly. What’s more, I hope I shed some light on how some more advanced Local Pickup scenarios could be handled using Flexible Shipping plugin.

If you have any additional questions about Local Pickup feel free to post it in the comments below. Looking for some more information on WooCommerce shipping? Check our general WooCommerce Shipping Guide!

Comments
Subscribe
Notify of
guest
16 Comments
Inline Feedbacks
View all comments
Serkan Yıldırımtürk
Serkan Yıldırımtürk
5 years ago

Thank you for at this great article.
Is there a possibility to show local pickup address if the local pickup is selected?

Łukasz Spryszak
Łukasz Spryszak
Reply to  Serkan Yıldırımtürk
5 years ago

Hi Serkan, I’m afraid that displaying the local pickup address if this method was selected will require some custom coding and modifing the WooCommerce default shipping method code. However, there is a kind of work-around – if you create the shipping method handled by our Flexible Shipping plugin and set its cost to 0, it will work the same as WooCommerce Local pickup but you will have an option to add its description:

67nj
67nj
4 years ago

Hi,
I’m already using Table Rate Shipping but I like your Local Pickup features… can I use them both?
Thanks
stefano

Marta Pawlonka
Marta Pawlonka
Reply to  67nj
4 years ago

Hello Stefano. The Local Pickup is on the WooCommerce default function. By using our Flexible Shipping plugin, you are able to more modify your shipping methods by table rate.

Laurent-oxacare
Laurent-oxacare
4 years ago

Hi,
I’m using Flexible shipping with Astra, and it works with 97 zones… I added a local pick up (same zone than 1 of my 97 shipping zones), but it doesn’t appear. It appears only if the local pick up is above the matching shipping method in the zone list, but the user can not choose to pick up or be delivered.
Thanks
Laurent

Łukasz Spryszak
Łukasz Spryszak
Reply to  Laurent-oxacare
4 years ago

Hi Laurent-oxacare, I believe the problem you have described might be related to the insufficient WordPress resources. Please try to increase the current WordPress memory limit and PHP max input vars and check if it helped.

Andie
Andie
Reply to  Łukasz Spryszak
4 years ago

Hi!
I’m having the same issue as Laurent-oxacare. The free local pickup only shows if the option is placed above the regular flexible shipping zone, and then the pickup option only shows in the cart, and they cannot choose any other method. Is this a memory issue? How would I go about doing what you suggest….I have no idea what that means.

Łukasz Spryszak
Łukasz Spryszak
Reply to  Andie
4 years ago

Hi Andie, is the Flexible Shipping shipping method being displayed in the cart if placed above the Local pickup? If so, I believe there might be the same PHP max input vars-related issue as mentioned above. You can change it in: .htaccess file by modifying the line php_value max_input_vars 3000, in php.ini by setting
max_input_vars = 3000
or directly in your WordPress wp-config.php file by adding @ini_set( 'max_input_vars' , 3000 ). However, if the Flexible Shipping shipping method is not displayed in the cart even after placing it above the Local pickup, probably there is something wrong with this method’s configuration.

Andie
Andie
Reply to  Łukasz Spryszak
4 years ago

I am not a developer, so I have no idea what any of that means…not where to find it or how to prevent any major problems when messing with the code (since I don’t know anything about code).

Łukasz Spryszak
Łukasz Spryszak
Reply to  Andie
4 years ago

If you are not familiar with such operations I believe this step-by-step guide might be helpful and shed some light: https://betterstudio.com/blog/increase-max-input-vars-limit/ .

Julio Pizzaiolo
Julio Pizzaiolo
4 years ago

Hi there,

I offer both option on my website: pick up and shipping
Is there a way where I can default pick up instead of shipping?

Thanks
Jules

Łukasz Spryszak
Łukasz Spryszak
Reply to  Julio Pizzaiolo
4 years ago

Hi Julio, I believe the snippet below might be the solution you are looking for. If added to the functions.php file of the currently used theme/child-theme, it will result in selecting always the cheapest available shipping method. So, if the local pickup is free it should be preselected by default.

function plx_default_cheapest_shipping_method( $current_chosen_method, $available_methods ) {

$selection_priority = get_option( 'woocommerce_shipping_method_selection_priority', array() );

if ( ! empty( $available_methods ) ) {

// Is a method already chosen?
if ( ! empty( $current_chosen_method ) && ! isset( $available_methods[ $current_chosen_method ] ) ) {
foreach ( $available_methods as $method_key => $method ) {
if ( strpos( $method->id, $current_chosen_method ) === 0 ) {
return $method->id;
}
}
}

// Order by priorities and costs
$prioritized_methods = array();

foreach ( $available_methods as $method_key => $method ) {
// Some IDs contain : if they have multiple rates so use $method->method_id
$priority = isset( $selection_priority[ $method->method_id ] ) ? absint( $selection_priority[ $method->method_id ] ): 1;

if ( empty( $prioritized_methods[ $priority ] ) ) {
$prioritized_methods[ $priority ] = array();
}

$prioritized_methods[ $priority ][ $method_key ] = $method->cost;
}

ksort( $prioritized_methods );
$prioritized_methods = current( $prioritized_methods );
asort( $prioritized_methods );

return current( array_keys( $prioritized_methods ) );
}

return false;
}

add_filter('woocommerce_shipping_chosen_method', 'plx_default_cheapest_shipping_method', 10, 2);

Julio Pizzaiolo
Julio Pizzaiolo
Reply to  Łukasz Spryszak
4 years ago

Hi Lukasz,

thanks for pointing out this. Could let me know where I can locate the functions.php file ?

Much appreciate your help here!
Jules

Łukasz Spryszak
Łukasz Spryszak
Reply to  Julio Pizzaiolo
4 years ago

Sure, please access the FTP your site is hosted on, navigate to the
WordPress’ /wp-content/themes/[name of your theme] directory and this is where you should find the functions.php file.

kashif
kashif
2 years ago

hello , is there any way to add separate a email for the local pickup.

Łukasz Spryszak
Łukasz Spryszak
Admin
Reply to  kashif
2 years ago

Hi Kashif, yes, I believe it can be done, however, it will require either some custom coding or using some sort of checkout fields editor plugin. What needs to be done here is adding the custom email checkout field and configure it to be conditionally displayed only when ‘Local Pickup’ shipping method is selected. I suppose that the Flexible Checkout Fields PRO plugin might be the exact solution you are looking for.

Last edited 8 months ago by Grzegorz Turbasa