Voice Search10 min read

Schema for Voice Search: What to Mark Up and What It Can't Do

Schema markup is a label on your website that tells a machine what each fact is. It helps an assistant confirm your details. It does not outrank your Google or Apple listing, whatever the invoice says.

validator · brackenridgepipe.com
SCHEMA AUDIT
LocalBusiness markup vs. four listings
6 checks
  • PassType: Plumber (specific)found
  • WarnPhone matches listings1 of 4 differs
  • PassWeekly hours6 days
  • FailHoliday hours (validFrom)none set
  • PassGeo precision5 decimals
  • WarnsameAs profile links2 of 5
Illustrative — a plumber's markup checked against Google, Apple, Bing and Yelp1 fix before Thanksgiving

In short

  • Use the most specific LocalBusiness type that is true: Dentist, Plumber, Restaurant, not plain LocalBusiness.
  • Name, phone, address, coordinates and hours in your schema must match your Google, Apple, Bing and Yelp listings exactly.
  • Mark holiday and special hours with date ranges, and change them the same day you change your listings.
  • FAQPage still labels question-and-answer pairs for machines, even though Google rarely shows FAQ rich results anymore.
  • Speakable markup is real but narrow: a Google beta aimed at news publishers in US English. For a plumber, it's a footnote.

What schema does for a voice answer

Picture a dental office in Alamo Heights. Its website says, in friendly type, that the office opens at eight on weekdays and stays late on Thursdays. A person reads that and understands. A machine reads it and has to guess which number is an hour, which word is a day and whether "late" means six or nine.

Schema markup removes the guessing. It is a small block of code, usually JSON-LD, that labels each fact on the page: this is the business name, this is the phone number, these are the hours, these are the coordinates of the front door. Search engines and the systems behind assistants read those labels to build and check what they know about you.

Here is the part the sales decks skip. When someone says "call a dentist near me," the assistant does not crawl your website to decide. It reads a listing: Google Business Profile for Google Assistant and Gemini, Apple Maps for Siri, licensed listing data for Alexa. The voice search guide maps which assistant reads what. Your schema is a corroborating witness. When it agrees with the listing, it adds confidence. When it disagrees, it adds doubt, and doubt is how a voice answer ends up naming the office down the street.

Schema is a witness, not a judge. It can vouch for your listing. It cannot overrule it.

Start with LocalBusiness, then get specific

Schema.org has a general type called LocalBusiness and a long family tree of more specific types beneath it. Use the most specific one that is true. A specific type tells a machine what you do in a single word, and it opens up properties that only make sense for that kind of business, such as a menu and a reservations flag for a restaurant.

If nothing fits exactly, use LocalBusiness and let your description and your listing category carry the detail. Do not invent a type. Validators will flag it, and every parser downstream will quietly ignore it.

Common local businesses and their types

BusinessSchema typeWorth adding
PlumberPlumberareaServed with every city you cover; 24-hour hours only if you truly answer at 3 a.m.
Dental officeDentistHours per day, the phone that reaches the front desk, a link to online booking
Taco shopRestaurant or FastFoodRestaurantservesCuisine, a link to a text menu, acceptsReservations, priceRange
Heating and air companyHVACBusinessareaServed, hours, emergency phone if it differs from the office line
Law firmLegalService or AttorneyOne block per office, each with its own address, hours and phone
Auto repair shopAutoRepairHours, geo coordinates, priceRange

Types come from the schema.org vocabulary. Check the current list before you choose; it changes slowly, but it does change.

The properties an assistant can actually use

  • name, exactly as it appears on your Google and Apple listings. Not the legal name with the LLC, unless that is what's on the sign.
  • telephone, the one number that rings a person, formatted the same way everywhere.
  • address as a PostalAddress, with street, city, state and ZIP in their own fields.
  • geo latitude and longitude for the actual entrance. Google's guidance asks for at least five decimal places.
  • openingHoursSpecification, one entry per pattern of days, plus dated entries for holidays.
  • areaServed for businesses that go to the customer: the cities or counties, named plainly.
  • sameAs links to your Google, Apple, Yelp, Facebook and BBB profiles, which tells machines these records describe one business.
  • url and priceRange wherever they apply.

What a clean LocalBusiness block contains

Below is what the markup for a fictional San Antonio plumber holds, property by property. On the page it lives as one JSON-LD script; your developer or your site platform writes the code. Your job is simpler and more important: make sure every value in the middle column is true, current and identical to your listings.

PropertyExample valueWhy it matters out loud
@typePlumberSays what you do in one word
nameBrackenridge Pipe & DrainThe name the assistant says, so it should match the sign and the listings
telephone+1-210-555-0142The number the assistant dials when the customer says yes
address4410 Fredericksburg Rd, San Antonio, TX 78201Directions start here
geo29.48712, -98.53904Puts the pin on the door, not the lot across the street
openingHoursSpecificationMon to Fri 07:00 to 18:00; Sat 08:00 to 14:00Decides whether you pass the "open now" filter
openingHoursSpecification (dated)Dec 25: opens 00:00, closes 00:00Says closed all day on Christmas
areaServedSan Antonio, Leon Valley, Helotes, Alamo HeightsCovers customers who live outside the city line
sameAsLinks to the Google, Apple, Yelp and Facebook profilesTies the scattered records together as one business

Fictional business. The phone number uses the 555-01xx range set aside for examples.

Hours, including the days you are closed

Hours are the field a voice assistant uses most and an owner checks least. "Open now" and "open on Sunday" are filters, and a business that fails the filter is not considered, however good its reviews.

Regular hours

Use openingHoursSpecification rather than the older openingHours shorthand where you can. Each entry names the days, an opening time and a closing time in 24-hour format. If you close for lunch, that's two entries for the same day. For a business open around the clock, Google's documentation shows opening at 00:00 and closing at 23:59.

Special hours

Holidays, inventory days, the week you close for a family wedding. Add a dated entry with validFrom and validThrough set to that date. To say closed all day, Google's documentation sets both the opening and closing time to 00:00. Then change the same date on your Google, Apple, Bing and Yelp listings, because those are what the assistants read first. If Siri keeps announcing the old hours anyway, the fix for Siri's wrong business hours walks through the Apple side.

The holiday-hours routine

  1. 1

    Mark the dates a month ahead.

    Thanksgiving, Christmas Eve, New Year's Day, July 4, and anything local. In San Antonio, Fiesta week changes traffic and hours for half the town.

  2. 2

    Update the listings first.

    Special hours on Google Business Profile, Apple Business Connect, Bing Places and Yelp. These feed the assistants directly.

  3. 3

    Update the site and the schema the same day.

    A plain-text note on the page and a dated entry in the markup, with the same times to the minute.

  4. 4

    Ask out loud the day before.

    Ask Siri, Google and Alexa whether you're open tomorrow. Fix whichever one gets it wrong.

  5. 5

    Clear old dates once a year.

    Past entries usually stop applying on their own, but a tidy block is easier to audit next season.

FAQPage and HowTo: honest labels, smaller rewards

FAQPage markup labels question-and-answer pairs. In 2023 Google cut its FAQ rich result, the expandable questions under a search listing, back to a narrow group of well-known government and health sites. Most small businesses lost the visual reward overnight, and a small industry of FAQ plugins lost its sales pitch.

The label is still worth having on a page that genuinely answers questions. It tells any machine reading the page where each question begins and which sentences answer it. That is the exact shape a voice reply takes: a question someone would ask aloud and an answer short enough to say in one breath. A taco shop's page about whether it caters and how much notice it needs is the right kind of content. A page of keyword questions nobody asks, written to fish for traffic, is the wrong kind, markup or no markup.

HowTo markup labels a sequence of steps, and Google has stopped showing HowTo rich results too. Use it only where the page really is a procedure a customer follows: how to shut off the water main before the plumber arrives, how to get ready for a first cleaning. Wrapping a sales page in HowTo markup and hoping is a strategy in the same sense that a lottery ticket is a retirement plan.

Speakable: real, narrow, and probably not for you

speakable is a schema.org property that points at the parts of a page best suited to being read aloud, using CSS selectors or XPath. It sounds like it was built for voice search, and in a sense it was. In practice, Google's documentation has described it for years as a beta feature for news publishers, in US English, for Google Assistant. A plumber, a dentist or a taco shop is not the intended user, and adding it shouldn't be expected to change what any assistant says about you.

It doesn't hurt. If you publish timely articles and your developer is already writing schema, it costs a few lines. Keep it in proportion. What makes a passage speakable is the passage: a question as the heading, an answer of about thirty words, plain nouns, no throat-clearing. Get that right and every assistant can use it, labeled or not. The earlier voice search guide explains the one-breath test.

A label that says "read this aloud" does not make a sentence worth hearing.

What schema can't do

Schema may be the most oversold line item in local marketing. It is useful, cheap to do properly and easy to describe as magic. Here is what it does not do, however cleanly it validates.

Limits to know before you pay for markup

  • It does not override your listings. If your Google Business Profile says you close at five and your schema says seven, expect the assistant to believe the profile. Fix the profile.
  • It does not claim or edit your listings. Google Business Profile and Apple Business Connect are separate accounts with separate records. Markup on your site changes neither.
  • It does not earn you review stars. Google stopped showing star ratings for businesses that mark up reviews of themselves on their own site. Collect reviews where customers already leave them.
  • It does not rank you. Google has said structured data is not a general ranking factor. It helps machines understand a page; it does not promote it.
  • It does not answer the phone. The assistant dials the number you labeled. What happens on the third ring is up to you.
  • It does not stay correct on its own. Hours drift, numbers change, offices move. Markup written once and forgotten turns into a source of wrong answers.

If you suspect your markup and your listings have drifted apart, the free Voice Search Visibility Check puts your Google, Apple Maps, Yelp and website details side by side, so you can see the disagreement before an assistant settles it for you.

Testing it: two validators and one phone

  1. 1

    Run Google's Rich Results Test.

    It shows which structured data Google can read on a page and flags errors and warnings for the features Google supports. Test your home page and your contact or location page.

  2. 2

    Run the Schema Markup Validator.

    The validator at validator.schema.org checks markup against the full schema.org vocabulary, including types Google builds no feature for. It catches misspelled properties and the wrong type.

  3. 3

    Compare every value to your listings.

    Set your schema's name, phone, address and hours next to Google, Apple, Bing and Yelp. Any difference is a bug, down to a missing suite number.

  4. 4

    Ask out loud.

    From a phone in your area, ask each assistant for your hours, your number and your category near me. Validators prove the code is valid. Only the assistants prove it is believed.

  5. 5

    Retest after every site change.

    Theme updates, plugin swaps and redesigns delete schema far more often than anyone mentions at launch.

If you'd rather hand it off, voice and ambient assistant optimization covers the markup, the listings it has to match and a monthly out-loud test. Schema is also ordinary SEO work, so if you already pay someone for that, ask them for the validator results. Restaurants have a few extra properties worth using, covered in voice search for restaurants.

Free · no sign-up

See what a customer in your area sees when they search.

The free visibility check runs the search your customers run and shows where you land: the map pack, the organic results, or nowhere. Then it tells you why.

Free · No obligation

Is a voice assistant getting your business wrong?

Pick what sounds familiar. We will check what Siri, Google and Alexa are reading about you, then tell you which listing to fix first. Free, and the findings are yours either way.

Which of these sounds like you? (pick any)

Questions people ask

Straight answers

Somewhat, as a supporting signal. Assistants answer most local questions from Google, Apple and Bing listings, not from your website's code. Schema helps machines read your site accurately and confirm that it agrees with those listings. It's worth adding, but it comes after your listings are claimed, complete and consistent, not before.

It's a schema.org property that marks the parts of a page suited to text-to-speech. Google's documentation describes it as a beta feature for news publishers, in US English, for Google Assistant. For most local businesses it won't change what an assistant says. Clear, short answers under question headings do more for voice than the label does.

Use the most specific LocalBusiness type that's true: Plumber, Dentist, Restaurant, HVACBusiness, AutoRepair, Attorney and so on. If nothing fits, use LocalBusiness and describe the work in plain words. Then fill in name, phone, address, geo coordinates, hours and sameAs links to your profiles, all matching your Google and Apple listings exactly.

No. Google Assistant reads your Google Business Profile, and Siri reads Apple Maps, which you manage through Apple Business Connect. Correct the hours there first. Then update the schema on your site to match, so the website confirms the listing instead of contradicting it. Markup on its own won't override a listing.

On pages that really answer customer questions, yes. Google now shows FAQ rich results for only a small set of authoritative sites, so don't expect the expandable listing. The markup still labels each question and answer clearly for machines, which is the shape a voice reply takes. Only mark up questions that appear on the page.

Run the page through Google's Rich Results Test to see what Google can read and any errors, then through the Schema Markup Validator to check it against the full vocabulary. Next, compare every value to your Google, Apple, Bing and Yelp listings. Finally, ask the assistants out loud for your hours and number, and fix whatever they get wrong.

Where to go from here

The next step down the road

Keep reading

Related guides

0%financing

Start now. Pay monthly. Add nothing for interest.

Put 25% down at signing and spread the rest in equal monthly payments. The total you pay is the price on the proposal.

  • Up to 12 months on any project
  • 24 months from $15,000
  • 36 months from $20,000

Financed projects are hosted on the DataCram platform for the length of the plan.

CallGet a quote