to select ↑↓ to navigate
Frappe Framework

Frappe Framework

Open in ChatGPT
Ask ChatGPT about this page
Open in Claude
Ask Claude about this page

System Users vs Website Users

System Users vs Website Users

Frappe has two fundamentally different user types. Knowing the distinction matters for both access control and billing on managed plans.

The two types

Type What Login destination Counted on managed plans?
System User Internal staff who use the desk Desk (/app) Yes — counts against your seat licence
Website User Customers, suppliers, candidates using the portal Portal pages (/me, /orders, etc.) No — unlimited on most plans

User Type is set on the User record at creation. Switching afterwards requires manual cleanup of permissions and references.

When to use Website User

  • Customers logging into the portal to view their invoices, orders, statements
  • Suppliers viewing purchase orders or submitting bids
  • Job candidates filling out applications
  • Anyone who shouldn't see the internal desk

When to use System User

  • Employees of your organisation
  • Consultants you've onboarded
  • Anyone who needs to create / edit DocTypes via the desk

Permissions still apply on top

"Website User" is not a weaker rank — it's a user type. You still assign Roles to control what data they can access. A Website User with the right role can use API endpoints; a System User with no roles can do nothing.

Portal access for Website Users

A Website User needs three things to use the portal:

  1. The Website User type (set at creation)
  2. Roles that grant access to the portal DocTypes they need (Customer, Supplier, Employee, …)
  3. An entry in the linked party's portal_users child table — so a customer-user sees only that customer's data

Missing any of the three = login works but no data appears.

Switching a user from Website to System

Possible via desk: User → User Type → System User. Caution — the user now consumes a seat. The reverse (System → Website) requires removing System User-only roles first.

Auditing

System Settings → User Type lists the current split. Useful before billing renews or before purging stale users.

Last updated 3 days ago
Was this helpful?
Thanks!