Key Takeaways
- Schema markup is code that helps Google understand what your business is. It's like a cheat sheet you give to Google saying "here's my address, here's my phone number, here's when I'm open."
- JSON-LD is the format Google recommends. You paste it into your website's HTML and forget about it.
- The right schema type matters. A boxing gym, CrossFit box, and commercial gym should use different schema types.
- You can copy-paste the templates below and just swap in your own details. No coding knowledge needed.
- Test it after adding it. Google has a free tool that tells you if your markup is correct.
Introduction
Right, schema markup. Sounds technical. Sounds like something you'd need a developer for. But I reckon most gym owners can handle this in about 15 minutes.
Here's what's actually going on: when Google crawls your website, it's reading your content like a human would. But Google isn't human. It can misunderstand things. Schema markup is basically a structured note you leave for Google that says "Hey, this is a gym. Here's the address. Here's the phone number. Here's when we're open. Here's what we charge."
What that means for you is: Google gets a clearer picture of your business, which can help you show up in local searches and potentially get rich results (those fancy search listings with stars, hours, and other details right in the search results).
It's not going to rocket you to #1 overnight. But it's a free, one-time setup that gives Google exactly what it wants. And I'm going to give you templates you can literally copy-paste.
Choosing the Right Schema Type for Your Gym
This is where most guides stuff it up. They tell every gym to use LocalBusiness or HealthClub. But schema.org has more specific types, and more specific = better for Google.
Here's what I recommend based on gym type:
- Commercial gym (Anytime, Goodlife, independent) — use HealthClub
- Boxing gym — use SportsActivityLocation
- CrossFit box — use SportsActivityLocation
- Martial arts school — use SportsActivityLocation
- Yoga/Pilates studio — use HealthClub
- Personal training studio — use HealthClub
Can you use LocalBusiness? Yes, it'll work. But it's like telling Google "I'm a business" instead of "I'm a gym." Be as specific as possible.
Copy-Paste Template: Boxing Gym
Replace everything in [SQUARE BRACKETS] with your actual details. Delete any lines that don't apply to you.
`html
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SportsActivityLocation",
"name": "[YOUR GYM NAME]",
"description": "[YOUR GYM DESCRIPTION - 150-300 characters]",
"url": "[YOUR WEBSITE URL]",
"telephone": "[YOUR PHONE NUMBER]",
"email": "[YOUR EMAIL ADDRESS]",
"image": "[URL TO YOUR MAIN GYM PHOTO]",
"logo": "[URL TO YOUR LOGO]",
"priceRange": "[$$]",
"address": {
"@type": "PostalAddress",
"streetAddress": "[YOUR STREET ADDRESS]",
"addressLocality": "[YOUR SUBURB]",
"addressRegion": "[YOUR STATE]",
"postalCode": "[YOUR POSTCODE]",
"addressCountry": "AU"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "[YOUR LATITUDE]",
"longitude": "[YOUR LONGITUDE]"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "[OPENING TIME - e.g., 06:00]",
"closes": "[CLOSING TIME - e.g., 20:00]"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "[SATURDAY OPENING TIME]",
"closes": "[SATURDAY CLOSING TIME]"
}
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Boxing Programs",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": { "@type": "Service", "name": "Group Boxing Classes" }
},
{
"@type": "Offer",
"itemOffered": { "@type": "Service", "name": "Personal Training" }
},
{
"@type": "Offer",
"itemOffered": { "@type": "Service", "name": "Kids Boxing" }
}
]
},
"sameAs": ["[YOUR FACEBOOK URL]", "[YOUR INSTAGRAM URL]"]
}
</script>
`
How to find your latitude and longitude: Google your gym name, right-click on the pin in Google Maps, and the coordinates appear at the top of the menu.
Copy-Paste Template: Commercial Gym
`html
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HealthClub",
"name": "[YOUR GYM NAME]",
"description": "[YOUR DESCRIPTION]",
"url": "[YOUR WEBSITE URL]",
"telephone": "[YOUR PHONE NUMBER]",
"email": "[YOUR EMAIL ADDRESS]",
"image": "[URL TO YOUR MAIN PHOTO]",
"logo": "[URL TO YOUR LOGO]",
"priceRange": "[$$]",
"address": {
"@type": "PostalAddress",
"streetAddress": "[YOUR STREET ADDRESS]",
"addressLocality": "[YOUR SUBURB]",
"addressRegion": "[YOUR STATE]",
"postalCode": "[YOUR POSTCODE]",
"addressCountry": "AU"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": "[YOUR LATITUDE]",
"longitude": "[YOUR LONGITUDE]"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"],
"opens": "00:00",
"closes": "23:59"
}
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Gym Services",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": { "@type": "Service", "name": "Gym Membership" }
},
{
"@type": "Offer",
"itemOffered": { "@type": "Service", "name": "Personal Training" }
},
{
"@type": "Offer",
"itemOffered": { "@type": "Service", "name": "Group Fitness Classes" }
}
]
},
"amenityFeature": [
{ "@type": "LocationFeatureSpecification", "name": "Free Parking", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "Showers", "value": true },
{ "@type": "LocationFeatureSpecification", "name": "Lockers", "value": true }
],
"sameAs": ["[YOUR FACEBOOK URL]", "[YOUR INSTAGRAM URL]"]
}
</script>
`
How to Add Schema to Your Website
This depends on your website platform:
WordPress
Option 1 (easiest): Use a plugin
- Install "Insert Headers and Footers" or "WPCode" plugin
- Go to Settings → Insert Headers and Footers
- Paste your schema code into the "Header" section
- Save
Squarespace
- Go to Settings → Advanced → Code Injection
- Paste the schema code into the "Header" section
- Save
Wix
- Go to Settings → Custom Code
- Click "+ Add Custom Code"
- Paste the schema code
- Set it to apply to "All pages" and place in "Head"
- Save
Custom Website / HTML
Paste the entire script block into the head section of your homepage's HTML file.
How to Test Your Schema Markup
After adding your schema, test it. Google has a free tool:
- Go to Google Rich Results Test (search.google.com/test/rich-results)
- Enter your website URL
- Click "Test URL"
- Wait for results
What you want to see:
- Green checkmarks next to detected schema types
- No errors (red)
- Warnings (yellow) are usually fine — they're optional fields you haven't filled in
You can also use the Schema Markup Validator (validator.schema.org) for a more detailed check.
Common errors and fixes:
- "Missing field: image" → Add an image URL to your schema
- "Missing field: priceRange" → Add priceRange (use $, $$, or $$$)
- Invalid URL format → Make sure URLs start with https://
- Invalid time format → Use 24-hour format: "06:00" not "6am"
- Invalid geo coordinates → Use decimal format: -33.8688, not 33 degrees
Common Mistakes
- Using the wrong schema type. LocalBusiness works but it's too generic. Use HealthClub or SportsActivityLocation as outlined above.
- NAP mismatch between schema and GBP. Your schema address, phone, and name MUST match your Google Business Profile exactly.
- Not testing after adding. Always test. A typo in JSON breaks the whole thing and Google ignores it silently.
- Adding schema to only one page. At minimum, add it to your homepage. Ideally, your contact page too.
- Forgetting to update schema when details change. Moved? Changed number? Changed hours? Update your schema too.
Next Steps
- Pick the template that matches your gym type above.
- Replace all bracketed fields with your actual details.
- Add the code to your website using the platform-specific instructions.
- Test it with Google's Rich Results Test.
- Fix any errors and retest.
- Done. This is a set-and-forget task. Only update when your details change.
For more on optimising your website for local SEO, check out our title tags guide for gym websites and the full local SEO checklist.
Want help implementing schema or auditing your website's technical SEO? Get a free GBP audit at rumbledigital.com.au/contact.
Want more actionable local SEO guides for gym owners? Join the Gym Growth Vault for weekly tips on getting more members through your door.
WANT US TO DO THIS FOR YOU?
Get a free Lead Audit and we'll show you exactly where your gym is losing leads online.
Get Your Free Lead Audit