Local pickup for WooCommerce lets your customers collect their order in person instead of having it shipped. When a shopper chooses pickup at checkout, CheckoutWC hides every shipping field, drops the shipping cost, and shows them where to collect and when it will be ready. It is the same click and collect experience shoppers expect from larger retailers, running on your own store.
Local Pickup is available to Plus, Pro and Agency licence holders.
Here’s a quick demo of it in action:
What your customers see
Once local pickup is set up, shoppers choose between delivery and pickup at the top of checkout. The moment they select pickup:
- The shipping address fields are hidden, so there is nothing irrelevant to fill in
- The shipping total is relabelled Pickup
- The address review at the top of the payment screen changes to Pick up in store
- The shipping method step is either hidden (recommended) or renamed to Pickup
- Your pickup address, estimated ready time and collection instructions are shown in their place
After the order is placed, the pickup details also appear on the thank you page and in the order confirmation, so the customer has the address and instructions to hand without coming back to your site.
Before you start
- Turn off “Hide shipping costs until an address is entered” in WooCommerce > Settings > Shipping > Shipping options. Leaving it on can stop a shopper matching a shipping zone until they have entered an address, which a pickup customer never does.
- You do not need to create a pickup shipping method by hand. From CheckoutWC 9.0 onwards, an ad hoc local pickup method is added to each of your shipping zones automatically. You can still configure your own if you prefer, and there is an important caveat if you do, covered under Local Pickup Shipping Methods below.
Step 1: enable local pickup
Go to WP Admin > CheckoutWC > Local Pickup and tick Enable Local Pickup on the Settings tab.
This master setting is off until you switch it on. Adding pickup locations on its own will not put a pickup option at checkout, so if you have added locations and nothing is appearing for customers, start here.
Step 2: add your pickup locations
Still under WP Admin > CheckoutWC > Local Pickup, open the Manage Pickup Locations tab and add at least one location using the Add Pickup Location button.
Each location has four fields:
- Title: The name of the location, shown to customers. Example: Tiffany’s – Times Square
- Address: Where customers should go to collect their order
- Estimated Pickup Time: How long a customer should expect to wait before their order is ready
- Pickup Instructions: Anything the customer needs to know to collect the order. This is shown on the thank you page as well as at checkout. Example: Please wait for an email confirming your order is ready. Once you arrive, head to the customer service desk. Opening hours are 8am to 5pm, Monday to Friday.
You can add as many locations as you like. If you have more than one, see Offering more than one pickup location below.
Settings reference
All of these live on the Settings tab of CheckoutWC > Local Pickup.
- Enable Local Pickup: The master switch covered in step 1.
- Enable Shipping Option: Shows the delivery versus pickup choice at checkout. Turn this off if you only offer pickup and never ship.
- Shipping Option Label: Changes the wording of the delivery choice. Default is Ship.
- Local Pickup Option Label: Changes the wording of the pickup choice. Default is Pick up. Stores outside the US often prefer Click and collect or Collect in store.
- Enable Pickup Step: Adds a dedicated checkout step for choosing a location. Turn this on if you have more than one pickup location, or if a third party plugin adds its own pickup options that customers need to choose between.
- Hide Pickup Methods: Hides your pickup shipping methods from customers who have chosen delivery, so they only ever see genuine shipping rates.
- Local Pickup Shipping Methods: Which of your shipping methods CheckoutWC should treat as pickup. These are hidden from customers who choose Ship, and if you use Enable Pickup Step they are the only options shown at that step.
- Choosing Other reveals an Other Shipping Method field, for naming a method that is not in the list. This is mainly for pickup options that come from an API rather than being defined in your shipping zone.
- Enable Regex matches the Other field as a regular expression, so one entry can match several methods. Example:
.*pickup.*
Important: if you set Local Pickup Shipping Methods yourself, you must select a method for every shipping zone, including Rest of the World.
The reason is worth knowing, because it explains a confusing symptom. CheckoutWC’s automatic pickup method only steps in while Local Pickup Shipping Methods is empty. As soon as you name your own methods, that safety net is gone and pickup depends entirely on the methods you chose being available in the zone the customer’s address matches. Miss a zone and pickup breaks for those customers only, which looks random until you line the failures up against your zones.
Offering more than one pickup location
Add each location under Manage Pickup Locations, then turn on Enable Pickup Step. Customers will get a step at checkout listing your locations, with the address and estimated ready time for each, so they can pick the one that suits them.
With a single location you can leave Enable Pickup Step off. The one location is selected automatically and the customer sees its details without an extra step to click through.
Adding pickup time slots
Local Pickup covers where and roughly when an order will be ready. If you need customers to book a specific collection slot, our Order Delivery add-on handles date and time selection, and it is included with Pro and above at no extra cost.
Order Delivery is not installed automatically with your Pro licence. You will be emailed a code to redeem on kestrelwp.com, and completing that free order is what generates your licence key. The key then appears in your account on the API Downloads tab, which is separate from the usual Downloads tab. If you already installed a copy from the WooCommerce marketplace, replace it with the build from your kestrelwp.com account, otherwise the licence field will not appear.
Troubleshooting
There is no pickup option at checkout
Check these in order:
- Enable Local Pickup is ticked on CheckoutWC > Local Pickup. It is off by default.
- At least one pickup location exists on the Manage Pickup Locations tab.
- Enable Shipping Option is on, if you want customers to see a delivery versus pickup choice rather than pickup only.
- The cart contains something shippable. A cart of virtual or downloadable products has no shipping step for the pickup choice to appear in.
Pickup works for some customers but not others
This is almost always shipping zones, and it is the symptom the warning above is about. Line up the failing orders against your WooCommerce shipping zones rather than looking at browsers or devices, because the split will follow postcodes. If you have set Local Pickup Shipping Methods manually, confirm a pickup method is enabled in every zone those customers match, including Rest of the World. Clearing the Local Pickup Shipping Methods setting entirely is the quickest way to test, since CheckoutWC then supplies its own pickup method to every zone.
“No shipping method has been selected” when pickup is clearly selected
Same cause as above. Pickup is not a shipping method in its own right, it selects one of your existing methods behind the scenes. If no pickup capable method is available for that customer’s address, checkout shows pickup as chosen while nothing is actually selected underneath, and WooCommerce refuses the order at submission. Fix the zone coverage and the error goes away.
Shipping address fields are still showing after choosing pickup
Another plugin is adding them back after CheckoutWC hides them. Look for anything that customises checkout fields, then deactivate it and retest. Address field plugins and multi step checkout add-ons are the usual culprits.
A third party pickup option is not being recognised
Delivery slot and store locator plugins often register their own shipping method, which CheckoutWC will not treat as pickup unless you tell it to. Find the exact method name in WooCommerce > Settings > Shipping, then add it under Local Pickup Shipping Methods > Other.
If the plugin creates several similarly named methods, turn on Enable Regex and match them with one pattern.
Customers choosing delivery can see the pickup method as a shipping rate
Turn on Hide Pickup Methods, which removes your pickup methods from the rates shown to shoppers who chose to ship.
Showing pickup details elsewhere
The simplest way to display the selected pickup location is this shortcode, which works anywhere the order is in context, such as a custom thank you page or an order email template:
[cfw_order_pickup_location_info]
For developers
Pickup locations are a custom post type with the slug cfw_pickup_location. The location name is the post title, and the remaining fields are post meta:
cfw_pl_address— the addresscfw_pl_estimated_time— the estimated ready timecfw_pl_instructions— the pickup instructions
When an order is placed, the chosen location is stored on the order as _cfw_pickup_location, holding the post ID of the location.
Three filters and actions are useful when customising the flow:
cfw_pickup_instructions_text— filters the instructions before they are output, so you can vary them per ordercfw_delivery_method_changed— fires when a customer switches between delivery and pickup, for hooking your own logic onto the changecfw_local_pickup_disable_shipping_option— removes the delivery choice conditionally, for example on products that can only ever be collected
If you are on the Basic plan
CheckoutWC’s local pickup features start at Plus. If all you need is a single collection point, WooCommerce includes its own Local Pickup shipping method, which you can add under WooCommerce > Settings > Shipping and which displays at CheckoutWC’s checkout like any other shipping rate.
What Plus adds on top is the experience around it: the delivery versus pickup choice, automatically hiding the shipping address fields, multiple named locations with their own addresses and ready times, collection instructions carried through to the thank you page, and a dedicated step for choosing between locations.