---
title: Structured SEO schema configuration
slug: structured-seo-schema-configuration
docTags: 
createdAt: 2026-01-08T07:40:27.625Z
---

## Introduction

Structured data integration has been implemented to improve the SEO results of our sites, built with HyperBuilder.

Adding structured data can enable search results that are more engaging to users and might encourage them to interact more with your website, which are called *rich results*. More details on [Google Documentation](https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data).

The implementation includes three types of structured data schema configurations:
1\. Basic schema: **"WebSite"** and **"Organization"**
2\. Custom page schema
3\. Generated **"JobPosting"** schema for the "Vacancy Details" block

## Configurations Overview

### Basic schema: "WebSite" and "Organization"

The goal of the site name in Google Search is to best represent and describe the source of each result. To indicate your site name preference, added **"WebSite"** structured data.

Adding **"Organization"** structured data to your website can help Google better understand your organization's administrative details and disambiguate your organization in search results.

For these schemes to be generated on the pages, the names and descriptions must be filled in the application settings.

- Go to App settings > SEO > Schema configuration
- When part of "**WebSite"&#x20;**&#x6F;&#x72;**&#x20;"Organization"** schema is not filled in with values, the schema will not be generated.
- Fill in the corresponding name and description for **"WebSite"&#x20;**&#x61;n&#x64;**&#x20;"Organization".**
  - Should be filled for each language
  - Save changes

`WebSite name`- The name of the website. Make sure the name meets the [guidelines for choosing your site name.](https://developers.google.com/search/docs/appearance/site-names#choosing-site-name)

`WebSite description` - Describes the website, not the company, legally. Do not copy the meta description 1:1 (you can, but it is better to summarise it slightly).

`Organization name` - The name of your organization. Use the same name that you're using for your site name.

`Organization legal name` - The registered, legal name of your Organization, if applicable and different from the name property.

![](https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/BXXVzge-VorI2l-6TDo4f_image.png)

- When the values are filled in, a schema will be generated for the pages with the following parameters:

:::BlockQuote
\{
&#x20; "@context": "https\://schema.org",
&#x20; "@graph": \[
&#x20;   \{
&#x20;     "@type": "WebSite",
&#x20;     "@id": "yurii-builder-fpifkflmagugmtizgvnzv.staging.live.hyperbuilder.io",
&#x20;     "url": "https\://yurii-builder-fpifkflmagugmtizgvnzv.staging.live.hyperbuilder.io/",
&#x20;     "name": "Website name NL",
&#x20;     "description": "Website description EN",
&#x20;     "publisher": \{
&#x20;       "@id": "https\://yurii-builder-fpifkflmagugmtizgvnzv.staging.live.hyperbuilder.io/"
&#x20;     },
&#x20;     "inLanguage": "en"
&#x20;   },
&#x20;   \{
&#x20;     "@type": "Organization",
&#x20;     "@id": "https\://yurii-builder-fpifkflmagugmtizgvnzv.staging.live.hyperbuilder.io/",
&#x20;     "name": "Organization name EN",
&#x20;     "legalName": "Organization legal name EN",
&#x20;     "url": "https\://yurii-builder-fpifkflmagugmtizgvnzv.staging.live.hyperbuilder.io/",
&#x20;     "logo": \{
&#x20;       "@type": "ImageObject",
&#x20;       "url": "https\://images.hyper1.net/eyJrZXkiOiJ5dXJpaS1idWlsZGVyL2J4eUpKZWRyUFFTbmZTU19LS1BOcyIsImVkaXRzIjp7InJlc2l6ZSI6eyJmaXQiOiJpbnNpZGUiLCJ3aXRob3V0RW5sYXJnZW1lbnQiOnRydWV9LCJ3ZWJwIjp7InF1YWxpdHkiOjcwLCJyZWR1Y3Rpb25FZmZvcnQiOjUsImFscGhhUXVhbGl0eSI6MTAwfX0sIm91dHB1dEZvcm1hdCI6IndlYnAifQ=="
&#x20;     }
&#x20;   }
&#x20; ]
}
:::

### Custom page schema

A custom schema allows you to add appropriate structured data features for a specific page.

- Open the HyperBuilder App > Click on page settings icon > In the page setting side menu placed input field **"Custom page schema (JSON-LD)"**
- Via hover on the label, a tooltip is displayed with a link to the Google documentation.

![](https://api.archbee.com/api/optimize/5goaGPkGyPYxtK7K75CEC/NbOx2GX_xVzEoVXThko_i_image.png)

- For examle you can fill in "WebPage" schema
  - Should be filled for each language
  - Save changes

:::BlockQuote
\{
"@type": "WebPage",
"@id": "https\://example.com/page\_slug",
"name": "Some title",
"description": "Some description",
"url": "https\://example.com/page\_slug",
"isPartOf": \{
"@id": "https\://example.com/#website"
},
"primaryImageOfPage": \{
"@id": "https\://example.com/sample-post/#primaryimage"
},
"datePublished": "2025-08-26",
"inLanguage": "en-US"
}
:::

- When custom page schema is filled in, a schema will be generated **only for the current page**.
  - If values for **"WebSite"** and **"Organization"&#x20;**&#x61;re fille&#x64;**,&#x20;**&#x74;he custom schema will be added as a part of the main schema.

:::BlockQuote{listStyleType="disc" listStart="2" indent="2"}
\{
&#x20; "@context": "https\://schema.org",
&#x20; "@graph": \[
&#x20;   \{
&#x20;     "@type": "WebSite",
&#x20;     "@id": "yurii-builder-fpifkflmagugmtizgvnzv.staging.draft.hyperbuilder.io",
&#x20;     "url": "https\://yurii-builder-fpifkflmagugmtizgvnzv.staging.draft.hyperbuilder.io/",
&#x20;     "name": "Website name NL",
&#x20;     "description": "Website description EN",
&#x20;     "publisher": \{
&#x20;       "@id": "https\://yurii-builder-fpifkflmagugmtizgvnzv.staging.draft.hyperbuilder.io/"
&#x20;     },
&#x20;     "inLanguage": "en"
&#x20;   },
&#x20;   \{
&#x20;     "@type": "Organization",
&#x20;     "@id": "https\://yurii-builder-fpifkflmagugmtizgvnzv.staging.draft.hyperbuilder.io/",
&#x20;     "name": "Organization name EN",
&#x20;     "legalName": "Organization legal name EN",
&#x20;     "url": "https\://yurii-builder-fpifkflmagugmtizgvnzv.staging.draft.hyperbuilder.io/",
&#x20;     "logo": \{
&#x20;       "@type": "ImageObject",
&#x20;       "url": "https\://images.hyper1.net/eyJrZXkiOiJ5dXJpaS1idWlsZGVyL2J4eUpKZWRyUFFTbmZTU19LS1BOcyIsImVkaXRzIjp7InJlc2l6ZSI6eyJmaXQiOiJpbnNpZGUiLCJ3aXRob3V0RW5sYXJnZW1lbnQiOnRydWV9LCJ3ZWJwIjp7InF1YWxpdHkiOjcwLCJyZWR1Y3Rpb25FZmZvcnQiOjUsImFscGhhUXVhbGl0eSI6MTAwfX0sIm91dHB1dEZvcm1hdCI6IndlYnAifQ=="
&#x20;     }
&#x20;   },
&#x20;   **\{
&#x20;     "@type": "WebPage",
&#x20;     "@id": "https\://example.com/page\_slug",
&#x20;     "name": "Some title",
&#x20;     "description": "Some description",
&#x20;     "url": "https\://example.com/page\_slug",
&#x20;     "isPartOf": \{
&#x20;       "@id": "https\://example.com/#website"
&#x20;     },
&#x20;     "primaryImageOfPage": \{
&#x20;       "@id": "https\://example.com/sample-post/#primaryimage"
&#x20;     },
&#x20;     "datePublished": "2025-08-26",
&#x20;     "inLanguage": "en-US"
&#x20;   }**
&#x20; ]
}
:::

### Block-level schema

In the current implementation, it was planned to add **"JobPosting"** schema generation for the **"Vacancy Details"** block.

- At the block level, values in the schema are filled in based on vacancy data.
- When the page is rendered with the **"Vacancy Details"** block, the **"JobPosting"** schema is generated with the details from the current vacancy.
  - If values for **"WebSite"** and **"Organization"&#x20;**&#x61;re fille&#x64;**,&#x20;**&#x74;he  **"JobPosting"** schema will be added as a part of the main schema.
  - If values for **"Organization"&#x20;**&#x61;re fille&#x64;**,&#x20;**&#x74;he parameters for **"hiringOrganization"** in the schema will be based on **"Organization"&#x20;**&#x73;chema data.

:::BlockQuote
&#x20;   **\{
&#x20;     "@context": "https\://schema.org",
&#x20;     "@type": "JobPosting",
&#x20;     "datePosted": "2024-11-25T12:43:46.348Z",
&#x20;     "title": "Vacancy name",
&#x20;     "description": "Vacancy Description",
&#x20;     "occupationalCategory": "test category",
&#x20;     "directApply": true,
&#x20;     "validThrough": "2026-06-29T21:00:00.000Z",
&#x20;     "employmentType": "manager",
&#x20;     "hiringOrganization": \{
&#x20;       "@type": "Organization",
&#x20;       "name": "Organization name",
&#x20;       "sameAs": "Organization legal name",
&#x20;       "url": "https\://yurii-builder-fpifkflmagugmtizgvnzv.staging.draft.hyperbuilder.io/"
&#x20;     },
&#x20;     "jobLocation": \{
&#x20;       "@type": "Place",
&#x20;       "address": \{
&#x20;         "@type": "PostalAddress",
&#x20;         "addressRegion": "Brugge",
&#x20;         "addressCountry": ""
&#x20;       }**
:::

:::Paragraph{listStyleType="disc" indent="2"}
If values for **"Organization"&#x20;**&#x61;re **NOT** fille&#x64;**,&#x20;**&#x74;he parameters for **"hiringOrganization"** in the schema will be based on vacancy data.
:::

:::BlockQuote
&#x20;   \{
&#x20;     "@context": "https\://schema.org",
&#x20;     "@type": "JobPosting",
&#x20;     "datePosted": "2024-11-25T12:43:46.348Z",
&#x20;     "title": "Vacancy name",
&#x20;     "description": "Vacancy Description",
&#x20;     "occupationalCategory": "test category",
&#x20;     "directApply": true,
&#x20;     "validThrough": "2026-06-29T21:00:00.000Z",
&#x20;     "employmentType": "manager",
&#x20;     "hiringOrganization": \{
&#x20;       "@type": "Organization",
&#x20;    &#x20;**&#x20; "name": "Automobilia Brugge",
&#x20;       "sameAs": "Automobilia",**
&#x20;       "url": "https\://yurii-builder-fpifkflmagugmtizgvnzv.staging.draft.hyperbuilder.io/"
&#x20;     },
&#x20;     "jobLocation": \{
&#x20;       "@type": "Place",
&#x20;       "address": \{
&#x20;         "@type": "PostalAddress",
&#x20;         "addressRegion": "Brugge",
&#x20;         "addressCountry": ""
&#x20;       }
:::

