Schema.org Structured Data: A Practical Guide
Schema.org helps Google understand whether a page describes a product, service, organization, article, or event. It does not guarantee higher rankings, but accurate and up-to-date data can make the result clearer and create an opportunity for rich results. For most business websites and online stores, JSON-LD is the most practical format.

What are Schema.org and structured data?
Structured data is a machine-readable description of the content on a page. It adds context to information that visitors can already see. For example, Google can understand that a price belongs to a specific product, that a text is an article and who wrote it, or that an address belongs to a physical location.
Schema.org is a shared vocabulary of types and properties. Commonly used types include Organization, LocalBusiness, Product, Service, Article, Event, and BreadcrumbList. The choice should follow the actual content and purpose of the page, not the rich result you want to obtain.
Does Schema.org improve your position in Google?
Not directly. Structured data helps Google understand the page more accurately. This may make an enhanced result possible, with a price, availability, event date, or other applicable information, but it does not guarantee higher rankings.
Google is not required to show a rich result, even when the markup is valid. The decision depends on the page type, data quality, Google's guidelines, and the specific search. That is why it is not accurate to promise a specific increase in traffic simply after adding Schema.org.
The same applies to FAQ markup. It does not automatically mean that the questions will appear as an expandable block in the results. It only makes sense when the questions and answers are actually published on the page and are useful to the visitor.
Which structured data format is most suitable?
There are three main approaches: JSON-LD, Microdata, and RDFa. For a new website or ongoing technical optimization, we usually choose JSON-LD because it is separate from the visual HTML and easier to maintain.
| Format | How it is added | When it makes sense |
|---|---|---|
| JSON-LD | A separate data block in the HTML code | The practical choice for business websites, blogs, and online stores |
| Microdata | Attributes directly in the visible HTML | For an existing system that relies on this approach |
| RDFa | Semantic attributes in HTML | For specific integrations and more complex semantic structures |
JSON-LD does not change the page design. On a static website, the data can be defined in the template. With WordPress, a custom CMS, or an online store, it is more reliable to generate it from the current records in the system.
In an online store, the price, currency, availability, and product name should come from the same source used to load them on the page. This could be a catalog, ERP, or API. That way, a price or inventory change does not remain only in one part of the system.
Which Schema.org types are useful for Bulgarian businesses?
You do not need to add every possible type. A better approach is to connect each type to a specific template and process on the website.
- Organization, for the company as a whole: name, logo, website, contact details, and official profiles.
- LocalBusiness, for a business with a real physical address, opening hours, and a service location. Do not invent an address for a company without a public premises.
- Product and Offer, for product pages with a name, image, price, currency, and availability, when these properties apply.
- Service, for pages describing a specific service. Add a price only if it is publicly displayed and actually applies to that service.
- Article or BlogPosting, for articles with an author, publication date, modified date and primary image.
- BreadcrumbList, for the logical hierarchy of a page, for example Home → Services → SEO optimization.
- Event, for real events with a date, location and participation details, not for a standard promotional page.
For a company website, Organization, Service and BreadcrumbList are usually important, while LocalBusiness is only relevant when there is a physical location. For an online store, you would most often start with Organization, Product, Offer and BreadcrumbList.
At the B2B platform for laboratory supplies from Labimex, the product catalogue and store logic are connected. Structured data makes sense when it follows this logic, rather than being added as a separate code layer that does not know the current price or availability.
How are structured data implemented and checked?
- 01Describe the website templates
Separate the homepage, company information, services, categories, products, articles, contacts and other actual templates. For each template, note what the visitor sees and which properties can be filled in correctly.
- 02Choose a minimum set of properties
Start with the data that is available and maintained. Do not add empty or made-up values just to fill the schema. A smaller amount of accurate data is better than a large block full of contradictions.
- 03Generate JSON-LD from the data source
In a CMS or online store, provide data from the database, catalogue, ERP or API. Do not manually maintain the price, availability, phone number or opening hours in separate code if this data changes elsewhere.
- 04Check the syntax and type
Use Rich Results Test for a specific URL or code snippet. Also check the Schema.org validation. Valid JSON does not automatically mean that you have chosen the right type or that the page meets the requirements for a rich result.
- 05Publish and monitor
After publication, monitor the reports in Google Search Console. Open the page itself as well, because the report does not replace checking whether the visible data and JSON-LD still match.
Which mistakes most often make Schema.org pointless?
Marking up invisible content
A common example is a five-star rating in the code without actual reviews and a rating on the page. The same problem occurs with a hidden price, made-up availability or an address that visitors cannot find on the website.
Using the wrong type to achieve the desired result
A service page does not become a Product just because you want to display a price. A blog article is not a product, and a promotional page is not an Event without a real event. The type describes the purpose of the page.
The same code everywhere
Copying one schema across all pages leads to identical authors, prices, addresses or descriptions appearing where they are not accurate. Generate the markup according to the template and the specific record.
Outdated data
In a store, a change to the price or availability must reach the product page and JSON-LD at the same time. For a local business, the same applies to the phone number, address and opening hours. If the data is maintained in several systems, clear synchronisation is needed.
Technical errors
Invalid JSON, an incorrect data type, the wrong currency, a non-existent image or a page blocked from crawling can prevent the result. Check both the code and the accessibility and content of the URL itself.
How much does structured data implementation cost?
The cost depends on the number of templates, the platform and the data source. For a small company website, markup is usually part of technical SEO work. For an online store with products, stock levels and filters, more checks and connections to the catalogue or ERP are needed.
| Situation | What affects the work | Price |
|---|---|---|
| Company website | Number of templates, CMS, organisation of contact and local data | €250-€2,500 |
| Blog or media section | Authors, dates, images, categories and migration of old content | Specified in the quotation |
| Online store | Product templates, price, availability, currency, reviews and filters | €840-€6,300 |
| Custom platform with ERP or API | Synchronization, access permissions, caching, staging environment and monitoring | specified in the quote |
This is a price for technical work, not a promise that rich results will be displayed. If the site has indexing issues, slow templates or incomplete content, these problems must be fixed first. If you need comprehensive technical work, see what SEO optimization includes.
When is it better not to add Schema.org?
Do not add markup just because a competitor has it. If the page is empty, the information is incomplete or the data changes constantly without a reliable source, organize the content and update process first.
Schema.org does not replace good headings, descriptions, internal links, navigation and useful text. It cannot turn an unclear service or disorganized product catalog into a good result.
If the technical foundation does not allow reliable data generation, the site or store should be improved first. For a store with ERP and API, the most important thing is for product information to remain consistent across all systems. This is a task for API integrations and software connectivity, not just for adding code to the page.
Frequently asked questions
- Does Schema.org help with SEO?
- Yes, but indirectly. It helps Google understand the type and properties of the content and can make the result richer, but it does not guarantee a higher ranking or the display of a rich result.
- Which structured data format should I choose?
- For most business websites, blogs and online stores, JSON-LD is the most practical choice. It is separate from the visual HTML and easier to generate through a CMS, ERP or API.
- Does every website need LocalBusiness Schema?
- No. LocalBusiness is suitable for a business with a real physical address or a location where it serves customers. For a company without a public site, Organization is usually more appropriate-without inventing an address.
- Can I add Schema.org to WordPress myself?
- You can, if you know which types are appropriate and check the result with Google's tools. Be careful with plugins that add duplicate or automatically generated data that does not match the page.
- How long does Schema.org implementation take?
- A small business website can be handled in a few working days if the content is well organized. An online store or custom system takes longer because of the dynamic data, integrations and testing.



























