Your product
The application your customer logs into. Everything below is reached through it, which is why the builder reads as a feature rather than a tool.
PageKit — the self-hosted GrapesJS site builder, sold as source. Get early access
Build a fully branded visual page builder for your SaaS, agency or platform. Customize the editor UI, control users and permissions, manage tenant data and publish through your own infrastructure.
Blocks
Styles
None of these three looks like the others, and all three are the same visual editing engine underneath. That is the whole white-label proposition: the engine is a dependency, the interface is your product. Load one and click around before you read another word.
Open in a new tabThe stock demo, unstyled and unbranded. This is the starting point every white-label build begins from — and the one your customers should never see.
The demo loads in an embedded frame only after you click, so the page itself stays light.
White-labelling is usually described as a logo swap. It is not. Compare the two frames below: same canvas, same drag-and-drop, same style controls — and two entirely different products from the point of view of the person using them.
Elements
Properties
Before
After
Your users should feel like they are using your product — not a third-party editor that happens to be embedded in it.
A white-label page builder is a visual page editing system that can be integrated into another product and customized to match its brand, its user experience and its business rules.
The phrase is borrowed from manufacturing, where a white-label product is made by one company and sold under another company's name. Applied to software, it means the editing engine is a dependency your team chooses, and everything the customer perceives — the interface, the vocabulary, the content library, the rules about who may do what — belongs to you. A white-label page builder is therefore less a product you install than a product you assemble.
What white-label actually covers
White-label is more than changing a logo. Every item above is a decision about who owns a layer of the experience — and a builder that stops at the logo is still recognisably somebody else's tool.
A white-label build is a stack of layers, and it is worth being precise about which of them a visual editing engine can supply and which it cannot. Read the stack top-down: what your customer sees, down to where the published page finally lives.
The application your customer logs into. Everything below is reached through it, which is why the builder reads as a feature rather than a tool.
Identity, tone and vocabulary. Applied to the editor shell, the block names and every string a user reads.
The visual editing engine: canvas, components, drag-and-drop, style controls, responsive editing, serialization. Open source, self-hosted, and customizable down to the panel level.
Blocks, templates, presets, storage adapters, asset integrations and export commands that fill in what the core deliberately leaves open.
Projects, pages, revisions and assets, in your schema and your database. The editor serializes a project; where that project is written is your call.
Accounts, organizations, roles, permissions, billing and the API the editor talks to. No editing engine can supply this, because it is your business logic.
Rendering, hosting, caching, domains and certificates for the pages your customers ship.
The editing engine is the one layer you do not have to build. Every other layer is where your product actually differentiates — which is a good reason not to spend a year rebuilding the one that is already solved.
The same stack, itemised. Three lanes: what the engine gives you out of the box, what an extension can supply, and what only your application can own. The third lane is the honest one — and it is where an enterprise buyer will spend their questions.
Nothing in the right-hand lane is a gap in the editor — those capabilities depend on your accounts, your tenancy model and your infrastructure, so no editing engine can decide them for you.
Your customer never opens an editor. They open your product, go to their pages, pick a template and start editing — and the editing engine happens to be what draws the canvas in the middle of that journey.
The journey your customer actually takes
GrapesJS can work behind the scenes while your customers interact with your product experience.
Your product, with the builder as one feature among several.
Authentication, organizations, billing, users and permissions — the context every editing session runs inside.
The page builder feature: project loading, saving, template selection, publishing triggers.
The visual editing layer — canvas, components, blocks, layers, styles, assets and commands.
GrapesJS handles the visual editing layer. Your application handles the business logic around it — and the boundary between the two is the most important design decision in the whole build.
See how it worksWhat your application brings to the boundary
If more than one customer uses your builder, tenancy stops being an implementation detail. Each organization needs its own pages, its own asset library, its own templates and its own brand — and needs to be structurally unable to reach anyone else's.
Your platform
Owns the tenant boundary and enforces it on every request
Org A
Org B
Org C
Every project, asset and template row is scoped to an organization, and the scope is applied server-side — not by filtering in the browser.
A tenant's pages are rows in your database. The editor loads one project at a time and writes it back through your API.
Uploads land in a per-tenant prefix or bucket, so one customer's media can never surface in another customer's picker.
Templates can be global, plan-specific or private to one organization, which is often what a plan upgrade actually unlocks.
Colors, fonts and logos resolve per organization, so an agency's clients each see their own identity in the same deployment.
Where a tenant's pages are published — path, subdomain or custom domain — is tenant configuration your application resolves.
GrapesJS has no built-in concept of tenants. It edits one project at a time; the isolation, the scoping and the entitlement checks around that project are implemented in your application and enforced by your backend.
Customization runs deeper than most teams plan for. These four levels are ordered by how visible they are, not by how much work they take — and the last one is the one that separates a rebranded tool from a product that feels native.
The layer everyone starts with. Necessary, and on its own never sufficient.
The chrome around the canvas. Panels can be rearranged, replaced or rendered by your own components.
What users can actually place on a page. This is where a builder stops being generic.
The words. A user who reads your vocabulary everywhere never notices there is an engine underneath.
The editor's interface strings are translatable and its panels are configurable, so the first two levels are configuration rather than forks. The core is BSD-3-Clause licensed and self-hosted, which is what makes the deeper levels possible at all.
A builder that ships to teams needs more than one kind of user. These five roles cover most products; the names matter less than the fact that each one resolves to a different set of visible panels, available blocks and publishing rights.
Full access, including billing and deletion
Users, settings and publishing
Layouts, styles and templates
Content within approved blocks
Read-only access and previews
How a permission reaches the canvas
Read the chain top-down: the first three steps happen in your application, and only the last three are editor configuration. Hiding a panel is a rendering consequence of a decision already made and already enforced server-side — a permission that exists only in the browser is not a permission.
In a single-user tool, editing and publishing are the same action. In a product sold to teams they are separate states with separate rights — and that separation is usually the first thing an enterprise buyer asks about.
A page exists in your database with no public representation yet.
Anyone with edit rights on this project works in the canvas.
The draft is shared as a preview, with comments handled by your product.
A user with approval rights signs off. The state change is yours to record.
Your infrastructure renders and ships the page. The editor's role has ended.
Marked stages are where an authorization check belongs.
Editors can create content while only authorized users can publish it — one sentence that decides a surprising number of enterprise deals.
The core ships an empty block palette on purpose: a generic block set would be wrong for every product it was dropped into. What you put in that palette is the most product-specific decision in the whole build.
Your opening section, with the fields your product actually uses.
Plan tables that can read from your own pricing data.
Social proof laid out the way your brand presents it.
A repeatable grid your users cannot accidentally break.
Question and answer pairs, expandable in the published page.
A form wired to your endpoint, not a third party's.
The conversion block, locked to your button styles.
A shared footer that stays consistent across every page.
Templates are how a builder teaches its users what good looks like. A blank canvas is intimidating; a template set built around your customers' jobs is a product feature.
Template kinds worth shipping
These are kinds of template a builder typically ships, not catalogue listings. What your set contains should follow from what your customers publish most often.
Don't give users a generic editor. Give them an editor designed around your product.
For agencies and website platforms, the published page carrying the client's own domain is the product. It is also entirely an infrastructure concern — worth designing early, because retrofitting domain routing into a live builder is unpleasant.
Store the hostname against the workspace, verify ownership, then route inbound requests for it to that tenant's published pages.
Issuing and renewing certificates per customer domain is a platform responsibility, whether you run it yourself or delegate it to a host.
Some teams render pages from their own database; others push the generated output to a static host. Both patterns work, and one plugin family already automates the second.
Give every page a platform-hosted preview URL from the beginning, so review and approval never wait on DNS.
No visual editing library provides domain hosting. GrapesJS emits pages; DNS, certificates, routing and caching stay with your infrastructure or your hosting provider.
The moment two people can edit the same page, someone will ask who changed it. An activity trail is cheap to add while you are designing save and publish, and expensive to reconstruct afterwards.
Activity
What to record on every entry
Illustrative rows. GrapesJS has no audit log; the trail is written by your application when it handles a save, an approval or a publish, which is also the only place that knows which user is acting.
Read the stack as a build order. Each rung is either supplied by the engine, available as a plugin, or work only your team can do — and being honest about which is which is what makes an estimate survive contact with the project.
Two rungs have no catalogue answer, and that is deliberate rather than an oversight: roles and audit logging depend on your identity model and your database, so they are application work. If that is the part your team would rather not build alone, it is exactly what implementation services exist for.
Every listing below is a real product on GJS.Market, grouped by the job it does in a white-label build.
Replace the default interface: custom panels, a bespoke shell, or an editor rendered by your own components.
Browse this categoryA consumer-style builder interface shipped as a preset — the same one running in the demo above, if your users are not developers.
A complete alternative editor shell, useful both as a shipping option and as proof of how far the chrome can be taken.
Render the editor interface with your own React components, so the builder inherits your design system instead of approximating it.
Bring the selection highlight in line with your brand colors — a small detail that quietly gives away an unbranded editor.
The blocks, sections and templates your users compose with — plus the page and symbol management around them.
Browse this categoryLet users save their own sections as reusable blocks, which is how a customer's block library grows without your team shipping each one.
Manage the template set your users start from, per product or per customer.
Reusable linked sections: update a header once and every page carrying it follows.
Multi-page projects inside one editing session, which is what most customer workspaces actually need.
Where projects and assets live, and how the output leaves the editor.
Browse this categoryPersist projects to a headless backend instead of browser storage — a worked example of the storage seam.
Route the asset library through managed media storage, with per-tenant folders on your side.
Hand users a downloadable archive of the page they built, markup and styles included.
Throttle how often projects are written back, which matters as soon as many tenants edit at once.
Projects, deployment targets, recovery and the small details that make an editor feel finished.
Browse this categoryManage multiple projects in one editor instance — the closest thing to a workspace shell in the catalogue.
Deploy the built page to a static host straight from the editor, as a publishing pattern to adapt.
Autosave with restore, so a lost tab is not a lost afternoon for your customer.
Load your own typefaces into the editor so what users see while editing matches what visitors get.
Three combinations that come up repeatedly. None of them is a bundle — they are starting points, and every one of them still needs your application around it.
For teams shipping client sites
See the landing page angleFor SaaS teams adding page editing
See the SaaS angleFor platforms whose customers publish
See the embedding anglePrices are the marketplace listing prices at build time and are shown for orientation.
GrapesJS provides the visual editing foundation. GJS.Market plugins can add specialized functionality without requiring your team to build every feature internally. Both routes below are legitimate — the question is which parts of the stack are genuinely your differentiator.
Full control over every line, paid for in engineering time you keep paying.
What you take on
Right when the editing behaviour itself is your differentiator.
Talk through the scopeAdopt what is solved, and spend your engineering on what is yours.
What the loop looks like
Right when your differentiator is the product around the editor.
Browse PluginsFeature by feature, what you would be writing yourself against what an established engine already exposes. The rows marked as application-layer are the honest half of this table: an editing engine cannot own them, so they are on your plate either way.
| Capability | From scratch | GrapesJS |
|---|---|---|
| Visual canvas | Build | Included |
| Drag & drop | Build | Included |
| Components | Build | Included |
| Blocks | Build | Extensible |
| Styling | Build | Included |
| Responsive editing | Build | Included |
| Custom UI | Build | Extensible |
| Assets | Build | Extensible |
| Storage | Build | Extensible |
| Permissions | Build | Application layer |
| Multi-tenancy | Build | Application layer |
| Publishing | Build | Application layer |
| Plugins | Build | Extensible |
Verdicts reflect the current release, re-verified 2026-09-02. "Application layer" means the capability depends on your accounts and infrastructure, not that it is missing.
Build your business logic and branded experience. Don't rebuild the visual editing engine.
Three related decisions that get discussed as if they were one. They stack rather than compete: most products end up doing all three, in this order.
Put the editor inside your application. A technical question about integration, bundling and the boundary between editor state and app state.
Embedding an editorMake the editor look and behave like part of your product. A product question about brand, vocabulary, permissions and what your customers are allowed to do.
You are hereTurn page editing into a customer-facing product feature you package and sell. A commercial question about plans, limits and pricing.
Packaging it as SaaSSix recurring shapes. They differ less in the editor they need than in what surrounds it.
Give customers visual page creation inside your product, without sending them to a separate tool and back.
The SaaS angleGive clients a controlled, branded editing environment where they can update copy without touching layout.
Landing page workflowsProvide customers with their own page creation experience, including their own domains and their own asset libraries.
Embedding the editorLet marketing teams launch campaign pages without booking engineering time for every variation.
Drag-and-drop mechanicsAdd visual editing to an existing content product without building a complete editor engine first.
Headless CMS editingCreate controlled editing and publishing workflows, with approval steps and an activity trail that satisfies review.
Implementation servicesOnce the builder is yours, so is the commercial relationship around it. How you package it is a business decision rather than a technical one — but it is worth making before the tenancy model is set in concrete, because plans and limits are tenancy questions.
A conventional four-tier shape, shown to make the tenancy implications concrete rather than to prescribe a price list.
One workspace, a small page limit, platform-hosted preview URLs.
More pages, the full template set, a custom domain.
Multiple seats, roles and an approval step before publishing.
Multiple organizations, an audit trail, custom blocks and support terms.
Illustrative only. What belongs in which tier depends on your market — but note how much of the ladder is made of the permission and tenancy features from earlier on this page.
You control your pricing, plans and customer relationship.
A white-label build makes demands a closed editor cannot meet. You need to change the interface, run it on your own infrastructure, and integrate it with systems the vendor has never heard of. The core is BSD-3-Clause licensed and self-hostable, which is what makes all of that possible.
The interface is markup and configuration you can read, replace and extend — not a black box with a theming API.
The editor runs where your application runs, so projects and assets never have to leave your infrastructure.
A documented plugin architecture, plus an ecosystem of existing plugins to adapt rather than start from.
Storage, assets and commands are seams you point at your own services.
Deployment, upgrades and data location are your decisions, on your schedule.
You can read the code you are shipping to customers, which is increasingly a procurement requirement rather than a preference.
The editor is a browser library, so it goes wherever your application already lives. These pages cover the mechanics per framework — mounting, cleanup, and keeping editor state out of your render loop.
Mounting the editor in a component tree without letting it fight your render cycle.
React page builderClient-only editor, server-rendered published pages, and the boundary between them.
Next.js page builderLifecycle, refs and teardown when the editor lives inside a Vue component.
GrapesJS with VueComponent setup, change detection and cleanup in an Angular application.
GrapesJS with AngularNo framework at all — a script tag, a container element and an init call.
Start with the basicsEditor
Get the engine running with a starting block set, a couple of templates and your brand applied. The goal is a demo your own team believes in, not a shippable product.
Product
Wire it into the application: authentication, users, organizations, project storage and an asset library. This is where the builder stops being a demo.
Governance
Roles, permissions, an approval step and an activity trail. Usually driven by the first customer with more than three people in it.
Scale
Multi-tenancy, custom domains, publishing infrastructure, billing, analytics and the white-label workflows that let each customer look like themselves.
A builder has two runtimes with almost nothing in common, and treating them as one is the most common performance mistake in this kind of product.
Load the editing bundle when a user opens the editor, not when they open your dashboard.
The editor manages its own tree. Mirroring it into your global store re-renders your application on every keystroke.
A tenant with thousands of images needs a paged, searchable picker rather than one long list.
Rich text engines, code editors and image tools are worth deferring until the panel that needs them is opened.
Nothing the editor needs belongs in the bundle a visitor downloads for a published page.
Images, critical CSS and caching for published pages are decided by your rendering layer, where you have full control.
The authoring environment and the published website do not need to have the same runtime requirements.
A multi-tenant builder accepts untrusted content and produces pages other people load. Both halves deserve attention, and most of the work sits on your side of the boundary.
Project load, save, asset upload and publish are all endpoints an authenticated session reaches — and all worth treating as such.
Re-check on the server what the interface already hid. A hidden button is a UX affordance, not access control.
Scope every query by organization, and prefer a scope that is impossible to omit over one every developer must remember.
Check type, size and extension server-side, and serve user media from a separate origin where you can.
A visual builder can produce arbitrary markup. Decide deliberately whether custom scripts are allowed, and sanitize accordingly.
Publishing changes what the public sees. Rate-limit it, authorize it explicitly and record who triggered it.
A saved project is user input. Validate its shape before storing or re-rendering it.
The block list and the panel set are configuration the browser can be made to lie about.
This is a starting checklist for a builder specifically, not a complete security programme, and no architecture is secure by construction. Treat a white-label builder like any other multi-tenant application that accepts user content.
Implementation
Need help integrating, branding or extending GrapesJS inside your product? Explore implementation services for custom integrations, UI customization, plugins and production support — including the two rungs of the stack the catalogue cannot cover for you.
Start with the GrapesJS visual editing engine. Add your branding, content system, permissions and infrastructure to create a page builder that feels native to your product.
Tell us what you are building and which layers of the stack you want to own. We come back with a scope.
Get StartedThemes, custom UI, blocks, templates, storage adapters and publishing commands — grouped by the rung of the stack they fill.
Browse PluginsIntegration, branding, custom blocks, roles and approval workflows, implemented with your team.
Explore ServicesYour brand. Your editor. Your customers. Your infrastructure.