StudioNope Themes Get the module →
HubSpot CMS Module

Every location, with its own map.

Clean cards with address, phone, email and a button — and each card carries its own embedded Google Map. No API key, no dependencies, and every colour, font and space is an editor field. On mobile it stacks to a tidy single column.

Get it on the HubSpot Marketplace See it in action
No Google Maps API key No dependencies Responsive WCAG friendly

One module, three completely different looks — and not a line of CSS. Every colour, font, radius and the map itself is a field.

Demo 1 — Three cards · Inter · gray icons

Three locations in a row

Each card carries its own map, with address, phone, email, opening hours and a button. Light and clean — the default look, restyled only with fields.

San Francisco

West Coast HQ

535 Mission Street, Suite 1500
San Francisco, CA 94105

Mon–Fri 9:00 – 18:00
Free visitor parking on Beale St

New York

East Coast office

200 Park Avenue, 22nd Floor
New York, NY 10166

Mon–Fri 8:30 – 17:30
Entrance on E 45th Street

London

European office

30 St Mary Axe
London EC3A 8BF, UK

Mon–Fri 9:00 – 18:00
Nearest tube: Aldgate

Two cards · serif · inset map

Two cards, side by side

Two columns this time, with the map on top of each card and space around it — a Fraunces serif heading, warm cards, a terracotta accent and a soft outline button. The inset, rounded map is just two optional fields.

Paris

Flagship

12 Rue de Rivoli
75004 Paris, France

Open Tue–Sun 10:00 – 19:00

Milan

Showroom

Via Montenapoleone 8
20121 Milano, Italy

Open Mon–Sat 10:00 – 19:00

One card · sans · teal

A single location as a contact card

One location reads as a clean contact card — a wide map on the left, Plus Jakarta Sans, a teal accent, generous padding and a solid button. Same module, a third look.

Headquarters

Open Monday to Friday

1 Ferry Building
San Francisco, CA 94111

Hours: Mon–Fri 9:00 – 18:00, Sat 10:00 – 14:00. Validated parking in the Embarcadero garage.

Documentation

Everything you need to set it up

This page is the demo and the manual. The three sections above are the live module; everything below explains how to build them and what every field does. No external docs to hunt for.


What it does

Location Map Pro turns a list of locations into a clean "where to find us" section. Each location is a card with a title, address, phone, email, optional rich text and a button — and its own embedded map. Visitors get a real, pannable map per location plus tappable phone and email links.

It's built for offices, stores, clinics, studios, branches and dealerships — anything with one address or many.

1–12 locationsA repeater field — add as many cards as you need.
No API keyUses Google's public embed — no Cloud project, no billing.
No JavaScriptPure server-rendered HubL + CSS. Nothing to load.

Quick start


The cards & detail rows

Each card in the Location cards repeater has a title, an optional description, a map address, an optional rich-text block, and a button (label + link).

Inside each card is a second repeater — Detail rows — where you build the lines like address, phone, email or anything else. Each row has its own icon (a HubSpot icon field — pick any Font Awesome icon), an optional label, the text, and an optional link. Add a link and the row becomes clickable: use a phone number for a tap-to-call tel: link, an email for a mailto: link, or any URL. Add as many rows as you need, in any order. The icon size and colour are set once, in Style → Cards.


The map — no API key

The map uses Google's public embed endpoint (maps.google.com/maps?q=…&output=embed), not the paid Maps Embed API — so there's no Google Cloud project, no billing card and no key to manage. Put a full address, a place name, or raw lat,lng coordinates in the card's Map address. Each map can be panned and zoomed, and a single toggle turns the map off to leave a clean contact card.


Map effects

Recolour the map without any styled-map JSON: Full colour, Grayscale, Muted, Dark (night), or a Custom filter (grayscale / contrast / brightness). Optionally turn on reveal full colour on hover — the map fades smoothly from its effect to full colour when the card is hovered (used on demo 2).


Layout


Style & branding

Every visible value is a field: card background, radius, border, shadow and hover lift; per-element fonts (title, description, address lines) with their own sizes and colours; detail-icon size and colour; and the button — solid, outline or text-link, with its own font, colours, radius, padding, alignment and an optional icon. The three demos above are the same module in Inter/mono, Fraunces/terracotta and Plus Jakarta Sans/teal — nothing was hard-coded.


Responsive & accessible


Field reference

FieldWhereWhat it does
HeadingContentOptional eyebrow / title / subtitle above the cards.
Location cardsContent → Location cardsThe repeater. Per card: title, description, map address, button, rich text — and a nested Detail rows repeater.
Detail rowsContent → Location cards → Detail rowsPer row: icon, optional label, text, and an optional link (tel: / mailto: / URL).
Detail icon size + colourStyle → CardsThe size and colour of every detail-row icon (the icon itself is picked per row).
Button iconStyle → ButtonOptional icon shown after the button label, plus its size.
Base fontStyleOne font for the whole module; each element can override it.
LayoutStyle → LayoutColumns, map position + width ratio, max width, gaps, padding, background.
Heading styleStyle → HeadingEyebrow / title / subtitle fonts and the space below.
Cards styleStyle → CardsBackground, radius, border, padding, shadow, hover, fonts, detail-icon size + colour.
MapStyle → MapShow/hide, height, corner radius, space around, zoom, colour effect, hover reveal.
ButtonStyle → ButtonSolid / outline / link, font, colours, radius, padding, alignment, icon size.

FAQ

Do I need a Google Maps API key?
No. The map uses Google's public embed endpoint — no Cloud project, no billing card, no key. You can still pan and zoom each map.
Does it work on any theme?
Yes. Every style is a module field, so it looks right on any HubSpot CMS theme out of the box.
How many locations can I add?
1 to 12, in a repeater. A single location reads as a clean contact card; several lay out in 1–4 columns.
Can I turn the map off?
Yes — a single toggle. With it off, each location becomes a compact contact card.
Can I change the icons and fonts?
Yes. Every detail row has its own HubSpot icon field (pick any Font Awesome icon), the button icon is a field too, and the fonts are font fields — the module loads whatever Google font you pick.
Will it slow my page down?
No. It's server-rendered HTML + CSS with no JavaScript or libraries, and the map iframes are lazy-loaded.

Location Map Pro

Drop in your locations. Ship today.

One clean, keyless, dependency-free module for every 'where to find us' section you'll ever build in HubSpot.

No Google Maps API key · No dependencies · Works in any HubSpot theme