Run these queries to collect site data for informed defaults.
Warn the user if a service with a similar name already exists.
Note: Staff queries are optional for COURSE services since staffMemberIds is ignored by the API. However, querying staff can still be useful for context (e.g., mentioning the instructor in the description).
For any fields the user did not explicitly specify:
| Field | Default | Notes |
|---|---|---|
| Capacity | 10 | defaultCapacity — required for COURSE |
| Online booking | Enabled | onlineBooking.enabled: true |
rateType: "FIXED" (for the entire course)rateType: "NO_FEE", options.inPerson: true, options.online: falseCRITICAL: COURSE services do NOT use staffMemberIds or sessionDurations. These fields are ignored. Use defaultCapacity instead.
Paid course:
Free course:
staffMemberIds — it is ignored for COURSE servicesschedule.availabilityConstraints.sessionDurations — not used for COURSEdefaultCapacity is required — sets max participants for the entire coursebulkCreateEvents using the returned service.schedule.id (see Create and Update Booking Services)Save the serviceId from the response: results[0].item.service.id
Provide a summary including:
Example:
I created "Yoga Teacher Training":
I assumed a capacity of 10 since you didn't specify. The price of $300 covers the entire course — customers pay once for all sessions. You can review and adjust the details in the service form.
Next step: You'll need to set up the course schedule (specific session dates and times) in the service form.
| Error | Cause | Action |
|---|---|---|
| 400 "INVALID_PAYMENT_OPTIONS" | Payment misconfigured | Free: inPerson: true, online: false. Paid: price > 0 |
| 403 | Permission denied | Inform user they lack permission |
| rateType | options.online | options.inPerson | Valid? |
|---|---|---|---|
| FIXED | true | false | ✓ |
| FIXED | false | true | ✓ |
| FIXED | true | true | ✓ |
| NO_FEE | false | true | ✓ |
| NO_FEE | true | false | ✗ |
| Any | false | false | ✗ |
staffMemberIds is ignored for COURSE. Staff association is managed through calendar events.Last updated: 22 June 2026