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
Last modified on October 7, 2026