Drupal store locator
A Drupal store locator without a contributed module.
Add the locator as a block using a text format that permits raw HTML. No contributed module to evaluate, patch or carry through a major version upgrade.
- 7-day trial
- No card required
- From $19/month
Real widgetA real locator capture. This version suits a dealer or branch network on Drupal, where the locator has to answer which location handles a particular service. Open the full-size example to search it. Northwind Cycles is an invented concept brand using sample data.
Built around the search
A Drupal store locator built around what a visitor is trying to do.
Distance is rarely the only question. Give someone enough to choose a useful location before they leave the page.
- 01
Nothing to maintain in your codebase.
A hosted widget means no module in your dependency tree and nothing to review at the next Drupal upgrade.
- 02
Filter by service, not only distance.
Categories become filters, so a visitor finds the nearest branch that does the thing they actually need.
- 03
Place it like any other block.
Assign it to the regions and pages you want using the placement rules you already use.
Search and discovery
A visitor finds the nearest useful location without scanning the whole list.
The locator opens, the visitor types a town or postcode, and results reorder by distance. Search, filters, labels and layout are settings you control, not fixed behaviour.
Start with the spreadsheet you already maintain. Import a CSV, review the locations, then keep the same embed as the list changes.
North Loop Cycles
1.2 mi · Open until 6:00
Eastside Bike Works
2.8 mi · Open until 7:00
Hill Country Service
4.6 mi · Opens tomorrow
Search stage: Austin locations are filtered to repair shops, sorted by distance, and the nearest result offers directions.
Install on Drupal
Add the Drupal store locator once.
Handled is a hosted widget rather than a Drupal-specific extension. Copy the generated embed from the dashboard and place it where the locator should appear.
Full HTML block or field
<div id="biz-locator-root"></div>
<script src="https://cdn.handledlocal.com/widget.js"
data-site-id="your-site-id" async></script>Three steps to publish
- 1Create a Custom Block, or edit the page body, using a text format that permits raw HTML.
- 2Switch to the source view and paste the embed code.
- 3Save and place the block, then open the page as an anonymous visitor to verify it.
The practical questions
What changes after the trial?
Keep the design, locations and embed. Choose a plan based on location count and team seats. Your map usage remains on the Mapbox or Google account you control.
Compare plans- Starter
- $19/mo
- 200 locations
2 team seats
Every working feature - Pro
- $39/mo
- 2,000 locations
5 team seats
Every working feature - Business
- $79/mo
- 10,000 locations
20 team seats
Every working feature
Before you choose
Questions buyers ask about this setup.
- Do I need a plugin or an app for Drupal?
- No. Handled is a hosted locator you embed in a page. There is nothing to install into Drupal, nothing to keep updated, and nothing that can conflict with the rest of your site.
- Will my Drupal styles break the locator?
- No. The widget renders in an isolated root so page CSS and widget CSS cannot collide in either direction. You set its colours, type, spacing and corners in Handled so it still matches the surrounding CMS.
- Can visitors filter as well as search?
- Yes. Categories on your locations become customer-facing filters, alongside search by town or postcode and sorting by distance.
- Who pays for the map traffic?
- You connect your own Mapbox or Google Maps key and that provider bills usage directly. The Handled subscription covers the locator, location capacity and team seats.
Turn your location list into a Drupal store locator.
Start from the design above, import a sample of your real locations, and see it on your own page before paying.
7-day trial · No card required · Keep the same embed when you publish
Using a different platform?
The same locator, with the install steps for each.