Why the facts have to match
In our audit of 9,483 small business websites (40 trades, 90 metros, September 2026), 43.1% were inconsistent about who and where they are across their own homepage, contact page and about page. 36.9% published more than one phone number. 34.1% had no postal address a machine could parse at all. Those are the site's own three pages, before a single directory is opened.
The reason it matters is plain. If your pages carry two phone numbers, an answer that repeats one of them may repeat the wrong one. If the name is spelled two ways, nothing on the page says the reviews under one belong to the business at the other. Where your own pages disagree about an entity, any answer built from them can only pick a version, and an answer that leaves you out never says why.
The worksheet
Write the source of truth in the second column first, then check every place in the third column against it and circle one word in the fourth.
| Fact | Source of truth (write it here) | Places to compare | Result |
|---|---|---|---|
| Legal name | The name on your registration or license | About page; schema legalName; Google Business Profile where shown | matches / differs |
| Trading name | The name on the sign and in the phone greeting | Title tag; header; footer; profile name; directory listings; social profile names; schema name | matches / differs |
| Street address | One line, suite and postal code included | Contact page; footer; Google Business Profile; directories; schema address | matches / differs |
| Phone number | One number, one format | Header; footer; contact page; Google Business Profile; directories; social profiles; schema telephone | matches / differs |
| Hours | Day by day, closures included | Contact page; footer; Google Business Profile; directories; schema openingHoursSpecification | matches / differs |
| One address a person answers | Contact page; footer; directories; schema email | matches / differs | |
| Website URL | One form: https, with or without www, one trailing-slash rule | Google Business Profile; directories; social profiles; schema url and sameAs | matches / differs |
| Categories and services | One primary category and one name per service | Homepage; service pages; Google Business Profile categories; directory categories; schema type and serviceType | matches / differs |
The nine places, in the order to open them: your homepage, contact page, about page and footer; your Google Business Profile; the two or three directories your trade uses (the association's member list, the review site your reviews sit on, the directory a buyer in your trade opens); your social profiles; and your structured data, which you read by viewing the page source and finding the application/ld+json block.
How to fix a difference
- Decide the source of truth first and write it in the second column before you look anywhere else. For the legal name, that is the registration; for everything else, it is what a customer standing at your door would see and dial.
- Change your own site to match, everywhere at once: header, footer, contact page, about page, title tag. The footer does most of the work because it is on every page.
- Change the schema markup to match the visible text word for word. Google's guidance is to mark up only what the visitor can see, so the markup follows the page, never the other way round.
- Change the Google Business Profile next. Its guidelines ask for the real name, the real address, the right categories and the real hours, which means the profile and the site should describe the same door in the same words.
- Then the directories and social profiles, oldest listing first, because the old ones are where a retired phone number survives.
- Re-run the worksheet a month later. Something always drifts (a new phone system, a move to a different suite), and the place it drifts first is rarely the site.
The schema properties to check
The LocalBusiness node on your homepage should carry the same eight facts as the table. schema.org's LocalBusiness page defines the properties and the subtypes (Dentist, Plumber, LegalService, AutoRepair and the rest); Google's local business page lists the ones it reads: name, address, telephone, opening hours, geo and priceRange. Check these in particular:
nameandlegalName: the trading name and the legal name, as in rows one and two.address: aPostalAddresswith streetAddress, addressLocality, addressRegion, postalCode and addressCountry, matching the contact page character for character.telephone: the one number, written as it is on the page.openingHoursSpecification: every day you are open, with opens and closes, as schema.org defines it; days you are closed are left out, not invented.urlandsameAs: the one form of your address on the web, and the profile URLs that belong to you.
A template with the identity fields, to compare against what you find in the page source:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "[Trading name, exactly as in the header]",
"legalName": "[Legal name, exactly as registered]",
"url": "https://www.example.com/",
"telephone": "[The one number, written as it is on the page]",
"email": "[The one address]",
"address": {
"@type": "PostalAddress",
"streetAddress": "[Street and suite]",
"addressLocality": "[City]",
"addressRegion": "[State or province]",
"postalCode": "[Postal code]",
"addressCountry": "[Two-letter country code]"
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "08:00",
"closes": "17:00"
}
],
"areaServed": "[The towns or counties you serve]",
"sameAs": [
"[Google Business Profile URL]",
"[Directory listing URL]",
"[Social profile URL]"
]
}