Web builder

Overview
The builder assembles surfaces from blocks: pages, reusable templates (header, footer, page types) and popups. The structure is not markup but a tree of data — the markup is produced from it. That is why preview and page look the same, and why a block can be reworked without losing text.
The editor separates two jobs that are often confused: content (text and images in existing blocks) and style & structure (adding, moving and shaping blocks). Both have their own permissions — so someone can maintain texts without being able to change the layout.
Core tasks
Create and edit a surface. From the overview you create a page and open the editor. Blocks are selected in the tree on the left and configured on the right.
Use templates. Header and footer are templates; changing one changes it everywhere. Display conditions control where a template applies.
Style classes instead of one-offs. A style class bundles design and affects every surface that uses it. That is the difference between a maintainable site and a hundred special cases.
Work from the library. The library holds reusable templates and global elements, including export and import.
Publish. Publishing can happen immediately or be scheduled; rolling back to an earlier state is possible.
Translate into further languages. A page has a default language and further languages; every text has its own version per language, without one the page shows the default language. When the editor is set to a further language, Suggest translation (AI) (sparkle icon next to the language switch) suggests a translation for every text still missing there — text and multi-line fields, list entries and rich text. You see source text and suggestion side by side, can edit the suggestion and tick what is applied. Translations you already maintain stay untouched — suggestions and writes only happen where the language is still empty. Identifiers such as icon names or addresses are not sent to the AI. One run covers at most 150 texts; the rest follows in the next. The function needs the AI to be switched on (Settings → AI) and the right builder.page.update; new rich text is only applied with builder.style.edit as well, locked building blocks only with builder.lock.override.
Tools in the editor
Start from a starter template. Under Starter templates the library offers complete pages (Product landing page, About us), sections (Hero with buttons, Three benefits, Frequently asked questions, Customer quote, Call to action) and looks (Clear & light, Warm & friendly, Dark & elegant). Use creates a new page or a new look that you then change freely — the template itself stays untouched. In the editor the sections are also in the block palette under Starter sections; one click inserts them at the selected position. Creating pages needs builder.page.create, looks builder.theme.manage, inserting sections builder.style.edit.
Transfer a style from one block to another. The context menu of a block (right mouse button) has Copy style and Paste style, on the keyboard Ctrl+Alt+C and Ctrl+Alt+V (on a Mac ⌘+Alt+C/V). Design and style classes are transferred, never the content. A locked block only accepts a style with builder.lock.override. Both shortcuts are listed in the shortcut overview (key ?); while you type in an input field or a selection list they do not fire.
Work without a mouse. The editor runs full screen: the Tab key stays within its tools instead of wandering through the hidden navigation of the application, and screen readers only read the editor. Every button has a name; the canvas is a region of its own that you can reach and scroll with the keyboard.
Read the check notes. The Checks panel reports while you build what makes the finished page worse — clicking a note selects the affected block. Besides search engine and accessibility notes it lists:
- Too many elements in the output. The page exceeds the maximum number of elements; data lists
count with their full number of entries. Many data lists on one surface are named separately, because every list is a query of its own on every request.
- Superseded block. A block the palette no longer offers (such as the former collection list) is
still delivered; the note names its successor.
- Insufficient contrast on a block. If a block sets its own text or background colour, the contrast
to the text below it is checked — in the light and in the dark colour scheme. A ratio of 4.5 is required, 3 for large headings (H1, H2). Gradients and freely written colour values cannot be computed and remain unchecked.
No note prevents publishing.
Show fields of linked entries. If a collection has a reference field (such as "Author"), dynamic values and data lists offer its fields expanded: Author → Name, Author → Image. The page then shows the value of the linked entry.
Reset a style class. In the class manager Reset changes restores the state of the class when it was opened — class changes are not part of the undo history.
Choose the websites a popup appears on. Under Triggers & rules, Only on these websites chooses where the popup appears. Without a selected website it appears nowhere — the editor points this out. That way a new popup never shows up on every website of a brand by accident.
Show a template only during a period. The display condition Period takes a start and an end; one side may stay open — for instance a promotional header for the promotion week. During the period the template replaces the regular one. The website switches by itself at the boundary; cached pages expire exactly there.
What the builder keeps to by itself. Element count, weight and loading time of the output are fixed limits for the three page types landing page, post and archive, and the delivered pages are regularly checked against WCAG 2.1 AA. If a limit is broken, the test pipeline notices it — not the visitor.
Fields in detail
The tree is the truth, the markup a product. You edit blocks, not source code; the page is generated from them.
Page
| Field | Required | Values / format | What it does |
|---|---|---|---|
Name name | yes | text | What the page is called internally. |
Kind kind | yes | page, template, block | What it stands for. A template gives many pages the same shape; a block is a reusable piece. |
Template kind templateKind | for templates | selection | Which content type the template applies to. |
Address slug | yes | text | The part of the public address. Do not change it once the page is linked — every link would otherwise lead nowhere. |
Language locale / languages locales | no | language codes | Which languages the page exists in. |
Brand brandId | no | one of your brands | For which brand. |
Theme themeUlid | no | a configured theme | Colours, fonts, spacing. |
Blocks blocks | yes | tree of blocks | The content of the page. Every block carries its own styling; the markup is generated from it and never written by hand. |
Display conditions displayConditions | no | conditions | When a section is visible — language, device, period. |
Popup popupConfig | no | structure | When, how and on which websites an overlay appears — after a delay, on exit intent, once per visitor. Without the "once per visitor" limit an overlay quickly becomes a nuisance. |
Search engines and preview
| Field | Values / format | What it does |
|---|---|---|
Page title metaTitle | text | What appears in the browser tab and as the heading in search results. |
Description metaDescription | text | The text under the result. It decides the click, not the ranking. |
Canonical address canonicalUrl | address | Which address counts as the real one when the same content is reachable several times. |
Index robotsIndex / follow links robotsFollow | yes/no | Whether the page may appear in search results and whether its links are followed. Indexing switched off by accident quietly removes the page from search — and nobody notices until the traffic goes. |
Preview image ogImageFileUlid | image file | What appears when shared in chats and networks. |
Preview image as an address ogImageUrl | address | A freely entered sharing image. It overrides the uploaded ogImageFileUlid — if something is here, the picked file is not used. |
Structured data structuredDataType, structuredDataJson | type and structure | Extra details for search engines — event, product, how-to. They enable the richer presentation in results. |
Translated SEO details seoI18n | per language | Title and description in the further languages. Without them the source language appears in the foreign-language result. |
Interface and automation only
| Field | Values / format | What it does |
|---|---|---|
version | number | The state of the draft tree. When saving you send back the state you found; if it has moved on, a second editor was faster — the change is rejected instead of overwriting theirs. Without it no check happens. The state only rises when the tree changes; SEO entries, publishing and custom code leave it alone. |
POST …/pages/{ulid}/ai/translation-suggestions · POST …/pages/{ulid}/translations | targetLocale, items [{ref, text}], expectedVersion | The AI translation suggestion and applying it as separate steps: the suggestion writes nothing, applying writes only confirmed texts into empty languages. This lets an automation or an AI tool translate as well without overwriting maintained texts. |
Settings & permissions
- View:
builder.page.view· Create:builder.page.create· Content:builder.page.update - Style & structure:
builder.style.edit· Style classes:builder.class.view/builder.class.manage - Templates:
builder.template.manage· Popups:builder.popup.manage - Design tokens and breakpoints (Settings → Builder themes):
builder.theme.manage - Library:
builder.library.manage· Publish:builder.page.publish - Locked blocks:
builder.lock.override
Module flag: module.builder.
FAQ & troubleshooting
I cannot move a block. Either builder.style.edit is missing, or the block is locked — only builder.lock.override releases locks.
A change is not visible on the page. Check whether it was published. Drafts stay in the editor.
A style change affects several places. That is what a style class is for. For a one-off, set the styling on the element instead of on the class.