
LocalBusiness schema without inventing a street
LocalBusiness markup is a copy of the name, phone, and address you already show to people. It is not a place to invent a street so a form looks finished. Ethical AI is in Frisco, Texas. We mark up the real record for shops in Dallas-Fort Worth that have a counter, and for shops that only roll a truck.
Copy the record you already published
Open the listing and the footer of the site side by side. Write down the public name, the phone, and the address exactly as a customer can check them. That note is the only source for the markup. If the footer says one suite and the listing says another, fix the public pages first. Markup that matches a mistake just publishes the mistake twice.
Use the same string as the invoice. The name on the invoice is the name that should appear in the markup. A legal LLC in the schema and a different DBA on the truck splits you into two entities for every system that reads the page.
A real counter gets a real street
If customers can walk in, the address in the markup is the address on the door. Include the suite if the suite is on the door. Include the city and the state and the postal code you put on the listing. Hours in the markup are the hours on the door. A 24/7 flag you do not staff does not belong in the structured hours either.
The phone is the phone that rings. One number. The number on the truck. Do not drop a call-tracking line into the markup that never appears on the listing. Two phones, two businesses.
No storefront, no invented street
A lot of trade shops in this metro work from a home, a yard, or a route. They do not have a lobby. For those shops, do not mint a virtual street, a mailbox store, or a city hall address so the markup "has" a street. Say the area you serve. Put the city you are based in. Leave the street property off when there is no street a customer can visit.
You can still describe the business, the phone, the hours a person answers, and the city. You can still show the service area in normal sentences on the page. What you skip is a fake street number. A fake street fails the day someone drives there, and it fails the day a directory checks the door.
If you later open a real counter, add the street on the day the door is real. Same day: door, listing, footer, markup.
What the page itself must show
Markup is not a hiding place. The name, phone, and city in the structured block have to be visible on the page. A visitor should not need to view source to find out who you are. The first screen carries them in text. Roofers who put one city and one phone on the first screen are the pattern. The markup repeats that screen. It does not add a second city the screen never mentions.
Do not mark up a review score you cannot point to on the page. Do not mark up a price range you do not publish. Do not mark up an area served list of thirty cities when the page names three. The extra cities are the same stuffing you already took off the homepage.
A model may format. It may not invent
A model can turn your note into the structured block and check that the commas are in the right places. Hand it the note. Tell it to omit the street if the note has no street. Read the result against the footer before it ships. If a street appeared that is not on the door, delete the street. If a city appeared that is not on the listing, delete the city.
Keep one block on the homepage. A second block with a different address "for the other city" is a second shop. Build a real page for a city you work before you give that city its own address.
Tonight
- Write the public name, phone, and address from the listing, not from memory.
- If there is no door, leave the street out.
- Put that same name and phone on the first screen in visible text.
- Generate the block from the note. Diff it. Ship it only if every line is on the page.
- View the public homepage and confirm the phone matches the truck.
Need the markup to follow the real shop? Start at get started. Mark up the NAP you can stand behind. Do not mint a street. Ethical AI · Frisco, TX · 469-669-2728.
