Schema markup for a shop that exists on a street
LocalBusiness, PostalAddress, and the difference between structured data and wishful thinking.
Schema does not create a ranking. It reduces the chance that Google has to guess what you are.
Start with the entity
For a local company, the useful types are LocalBusiness (or a subtype like Plumber / Bakery), PostalAddress, and OpeningHoursSpecification. Add sameAs for the profiles you actually control: Google Business, Yelp, Instagram.
Do not mark up reviews you invented. Do not mark up a phone number that rings a cell phone you no longer carry.
Keep JSON-LD next to the truth
Put the block in the document that describes the business. If the homepage says you are in Portland and the JSON-LD says Phoenix, you have written a puzzle.
This journal uses @graph so Organization and WebSite can point at each other without duplicating names. Posts add BlogPosting and a breadcrumb list.
Test like an adult
Use Google’s Rich Results inspector and the Schema Markup Validator. If a required property is missing, fix the page — do not comment the script out and call it a launch.
A small, honest example
{
"@type": "LocalBusiness",
"name": "Northwind Bike Repair",
"url": "https://example.com",
"telephone": "+1-503-555-0148",
"address": {
"@type": "PostalAddress",
"streetAddress": "410 Division St",
"addressLocality": "Portland",
"addressRegion": "OR",
"postalCode": "97227"
}
}
If that address is wrong, the rest of your SEO plan is decoration.
Put this on a real domain
Search a name, ship a static site, and wire business email without leaving RegisterMySite.