Structured data and schema markup guide
Have you ever wondered why some Google results show stars, prices, FAQ accordions or recipe images, and your website does not? The answer is structured data (also called schema markup).
Structured data are machine readable code snippets that help search engines understand the content of your website. They are one of the most underrated levers in SEO, and at the same time one of the most effective. At GoldenWing, as an SEO agency in Vienna with more than 3 years of experience, we have measured the effect hundreds of times: structured data implemented properly can raise the click through rate by 20 to 40 percent.
In this guide we explain everything you need to know about structured data, from the basics through the most important schema types to the concrete implementation with code examples.
What is structured data?
Structured data are standardised code formats that describe the content of a web page for search engines. Instead of only analysing the visible text (which search engine crawlers do anyway), structured data deliver explicit information about the content.
An example: if your website says "Wiener Schnitzel, 14.90 euros", Google does not automatically know whether that is a product, a recipe or a menu. With structured data you tell Google unambiguously: "This is a recipe named Wiener Schnitzel, with a preparation time of 45 minutes, 520 kcal and a rating of 4.8 out of 5 stars."
The standard: Schema.org
Structured data are based on the vocabulary of Schema.org, a joint project of Google, Microsoft (Bing), Yahoo and Yandex. Schema.org defines more than 800 types and 1,500 properties that can describe everything: people, companies, products, events, recipes, articles, FAQs and much more.
The major search engines have agreed on this shared vocabulary, which simplifies implementation enormously. You write the code once and Google, Bing and other search engines understand it equally.
Why does structured data matter for SEO?
Structured data have three central advantages for your SEO:
1. Rich results (rich snippets)
Google can enrich your search results with additional information: star ratings, prices, images, FAQ accordions, breadcrumbs and more. These extended snippets catch the eye immediately in the search results and achieve clearly higher click rates.
2. Better understanding
Search engines understand the context of your content better. That can indirectly help your ranking, because Google matches your page to the right search queries.
3. Knowledge graph and entities
Structured data help Google recognise your company as an entity in the knowledge graph. That strengthens your brand authority and can lead to a knowledge panel of your own.
JSON-LD versus microdata versus RDFa: which format?
There are three formats for structured data. Here is the comparison:
| Format | Recommended by Google | Difficulty | Maintenance | Separate from HTML |
|---|---|---|---|---|
| JSON-LD | Yes (preferred) | Easy | Easy | Yes (in a ` |
JSON-LD (recommended)
JSON-LD (JavaScript object notation for linked data) is the format Google explicitly recommends. The code is placed in a `<script>` tag in the `<head>` or `<body>`, completely separate from the HTML markup.
Advantages of JSON-LD:
- Easy to implement, no need to touch existing HTML
- Easy to maintain, changes happen in one separate block of code
- Flexible, can be generated dynamically with JavaScript
- Preferred by Google, an explicit recommendation in the Google documentation
- Friendly to debug, clearly structured, readable code
An example of a simple JSON-LD snippet:
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "GoldenWing",
"description": "Web design and SEO agency in Vienna",
"url": "https://goldenwing.at",
"telephone": "+43-XXX-XXXXXXX",
"address": {
"@type": "PostalAddress",
"streetAddress": "Beispielstraße 1",
"addressLocality": "Wien",
"postalCode": "1010",
"addressCountry": "AT"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 48.2082,
"longitude": 16.3738
},
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
}
}
Microdata
Microdata is embedded directly in the HTML. It uses special HTML attributes such as `itemscope`, `itemtype` and `itemprop` to mark up the content.
Example:
<div itemscope itemtype="https://schema.org/LocalBusiness">
<h1 itemprop="name">GoldenWing</h1>
<p itemprop="description">Web design and SEO agency in Vienna</p>
</div>
Microdata works but is harder to maintain, because the code sits inside the HTML. A change to the layout can damage the schema by accident.
Our recommendation
Use JSON-LD. It is simpler to implement, easier to maintain and preferred by Google. In all of our projects at GoldenWing we use JSON-LD exclusively.
The most important schema types at a glance
Schema.org offers more than 800 types. Here are the most important ones for Austrian websites and online shops:
1. Organization and LocalBusiness
Describes your company: name, address, contact details, opening hours, logo.
When to use it: on every company website. LocalBusiness for local businesses, Organization for companies operating across regions.
Rich result: knowledge panel, local pack in Google Maps.
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "GoldenWing",
"image": "https://goldenwing.at/logo.png",
"@id": "https://goldenwing.at/#organization",
"url": "https://goldenwing.at",
"telephone": "+43-XXX-XXXXXXX",
"priceRange": "€€",
"address": {
"@type": "PostalAddress",
"addressLocality": "Wien",
"addressCountry": "AT"
},
"sameAs": [
"https://www.linkedin.com/company/goldenwing360",
"https://www.instagram.com/goldenwing360"
]
}
2. Product
Describes a product: name, price, availability, ratings, images.
When to use it: on every product page of an online shop.
Rich result: price, availability and rating stars right in Google search.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Premium web design package",
"description": "Professional web design including SEO optimisation",
"brand": {
"@type": "Brand",
"name": "GoldenWing"
},
"offers": {
"@type": "Offer",
"price": "2990",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock",
"priceValidUntil": "2026-12-31"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "47"
}
}
3. FAQPage
Describes a page with frequently asked questions and answers.
When to use it: on FAQ pages, product pages with an FAQ section, blog articles with an FAQ part.
Rich result: expandable questions and answers right in the search results.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What does a professional website cost?",
"acceptedAnswer": {
"@type": "Answer",
"text": "A professional website costs between 2,000 and 15,000 euros depending on scope. Simple websites start at 2,000 euros, e-commerce shops at 5,000 euros."
}
},
{
"@type": "Question",
"name": "How long does it take to build a website?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Building a website usually takes 4 to 12 weeks, depending on the scope and complexity of the project."
}
}
]
}
4. Article and BlogPosting
Describes an article or blog post: title, author, date, image.
When to use it: on blog articles, news posts, guides.
Rich result: article carousel, top stories (for news).
5. BreadcrumbList
Describes the navigation structure (breadcrumb navigation) of a page.
When to use it: on every page with breadcrumb navigation.
Rich result: breadcrumbs instead of the URL in the search results.
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://goldenwing.at/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Blog",
"item": "https://goldenwing.at/de/blog"
},
{
"@type": "ListItem",
"position": 3,
"name": "Schema Markup Guide",
"item": "https://goldenwing.at/de/blog/strukturierte-daten-schema-markup-guide"
}
]
}
6. HowTo
Describes a step by step set of instructions.
When to use it: for tutorials, instructions and guides with concrete steps.
Rich result: steps with images right in Google search.
7. WebSite (with SearchAction)
Describes your website and enables the sitelinks search box in Google.
When to use it: once on the home page.
Rich result: a search box right in the search results.
{
"@context": "https://schema.org",
"@type": "WebSite",
"name": "GoldenWing",
"url": "https://goldenwing.at",
"potentialAction": {
"@type": "SearchAction",
"target": "https://goldenwing.at/suche?q={search_term_string}",
"query-input": "required name=search_term_string"
}
}
Implementing schema markup step by step
Here is the approach we have proven for implementing structured data:
Step 1: audit the current situation
Before you start, check which structured data already exist on your website. Many CMS systems and themes add basic schema automatically.
Tools for the audit:
- Google rich results test (search.google.com/test/rich-results)
- Schema markup validator (validator.schema.org)
- Google Search Console, section enhancements
Test your website with our SEO checker as well, to get an overview of your SEO status.
Step 2: set priorities
Not every schema type matters equally for every website. Our recommendation by priority:
Priority 1 (must have):
- Organization and LocalBusiness (every company)
- BreadcrumbList (every multi page website)
- WebSite with SearchAction (home page)
Priority 2 (should have):
- FAQPage (when FAQ content exists)
- Product (for online shops)
- Article and BlogPosting (for blogs)
Priority 3 (can have):
- HowTo (for instructions)
- Event (for events)
- Recipe (for recipes)
- VideoObject (for video content)
- Review and AggregateRating (for ratings)
Step 3: generate the schema
You have three options for creating schema markup:
Option A: write it by hand
The most flexible method for developers. You write the JSON-LD directly and place it in the `<head>` or `<body>` of your page.
Option B: use schema generators
Tools such as the Google structured data markup helper, the Merkle schema markup generator or TechnicalSEO.com help you create schema without coding.
Option C: use CMS plugins
For WordPress and other CMS there are plugins that generate schema automatically (see the next section).
Step 4: implementation
Place the JSON-LD snippet in the `<head>` of your page (preferred) or at the end of the `<body>`. In Next.js (as we use it at GoldenWing) it looks like this:
export default function BlogPost({ post }) {
const jsonLd = {
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": post.title,
"datePublished": post.publishedAt,
"dateModified": post.updatedAt,
"author": {
"@type": "Organization",
"name": "GoldenWing"
},
"publisher": {
"@type": "Organization",
"name": "GoldenWing",
"logo": {
"@type": "ImageObject",
"url": "https://goldenwing.at/logo.png"
}
},
"description": post.excerpt,
"mainEntityOfPage": {
"@type": "WebPage",
"@id": \`https://goldenwing.at/de/blog/\${post.slug}\`
}
};
return (
<>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
/>
{/* page content */}
</>
);
}
Step 5: test
After implementing, always test:
- Google rich results test, shows whether Google recognises your schema and can generate rich results
- Schema markup validator, checks technical correctness
- Google Search Console, shows errors and warnings over time
Testing tools for structured data
Here are the most important tools we use at GoldenWing every day:
Google rich results test
URL: search.google.com/test/rich-results
The most important tool. It shows you:
- Whether your schema is valid
- Which rich results are possible
- Errors and warnings
- A preview of the rich result
Tip: do not only test the live URL, test code snippets directly in the tool as well. That way you can try changes before you put them live.
Schema markup validator
URL: validator.schema.org
Checks the technical correctness of your schema markup against the Schema.org specification. This tool is stricter than the Google rich results test and also shows warnings for missing recommended properties.
Google Search Console
In Google Search Console you find an overview of all recognised structured data on your website under "enhancements". Here you see:
- Which pages have valid structured data
- Errors and warnings (with the affected URLs)
- Trends over time
- Impressions and clicks for rich results
Our recommendation: check Search Console at least once a week for new errors. Schema problems can arise from website updates, theme changes or plugin updates.
Other helpful tools
| Tool | Purpose | Cost |
|---|---|---|
| Screaming Frog SEO Spider | Crawls all pages and checks the schema | Free (up to 500 URLs) |
| Ahrefs site audit | Schema check as part of the SEO audit | From 99 $ a month |
| Semrush site audit | Schema analysis and recommendations | From 119 $ a month |
| Schema App | Schema management for enterprise | On request |
WordPress plugins for structured data
If your website runs on WordPress you have it particularly easy. These plugins generate schema markup automatically:
Rank Math SEO
Our favourite at GoldenWing. Rank Math offers:
- Automatic schema for all page types (articles, products, pages)
- More than 15 schema types built in (FAQ, HowTo, Recipe, Product and so on)
- A schema editor with a visual interface
- Custom schema, your own JSON-LD snippets per page
- Automatic detection of FAQ schema for FAQ blocks
- Import of Yoast SEO schema
The free version is enough for most websites. Rank Math Pro (59 dollars a year) offers additional schema types and automatic video schema detection.
Yoast SEO
Yoast SEO (the most used SEO plugin) offers schema features as well:
- Automatic Organization and Person schema on the home page
- Article schema for blog posts
- BreadcrumbList schema automatically
- WebSite schema with SearchAction
Yoast is solid but offers fewer schema types than Rank Math. For extended schemas (FAQ, HowTo, Product) you need Yoast SEO Premium (99 euros a year) or an additional plugin.
Schema Pro (by Brainstorm Force)
A dedicated schema plugin with:
- More than 20 schema types
- Automatic schema assignment by page type
- Custom fields integration (ACF, Pods)
- A white label option for agencies
Ideal if you use a different SEO plugin (All in One SEO for example) and still need comprehensive schema markup.
Plugins specific to WooCommerce
For WooCommerce shops we additionally recommend:
- JEPP Schema, automatic product schema with all variants
- Review Schema, rating schema for WooCommerce products
- WooCommerce SEO by Yoast, extends Yoast with schema specific to WooCommerce
You find more about WordPress SEO as a whole in our WordPress SEO guide.
Rich results: which types exist?
Rich results (formerly rich snippets) are extended search results generated from structured data. Here are all rich result types supported by Google:
| Rich result type | Schema type | Description |
|---|---|---|
| Article | Article, BlogPosting | Thumbnail, date, author |
| Breadcrumb | BreadcrumbList | Navigation structure instead of the URL |
| FAQ | FAQPage | Expandable questions and answers |
| How-to | HowTo | Steps with images |
| Product | Product | Price, availability, rating |
| Local business | LocalBusiness | Address, opening hours, rating |
| Recipe | Recipe | Image, preparation time, calories |
| Event | Event | Date, location, tickets |
| Video | VideoObject | Thumbnail, duration, upload date |
| Job posting | JobPosting | Title, salary, location |
| Course | Course | Provider, description |
| Software app | SoftwareApplication | Rating, price |
| Sitelinks search box | WebSite + SearchAction | Search field in the SERPs |
Important: not every schema leads automatically to a rich result. Google decides itself whether and when rich results are shown. Structured data are the precondition, not a guarantee. The likelihood rises with the quality of your content and the authority of your domain.
E-commerce schema: the complete guide
For online shops schema markup is particularly valuable. Here are the most important schema types for e-commerce:
Product schema (mandatory for every shop)
The product schema shows price, availability and ratings right in the search results. Studies show that product rich results can raise the click through rate by up to 35 percent.
Required fields:
- name (product name)
- image (at least one image)
- offers (price and availability)
Recommended fields:
- description (product description)
- brand (brand)
- sku (article number)
- gtin13, gtin8 or mpn (EAN, UPC, MPN)
- aggregateRating (ratings)
- review (individual reviews)
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Handmade leather bag Vienna",
"image": [
"https://example.com/tasche-front.jpg",
"https://example.com/tasche-seite.jpg"
],
"description": "Handmade leather bag from Austrian cowhide",
"sku": "LT-001",
"gtin13": "9780201379624",
"brand": {
"@type": "Brand",
"name": "Wiener Ledermanufaktur"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/ledertasche",
"priceCurrency": "EUR",
"price": "189.00",
"priceValidUntil": "2026-12-31",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "Wiener Ledermanufaktur"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"bestRating": "5",
"worstRating": "1",
"ratingCount": "89"
}
}
Product variants
For products with variants (size, colour) there are two approaches:
Approach 1: several offers
{
"@context": "https://schema.org",
"@type": "Product",
"name": "T-Shirt Classic",
"offers": [
{
"@type": "Offer",
"name": "Size S",
"price": "29.90",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock"
},
{
"@type": "Offer",
"name": "Size M",
"price": "29.90",
"priceCurrency": "EUR",
"availability": "https://schema.org/InStock"
},
{
"@type": "Offer",
"name": "Size L",
"price": "29.90",
"priceCurrency": "EUR",
"availability": "https://schema.org/OutOfStock"
}
]
}
Approach 2: AggregateOffer
{
"@context": "https://schema.org",
"@type": "Product",
"name": "T-Shirt Classic",
"offers": {
"@type": "AggregateOffer",
"lowPrice": "29.90",
"highPrice": "34.90",
"priceCurrency": "EUR",
"offerCount": "3",
"availability": "https://schema.org/InStock"
}
}
Collection and category pages
For category pages Google recommends the ItemList schema:
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "Leather bags",
"numberOfItems": 24,
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"url": "https://example.com/ledertasche-classic"
},
{
"@type": "ListItem",
"position": 2,
"url": "https://example.com/ledertasche-premium"
}
]
}
E-commerce schemas specific to Austria
For Austrian online shops we additionally recommend:
- Delivery information through `shippingDetails` (delivery time, shipping cost to Austria)
- Right of return through `hasMerchantReturnPolicy` (the 14 day right of return under the FAGG)
- VAT clearly marked as a gross price (in Austria B2C is always gross)
The 10 most common mistakes with structured data
From our experience as an SEO agency we keep seeing the same mistakes:
Mistake 1: schema for content that is not visible on the page
Google requires that the content described in the structured data is visible to the user as well. Hidden content or false statements can lead to a manual action.
Mistake 2: false ratings in the schema
Ratings have to come from real users. Self written reviews or invented rating values violate Google's guidelines and can lead to a penalty.
Mistake 3: outdated prices in the product schema
If the price in the schema does not match the actual price on the page, Google can treat that as spam. Make sure prices are generated dynamically and that priceValidUntil is current.
Mistake 4: misusing FAQ schema
FAQ schema is meant only for genuine questions and answers, not for advertising copy, product descriptions or general information. Google has tightened the guidelines and now shows FAQ rich results only for authoritative pages.
Mistake 5: getting schema nesting wrong
Nested schemas (Organization inside a Product for example) have to be referenced correctly. Wrong nesting leads to parsing errors.
Mistake 6: duplicate schemas on one page
Several competing schemas of the same type on one page confuse search engines. There should be only one main schema per page (one product schema on a product page, for example).
Mistake 7: leaving out required fields
Every schema type has required fields. Without them Google shows no rich results. Always check the official Google documentation for the current requirements.
Mistake 8: forgetting the schema after a website relaunch
During a relaunch or a theme change structured data often get lost. Create a schema inventory before every relaunch and check after launch whether everything still works.
Mistake 9: no regular review
Schema is not set and forget. Google changes its requirements, plugins get updated and content changes. Check your structured data at least once a month.
Mistake 10: too many schema types at once
Some webmasters mark up every element on the page with schema. That is not necessary and can even be counterproductive. Focus on the schema types that generate rich results and matter for your business.
Frequently asked questions
Does structured data improve my Google ranking directly?
Structured data are not a direct ranking factor, Google has confirmed that several times. They do have a strong indirect effect though: rich results raise the click through rate by 20 to 40 percent, which in turn sends a positive signal to Google. They also help Google understand your content better and match it to relevant queries. In practice we at GoldenWing regularly see ranking improvements after implementing schema, especially for informational queries.
Can Google penalise me for using schema markup?
Yes, if you violate Google's guidelines for structured data. The most common reasons for penalties: false or misleading information in the schema (invented ratings for example), schema for content that is not visible on the page, and spam schema (FAQ schema for advertising copy for example). Stick to the official guidelines and test regularly, then you are on the safe side.
How long does it take until Google shows rich results?
After implementing structured data it usually takes 2 to 4 weeks until Google notices the change and shows rich results. You can speed the process up by submitting the affected URLs for reindexing in Google Search Console. Keep in mind: Google never guarantees that rich results will be shown, even with technically correct schema Google decides whether a rich result makes sense for a particular query.
Which schema plugin is the best for WordPress?
We recommend Rank Math SEO as an all in one solution. It offers the most extensive schema features (more than 15 types, custom schema, automatic detection) and has an intuitive interface. The free version is enough for most websites. Yoast SEO Premium is a solid choice as an alternative if you already use Yoast. For extended requirements without switching your SEO plugin we recommend Schema Pro as a standalone plugin.
Do structured data have to be on every page?
No, but on every page that can benefit from rich results. Organization and LocalBusiness schema should be on the home page and ideally on every page. BreadcrumbList schema belongs on every page with breadcrumbs. Product schema only on product pages, FAQPage schema only on pages with FAQ content. Quality beats quantity: a few correct schemas are better than many faulty ones.
How do I test whether my structured data work?
Three steps: 1) the Google rich results test (search.google.com/test/rich-results) shows you immediately whether your schema is valid and which rich results are possible. 2) The schema markup validator (validator.schema.org) checks technical correctness against Schema.org. 3) Google Search Console under "enhancements" shows you over time whether Google recognises your structured data and whether errors occur. Test after every change and check Search Console at least weekly.
Do structured data work for Bing and other search engines as well?
Yes. Schema.org was developed jointly by Google, Microsoft (Bing), Yahoo and Yandex. All of these search engines understand and use structured data. Bing even has a few extensions of its own (for Bing Webmaster Tools for example). In Austria Google dominates with more than 93 percent market share, but Bing is gaining importance through its integration into Microsoft Edge and Copilot. The implementation is identical, you do not have to do anything extra for Bing.
Is structured data worth it for small websites?
Absolutely. Small websites and local businesses in particular benefit disproportionately from structured data. LocalBusiness schema improves visibility in the local Google pack, FAQ schema can double the click rate on page 1, and product schema makes even a small online shop look professional in the search results. With WordPress plugins such as Rank Math the implementation takes a few hours and costs nothing extra.
Schema markup for local businesses in Austria
For local businesses in Austria schema markup is a particularly effective SEO instrument. Structured data implemented correctly can raise the click rate in the search results by up to 30 percent and clearly improve the chance of a prominent placement in the local pack.
LocalBusiness schema: the basics
The LocalBusiness schema is the basis for every local business. It tells Google where your company is, when it is open and which services you offer.
A complete LocalBusiness schema for an Austrian company:
'''json
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"name": "Your Company GmbH",
"image": "https://www.ihrunternehmen.at/logo.png",
"url": "https://www.ihrunternehmen.at",
"telephone": "+43-1-1234567",
"email": "info@ihrunternehmen.at",
"address": {
"@type": "PostalAddress",
"streetAddress": "Mariahilfer Straße 100",
"addressLocality": "Wien",
"addressRegion": "Wien",
"postalCode": "1060",
"addressCountry": "AT"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 48.1951,
"longitude": 16.3472
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "18:00"
}
],
"priceRange": "EUR",
"areaServed": [
{"@type": "City", "name": "Wien"},
{"@type": "State", "name": "Niederösterreich"},
{"@type": "State", "name": "Burgenland"}
],
"sameAs": [
"https://www.facebook.com/ihrunternehmen",
"https://www.linkedin.com/company/ihrunternehmen",
"https://www.instagram.com/ihrunternehmen"
]
}
'''
Particulars for Austrian companies
Important points that are often overlooked:
- addressCountry: always use "AT" (ISO 3166-1), not "Österreich" or "Austria"
- telephone: use the international format with the +43 country code
- areaServed: define your catchment area precisely. Google uses this information for local queries
- Currency: use "EUR" as the priceRange entry, not "Euro" or the euro symbol
Schema types for specific industries
Schema.org offers specialised types for various industries that allow more detailed information:
- Restaurant: cuisine, reservations, menu URL, delivery options
- MedicalBusiness and doctors: speciality, accepted insurance, medical fields
- LegalService and lawyers: areas of law, size of the firm
- RealEstateAgent: types of property, regions
- FinancialService: banking products, advisory services
- AutoRepair and garages: brands, services, certifications
A tip from practice: always pick the most specific schema type. A restaurant should not only use 'LocalBusiness' but 'Restaurant'. The more specific the type, the more relevant the structured data are for Google.
Ratings and review schema
For local businesses in Austria ratings are a critical ranking factor. The AggregateRating schema shows stars right in the search results:
'''json
{
"@type": "AggregateRating",
"ratingValue": "4.8",
"reviewCount": "127",
"bestRating": "5",
"worstRating": "1"
}
'''
Important: Google allows AggregateRating only for certain schema types. For 'LocalBusiness' and its subtypes it is permitted, but not for your home page in general. Place this schema only on pages that actually contain or aggregate ratings.
Multi location schema for companies with branches
Companies with several locations in Austria should create a separate page with its own LocalBusiness schema for every location. Connect them through the 'Organization' schema of the main page:
- Every location gets its own URL (/standorte/wien-1060/, /standorte/graz/ for example)
- Every location has its own complete LocalBusiness schema
- The main page points to the individual locations through 'department' or 'subOrganization'
- Make sure the NAP data (name, address, phone) match the Google business profile exactly
Advanced schema types: event, course, recipe and more
Besides the standard schema types, Schema.org offers a range of specialised types that can produce rich results in the search results. Many companies in the German speaking market do not use these advanced types yet, which is a big opportunity.
Event schema
The event schema is particularly valuable for organisers, event locations and companies that run events regularly. Google shows events prominently in the search results, often with date, location and price.
Important properties for events in Austria:
- startDate and endDate: in ISO 8601 format with time zone ('2026-04-15T19:00:00+02:00' for central European summer time, for example)
- location: physical ('Place') or online ('VirtualLocation') or both ('MixedEventAttendanceMode')
- offers: ticket prices and availability, particularly important for the presentation in the search results
- organizer: link to your company profile
- eventStatus: 'EventScheduled', 'EventPostponed', 'EventCancelled', particularly important for timely communication
- performer: relevant for concerts or shows
Best practice: create a separate page with dedicated event schema for every event. Update 'eventStatus' promptly when something changes, Google treats outdated event data negatively.
Course schema
For education providers, coaches and companies that offer training, the course schema is a powerful tool. Google shows course information in special rich results.
Relevant properties:
- provider: your company as the course provider
- courseMode: 'online', 'onsite' or 'blended'
- hasCourseInstance: concrete dates and sessions
- offers: prices and booking options
- educationalLevel: target group (beginner, advanced, expert)
- inLanguage: 'de-AT' for German language courses in Austria
HowTo schema
The HowTo schema suits instructions and tutorials perfectly. Google can show them as step by step guides right in the search results.
Uses in the German speaking market:
- Instructions from the trades ("how do I fix a dripping tap")
- Software tutorials ("creating an Excel pivot table")
- Cooking recipes with the recipe schema (not HowTo)
- DIY projects and craft instructions
Important: Google has limited the visual presentation of HowTo rich results since 2023. On mobile devices HowTo results are no longer shown as rich results. The structured data still help Google understand the content better, and desktop users continue to benefit.
Video schema
If you embed videos on your website (from YouTube or Vimeo for example), you should definitely implement VideoObject schema. Videos with schema markup appear in the video results 2.7 times more often.
- name, description, thumbnailUrl: basic information
- uploadDate and duration: for correct presentation
- contentUrl or embedUrl: the URL of the video
- transcript: particularly valuable for SEO, Google can index the content of the video
Schema markup and AI search: preparing for AI overviews
With the introduction of Google AI overviews (formerly SGE) and the growing importance of search systems supported by AI, schema markup has gained a completely new dimension. Structured data are the key to staying visible in the era of AI search as well.
How AI overviews use structured data
Google AI overviews generates summarising answers right in the search results. The system prefers to draw on websites that provide clear, machine readable data. In this context structured data are no longer an optional extra but a basic requirement.
What AI overviews processes particularly well:
- FAQ schema: question and answer pairs are often quoted directly in AI overviews
- HowTo schema: step by step instructions are ideal sources for answers generated by AI
- Product schema: product properties, prices and ratings are used for purchase recommendations
- Article schema: author, publication date and organisation help validate the source
E-E-A-T and schema markup
Google's E-E-A-T principle (experience, expertise, authoritativeness, trustworthiness) is supported directly by schema markup:
Signalling experience and expertise:
- Use the 'author' schema with detailed information about the writer
- Link to author profiles with 'sameAs' (LinkedIn, specialist portals)
- Use 'qualifications', 'hasCredential' and 'alumniOf' in the person schema
Strengthening authoritativeness and trustworthiness:
- 'Organization' schema with 'foundingDate', 'numberOfEmployees' and 'award'
- 'isPartOf' and 'publisher' links for editorial content
- 'citation' and 'sourceOrganization' for scientific or data based statements
Speakable schema for voice search
The speakable schema marks passages of text that are particularly suited to being read aloud. With voice assistants spreading (Google Assistant, Alexa, Siri) this schema becomes ever more relevant.
'''json
{
"@type": "WebPage",
"speakable": {
"@type": "SpeakableSpecification",
"cssSelector": [".article-summary", ".key-takeaway"]
}
}
'''
A recommendation for the Austrian market: although speakable is still marked as beta, implementing it is already worthwhile. 23 percent of Austrian households now use voice assistants, and the share is rising.
A schema strategy that lasts
To optimise your website for AI based search in the long run we recommend the following measures:
- Feed the knowledge graph: link your Organization schema with Wikidata where possible. That strengthens your presence in the Google knowledge graph.
- Define entities clearly: use '@id' references consistently across your whole website so Google understands the relations between your content.
- Regular updates: update your structured data every quarter. Schema.org publishes new types and properties regularly.
- Monitoring: check every month in Google Search Console whether your structured data are recognised correctly. Pay particular attention to warnings and errors.
- Testing before deployment: use the rich results test and the schema markup validator before every deployment. Ideally automate this step in your CI/CD pipeline.
Schema markup automation: generating structured data dynamically
On websites with dozens or hundreds of pages, maintaining structured data by hand quickly becomes a bottleneck. Dynamic schema generation solves that problem by producing structured data automatically from existing data sources: consistent, free of errors and always current.
Why static schema markup does not scale
Imagine an Austrian trades business with 15 locations that maintains a separate page for every one. With manual schema maintenance, changes of address, new opening hours or a changed phone number have to be updated in three places at once: in the visible content, in the meta data and in the JSON-LD schema. The error rate rises exponentially with the number of pages.
Typical problems with static schema:
- Prices in the product schema no longer match the current prices
- Opening hours in the LocalBusiness schema are outdated, especially after public holidays or a change of season
- New blog articles get no article schema because the editorial team forgets it
- Event data stay in the schema after the event and produce warnings in Search Console
The architecture of a dynamic schema solution
The most efficient approach is schema generation on the server that derives structured data straight from your database or your CMS. The basic principle is simple: the data already exist in your system, you only have to transform them into the right JSON-LD format.
For a website based on Next.js or Nuxt this works through a central schema component that renders the fitting schema automatically depending on the page type. The logic checks the content type of the current page and generates the corresponding JSON-LD object with all available data.
Data sources for automatic schema:
- CMS fields: title, description, author, publication date, categories, images
- Product database: price, availability, SKU, ratings, variants
- The Google My Business API: current opening hours, ratings, photos
- The event calendar: event data, times, ticket prices, availability
Rule based schema generation by page type
Define a schema template with clear rules for every page type of your website:
Blog posts and guides get an `Article` schema filled automatically with author, date, main image and publisher information. If the article contains an FAQ section (recognisable from H3 headings with a question mark), an `FAQPage` schema is generated in addition.
Service pages get a `Service` schema combined with `LocalBusiness` and optionally `AggregateRating` as soon as enough ratings exist. The price range is derived automatically from a price table or calculator data.
Team and about pages get an `Organization` schema with all locations as `SubOrganization` and individual `Person` schemas for team members. Link these to the respective social media profiles through `sameAs` entries.
Location pages get a `LocalBusiness` schema with precise geo coordinates, opening hours (including special hours for Austrian public holidays), accepted payment methods and the catchment area through `areaServed`.
Automating validation and monitoring
Automatically generated schema is only as good as its validation. Integrate the following checks into your deployment process:
- Validation at build time: check on every deployment whether all generated JSON-LD blocks are syntactically correct and match the Schema.org specifications
- Required field checks: make sure no required fields are empty, a product schema without a price or a LocalBusiness without an address is worthless
- Search Console monitoring: watch the structured data reports in Google Search Console weekly for new errors or warnings
- Rich result tracking: document which pages receive rich results and correlate that with the schema types you implemented
Avoiding the pitfalls of automation
Even with automated schema generation there are typical sources of error you should keep in mind:
- Excessive nesting: do not generate nested schemas with five or more levels. Google prefers flat, unambiguous structures.
- Orphaned references: if an author profile is deleted, the article schema must not point to a person that does not exist. Build in fallback logic.
- Avoid duplicates: make sure several schema blocks of the same type do not end up on one page because different components generate schema independently of each other.
- Exclude test data: filter staging content, drafts and test products reliably out of the schema generation.
With well considered automation you reduce the manual effort of maintaining structured data by up to 90 percent and at the same time make sure your data are always current and free of errors, an investment that pays for itself quickly through better rich results and higher click rates.
Conclusion: structured data are not a nice to have
Structured data are an indispensable part of every modern SEO strategy. They cost nothing (apart from the one off implementation time), can raise the click rate by 20 to 40 percent and help search engines understand your content better.
Our recommendation for getting started:
- Start with the basics: Organization and LocalBusiness plus BreadcrumbList plus WebSite
- Extend as needed: FAQPage, Product, Article, depending on the type of website
- Test regularly: Google rich results test plus Search Console
- Use tools: WordPress plugins such as Rank Math make the implementation easy
- Stay current: Google changes the requirements regularly
At GoldenWing we implement structured data as standard in every web project, from the simple company website to the complex e-commerce shop. With more than 3 years of experience in technical SEO work we know exactly which schema types have the biggest impact for your business.
Do you want to make sure your website uses the full potential of structured data? Test your page with our SEO checker or contact us for a professional schema audit. We analyse your current implementation and show you where the biggest opportunities are.



