Skip to main content
Portals is in Alpha and isn’t in the main sidebar yet. Go straight to app.statisfy.com/portals — it’s worth bookmarking. Anyone on your team can open it.

Setup at a Glance

Steps 1–2 and 5 happen once per portal. Steps 3–4 happen once per account you onboard, so they keep going as you add customers.

Step 1: Create Your Portal From a Template

Open the Portals page at app.statisfy.com/portals and select Create new portal. Pick a template — select Live preview on a template card to see what it looks like first — give the portal a name, and select Create portal. Statisfy opens it in Portal Studio. Full walkthrough: Creating a Portal. A new portal starts as a Draft. Nothing is customer-facing until you go live in Step 5.

Step 2: Customize It

Portal Studio is the in-browser editor. Two things matter for setup:
  • Code — your portal’s files, built with React and TypeScript. Edits autosave as a draft, so the live version never changes underneath you.
  • Settings → Components — where you tell each ready-made Statisfy component which data or worker it should use. Unlike code, these need an explicit Save changes.
The editor in full — tabs, version history, and rollback — is covered in Building & Publishing.

Customizing With Claude

You don’t have to edit the code by hand. Statisfy has a Portal MCP server, so Claude (or another MCP client) can work on a portal directly: list your portals, read and edit files, validate the changes, and deploy a preview URL for you to review. Connect it once — add a custom connector pointing at https://api.statisfy.com/mcp/portal and authorize it — then ask in plain language:
“Change the welcome heading on the Acme portal and give me a preview link.”
Edits go to your draft, and the assistant can build and deploy a preview. It cannot publish to your live site: going live stays a human action in Portal Studio. Setup, the full tool list, and troubleshooting: Portal MCP Server.

Step 3: Point Each Account at Its Onboarding Project

If your portal shows a customer their onboarding project — the Project module — it doesn’t guess which project that is. It reads a field on the account. Every account in Statisfy already has a built-in Onboarding Project field: a Lookup – Project field that names the one project this account’s portal should show. Until you set it, a customer can sign in perfectly well and still find the project area empty.

Setting it

You don’t need a portal permission for this — it’s an ordinary account edit, so any team member who can edit customer data can do it. Note that a Member only sees the accounts in their own book; Member All Accounts, Builder, and Admin see every account. Open the account, find Onboarding Project, search for the project by name, and select it. To point many accounts at their projects at once, use bulk edit — select the accounts, choose the field, and link them. The mechanics are the same as any other lookup field; see Lookup Fields.
You probably shouldn’t do this by hand for every account. A project template automation can create the onboarding project from a template and fill in this field automatically whenever an account matches conditions you set — so a new customer’s portal works the moment they sign in, with nobody remembering to link anything.

How the portal uses it

  • Once per account, not once per portal. When a customer signs in, the portal reads the field on their account. One field per account serves every portal you build, so there’s nothing to wire up per portal.
  • The Project module reads it automatically. In Portal Studio this appears as a Locked property under Settings → Components — Statisfy resolves it per signed-in customer, which is why it’s read-only there and why you don’t need to configure it.
  • It’s also the boundary. A portal only ever shows the project the signed-in customer’s own field points at, so one account’s project can’t surface on another’s portal.
An empty Onboarding Project field is the most common reason a portal loads correctly but its project area shows nothing. Check the field on the account before you start debugging the portal itself.

Step 4: Set Up Who Can Sign In

This is the step that’s easiest to miss: a portal doesn’t have its own user list. Anyone who signs in must already exist in Statisfy as a person on an account. A published portal open at its URL, showing the customer sign-in screen where visitors enter their email for a one-time code Adding that contact is an ordinary customer-data edit — no portal permission needed, and any team member who can edit customer data can do it (a Member for the accounts in their own book). To give a customer access, make sure they are a contact on the account whose data they should see. That contact record is what binds their portal session to one account — every piece of data the portal shows is scoped to it.

What a customer experiences

  1. They open your portal and enter their email address.
  2. Statisfy emails them a 6-digit code, valid for as long as you set on the Auth tab (1–60 minutes, default 10).
  3. They enter the code and land in the portal, signed in and scoped to their account.
They stay signed in across reloads without re-entering a code, for up to 30 days of continued use.
One active session per portal, per person. Signing in on a new device ends that contact’s earlier session on the same portal — they’ll be asked to sign in again on the old one.

Contacts on more than one account

A contact can be attached to several accounts — one primary plus any number of secondary associations. If a portal’s template includes the account switcher, that contact sees a picker naming the account they’re viewing and can switch between the accounts they hold; switching re-scopes everything on the page to the account they chose. The switcher only ever offers accounts the contact actually holds — it can’t be used to reach another customer’s data — and a contact on exactly one account sees a plain label rather than a picker.

What to check before you invite customers

1

The contact exists

Open the account and confirm the person is listed, with the exact email address they’ll type at sign-in.
2

The email matches

The address on the contact record and the address they enter must be the same. A typo isn’t a distinct error — no code is sent at all (see below).
3

Preview as that customer

In Portal Studio, use Preview as on the Preview tab to pick that account and person, and see the portal exactly as they will. This one needs the manage portals permission, since it signs you in as that customer.
A wrong or unknown email address fails silently — on purpose. If the address isn’t a contact in Statisfy, the sign-in screen still says the code was sent, but nothing is emailed. This is deliberate: it stops the sign-in page from being used to test whether someone is your customer. So “I never got the code” almost always means the contact record is missing or the address doesn’t match.

Step 5: Preview and Go Live

Taking a portal live is two deliberate moves, so nothing reaches a customer unreviewed:
1

Build a preview link

Select Preview link in the editor header. When your draft has edits that aren’t built yet, the popover offers Build a new link from your draft — Statisfy saves your draft, builds it, and deploys it to a preview address; your live site does not change. Builds usually finish in a minute or two, and the popover then shows the link with Copy and Open. Anyone on your team can do this.
2

Go live

When the preview looks right, someone with the manage portals permission — an Admin or Builder — publishes it. The first time, open Settings → Domains → Add domain. Enter a subdomain (lowercase letters, numbers, and hyphens) to serve the portal at your-subdomain.customer.site, or leave it blank for an auto-generated address — then select Go Live. After that, each new version goes live from Make live… in the editor header.
Component settings reach your live portal at your next Go live, together with your code — so if you changed them in Step 2, go live again to ship them.

See It the Way Your Customers Do

Once the portal is live, the surest check is to sign in to it yourself, as a customer would. Nothing about it is simulated — it’s the real portal, on the real URL, with real account data.
1

Add yourself as a contact

Open any account and add yourself as a person on it, using an email address you can receive mail at. This is the same thing you’d do for a real customer (Step 4) — the contact record is what lets an address sign in at all.
2

Open the live portal and sign in

Go to your portal’s URL, enter that email address, and select the option to send a code. Statisfy emails you a 6-digit sign-in code; enter it.Not sure of the URL? Open the portal in Portal Studio and check Settings → Domains, which lists every address it’s served at. The Go live control in the editor header also shows the current live address.
3

Pick the account

If you’ve added yourself to more than one account and your template includes the account switcher, choose the account you want to inspect.
What you’re looking at is exactly what a customer on that account sees — their onboarding project, their chat, their data, and nothing from any other account. Add yourself to a second account and switch to compare.
This is the live portal, so anything you do in it is real. A comment you post from the portal is shared with the customer, and a task you complete is genuinely completed. Use an account you’re comfortable touching — a test account is safer than a real customer’s.
Want to check a customer’s view before going live, or without adding yourself anywhere? Use Preview as on the Preview tab in Portal Studio, which renders the draft against a real account and person. It needs the manage portals permission; signing in to the live portal only needs a contact record and an inbox, so it’s the option you can hand to anyone.
Remember to remove yourself from the account afterwards if you don’t want to stay on it — a contact record is ordinary customer data and shows up wherever contacts do.

Who can do what

Building a portal needs no special role — anything that changes what your customers can reach does. Everything that changes what your customers see sits behind one permission — manage portals, held by the Admin and Builder roles. Everything before that is open to your whole team. So a builder owns a portal end to end: author it, ship it, retire it. Nothing here is admin-only. Rollback, version history, and archiving are covered in Building & Publishing. To change someone’s role, see the User Management and Roles Guide.

Advanced

Neither of these is needed to get a portal working — add them when you want them.

Add a Digital Worker Chat

If your portal includes the Chat or Onboarding component, it needs a Digital Worker to answer your customers. A portal doesn’t come with one — you create the worker separately, then point the component at it.
1

Create and configure the worker

Go to Digital Workers, create a worker, and set its persona, knowledge bases, and guardrails. Full reference: Configuring a Digital Worker.
2

Set its status to Active

Only Active workers can serve a portal. A Draft or Archived worker isn’t offered in the picker, and a portal that references one fails to build.
3

Turn on its Portal channel

On the worker’s Portal tab, enable the channel and set the required Acknowledgement message — what a customer sees when a reply is held for human approval.
4

Pick the worker in Portal Studio

Open Settings → Components, choose the worker for the Chat (or Onboarding) component, and select Save changes. Saved settings show in your preview right away and reach the live portal at your next Go live.
Which component needs what:
A component you haven’t configured shows a placeholder instead of its content — for example, “This chat isn’t configured yet.” Configure every component under Settings → Components before you go live. If you pick a worker and later set it to Draft or Archived, the next build of that portal fails rather than shipping a chat that can’t answer.
The chat picks its own onboarding project. It uses the customer’s most recent project created from a template whose name contains “onboarding” and that still has an open task — not the account’s Onboarding Project field. Point that field at the same project so the chat and the project view are talking about the same work.
Don’t see Digital Workers in your navigation? The nav row needs the Admin role, and the feature has to be turned on for your organization — contact your administrator or Statisfy support.

Brand the Sign-In Email

Out of the box, Statisfy sends a clean built-in sign-in email and your customers can sign in straight away. To send it from your own address instead, that domain has to be verified for sending first.
  1. Go to Settings → DNS, enter your domain, and select Add domain.
  2. Have your IT or DNS admin publish the generated DKIM and mail-server records at your DNS provider.
  3. Select Verify in Statisfy. Propagation can take a few hours.
Full walkthrough, including how to check a record before you click Verify: DNS Setup. Once the domain is verified, set the sender, subject, body, and code lifetime per portal on the Auth tab in Portal Studio — see Customizing the Login Email.
Statisfy rejects a sender address on an unverified domain when you save the Auth tab. A good pattern once verified is login@your-domain.com.

Setup Checklist

  • A JWT developer key has been generated
  • Every Statisfy component in the portal is configured
  • An active Digital Worker exists with its Portal channel on (only if the portal has a Chat or Onboarding component)
  • Each account’s Onboarding Project field points at the right project (only if the portal shows a project)
  • Each customer exists as a person on the account they should see, with the exact email they’ll use
  • Someone with the manage portals permission — an Admin or Builder — is on hand for the go-live (building and previewing need no special role)
  • The portal has been previewed and taken live at a subdomain
  • A sending domain is verified (only if you want a branded sign-in email)

Troubleshooting

You don’t have a developer key yet — this is the publishable key and JWT secret Statisfy uses to wire a portal to live data. Select Generate key next to the button to create one without leaving the dialog, or generate a JWT secret under Settings → API keys. You only do this once; every portal afterwards reuses the same key. See Publishable Keys & Secrets.
Almost always the address isn’t a contact in Statisfy, or it doesn’t match the contact record exactly. Statisfy answers the sign-in screen the same way either way and sends nothing — see Step 4. Check the account’s people list, then have them try again. If the record is correct, check your spam folder and confirm your sending domain is still verified under Settings → DNS.
Their email resolved to no person on any account — usually because the contact was removed or moved after they last signed in. Re-add them as a contact on the right account.
Both need the manage portals permission — the Admin or Builder role. They fail differently, which is worth knowing: Archive simply isn’t offered (the menu is hidden on the card, and the Danger zone says you don’t have permission), while Make live… stays clickable and fails with a permission error, so a failure there usually means your role rather than a broken build. Editing and previewing need no special role, which is why the rest of the editor still works. See Who can do what.
The address is on a domain that isn’t verified for sending. Verify it under Settings → DNS first — see Brand the Sign-In Email — or leave the sender blank to use the Statisfy default.
No worker is chosen for that component, or the chosen worker is no longer Active. Check the worker’s status under Digital Workers, then pick it again under Settings → Components and go live. See Add a Digital Worker Chat.
That account’s Onboarding Project field hasn’t been set. Open the account, set the field to the customer’s project, and have the customer sign in again — no rebuild or go-live is needed, because the field is read at sign-in. See Step 3. If this keeps happening for new customers, set up a project template automation so the field is filled in for you.
It hasn’t been configured. Open Settings → Components in Portal Studio, set its properties (for example, choose the Digital Worker for a chat), select Save changes, then go live again — component settings reach the live portal only at your next go-live.

Next Steps