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:
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.
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.
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.
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.
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.
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).
Naturally, we don’t want to have these settings only available as global settings, so you can override any setting at pickup location level.
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?
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.
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:
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!