Roles & Permissions
Pulsevia uses per-workspace (tenant) roles plus an optional Super Admin flag on the user account.
Super Admin
- Field:
users.is_super_admin - Not a Spatie role
- Bypasses permission checks
- Can open Platform (when SaaS entitlement is on) and Settings → Updates
- Created for the first installer admin
Use sparingly. Day-to-day work should use Owner / Administrator roles inside a workspace.
Built-in roles
| Role | Intent |
|---|---|
| Owner | Full control of the workspace |
| Administrator | Same permissions as Owner (operational admin) |
| Manager | Campaigns + inbox + analytics/reports + structure edits; no billing/team.manage; no hard deletes on campaigns/brands |
| Location Manager | Inbox ops + analytics + location/employee edits; no campaign create; no reports export; no API tokens |
| Analyst | Read feedback + analytics + export reports |
| Staff | Read-only feedback and structure |
Owner vs Administrator: both have all Spatie permissions. Ownership membership (tenant_user.is_owner) is separate and used for billing/contact defaults.
Permission matrix
| Permission | Owner | Admin | Manager | Location Mgr | Analyst | Staff |
|---|---|---|---|---|---|---|
| campaign.create | ✓ | ✓ | ✓ | |||
| campaign.edit | ✓ | ✓ | ✓ | |||
| campaign.delete | ✓ | ✓ | ||||
| feedback.view | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| feedback.assign | ✓ | ✓ | ✓ | ✓ | ||
| feedback.resolve | ✓ | ✓ | ✓ | ✓ | ||
| feedback.delete | ✓ | ✓ | ✓ | |||
| analytics.view | ✓ | ✓ | ✓ | ✓ | ✓ | |
| reports.export | ✓ | ✓ | ✓ | ✓ | ||
| team.manage | ✓ | ✓ | ||||
| billing.manage | ✓ | ✓ | ||||
| privacy.manage | ✓ | ✓ | ✓ | |||
| audit.view | ✓ | ✓ | ✓ | |||
| api.tokens.manage | ✓ | ✓ | ✓ | |||
| notes.view | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| notes.create / edit | ✓ | ✓ | ✓ | ✓ | ||
| notes.delete | ✓ | ✓ | ||||
| brands.view | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| brands.create / edit | ✓ | ✓ | ✓ | |||
| brands.delete | ✓ | ✓ | ||||
| locations.view | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| locations.create | ✓ | ✓ | ✓ | |||
| locations.edit | ✓ | ✓ | ✓ | ✓ | ||
| locations.delete | ✓ | ✓ | ||||
| employees.view | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| employees.create / edit | ✓ | ✓ | ✓ | ✓ | ||
| employees.delete | ✓ | ✓ |
team.manage gates notification rule/endpoint writes and some branding admin actions.
Guides per role
Owner / Administrator
- Configure workspace structure, branding, privacy, billing
- Create campaigns, publish channels, manage inbox, exports
- Manage API tokens and notification endpoints
Manager
- Build and publish campaigns; operate inbox end-to-end
- View analytics and export reports
- Edit brands/locations/employees (no delete)
- Cannot manage billing or notification endpoint admin (
team.manage)
Location Manager
- Work the inbox (assign/resolve)
- View analytics
- Edit assigned locations / employees
- Cannot create campaigns or export reports
Analyst
- View inbox (read), analytics dashboards, export reports
- No mutations on campaigns or feedback status
Staff
- View inbox and structure only
Switching workspaces
Users belonging to multiple tenants can switch via the app workspace switcher (POST /api/tenants/switch). Roles are assigned per tenant.