
Key takeaways
- Schema describes the visible page. It does not create an office, a review, or a price the visitor cannot see.
- Mark up Organization, WebPage, Article, and Service only when the page already shows those things. Never invent LocalBusiness or reviews.
- Change the HTML and the JSON-LD in the same week. A green validator on fiction is still fiction.
You installed a schema plugin. The validator turned green. The graph now claims a storefront you do not have, a 4.9 rating nobody left, and an Offer with a price of zero.
That is not optimization. That is a second company written for machines. Honest schema markup describes the page a visitor can already read. JSON-LD that invents a LocalBusiness you do not operate, a review nobody left, or an Offer without a price is not a best practice. It is a trust problem.
Visible first. If the visitor cannot read the claim, it does not belong in the graph.
If it is not on the page, leave it out
Schema is a machine-readable restatement of the page. Search systems use it to understand type and entity. They do not use it to mint a business you have not published.
The useful types for a small site are short: Organization or Person, WebSite, WebPage, Article, Service, BreadcrumbList. FAQPage only when the questions are on the page and a buyer asked them. Offer only when a price is visible.
That list is not a score. More types is not more SEO. A plugin that dumps every possible type is writing a marketplace the visitor never saw.
SEO and GEO for small businesses already named the rule: the same claims in the title, the heading, the body, and the schema. How to rank your website is the longer version: metadata cannot invent authority. Schema is metadata.
The test is cheap. Open the page. Read it on a phone. Then open the JSON-LD. Every claim in the graph should already be a sentence a person can finish.
If you would be embarrassed to put the claim in the heading, it does not belong in structured data.
Visible first is not a style preference. Search systems have been discarding invented reviews, invented prices, and invented locations for years. Answer engines that check sources will discard them too.
Monday: view source on your homepage. Find the JSON-LD. Read it next to the first screen. Circle every claim the visitor cannot see. Those come out.
Office, review, and price fictions
LocalBusiness without an office. LocalBusiness is a place. It expects a name, an address, and usually hours. A plugin that marks every site as a LocalBusiness is inventing a storefront. A remote studio, a distributed network, or a founder working from a kitchen is not a LocalBusiness just because local search is valuable. Organization is the honest type when there is no public place.
CLICK.BLUE is an Organization. We do not invent a local office. If your business is a shop, a clinic, or a yard a customer can walk into, LocalBusiness can describe that place — after the page already shows the name, the address, and the hours. If you do not have that place, do not mint one in JSON-LD.
If you keep a map listing for a real location, keep the listing and the site in agreement. Do not add a second address in schema that the homepage will not admit. An empty accurate listing is better than a rich invented pin. Google Business Profile vs a website is the map half of that rule.
Review without a review. AggregateRating and Review are for ratings a visitor can read on the page, with a source you will stand behind. A self-awarded 5.0, a quote you wrote, or a number imported from a dashboard the page does not show is a fake review in a different syntax. Search systems treat that class of fiction as spam. Do not mark it up. If you have no reviews on the page, you have no Review schema.
Offer without a price. Offer is a commercial object. It needs a price the visitor can see. "Price on request," a blank price, or $0 so the validator turns green is not an Offer. It is a form. If the page says "get a proposal" and a later step names a range, mark the page as a Service or a WebPage. Do not invent an Offer. Offer schema without a price is the same mistake as a LocalBusiness without a door.
Those three fail the same way. Someone wanted a rich result and wrote a cleaner company than the HTML will admit. The graph believed them until it did not.
| Markup | Honest use | Fiction |
|---|---|---|
| Organization | The name, URL, and founding year already on the site | A street address you do not occupy |
| WebPage / Article | The page or article the person is reading | A Product or Review the page never shows |
| Service | A service the page already describes | A list of jobs the site does not sell |
| Offer | A priced thing the visitor can see | An Offer with no price, or a $0 stand-in |
| LocalBusiness | A real place a customer can visit | A pin for a kitchen, a coworking lobby, or nothing |
Mark only what the visitor already saw
Mark the types the page already is.
Organization. One name. One URL. A founding year if you publish it. A logo the site already uses. Contact that matches the contact page. No street you do not occupy.
WebSite and WebPage. The site and the URL. The title and description should match the visible document, not a keyword list you hoped would rank.
Article. The article on this URL. Headline, date, and author that match the byline. Not a NewsArticle if you are not a newsroom.
Service. A service the page describes in nouns a buyer uses. Provider is the Organization. Do not list every job the team might take someday.
FAQPage. Only questions that appear on the page, in the buyer's words, with answers you will stand behind. A farm of invented questions is not a FAQPage.
BreadcrumbList. The path the person can follow. Not a tree of URLs that do not exist.
JSON-LD is the usual format because it sits in a script and does not fight the layout. Microdata in the HTML is fine if it stays in sync. The format is not the integrity. The match is the integrity.
A short honest block looks like this: an Organization with the trading name, the site URL, and a foundingDate you already print. It does not include an address you do not have. It does not include a review. It does not include an Offer.
What visible first looks like:
- The organization name in the graph matches the name in the header and the footer.
- A Service node names a service the page already explains.
- An Article node matches the article on the URL.
- An Offer node includes a price the visitor can see, in the same currency, without a hidden "from" the page never states.
- A LocalBusiness node includes an address the page publishes and you will answer mail at.
What it is not: a Review the team wrote, a rating of 4.9 with no source, a price of 0 so the field validates, or a city you "serve" because a plugin asked for a geo.
Change the HTML and the JSON-LD together
When the offer changes, change the title, the heading, the body, and the schema in the same week. A current page with last year's service list is a second story with a date stamp.
Do the markup yourself when you can write the offer in one sentence and stand behind it, the public pages already agree — or will this month — and you will not publish a LocalBusiness, a review, or an Offer the visitor cannot see. Skip the schema project when the homepage is still a slogan, a plugin is offering "100 rich results," or someone wants a pin for a city you do not serve. In that case the next step is not JSON-LD. It is the pages.
SEO and content is the ongoing version of that alignment. Web development is how those facts get a site that can hold them. Neither is a rich-result product.
If you already know the offer and need the site to say it — and to keep saying it in search — that is a full website and the SEO that follows. Use the rule. Leave other companies' graphs on their sites.
Monday: if you change a service name on the homepage, open the JSON-LD the same afternoon. If you cannot find it, you do not control the markup. The plugin does.
A green validator is not a business
A schema plugin is software. A validator is a checker. Neither writes the offer. The unfinished site is still the expensive part: the designer, the writer, the evenings, the page that does not yet look, read, or retrieve like a business.
We have shipped sites since 2014 — more than twelve years, more than fifty businesses, more than a hundred websites. Sometimes the build includes structured data that matches the public site. Those are byproducts of pages we will stand behind. They are not the product.
Describe the page you shipped. Leave the rest out of the graph. If the site does not yet say the thing, start with the site.