Create / Edit Staff
How to Access
- Add new staff — Staffs page → Add new staff button
- Edit staff — Staffs page → click the pencil icon on any row
Page Structure
The form is split into up to three sections:
- Personal Information
- Service Assignment
- Team Portal Access (staff only — not shown for the owner)
The Save button is disabled until Full Name and Email are both filled.
1. Personal Information
| Field | Required | Notes |
|---|---|---|
| Avatar | No | Profile image. For the owner, the image is pulled from shop settings |
| Full Name | Yes | For the owner, pulled from shop settings and read-only here |
| Yes | Login and contact email. Must be unique — a warning appears if already in use | |
| Phone | No | |
| Location | No | For the owner, pulled from shop location settings |
Most owner fields are read-only — change them in the shop's merchant settings.
2. Service Assignment
This section links staff to services so they can be assigned to appointments.
When the Staff Has No Services Yet
- Subtitle: "Assign staff to a service to ensure its availability"
- Click Add service to open a modal listing services not yet assigned to any staff
Add service modal:
- Search bar to find a service by name
- Service list — shows only services not yet assigned
- Select one service (each staff is assigned to one service at a time)
- Click Done to save, or Cancel to discard
When the Staff Already Has Assigned Services
- Each assigned service is shown with Edit and Delete actions
- Delete unassigns the service (it falls back to the owner). A confirmation modal appears
- Edit reopens the Add service modal to change the assignment
For the Owner
The section is called Service assignments and lists services not yet assigned to any staff:
- Only 5 services are shown at a time — click more to reveal 5 more; click hide to collapse
- Hover a service row to reveal a Change assignee button that jumps to the service detail screen
3. Team Portal Access
Grant staff members the ability to log in to the Team Portal outside Shopify Admin, where they can manage only their own appointments and availability.
Granting Access (First Time)
- Click Grant access to Team portal
- In the permissions modal, choose which permissions to grant. Permissions are grouped:
- Service — View / Edit / Delete services assigned to the staff
- Appointment — View / Create and edit appointments assigned to the staff
- Staff — View all staff
- Setting — View all settings, plus optional edit permissions for General, Business hours, Notifications, and Branding
- Click Apply (enabled once at least one permission is selected)
After Access Is Granted
- The button changes to Edit access
- A new button Invite staff appears next to it
Sending an Invite
- Click Invite staff
- On the Invite page, enter the staff member's email
- Confirm — the system sends a one-time login email (magic link) to the staff
- The owner is CC'd on the invite email
The invite email includes:
- Personalised greeting
- A Login to Your Account button (magic link)
- Link expires 15 minutes after sending, or earlier if the session changes browser/device
Standalone Login (For Staff)
The staff member clicks the magic link in the invite email and lands on a standalone login page:
- Greeting with the shop name
- Email input
- Continue with email button
States:
| State | What the staff sees |
|---|---|
| Default | Empty email, button disabled |
| Success | Valid email entered, success alert, login can continue |
| Error | "No team member found with this email address." |
If a staff member's status is later changed to Inactive, they can no longer log in.
Editing an Existing Staff
All the above can be changed at any time:
- Change the email → uniqueness is validated
- Delete the staff while upcoming appointments exist → warning modal; appointments are reassigned to the owner
4. Working Hours
Set when this staff is available to take appointments. Slots are only generated during the staff's working hours.
Working hours apply to the staff. Business hours apply to the store. Bookable slots = the intersection of both.
| Field | Required | Notes |
|---|---|---|
| Custom working hours toggle | Yes | OFF (default) — follow business hours · ON — set custom hours per day |
| Day toggle (per weekday) | Yes | Turn each day ON or OFF |
| Start / End time | Conditional | Required when the day is ON. Must stay within business hours |
What happens when the toggle goes OFF: custom hours are kept in the background — switching back ON restores them.
Banner warnings:
- All days OFF → "This staff has no working hours and will not generate any slots."
- Hours set outside business hours → blocked with "Cannot exceed business hours."
- Day ON when the store is closed → blocked with "Store is closed on [Day]."
Existing appointments: if hours change (toggle flipped, or business hours updated by the store), appointments that fall outside the new hours stay scheduled — staff still complete them.
The owner can edit their own working hours here too, even though most owner fields elsewhere are read-only.
5. Schedule & Time Off (Blocked Time)
Mark periods when the staff is unavailable (sick leave, meetings, holidays). Blocked slots are removed from booking; existing appointments inside the block must be resolved before the block is saved.
Blocked Time Table
Each row shows: date / time · type (Full day / Partial) · reason · repeat · Edit / Delete actions.
Deleting a block restores its slots automatically.
Adding a Block
Click + Add blocked time to open the modal:
| Field | Required | Notes |
|---|---|---|
| Date | Yes | Day to block |
| Full day toggle | No | OFF — set start / end time · ON — block the entire day |
| Start / End time | Conditional | Required when Full day is OFF. A block crossing midnight (e.g., 22:00–02:00) splits into two records |
| Reason | No | Free-text label (e.g., Sick leave, Meeting) |
| Repeat | No | No repeat / Weekly / Yearly |
Blocking a full day on a day the staff is already off is allowed.
Resolving Conflicts with Appointments
When you save a block that overlaps upcoming appointments, the system blocks the save and opens the Resolve appointment conflict modal. You must pick one:
| Option | Behavior |
|---|---|
| Reassign | Move conflicting appointments to another staff who handles the same service. Customer is notified |
| Cancel | Cancel the appointments. Customer is notified with reason (default "Staff unavailable due to scheduled block", editable) |
If the service has only this staff, Reassign is hidden — only Cancel is available.
Conflict scan scope (by repeat):
| Repeat | Scan window |
|---|---|
| No repeat | Selected day only |
| Weekly | Next 4 weeks |
| Yearly | Next 12 months |
Completed and cancelled appointments are skipped.