Blog

WooCommerce Local Pickup Plus Version 2.0

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 or most popular plugins and we hope that Local Pickup Plus will add value to your business and improve your customers’ experience!

13 Comments

  • Samuel 2 months ago Reply

    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.

    • Beka Rice 2 months ago Reply

      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!

  • David Dunnington 1 month ago Reply

    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

    • Beka Rice 1 month ago Reply

      thanks for the report, David! We have a fix for that issue going out this week 🙂

      • David Dunnington 1 month ago Reply

        Perfect. Thanks for such a fast response. 😊

  • Kim 4 weeks ago Reply

    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.

    • Beka Rice 4 weeks ago Reply

      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!

  • Lance 3 weeks ago Reply

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

    • Beka Rice 3 weeks ago Reply

      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.

  • David Dunnington 3 weeks ago Reply

    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.

    Thanks

    • Beka Rice 3 weeks ago Reply

      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!

  • Matthew Watson 7 days ago Reply

    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?

    • Beka Rice 5 days ago Reply

      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.

Submit a Comment