Exciting news! We're joining GoDaddy ➡️
WooCommerce extension updates & releases

Local Pickup Plus version 2.0.0 was released last week! This is a major rewrite of our plugin for managing pickup locations: a comprehensive solution to let your customers pick up their orders at one of your business premises.

“A rewrite you say? Why the need to redo stuff? Does it mean it wasn’t good from the beginning?” — When software evolves it doesn’t mean stacking new features and things on top of the ones built previously. A software rewrite is an acknowledgement that you have reached a point where you, the software developer, have a better understanding of what your product does and can do, what your customers need and what is the best way to deliver the features they need, what your product needs to do, and do it better to meet all those expectations.

So let’s see what Local Pickup Plus was meant to do yesterday and what this new version can do for you and your business today!

A bit of history: what’s behind a WooCommerce extension

Local Pickup Plus is a very old plugin, started in 2012. Almost as old as WooCommerce itself! It was built when WooCommerce 1.5 was still around (check this out if you want a trip down memory lane to see what it looked like then!). When did your business start? How much happened in five years? We all came a long way, and a lot has come to the World’s most popular shopping cart since.

When Local Pickup Plus was originally built, it was intended to provide multiple pickup locations, going from “one” pickup location (as is still provided today by WooCommerce core) to perhaps five to ten locations; an average number that we assumed most SMBs would manage at most.

However, as the plugin grew and more businesses adopted WooCommerce (or grew with it!), the usage went from perhaps a dozen locations to retailers looking to use the plugin for hundreds or thousands of locations. Not just that: some merchants started using the extension in ways we had never imagined at the time of planning it. For example, before WooCommerce  Bookings came out, some travel agencies were selling tours using Local Pickup Plus to let their customers choose a pickup point for the tour start location.

No one can ever predict all use cases that software tools like WooCommerce or Local Pickup Plus will have to face. As the user base of Local Pickup Plus grew, we had more and more requests for covering cases that we didn’t imagine at such early stages of WooCommerce, but of course relevant to the success of our customers.

So while we were able to add new features to the plugin, we were building on top of an architecture that was meant for a much simpler set up. This resulted in a product that was still achieving its core mission of adding multiple pickup locations, but everything around it really outgrew its gearbox.

So, what we needed here was to install a new gearbox, a new engine, also those fine leather seats in your car, all while the engine is rolling, the car is moving and you’re inside of it! ? And to that end, we’ve built version 2.

Pickup Locations are now a Post Type

The biggest challenge in the plugin has long been its scalability. Since its inception, we were storing all the pickup locations in a single WordPress option, since we thought we only had to accommodate a handful of them. But merchants who wanted to manage a thousand locations or more inevitably found a bottleneck here. We also wanted to change this structure to be able to add more information to each location, such as rules for product availability and an email list to send order notifications.

The most obvious solution to this consisted of leveraging the WordPress data structure and adopt custom post types for pickup locations. This means that now your locations are posts, just like blog posts and WooCommerce products or orders. We can do a lot more with this simple move. Not only the number of locations you manage is no longer a point of concern — you can grow your retail empire, cross-states and cross countries with thousands of them! This design choice also comes with a lot of extra benefits. The most evident one is that you are now welcomed by a familiar interface to edit your location content and details:

WooCommerce Local Pickup Plus location list

Looks friendly familiar, yes? This is the new pickup locations dedicated edit screen.

Email Notifications per Location

When you manage pickup locations where your customers expect to knock the door and get their goods handed to them, the most obvious thing you’ll want to do is arguably inform the person behind that door that a customer is coming: they should hold the customer’s shiny new products and welcome them when they arrive!

Sure, in this day and age you can send an instant message to Joe and warn them with your messenger app of choice that an order is incoming; but that’s not so practical when you have a business to run, many things to do and, hey, you happen to have a thousand orders to process and dozens of locations to manage.

That’s where email lists come in: you can now add a list of email addresses to each individual location. When an order includes a matching pickup location, the recipients in that list would get an email, so they will be automatically notified of a new order, or even when an order is cancelled — so they could put back the items on the shelf, available to walk-in customers.

WooCommerce Local Pickup Plus location email list

A very simple input that will help you and your staff stay organized and coordinated!

Product Pickup Availability

One of the first features added to Local Pickup Plus after its inception and first release, was the ability to set categories of products to be pickup-only. This setting was simple and effective, but also limited because it could only have been applied globally to every pickup location, and couldn’t include specific products.

From version 2.0, you can make products or (product categories) eligible for pickup, or force them to be picked up: other shipping options won’t be available when customers have must-pickup products in their carts, and these products will be separated from the rest that can be shipped otherwise instead.

WooCommerce Local Pickup Plus product pickup availability

You can set rules for product categories or products (as shown here in the Shipping settings of the Product data meta box).

Note: if in the previous versions of Local Pickup Plus you had defined categories that could be only picked up and set all other categories to be non eligible for pickup, you might want to review this setting in your product categories after the upgrade as we will try to retain the same behavior. However, with the new possibilities offered by product availability control and adjust individual products than categories, perhaps you would want to review your pickup rules.

Limit Location Product Availability

Another large request we had was to make pickup availability more fine-tuned: instead of letting customers pickup up any product at any location, what if certain locations only have some of the products the retailer carries? We can now limit products availability on each individual location, and set this information not just by product category but even by individual products.

WooCommerce Local Pickup Plus location product availability

In this example, “Warehouse 1” will only stock “Clothing” and “Hoodies” products.

So, if for example you have apples and oranges in your store, and some locations only stock oranges, and some locations only apples, at checkout customers who bought apples won’t see the pickup locations with oranges in their pickup possibilities when choosing a pickup location.

Pickup Location Selection Per Item

The new product pickup and availability settings form the pickup rules that will determine how products will be presented to customers after they add them to cart. As these rules are now more complicated in determining which items can be sent where, we needed a more effective way to build shipping packages than just stuffing every item into a single “pickup” package at checkout.

  • Products that are marked excluded from pickup (shipping only) will be placed in a package (or shipping item, according to the WooCommerce way of defining a package) that will only offer non-pickup shipping methods options.
  • Products that can be picked up at some location, will prompt the customer to choose whether they want such item to be shipped or picked up.
  • Products that must be picked up will force the customer to choose a pickup location without offering a shipping alternative.
WooCommerce Local Pickup Plus frontend

Customers can already designate items for pickup while at the cart page, and later make changes at the checkout page.

Until version 2.0.0, we only prompted customers for a pickup selection in the checkout page, next to the other shipping method choices, so this is definitely a large change. WooCommerce doesn’t offer a very advanced packages API and trying to merge, separate, or re-combine packages while offering more complex pickup rules and package combinations soon became quite a rabbit hole.

We really wanted to have something robust that was easy for merchants and could provide dependable results, so during development we had to move away from using a single locations selector to asking customers to express a pickup choice outside the shipping methods options. This way, we can accurately build packages since we know where each item should go in advance.

Pickup Date Appointments

At checkout, customers that have chosen a pickup location for the items they want or must pick up may be prompted instead to choose a pickup date for when they want to come and collect their orders. This is yet another much requested feature that comes with version 2.0.0. It’s optional, so you can keep it disabled if you don’t need it. Or you can turn it into a requirement for customers to expressly specify a day for pickup or they won’t be able to submit the order. And it doesn’t end here!

You can control the number of days before or after you want to let customers to indicate a date. We call these pickup lead time and pickup deadline.

  • Pickup Lead Time: lead time is the number of days (or weeks, or even months) until which the first possible day on the calendar becomes available to customers and selected for scheduling a pickup. For example, you might have a pickup location that doesn’t have a warehouse and it needs to gather products from other warehouses. Maybe it only stockpiles goods twice a week, therefore you could indicate a lead time of 2 or 3 days to allow for the pickup location manager to gather the ordered items before the customer arrives.

  • Pickup Deadline: pickup deadline is quite the opposite. It sets the other end of the range until when it is possible for a customer to come to the pickup location premise and collect their order. This is ideal to avoid customers taking too long to collect their order and have their items occupying space at the pickup location warehouse. For example, you could set a limit of two weeks, and if today is the first of the month and the customer is placing an order, then the customer wouldn’t be able to select anything beyond the 15th.

WooCommerce Local Pickup Plus pickup appointment settings

In the settings page you can define global settings that will apply at each location that doesn’t have specific overrides.

You can even configure opening hours and public holidays, for dates that should be unavailable to customers to set a pickup date. Since we want to enable merchants from any country and culture to set their own holidays, we added a perpetual calendar, so you won’t have to define a year and the dates added there will remain valid for any given year.

(We know this might not account for holidays that are not on a fixed day of the year; we plan to improve this in the future, meanwhile you will also be able to filter these dates with a specific WordPress filter in case you need to refine this control even further).

WooCommerce Local Pickup Plus location appointment overrides

Each location can override the default appointment scheduling settings.

Naturally, we don’t want to have these settings only available as global settings, so you can override any setting at pickup location level.

WooCommerce Local Pickup Plus choose location date

Customers will learn of a pickup location opening times when they express their pickup choice at checkout.

All these settings are applied when the customer has selected a pickup location: the pickup calendar will reflect lead time, deadline, and public holidays that are applicable for that specific location. Once the date is chosen, the business hours for that specific date will be shown to the customer.

Once the customer completes the checkout, both the pickup location and the pickup date choices will be recorded in the order. All the pickup information will appear in the user account order summary as well in the order emails, and other relevant places.

Location Geocoding for Distance Sorting

One of the problems that stores with pickup location counts in the hundreds or thousands run into is the ability to show relevant pickup locations to the customer. Shipping zones are inadequate for this since the customer is coming _to_ the package, not the other way round, so we use _sorting_ instead to help with this. This is where geocoding can come in!

This setting is totally optional (and may not be very useful for stores with less than a few dozen locations), but can help stores with much larger location lists to sort available locations more intelligently. Every pickup location in Local Pickup Plus can store actual coordinates and customers can search them in the frontend by distance. How cool is that?

WooCommerce Local Pickup Plus Geocoded Location

A successfully geocoded location (if geocoding is enabled coordinates will be automatically saved upon save — you can also override the coordinates you want)

By geocoding locations, the coordinates information will be stored in a custom table of your WordPress database, along with other location address bits. In this way, even if geocoding is disabled, Local Pickup Plus will still try to determine the closest pickup location using the rest of the pickup information and do it very quickly.

To use geocoding, you will need an API Key from Google, which is freely obtainable. There’s a lot of potential in this feature and we can’t wait to get customers’ feedback on it!

Location Import & Export

Pickup Locations can now be easily imported and exported with convenient CSV files! We adopted an interface similar of that WooCommerce Memberships, and inspired by our own Customer / Order CSV Import and Export plugins, of course much more simplified.

WooCommerce Local Pickup Plus Import

Import & Export locations from the WordPress admin! You can also export them via bulk actions.

This feature may be particularly convenient in case of site migrations or if you manage a large number of pickup locations and need to connect multiple systems that will manipulate your pickup locations externally.

Plugin Compatibility: Export Plugins, Print Invoices & Packing Lists

Additionally to exporting pickup locations, if you are a user of WooCommerce Customer Order XML Export Suite or WooCommerce Customer Order CSV Export, you can now export orders filtered by pickup location:

WooCommerce Local Pickup Plus order export compatibility

In this example, only orders containing a pickup at “Los Pollos Hermanos” 😉 will be included in the CSV file.

Along with Subscriptions and smaller plugins, we also introduced support for Print Invoices & Packing Lists: customers will see their pickup details at the bottom of their invoices, along with any pickup appointment information, such as pickup date and available pickup hours.

We’re excited to be able to make more rapid improvements to Local Pickup Plus with the new structure to support both independent merchants and large retailers alike, and as always, feedback is always welcome 🙂 And of course, don’t forget to read the documentation!

It was exciting developing a new version of one of our most popular plugins and we hope that Local Pickup Plus will add value to your business and improve your customers’ experience!

Published by Fulvio Notarstefano

Fulvio is a WordPress engineer, and spends most of his time on new plugin development and updating existing plugins. You'll find him on the SkyVerge blog keeping you in the loop on what's new with our plugins, along with helping in your support threads.


  1. The new release has some great changes, so thanks for that. But it’s very disappointing to see that it doesn’t support WooCommerce shipping zones yet. About a year ago asked about this to WooCommerce support and they said it was something planned… At this point it looks that it’s something that’s not going to happen never.

    Also the Pickup Location Selection Per Item maybe could fit the needs of some merchants, but I don’t think that’s going to be the most common case. In a store where users can make an order to pickup, usually the user will want to pickup all the items in the same place, what’s the point of ordering 10 items and only going to pickup 2 and wait for the others to arrive via other way or pickup 2 items in one place and 8 in another?

    So with this new release if the user creates an order of 10 items and just wants to pickup all in a single location, he has to select 10 times the pickup location… I’m sorry but I can’t see any benefit in this change.

    • hey Samuel! Thanks for the feedback here, happy to clarify some of the choices in v2. The choice to omit support for shipping zones is an intentional one, so this will not be coming to the plugin. A shipping zone is useful when the package is going to the customer, as you need to know where they are, but not when the customer is coming to the package. We have a more detailed explanation here as to why this isn’t a good fit for the core plugin.

      Also the Pickup Location Selection Per Item maybe could fit the needs of some merchants, but I don’t think that’s going to be the most common case

      Definitely a great point here, thanks for bringing it up! Version 2.1 is already in progress to add a setting to disable pickup per item, as we’ve had a couple other merchants note they won’t be using the “product availability” setting for locations. v2.1 will include this along with some refinements for stores who do use the product availability settings.

      The reason we had per-item selection in the first place was due to the inability to split and re-merge packages in a really robust way within WooCommerce — we definitely first tried this approach, and found that it wouldn’t be a good long term solution, nor would it work well with other shipping plugins that need to manipulate packages. Until there’s a more robust way to handle this within WooCommerce (as we can get into some pretty complex logic with product pickup settings, along with location product availability), we needed a way to support product availability while removing some of the logic choices for package building, and a per-item system let us add this for stores who need to restrict product availability at some pickup points.

      Again, I really appreciate you taking the time to share this sort of feedback! It’s always welcome so we can keep improving our plugins 🙂 and feel free to share any other feedback directly here as well!

      • Hi Beka,

        Has the functionality of disabling pickup per item been added to pickup plus yet as I’m unable to find these options? If not do you know when this functionality will be added as I’m getting a lot of complaints regarding this due to customer getting confused.



        • Hey David, you can set the order to only allow one pickup location overall as of v2.1, but the individual item toggles remain. Working on a setting for that as we speak along with some other fixes 🙂 We should have something released within 1-2 weeks.

  2. Hi I have an issue with pickup plus, When users checkout and register at the same time no pickup location or appointment is submitted to the order. However if they checkout as guest works perfect or if the register on the my account page then checkout again works perfect. They just can’t do both at the same time. Is this a known issue? Looking forward to your reply thanks

  3. Hi,
    Have you thought of integrating a Store Locator Map?
    It would be very helpful if users could access a page with a map of the store locations before proceeding with the checkout process so they can figure out which store location is the most convenient to choose.

    • Hey Kim, it’s on our idea board but not something that’s made it onto the roadmap yet — I’ve added your vote though, thanks for the feedback!

  4. How about the ability to set “Must be Picked Up” as the Default rather than “Can be Picked Up”?

    • Hey Lance, I’d recommend setting “Must be Picked up” for the product category instead, which will require pickup for all items in the category as the default.

  5. Hi Beka,

    Is there anyway to sort orders by pickup date on the WooCommerce orders screen? currently I can only sort by the date the order was placed it would be much easier if I had this options as my store is pickup only.


    • Hey David, this isn’t something we added in v2 since an order could feasibly have > 1 pickup location, and therefore > 1 date. However, we’ve been working on changes to allow people to limit orders to 1 location per order, so this is something on the idea board to investigate once we’ve got more of those improvements in place. thanks for the feedback!

  6. Is there a way to email all the customers picking up at a certain location? And better yet a way that the customer could be added to an email list automatically based on the pickup location they select?

    • Is there a way to email all the customers picking up at a certain location?

      Hey Matthew, Local Pickup Plus does not add any email sending of its own. The recipients for a particular location (such as warehouse managers) are CCed on existing admin order emails, but LPP will not generate new emails to send or create customer lists. If you have a way to bulk email your customers from a different plugin, you can filter your orders by pickup location. Or, LPP works with our order CSV Export plugin, so you could get a list of customer emails to import into your email marketing tool of choice.

      And better yet a way that the customer could be added to an email list automatically based on the pickup location they select?

      This would require an integration with whatever email list plugin you’re using. This isn’t something we have on our development at present since there are tons of possibilities for email list plugin out there, and would likely be better served as an opt-in condition with whatever email plugin you’re using.

  7. Hi Beka,

    I have started using the delivery date plugin as we have started to do deliveries too. However when the store collection option is chosen the delivery date field still appears which looks confusing to the customer can this be disabled when the pickup is the chosen option?


    • Hey David, I’m afraid this would be a question for the author of the delivery date plugin to see if it can be limited to certain shipping; Local Pickup Plus wouldn’t control its display.

      • Thanks for such a fast reply. I will try contact the Author of that plug. Will an option to deliver all or collect all be getting added to the plugin anytime soon? For us we don’t need the option per item. Thanks again

  8. Hi! prior to purchase, just wanted to inquire if we can do the following if we purchase it:
    1. We wanted to define pick up per product. However, we wanted to show it on the single product page as an option where to pick up or ship out. if they choose pick up, then another option will show up and they would select which store locations are available (this is the one that is geotag and is defined in the address section in the admin panel based on this plug in).

    Moving on to the cart section, for those item tagged as picked up, then shipping wont be computed against them.

    thank you!!

    • I forgot to mention we have a developer on board who can tweak the codes to customize to our needs. I guess his questions is this kind of tweak that I require is possible with this plug in. or it has limitations?

      • forgot to add in 2 more questions:
        1. Can local pick up be applied in all product types? and not just simple product? (Eg. Variable product) and also for virtual product? (in the case of offering service types industry like dining in a restaurant where they will choose a branch of redemption?)
        2. For per product pick up > is it possible to put an inventory level of that item on per location?


        • (1) for variable products, yes — though you can’t limit pick up location by variation, only by the product overall. Not for virtual products as WooCommerce marks these as not needing shipping.
          (2) I’m afraid not — we’ve found that there are a ton of complexities with managing inventory at locations that don’t make it feasible within this plugin, and this problem is handled much better by external fulfillment services like Shipwire or Veeqo.

          Going back to your previous question, a developer could implement showing a pickup location list on the product page, and we’re always happy to add hooks as needed upon request.

    • Hey Grace, you can set pick up per-product, but I’m afraid we don’t have this available on the product page. We’re tracking votes for this feature now, so I’ve added yours to our list 🙂 Sorry I don’t have better news for you here!

  9. Hi! Just a quick pre purchase question.

    Are pick up details showing in Woocommerce Rest API? Or is only option to get pick up data out with sales order data to use csv/xml exporter?

  10. Hi there, is there a way for the customer to pick a date AND time of pickup (within the pickup window)? Right now, it seems like they can only pick a date, but not a time on the date.

  11. Are there any links to websites that use this plugin? Just want to see it in action.

    • Hey Dan, I’m afraid we’re not able to share other sites without permission — it’s important to us to respect privacy of our customers, so I’m sorry I don’t have any to share! The plugin does have a 30-day return policy, so this gives you the opportunity to take it for a spin if you’d like. 🙂

  12. Hi

    For example
    $ over 100 Pick up from 1 hour and 30 minutes after
    $ over 200 Pick up from 2 hours after
    Is this possible?

  13. HI All

    I am going to buy this plug in however not sure how to add pick up time,
    it is a function to buy how much?

    • Hey Jennifer, I’m afraid pickup times are not available in the plugin yet. As such, if you need this feature, it would require customization (we typically recommend Codeable for these projects). I appreciate your feedback here, and have added your vote to our tracker as well!

  14. What’s the best way to generate a report at the end of the month of total sales per location?

    • Hey Pat, we recommend using Customer / Order CSV export — you can filter your orders by the past month + the pickup location used, then use the order bulk actions to export a csv of all orders. This would give you the list of orders, and you can get the sum of order totals within the spreadsheet.

  15. Great, thanks for the recommendation. Is it possible at all to just add a column for the pickup_location_name value by itself to an export of data from all locations rather than filtering them by location first and exporting orders for each location individually? I can see the pickup_location_name in the shipping_items columns when I export everything now but there’s a bunch of other data in that column as well.

    • It’s not straight-forward at the moment without customization, as there could be more than one pickup location for an order (and therefore a pickup location name column wouldn’t really work for a single value / would need to be comma-separated). I’ve logged this in GitHub now to consider for a future release.

  16. We wanted to use this plugin for a simple “click & collect” solution (Experiment)

    We want to “force” the customer to pick up the order in on of our stores. Customer can chose the store on the drop down. But we want to ship the items to that store, but on the order created the delivery address is the customers.

    Any hint on how to set the delivery address = the store picked ? (with customer name and perhaps order number added as field)

    We have purchased the plugin. Can I get customizing advise on the support ?

    Would something like this be possible ?


  17. Hello,

    Is there any possibility to bring back the style option of local pickup locations from dropdown to radio buttons?
    Thank you in advance,


    • Hey Nikos, we don’t plan to add this back to the plugin at this time, as having the select input allows searching by several components, such as postcode + name, and once a site has more than a few locations to choose from, a select tends to be a better fit than a radio input. Sorry I don’t have better news for you here!

      • Hey Beka,

        What if I use an older version of the plugin. Do you thing that I might have a problem with woocommerce 3.5?

        Thank you

        • Hey Nikos, it’s not really easy to say — many of the hooks the older versions used still exist, though the way shipping is managed in WooCommerce is quite different. It may work, but if you have other shipping rates or some other plugins acting at checkout, it may have a few quirks given pre-2.0 versions were built before WooCommerce 3.0.

  18. Hello! Is it possible to set stock quantity by pickup location? and giving the location managers the possibility to manage the stock and location details? Thanks a lot

    • Hey there, great question! Per-location inventory for each product isn’t available in Local Pickup Plus, as it would require us to pretty extensively manipulate the inventory system in WooCommerce (where does new inventory from product edit get added? what about inventory added via the API? what about for shipped orders? there are a lot of areas you’d have to take over). As such, it’s not something we plan to tackle at this time. Sorry I don’t have better news for you here!

  19. Hi Beka,

    Is there anyway of setting a lead time per day? For example we need 16 hours Monday to Friday but Saturday we need 12.


  20. Hi Beka

    We can have orders ready for pickup next day during store opening hours if they order before 2pm. Otherwise if will be available in 2 days. Is it possible to set a cutoff time for next day pickup?

Hmm, looks like this article is quite old! Its content may be outdated, so comments are now closed.