- Overview
- Setting Up Store Locations
- Store Pickup Settings
- Shipping Methods for Store Pickup
- Customer Store Locations
- Managing Orders with Store Pickup
- API Integration
- Rule Engine
- Import/Export
- Front End: User Edit
- One Page Checkout
- One Page Checkout - Shipping Custom Fields
- Order Confirmation Page Merge Codes
- Email Merge Codes
Overview
The store locations and store pickup feature allows businesses to manage and display physical store locations, enabling customers to choose in-store pickup options during checkout. This guide covers setting up store locations, configuring store pickup, and integrating these features with your e-commerce platform.
Setting Up Store Locations
Note: If you're on a feature-based plan, this is only available with the Enterprise and Enterprise Plus plans.
To set up locations, navigate to Settings > Shipping > Store Locations. From here, you can add or edit store locations.
When adding a location, ensure that the latitude and longitude are included if the Show Distance to Store option is enabled for One Page Checkout. These coordinates can be auto-filled via Google Autocomplete or manually entered using Google Maps.
- Required Fields: Store name, assigned store, address line 1, city, state, country, and postal code (for tax calculations).
- Optional Fields: Sort order, which affects the display order on One Page Checkout if distances are not used.
Store Pickup Settings
Configure the settings by navigating to Settings > Shipping > General under the Store Pickup Options card. Here are some important configurations:
- Enable Store Pickup: Allows store locations to appear during One Page Checkout and order edits.
- Show Distance to Store: Displays stores sorted by proximity to the customer based on their latitude and longitude. If not enabled, store locations will be sorted by sort order and name.
- Number of Store Locations to Show: Limits the number of store locations in the dropdown or search tool. Setting this to 0 shows all locations.
- Distance Unit: Choose between miles or kilometers (default: miles).
- Store Pickup Instructions: Custom text to display during order confirmation and emails using the ##STOREPICKUPINSTRUCTIONS## merge code.
Shipping Methods for Store Pickup
After setting up store locations, create custom shipping methods by navigating to Settings > Shipping > Custom Shipping Methods.
When the Store Pickup Method option is selected on a custom shipping method, it will only display when store pickup is selected during checkout or order edits. Also, only shipping methods flagged as Store Pickup Method will appear for store pickup. Other provider shipping methods will be hidden when using store pickup.
Customer Store Locations
Customers can have specific store locations assigned to them. This is done on the Customer > Edit page under the Assigned Store Locations section. If a customer has at least one assigned store, only those stores will appear on One Page Checkout.
- Ship to Store Only: When enabled, the customer can only choose store pickup at checkout, hiding the shipping address option.
Managing Orders with Store Pickup
- Store pickup details appear in the Store Location column of the order list (Orders > Orders) if store pickup was used for the order. You can also filter orders by store location using Advanced Search.
- On the order edit page, (Orders > Orders > Edit) when Enable Store Pickup is activated, radio buttons appear to toggle between shipping address and store pickup. Selecting store pickup allows the user to choose a location from a dropdown, with fields for customer name and phone number. First and last name are required.
- On the View Order page, (Orders > Orders > View) there is a label reading Store Pickup: followed by the store location name, if store pickup was used.
API Integration
The API supports viewing, editing, creating, and deleting store locations under the store_locations endpoint: /api/v1/store_locations
Store Location IDs can also be used in orders via the StoreLocationAddress endpoint to create an order address from a store location ID. The store location ID is required. Optional fields are customerID, first name, last name, and phone. These fields can also be set on the order address after it has been created. Note: If the customer ID is set, the name and phone number from that customer will be used. If the first name, last name or phone number fields have values, those will be used to fill in those fields on the address instead of the customer’s name and phone number.
Additionally, Customer Store Locations are available as a collection on the customer API, allowing for direct customer-to-store location assignments and management.
Rule Engine
The Order Location ID is available as a condition in the Rule Engine, allowing you to create custom rules based on store pickup locations.
Import/Export
Store Locations can be easily imported or exported to streamline the setup of multiple locations or to back up your existing configuration. Tools > Data Import/Export > Store locations
Front End: User Edit
When using company associations, the Ship to Store Only setting is available in the customer account user edit page, allowing users to restrict orders to store pickup only. Additionally, store locations can be assigned or removed from users. The search tool will display available store locations based on the current store.
Here are layout examples for implementing this feature:
<div class="shiptostoreonly col-sm-6 mb-1">
$$SHIPTOSTOREONLYTEXT$$
$$SHIPTOSTOREONLYCHECKBOX[class=form-check]$$
</div>
Example layout for Store Location Search Tool and Grid:
<ac:visibilityarea id="dvStoreLocationsArea">
<div class="storelocations col-sm-12 mb-1">
Store Location Search $$STORELOCATIONSSEARCH$$
</div>
<div class="col-sm-12 mb-1">
<table class="StoreLocationsTable" width="100%" border="0" cellpadding="3"
cellspacing="0">
<ac:layoutarea id="StoreLocationsHeader">
Assigned Store Locations
<tr class="StoreLocationsHeader">
<th>
<span class="StoreLocationsName">Name</span>
</th>
<th>
<span class="StoreLocationsName">Address</span>
</th>
<th>
<span class="StoreLocationsRemove">Remove</span>
</th>
</tr>
</ac:layoutarea>
<ac:layoutarea id="StoreLocationsList">
<tr class="StoreLocationsItem">
<td>
<span class="StoreLocationsName">$$STORELOCATIONNAME$$</span>
</td>
<td>
<span class="StoreLocationsName">$$STORELOCATIONADDRESS$$</span>
</td>
<td>
<span class="StoreLocationsRemove">$$STORELOCATIONREMOVE$$</span>
</td>
</tr>
</ac:layoutarea>
</table>
</div>
</ac:visibilityarea>
One Page Checkout
For troubleshooting the One Page Checkout, ensure that the Enable Store Pickup setting is turned on for the store pickup option to display during checkout. If this is not enabled, the store pickup radio buttons and related areas will remain hidden. In cases where no shippable items or subscriptions are present in the cart, store pickup will also be hidden.
Only shipping methods marked as Store Pickup Method will display when customers choose store pickup. You will also need to ensure the following merge codes and layout areas are included in your theme. To edit your theme's checkout page, navigate to Themes > Edit > Pages > Checkout and Order > One Page Checkout > HTML Editor.
Note: Make sure this is outside the layout area for Shipping address area:
<ac:visibilityarea id="StorePickupArea">
<div class="checkoutShipping row">
<div class="col-sm-12">
<ac:layoutarea id="OnePageCheckoutStorePickupArea">
$$STOREPICKUPTEXT$$
$$STORELOCATIONSDROPDOWN$$
<ac:visibilityarea id="StoreLocationInformation">
<div class="row">
<div class="col-sm-6 p-2">
<div>Store name:</div>
<div>$$STORELOCATIONNAME$$</div>
</div>
<div class="col-sm-6 p-2">
<div>Address</div>
<div>$$STORELOCATIONADDRESSLINE1$$ $$STORELOCATIONADDRESSLINE2$$
<br>
$$STORELOCATIONCITY$$, $$STORELOCATIONSTATE$$ $$STORELOCATIONCOUNTRY$$ $$STORELOCATIONZIPCODE$$
</div>
</div>
<div class="col-sm-6 p-2">
<div>Info:</div>
<div>$$STORELOCATIONNOTES$$</div>
</div>
<div class="col-sm-6 p-2">
<div>Phone:</div>
<div>$$STORELOCATIONPHONE$$</div>
</div>
<div class="col-sm-6 p-2">
<div>Distance:</div>
<div>$$STORELOCATIONDISTANCE$$</div>
</div>
</div>
</ac:visibilityarea>
</ac:layoutarea>
</div>
</div>
</ac:visibilityarea>
One Page Checkout - Shipping Custom Fields
There is a new custom field area to allow shipping-specific custom fields to be shown when using store pickup. The setting Show Shipping Custom Fields Separate From Shipping Address on the One Page Checkout theme page will need to be enabled for the merge codes and layout area to work. To locate the setting, navigate to Themes > Edit > Pages > Checkout and Order > One Page Checkout > Basic Settings. The custom fields area attached to the shipping address will not show when this setting is enabled. This only needs to be set up if the following is true:
- You're using shipping specific custom fields
- Those fields are required OR they are optional, but you want them to show under store pickup.
Note: Make sure this is outside the layout area for Shipping address area.
To edit your theme's checkout page, navigate to Themes > Edit > Pages > Checkout and Order > One Page Checkout > HTML Editor.
<ac:visibilityarea id="ShippingCustomFieldsArea">
<ac:layoutarea id="OnePageCheckoutShippingCustomFields">
<div class="checkoutShippingCustom-field custom-fields-row row row-cols-auto m-0 col-12 mb-0 field">
$$CUSTOMFIELDCONTROL[class=form-control]$$
<label class="p-0">$$CUSTOMFIELDLABEL$$</label>
<span class="col-12">$$CUSTOMFIELDERROR$$</span>
</div>
</ac:layoutarea>
<span class="checkoutShippingCustom-error">$$SHIPPINGCUSTOMFIELDVALIDATIONERRORS$$</span>
</ac:visibilityarea>
Order Confirmation Page Merge Codes
The following merge codes have been added for the order confirmation page to display store pickup details:
- $$STORELOCATIONNAME$$
- $$STORELOCATIONADDRESSLINE1$$
- $$STORELOCATIONADDRESSLINE2$$
- $$STORELOCATIONCITY$$
- $$STORELOCATIONSTATE$$
- $$STORELOCATIONCOUNTRY$$
- $$STORELOCATIONZIPCODE$$
- $$STORELOCATIONPHONE$$
- $$STORELOCATIONDESCRIPTION$$
Email Merge Codes
These merge codes are used in emails related to orders that involve store pickup. If there is no store location information, the merge codes will return an empty string.
- ##STORELOCATIONNAME##
- ##STORELOCATIONPHONE##
- ##STORELOCATIONDESCRIPTION##
- ##STORELOCATIONADDRESSLINE1##
- ##STORELOCATIONADDRESSLINE2##
- ##STORELOCATIONCITY##
- ##STORELOCATIONSTATE##
- ##STORELOCATIONCOUNTRY##
- ##STORELOCATIONZIPCODE##