Local SEO on Squarespace: LocalBusiness Schema, Google Business Profile and Location Pages

For a service business, most search traffic is local: "dentist near me", "interior architect Manchester", "drone survey Colorado". The site is only part of how you win that. The other part lives on Google, and the two have to agree with each other.

Here's how we set it up for clinics, studios, trades and consultancies on Squarespace, in the order it pays off.

1. Google Business Profile first

The map pack, the three businesses shown with a map above the normal results, is driven by your Google Business Profile, not your website. For most local businesses it produces more calls than the site does.

Claim it at business.google.com. Fill in everything: primary category (choose the most specific one that fits), secondary categories, address, service area if you travel, hours including holidays, phone, website, services with descriptions, attributes, and at least a dozen real photos of the premises, the team and the work. Add a booking link if you take bookings.

Then reviews. Ask every satisfied customer, with a direct link (the Profile gives you one). Reply to every review, including the bad ones, briefly and politely. Review count and recency are the strongest map-pack signals you control.

Post monthly. An update, an offer, a photo. It signals the business is alive.

2. Name, address, phone: identical everywhere

Google cross-checks your business details across the web. The name, address and phone on your Squarespace site, your Business Profile, your social profiles and any directories must match exactly. "Bright Smile Dental" on one and "Bright Smile Dental Clinic" on another, or "Suite 4" versus "#4", weakens the signal.

Put the details in the site footer as text, not an image, on every page. Use the same format as the Business Profile. If you have several locations, list them all in the footer or on a locations page.

3. The schema Squarespace doesn't add

Squarespace emits no LocalBusiness structured data. You add it in header code injection (Settings, then Developer Tools, then Code Injection; Core plan and above) so it appears on every page, or in the home page's header injection if you prefer.

Use the most specific type that applies: Dentist, Restaurant, LegalService, Plumber, HomeAndConstructionBusiness, MedicalClinic, HairSalon, or LocalBusiness if none fits. Include address, geo coordinates, phone, hours, price range, and links to your profiles.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "name": "Northside Plumbing",
  "url": "https://www.example.com/",
  "telephone": "+1-555-010-0200",
  "image": "https://www.example.com/van.jpg",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "45 Mill Road",
    "addressLocality": "Boulder",
    "addressRegion": "CO",
    "postalCode": "80301",
    "addressCountry": "US"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": 40.0150, "longitude": -105.2705 },
  "areaServed": ["Boulder", "Longmont", "Louisville", "Lafayette"],
  "openingHoursSpecification": [
    { "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "07:00", "closes": "18:00" },
    { "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday", "opens": "08:00", "closes": "13:00" }
  ],
  "sameAs": [
    "https://www.facebook.com/example",
    "https://www.instagram.com/example",
    "https://g.page/example"
  ]
}
</script>

Add a Service block per service on each service page, in that page's header injection:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "serviceType": "Emergency plumbing repair",
  "provider": { "@type": "Plumber", "name": "Northside Plumbing", "url": "https://www.example.com/" },
  "areaServed": ["Boulder", "Longmont"],
  "description": "Same-day emergency plumbing in Boulder County, 7am to 10pm, seven days."
}
</script>

Validate at validator.schema.org. A missing comma silently disables the block.

4. Location on the page, not just in the code

Search engines read the visible page first. Every page that should rank locally needs the location in the title tag, in the H1 or the first paragraph, and in the body naturally. "Emergency plumber in Boulder" as a title; "We're a Boulder plumbing company serving Boulder County" in the opening line.

Don't stuff it. Once in the title, once near the top, a few times in the body where it reads normally. A page that says "Boulder" thirty times reads as spam to a person and to Google.

Embed a map block on the contact page and any location page. Squarespace's map block is fine.

5. Location pages, when you serve more than one place

If you serve several towns and want to rank in each, you need a page per town. This is where most local SEO goes wrong: ten pages that are identical except for the town name get ignored or penalised.

A location page that works has content that's actually about that place. What you do there specifically. Which neighbourhoods. A photo from a job there. Travel time or response time from your base. Local regulations or conditions that matter (water hardness, permit rules, parking). A testimonial from a customer there. Directions if you have premises. 400 to 800 words of real material, not a template with the name swapped.

URL: /plumber-longmont, /plumber-louisville. Title: "Plumber in Longmont, CO | Northside Plumbing". A LocalBusiness or Service schema block with areaServed set to that town. Linked from a Service Areas page and from the footer.

If you can't write real content for a town, don't make the page.

6. Reviews on the site

Real reviews from your Business Profile, Yelp, Trustpilot or wherever they live, quoted on the site with the reviewer's first name and the platform. Add Review and AggregateRating schema only if the reviews are collected on your own site through a tool; Google's guidelines don't allow marking up reviews copied from third-party platforms.

7. Directories that matter

Not the four hundred directories an SEO tool will sell you. The handful that your industry and city actually use: the local chamber, the trade association, the two or three review platforms your customers check, and any local news or "best of" lists you can get onto. Same name, address and phone as everywhere else.

Look at what the AI Visibility panel in Squarespace (on 7.1 English sites) reports as sources for your competitors. Those are the directories to be in.

8. Track the right things

Search Console filtered to queries containing your city. Business Profile insights for calls, direction requests and website clicks. A call tracking number on the Business Profile only if you can keep it consistent (dynamic numbers break the NAP rule; a single dedicated number is fine).

What's specific to Squarespace

The structured data has to be added by hand; there's no plugin. Location pages are regular pages, and Fluid Engine makes them easy to build from a saved section template. The map block is adequate. Squarespace's built-in SEO report catches missing titles on new location pages.

What Squarespace doesn't do: multi-location schema automatically, per-page canonical control, or anything with Google Business Profile itself. That's all on you, or on us.

Our set-up for a local client

Business Profile audit and completion, NAP consistency pass across the site and the top directories, LocalBusiness and Service schema, title and opening-paragraph rewrites on every service page, one location page per target town written with the client's input, review request process with a link on invoices and emails, and Search Console set to track city queries. Usually ten to twenty hours on an existing site, then a monthly check as part of a support plan. It's the highest-return SEO work there is for a business that serves a place.

Questions we get

I work from home. Should I show my address? You can set a Business Profile as a service-area business and hide the address. On the site, list the towns you serve rather than the street. The schema uses areaServed and omits streetAddress.

How many reviews do I need? More than the competitors in the map pack, and recent ones. Ten reviews from this year beat fifty from three years ago. A steady trickle matters more than a burst.

Can I have one site for two businesses at the same address? Each needs its own Business Profile and, ideally, its own pages with distinct names and phone numbers. Two businesses sharing a profile confuses Google.

Does the Squarespace map block count as a "location signal"? Marginally. The address in text, the schema and the Business Profile do the work. The map is for visitors.

Should I add my city to every page title? To the pages where a local search makes sense: home, services, contact, location pages. Not to blog posts about general topics, not to the privacy policy.

How long until I show up in the map pack? Weeks to a few months after the Profile is complete and reviews start arriving, depending on competition. Dense city-centre categories take longer than a trade in a smaller town.

Previous
Previous

Squarespace vs Webflow vs Framer for Startups and Tech Companies

Next
Next

Squarespace Custom Code Library