The second location is usually where a website starts to fall apart. It was built for one shop and one phone number, then the Lismore branch opens and someone adds “and now in Lismore!” to the homepage banner. Two years later the footer has three addresses, the contact page rings the wrong office, and Google shows Ballina’s hours for the Byron clinic.
None of this is hard if you plan it once: one page per real location, services written once, location details stored in one place, and one Google Business Profile per staffed address. This is how we structure WordPress sites for businesses with more than one address.
Start with one question: do customers choose a location, or does the location choose them?
Customers choose a location when they physically come to you: a physio with three clinics, a café group, a vet, a gym. They want the nearest one, its hours, its parking and its phone number. These businesses need a proper page for each location.
The location chooses the customer when you go to them: a plumber based in Ballina who works across the Northern Rivers, a mobile mechanic, a cleaning company. Customers don’t care where your shed is, only whether you cover their town. These businesses need service-area content, not branch pages, and they need to be careful with Google (more on that below).
Some businesses are both, like an accounting firm with two offices and clients statewide. Build location pages for the offices and treat everything else as a service area.
The page structure we use
For a business with physical locations, the structure looks like this:
- Locations (a parent page listing every location, with a map, suburb, phone and a link to each)
- Ballina
- Lismore
- Byron Bay
- Services (one page per service, written once, not duplicated per location)
- Team (filterable by location if the team is big enough to need it)
- Contact (a form that asks which location, or routes automatically)
The key decision is that services live once and locations live once. We don’t build “Physio Ballina”, “Physio Lismore” and “Physio Byron” as three near-identical pages with the town name swapped. That’s thin, duplicate content, Google treats it accordingly, and it triples your editing every time a service changes.
What goes on each location page
People often land here straight from Google Maps, so each page has to stand on its own:
- The full address, written exactly as it appears on that location’s Google Business Profile
- A local phone number that actually rings at that location (or a clear note that all calls go to one reception)
- Opening hours, including public holiday exceptions
- A map and plain-English directions (“park behind the bakery, we’re upstairs”)
- Which services are offered there, linking to the main service pages
- Photos of the people, the building and the entrance
- Something specific to that place: accessibility notes, landmarks, parking
If the Lismore page and the Byron page read the same apart from the address, you haven’t written location pages yet.
Keep location data in one place
We store location details (address, phone, hours, coordinates, booking link) in a Locations custom post type with custom fields, then pull them into Elementor templates with dynamic tags. Change the Lismore phone number once and it updates on the location page, the footer, the contact page and the locations list.
The alternative is typing the same address into six places, which works until the day you move premises. One source of truth also keeps your name, address and phone number consistent with your Business Profiles and directory listings.
Structured data per location
Each location page should carry its own LocalBusiness schema: name, address, phone, hours, geo coordinates and URL. Google’s local business structured data documentation says to define each location as its own LocalBusiness, and it explains how to mark up separate departments if you have them. Generate it from the same fields and it never drifts out of date.
Google Business Profiles: one per real location
This is where multi-location businesses get into trouble most often.
Google’s guidelines for representing your business are clear on a few points that matter here, at the time of writing (late 2026):
- One profile per location. Don’t create more than one profile for the same location, in one account or across several.
- A location needs to be staffed and able to receive customers during its stated hours.
- A virtual office or a rented mailbox isn’t eligible. Co-working spaces only qualify if you have clear signage and your own staff there during business hours.
- Service-area businesses that don’t serve customers at their address should hide the address and set a service area instead.
So a plumber with staffed depots in Ballina and Grafton can have two profiles. A plumber who wants a profile in every town they drive to can’t, and the usual shortcuts (a mate’s address, a PO box, a virtual office) are a reliable way to get suspended.
Manage genuine profiles together in one business-owned Google account, so access doesn’t depend on whoever set each one up. Untangling duplicate or orphaned profiles is a regular part of our local SEO and Google Business Profile work. And link each profile to its own location page: someone tapping “Website” on the Lismore listing should land on the Lismore page.
Contact forms and enquiries
With one location, a form goes to one inbox. With three, you have two options:
- Ask which location with a required dropdown, and route the email based on the answer. Most decent form plugins can do this with conditional notifications. Our comparison of WordPress form plugins covers which ones handle routing well.
- Put a separate form on each location page that only emails that location.
We usually do both. Either way, someone at head office should get a copy, because enquiries sitting in a branch inbox nobody checks are worse than no form at all. And make every location’s phone number tap-to-call on mobile.
When you need multilingual (and when you don’t)
Most regional Australian businesses don’t need a multilingual site, even with several locations. Multiple locations is not the same as multiple languages.
You might need it if a meaningful share of your customers prefer another language and you can serve them in it: a medical centre with staff who speak Mandarin or Vietnamese, a tourism operator taking bookings from overseas, a business with a branch in another country.
If you do, do it properly:
- Use a proper multilingual plugin (we generally use WPML or Polylang) that creates real translated pages with their own URLs, not a widget that machine-translates on the fly.
- Have a fluent person check the translations, especially anything clinical, legal or price-related.
- Make sure hreflang tags are output, so Google knows which version suits which language. Google’s guide to localised versions of pages explains them.
- Only translate what you can maintain.
If you only need one page in another language (a “first visit” page in Vietnamese, say), a single well-written page linked from the relevant location often beats a full multilingual setup.
The order to do it in
- Sort every address into real, staffed location or service area.
- Collect exact names, addresses, phones and hours, matched to each Business Profile.
- Build the Locations post type, fields and one page template.
- Write each location page individually, with real photos and local detail.
- Generate LocalBusiness schema from the same fields.
- Point each Business Profile to its own location page.
- Set up form routing and test that every location receives its enquiries.
If you’re a regional business expanding into the next town, our piece on websites for regional businesses covers how to make local knowledge work in your favour on each of those pages.
We build multi-location sites as part of our WordPress and Elementor web design work. If your current site is a subscription platform that can’t store location data properly, our website ownership rebuild moves you to a WordPress site you own. Opened a second location and bolted it onto the old website? Mapping out the location pages it’s missing is a good first step, and you can send us your current site to start it.