Bookitive
Team

Custom roles

Build a role from the permission catalog when the system roles don't fit — organization-scope or event-scope, cloned or from scratch.

Not verified yet

When the six system roles don't match how your team divides work, build your own. Settings → Roles lists the built-in roles (fixed) and lets you create custom roles from the full permission catalog.

Creating a role

Choose a scope

A role is either organization-scope (its permissions reach every event, like Admin) or event-scope (granted per event, like Scanner). Pick the scope that matches how you'll hand the role out.

Pick permissions

Tick the exact actions the role should grant from the catalog — grouped into Organization, Members, Events, Customers & orders, Protection, and so on. Only event-scope actions are available for an event-scope role.

Name it and save

Give it a clear name ("Marketing", "Door lead") and save. It's now assignable to members (org roles) or event staff (event roles).

Duplicate, don't start blank

Every role — system or custom — has a Duplicate action that seeds a new custom role from that role's scope and permissions. The fastest route is usually to duplicate the nearest match and adjust — start from Box office and add orders.refund for a "senior box office" role, or from Member and add customers.export for a "marketing" role that can pull mailing lists. Building from the nearest match beats assembling permissions one by one.

Design notes that save headaches

  • Permissions add up, never subtract. You can't make a role that "is Admin but can't see orders" — give the narrower set instead.
  • The catalog is filtered to the role's scope. The role builder only offers organization actions to an org-scope role and event actions to an event-scope role — you can't give an org role an event-scope permission to cascade across every event. Pick the scope that matches the actions you need, then the permissions follow.
  • Mind the deliberate separations. orders.refund is distinct from org.edit; customers.export is distinct from customers.view; audit.view is granted by nothing else. Recreate these boundaries on purpose in custom roles, not by accident.

On this page