Service Architecture
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
Creating Shop Services
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.Assigning Services to Barbers
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
- 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
Barber Service Overrides
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)
Visibility and Service Listings
Service visibility determines where services appear:- Shop-level visibility - Only visible shop services are listed when querying shop services
- Barber-level visibility - Only visible barber services are listed when querying a barber’s services
- An apprentice barber can hide advanced services they haven’t mastered yet
- Shops can assign all services to new barbers but keep them hidden until training is complete
- Seasonal services can be hidden during off-season months
- Barbers can temporarily hide services when they’re fully booked or unavailable
Service Types
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.Bundles and Duration
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.Pricing Strategies
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.Service Configuration
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.Best Practices
Shop-Level Service Management:- Set clear, descriptive names for your services so customers understand what they’re booking
- Define base prices that work for most barbers in your shop
- When creating bundles, price them to reflect value—customers should see a benefit compared to booking services separately
- Calculate bundle durations carefully to ensure schedules remain accurate
- Organize services by category to help customers make quick decisions
- Assign all relevant services to each barber when they join the shop
- Remember that services are hidden by default - explicitly set visibility to “visible” when ready
- Use visibility controls to hide services a barber doesn’t want to offer or isn’t ready to perform
- Set custom pricing for barbers with different experience levels or specializations
- Use batch assignment (up to 25 services at once) for efficiency when onboarding new barbers
- Hide seasonal services during off-season to prevent customer bookings
- Create services at the shop level with base configuration (services are hidden by default)
- Set shop-level visibility to “visible” when ready to offer the service
- Assign services to barbers (individually or in batches)
- Set barber-level visibility to “visible” for services each barber is ready to perform
- Barbers customize pricing as needed for their experience level
- Update shop-level service properties (name, duration, etc.) when needed
- Barber-level overrides (visibility, price) persist through shop-level updates