Local Pickup

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 the shipping address fields, adds no shipping charge by default, and shows them where to collect and roughly 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 (compare plans).

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 choice shows when the cart needs shipping and both a shipping rate and a pickup method are available. The moment they select pickup:

  • The shipping address fields are hidden, so there is nothing irrelevant to fill in
  • Your pickup locations are listed with each one’s name, address and estimated ready time, and the first location in your display order is preselected. With Enable Pickup Step on, the list appears on the shipping step instead.
  • The shipping total is relabelled Pickup
  • The shipping address review on the payment screen is relabelled Method and shows your pickup option label (Pick up by default), the location name and its address
  • The continue button reads Continue to pickup
  • The shipping method step is skipped, unless you turn on Enable Pickup Step, in which case it is shown and labelled Pickup

Collection instructions are not shown at checkout. After the order is placed, CheckoutWC’s thank you page shows a Pickup instructions section with your instructions and the address, linked to Google Maps directions, and by default the same details are added to the order emails, so the customer has them to hand without coming back to your site. In your admin, the WooCommerce orders list has a Pickup Location column and the order’s edit screen shows the location under the shipping address, so you can see at a glance which orders are for collection.

Before you start

  1. You do not need to change “Hide shipping costs until an address is entered” in WooCommerce > Settings > Shipping > Shipping options. CheckoutWC overrides that setting while it is active, so leaving it on will not stop pickup customers, who never enter a shipping address, from seeing pickup.
  2. You do not need to create a pickup shipping method by hand. While Local Pickup Shipping Methods is empty, CheckoutWC adds its own free pickup method that does not depend on your shipping zones. 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, and the other settings on the tab only appear once it is 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, plus a display order:

  • 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. You choose from a list: ready in 1 hour, 2 hours, 4 hours, 24 hours, 2-4 days or 5+ days. It is shown next to the location at checkout.
  • Pickup Instructions: Anything the customer needs to know to collect the order. This is shown on CheckoutWC’s thank you page and, by default, in order emails, not 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. To control the order they are listed in at checkout, set the Order field in the location’s Attributes box: lower numbers are listed first, and locations with the same number are listed newest first. The first location in that order is the one preselected for customers. The Pickup Locations list has a matching Order column you can sort by, and it is sorted in checkout order to begin with. If you have more than one location, 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. The settings below appear once it is on.
  • Enable Shipping Option: Shows the delivery versus pickup choice at checkout. Turn this off if you only offer pickup and never ship. CheckoutWC also hides the delivery choice by itself when every shipping rate available to a customer is a pickup method.
  • 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: When a customer chooses pickup, shows the shipping method step, which is skipped otherwise. Turn this on if a third party plugin adds a pickup time slot or its own pickup options that customers need to choose between. You do not need it to offer more than one location, because locations are always listed.
  • Hide Pickup Methods: Only matters when Enable Pickup Step is on. It hides the list of pickup shipping methods on that step. Use it when you want the step but have only one pickup method, so customers are not shown a list with a single choice.
  • Local Pickup Shipping Methods: Which of your shipping methods CheckoutWC should treat as pickup. Leave it empty to use the built-in pickup method. When a customer chooses pickup, only these methods are offered. They are hidden from customers who choose Ship, and if you use Enable Pickup Step they are the only options shown at that step. WooCommerce’s classic Local Pickup shipping method and Local Pickup Plus are recognised as pickup automatically. Set your own methods if you charge for pickup, want a custom method name, or offer several pickup methods. Do not use several methods to represent several locations: that is what pickup locations are for.
    • Choosing Other reveals an Other Shipping Method field, for a method that is not in the list. Enter the label customers see for that shipping rate.
    • Enable Regex matches the Other field as a regular expression instead of an exact label. Example: .*pickup.*

Important: if you set Local Pickup Shipping Methods yourself, make sure every shipping zone a pickup customer could land in has a pickup method, either one you selected here or WooCommerce’s classic Local Pickup. That includes any Rest of the World zone you have created and the Locations not covered by your other zones fallback.

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. When a customer chooses pickup, checkout lists every location with its address and estimated ready time, and the customer picks the one that suits them. You do not need Enable Pickup Step for this. The first location in your display order is preselected, so put the one most customers use first.

With a single location, it is selected automatically and the customer sees its details without having to choose.

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:

  1. Enable Local Pickup is ticked on CheckoutWC > Local Pickup. It is off by default.
  2. At least one pickup location exists on the Manage Pickup Locations tab.
  3. A pickup method is available for the customer’s shipping zone. CheckoutWC hides the Pickup option when none of the shipping rates for the cart is a pickup method. See the next problem below.
  4. The cart contains something shippable. A cart of virtual or downloadable products has no shipping step for the pickup choice to appear in.

Customers only see Pick up, with no delivery option

Either Enable Shipping Option is switched off, or the only shipping rates available to that customer are pickup methods, in which case CheckoutWC hides the delivery choice by itself.

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 the Locations not covered by your other zones fallback. Clearing the Local Pickup Shipping Methods setting entirely is the quickest way to test, since CheckoutWC then uses its own pickup method, which does not depend on your shipping zones.

“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. Look at the rate label customers see for it at checkout, then add that label under Local Pickup Shipping Methods > Other.

If the label changes slightly, for example it includes a varying word, turn on Enable Regex and match it with a pattern.

Customers choosing delivery can see the pickup method as a shipping rate

CheckoutWC removes pickup methods from the rates shown to shoppers who chose to ship, but only the methods it recognises as pickup. If a method still appears, add it under Local Pickup Shipping Methods, or under Other if it is not in the list.

Showing pickup details elsewhere

CheckoutWC adds the pickup location, address and instructions to order emails for pickup orders by default. To place them somewhere specific in an email template instead, use this shortcode. When a template contains it, CheckoutWC does not add the details a second time:

[cfw_order_pickup_location_info]

The shortcode only produces output while an order email is being built, so it will not show anything on a page. CheckoutWC’s thank you page already includes a Pickup instructions section. To switch the email details off, return false from the cfw_show_pickup_location_in_email filter.

For developers

Pickup locations are a custom post type with the slug cfw_pickup_location. The location name is the post title, its display order is the post’s menu_order, and the remaining fields are post meta:

  • cfw_pl_address — the address
  • cfw_pl_estimated_time — the estimated ready time
  • cfw_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 order
  • cfw_delivery_method_changed — fires when a customer switches between delivery and pickup, for hooking your own logic onto the change
  • cfw_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, a list of locations for customers to choose from, and collection instructions carried through to CheckoutWC’s thank you page and, by default, order emails. See CheckoutWC pricing.