WooCommerce Local Pickup Plus

Overview ↑ Back to top

WooCommerce Local Pickup Plus extends WooCommerce shipping to let your customers pick up items from different locations. You can control which items are eligible for pickup and determine where customers can pick up these items. Local Pickup Plus also supports geocoding to show your customers where your pickup locations are in relation to their billing address, making it easier for them to choose the best location!

Requirements ↑ Back to top

  • WooCommerce 2.6.14+
  • PHP 5.3+ (you can view this under WooCommerce > Status)
Notes:

  • When using Local Pickup Plus, we recommend disabling the core Local Pickup method for any zones you’ve added it to.
  • If you don’t allow pickup for certain items, please ensure you have at least one shipping method available for these items!

Installation ↑ Back to top

  1. Ensure your store meets the plugin requirements.
  2. Download the extension from your WooCommerce dashboard.
  3. Go to Plugins > Add New > Upload and select the ZIP file you just downloaded.
  4. Click Install Now and then Activate.
  5. Click Configure and read the next section to learn how to setup the plugin.

Getting Started ↑ Back to top

Plugin Settings ↑ Back to top

You can configure the plugin by going to WooCommerce > Settings > Shipping > Local Pickup Plus.

General

  • Enable: Check to enable Local Pickup Plus.
  • Title: Determine how this method will be displayed to customers during checkout.
  • Google Maps Geocoding API Key: Enter the API Key to enable geocoding.
  • Enable Logging: If geocoding is enabled, check to turn on logging for Google geocoding API requests. For best performance, please leave this disabled unless you need to troubleshoot geocoding issues.

Checkout Display

These settings determine when and how customers can select local pickup as a handling option.

  • Choosing Locations: Determine whether customers can choose different pickup locations for each eligible item in their cart or if they must choose one pickup location per order. Per-item location selection is useful when certain products aren’t available at every location.
  • Cart Item Handling: If Choosing Locations allows one pickup location per order, determine whether customers can choose to ship or pickup eligible items individually or if they must choose one handling method for all eligible items. Choosing one handling method for all items will group items in the fewest number of packages.
  • Default Handling: If Choosing Locations allows one pickup location per order, determine whether items should default to shipping or pickup (if eligible).
  • Location Sort Order: Determine how pickup locations are sorted for customers:
    • Default: Show locations as they are presented in the Pickup Locations list
    • Distance from customer: Only available when geocoding is enabled
    • Alphabetical by location name
    • Most recently added location

Pickup Appointments

If desired, these settings let you present a calendar/date selector to the customer at checkout so they can choose the pickup date for the order. Except for the Pickup Appointments Mode setting, you can override these settings for individual pickup locations.

  • Pickup Appointments Mode: Determine if appointments should be displayed and if they should be required.
  • Default Business Hours: Determine when customers can pick up orders.
  • Common Public Holidays: Set fixed dates when pickup will not be available. Holidays that change date must be reset each year.
  • Default Lead Time: Set the amount of time that must pass between when the customer checks out and when they can first pickup their order.
  • Default Deadline: Set the deadline for when a customer must pick up their order. You can leave this at zero to enforce no deadline.

Note: Business hours and holidays are not taken into account for lead times and deadlines. In other words, the lead time/deadlines do not “pause” when your location is closed. If you need to account for extended closures, such as over the weekend, extend your lead time accordingly.

Price & Tax

You can determine whether pickups should incur a fee or discount and how taxes should be handled for pickup orders.

  • Default Price Adjustment: Determine if pickup should charge a fee or provide a discount. You can override this setting for individual pickup locations.
  • Pickup Location Tax: Check to apply the tax rate based on the pickup location, not the customer’s address.

Product Pickup Settings ↑ Back to top

You can establish a product or category’s eligibility for local pickup in one of the following ways:

  • Can pick up: Customers can ship or pick up.
  • Cannot pick up: Customers can only ship.
  • Must pick up: Customers can only pick up.

When creating or editing a category, update the Local Pickup menu to decide if local pickup is allowed or required for products in this category.

When creating or editing a product, go to the Shipping tab and update the Local Pickup field to determine if pickup is allowed, required, or if the prouct should follow its category-level settings. When a product and its category have different settings defined, Local Pickup Plus will follow the product-level settings.

Geocoding Setup ↑ Back to top

You can setup geocoding to show where your pickup locations are in relation to the customer’s billing address, which makes it easier for them to choose the best location. This is not required to use the plugin, but may be valuable for stores with multiple pickup locations.

Follow the steps below to setup geocoding:

  1. Go to the Google API Library.
  2. Click Select a Project > New Project.
  3. Enter your Project Name, Organization (if applicable), and Location.
  4. Click Create.
  5. Select your newly created project, then search for and select Geocoding API.
  6. Click Enable.
  7. Go to Credentials and click Create Credentials > API Key.
  8. Copy your newly created API Key and click Close. Do not click Restrict Key – this may cause Google to reject your geocoding requests from Local Pickup Plus. Your API Key will never be exposed to users on your site.
  9. Now, go to the Local Pickup Plus settings, enter the copied key in the Google Maps Geocoding API Key field, and click Save Changes.

Once geocoding is enabled, your locations will be automatically geocoded. If a location can’t be automatically geocoded, you can manually enter coordinates when editing the location.

Creating and Managing Pickup Locations ↑ Back to top

Follow the steps below to create a pickup location:

  1. Go to WooCommerce > Settings > Shipping > Pickup Locations.
  2. Click Add Pickup Location.
  3. Enter the pickup location name.
  4. Update the location detail tabs:
    • Address: Enter the location’s address and any notes you’d like customers to see about this location.
    • Available Products: If your plugin settings allow per-item location selection, specify which products and/or product categories can be picked up from this location. By default, products can be picked up from any location.
    • Costs & Discounts: Override the fees and discounts associated with local pickup as established in the plugin settings for this location.
    • Pickup Appointments: Override the default business hours, holidays, and pickup times as established in the plugin settings for this location.
    • Email List: Enter a comma-separated list of email recipients who should be notified when this location is selected in an order. The recipients will receive the New Order, Cancelled Order, and Failed Order emails if they are enabled on the WooCommerce > Settings > Email page.
  5. Click Update.

Importing and Exporting Locations ↑ Back to top

You can create and manage pickup locations in bulk using the built-in CSV import/export functionality.

Export Locations

You can run a quick export to download a few locations from your list or run a full export, which also lets you adjust the export settings to manage large exports.

To run a quick export:

  1. Go to WooCommerce > Settings > Shipping > Pickup Locations.
  2. Check the locations you want to export.
  3. From the Bulk Actions menu, select “Export”.
  4. Click Apply.

To run a full export:

  1. Go to WooCommerce > Settings > Shipping > Pickup Locations.
  2. Click Export Pickup Locations.
  3. Update the export settings as needed:
    • Separate Fields By: Choose to delimit the CSV file by commas (default) or tab spaces.
    • Limit Records: Limit the number of export rows. Recommended when working with a large number of locations. For example, “50” would limit the export to the first 50 locations.
    • Offset Records: Set the number of records to be skipped in this export. Recommended when working with a large number of locations. For example, “50” would ignore the first 50 locations in the list when exporting.
  4. Click Export.

Import Locations

For best results, export your locations and make your changes to that file to avoid issues with the CSV format. Then, you can import that file by following the steps below:

  1. Go to WooCommerce > Settings > Shipping > Pickup Locations.
  2. Click Import Pickup Locations.
  3. Click Choose File and select the CSV file from your computer.
  4. Set the Import Options as needed:
    • Update Existing Records: Check this setting to update locations if the ID matches an existing location. Uncheck to ignore any rows with an ID that matches an existing location.
    • Create New Pickup Locations: Check this setting to create new locations if the ID doesn’t match an existing location. Uncheck to ignore any rows with an ID that doesn’t match an existing location.
  5. Choose the file delimiter from the Fields Are Separated By menu.
  6. Click Import.

CSV Format

We recommend that you export locations before you import locations to ensure that your file matches the following import format requirements.

Column Name Required? Column Data Format
id maybe The post ID for the location. Required when updating existing locations. integer
status no “Publish” or “Draft” string
name yes string
country yes Two-letter country code (e.g. US) string (2 characters)
postcode yes numeric
state no Two-letter state code (e.g. VA) string (2 characters)
city yes string
address_1 yes string
address 2 no string
phone no numeric
latitude no If using geocoding, the location’s latitude coordinate. numeric
longitude no If using geocoding, the location’s longitude coordinate. numeric
products no A comma-separated list of product IDs that should be available at this location. Leave blank to permit all products. integer list
product_categories no A comma-separated list of product category IDs that should be available at this location. Leave blank to permit all product categories. integer list
price_adjustment no Price adjustment value for pickup at this location. Enter a positive value for a fee or a negative amount for a discount. Use a % sign to indicate a percentage adjustment, otherwise the entered amount will be a fixed fee/discount. numeric, also accepts % and +/- signs
business_hours no JSON-encoded list of time ranges for opening hours (in seconds); use index 0-7 for days of the week. JSON
public_holidays no A comma-separated list of holidays in mm-dd format. numerical list
pickup_lead_time no Lead time for pickup (e.g., “8 hours” or “1 week”) string
pickup_deadline no Deadline for pickup (e.g., “8 hours” or “1 week”) string
pickup_notifications no A comma-separated list of email addresses that should receive order notification emails for this pickup location. list
description no Location description/notes string
Note: Not sure how to enter your business hours in the import? Try entering them manually in the plugin settings for one location, export your locations, then apply/tweak those hours for other locations.

Click here to see an example of the Local Pickup Plus CSV file.

Placing Pickup Orders ↑ Back to top

Regardless of other settings, the product pickup settings will first determine if a product can be picked up or shipped, must be shipped, or must be picked up.

The Choosing Locations and Cart Item Handling plugin settings will also impact the customer experience when placing an order:

A table to explain how the Choosing Locations and Cart Item Handling settings impact customer checkout experience.

Choosing Pickup Locations and Handling Methods ↑ Back to top

If the Choosing Locations setting lets customers select different pickup locations per produt, customers will see the pickup selector inline with their items while viewing their cart or going through the checkout process:

Note: If the same location is selected for multiple items, these items will be combined in one shipping package, which ensures that any price adjustments associated with the location are only applied once.

If the Choosing Locations setting only allows one pickup location per order, customers can select the pickup location in the overall cart/checkout details:

  • If the Cart Item Handling setting lets customers choose which products to ship or pick up, they can toggle the handling method for each eligible item:

  • If the Cart Item Handling setting requires customers to choose to ship or pickup all eligible products, they can toggle the handling method for all eligible items:

Selecting Appointments ↑ Back to top

If pickup appointments are allowed or required, a calendar/date picker will appear at checkout so customers can select their pickup date. The calendar will respect your business hours, holidays, pickup lead time, and pickup deadline as defined in the plugin or location settings. If the Choosing Locations setting permits multiple pickup locations, customers will see a different calendar for each location.

Manually Adding Local Pickup to an Order ↑ Back to top

As a site administrator, you can manually add local pickup to an order after its creation. To add local pickup to an order:

  1. Go to Orders and select Add Order.
  2. Add customer information and products to the order as needed.
  3. Click Add item(s) and select Add shipping.
  4. Click the pencil icon to edit the shipping line item.
  5. From the Shipping Method menu, select Local Pickup. This may be listed under a different name if you have set a custom title in the plugin settings.
  6. Click Save, then Create to create the order. You’ll see the Shipping line item update with pickup information.
  7. Click Edit under the local pickup item.
  8. Update the Pickup Location, Pickup Date, and Items to Pickup fields.
  9. Click Update Pickup Information.
  10. Click Update to save this information to the order.

You can repeat steps 3-10 as needed if you need to add multiple pickup locations to the order.

Note: Pickup details may be hidden from the order items table after saving until the entire page is refreshed. This is normal and due to the way that WooCommerce styles this table.

Compatible Plugins ↑ Back to top

While this is not an exhaustive list of compatible plugins, the following plugins have built-in compatibility with Local Pickup Plus.

Customer/Order CSV Export ↑ Back to top

When manually exporting orders with Customer/Order CSV Export, you can set a filter to only include orders with pickups at particular locations:

The exported CSV will also include the following data in the shipping_lines column for pickup orders:

  • pickup_location_id
  • pickup_location_name
  • pickup_location_address
  • pickup_location_phone
  • pickup_date
  • pickup_item_ids

Customer / Order XML Export ↑ Back to top

When manually exporting orders with Customer/Order XML Export, you can set a filter to only include orders with pickups at particular locations:

The exported file will also add the following data to the ShippingItems XML tag for pickup orders:

  • PickupLocationId
  • PickupLocationName
  • PickupLocationAddress
  • PickupLocationPhone
  • PickupDate
  • PickupItemsIds

Print Invoices/Packing Lists ↑ Back to top

When Print Invoices/Packing Lists is used to generate order invoices, Local Pickup Plus will automatically add pickup details to the relevant invoices:

Frequently Asked Questions ↑ Back to top

Q: Will Local Pickup Plus ever support Shipping Zones?
A: No – shipping zones and pickup locations are fundamentally at odds with each other, so Local Pickup Plus will not support shipping zones.

A shipping zone tells you where the customer is, which helps with calculating costs and timelines when you’re shipping an item to the customer.

With pickup locations, the customer is coming to the item, so we need to know where the customer is going. As such, Local Pickup Plus includes geocoding to help customers choose a location, but will not restrict pickup locations to a shipping zone. Otherwise, you might prevent customers from picking up items in their desired location, such as near a vacation home.

Q: Can I remove my billing fields when pickup is selected?
A: This isn’t something that Local Pickup Plus supports by default since local pickup is connected to the shipping information for the order. Billing information is separate and is required by common payment methods, such as credit cards or PayPal. If you’re using a gateway that allows payment on pickup, it is the gateway’s responsibility to remove any unnecessary fields.

Q: Can customers set a pickup time for their appointment?
A: This isn’t currently possible, but if this feature is important to you, please let us know. In the meantime, we recommend asking for an estimated pickup time in the order notes.

Q: Can pickup locations be outside the United States?
A: Absolutely! You can designate pickup locations in any country where your products are sold.

Q: Why can’t I determine which products are available at a location when I require customers to choose only one pickup location?
A: When your Choosing Locations setting requires one location per order, you can’t set product availability by location due to the complexity of building, splitting, and merging packages when both the product’s pickup eligibility and its availability at a specific location is involved in determining which locations can be selected for the order.

Managing this complexity requires a more robust package handling system than is currently supported by WooCommerce. We’ve decided not to include this in the plugin at this time, since it would impact its compatibility with other shipping plugins, as Local Pickup Plus would need to take over for WooCommerce in the package handling process.

Contributing more to package handling within WooCommerce is on our radar, so if this is important to you, please let us know!

Q: I just upgraded to Local Pickup Plus version 2 – what’s changed?
A: When upgrading to Local Pickup Plus version 2, all pickup locations will update to use the new format. This shouldn’t cause any problems, but we recommend double-checking the locations’ country and state.

Please note that previous order data cannot be converted, as not enough information was stored in the order to use the new location format. While orders will retain legacy data, they can’t be upgraded for full support for pickup locations. As such, filtering by location will only work for new orders.

As category and product pickup availability are now more flexible (including availability per location), you may want to adjust your setup to leverage these new settings.

Troubleshooting ↑ Back to top

Local Pickup Not Showing in Manual Order ↑ Back to top

When manually adding local pickup details to an order in the WooCommerce admin area, you may notice that saved pickup details do not appear even after the order items table refreshes. This is normal and due to the way that WooCommerce styles this table. If you refresh the entire page, you’ll see the local pickup details appear as expected.

Shipping/Handling Methods Missing ↑ Back to top

Local Pickup Plus leverages WooCommerce core shipping zones, present since WooCommerce 2.6, to see if there are other shipping methods available, and forces pickup if there are no shippable methods on the site.

For plugins that are incompatible with WooCommerce 2.6 or do not leverage the core WooCommerce zones (such as XAdapter), this means that Local Pickup Plus is unaware of these other handling methods. As such, it will force pickup during checkout. In order to work with Local Pickup Plus, these plugins need to use a standardized ways of adding shipping methods to WooCommerce. As such, any plugin that doesn’t use core zones is incompatible with Local Pickup Plus.

Other Troubleshooting ↑ Back to top

Having difficulty with the plugin?

  • Please ensure your site meets the plugin requirements.
  • Check the FAQs to see if they address your question.
  • Have you disabled the WooCommerce core local pickup method for your store?
  • Seeing issues with geocoding or location sorting? Please double-check that your API Key is correct, then enable debug mode to log these requests.
  • Problems with the pickup location selector in the cart or during checkout? Please switch to a default theme (such as Twenty Seventeen) to rule out theme JavaScript issues.
  • If you’re experiencing a different issue, please contact the support team for assistance.

Questions & Support ↑ Back to top

Have a question before you buy? Please fill out this pre-sales form.

Already purchased and need some assistance? Please check out our troubleshooting tips and frequently asked questions for common issues or contact support via the help desk if you need more help.

WooCommerce - the most customizable eCommerce platform for building your online business.

Back to the top