Location & delivery
Route: /org/ecom/storesettings?tab=location · Permission: Manage Store Settings
1. What this section covers
"Manage your service area and delivery radius settings." It is the largest section in Store Settings, and the one that most directly changes what a shopper can do: which fulfilment methods appear at checkout, and what they cost.
Four independent decisions:
| Decision | Toggle | Effect at checkout |
|---|---|---|
| Can customers collect? | Enable Pickup | Pickup appears as a fulfilment option |
| Do you deliver? | Enable Delivery | Delivery appears |
| Do you charge for it? | Enable Shipping | A fee is calculated |
| How far ahead can they order? | Preorder Timing | Constrains preorder dates |
Enable Delivery decides whether delivery is offered. Enable Shipping decides whether it is charged for. Delivery on with shipping off is a valid, common configuration — free delivery — and it is not a misconfiguration.
2. How it reaches the shopper
3. Configuring it — step by step
Step 1 · Place the store
An OpenStreetMap picker sets the store's position. Until one is chosen it reads No location selected. Beneath it: Latitude, Longitude and Map Zoom, all editable directly.
Step 2 · Decide on pickup
Enable Pickup — "Customers collect from store." With it on, Pickup Instructions is shown to the customer.
Step 3 · Decide on delivery
Enable Delivery — "Shipping services." Then:
| Field | Meaning |
|---|---|
| Free Delivery Radius (km) | Distance within which delivery costs nothing |
| Serviceable Zip Codes | An allow-list, added one at a time (Enter zip code) |
Treat the allow-list as authoritative once it has a single entry: a postcode that is not on it is not serviceable. Adding the first zip code is therefore a bigger change than it looks — it converts an open service area into a closed one.
Verify against a real address before and after adding the first entry.
Step 4 · Price the delivery
Enable Shipping — "Charge a delivery fee based on distance or a flat rate."
| Setting | Values |
|---|---|
| Pricing model | Distance-based · Flat rate |
| Distance unit | Kilometre (km) |
| Free shipping over a threshold | "Waive the fee when the order subtotal is high enough." |
Step 5 · Test it with the live preview
Live preview takes a distance and an order value and shows the resulting Shipping fee, or Outside shipping range.
It exists to prove the pricing model behaves as intended before customers meet it. Use it to check the two boundaries that matter: just inside and just outside the free-delivery radius, and just under and just over the free-shipping threshold.
Step 6 · Set preorder timing
Preorder Timing → Minimum advance days constrains how soon a preorder may be requested.
4. Field reference
| Field | Control | Shown when | Notes |
|---|---|---|---|
| Map picker | OpenStreetMap | Always | Reads No location selected when unset |
| Latitude / Longitude | Number | Always | Editable independently of the map |
| Map Zoom | Number | Always | The zoom the storefront map opens at |
| Enable Pickup | Toggle | Always | "Customers collect from store." |
| Pickup Instructions | Textarea | Pickup on | Shown to the customer |
| Enable Delivery | Toggle | Always | "Shipping services." |
| Free Delivery Radius (km) | Number | Delivery on | |
| Serviceable Zip Codes | Tag list | Delivery on | Enter zip code, added one at a time |
| Enable Shipping | Toggle | Always | Charging, not offering |
| Pricing model | Select | Shipping on | Distance-based · Flat rate |
| Distance unit | Select | Distance-based | Kilometre (km) |
| Free shipping over a threshold | Toggle + amount | Shipping on | Waives the fee above a subtotal |
| Live preview | Distance + order value | Shipping on | Not persisted |
| Minimum advance days | Number | Always | Preorder constraint |
5. The admin contract
| Prerequisite | Without it |
|---|---|
| Manage Store Settings | Read-only |
| A store location | Distance-based pricing has no origin to measure from |
| At least one fulfilment method | Checkout has nothing to offer |
| A currency on the project | Fees have no symbol |
The fee is a function of distance from the store. With no location set, there is nothing to measure from — configure the map before choosing the distance-based model.
6. Downstream
| Setting | Consumer |
|---|---|
| Pickup / Delivery toggles | The checkout fulfilment selector |
| Radius, zip codes | Whether an address is deliverable |
| Pricing model, threshold | The shipping fee on the order |
| Preorder timing | Preorder requests |
| Store location | The storefront map |
7. Don't confuse this with…
| Thing | Where | Why |
|---|---|---|
| Enable Delivery | Here | Whether delivery is offered |
| Enable Shipping | Here | Whether it is charged for |
| Free Delivery Radius | Here | Distance-based waiver |
| Free shipping over a threshold | Here | Value-based waiver |
| Project locations | Project Details | Where the team works, not where the store delivers |
8. Troubleshooting
| Symptom | Cause |
|---|---|
| No fulfilment option at checkout | Both Pickup and Delivery are off |
| Every address is "not serviceable" | The zip-code allow-list excludes it |
| Shipping fee is always zero | Shipping is off, or the order is inside the free radius or over the threshold |
| Outside shipping range in the preview | Beyond the configured range — the model is working |
| Distance pricing returns nothing | No store location set |
| Preview values vanished | It is a sandbox and is not persisted |
Related
- Payment gateways — the other half of checkout
- Checkout — what the shopper sees