A parent asks an AI assistant which school near them has a Saturday kids class. Whether the answer gets your school right depends on how clearly your facts are written down. Schema markup is one place that happens. Here's what it is, what it does and doesn't do, and how to add it.

Key takeaways
A dad is on his phone after his six-year-old's soccer season ends. He types into ChatGPT: "Karate classes for a 6-year-old near me on Saturday mornings?"
The answer names your school. Good. It also says your Little Dragons class meets Saturdays at 9. You moved that class to Tuesday evenings two years ago, when you lost the Saturday instructor.
He shows up Saturday at 8:50 to a locked door. You never hear about it. He signs up somewhere else that afternoon.
Where did the AI get Saturday at 9? Maybe an old directory listing. Maybe your schedule PDF, which still has last year's times on page two. Maybe a website template that had your hours baked into code nobody has opened since it was built. Machines assemble answers from every source they can find, and when those sources disagree, they guess.
This post is about one of the places you can remove the guessing: schema markup. It isn't magic and it won't get you recommended on its own. But it's a cheap way to make sure that when a machine does describe your school, it describes the school you run today.
Martial arts website schema is structured code, usually a JSON-LD block in a page's header, that describes your school's facts in the shared vocabulary from schema.org so search engines and AI systems can read them directly instead of interpreting your page design.
A parent sees your homepage as a layout: your logo, a photo of kids bowing in, a map, a paragraph near the bottom that mentions hours. A machine sees the same page as text and has to work out which number is the phone, whether "Mon to Thu 4 to 8" is your hours or a line from a blog post, and whether "Tiger Karate" in your header and "Tiger Karate Academy LLC" in your footer are the same business.
Schema removes the guesswork. It works a little like the formal name of a kata: when one black belt says the name to another, there's no question which sequence they mean. Schema gives machines the formal names for your facts.
What a parent sees on your site ~ What schema tells a machine
Your logo and "Tiger Karate" in the header ~ The exact business name, and that it's a sports activity location
"Find us next to the library on Main" ~ A full postal address, field by field
A "Call us" button ~ The phone number in a standard format
Hours in the footer ~ Opening hours by day, in 24-hour time
Facebook, Instagram, and YouTube icons ~ Links that tie those profiles to this school
A photo of the head instructor with a caption ~ A person, their name, and their role at the school
Parents have always checked a school before calling. What's changed is where that check happens.
BrightLocal's Local Consumer Review Survey 2026, a panel of 1,002 US adults, found that 45% of consumers now use AI tools for local business recommendations, up from 6% the year before, making AI the third most popular source behind Google and Facebook. The same survey found 74% only care about reviews written in the last three months, and 47% won't use a business with fewer than 20 reviews.
So a growing share of parents get their first description of your school from a machine. That machine builds its answer from your Google Business Profile, your reviews, your website, and what other sites say about you. Your job is to make those sources agree.
Here's the honest picture of where schema fits:
Put plainly: schema won't move you ahead of a school with more recent reviews and clearer pages. Those are the levers, and our plain-English guide to AEO for martial arts schools covers them. What schema does is make your basic facts unambiguous in one more place machines look. For a school, where class times are the fact parents care about most, that's worth an afternoon.
Schema can only describe what's on your page. If the page is missing the facts, or hides them, no markup will help. So before any code, check the foundation.
A parent landing on your site at 9 p.m. is looking for four things:
The most common failure is the schedule. Many schools post it as a PDF or an image of a printed sheet. A parent on a phone has to pinch and zoom, and a machine may not read it at all. Put the schedule on a real page as plain text in a simple table, organized by age group.
The second most common failure is the trial form. Keep it short: parent's name, phone, email, child's age, and preferred class time is enough to start. Every extra field is one more chance for a parent to close the tab. What happens after they submit matters just as much, which our trial class follow-up system walks through.
Last, make your name, address, and phone number in the site footer match your Google Business Profile exactly, down to "Ste" versus "Suite." That match is the backbone of everything below. For the design side of all this, our guide to turning website visitors into trial sign-ups goes deeper.
Foundation check ~ Fails if ~ Fix
Classes by age ~ Programs are listed by style name only ~ List each program with its age range on the homepage
Schedule ~ It's a PDF, an image, or two clicks deep ~ A plain-text table on a "Schedule" page linked from the main menu
Location ~ Address only in the footer, no tap-to-call ~ Address, map, and click-to-call on every page
Trial booking ~ Form asks for ten fields, or there's only a phone number ~ Five fields, visible on the homepage and every program page
Consistency ~ Footer, GBP, and directories show different details ~ Use your GBP as the master record and match it everywhere
Here's a detail most schema guides skip: schema.org has no "martial arts school" type. Google Business Profile has categories like "Martial arts school" and "Karate school," but the schema vocabulary doesn't mirror them.
The closest fit is SportsActivityLocation, a type of LocalBusiness. Schema.org lists more specific types beneath it, including ExerciseGym, HealthClub, and SportsClub.
For most schools, SportsActivityLocation is the honest choice. A school that operates more like a fitness facility could defend ExerciseGym. A club with a membership structure could defend SportsClub. Don't overthink it. Pick one, use it consistently, and put the effort into getting the facts inside it right. The type label matters far less than whether your hours and address are correct.
What should match is everything inside the block: your name, address, phone, and hours should be identical to your Google Business Profile, even though the category names differ.
Schema ~ Where it goes ~ What it tells machines ~ Worth it?
SportsActivityLocation ~ Homepage or contact page, one block per location ~ Name, address, phone, hours, logo, area served ~ Yes, start here
sameAs links (inside that block) ~ Same block ~ Which Facebook, Instagram, YouTube, and directory profiles are yours ~ Yes
Person ~ About or instructors page ~ Who the head instructor and staff are, and their roles ~ Yes, if you have an instructors page
BlogPosting ~ Each blog post ~ Author, publish date, date updated ~ Usually automatic on Webflow and WordPress
BreadcrumbList ~ Site-wide ~ How your pages relate ~ Low priority, often automatic
FAQPage ~ Pages with a real Q&A section ~ The questions and answers on that page ~ Optional. Google stopped showing FAQ rich results on May 7, 2026; the markup is harmless
Event ~ Pages for dated events: a tournament, seminar, or open house ~ Date, time, and location of that event ~ Only for real one-off events, not weekly classes
Course ~ Program pages ~ Course details ~ Skip it. Google retired the Course Info rich result in June 2025
Two cautions specific to schools:
Class times are the fact parents ask about most and the one schools get wrong most often. Three rules keep them straight.
Business hours and class times are different things. In schema, openingHoursSpecification describes when your school is open: when someone can call, visit, or walk in. Your class schedule is page content. Don't try to cram fifteen weekly classes into opening hours, and don't mark up every Tuesday class as an Event. Put the full schedule on your Schedule page as a readable table, and let the opening hours describe when the doors are open.
Your Google profile and your schema should tell the same story. If your GBP hours say 3 to 8 on weekdays, your schema should say 3 to 8 on weekdays. Our guide to Google Business Profile for martial arts schools covers how to set hours that reflect when you're reachable, not just when the mat is in use.
Seasonal changes are where things drift. Summer schedules, holiday breaks, and a new Saturday class each change your facts in at least four places: the Schedule page, your GBP (including special hours for holidays), your schema, and any directories. Make a habit of updating all four on the same day. A schedule change that only reaches one of them is how a parent ends up at a locked door.
You don't need a developer for the basics.
Open your Google Business Profile and copy your school's name, address, phone, and hours exactly as they appear. That's your master record. If anything there is wrong, fix it on the profile first.
Use the sample below as a template. Replace every value with your own, and only include facts that also appear somewhere a visitor can see them on your site.
Run the page through Google's Rich Results Test (search.google.com/test/rich-results) and the Schema Markup Validator (validator.schema.org). Fix any errors, publish, and test the live page again.
Add "update schema" to the checklist you already use for schedule changes, new instructors, and holiday closures.
Here's a basic block for a fictional school. Replace every value with yours and delete any line that doesn't apply.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "SportsActivityLocation",
"name": "Example Karate Academy",
"url": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"telephone": "+1-555-555-0142",
"address": {
"@type": "PostalAddress",
"streetAddress": "456 Main St, Ste 3",
"addressLocality": "Anytown",
"addressRegion": "IN",
"postalCode": "46000",
"addressCountry": "US"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday"],
"opens": "15:30",
"closes": "20:30"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "12:00"
}
],
"areaServed": ["Anytown", "Nearby Town"],
"sameAs": [
"https://www.facebook.com/example",
"https://www.instagram.com/example",
"https://www.youtube.com/@example"
],
"founder": {
"@type": "Person",
"name": "Pat Example",
"jobTitle": "Head Instructor"
}
}
</script>
A few notes on the choices:
This takes about fifteen minutes:
If you'd rather not do this yourself, it's part of what our AI Visibility Report checks, along with which schools AI assistants name instead of yours. If you're new to all of this, start with our beginner's guide to martial arts digital marketing.
Schema markup is paperwork for machines: your school's name, address, phone, hours, and people, written so nothing can be misread. Google says you don't need special markup for its AI features, and testing hasn't shown that schema earns AI recommendations on its own, so keep expectations realistic. But more parents now get their first impression of your school from an AI answer, and that answer is only as good as the facts it finds. Build the foundation first: classes by age, a schedule a phone can read, and a short trial form. Make your details match your Google profile everywhere. Then add the markup, and update all of it the day your schedule changes.
See what AI assistants tell parents about your school. Our free AI Visibility Report shows how AI tools describe your school, which schools they name instead, and your top three fixes. Or see how our AI search optimization for martial arts schools handles schema, content, and visibility tracking, and book a free consultation.
Lee Boyer is a 3rd-degree black belt in Matsumura Seito Shorin-Ryu with 18+ years in the art, and founded Kusanku Marketing Solutions to help martial arts schools get found online, including by AI search. About Lee · Kusanku on LinkedIn
A parent may be asking ChatGPT for a martial arts school right now. We'll show you what it says about you — and who it's recommending instead.
No cost, no obligation · Delivered in 3 business days · Prepared by Lee
We'll check what ChatGPT, Google AI, Perplexity, and Gemini say about you — and who they're recommending instead. Free, and yours in 3 business days.
Not directly, as far as public evidence shows. A December 2025 Search Atlas study found no link between schema coverage and how often ChatGPT, Gemini, or Perplexity cite a site. Schema helps keep your school's facts accurate across the sources those tools read, but recent reviews, clear pages, and mentions on other sites matter more.
Schema.org has no martial arts school type, so most schools should use SportsActivityLocation, a type of LocalBusiness. ExerciseGym or SportsClub can also fit depending on how your school operates. Consistent, accurate details inside the block matter more than the type you choose.
No. Use opening hours in your schema to describe when your school is open, and put the full class schedule on your Schedule page as a readable table. Save Event markup for one-off dated events like a tournament, seminar, or open house.
It no longer produces a visible result in Google, which stopped showing FAQ rich results on May 7, 2026. Existing FAQ markup is harmless and can stay on pages with real questions and answers. A clear Q&A section is still useful to parents and to AI tools reading the page.
Run your page through Google's Rich Results Test and the Schema Markup Validator at validator.schema.org. Then compare the details it shows against your Google Business Profile, and ask an AI assistant about your class times to see whether the answer matches your schedule.
The strategy almost no school owner is using yet - and the one with the shortest window to win.
Download Free