Contents
Roots MG sells and rents communities and homes — and in that market, the website is the inventory. Buyers search by map, drill into a single home or a whole community, and expect every one of those pages to load fast and rank. The problem: thousands of listings that change constantly, all of which need their own indexable page. Hand-building pages was never an option.
The brief
Build a map-driven search for both homes and communities on HubSpot CMS, where every home and every community gets its own dynamically generated, SEO-ready page — fed from a single source of truth, with no manual page creation, ever. It had to scale to the full inventory and survive constant data churn.
The data layer: HubDB
Everything runs off HubDB. Homes live in one table, communities in another, related by key. HubDB is the single source of truth: update a row, and the live home page, the community it belongs to, and both map searches reflect it — no republish, no rebuild. This is the piece that makes the whole system maintainable instead of a content-entry treadmill.
Dynamically generated pages
Each row becomes a page. HubSpot CMS dynamic pages render a single home view and a single community view from the corresponding HubDB row, with the community page pulling in its related homes. One template, thousands of unique, indexable URLs. Add a home in HubDB and its page exists — correctly linked to its community — within minutes.
The win isn’t the search UI. It’s that nobody ever builds a page. The data builds the pages.
Map search, powered by serverless functions
The homes map search and the communities map search are driven by HubSpot serverless functions. The map’s bounding box and zoom go to a serverless endpoint as a location parameter; the function queries HubDB and returns only the homes or communities in view. The URL carries the location state, so a search is shareable and bookmarkable — and the result set stays fast because the function does the filtering server-side instead of shipping the whole dataset to the browser.
Custom schema for homes and communities
Indexable pages aren’t enough — they have to be understood. I implemented custom structured data on every home and community page so search engines parse them as real estate entities, not generic pages. That’s the difference between a listing that’s just crawled and one that’s eligible for richer treatment in search. At this scale — thousands of pages — getting the schema right compounds.
The results
The system did what it was built to do: more indexable, well-structured pages, served fast, drove measurable organic growth.
- Site visits grew 55.3% across two full calendar years — 526,497 in 2024 to 817,694 in 2025.
- +291,197 net new visits year over year.
- Pageviews grew 63.6% — 828,024 in 2024 to 1,354,523 in 2025.
That pageview growth outpacing visit growth is the tell: visitors are going deeper — map search to community to individual homes — which is exactly the path the architecture was designed to encourage.
Why it worked
No page builder, no plugin soup, no manual content entry. HubDB as the source of truth, serverless functions for the live filtering, dynamic templates for scale, and custom schema so the volume actually counts with search engines. One senior developer owning the whole stack end to end — which is why the pieces fit instead of fighting each other.




