Tell the machine what you do.
Schema is the only place you state your facts directly instead of hoping an engine infers them from page copy. Five kinds, generated for a local business, valid and ready to paste.
Schema markup is structured data in your page’s code that states what your business is, what it sells, and where, in a format built for machines rather than people. Everything else on your site has to be interpreted. Schema is read.
Most local sites have either none of it or a generic block a plugin generated years ago. That matters more now than it did, because an answer engine assembling a recommendation has to decide quickly whether it understands your business well enough to name it. Ambiguity loses to a competitor whose markup is explicit.
Two things separate useful markup from the default kind: using the specific subtype for your category rather than the generic one, and marking up your services individually rather than describing them in a paragraph.
Nothing is sent anywhere. This runs entirely in your browser.
Generates "@type": "Plumber". A specific subtype tells an engine more than the generic LocalBusiness.
The profile list becomes the sameAs property, which is how an engine confirms your Google listing, your Facebook page, and your website are one business.
Generate one of these per service you sell, each on its own page. A single block listing everything is weaker than five specific ones.
The answers here must also appear visibly on the page. Marking up text a visitor cannot see is a guidelines violation.
The profile list is the sameAs property. It is how an engine confirms that the LinkedIn page, the Google listing, and your website are one entity.
Paste this into the head of your page.
Installing it on a real site.
If you run Yoast or Rank Math, both have a schema section per page. Otherwise use a code snippet plugin like WPCode and insert it site-wide or per page. Do not paste it into the post body.
Settings, then Advanced, then Code Injection. Site-wide markup goes in the header field. Page-specific markup goes in that page’s own settings under Advanced.
Per-page markup goes in that page’s SEO settings under the structured data (advanced SEO) tab, which carries a character limit per page. Anything that exceeds the limit goes in Settings, then Custom Code, added to the head and scoped to all pages or the one page it describes.
Edit the theme code and add it to theme.liquid for site-wide, or the relevant template for page-specific.
Hand it to your developer and ask for it in the head element. It is a five-minute change.
Which block goes on which page.
A local business does not need schema on every page. It needs the right block on the five pages that matter, and it needs each fact stated once.
The entity layer, published once in a site-wide snippet so it renders on every page. Page blocks reference its @id, and a reference only resolves if the node it points to is on the same page.
The Business block with your subtype, address, hours, and profiles. This is the page engines resolve you from.
One block per service, on the page that describes it. This is what makes you retrievable for “who does X in Y” questions.
Authorship and dates, so the page can be attributed and cited as a source.
Only where the questions and answers are visible on the page. Never markup-only.
Five ways this goes wrong.
The markup contradicts the page
Schema written once and never touched. The page says new hours, the block says old ones, and the mismatch costs more trust than no markup at all. When a fact changes on the page, it changes in the block.
The generic subtype
A roofing company marked up as LocalBusiness when RoofingContractor exists. The specific subtype is free information, and the generator above picks it for you.
Marking up what visitors cannot see
FAQ blocks for questions that appear nowhere on the page, or reviews nobody can read. That is a guidelines violation, and engines treat invisible facts as unverifiable ones.
Duplicate blocks from plugins
A theme, an SEO plugin, and a review plugin each describing the same page differently. Three conflicting versions of your business is worse than one plain one. Audit what the rendered page actually outputs, then replace rather than stack.
Disconnected blocks
Five blocks that each restate the business name instead of referencing one entity. Use @id so the Service points at the Business and the Article points at the Organization, and an engine reads one coherent graph instead of five strangers.
Before you paste anything.
What is schema markup?
Schema markup is structured data added to a web page that search engines and AI systems both read. It states facts about the page directly, such as the business name, the service being described, or the author of an article, instead of leaving those facts to be inferred from the visible copy. The most common format is JSON-LD, which is what this tool generates.
Does schema markup help with AI visibility?
It helps, and it is not sufficient on its own. Schema makes your facts unambiguous on the one surface you fully control, which raises an engine’s confidence that it understands your business. It does not make your business worth recommending. A page with perfect markup and generic content still loses to a page with specific, quotable substance.
Which subtype should I use?
Use the most specific one that accurately describes your business. Schema.org defines subtypes like Plumber, Dentist, and RoofingContractor beneath the general LocalBusiness type, and the specific one carries more meaning. If nothing fits, LocalBusiness is a valid fallback and is better than no markup.
Can I put all my services in one Service block?
You can, and it is weaker. One Service block per service, on the page that describes that service, is what makes each one individually retrievable. A single block listing eight services reads to an engine as one vague offering rather than eight specific ones.
What is @id, and why do my blocks reference each other?
An @id is a stable name for an entity, usually your site URL plus a fragment like #business or #organization. When your Service block points its provider at the Business block’s @id instead of restating the business name, an engine reads one connected graph instead of separate blocks that happen to use similar words. One caveat: a reference only resolves if the node it points to renders on the same page, which is why the Organization and Person block belongs in a site-wide snippet rather than on one page. The generator adds these references automatically when you fill in your website.
Is FAQ schema still worth adding?
Yes, though the reason has changed. Google narrowed the rich result for FAQ markup, so most sites no longer get the expanded listing on the results page. Answer engines still parse it, and a marked-up question and answer pair is one of the cleanest formats for a model to lift an answer from. Add it because engines read it.
Do the answers have to appear on the page?
Yes. Marking up content that a visitor cannot see is a violation of Google’s structured data guidelines and can result in a manual action. Every question and answer in your FAQ markup should be visible in the page content as well.
How do I know if it is working?
Run it through the Schema.org validator to confirm it is syntactically valid, then the Google Rich Results Test to see whether it qualifies for any enhanced display. Both are free and take under a minute. Neither tells you whether AI will cite you, only that the markup is readable.
My plugin already adds schema. Do I need this?
Check what it actually outputs before adding anything. Many plugins generate a minimal LocalBusiness block with the wrong subtype and no service markup, which is better than nothing and well short of useful. Two blocks describing the same thing differently is worse than one correct block, so replace rather than stack.
Markup makes you readable. It does not make you the answer.
See every gap, scored.
The AI Visibility Audit scores your AI visibility across six areas and 30 criteria, tracks your prompts across ChatGPT, Google AI Overviews, and Perplexity, and sets what to fix first and who should do it.