• Technical SEO

Implementation of schema.org structured data: so that the search engine reads the site as data, not as text

Schema.org's implementation of structured data is JSON-LD blocks in site templates that directly tell the search engine the price, availability, address, hours, and path of sections instead of leaving them to guess from the text. We mark up your business type, check each declared entity with what is actually visible on the page, and remove what is not there. In our own sample, the spread turned out to be from zero blocks to ten types on one domain, with zero occurring more often than site owners believe.

See how it works
Price
after a free audit
Guarantee
30 days after project sign-off
What do we put
JSON-LD into templates: Organization or LocalBusiness, Product and Offer, BreadcrumbList, WebSite, industry types
after a free audit
Price
30
Guarantee

days after project sign-off

JSON-LD into templates: Organization or LocalBusiness, Product and Offer, BreadcrumbList, WebSite, industry types
What do we put
5-15
Implementation period

working days, depends on the number of page types

10
The most complete set in its own dimension

types of JSON-LD at the clinic site — the maximum among the 16 sites measured

zero marking blocks: recorded in nine sample projects
The most frequent find
free check of existing markup, 2-3 working days
Before the estimate
positions and showing the extended snippet: this is Google's decision, not the contractor's
What we do not promise
What's included

Complete list of work and what you get as a result

  • Inventory of the existing markup for each type of page — so as not to post a second time what is already there and not pay for it
  • Organization or LocalBusiness with address, coordinates, phone and schedule: the data on the site no longer differ from the profile in Google Business
  • Product and Offer on cards with wildcards from CMS fields — price and availability are updated with the catalog, not manually once a quarter
  • BreadcrumbList at all nesting levels: in the output, instead of the bare address, the path of the sections is visible
  • WebSite with a search script - apply for a search window on the site directly in the results
  • FAQPage only where the questions and answers are actually on the page in visible text
  • Industry markup for your case: MedicalClinic and Physician for clinics, Store or ClothingStore for stores, Organization for manufacturers
  • Removal of markup that declares non-existent: ratings without reviews, prices without products, schedule that does not match the real one
  • Running each type through Rich Results Test and Schema Markup Validator with zero errors in the report
  • Connecting the report of advanced results in Search Console and analyzing the first data after the transition
  • A note for your developer: where exactly is the markup block and what happens to it when the theme changes
When this service isn't right

What's not included — so there are no surprises at delivery

  • Collecting and Publishing Feedback - Markup describes what is, not creates it
  • The promise that Google will show an enhanced snippet: this is its solution
  • The introduction of missing fields in the CMS, if it requires refinement of the engine, is evaluated separately
  • Writing texts and questions for pages
  • Work with marking on third-party sites and in other people's offices
Who it's for

Situations where this service delivers results

Scenario 1 of 4

A store where the price and availability are on the page, but not in the data

The buyer sees the price, the bot sees a paragraph in which this price is somewhere. Product and Offer give it as a separate field along with currency, availability, article and brand. The side benefit is applied: the same set of fields is needed for the product feed, so the markup work covers half of the Merchant Center work. The limit is also applied - the feed does not make your price competitive.

We'll review your situation in a free audit

A free test of what your site is currently giving to the search engine

Marking is either there or there is not - it can be seen in a minute. Much more important is another: whether the site has data that can be marked up, and whether the existing markup does not declare something that is not on the page. The second case is worse than no markup at all.

What we measure

  • What types of markup are there now?Complete list of JSON-LD blocks and microdata by page type. In the measured sample, the spread is from zero blocks to ten types on one site.
  • What is missing for your type of businessThe store needs Product, Offer, BreadcrumbList; clinics — MedicalClinic and Physician; to the manufacturer — Organization with address and contacts.
  • Markup that declares non-existentThe most dangerous point. A markup rating with zero page reviews is a reason for manual sanctions, not an advantage. We found this in our own sample and call it directly.
  • Consistency with contentDo the phone number, hours of operation and address in the markup match what is written on the page. Disagreements happen more often than it seems.
  • Availability of dataDoes the CMS have fields from which the markup can be filled automatically: price, availability, article number, brand. If they are not there, this is a separate work before marking.
  • Validator errorsWhat the official review tools and the Advanced Results report in Search Console say about your pages.

What you get

  • List of available markup types for each page type — with examples.
  • A list of what's missing, in order of impact on issuance.
  • Separate list of risk places: markup that declares what is not on the page.
  • Conversation for 30 minutes on the document.

Timeline: 2-3 working days

Why is it free

Because the check takes hours, and the difference in the estimate between "add two types" and "enter the fields in the database, and then mark" is multiple. Calling a fork for testing would mean guessing.

What's next

After checking, we give a list of marking types with an estimate for each and the deadline. If a part can be closed by adjusting the existing module, let's say, this part will not be included in the estimate.

Short form: your contact and site URL

  • Contract, act and 30-day warranty

    Every project gets a written contract: scope, deadlines, amount, acceptance procedure. After delivery — act and invoice, then 30 calendar days of warranty.

  • Sole proprietor & bank transfer

    The contractor is a registered sole proprietor. Payment by invoice with closing documents.

  • Rights & access — yours

    Code, design and materials transfer to you after full payment. Domain, hosting, repository and analytics are registered to you.

  • Client portal instead of email chains

    During the project you get access to a portal: contracts, invoices, acts and project status in one place.

  • European clients

    Among our work — projects for Norway, Bulgaria, Moldova and Spain.

  • Verifiable numbers

    Every case in the portfolio comes with a link to a live site and a technical measurement.

  • Audit first, then pricing

    There is no price list on the site intentionally: the scope of the same work differs multiples between clients.

  • We say "no" when unsure

    If the task isn't ours or the deadline is unrealistic — we tell you upfront.

What affects the price

Why two seemingly identical tasks are priced differently

  • Number of page typesPrime factor. One type is one template and one check. A store with main, category, card, brand, article and contact gives you six different sets of fields, and each one has to be checked against the live page.
  • Where to get the dataCMS fields are filled in - substitution is done in an hour. The prices and characteristics, which are in the price list with a picture or inside the description with solid text, must first be obtained from there, and this is a separate line of the estimate, which is not directly related to the markup.
  • Method of delivery of markingsThere is access to templates - the markup goes into the code. There is none - the tag manager remains, and this is another check: you need to make sure that the bot has waited for the script to be executed. The client renderer adds a prerender, and it's no longer a markup job.
  • Status of existing markupAn empty site is easier to mark than a site with ten types of questionable quality. In the second case, first the inventory and cleaning, and that is where the non-existent declarations are located, which are removed urgently.
  • Language versions and industry specificsEach language branch multiplies the check. Medical markup adds a reconciliation of doctor specialties to what is written on the page—it's longer than Product and Offer, where everything is taken from the fields.
Cases

Tasks and results in numbers — all metrics measured by us

online store of tactical equipment with a catalog of more than 50,000 items

Task
To give the searcher a structured view of the store, its assortment and physical point.
Solution
Markup of the store, search script, contacts, coordinates, and work schedule as individual JSON-LD entities on the main page.
Result
9 types of structured data on the main page: Store, WebSite, SearchAction, ContactPoint, EntryPoint, OpeningHoursSpecification, GeoCoordinates, Place, PostalAddress — with 54,302 products and 635 categories in the catalog. The first response from the server is 413.8 ms, the main HTML is 421.5 KB. Measured on 07/31/2026.

clinic of plastic surgery and aesthetic medicine

Task
Make it so that the search engine and AI assistants correctly understand the profile of the clinic and the composition of doctors.
Solution
Medical markup with a description of the clinic, doctors and their specialties, breadcrumbs and a search script; bots are served pre-rendered HTML, not the application shell. A separate robots.txt with a separate policy for AI crawlers.
Result
10 JSON-LD types: MedicalClinic, Physician, BreadcrumbList, ListItem, Occupation, PostalAddress, Country, WebSite, SearchAction, EntryPoint — the most complete set of structured data among the 16 sites measured. The bot is given 126 KB of pre-rendered HTML in 145 ms to the first byte; site map for 89 addresses without errors. Measured on 07/31/2026.

Ukrainian SaaS platform for rewriting product descriptions

Task
Check your own markup before showing a project as an example.
Solution
Running all JSON-LD blocks through the validator and checking each declared entity against what is visible on the page.
Result
7 in-place markup types—SoftwareApplication, Offer, Organization, WebSite, FAQPage, Question, Answer—first response 220.6 ms and 140.8 KB of HTML. And the risk was found: the markup announced a rating of 4.8 out of 50 ratings, while the page had zero mentions of the words "review" and "rating". This is a direct reason for manual sanctions, and we fixed it as a defect in our own project. Measured on 07/31/2026.

Did not find your case?

Describe how it works on your side — we will tell you whether “Implementation of structured data” fits and what it means in your situation. No brief and no call: one question, one answer.

Process steps

Transparent stages with approval at every step

Total duration:5–15 days

  1. Page type map and layout plan

    1-2 working days

    We go through the site by type: main, category, card, article, contacts, boarding. For each type, we fix which entities are relevant and what should be visible on the page so that these entities have the right to be there. Here is a list of risky places that we shoot first.

  2. Reconciliation of data sources in CMS

    1-3 working days

    Let's see from which fields the price, currency, availability, article number, brand, address, schedule will be taken. If there is no field, we fix it with a separate task before the markup, and not inside it: the constant in the template will begin to lie after the first price change.

  3. Implementation in templates

    1-6 working days

    JSON-LD blocks go into templates by server rendering. Organization is declared once and receives an @id to which the rest of the entities refer, otherwise three different companies with the same name appear on the same domain. Works are arranged by type of pages - hence the spread in days.

  4. Validation and cleaning

    1-2 working days

    We run each type through the Rich Results Test and Schema Markup Validator, and then compare the declared with the visible text of the page. Everything that is not on the page is removed - regardless of how profitable it would look in the output.

  5. Search Console and the first analysis

    1-2 working days

    We connect the report of advanced results, wait for the detour and see what Google recognized as valid and what it marked as an error. We analyze the first data together with you. After major changes to the catalog, this report should be opened again - a one-time action does not end the matter.

Technologies & integrations

What we build on and what it connects to

Stack

  • JSON-LD as a separate block, not microdata in a layout: going through a template change. The limit is the block collected on the client, the bot may not wait
  • schema.org as an entity dictionary. The limit: there are hundreds of types, and Google supports advanced results only for a part
  • The Rich Results Test shows what Google qualifies a snippet for. The border is silent about the correct types, which it does not know how to show
  • Schema Markup Validator checks syntax and vocabulary more extensively than Google. The border - its "green" snippet does not promise
  • OpenCart and WordPress templates are the right place for the block. Limit: updating the topic erases the edit, so we write where it lies
  • Google Tag Manager is a temporary way when the code is not accessible. Boundary: The markup lives in JavaScript and depends on whether the bot executes it
  • Search Console, the advanced results report is the single source of truth about your pages. Boundary: Data comes after a round trip

Integrations

  • Google Search Console
  • Google Merchant Center
  • GA4
  • Google Business Profile
Markup in a template vs. markup through the tag manager

How this option differs from the alternative

When the bot sees the markupimmediately in the HTML of the first response
Data sourceCMS fields: price and availability change with the catalog
Changing the theme of the sitethe block must be moved, and we write where it lies
Speed ​​of implementationaccess to templates and releases is required
When appropriatea permanent solution
What we need from you

We can't start without this — best to prepare in advance

  1. Access to site templates: put the markup correctly in the code, and not hang it on the side.
  2. Current company data — legal address, coordinates, telephone, work schedule. Those that should be in the markup, not those that once ended up in the footer.
  3. A list of CMS fields from which price, availability, article and brand are taken. If there is no field, it is immediately visible, and we will not put the constant in the template.
  4. Access to Search Console - without it, no one, including us, can see the Advanced Results report.
  5. The decision regarding reviews: if there are no reviews on the site, we do not mark the rating under any circumstances.
  6. One person from your side who can confirm that the address and schedule in the markup match reality.

If something is missing — let us know, we'll help you gather it or do it as a separate task.

FAQ

Most frequently asked questions — with concrete answers

Will markup boost my rankings?

No, and an honest contractor will not promise this. Structured data is not a ranking factor. They give something else: the page becomes suitable for an expanded view in the output — with price, availability, breadcrumbs instead of a bare address. Such a snippet takes up more space on the screen and gives more reasons to click at the same position. That is, the mechanism works through a click, not through a position. And whether to show an extended result or not, Google decides and can change its mind.

We already have something marked - is that enough?

Depends on what exactly. In our sample there is a site with ten types of markup and there are stores where only Organization with contacts stands on the entire CMS: the searcher knows the name of the company and does not know anything about the product. Both states are described by the words "markup exists". Therefore, the check begins with a list of types for each type of page, and not with the question "yes or no".

Is it possible to mark a rating if there are no reviews yet?

No. This is a direct path to manual sanctions for markup reviews about yourself. In our own project, we found exactly such a case: JSON-LD had a rating of 4.8 out of 50 ratings, and there was no mention of the word "feedback" on the page. We recorded it as a defect in our own case and removed the block. If you need stars in the output, you must first make sure that the reviews are on the page. Their collection is a separate work, and it is not included here.

When will enhanced snippets appear?

The term is not named by anyone, and we will not. Once implemented, Google must re-visit the pages, recognize the markup as valid, and individually decide whether to show the expanded result. The first and second are visible in the report of advanced results of Search Console - there we observe. The third is nowhere to be seen. To name the date of appearance of the snippet would mean to promise for someone else's company.

Put in a template or through the tag manager?

In the template. Via the dispatcher it works, and sometimes it's the only quick way when the code isn't accessible - but then the markup lives in JavaScript and depends on whether the bot executes it. We take this path as temporary: we installed it, agreed on the release, transferred it to the code. To present it as a solution would be to sell convenience over reliability.

What does markup do for the product feed and Merchant Center?

The same data set. Correct Product and Offer with SKU, price, currency and availability is exactly what Merchant Center and platforms are asking for. If the CMS fields are filled to the mark, the feed is collected from them, and the work is not done twice. The limit here is obvious: the feed does not make your price competitive, it only shows the buyer a comparison with everyone who is already there.

Our site is assembled in the browser - will the markup work?

Only if the bot waits for her. A practical way out is to give ready HTML to bots. On the measured site of the clinic, this is done: the browser receives a 3 KB shell, and the search bot receives a pre-rendered page of 126 KB in 145 ms, and it is in it that all ten markup blocks are located. The same approach closes the issue of AI assistants, which mostly do not execute JavaScript. Honestly: no one will give any guarantees of being mentioned in the assistant's answer, and the volume of this traffic is still small.

Who maintains markup after implementation?

If the data is substituted from the CMS fields, no one: the price has changed in the card, and the markup has also changed. Two things require manual intervention. The first is a change of theme or template: the block can go with the old files, so we leave a note where it lies. The second is a change in reality: a new schedule, a different address, a closed pick-up point. In our sample, there happened to be a store where the self-pickup point has been listed as closed for several months, and precisely this data would go into the markup as relevant.

Submit the website address and tell us what kind of business it is.

The answer is a list of markings that you already have, a list of what is missing for your type of business, and a separate list of risky places. If it turns out that there is nothing to mark yet, you will hear about it in the first email.

View cases
  • Reply within 2 hours
  • No commitment
  • We work under a contract

There is no price list on the site on purpose: the same work differs several times over between two clients, and a “from” figure explains nothing in that case. First a free audit — we count your pages, duplicates and speed — then we name the sum and the deadline and fix both in the contract.