Appearance
Opening Hours for Marketplace Applications
Marketplace applications receive opening hours during menu synchronization. This guide explains how to determine which hours to use based on priority.
Receiving Hours During Menu Sync
When you receive a menu publication request, you'll receive both:
- Location data - Contains
businessHoursandavailability(delivery/collection) - Menu data - Contains
serviceAvailability(if menu has custom hours) - Product data - Contains
serviceAvailability(if products have custom hours)
Priority Order
When determining which hours to use, follow this priority order (highest to lowest):
- Product
serviceAvailability- Highest priority - Menu
serviceAvailability- Overrides location - Location
availability.deliveryoravailability.collection- Service-specific - Location
businessHours- Foundation, fallback
Implementation Logic
javascript
function getHoursForProduct(product, menu, location, serviceType) {
// 1. Check product-level hours (highest priority)
if (product.serviceAvailability) {
return product.serviceAvailability
}
// 2. Check menu-level hours
if (menu.serviceAvailability) {
return menu.serviceAvailability
}
// 3. Check location service-specific hours
if (location.availability && location.availability[serviceType]) {
return location.availability[serviceType]
}
// 4. Fall back to location business hours
return location.businessHours
}Example Scenarios
Scenario 1: Product Overrides Menu and Location
- Location
businessHours: 9 AM - 10 PM - Menu
serviceAvailability: 8 AM - 11 PM - Product
serviceAvailability: 10 AM - 8 PM
Result: Use product hours (10 AM - 8 PM)
Scenario 2: Menu Overrides Location
- Location
businessHours: 9 AM - 10 PM - Location
availability.delivery: 11 AM - 9 PM - Menu
serviceAvailability: 8 AM - 11 PM - Product
serviceAvailability: Not set
Result: Use menu hours (8 AM - 11 PM)
Scenario 3: Location Service-Specific Hours
- Location
businessHours: 9 AM - 10 PM - Location
availability.delivery: 11 AM - 9 PM - Menu
serviceAvailability: Not set - Product
serviceAvailability: Not set
Result: Use location delivery hours (11 AM - 9 PM)
Scenario 4: Fallback to Business Hours
- Location
businessHours: 9 AM - 10 PM - Location
availability.delivery: Not set - Menu
serviceAvailability: Not set - Product
serviceAvailability: Not set
Result: Use location business hours (9 AM - 10 PM)
Service Types
When processing hours, consider the service type:
- Delivery: Use
location.availability.deliveryif available, otherwiselocation.businessHours - Collection/Pickup: Use
location.availability.collectionif available, otherwiselocation.businessHours
Best Practices
- Always check priority order - Product > Menu > Location availability > Location businessHours
- Handle missing hours gracefully - Always have a fallback to
businessHours - Respect service-specific hours - Use delivery/collection hours when available
- Validate time formats - Ensure times are in 24-hour HH:MM format
- Consider timezone - All times are in the location's timezone
Related Documentation
- Menu Structure: Understanding menu data structure
- Marketplace Integration Flow: End-to-end integration flow
- Marketplace Prerequisites: Essential prerequisites
