Schema markup is a block of JSON in your page source that states facts in a form a machine can lift without interpreting your prose. For a business the useful type is LocalBusiness (or one of its subtypes), and the fields that earn their place are the ones a person would ask for: name, address, phone, hours, and what you actually do.
This is the distinction most tools skip. Markup with the fields left blank passes a validator and tells an assistant nothing:
{
"@type": "LocalBusiness",
"name": "Joe's Pizza",
"address": "",
"telephone": ""
}We count that address as missing, because a crawler cannot quote an empty string either. If you cannot fill a field in truthfully, leave it out — an omitted field is honest, an empty one is noise.
PostalAddress, not a single line of text.A software company legitimately has no opening hours, and demanding them would be demanding invented facts. The right set depends on what you actually are.
Put it in a <script type="application/ld+json"> block in the served HTML. Two things silently destroy it:
JSON-LD. It sits in one block, it does not entangle your markup, and it is what search engines recommend.
No. Put business facts on the pages that carry them — home and contact — and page-specific types elsewhere only where they are true.
It makes your facts quotable. It does not make an assistant choose you, and nothing honest promises that.
It wastes the opportunity rather than penalising you: the block is discarded, so the page is treated as having no markup at all.
Where does your site stand? The scan is free, takes about 60 seconds, and needs no account. It fetches your homepage exactly the way GPTBot, ClaudeBot and PerplexityBot do and tells you what they receive.