MealStack

Appointments & Booking

Set up appointment types, configure your availability schedule, and let clients self-book from the portal.

MealStack includes a full appointment booking system — define your session types, set your weekly availability, and let clients book directly from their portal. No more WhatsApp back-and-forth to find a time.

Client self-booking requires the appointments feature toggle to be enabled in the client's portal settings. Go to Settings → Client Portal → Default Features → toggle "Appointments" on.

Setup overview

Create appointment types

Go to Settings → Appointments and define the types of sessions you offer.

Set your availability

On the same page, configure your weekly schedule — which days and hours you're available.

Enable client booking

Toggle "Client Self-Booking" on for the types you want clients to book themselves.

Clients book from the portal

Clients see a "Book Appointment" button on their portal home page and can pick an available slot.

Appointment types

Appointment types define the different kinds of sessions you offer. Each type has its own duration, price, and booking rules.

Creating a type

Go to Settings → Appointments → Add Type. Fill in:

FieldDescriptionExample
NameWhat the client sees"Follow-up Session"
DurationSession length in minutes30
PriceCost (leave empty for free)₹499
CategoryGroups similar typesInitial, Follow-up, Review, Check-in, Group
ColorCalendar display colorBlue
BufferGap between appointments15 min
Min noticeHow far ahead clients must book24 hours
Max advanceHow far into the future clients can book30 days
Client bookingWhether clients can self-book this typeOn/Off

Common setup

Most practices create 2-4 types:

TypeDurationPriceBooking
Initial Consultation60 min₹999Off (practitioner-scheduled)
Follow-up30 min₹499On
Quick Check-in15 minFreeOn
Plan Review45 min₹699On

Keep "Initial Consultation" as practitioner-scheduled only. First-time sessions typically need intake form review first — use the Discovery Wizard for these.

Availability schedule

Your availability tells the booking system when clients can book with you.

Weekly schedule

On the Settings → Appointments page, scroll to "Availability Schedule":

  • Toggle days on/off — enabled days show time range inputs
  • Multiple slots per day — e.g., 10:00-13:00 and 14:00-17:00 (lunch break)
  • Click "Add slot" to add another time range on the same day
  • Click Save Schedule to persist your changes

Date overrides

For specific dates that differ from your regular schedule:

  • Unavailable — mark a day as completely blocked (holiday, personal day)
  • Modified hours — override with different start/end times for that specific date
  • Reason — add context that shows on the calendar (e.g., "Diwali holiday")

Special days with "Block follow-ups" enabled automatically block booking availability for that date. You don't need to create a separate date override.

Client self-booking

What clients see

When features.appointments is enabled, clients see a "📅 Book an Appointment" button on their portal home page. Tapping it opens a bottom drawer:

Step 1 — Pick a type: Shows all bookable appointment types with name, duration, price, and description.

Step 2 — Pick a time:

  • Week-by-week slot grid with navigation arrows
  • Available slots shown as tappable time pills (e.g., "10:00", "10:30", "11:00")
  • Days with no slots are omitted
  • Mode selector (in-person/video/phone) when the type supports multiple modes

Step 3 — Confirm: Summary card + "Confirm Booking" button.

What happens on booking

When a client confirms a booking:

  1. Booking record created with date, time, type, and mode
  2. Follow-up auto-created — appears on the practitioner calendar
  3. Confirmation card sent in client chat (rich card with "Add to Calendar" CTA)
  4. Push notification sent to client confirming the booking
  5. Practitioner notified — bell notification + email
  6. Reminder sent 2 days before (via existing follow-up reminders cron)

Slot availability rules

The system computes available slots by checking:

  • ✅ Practitioner's weekly schedule for that day of week
  • ✅ Date overrides (unavailable days, modified hours)
  • ✅ Existing bookings (no double-booking)
  • ✅ Buffer time between appointments
  • ✅ Minimum notice (e.g., can't book less than 24h ahead)
  • ✅ Special days with "block follow-ups" enabled

Notifications

When a client books

ChannelRecipientContent
Chat cardClient"Booking Confirmed" rich card with date, time, mode, "Add to Calendar"
PushClient"Appointment confirmed: Follow-up on May 28 at 10:00"
Bell notificationPractitionerBadge count increases, booking appears in dropdown
EmailPractitioner"New Booking: Priya — Follow-up, May 28 10:00"

When practitioner cancels

ChannelRecipientContent
Chat messageClient"Your appointment has been cancelled. Please rebook."
PushClient"Your Follow-up on May 28 was cancelled. Please rebook."

Reminders

Clients receive a reminder 2 days before their appointment (email + push). This uses the same reminder system as follow-ups — the booking automatically creates a linked follow-up with reminderDaysBefore: 2.

Calendar integration

Bookings appear on the practitioner calendar as a distinct event type:

  • Color: Indigo (or the appointment type's custom color)
  • Label: "Client Name — Type Name"
  • Filter: Use the event type filter to show/hide bookings
  • Actions: Confirm, cancel, or mark complete from the event popover

Managing bookings

From the calendar

Click a booking event to see details. Actions available:

  • Confirm — change status from pending to confirmed
  • Cancel — cancels the booking and notifies the client
  • Complete — marks as done (typically after running Start Visit)
  • No Show — records the client didn't attend

Client cancellation

Clients can cancel their own bookings from the portal:

  1. Their upcoming bookings are listed (via portal.bookings.myBookings)
  2. They can cancel with an optional reason
  3. The linked follow-up is also marked as skipped
  4. An activity log entry is created

There's currently no automatic waitlist backfill. When a booking is cancelled, the slot simply becomes available again for others to book.

Example: Setting up booking for a solo practice

Create your types

Go to Settings → Appointments → Add Type:

  • "Follow-up" — 30 min, ₹499, booking enabled ✓
  • "Plan Review" — 45 min, ₹699, booking enabled ✓

Set your schedule

Toggle on Mon-Fri. Set times:

  • Mon-Thu: 10:00-13:00, 14:00-17:00
  • Fri: 10:00-13:00

Enable portal feature

Settings → Client Portal → Default Features → Appointments: On

Share with clients

Clients with portal access will see the "Book Appointment" button automatically. For new clients, share the portal link via WhatsApp.

On this page