There's a gap between what Google requires in a LocalBusiness block and what actually makes you legible to an AI engine. Google requires exactly two properties for a valid LocalBusiness: name and a complete address. That clears the technical bar and does almost nothing for recognition. The fields that earn you the Recognize layer of the REAL Method are a longer, more interesting list. Here they are, in order of how much they pull their weight.
1. The right @type — use a subtype
This is the field people get wrong most often, and it's foundational. Don't use generic LocalBusiness if a subtype fits, and never use Organization for a business with a physical service area. Google's own guidance is to use the most specific applicable type: Dentist, Plumber, Electrician, RoofingContractor, Restaurant, DaySpa, Attorney. The subtype tells an engine what category to consider you for. Organization says "some company exists" — useless for "best electrician near me."
2. name
Exactly as it appears on your signage and Google Business Profile. Consistency is the whole point: the engine is trying to match this string to the same business across your reviews, directories, and map listing. "Westside Plumbing Co." here and "Westside Plumbers Calgary" on Google is a recognition problem.
3. address (as PostalAddress)
Required, and it must be a structured PostalAddress object — streetAddress, addressLocality, addressRegion, postalCode, addressCountry as separate fields, not one text blob. This is the anchor for every "near me" judgment.
4. telephone
A clean, internationally-formatted number (+1-403-555-0142). Critically, this is separate from your click-to-call button: the button is for humans, the field is for the crawler. Plenty of sites have the button and no telephone in the schema, which means the machine-readable record of how to reach you is simply missing.
5. areaServed
The single most-skipped high-value field. List the cities, regions, or postal areas you actually serve. This is literally how you tell an engine "I work in these places." A contractor who serves five suburbs but lists none of them in areaServed is invisible for four of those five searches. Note: areaServed isn't on Google's rich-result list, but it's exactly the kind of property that helps an AI engine place you geographically.
6. sameAs
The entity-confirmation field. sameAs is an array of URLs pointing to your other authoritative profiles — Google Business Profile, Facebook, Instagram, LinkedIn, and, if you have one, your Wikidata entry. It tells the engine "all of these describe the same real business," which is how disambiguation works. A business with rich, consistent sameAs links is far easier for a model to trust than an island with one homepage URL.
7. openingHoursSpecification
Per-day open and close times, expressed as structured OpeningHoursSpecification objects. "Open Saturday" is the kind of fact an engine will happily repeat in an answer to "who's open this weekend" — but only if it's machine-readable. Closed days matter too.
8. priceRange
One character — $, $$, $$$, or $$$$ — and routinely skipped. It's a real schema field that helps engines slot you into comparison and "affordable / high-end" style queries. Three seconds to add.
9. geo (GeoCoordinates)
Latitude and longitude as a GeoCoordinates object. It removes any ambiguity about your physical location, which matters when there are similarly-named businesses or your address sits near a municipal boundary.
10. aggregateRating and review — with a warning
Your rating and reviews are powerful evidence signals, and they're valid schema.org properties. But know the rule: since September 2019, Google does not display review star snippets for LocalBusiness/Organization when the business controls the reviews on its own site — so-called "self-serving" reviews. It's a display suppression, not a penalty. The reviews still matter as evidence; just don't expect stars in your Google result from marking up your own testimonials. The durable version of review evidence lives on Google, Yelp, and industry platforms, not in self-hosted markup.
Putting it together
A complete block isn't long — maybe forty lines — and the difference between a two-field stub and a full one is the difference between "a company exists" and "this specific dentist, here, open these hours, in this price range, serving these neighbourhoods, confirmed by these profiles." The second one is recognisable. The first isn't.
A few rules that save headaches:
- One block per page, placed once in the
<head>. Two competingLocalBusinessdeclarations confuse crawlers. - Match the visible page. The hours, address, and phone in your schema must agree with what's on the page; mismatches erode trust.
- Validate it. Run the page through Google's Rich Results Test and the GEO Grader to catch a stray comma before it voids the whole block.
If hand-writing JSON isn't your thing, the Schema Generator builds a clean, complete block from a short form — and the GEO Grader scores what you already have. Questions on a tricky setup like multiple locations? hello@rankinglocal.ai reaches me directly.