Why generation works well here
The vocabulary is published, the syntax is strict, and correct examples are plentiful. That combination is close to ideal for a tool, and the output is usually valid on the first attempt.
It also removes the part people find tedious. Nesting, required fields and correct type names are fiddly by hand and consume an hour that a small business owner would rather spend elsewhere.
Our page on schema markup covers what the vocabulary is for. This page is about the specific risks of producing it with a tool rather than by hand.
Why the values are the danger
Prose can be vague. Markup cannot. A field holds a value, and whatever it holds is read as a definite statement about your business by anything that reads the page.
A tool asked to produce business markup will fill fields it has no information for. Founding years, price ranges, area served and rating values all get plausible defaults unless somebody notices and removes them.
That is the single most important check. Read every value as a sentence about your business and ask whether it is true. Anything you cannot confirm should be deleted rather than adjusted.
What to check before publishing
Validity is the floor, not the finish. A validator confirms the syntax and the required fields. It cannot tell you that the address is last year's or that the rating value describes reviews nobody left.
- Every value confirmed against something real
- No field kept that you cannot evidence
- Nothing described that a visitor cannot see on the page
- Review markup only where genuine reviews are displayed
- Opening hours matching the hours in the content
- One business entity, described the same way site-wide
- The whole block read aloud as sentences about your business
The mismatch problem
Markup that contradicts the visible page is worse than no markup, because the contradiction itself is a signal and it is not a good one. Systems read both, and the disagreement is easy to detect.
Generated markup is especially prone to this, because it is produced in one pass and then never revisited while the page beneath it changes. Prices move, hours change, and the code keeps stating the old values.
The durable fix is to generate the markup from the same source as the content, so drift is impossible. Where that is not available, tie the code to the same review cycle as the page it describes.
Fields that need a person
Anything describing credentials, ratings, prices or area served. These are the same items on the never list from our page on what to keep off, and putting them in code does not change that.
Review and rating fields are the sharpest case. Marking up ratings that are invented, borrowed or hidden is a policy violation and a consumer protection risk. Nothing here is legal advice.
Identity fields matter too. Our page on entity clarity covers why the business name and location have to be stated identically everywhere, including inside markup.
Keeping it maintainable
Keep one block per page rather than fragments scattered through the markup. It is easier to read, easier to check and far easier to correct when something about the business changes.
Document which pages carry which types, in a file somebody maintains. Without that record, a site quietly ends up with three different descriptions of the same business in three places.
Re-check after any redesign. Template changes routinely leave markup describing a page shape that no longer exists, and nothing at all will tell you that it happened.
How much is enough
Less than a generator will offer. The organization or local business once, the service or product on its own page, questions where a real set exists, and steps where a real procedure exists.
Every additional type is something to maintain and something that can become false. Stale markup is worse than absent markup, and the maintenance burden is the reason to be conservative.
Our page on structured data for answer engines covers which types actually earn their keep on a small business site.