Schema Structured Data implementation in TYPO3 supports three different methods which include manual JSON-LD insertion and extension-based automation and TypoScript/Fluid custom implementation.
Among these options JSON-LD serves as the preferred format because it offers easy management and flexible usage and search engines prefer it. The guide explains the implementation methodologies of schema in TYPO3 projects and shows the correct methods of implementation for each technique.
The guide serves TYPO3 editors developers and site owners who want to increase search visibility and enable rich results while structuring their content without making assumptions.
You should execute manual schema for fast configuration while using extensions to automate processes and you should create custom code to gain complete control of your system while using JSON-LD to achieve optimal outcomes.
Which Method Should You Choose?
If you just want a fast decision, use this
| Method | Best For | Skill Level | Pros | Cons |
| Manual HTML (JSON-LD) | Small sites, quick fixes | Beginner | Easy to add, no setup needed | Static, manual updates required |
| brotkrueml/schema | Most TYPO3 projects | Intermediate | Dynamic, auto-updates, TYPO3-integrated | Needs extension setup |
| Custom TypoScript / Fluid | Complex / enterprise sites | Advanced | Full control, flexible, scalable | Requires development effort |
Quick Decision Guide
- Choose Manual if you need a quick one-page schema fix
- Choose Extension if you want automation + scalability
- Choose Custom if you need full control or custom logic
What Is Schema Structured Data?
Schema Structured Data enables TYPO3 pages to show machine-readable information which helps search engines identify the content type of your material (article product event). The system operates according to the Schema.org standard which all major search engines recognize.
Recommended format:
The use of JSON-LD (JavaScript Object Notation for Linked Data) should be implemented. The system uses a
Structured Data Formats in TYPO3: JSON-LD vs Microdata vs RDFa
When adding schema in TYPO3, choosing the right format matters for maintenance, scalability, and SEO compatibility.
Format Comparison
| Format | How It Works | Best For | Pros | Cons |
| JSON-LD (Recommended) | Added inside <script> tag | All TYPO3 projects | Clean, easy to manage, preferred by Google | Not directly tied to HTML elements |
| Microdata | Embedded within HTML tags | Small/static pages | Directly linked to content | Messy, harder to maintain |
| RDFa | Uses HTML attributes like Microdata | Legacy/semantic-heavy projects | Flexible vocabulary support | Complex, rarely used in TYPO3 |
Recommended Schema Format: JSON-LD
- Does not rely on the HTML code structure
- Can be easily handled using:
- TypoScript (
page.headerData) - Fluid template (
<f:asset.script>) Brotkrueml/schemaextension
- TypoScript (
- Is safer when making updates to TYPO3
This is the reason JSON-LD is the preferred format for most TYPO3 developers.
Where Each Format Is Located in TYPO3
JSON-LD
- In TYPO3 extensions that provide dynamic schema
- TypoScript or Fluid templates
- SEO software and integrations
Microdata
- As inline HTML in Fluid templates
- In old TYPO3 templates/themes
RDFa
- Not used much in current TYPO3 systems
- Sometimes found in legacy projects
Quick Summary
- Use JSON-LD for 95% of TYPO3 instances
- Use Microdata if coupling the schema with HTML
- Do not use RDFa unless you need it for semantic purposes.
Why Add Schema to TYPO3 Projects
Structured Schema Data allows the search engine to understand the content of your TYPO3 site in the proper context, making your page eligible for rich snippets such as FAQ, rating, product, or event pages.
Rich snippets usually lead to better presentation in search results, resulting in higher click-through rates than non-enriched pages.
The search engine uses structured data guidelines by Schema.org and Google Search Central to create rich snippets based on the structured data provided on your website.
Measuring the effect
Once you have introduced schema data into your page, measure its performance in Google Search Console:
- Watch rich snippet impressions
- Compare click-through rate before and after implementation
- View enhancement reports (FAQ, Product, etc.)
Common Schema Types for TYPO3 Websites
Not all schema types lead to rich results. Below is a priority-based structure to help you focus on what actually matters for TYPO3 SEO and implementation.
High Priority (Most Impact + Common Use)
1. Organization Schema
- Best use case: Homepage, About, Contact pages
- Rich result potential: No direct rich result, but supports brand/entity understanding
- TYPO3 note: Add globally via TypoScript (page.headerData) or extension
{"@context": "https://schema.org","@type": "Organization","name": "T3Planet","url": "https://t3planet.de","logo": "https://t3planet.de/logo.svg"}
2. Breadcrumb Schema
- Best use case: All pages with hierarchy (blogs, categories)
- Rich result potential: Breadcrumb display in search results
- TYPO3 note: Often generated dynamically via extensions or menu structure
{"@context": "https://schema.org","@type": "BreadcrumbList","itemListElement": [{"@type": "ListItem","position": 1,"name": "Home","item": "https://example.com/"}]}
3. Article Schema
- Best use case: Blog posts, news (EXT:news)
- Rich result potential: Eligible for enhanced listings (not guaranteed)
- TYPO3 note: Map fields like title, author, date dynamically
{"@context": "https://schema.org","@type": "Article","headline": "TYPO3 Schema Guide","author": { "@type": "Person", "name": "Author Name" }}
Medium Priority (Use Case Driven)
4. Product Schema
- Best use case: eCommerce pages
- Rich result potential: Price, rating, availability
- TYPO3 note: Requires dynamic data (price, stock, reviews)
{"@context": "https://schema.org","@type": "Product","name": "TYPO3 Extension","offers": {"@type": "Offer","price": "49.00","priceCurrency": "EUR"}}
5. Event Schema
- Best use case: Webinars, meetups, conferences
- Rich result potential: Event listings in search
- TYPO3 note: Useful with event extensions or custom content types
{"@context": "https://schema.org","@type": "Event","name": "TYPO3 Meetup","startDate": "2025-03-18T18:00:00"}
Conditional / Limited Visibility
6. FAQ Schema
- Best use case: Help pages, documentation
- Rich result potential: Limited (Google restricts FAQ rich results to authoritative sites)
- TYPO3 note: Use carefully; avoid overuse on marketing pages
{"@context": "https://schema.org","@type": "FAQPage","mainEntity": [{"@type": "Question","name": "What is TYPO3 Schema?","acceptedAnswer": {"@type": "Answer","text": "It helps search engines understand your content."}}]}
Quick Priority Summary
- Start with: Organization + Breadcrumb + Article
- Then add: Product or Event (based on site type)
- Use carefully: FAQ (limited visibility)
Which Schema Types Should Most TYPO3 Sites Implement First?
Here's a fast guide for prioritizing schema according to the types of sites you run:
Informational / Blog Sites
Priority: Article + Breadcrumb + Organization
Reasons:
- Article: describes article structure (title, author, date)
- Breadcrumb: better navigability within the search results
- Organization: provides brand/entity signals
TYPO3 Tip: Map Article fields automatically using Fluid or schemas extension
Service / Business Websites
Priority: Organization + Breadcrumb + Service / Local Markup
Reasons:
- Organization: essential component for a business identity
- Breadcrumb: defines site hierarchy
- Service / Local: increases the relevance of service-oriented queries
TYPO3 Tip: Add Organization globally, if necessary apply additional Service / Local schema
eCommerce Websites
Priority: Product + Breadcrumb + Organization
Reasons:
- Product: allows showing product price, availability, and ratings
- Breadcrumb: makes category browsing easier
- Organization: provides consistent branding across all web pages
TYPO3 Tip: Make sure product information (price, stock) is updated automatically
Event-Led Websites
Priority: Event + Organization + Breadcrumb
Reasons:
- Event: enables listing events on the SERP (time, place)
- Organization: identifies the event organizer
- Breadcrumb: improves navigation within website content
TYPO3 Tip: Check that all events' dates are up-to-date, otherwise, schema will become invalid
Fast Summary
Almost all TYPO3 websites have to have Organization + Breadcrumb first
Then add:
- Article if the site is content heavy
- Product if it's eCommerce
- Event if it's event-based
Overview of the 3 Best Integration Methods
Start with a quick comparison, then choose the method that fits your project’s complexity and workflow.
Comparison First
| Method | Skill Level | Maintenance Effort | Best Use Cases | Common Pitfalls |
| Manual HTML (JSON-LD) | Beginner | High, manual updates | One-off pages, prototypes, quick fixes | Content drift, duplication, forgotten updates |
| Extension (brotkrueml/schema) | Intermediate | Low–Medium, automated | Most TYPO3 sites, scalable setups | Misconfiguration, overlapping schema from multiple extensions |
| Custom TypoScript / Fluid | Advanced | Medium–High | Complex logic, multilingual, multi-domain | Higher dev effort, testing overhead |
Method 1: Manual Static Integration (HTML Element Method)
This method is suitable for limited and static use cases (single page or quick experiments).
Use Cases:
- When you only want to add schema to one or two pages and
- you don't need to have the schema updated dynamically.
- You don't have TYPO3 extensions installed that would allow you to integrate the schema dynamically.
How it Works:
- You will add a JSON-LD code snippet into a standard HTML content element of your TYPO3 site.
- You will then validate the JSON-LD code snippet using the Rich Results Test provided by Google.
Limitations:
Although implementing this option works for a limited number of pages, it does not provide the ability to scale.
Risk of Content Drift:
- If the content of your page changes (price, author, date, etc.), your schema will not automatically update to reflect that change, which will create mismatches between your page's content and its associated schema.
- As such, the website may not display a rich result or performance listing due to this difference.
Method 2: Dynamic Integration Using TYPO3 Schema Extension
This method is recommended for the majority of TYPO3 projects, since they are already using this method, and it is the recommended option to integrate schema dynamically.
How it Works:
The TYPO3 Schema Extension (brotkrueml/schema) dynamically creates the schema on your website. The TYPO3 Schema Extension directly accesses the database fields in TYPO3, allowing the schema to always remain in sync with the accompanying content.
This extension also supports numerous schema types and extensions.
Configuration Options:
Can be configured via:
- TypoScript (global setup)
- Fluid ViewHelpers (control over template display)
- Data mappings from:
- SEO fields
- content elements
- custom fields
Example (TypoScript)
page = PAGEpage.10 = SCHEMApage.10 {type = WebSiteproperties {name.field = seo_titledescription.field = description}}
Example (Fluid)
<schema:type.organizationname="T3Planet"url="https://t3planet.de"logo="https://t3planet.de/logo.svg" />
Editors vs Integrators (important distinction)
- Editors: manage content fields (title, description, etc.)
- Integrators/Developers: configure schema mapping and logic
Breadcrumb automation
- Breadcrumb schema can be:
- auto-generated from TYPO3 page tree
- configured via extension settings or TypoScript
Vocabulary extensions
- Add-ons like:
schema_autoschema_bibschema_healt
- Useful for domain-specific structured data
Common pitfalls
- Duplicate schema from multiple extensions
- Missing required properties
Incorrect field mappingUseful for domain-specific structured data
Method 3 – Custom Integration Using TYPO3 Core
Best for: Advanced, custom, or enterprise TYPO3 projects
When to use
- Multilingual setups
- Multi-domain configurations
- Custom entities not supported by extensions
- Headless or API-driven TYPO3
Option 1: TypoScript (Global Injection)
page.headerData {100 = TEXT100.value (<script type="application/ld+json">{"@context": "https://schema.org","@type": "Organization","name": "T3Planet","url": "https://t3planet.de"}</script>)}
Option 2: Fluid (Template-Level Control)
<f:asset.script type="application/ld+json">{"@context": "https://schema.org","@type": "Article","headline": "{newsItem.title}","datePublished": "{newsItem.date -> f:format.date(format: 'Y-m-d')}"}</f:asset.script>
Why use custom integration
- Full control over:
- schema structure
- conditional logic
- data sources
- Ideal for:
- multilingual schema output
- domain-specific schema variations
- custom APIs or headless setups
Common pitfalls
- Manual validation required
- Higher maintenance effort
- Risk of syntax errors or incomplete schema
Structured Data via Yoast SEO for TYPO3
If you already use Yoast SEO for TYPO3, it provides built-in structured data features.
When to consider it
- You already rely on Yoast for SEO
- You need basic schema (Organization, Article, Breadcrumb)
Limitations
- Less flexible than dedicated schema extensions
- Limited customization for complex schema types
Google-Supported Rich Results vs Schema.org Vocabulary
- Schema.org = what you can describe (Article, Product, Event, etc.)
- Google Search Central = what may appear in search (rich results)
There are three things to keep in mind when using schema.
These are:
- Schema may not produce a rich snippet
- The schema used may not be a supported type
- The query intent/page quality used in the schema may not be sufficient.
Also, keep in mind that not every rich snippet will be displayed by Google. There will be exceptions, for example, FAQs will be limited.
The bottom line is to use schema correctly and follow Google's guidelines as to whether your structured content can be displayed. Also, do not count on seeing a rich snippet based on your structured content.
TYPO3 Schema Launch Checklist for Structured Data Implementation
To confirm that your Schema in TYPO3 is functional, correct, and ready for search engines, complete the following pre-launch workflow:
Validate Structured Data
- Test JSON-LD with the following:
- Schema.org Validator
- Google Search Central Rich Results Test
- Fix all errors (you can review warnings later).
Validation of Live URL (not just Code)
- Use URL Inspection tool in Google Search Console
- Confirm that the schema is present and not blocked by JS, caching or other elements when rendered in the final HTML.
Schema Duplication Check
- Review the page source for multiple schema blocks of the same type on the page.
- Confirm:
- No overlap between extensions
- No manual and dynamic duplication
Coinciding Schema and Visible Content
- Ensure all structured data on the page corresponds to the actual content on the page.
- Avoid:
- Hidden Data
- Obsolete Values (for example, price, date, author)
Language Consistency Across Versions
- For multilingual TYPO3 websites:
- Ensure language of schema matches language of page
- Ensure correct URL for each language version
- Avoid mixed-language properties
Verification of Schema Type for the Page
- Article = Blog Posts
- Product = Product Pages
- Event = Events Page
Do not incorrectly identify schema as this could lower eligibility for structured data to be shown.
Secure and Indexable Delivery
- Ensure the web page being served is secured with HTTPS protocol.
- Check the page is indexable (not using noindex).
- Ensure the page is not being blocked by robots.txt.
Measure Before and After Rollout
- In Google Search Console:
- Track CTR changes
- Monitor impressions of rich results
- Review enhancement report(s).
TYPO3 Structured Data Troubleshooting Guide for Schema Issues
Even with proper setup, schema issues can occur, especially in TYPO3 environments with multiple extensions and dynamic content. Use these targeted fixes:
1. Duplicate or Missing Schemas
- Make sure you only have one JSON-LD for each schema type in a single web page.
- Check to see if you're getting duplicates from:
- A combination of multiple extensions (e.g., an SEO and a schema plugin)
- Combining a manual method with an automatic injection method
- Disabling an overlapping provider or consolidating schema logic.
2. Supported Properties
- Validate your field values against Schema.org.
- You need to correct the following types of property values:
- Misspelled property values.
- Outdated or unsupported property values.
- Incorrect Data Types of Property Values (e.g., a string where it should be a number).
3. Outdated TYPO3 Extension and Extension Conflicts
- Make sure your TYPO3 extensions (e.g., the brotkrueml/schema extension) are updated.
- Check for the following:
- Predominantly, extension conflicts (typically with your search engine optimization extensions).
- Broken mappings after updating TYPO3.
- You'll need to validate all schema after each update.
4. JSON Formatting Errors
- Use a linter tool or the Google Rich Results Test to validate your JSON.
- Some common examples of JSON formatting errors that you'll see:
- Missing Commas
- Missing Brackets
- Bad Quotes
- Extra Commas
5. Schema Mismatch between Visible and Hidden Content
- The schema you send should match what users see on the page.
- Avoid sending:
- Hidden content.
- Outdated content.
- Display content such as reviews, prices, or dates that aren't displayed to the user.
- A mismatch between the schema and the visible content will remove eligibility for rich search results.
6. Outdated Dynamic Fields (i.e. Products and Events)
- Be sure that the fields related to items such as:
- Prices
- Availability of Products
- Event Dates
- Are automatically updated depending upon the content in TYPO3.
- An expired event or incorrect price will cause the schema to be invalidated.
7. Multilanguage Schema with Two Languages.
- Check the following:
- Schema Language must be the same as the web page Language
- Localized URL
- No Mixed Languages Exist in the Property
- Create Separate Schema Rendering for Each Language in TYPO3
8. FAQ Rich Snippet Expectation Mismatch
- Even valid FAQ schema may not show in search
- Reasons:
- restricted by Google policies
- site not considered authoritative
- Validate via Google Search Central and adjust expectations
Best Practices for TYPO3 Schema Integration
Follow these to keep your structured data stable, accurate, and scalable:
1. Update Extensions
- Always use the current version of brotkrueml/schema or other related extensions.
- Updates address any errors that previously existed and improve compatibility with schemas.
2. Use Dynamic Values from TYPO3 Fields
- Directly map the title, description, price, date, etc. directly from the content management system (CMS) to the corresponding schema element.
- This helps to ensure that the schema is not old or out of date.
3. Centralise Schema Logic
- Update the schema only in one location instead of multiple places. All schema logic should be managed through:
- TypoScript
- Fluid Templates
- Extensions
- This will help to reduce duplicated work and errors.
4. Validate After TYPO3 Upgrades
- Use the tools from Google Search Central to complete an additional validation check of the schema after any updates are made in TYPO3 to ensure that both the rendering and detection of the items are still working properly.
5. Backup Schema Templates
- Maintain a versioned backup of both:
- TypoScript
- Fluid Templates
- This makes it easy to restore if you experience a problem.
Real Implementation Examples by Site Type
These examples show how schema is actually applied in TYPO3 projects, aligned with real use cases.
Blog / News Site
Typical schema:
- Article + Breadcrumb + Organization
Implementation approach:
- Use extension or Fluid to map:
- title: headline
- author: Person
- publish date: datePublished
Example (Fluid):
<f:asset.script type="application/ld+json">{"@context": "https://schema.org","@type": "Article","headline": "{newsItem.title}","datePublished": "{newsItem.date}","author": {"@type": "Person","name": "{newsItem.author}"}}</f:asset.script>
Corporate / Business Site
Typical schema:
- Organization + Breadcrumb
Implementation approach:
- Add Organization globally via TypoScript
- Keep business details consistent across pages
Example (TypoScript):
page.headerData {100 = TEXT100.value (<script type="application/ld+json">{"@context": "https://schema.org","@type": "Organization","name": "Company Name","url": "https://example.com"}</script>)}
Product / eCommerce Site
Typical schema:
- Product + Breadcrumb + Organization
Implementation approach:
- Pull dynamic data:
- price
- availability
- ratings
Example:
{"@context": "https://schema.org","@type": "Product","name": "{product.title}","offers": {"@type": "Offer","price": "{product.price}","priceCurrency": "EUR","availability": "https://schema.org/InStock"}}
Key requirement:
- Keep values synced with actual product data to avoid mismatches
Event Site
Typical schema:
- Event + Organization + Breadcrumb
Implementation approach:
- Map event fields:
- name
- start/end date
- location
Example:
{"@context": "https://schema.org","@type": "Event","name": "{event.title}","startDate": "{event.startDate}","endDate": "{event.endDate}"}
Key requirement:
- Always update or remove expired events
Real-World Examples of Schema in TYPO3
Below are simplified, implementation-focused examples showing how schema is actually used in TYPO3 using different methods.
FAQ Schema (Blog Use Case)
Use case: Blog posts or documentation pages with Q&A sections
Method: TYPO3 Extension or Fluid (dynamic content mapping)
Example (Fluid)
<f:asset.script type="application/ld+json">{"@context": "https://schema.org","@type": "FAQPage","mainEntity": [{"@type": "Question","name": "{faq.question}","acceptedAnswer": {"@type": "Answer","text": "{faq.answer}"}}]}</f:asset.script>
Breadcrumb Schema (Navigation Use Case)
Use case: All TYPO3 pages with page hierarchy
Method: TypoScript (global site structure)
Example (TypoScript)
page.headerData {200 = TEXT200.value (<script type="application/ld+json">{"@context": "https://schema.org","@type": "BreadcrumbList","itemListElement": [{"@type": "ListItem","position": 1,"name": "Home","item": "https://example.com/"}]}</script>)}
Product Schema (eCommerce Use Case)
Use case: Product detail pages in TYPO3 shops
Method: TYPO3 Schema Extension (dynamic mapping)
Example (Extension-based concept)
{"@context": "https://schema.org","@type": "Product","name": "{product.title}","offers": {"@type": "Offer","price": "{product.price}","priceCurrency": "EUR"}}
Why extension here:
Keeps product data (price, stock, availability) automatically in sync with TYPO3 content.
Organization Schema (Global Site Identity)
Use case: Every TYPO3 website (header/footer/global identity)
Method: TypoScript or extension
Example (TypoScript)
page.headerData {100 = TEXT100.value (<script type="application/ld+json">{"@context": "https://schema.org","@type": "Organization","name": "Company Name","url": "https://example.com"}</script>)}
Event Schema (Event Use Case)
Use case: Meetups, webinars, conferences
Method: Extension or Fluid (dynamic event records)
Example (Fluid)
<f:asset.script type="application/ld+json">{"@context": "https://schema.org","@type": "Event","name": "{event.title}","startDate": "{event.startDate}","endDate": "{event.endDate}","location": {"@type": "Place","name": "{event.location}"}}</f:asset.script>
Conclusion
Schema in TYPO3 works best when treated as an ongoing setup, not a one-time task.
Next steps
- Choose a method (Manual, Extension, or Custom)
- Add JSON-LD consistently across relevant pages
- Validate before publishing using Google tools
- Monitor results in Google Search Console (CTR, rich results, errors)
This ensures your structured data stays accurate, indexable, and aligned with TYPO3 content changes over time.
FAQs
The best method for adding schema is by using a TYPO3 schema extension like brotkrueml/schema, as this allows for dynamic (and therefore maintainable) data. Only use manual JSON-LD if you have small, fixed sets of data that you want to add to your website.
Yes! JSON-LD is the recommended format because it is very easy to manage and update over time; it also works separately from HTML; and search engines like Google prefer to use JSON-LD.
No. Out of the box TYPO3 does not provide any native/controlled schema support. You would require TypoScript or Fluid or both, or an extension that supports schema to add this functionality.
The most common way/type people are adding schema to their site is using an extension called brotkrueml/schema which creates dynamic schema and seamlessly worms into TYPO3 workflows.
Implementing schema through TypoScript is very easy to do because TypoScript allows you to inject JSON-LD into headerData. Things like “Organization” or “Breadcrumbs”, which are global schema, can be injected on every page.
The Fluid template engine can be used to dynamically generate JSON-LD via . This is particularly useful when generating schema associated with content such as Articles or Events.
While the FAQ schema can help improve the structure of content, the likelihood of displaying FAQ rich results is very low. Therefore, the primary purpose of using the FAQ schema is to clarify information rather than increase its visibility.
The best way to test schema in TYPO3 is by using the following: Google Search Central - Rich Results Testing Tool; Schema Validation Tools, and by validating the rendered live URL as opposed to validating the code in the TYPO3 templates.
Some of the common reasons for duplicate structured data in TYPO3 are: Several extensions providing schema data, schema through manual entry, schema created through the extension and schema injected to a template through themes or SEO plug-ins.
The first three schema types that you should implement on your eCommerce site are: Product (the core product information); Breadcrumb (provides navigation visibility); Organization (gives identity to the brand). These three schema types will help to provide the most consistent structural benefits for your eCommerce site.
No, schema does not directly affect rankings; however, when schema is correctly implemented, it allows search engines to better understand the content on your website, increase your likelihood of showing up in rich results, and improve the click-thru rate for your website.
Post a Comment
-
This blog about integrating Schema Structured Data in TYPO3 is a true treasure trove! Thank you for the well-researched and unique insights that make a real difference in our TYPO3 projects!

Anna Scholz
Extension Support SpecialistAnna knows TYPO3 extensions inside out. With hands-on experience supporting both core and custom solutions, she delivers answers that are not only correct but smart. Her priority: help users get the full power of TYPO3…
More From Author