If you run a SaaS product for salons, gyms, contractors or restaurants, your customers ask for a website and you would rather they did not leave to get one. Whether to embed or redirect is covered on our SaaS platforms page and in the white label vs API comparison. This page is for the team that has already decided to embed: how the session handshake works, what to lock down, which features to expose, what breaks inside an iframe, and how to listen for events.
There are three ways to give your users a website: send them to a branded builder on its own address, call an API and build your own interface, or embed a ready-made builder inside your product. The trade-offs are covered on our SaaS platforms page and in white label vs API, and the endpoint reference lives on the API page. Here we assume you want the builder to appear inside your own app, under your own navigation, signed in as your user.

*The Embedded SDK section of the brand console. Each embed config gets its own client credentials.*
Embedding goes wrong most often at sign-in. The pattern We.Inc uses keeps your users signed in to your product only, with no second account to manage:
Rules that follow from this:
Every embed config has a list of allowed origins: the exact HTTPS addresses (or wildcard subdomain patterns) of the product pages that will host the builder. If a session request arrives with an origin header that is not on the list, it is refused.
Plan the list per environment. A common mistake is a single config used by production, staging and local development, which means the production config has to allow test addresses. Create one config per environment instead, each with its own credentials, so revoking staging never touches production.
Each config chooses which builder panels your users get. The choices in the console are:
| Panel | What it does | Typical choice for a vertical SaaS |
|---|---|---|
| AI chat | Users describe changes in plain English and the AI makes them | On: this is the main editing method for non-technical users |
| Preview | Live preview of the site | On |
| File tree | Browse project files | Off for most audiences |
| Terminal | Terminal access in the builder | Off unless your users are developers |
| Deploy | Publish the site | On, or off if you publish from your own interface |
| Export | Download the source code | Your call: on gives users an exit, off keeps them in your product |
Configs also carry a theme (primary colour, font, corner radius, dark mode), an optional custom logo, a switch for the "powered by" mark, a maximum number of projects per user, and a maximum number of AI messages per session. Set the AI message cap deliberately; it is the main lever on usage cost for a tier that includes websites.

*API keys and webhook endpoints live alongside the embed settings in the brand console.*
Embedded builders run in a frame on your page. Plan for these before launch, not after the first support ticket.
Two kinds of event matter to an embedding product.
In the page: the embed script's callbacks (ready, saved, error, session expired) let your interface react immediately, for example by showing "Saved" in your own header.
On your server: brand-level webhooks report client events: client signed up, first site created, site published, not published seven days after joining, client referred someone, payment received, and client paused. Each delivery is a JSON body with a delivery ID (stable across retries), the event name, a timestamp and the data.

*Choosing webhook events. The note on the right states the retry and auto-disable rule.*
How to receive them safely:
Typical uses: mark the account as "website live" in your product when site published arrives; start an onboarding nudge on not published after seven days; sync paused clients with your own subscription state.
The embed is one way in. The same brand account also has client accounts with per-client switches (publish, own domain, code view, blog, store, forms, SEO, and approval before publishing), an audit log of organisation actions, and a branded portal you can use alongside the embed for users who prefer a separate tab.

*Per-client switches in the brand console, independent of the embed config.*

*The builder itself, here on the brand's own address. Embedded, the same builder sits inside your product.*
Sites are real code (React, Vite, TypeScript, Tailwind), and each site's code can be downloaded or synced to GitHub, which matters if you ever move platform or a customer asks for their files.

*The code panel: the site is source code, not a locked format.*
Copy this into your launch ticket.
If you are still choosing between embedding and a branded portal, start with the SaaS platforms page. If you need endpoint detail for client provisioning, see the API page. If you are ready to try the embed with your own product in a test environment, book a demo and we will set up a config with you.
Last checked 2026-10-25.
Book a demo. Pricing is tailored to your volume and setup, and you get your exact price on the call. 0% transaction fee.
No. Your server requests a short-lived session token for your own user ID with the config's client ID and secret, and your front end initialises the embed with that token.
Yes. Each embed config chooses which panels are visible: AI chat, preview, file tree, terminal, deploy and export. It also sets theme, logo, the powered-by mark, projects per user and AI messages per session.
Each delivery is signed with HMAC-SHA256, including a version that signs a timestamp with the body so you can reject replays. Deliveries carry a stable ID for de-duplication and are retried up to six times over about fifteen hours.
The session-token handshake avoids depending on the builder's own cookies, but browsers keep tightening third-party storage, so test the full flow in current Safari and Firefox, including private windows, before launch.
The API lets you build your own interface and provision clients from your systems. The embed puts the ready-made builder inside your product. Many teams use the API for provisioning and the embed for editing.
We.Inc is an AI-powered website builder you can resell under your own brand. Launch a branded client dashboard, bill on Stripe Connect, and deliver AI-generated websites in minutes. White-label pricing is tailored to your volume and setup: book a 30-minute demo for a quote.