Team
Team Invitations & Permissions
Team Invitations & Permissions
Invite team members to your venue via email, control their access level with roles, and understand exactly what each role can and cannot do — so the right people have access to the right features.
Where to find it — Web: Sidebar → Team → + button. Mobile: More → Team → Invite.
Overview
Team invitations let you:
- Send email invitations with a secure link that expires after 7 days
- Assign a role (Owner, Manager, or Stylist) that controls what the team member can access
- Pre-configure a staff record (calendar colour, name) before the invitee accepts
- Track invitation status (Pending, Expired) and resend or revoke as needed
- Automatically set up the new team member with a welcome onboarding wizard when they join
Note
FREE accounts are limited to 1 active team member (including pending invitations). PRO accounts have unlimited team members.
Sending an invitation
On web
- Go to Team in the sidebar.
- Click the + button in the Team Members header.
- In the Invite Team Member dialog, enter the team member's Email Address (placeholder: "colleague@example.com").
- Select a Role:
| Option | Display label | Description |
|---|---|---|
| STAFF | "Staff (Stylist)" | Can view own calendar and manage own bookings |
| MANAGER | "Manager" | Can manage bookings, stylists, and day-to-day operations |
| OWNER | "Owner" | Full access to everything, including billing and venue settings |
- Click Send Invitation.
On mobile
- Go to More → Team.
- Tap Invite in the header.
- Enter the Email (placeholder: "staff@example.com").
- Select a Role using the radio buttons: Stylist, Manager, or Owner.
- If you manage multiple venues, select the target Venue.
- Tap Send Invite.
What happens when you send
- A staff record is pre-created for the invitee (inactive, with a name derived from their email and an auto-assigned calendar colour).
- An invitation email is sent with the subject: "You're invited to join {venue name} on OpenChair".
- The email contains an Accept Invitation button linking to a secure claim page.
- The invitation is valid for 7 days from the time it is sent.
PRO billing notice
When inviting on a PRO plan, the invite dialog shows a cost notice:
- If your plan is already at the seat cap: "Your plan is already at the ${cap}/mo cap — no additional cost."
- If under the cap: "Adding this team member will change your monthly plan to ${newCost}/mo when they accept."
The claim process (what the invitee sees)
When the invited team member clicks Accept Invitation in their email, they land on a claim page at /invite/{token}.
If not signed in
The claim page shows a context card ("You've been invited to join {venue name}") and an authentication form with three options:
- Continue with Google — Google OAuth sign-in
- Create Account tab — Full Name, Email (locked to the invitation email), Password (minimum 8 characters), then Create Account & Join
- Sign In tab — Email, Password, then Sign In & Join
After authenticating, the invitation is automatically accepted and the team member is redirected to the welcome onboarding wizard.
If already signed in
The claim page shows the current user's details and a Join {venue name} button. Clicking it accepts the invitation immediately.
Claim page states
| State | What the invitee sees |
|---|---|
| Valid | Authentication form (if not signed in) or "Join" button (if signed in) |
| Expired | "This invitation has expired" — shows the expiry date and asks the invitee to request a new invitation |
| Already accepted | "Invitation already accepted" with a link to go to the venue |
| Already a member | "You're already a member of {venue name}" with a link to the venue |
| Email mismatch | "Account mismatch" — the signed-in email does not match the invitation email. Option to sign out and try again. |
| Not found | "This invitation is no longer valid" — the invitation may have been revoked or the link is incorrect |
After accepting
- The staff record is activated and linked to the invitee's user account.
- A membership is created at the venue with the assigned role.
- The invitee is redirected to the welcome onboarding wizard (
/app/{slug}/welcome) to set up their profile, services, and availability. - The venue owner receives a notification email: "{member name} has joined {venue name}".
Managing pending invitations
Pending and expired invitations appear in the PENDING INVITATIONS section below active staff on the team page (web). Each invitation shows a status badge and the time since it was sent.
Resending an invitation
- Find the pending or expired invitation in the team list.
- Click the action menu → Resend Invitation.
- A new email is sent with a fresh link and the 7-day expiry is reset.
The pre-configured staff record is preserved — resending does not create a duplicate.
Revoking an invitation
- Click the action menu → Revoke Invitation (or Revoke in the detail pane).
- Confirm in the dialog: "This will permanently remove the invitation. Any pre-configured services and availability will be deleted."
Revoking permanently deletes the invitation and the pre-created staff record, including any services and availability that were configured before acceptance.
Warning
Revoking an invitation is permanent. The pre-configured staff record, service assignments, and availability are deleted. To re-invite the same person, send a new invitation.
Roles and permissions
OpenChair has three roles. The role determines what the team member can access across the web app and mobile app.
Permission matrix
| Feature area | Owner | Manager | Stylist |
|---|---|---|---|
| Calendar & bookings | Full access — all staff calendars | Full access — all staff calendars | Own calendar and bookings only |
| Customers | Full access — create, edit, view all | Full access | View own clients only |
| Services | Create, edit, delete, reorder | Create, edit, delete, reorder | View only |
| Team management | Invite, edit, offboard all roles | Edit and offboard stylists only | No access |
| Invite team members | All roles (Owner, Manager, Stylist) | Stylists only — cannot invite Managers or Owners | Cannot invite |
| Marketing campaigns | Create, send, schedule | Create, send, schedule | No access |
| Inbox (messages) | Full access | Full access | Quick SMS/Email only |
| Intelligence (analytics) | Full access | Full access | Full access |
| Concierge approvals | Approve/reject pending actions | Approve/reject pending actions | No access |
| Invoices | Create, send, manage | No access | No access |
| Commission rates | Set venue defaults and per-staff overrides | No access | No access |
| Billing & subscription | Full access — payment settings, payout schedule, Stripe portal | No access | No access |
| Payouts | View payout history and schedule | No access | No access |
| Gift cards | Issue, void, bulk generate | No access | No access |
| Loyalty programme | Configure programme rules and rewards | No access | No access |
| Deposits | Configure and assign to services | Configure and assign to services | No access |
| Business memory | Add, edit, remove, reorder | No access | No access |
| Corporate clients | Create, edit, delete | No access | No access |
| Venue settings | Full access | View only | No access |
| Timesheet | View all staff timesheets | No access (web) | No access |
| Device activity | View shared device sessions | No access | No access |
Role hierarchy for team management
- Owners can manage all roles — invite, edit profiles, change roles, and offboard anyone.
- Managers can only manage Stylists — they cannot invite, edit, or offboard other Managers or Owners.
- Stylists cannot access the team management page at all.
Tip
Assign the Manager role to shift leaders or senior team members who need to handle day-to-day operations without accessing billing or financial settings.
What Stylists can do
Although Stylists have the most restricted access, they can still:
- View and manage their own calendar and bookings
- Send quick SMS and email messages to clients
- View their assigned services
- Clock in/out via the timeclock
- Update their own profile (name, photo, bio)
- Set their own availability (if permitted by the venue owner)
- Use the kiosk PIN to claim a shared device
Invitation security
Invitations use secure token handling:
| Security feature | Detail |
|---|---|
| Token generation | Cryptographically random UUID |
| Token storage | SHA256 hash stored in the database (plaintext token is never stored) |
| Token verification | Incoming token is hashed and compared against the stored hash |
| Expiry | 7 days from creation (reset on resend) |
| Single use | Token is invalidated after acceptance |
| Revocation | Revoking permanently deletes the token and associated staff record |
Platform differences
| Feature | Web | Mobile |
|---|---|---|
| Invite trigger | + icon button in Team Members header | Invite button in list header |
| Role selector | Dropdown: "Staff (Stylist)", "Manager", "Owner" | Radio buttons: "Stylist", "Manager", "Owner" |
| Venue selector (multi-venue) | Not shown (invites to current venue) | Radio list if multiple venues |
| Submit button | "Send Invitation" | "Send Invite" |
| Pending invitations | Listed in team sidebar with action menus | Not manageable — web only |
| Resend / Revoke | Action menu on pending row | Not available |
| Claim page | Works on any browser — responsive layout | Same web page (not a native screen) |
Troubleshooting
| Issue | Solution |
|---|---|
| Invitation email not received | Ask the team member to check their spam/junk folder. Go to Team, find the pending invitation, and click Resend Invitation to send a new email with a fresh 7-day link. |
| "Free tier limit reached" when inviting | FREE accounts are limited to 1 active team member including pending invitations. Upgrade to PRO for unlimited team members, or revoke an existing pending invitation first. |
| Invitation expired | Invitations expire after 7 days. Find the expired invitation in the team list (it shows an "Expired" badge) and click Resend Invitation to generate a new link. |
| "Account mismatch" on the claim page | The team member is signed into a different account than the one the invitation was sent to. They should sign out and either create an account with the invited email or ask you to send a new invitation to their current email. |
| "This invitation is no longer valid" | The invitation may have been revoked. Send a new invitation from the Team page. |
| Team member accepted but does not appear in the team list | Refresh the team page. The team member should appear as active after completing the welcome onboarding wizard. If they still do not appear, check that the invitation status shows "Accepted". |
| Cannot invite a Manager or Owner | Only venue owners can invite Managers and Owners. If you are a Manager, you can only invite Stylists. |
| Team member cannot access a feature | Check their role. Stylists have restricted access — they can only view their own calendar and bookings. Managers cannot access billing, invoices, commission, or payouts. See the permission matrix above. |
Related Articles
Last updated: March 2026