Manage shop services and barber service assignments on Guile. Services are created at the shop level and then assigned to individual barbers with optional price and visibility overrides.
Services in Guile follow a two-level architecture:
Shop Services - Created at the shop level with base configuration (name, description, duration, price, categories)
Barber Service Assignments - Shop services are assigned to individual barbers, who can override visibility and pricing
This architecture allows shops to maintain consistent service offerings while giving barbers flexibility to customize their pricing and control which services they offer.
When you create a service at the shop level, you define the name, description, base price, and duration. Services can be configured as standalone offerings, add-ons to enhance other services, or bundles that package multiple services together at a fixed price. The system supports flexible pricing strategies to match real-world barbering business models.Once created, shop services must be assigned to individual barbers before they can be booked. Barbers can customize the visibility and price of their assigned services.
After creating a shop service, you assign it to one or more barbers using the batch assignment endpoint. When assigning services, you can:
Assign multiple services (1-25) to a barber in a single request
Set initial visibility (visible or hidden) for each service
Set custom pricing that overrides the shop-level price
Receive detailed failure information if any assignments fail
Important: Services are hidden by default when created or assigned. You must explicitly set visibility to “visible” if you want the service to appear in booking menus immediately. This default behavior allows you to:
Prepare services before making them available to customers
Assign services to apprentice barbers who may not be ready to offer them yet
Control seasonal service availability (e.g., hide summer specials during winter)
Review and configure pricing before going live
The assignment operation supports partial success - if some services fail to assign (e.g., already assigned, not found), the successful assignments are still processed, and you receive detailed problem information for each failure.
Once a service is assigned to a barber, the barber can customize two aspects:
Visibility - Control whether the service appears in their booking menu (visible or hidden)
Price - Override the shop-level price with custom pricing (if permitted by the shop)
All other service properties (name, description, duration, categories, bundled add-ons) are managed at the shop level and cannot be modified by individual barbers. To update these properties, you must update the shop service itself.Note: Shops may restrict certain barbers (such as commission-based barbers) from setting custom prices. When a barber attempts to modify pricing but doesn’t have permission, the API will return a 422 Unprocessable Entity error. All barbers can control service visibility regardless of their pricing permissions.
Base Services are standalone offerings like “Men’s Haircut” or “Beard Trim” that customers can book directly. These form the foundation of your service menu and can be booked independently without any additional services.Add-ons are services that enhance appointments, such as “Hot Towel” or “Scalp Massage.” Add-ons can be selected by customers when booking any appointment, or included automatically in bundles. When you create an add-on, you set a default price and duration, but these values are ignored when the service is included in a bundle.Bundles are packages that include a base service plus one or more add-ons at a fixed total price. For example, “Premium Haircut Package” might include a haircut, beard trim, and hot towel for $55. When customers book a bundle, the included add-ons cannot be removed, but they can add additional service add-ons for an extra cost.
Bundle duration reflects the sum of all included services. If your base service takes 30 minutes and you include two add-ons (15 minutes and 5 minutes), the bundle duration would likely be set to 50 minutes. Customers who add optional services beyond the bundle will see the duration increase accordingly. When barbers create appointments manually, they can override the system-calculated duration if needed.
Services have a base price set at the shop level. Individual barbers can override this price when the service is assigned to them, allowing for flexible pricing based on experience level or specialization.Add-ons maintain default prices that apply when customers select them individually. However, when an add-on is included in a bundle, its price is ignored—only the bundle’s total price matters. This lets you offer “free” add-ons as part of premium packages while still charging for those same add-ons when added to regular services.For appointments created by customers, all prices and durations use system-defined values (with barber-level overrides applied if set). For appointments created by barbers, the system suggests appropriate pricing, but barbers have full control to override the overall appointment price and duration. Note that barbers override the total appointment price, not individual service prices within the appointment.
A service can function as a base service, an add-on, or both. For example, “Beard Trim” might be bookable as a standalone service ($15, 15 minutes) or offered as an add-on to a haircut. Cost and duration are optional fields since some add-ons may only exist within bundles and don’t need standalone pricing.
Bundles cannot be nested — you cannot include one bundle inside another. Bundles also cannot function as add-ons to other services. This constraint keeps the service structure simple and predictable.