Bookings: Schedule Appointments Through WhatsApp Flows
Bookings let customers choose an event, location, appointment type, or any other bookable item directly inside a WhatsApp Flow. The generated Flow uses one screen for the booking details, a CalendarPicker for date selection, dynamic time slots for availability, and a final summary screen where the customer confirms the booking.
Date capacity bookings in web chat
Choose Date capacity as the booking mode when each date has a limited number of bookings but no customer-facing time choice. Each Event / Location is an option with its own regular Bookings per date capacity. Turn off Ask customer to choose an option for a single date-wide limit; keep one active item to hold that capacity.
Set the available weekdays and a closing rule in the booking's timezone. For example, Sundays with a three-day cutoff at 00:00 close at the start of Thursday. Pending, confirmed, and approved reservations consume capacity. Rejected and cancelled reservations release it. Availability is checked again while saving the final submission, so the last place cannot be allocated twice.
Use Date capacity overrides after saving the booking to set a different capacity for a particular option and date. Set the regular capacity to zero and add overrides when an option is offered only on selected dates, such as a movie at a particular venue.
Date capacity forms currently run in the web chat experience. They may include one optional File Upload field, limited to 20 MB per file. The booking's WhatsApp Flow switch is unavailable in this mode; the assistant's Send Booking action can send the web form to web chat visitors.
What Bookings Create
Each booking can generate and publish a WhatsApp Flow with:
- An event or location selector. You can rename this label to match your business.
- A CalendarPicker that appears after the customer selects the event or location.
- Available time slots that appear after the customer selects a date.
- Optional custom fields before or after the booking fields.
- Optional images, using the same image behavior as WhatsApp Form Builder flows.
- An optional required agreement checkbox. Agreement text can expand inside WhatsApp, or the agreement can open from an external HTTPS link.
- A final completion screen that summarizes the filled details before the customer submits.
The Flow only shows dates and times that are currently available. Fully booked slots, blacked-out dates, and dates before the configured booking cutoff are excluded.
Before You Start
You need:
- A connected WhatsApp Business account in Nviti.ng.
- A working WhatsApp Cloud API setup for the account.
- WhatsApp Flows enabled for the account.
- Flow encryption configured for the WhatsApp Business account.
- Permission to manage WhatsApp marketing templates and flows.
If the WhatsApp account is not connected yet, set it up first in the WhatsApp integration settings.
Create a Booking
- Go to Shop → Bookings.
- Click New Booking.
- In Details, enter the booking name, status, timezone, description, and field labels.
- Set the booking status to Published when it is ready to be used in workflows.
- In Availability, choose the slot interval:
- 30 minutes for slots such as
8:30 - 9:00. - 1 hour for slots such as
9:00 - 10:00.
- 30 minutes for slots such as
- Set the booking cutoff:
- Minimum notice from now hides dates and times before the notice period. For example,
2 daysmeans customers can only book slots after the next 2 days. - Specific first bookable date hides dates and times before the selected date and time.
- Minimum notice from now hides dates and times before the notice period. For example,
- Add one or more Events / Locations. These are the first options customers choose in the WhatsApp Flow.
- Add Availability Periods. For each period, choose one or more weekdays, optional event/location, start time, end time, and capacity.
- Add Blackout Dates for unavailable dates or partial-day closures.
- In Flow, enable WhatsApp Flow.
- Link one or more WhatsApp Business accounts.
- Add any extra fields or images needed for the booking.
- To require an agreement on the summary screen, enable Add Agreement and choose:
- Text to enter formatted agreement content that customers open with Read more without leaving WhatsApp.
- Link to provide an HTTPS agreement URL that opens in the customer's browser.
- Save the booking.
When the booking is saved with WhatsApp Flow enabled and a WhatsApp Business account linked, Nviti.ng immediately builds the Flow JSON and starts a background sync to Meta. The sync creates or updates the WhatsApp Flow, uploads the generated JSON, publishes it, and stores the preview metadata for that WhatsApp account.
Configure Availability
Availability is controlled by four settings working together:
- Booking cutoff controls the earliest date and time a customer can select.
- Availability Periods define working hours, such as Monday to Friday from
09:00to17:00. - Slot interval controls whether the generated options are hourly or 30-minute slots.
- Capacity controls how many bookings can exist for the same event/location and time slot.
Example setup:
- Event/location:
Victoria Island Office - Availability period: Monday to Friday,
09:00to17:00 - Slot interval:
30 minutes - Capacity:
1
Customers will see slots such as:
09:00 - 09:3009:30 - 10:0010:00 - 10:30
If a customer books 09:30 - 10:00, that slot disappears once it reaches capacity.
If the booking cutoff is set to 2 days, dates and slots within the next 2 days are hidden. The CalendarPicker starts from the first date after that cutoff that still has an available slot.
You can select multiple weekdays for one availability period when the start time, end time, interval, and capacity are the same. For example, select Monday, Wednesday, and Friday once instead of creating three separate rules.
Events and locations can be reordered manually in the booking editor. The order you set there controls the order customers see in the first WhatsApp Flow selector.
WhatsApp Flow Limits
The booking builder enforces WhatsApp-friendly limits while you configure the Flow:
- Booking screen title: 60 characters.
- Event/location option name: 24 characters.
- Event/location description: 72 characters.
- Field labels: 30 characters.
- Selectable option labels: 24 characters.
- Flow open button text: 30 characters.
Keep labels short and direct so they render cleanly inside WhatsApp.
Preview the WhatsApp Flow
After creating or syncing a booking:
- Go to Shop → Bookings.
- Find the booking.
- Click Preview.
The preview opens the WhatsApp Flow preview inside Nviti.ng. If it cannot load, select Sync Flow, wait for syncing to finish, and try again.
You can also click JSON to inspect the generated Flow JSON. Use this when you need to verify the structure, field names, CalendarPicker setup, or terminal summary screen.
Use a Booking in a WhatsApp Workflow
Bookings can be sent from WhatsApp integration workflows as a workflow node.
- Go to the WhatsApp workflow builder.
- Add or edit a workflow for the WhatsApp account that is linked to the booking.
- Add the Send Booking Flow action node.
- Select the booking.
- Configure the message and call-to-action text.
- Connect the node to the trigger or previous workflow step.
- Save and activate the workflow.
When the workflow reaches the node, Nviti.ng creates a booking reservation token and sends the generated WhatsApp Flow to the customer. The customer selects the event/location, picks a date with CalendarPicker, chooses an available time slot, reviews the summary screen, and submits the booking.
What Happens After Submission
When the customer submits the final screen:
- If an agreement is enabled, Nviti.ng verifies that the required agreement checkbox was accepted and records the agreement version and acceptance time with the reservation.
- Nviti.ng validates the selected event/location, date, and time.
- The booking service checks capacity again before confirming.
- If the slot is available, the reservation becomes Pending when Requires Approval is enabled, or Confirmed otherwise. Pending, confirmed, and approved reservations reserve capacity.
- If the slot has just become full, the submission is rejected and the customer must choose another available slot.
This final capacity check prevents two customers from booking the same limited slot at the same time.
Approval and reservation management
Enable Requires Approval in the booking's Flow tab when a team member must review submissions. Use Reservations to search and filter reservations, inspect details, approve pending requests, or cancel an eligible reservation with a reason. Draft and in-progress entries are distinct from submitted reservations.
Set the Availability Window to control how far ahead customers can book, in addition to the minimum-notice cutoff. Confirm dates in the booking's configured timezone.
Booking workflows can send email or use verified Telegram and WhatsApp Notification Channels. Configure and test the approval notification path as part of launch.
Website and mobile chat
An assistant workflow can open a configured booking in the shared web chat experience. Test that destination separately from Meta's Flow preview. Submitted reservations accessible to the visitor can appear under Bookings in chat; opening a record there does not approve, cancel, or resubmit it.
Bookings submitted through CChat also receive confirmation, pending approval, approval, and cancellation messages in the original conversation. Cancellation messages include the reason when one is supplied. These messages appear live, update the conversation's unread count, and remain available when the visitor returns. They work without a WhatsApp number and run alongside existing WhatsApp customer notices and Telegram/WhatsApp approval notifications; no additional workflow node is required.
Troubleshooting
No dates appear in the CalendarPicker
Check that the booking has active events/locations, active availability periods after the booking cutoff, and no blackout rule blocking every available date.
No times appear after selecting a date
Check the weekday availability period, slot interval, capacity, and existing reservations for that date.
Preview says the Flow has not been synced
Click Sync Flow from the booking table. The booking must have WhatsApp Flow enabled and at least one linked WhatsApp Business account.
Flow sync fails
Check the WhatsApp Business account access token, WABA details, Flow encryption setup, and Meta account permissions.
The workflow node cannot find the booking
Make sure the booking is published, belongs to the same company/workspace, has WhatsApp Flow enabled, and is linked to the WhatsApp Business account used by the workflow.
Related Guides
Staff mobile calendar and agenda
The native staff app shows Bookings only with current permission and accessible company booking data. Switch Calendar and Agenda, search, and review the offered booking-type, status and date filters. Today/upcoming/pending/all counts summarize the available scope, not another company's reservations.
Filter icon slots are consistent across statuses. Long booking-type and date labels wrap for small screens and larger text. The filter sheet supports scrolling and keyboard insets. A booking's displayed status is not proof that an external reminder or notification was delivered. Configure booking definitions and workflows through the supported web administration screens.