Page builder
Build the home page and custom pages from blocks; 26 block types, their styles and the custom HTML/CSS block.
How it works
Create a page from Admin → Appearance → Pages (address: lowercase letters, digits and dashes, e.g. about-us). The page with address home is your home page. Pages are edited in the same site editor as the site settings:
- Add blocks on the left, reorder (↑ ↓), duplicate, hide, delete.
- The preview in the middle is drawn with your site's real design (font, corners, colours, design-specific decoration); switch between desktop/tablet/phone and light/dark.
- Fields of the selected block are on the right. Text is saved for the selected language; empty languages fall back to the default. AI translate fills empty fields (30 times a day).
- Save draft doesn't touch the live site; Publish makes it live. A page can be limited to signed-in customers.
A page holds up to 40 blocks. Links must be site paths like /register or https:// URLs; images come from the Media library (/media/...) or an https:// URL.
Reserved addresses can't be page names: admin, dashboard, login, register, services, blog, api, api-docs, media, forgot-password, verify-email, updates, order, adminapi, og, rss.xml, sitemap.xml, robots.txt, manifest.webmanifest, llms.txt.
Common style fields
Every block except the spacer has:
| Field | Values | Effect |
|---|---|---|
| Background | none, surface, primary (brand colour), gradient | Section background. On brand/gradient backgrounds, text switches to a readable colour automatically. |
| Spacing | md, sm, lg | Top/bottom padding |
With background none or surface the Call to action block becomes a brand-tinted card on the page background; with primary or gradient it becomes a full-width coloured band.
Blocks
The editor's Add block panel groups blocks into categories. Every new block starts with editable sample content. Most blocks have a Style option; the first option is the default look.
Top of page
| Block | Fields and styles |
|---|---|
Hero (hero) | Layout: centered, split-login (sign-in card beside it), split-order (quick order beside it), kpi (counters + sign-in), type (big typography), image; eyebrow, title, subtitle, two buttons, image, alignment, up to 4 badges |
Announcement bar (banner) | Text, link text and URL, icon, colour (brand, soft, dark, success, warning). When it is the first block of a page it appears above the site menu. |
Campaign countdown (countdown) | Eyebrow, title, text, end time (YYYY-MM-DD HH:MM, UTC), optional coupon code, button; style: card, band, minimal. Shows "This campaign has ended" afterwards. |
Content
| Block | Fields and styles |
|---|---|
Features (features) | Title, subtitle, columns (3, 2, 4), style (cards, list, minimal, numbered, centered), up to 12 items: icon, title, text |
How it works (steps) | Title, style (cards, timeline, row connected horizontal, minimal), up to 6 steps |
Image + text (split) | Eyebrow, title, Markdown text, image, image side (right/left), image style (rounded, framed, plain, tilted), checklist up to 8 items, button |
Text columns (columns) | Title, 2–4 columns, style (plain, cards, divided), each with optional icon, title, Markdown text |
Text (richText) | Markdown body (20,000 chars) |
FAQ (faq) | Title, style (accordion, columns, cards), up to 30 questions |
Sales
| Block | Fields and styles |
|---|---|
Popular services (services) | Title, subtitle, count (3–24), view (cards, table, compact list, grouped by category), button label. Prices are live. |
Pricing plans (pricing) | Title, subtitle, style (cards, outline, compact), up to 6 plans: name, price, period, short description, features (one per line), button, highlight (yes), badge (e.g. "Most popular") |
Platforms (platforms) | Title, subtitle, style (grid, strip, floating, marquee scrolling, cards big cards, pills), up to 16 platforms |
Payment methods (payments) | Title; filled from active methods |
VIP tiers (tiers) | Title, subtitle; from loyalty tiers |
API for resellers (apiSnippet) | Title, text, button; shows a sample API request |
Call to action (cta) | Title, text, button, layout (centered, split, banner) |
Social proof
| Block | Fields and styles |
|---|---|
Reviews (reviews) | Title, style (cards, marquee, spotlight, minimal), up to 12 reviews: name, role, text, rating |
Statistics (stats) | Title, style (cards, inline, band, rings), source (live / custom), up to 6 items |
Live orders (ticker) | Title; recent orders scrolling (no customer data) |
Logos / trust strip (logos) | Title, style (row, marquee, grid), grayscale (yes/no), up to 16 logos: image or name, link |
Contact channels (contact) | Title, subtitle, style (cards, list, buttons), up to 8 channels: kind (telegram, whatsapp, email, instagram, discord, phone, link), label, shown value, link, note. Email and phone links are built automatically. |
Media
| Block | Fields |
|---|---|
Image (image) | Image, alt text, link, width (normal, wide, full) |
Image gallery (gallery) | Title, columns (3, 2, 4), shape (landscape, square, portrait, auto), up to 12 images: image, caption, link |
YouTube video (video) | Title, 11-character video ID |
Advanced
| Block | Fields |
|---|---|
Custom block (custom) | HTML (30,000 chars), CSS (20,000 chars), width (contained, full) — see below |
Spacer (spacer) | Size (md, sm, lg) |
Custom block (HTML/CSS)
Write your own HTML and CSS for sections the ready-made blocks don't cover.
- HTML is cleaned on save:
<script>, event attributes likeonclick,javascript:links and form elements are removed. Links, images (/media/...orhttps://), tables,<details>,<video>and YouTube/Vimeo/Loom iframes are allowed.styleandclassattributes are free. - CSS applies only to this block: each selector is prefixed with the block's scope. Use
:scopefor the block itself.@mediarules are scoped too;@importis removed. - Use theme variables (
var(--brand-solid),var(--on-surface)…) and the block follows your colours and light/dark mode. - Need scripts? Use Custom code (requires 2FA).
<div class="promo">
<span class="tag">New</span>
<h2>30% off TikTok views</h2>
<p>Valid until the end of this weekend.</p>
<a href="/services">See services</a>
</div>
:scope { padding: 8px 0; }
.promo { display: grid; gap: 8px; justify-items: start; padding: 32px; border-radius: 24px;
background: linear-gradient(135deg, var(--brand-solid), var(--brand-solid-2)); color: #fff; }
.tag { padding: 4px 10px; border-radius: 999px; background: rgba(255,255,255,.2); font-size: 12px; font-weight: 700; }
.promo h2 { font-size: 28px; font-weight: 800; }
.promo a { margin-top: 8px; padding: 10px 18px; border-radius: 999px; background: #fff; color: var(--brand-solid); font-weight: 700; }
@media (max-width: 640px) { .promo h2 { font-size: 22px; } }
With a code theme
- If a published block page and a code-theme file share an address, the block page wins.
- On the home page it's the other way round: an active code theme's
home.liquidwins over the block home page.