Below are the recommended steps to successfully set up Wix Bookings staff members and configure their custom working schedules on Wix, with real-world troubleshooting and fixes for common API issues.
13d21c63-b5ec-5912-8397-c3a5ddb27a97)Note: If you receive errors from Bookings APIs, the Wix Bookings app may not be installed on the site. Use List Installed Apps to verify, and Install Wix Apps to install it if missing.
A Wix Bookings staff member setup involves multiple interconnected steps that must be executed in the correct sequence. This recipe covers the complete workflow from foundation setup to custom working hours configuration.
STAFF INHERIT BUSINESS HOURS AT CREATION TIME: When you create a new staff member, they immediately inherit whatever business hours exist at that moment. This inheritance is NOT dynamic - it's a one-time copy during creation.
Order of Operations Matters:
Understanding the Impact:
Staff schedule configuration includes:
"type": "WORKING_HOURS" and recurrence rulesresourceId that links them to their schedules and availability.The complete custom working hours setup requires understanding three distinct ID types and their relationships:
externalScheduleId and resources array)scheduleId)The most common mistake is confusing which ID to use in which API call, leading to "Resource not found" or "Invalid scheduleId" errors.
assignWorkingHoursSchedule AND creating WORKING_HOURS events. Only doing the first step results in staff with no actual working hours.WORKING_HOURS events, several fields that appear optional in documentation are actually required: externalScheduleId, adjustedStart, adjustedEnd, resources array, and appId.YYYY-MM-DDTHH:mm:ss) without timezone indicators.recurrenceRule.days array.Before proceeding, decide your approach based on business hour requirements:
When to use: All staff will have the same working hours or similar schedules
Advantages:
When to use: Each staff member needs completely different schedules
Disadvantages:
Note: If your site already has Wix Bookings properly configured with business schedules, you can skip this step and go directly to Step 2.
Before creating staff members, ensure the foundation is properly configured:
Check Wix Bookings Installation: Query staff members (POST https://www.wixapis.com/bookings/v1/staff-members/query) to test if Bookings is installed. If you receive "Business schedule not found" errors, the foundation needs setup.
Install Wix Bookings App (if needed): Use the App Installer API with Wix Bookings app ID: 13d21c63-b5ec-5912-8397-c3a5ddb27a97.
Configure Business Schedule: Set up site properties with business operating hours using the Site Properties API.
Create Calendar Schedule and Working Hours: Create a calendar schedule for Wix Bookings integration and populate it with business WORKING_HOURS events.
Before creating any staff, query the current business hours (POST https://www.wixapis.com/calendar/v3/events/query) to understand what staff will inherit:
Document the current hours - this is what your staff will inherit!
If following Strategy A, ensure business hours are set correctly BEFORE creating staff:
If following Strategy B, accept that staff will inherit current (possibly incorrect) hours and plan to configure them individually later.
Create staff members using the Staff API (POST https://www.wixapis.com/bookings/v1/staff-members) with required information:
⚠️ INHERITANCE MOMENT: The moment this API call completes, the staff member inherits the current business hours. There's no "undo" for this inheritance.
Save Critical IDs from Response:
staffMember.id for updates and schedule assignmentstaffMember.resourceId for services and event resourcesstaffMember.resource.eventsSchedule.id for working hours eventsstaffMember.resource.usesDefaultWorkingHours (should be true initially)Only needed if: You want staff to have different hours than what they inherited, OR you followed Strategy B.
Step 5A: Assign Custom Working Hours Schedule
Get staff member details (GET https://www.wixapis.com/bookings/v1/staff-members/<STAFF_MEMBER_ID>?fields=RESOURCE_DETAILS) to extract the events schedule ID. Call assignWorkingHoursSchedule (POST https://www.wixapis.com/bookings/v1/staff-members/<STAFF_MEMBER_ID>/assign-working-hours-schedule) using the staff member ID and their events schedule ID. This detaches the staff member from business default hours.
Verify the response shows "usesDefaultWorkingHours": false.
Step 5B: Create WORKING_HOURS Events
Use the Events API (POST https://www.wixapis.com/calendar/v3/bulk/events/create) to create working hours events for each working day. Each event must include:
scheduleId: Staff member's events schedule IDexternalScheduleId: Staff member's resource IDtype: "WORKING_HOURS"resources array: Staff member's resource IDappId: Wix Bookings app IDCreate separate events for each day of the week the staff member works.
Query the staff member to confirm:
"usesDefaultWorkingHours": false (if you set custom hours)type and resource associationsscheduleId, and resource ID for externalScheduleId and resources array"Business schedule not found" Error: Execute systematic diagnosis: check app installation, site properties, calendar schedule, and working hours events in sequence. Fix the first failed component before proceeding.
Staff Member Still Shows Default Hours:
Completed assignment but missing event creation. Create WORKING_HOURS events using the Bulk Create Events API.
Staff Inherited Wrong Hours:
Multiple Staff Have Different Inherited Hours:
"Invalid scheduleId" or "Resource not found" Errors:
Using wrong ID type in API calls. Verify you're using events schedule ID for scheduleId, resource ID for externalScheduleId and resources array, and staff member ID for updates.
Event Update Fails with Revision Error: Get current event details first and include the revision number in update requests.
Cannot Create Events for Past Dates: Use current or future dates for recurring event start dates.
Events Not Linked to Staff Member:
Ensure resources array contains staff member's resource ID and externalScheduleId is properly set.
If working with existing staff members, first retrieve their details using queryStaffMembers with RESOURCE_DETAILS fieldmask to get the necessary IDs for schedule configuration. This allows you to configure custom working hours for staff members that were created previously.
Check Their Current Inheritance:
usesDefaultWorkingHours fieldtrue: They're still using business hours they inherited at creationfalse: They have custom hours (may have been configured previously)