

Settings: your shop pin with a radius zone, a drawn zone and a drive-time zone on the map.
ReachZone is for local shops that deliver themselves: bakeries, florists, restaurants, grocers, flower and furniture stores. Set up where you deliver, and the plugin does the rest.
What it does
606*, ranges such as 60601-60610, UK outward codes and Canadian FSAs).[reachzone_checker] shortcode. Shoppers see “We deliver here: 30 min, $4.99” or “Outside our delivery area” before they fill a cart.Paid plans (licence key): ReachZone API services
Paid plans add services that the ReachZone API provides. Nothing that runs inside your shop is locked.
A drive-time zone that was built stays on your site and keeps working, and you can edit its label, fee, minimum order, delivery time and shipping methods or delete it, on any plan. Only building or rebuilding the area needs a licence.
Licence keys are checked by the ReachZone API (see “External services”). Plans and prices: https://reachzone.app/pricing (the free version works without a key).
How the free version checks an address without sending it anywhere
A street address cannot be turned into a map position without a geocoding service. The free version therefore never does that. Shoppers pass the check by sharing their browser location (they must click a button first), or by entering a postcode that one of your postcode zones covers. Shops that want street-address checking add a Pro (or higher) licence key, which switches on the ReachZone API (see “External services”).
Block checkout
Shipping-method filtering, fees and minimum orders work in the classic checkout. In the block checkout the plugin blocks the order through the Store API when the address is outside the zones. See the Frequently Asked Questions for the known limits.
This plugin works without any external service on the free plan, apart from loading map tiles in the WooCommerce admin screens that show a map (see “Map tiles”).
ReachZone API (only when a licence key is entered)
When you enter a licence key in WooCommerce > ReachZone, the plugin sends requests to the ReachZone API at the address in the settings (default https://api.reachzone.app). The service is provided by ReachZone; terms of service: https://reachzone.app/terms and privacy policy: https://reachzone.app/privacy.
What is sent and when:
/v1/geocode): the address text and a two-letter country code. Sent when a shopper uses the address field in the delivery checker, when a shopper’s shipping address is checked at checkout, and when you press “Find on map” for your own shop address in the settings./v1/license/activate, /v1/license/status, /v1/license/deactivate): your licence key and this shop’s web address. The service stores the web address only as a keyed hash, to count how many sites use a key. Sent when you save a key, again at most twice a day by a background task, and once (best effort) when the plugin is uninstalled. If the service cannot be reached the plugin keeps the last answer for 7 days and then behaves like the free plan./v1/isochrone): the latitude and longitude of your shop, the minutes and the travel mode. Sent once when you save a drive-time zone; the result is stored on your site./v1/demand/events, /v1/demand/cells; Business and Agency plans, opt-in, off by default): only when you have a Business or Agency key and tick “Unserved-demand map” in WooCommerce > ReachZone. When a shopper’s lookup falls outside every delivery zone (in the checker, or at checkout), your site stores the position rounded to about 100 metres, the date and whether it came from the “checker” or the “checkout”. A background task sends up to 500 of these entries per hour to the service and then deletes them from your site; entries that could not be sent are deleted after 7 days. What is sent: the rounded latitude and longitude, the date and the source, nothing else (no address, postcode, IP address, name, shopper identifier or order). The service keeps the entries for 180 days and uses them only to draw your map and count your monthly quota. When you open WooCommerce > Unserved demand, your server fetches the map’s cells and total from the service (/v1/demand/cells) and shows them. Turning the option off, or losing the plan, stops sending and empties the queue on your site. Terms of service: https://reachzone.app/terms and privacy policy: https://reachzone.app/privacy.Who handles the data behind the API. The ReachZone API runs on a server operated by Hetzner Online GmbH in Helsinki, Finland (EU). Requests reach it through Cloudflare’s network, which delivers and protects it. To answer geocoding and drive-time requests, the API passes the address text and country code, or the shop’s position, minutes and travel mode, to the map-data provider Geoapify (KEPTAGO LTD, Cyprus) on its EU servers; Geoapify keeps request logs for no more than 24 hours. Geoapify terms: https://www.geoapify.com/terms-and-conditions/ and privacy policy: https://www.geoapify.com/privacy-policy/. Cloudflare privacy policy: https://www.cloudflare.com/privacypolicy/.
ReachZone does not store the address text. It keeps a keyed hash of the address with the position found for 90 days, separately for each licence, so repeat lookups are answered without asking Geoapify again. All data for a licence is deleted within 30 days after the licence ends. For shopper data the shop is the controller and ReachZone acts as its processor, under the data processing terms: https://reachzone.app/dpa.
Nothing is sent to the API without a licence key, and demand data only after you switch the opt-in on. There is no analytics, tracking or update ping in this plugin.
Map tiles (settings screen and unserved-demand screen only)
The zone editor and the unserved-demand heat map in the WordPress admin show a map. The map background comes from the ReachZone tile service at https://tiles.reachzone.app (map data from OpenStreetMap, served as a Protomaps basemap, hosted on Cloudflare). The map drawing code is bundled with the plugin; nothing is loaded from a CDN.
What is sent and when: only while a logged-in administrator has one of those two screens open, the browser requests map tiles from the tile service. A request contains the tile coordinates (zoom, column and row, which show roughly which part of the world is on screen), and, as with any web request, the administrator’s IP address and the browser’s standard headers such as the address of the admin page (referrer) and user agent. Neither the plugin nor ReachZone adds cookies or identifiers, and no shop data, address, order or licence key is sent. ReachZone does not log or analyse these requests; Cloudflare, which hosts the tile service, processes them as part of its normal operation (for example for caching and abuse protection).
The delivery checker and the checkout shoppers see do not load a map and make no tile request.
You can change the tile address under WooCommerce > ReachZone > Map tiles, for example to your own raster tile server (an address with {z}, {x} and {y}). Then your browser contacts that server instead and its terms apply. Terms of service: https://reachzone.app/terms and privacy policy: https://reachzone.app/privacy. Cloudflare privacy policy: https://www.cloudflare.com/privacypolicy/. Map data credit: (c) OpenStreetMap contributors, https://www.openstreetmap.org/copyright; basemap by Protomaps, https://protomaps.com.
Suggested text for your privacy policy (free plan): “We check the address or postcode you enter, or the location you choose to share, against our delivery area on our own website. The delivery checker does not store the address.”
With a licence key, add: “To check a street address, we send the address and its country (never your name, email or order) to ReachZone, our delivery-area provider, which finds its position on the map with its map-data provider Geoapify in the EU. ReachZone keeps only a scrambled form of the address and the position found, for up to 90 days.”
If you turn on the unserved-demand map, also add: “If your address is outside our delivery area, we send ReachZone its position rounded to about 100 metres and the date, so we can see where to deliver next. ReachZone keeps these for 180 days.”
ReachZone’s data processing terms for shops on a paid plan: https://reachzone.app/dpa.
Bundled in assets/vendor/, not loaded from any CDN. Licences in assets/vendor/LICENSES.txt.
The JavaScript files in this plugin are not minified or built, except leaflet-heat.js, whose source is at the link above.