How it works
How Nearby reads inventory from Shopify, ranks locations by distance, renders the map, and what each plan unlocks.
Nearby has two halves: an embedded admin app where you manage locations and appearance, and a product-page widget on your storefront. This page explains what each one does and how they stay in sync.
The product-page widget
The widget is a Shopify Theme App Extension block you place on your product template. When a shopper opens a product, the widget asks Nearby which of your locations have that product in stock and where they are, then renders them nearest-first.
Requests from the storefront go through Shopify's App Proxy, so they're same-origin with your shop — there's no third-party script call, no CORS, and each request is signed and rate-limited.
Live inventory from Shopify
Nearby never invents stock numbers. On install it imports your products, locations, and stock levels, then subscribes to Shopify webhooks so it stays current:
inventory_levels/update— stock moves at a locationproducts/update— a product or its variants changelocations/update— a location is added, edited, or deactivatedorders/create— used for verified in-store ROI analytics (Growth)
Because the widget reads back this synced data, a location only shows "in stock" when Shopify says it is. On Starter and up you can set a stock buffer so a location is treated as out a few units early, to avoid promising the last one.
Distance and the map
Each location is geocoded from its address to a latitude/longitude. The widget orders locations by distance from the shopper (or from a location they search for) and plots the in-stock ones on a map.
- Free shows a compact, list-style widget with distances and directions — no map.
- Starter and up show the full interactive map, rendered with MapLibre and MapTiler tiles.
- Growth can switch the map to Google Maps, paste a custom MapLibre style.json, and add drive-time routes (via OpenRouteService) instead of straight-line distance.
Opening hours and CTAs
On Starter and up, each location can carry opening hours, and the widget shows an "open now" badge based on the current time. Calls-to-action escalate by plan:
- Free — directions
- Starter — directions + a contact CTA
- Growth — pickup / buy-online, reserve, and back-in-stock alerts when a location is out
What each plan unlocks
Plans are cumulative — each tier includes everything below it.
| Capability | Free | Starter | Growth |
|---|---|---|---|
| Real-time in-stock widget | ✓ | ✓ | ✓ |
| Directions | ✓ | ✓ | ✓ |
| Google Business Profile import | ✓ | ✓ | ✓ |
| Full interactive map | ✓ | ✓ | |
| Full theming + remove branding | ✓ | ✓ | |
| "Open now" hours + contact CTA | ✓ | ✓ | |
| Stock buffer | ✓ | ✓ | |
| Pickup & buy-online | ✓ | ||
| Drive-time routes | ✓ | ||
| Google Maps + custom map styles + custom CSS | ✓ | ||
| Reserve + back-in-stock alerts | ✓ | ||
| Intent, ROI & out-of-stock analytics | ✓ | ||
| Locations shown | 3 | 25 | Unlimited |
See Billing for prices, and the Settings reference for every control.