The APPOINTMENT_BOOKING category is designed for scheduling, booking, and reservation systems. Use this category when users need to select dates, times, or reserve services, appointments, or events.
Category Specification
{
"flowCategories": ["APPOINTMENT_BOOKING"]
}
Use Cases
Perfect for APPOINTMENT_BOOKING
- Medical Appointments - Doctor visits, consultations, treatments
- Service Bookings - Repair services, consultations, installations
- Event Registration - Workshops, seminars, conferences
- Reservation Systems - Restaurants, hotels, meeting rooms
- Class Scheduling - Fitness classes, tutorials, training sessions
Not Suitable for APPOINTMENT_BOOKING
- User registration - Use SIGN_UP instead
- General inquiries - Use CONTACT_US instead
- Feedback collection - Use SURVEY instead
- Lead generation - Use LEAD_GENERATION instead
Recommended Components
Essential Components
- DATE_PICKER - Single date selection for appointments
- CALENDAR_PICKER - Advanced date selection with availability
- DROPDOWN - Time slots, service types, duration options
- RADIO_BUTTONS_GROUP - Service selection, appointment types
- FOOTER - Booking confirmation and submission
Optional Components
- TEXT_INPUT - Contact information, special requests
- TEXT_AREA - Appointment notes, specific requirements
- CHECKBOX_GROUP - Additional services, preferences
- OPT_IN - Cancellation policies, reminders consent
- PHOTO_PICKER - Reference images, condition documentation
Implementation Examples
Basic Medical Appointment
{
"flowName": "medical_appointment_booking",
"flowCategories": ["APPOINTMENT_BOOKING"],
"flowJson": {
"screens": [
{
"id": "APPOINTMENT_BOOKING",
"terminal": true,
"success": true,
"title": "Book Medical Appointment",
"layout": {
"children": [
{
"type": "TEXT_HEADING",
"text": "Schedule Your Appointment"
},
{
"type": "DROPDOWN",
"label": "Appointment Type",
"name": "appointment_type",
"required": true,
"dataSource": [
{"id": "consultation", "title": "General Consultation - 30 min"},
{"id": "followup", "title": "Follow-up Visit - 15 min"},
{"id": "checkup", "title": "Annual Check-up - 45 min"},
{"id": "specialist", "title": "Specialist Consultation - 60 min"}
]
},
{
"type": "DATE_PICKER",
"label": "Preferred Date",
"name": "appointment_date",
"required": true,
"minDate": "2024-04-01",
"maxDate": "2024-08-31",
"includeDays": [1, 2, 3, 4, 5],
"helperText": "Available Monday through Friday"
},
{
"type": "DROPDOWN",
"label": "Preferred Time",
"name": "appointment_time",
"required": true,
"dataSource": [
{"id": "0900", "title": "9:00 AM"},
{"id": "1000", "title": "10:00 AM"},
{"id": "1100", "title": "11:00 AM"},
{"id": "1400", "title": "2:00 PM"},
{"id": "1500", "title": "3:00 PM"},
{"id": "1600", "title": "4:00 PM"}
]
},
{
"type": "TEXT_AREA",
"label": "Reason for Visit (Optional)",
"name": "visit_reason",
"required": false,
"maxLength": "300"
},
{
"type": "OPT_IN",
"label": "Send me appointment reminders via WhatsApp",
"name": "reminder_consent",
"required": false
},
{
"type": "FOOTER",
"label": "Book Appointment",
"onClickAction": {
"name": "COMPLETE"
},
"centerCaption": "You'll receive confirmation within 2 hours"
}
]
}
}
]
}
}
Multi-Step Service Booking
{
"flowName": "home_service_booking",
"flowCategories": ["APPOINTMENT_BOOKING"],
"flowJson": {
"screens": [
{
"id": "SERVICE_SELECTION",
"terminal": false,
"success": false,
"title": "Select Service",
"layout": {
"children": [
{
"type": "TEXT_HEADING",
"text": "What service do you need?"
},
{
"type": "RADIO_BUTTONS_GROUP",
"name": "service_type",
"label": "Service Type",
"required": true,
"dataSource": [
{
"id": "plumbing",
"title": "Plumbing Repair",
"description": "Leaks, clogs, installations - 2-4 hours"
},
{
"id": "electrical",
"title": "Electrical Work",
"description": "Wiring, outlets, lighting - 1-3 hours"
},
{
"id": "hvac",
"title": "HVAC Service",
"description": "Heating, cooling, maintenance - 2-6 hours"
},
{
"id": "appliance",
"title": "Appliance Repair",
"description": "Washer, dryer, refrigerator - 1-2 hours"
}
]
},
{
"type": "TEXT_AREA",
"label": "Describe the Problem",
"name": "problem_description",
"required": true,
"maxLength": "500",
"helperText": "Please provide as much detail as possible"
},
{
"type": "FOOTER",
"label": "Continue to Scheduling",
"onClickAction": {
"name": "NAVIGATE",
"next": "SCHEDULING"
}
}
]
}
},
{
"id": "SCHEDULING",
"terminal": false,
"success": false,
"title": "Choose Date & Time",
"layout": {
"children": [
{
"type": "TEXT_HEADING",
"text": "When works best for you?"
},
{
"type": "CALENDAR_PICKER",
"name": "service_dates",
"label": "Available Dates",
"description": "Select 2-3 dates you're available",
"mode": "MULTIPLE",
"required": true,
"minDate": "2024-04-01",
"maxDate": "2024-06-30",
"minDays": 2,
"maxDays": 3,
"helperText": "More options = faster scheduling"
},
{
"type": "CHECKBOX_GROUP",
"name": "time_preferences",
"label": "Time Preferences",
"required": true,
"minSelectedItems": 1,
"dataSource": [
{"id": "morning", "title": "Morning (8 AM - 12 PM)"},
{"id": "afternoon", "title": "Afternoon (12 PM - 5 PM)"},
{"id": "evening", "title": "Evening (5 PM - 8 PM)"}
]
},
{
"type": "FOOTER",
"label": "Continue to Contact Info",
"onClickAction": {
"name": "NAVIGATE",
"next": "CONTACT_INFO"
}
}
]
}
},
{
"id": "CONTACT_INFO",
"terminal": true,
"success": true,
"title": "Contact Information",
"layout": {
"children": [
{
"type": "TEXT_HEADING",
"text": "How can we reach you?"
},
{
"type": "TEXT_INPUT",
"label": "Full Name",
"name": "customer_name",
"required": true
},
{
"type": "TEXT_INPUT",
"label": "Phone Number",
"name": "phone",
"required": true,
"inputType": "NUMBER"
},
{
"type": "TEXT_INPUT",
"label": "Service Address",
"name": "service_address",
"required": true
},
{
"type": "DROPDOWN",
"label": "Property Type",
"name": "property_type",
"required": true,
"dataSource": [
{"id": "house", "title": "Single Family House"},
{"id": "apartment", "title": "Apartment/Condo"},
{"id": "commercial", "title": "Commercial Building"}
]
},
{
"type": "OPT_IN",
"label": "I agree to the service terms and cancellation policy",
"name": "terms_accepted",
"required": true
},
{
"type": "FOOTER",
"label": "Request Service Booking",
"onClickAction": {
"name": "COMPLETE"
},
"centerCaption": "We'll call within 1 hour to confirm your appointment"
}
]
}
}
]
}
}
Event Registration with Capacity
{
"flowName": "workshop_registration",
"flowCategories": ["APPOINTMENT_BOOKING"],
"flowJson": {
"screens": [
{
"id": "WORKSHOP_REGISTRATION",
"terminal": true,
"success": true,
"title": "Workshop Registration",
"layout": {
"children": [
{
"type": "TEXT_HEADING",
"text": "Register for Workshop"
},
{
"type": "BODY",
"text": "Join our hands-on digital marketing workshop. Limited to 20 participants for personalized attention."
},
{
"type": "IMAGE",
"src": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/...",
"width": 400,
"height": 200,
"scaleType": "FIT",
"altText": "Digital marketing workshop classroom setup"
},
{
"type": "DROPDOWN",
"label": "Workshop Date",
"name": "workshop_date",
"required": true,
"dataSource": [
{"id": "apr15", "title": "April 15, 2024 - 9:00 AM (8 spots left)"},
{"id": "apr22", "title": "April 22, 2024 - 9:00 AM (12 spots left)"},
{"id": "apr29", "title": "April 29, 2024 - 2:00 PM (15 spots left)"},
{"id": "may06", "title": "May 6, 2024 - 9:00 AM (20 spots left)"}
]
},
{
"type": "TEXT_INPUT",
"label": "Full Name",
"name": "attendee_name",
"required": true
},
{
"type": "TEXT_INPUT",
"label": "Company (Optional)",
"name": "company_name",
"required": false
},
{
"type": "DROPDOWN",
"label": "Experience Level",
"name": "experience_level",
"required": true,
"dataSource": [
{"id": "beginner", "title": "Beginner - New to digital marketing"},
{"id": "intermediate", "title": "Intermediate - Some experience"},
{"id": "advanced", "title": "Advanced - Experienced marketer"}
]
},
{
"type": "CHIPS_SELECTOR",
"name": "topics_interest",
"label": "Topics of Interest",
"required": false,
"maxSelectedItems": 3,
"description": "What aspects interest you most?",
"dataSource": [
{"id": "social", "title": "Social Media"},
{"id": "seo", "title": "SEO"},
{"id": "ppc", "title": "Paid Advertising"},
{"id": "email", "title": "Email Marketing"},
{"id": "content", "title": "Content Marketing"},
{"id": "analytics", "title": "Analytics"}
]
},
{
"type": "OPT_IN",
"label": "Send me information about future workshops",
"name": "future_workshops",
"required": false
},
{
"type": "FOOTER",
"label": "Register for Workshop - $99",
"onClickAction": {
"name": "COMPLETE"
},
"centerCaption": "Registration includes materials, lunch, and certificate"
}
]
}
}
]
}
}
Scheduling Best Practices
Date and Time Management
- Business hours - Use
includeDays to limit to operating days
- Advance booking - Set appropriate
minDate for preparation time
- Booking horizon - Set realistic
maxDate based on planning capacity
- Holiday blocking - Use
unavailableDates for holidays and closures
Availability Optimization
{
"type": "DATE_PICKER",
"minDate": "2024-04-01", // Tomorrow or next business day
"maxDate": "2024-07-31", // 3-month booking window
"includeDays": [1, 2, 3, 4, 5], // Business days only
"unavailableDates": [ // Block holidays and closures
"2024-04-15",
"2024-05-27",
"2024-07-04"
]
}
Time Slot Management
Offer realistic time windows:
{
"type": "DROPDOWN",
"label": "Preferred Time",
"name": "time_slot",
"dataSource": [
{"id": "0900", "title": "9:00 AM - 10:00 AM"},
{"id": "1030", "title": "10:30 AM - 11:30 AM"},
{"id": "1400", "title": "2:00 PM - 3:00 PM"}
]
}
Confirmation and Communication
Booking Confirmation
{
"type": "CAPTION",
"text": "**Confirmation:** You'll receive booking details via email within 15 minutes"
}
Reminder Consent
{
"type": "OPT_IN",
"label": "Send me appointment reminders 24 hours before",
"name": "reminder_consent",
"required": false
}
Cancellation Policy
{
"type": "CAPTION",
"text": "**Cancellation Policy:** Free cancellation up to 24 hours before appointment. Late cancellations may incur fees."
}
Common Booking Patterns
Flexible Scheduling
Allow multiple date options:
{
"type": "CALENDAR_PICKER",
"mode": "MULTIPLE",
"minDays": 2,
"maxDays": 3,
"description": "Select 2-3 dates you're available for faster scheduling"
}
Service Duration Display
Show time estimates:
{
"dataSource": [
{"id": "basic", "title": "Basic Service - 1 hour"},
{"id": "standard", "title": "Standard Service - 2-3 hours"},
{"id": "comprehensive", "title": "Comprehensive Service - 4-6 hours"}
]
}
Pricing Information
Include cost transparency:
{
"type": "FOOTER",
"label": "Book Consultation - $150",
"centerCaption": "Final pricing discussed during consultation"
}
Integration Considerations
Calendar Systems
- Availability checking - Real-time slot availability
- Conflict prevention - Avoid double booking
- Buffer time - Account for setup/cleanup between appointments
- Provider schedules - Consider staff availability
Notification Systems
- Confirmation emails - Immediate booking confirmation
- Reminder messages - 24-hour advance reminders
- Cancellation handling - Automated cancellation processing
- Rescheduling options - Allow easy date changes
Common Error Scenarios
Date Selection Errors
{
"errorCode": "DATE_OUT_OF_RANGE",
"message": "Selected date is outside available booking window"
}
Time Slot Conflicts
{
"errorCode": "TIME_SLOT_UNAVAILABLE",
"message": "Selected time slot is no longer available. Please choose another time."
}
Booking Limits
{
"errorCode": "BOOKING_LIMIT_EXCEEDED",
"message": "Maximum bookings per customer reached. Please contact support."
}
Success Metrics
Booking Performance
- Conversion Rate - Percentage completing booking
- Abandonment Points - Where users drop off
- Booking Lead Time - Average days between booking and appointment
- No-show Rate - Percentage of missed appointments
Optimization Opportunities
- Flexible scheduling - Multiple date options
- Clear expectations - Duration, pricing, preparation
- Easy rescheduling - Reduce no-shows with flexibility
- Confirmation clarity - Clear next steps after booking
Related Categories
APPOINTMENT_BOOKING flows should prioritize clear availability, flexible scheduling options, and transparent communication about next steps