> For the complete documentation index, see [llms.txt](https://help.botpenguin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://help.botpenguin.com/bots/facebook-bot/edit-and-manage-chatflow/facebook-appointment-booking.md).

# Facebook Appointment Booking

Connect your Facebook Chatbot to Google Calendar so customers can create, reschedule, and cancel appointments directly inside a conversation — without any manual coordination from your team.

### What is Facebook Appointment Booking?

Facebook Appointment Booking is a component that syncs your Facebook Chatbot with Google Calendar. Each time a customer wants to book, reschedule, or cancel a slot, the chatbot handles it directly inside the conversation and reflects the change on your connected calendar in real time.

By adding the Appointment component to your Facebook Chatflow on BotPenguin, you can let customers manage their own appointments — without anyone on your team manually checking availability or updating a calendar.

***

### When Should You Use This?

Use the Appointment component when:

* You want Facebook Page visitors to book an appointment directly in Messenger, based on your real-time availability
* You want customers to be able to reschedule an existing appointment without contacting your team
* You want customers to cancel an appointment themselves, with the change reflected instantly on your calendar

***

### How It Works

The setup has two parts:

1. Connect Google Calendar — You authenticate your Google account inside BotPenguin and configure your availability, schedule, and messaging. This tells BotPenguin when appointments can be booked and what to say at each step.
2. Add the Appointment component to your Chatflow — Once connected, you place the Appointment component at the right point in your Facebook Chatflow and choose whether it should create, reschedule, or cancel an event. When the conversation reaches that point, BotPenguin handles the calendar action automatically.

***

### Before You Begin

* An active BotPenguin account with a Facebook Chatbot set up
* A Google account with calendar write permissions
* A Chatflow that collects customer details such as name, email, and phone number

***

### Step-by-Step Instructions

#### Part A: Connect Your Google Calendar Account

#### Step 1: Select Your Calendar Provider

1. Add the Appointment component to your Facebook Chatflow.
2. In the right panel, select "Calendar Provider".
3. Choose Google Calendar

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FiSH5NsGI74mN7OlSUswa%2Fimage%20(18).png?alt=media&amp;token=023e7187-4549-447d-a801-b6cbe2fa9056" alt=""><figcaption></figcaption></figure>

#### Step 2: Choose an Action Type

1. Under "Action Type", select what this component should do:

| Action Type          | What it does                 |
| -------------------- | ---------------------------- |
| **Create Event**     | Books a new appointment      |
| **Reschedule Event** | Modifies an existing booking |
| **Cancel Event**     | Cancels an appointment       |

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FG2d5xxsKwfiixUS02ZrI%2Fimage%20(19).png?alt=media&amp;token=bb36b365-f181-4236-beaa-c47769365d96" alt=""><figcaption></figcaption></figure>

#### Step 3: Connect Your Calendar Account

1. Select your "Calendar Account" from the dropdown if it's already connected.

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FLrNB4SHRcBZprMnnIG6C%2Fimage%20(20).png?alt=media&amp;token=aac37363-c6ed-490a-a5ae-1263e2a693cf" alt=""><figcaption></figcaption></figure>

2. If not connected, click "Add Account".

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FVTunPX4obR6Z83kq9O76%2Fimage%20(21).png?alt=media&amp;token=1d65784e-037d-447f-9187-516968e4beee" alt=""><figcaption></figcaption></figure>

3. Choose your Google account. Review the permissions and policies, then click "Continue".
4. Your account will now appear in the dropdown. Select your account and click "Update", then "Next".

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FvdeLpuvJvWeDONUN5DoI%2Fimage%20(22).png?alt=media&amp;token=e1c7bc48-61b4-4656-aaa8-2cd000c63fb5" alt=""><figcaption></figcaption></figure>

{% hint style="warning" icon="triangle-exclamation" %}
Make sure the connected account has calendar write permissions, or bookings will fail.
{% endhint %}

***

#### Part B: Configure Appointment Details (Create Event)

#### Step 1: Set Basic Details

1. Enter an Appointment Name — a custom name for the appointment (e.g., "Facebook Appointment").

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FhsGU2xn8jwX3QqtGcpzl%2Fimage%20(23).png?alt=media&amp;token=f42ec40f-c290-4727-bf76-a717d10451be" alt=""><figcaption></figcaption></figure>

2. Select the Appointment Slot Duration from the dropdown: 15 / 30 / 45 / 60 minutes.

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FKzppIjBF9GmCMQVGq5JY%2Fimage%20(24).png?alt=media&amp;token=24368910-95ec-4ebb-8b55-1581fd33a085" alt=""><figcaption></figcaption></figure>

3. Set the Future days

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FTIkabqx2BnTkO5lKjsDq%2Fimage%20(25).png?alt=media&amp;token=9fb8dbce-a7fe-45a1-a3b6-29118f8215f8" alt=""><figcaption></figcaption></figure>

4. Select an Availability Schedule, or click "Add New Schedule" to create one:

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2F1XL8jAfQSudZ2jCPmyP5%2Fimage%20(26).png?alt=media&amp;token=0e807e1c-62a6-4bdf-87b7-a6dcffab8d28" alt=""><figcaption></figcaption></figure>

5. Click "Add Business Hours".

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FzExZtqLL7HK1IRe0A8X8%2FScreenshot%202026-08-14%20001434.png?alt=media&amp;token=c0974a9e-0a8f-4ee5-afcd-b779d51647e2" alt=""><figcaption></figcaption></figure>

6. Enter a Name, Short Description, and select your Time Zone.

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2F0aXPTcK1baFo4eQrBK3q%2FScreenshot%202026-08-14%20001456.png?alt=media&amp;token=ece51238-446f-4dbf-98e7-5fc0005e3e76" alt=""><figcaption></figcaption></figure>

7. Add your Business Hours, including days and timings.
   1. The new schedule will appear in the list — edit or delete it as needed.
   2. Select the schedule you want to use.
8. Select the Customer Time Zone — the timezone used to display slots to the customer.

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2F3pMg342CxAdR3yAxcjj7%2Fimage%20(27).png?alt=media&amp;token=a89a01fd-bfc5-499b-a406-b8bf65c11998" alt=""><figcaption></figcaption></figure>

9. Select the Language to be used for the appointment flow.

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FTjz5J0SEAAfZFovXU4MY%2Fimage%20(28).png?alt=media&amp;token=a404c500-53f4-4441-be5a-52ba0f7f4562" alt=""><figcaption></figcaption></figure>

10. Set the Next Message After Completion to route the flow once booking is done.

{% hint style="info" %}
Name, Email, and Phone components must be added to the flow before the Appointment component — this is a mandatory dependency.
{% endhint %}

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FOknkWDgCOH2FAiP5iW90%2Fimage%20(29).png?alt=media&amp;token=8f15ab49-dc5a-489e-b0e4-c52f55f65125" alt=""><figcaption></figcaption></figure>

***

#### Step 2: Configure Advanced Options

Select the checkboxes to enable the permissions you need:

<table data-search="false"><thead><tr><th>Category</th><th>Option</th></tr></thead><tbody><tr><td>Booking &#x26; Meeting Controls</td><td>Include a Google Meet link with each appointment</td></tr><tr><td>Booking &#x26; Meeting Controls</td><td>Allow users to invite additional guests</td></tr><tr><td>Booking &#x26; Meeting Controls</td><td>Allow multiple bookings on the same appointment slot</td></tr><tr><td>Appointment Details</td><td>Allow users to add an agenda for the appointment</td></tr><tr><td>Reliability &#x26; Retry</td><td>Retry booking once upon failure</td></tr><tr><td>Notifications &#x26; Messaging</td><td>Send notification for the user reply</td></tr><tr><td>Notifications &#x26; Messaging</td><td>Rephrase Messages (AI-assisted rephrasing of normal system messages)</td></tr><tr><td>Notifications &#x26; Messaging</td><td>Rephrase Error Messages (AI-assisted rephrasing for error states)</td></tr><tr><td>Message Timing</td><td>Add delay before message is displayed (set delay in seconds)</td></tr></tbody></table>

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FUelJxqkwmC4gPdDGrsLL%2Fimage%20(30).png?alt=media&amp;token=3e542515-b5cd-4d84-a3cd-45a1908da0d2" alt=""><figcaption></figcaption></figure>

***

#### Step 3: Customize Message Text

Configure the system messages shown at each step. All fields support dynamic variables using "/".

<table data-search="false"><thead><tr><th>Message</th><th>Default Text</th></tr></thead><tbody><tr><td>Date Selection Message</td><td>"Please select a date for your appointment."</td></tr><tr><td>Slot Selection Message</td><td>"Choose an appointment slot from the available options."</td></tr><tr><td>Booking Failed Message</td><td>"We couldn't complete the appointment booking. Please try again."</td></tr><tr><td>Appointment Success Message</td><td>"Your appointment has been booked successfully!"</td></tr><tr><td>Slot Unavailability Message</td><td>"This appointment slot is no longer available. Please choose another one."</td></tr><tr><td>View More Options Text (shown when there are more than 10 slots)</td><td>"View More Options"</td></tr><tr><td>CTA Button Label</td><td>Customizable</td></tr></tbody></table>

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2F7isVMjPwoRJQPnQctwEL%2Fimage%20(31).png?alt=media&amp;token=048daaa8-9018-454d-b3f2-4ace06568aeb" alt=""><figcaption></figcaption></figure>

***

#### Step 4: Map Your Data

Under Data Mapping, map the Primary Attendee to a Custom Attribute (e.g., Email). This field supports multiple mapped values.

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FuwJjJa8doHPIe2Vzzm2V%2Fimage%20(32).png?alt=media&amp;token=eccb50de-78c4-4430-b71a-1cc779976dc9" alt=""><figcaption></figcaption></figure>

***

#### Step 5: Save and Test

1. Click "Update" to save your configuration, or "Back" to return to the previous step.

<figure><img src="https://1745791824-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAPDb8cKQtGlIAfgHjcsQ%2Fuploads%2FKpVoFyjNr4nbEms0T5Gw%2Fimage%20(33).png?alt=media&amp;token=a8c17288-d09d-4721-b572-d89f755ad1d0" alt=""><figcaption></figcaption></figure>

2. Click "Test Bot" to run an end-to-end booking validation.

{% hint style="info" icon="lightbulb" %}
Every appointment booked via the chatbot appears automatically in Inbox → Appointments, where you can view and manage all upcoming and past appointments.
{% endhint %}

***

#### Part C: Add Reschedule and Cancel Flows

#### Step 1: Set Up the Reschedule Event Flow

1. Add an Appointment component and select "Reschedule Event" as the Action Type.
2. Edit the configuration, or keep it the same as your Create Event flow.
3. Select the connected Calendar Account where appointments will be updated. If none is connected, click "Add Account" to authorize Google Calendar.

On a successful reschedule, the event is updated in Google Calendar, a confirmation is sent to the user, and the appointment details are updated internally. All rescheduled appointments are reflected in Inbox → Appointments, where you can filter by Upcoming / Past, date range, email, or phone number.

***

#### Step 2: Set Up the Cancel Event Flow

1. Entry Point — Trigger via keyword ("Cancel appointment"), a button ("Cancel Appointment"), or from a menu/fallback option.
2. Collect User Identity — Add Name, Email, and Phone components, in this order, before the Appointment component. These identify the correct calendar event.
3. Fetch the Existing Appointment — Configure the Appointment component:
   * Calendar Provider: Google Calendar
   * Action Type: Cancel Event
   * Calendar Account: Select the connected Google account
   * Count of Previous Scheduled Events: 1 (fetches the customer's most recent upcoming appointment)
4. Add a Confirmation Step (recommended) with a Yes/No choice before cancelling.
5. Cancel Event Action — If the user confirms, the component cancels the event in Google Calendar and updates the internal status.
6. Success and Failure Messages — Add a success message for a completed cancellation, and a fallback message for when no appointment is found.

A cancelled appointment is removed from Google Calendar, marked as Cancelled in Inbox → Appointments, and remains available for audit/logs.

{% hint style="info" icon="lightbulb" %}
Optional enhancements: retry cancellation once on failure, send a cancellation confirmation email, rephrase success/error messages using AI, or offer a Reschedule CTA immediately after cancellation.
{% endhint %}

### Best Practices

> 💡 Always add Name, Email, and Phone components before the Appointment component to avoid dependency errors.

> 💡 Keep your Availability Schedule and Business Hours up to date so customers can't book outside working hours.

> 💡 Enable "Include Google Meet link" if your appointments are virtual, for a smoother experience.

> 💡 Test the Create, Reschedule, and Cancel flows live on Messenger before pointing real customers to the bot.

> 💡 Use a clear, descriptive Message label for each Appointment component so your Chatflow is easy to read and maintain.

***

### What Might Go Wrong

| Situation                                                            | What Happens                                              |
| -------------------------------------------------------------------- | --------------------------------------------------------- |
| Name, Email, or Phone not collected before the Appointment component | Component will not function due to missing dependency     |
| No Availability Schedule selected                                    | Customers won't see any bookable slots                    |
| Calendar account lacks write permissions                             | Bookings will fail even if the account shows as connected |
| Cancel Event details don't match the original booking details        | Appointment will show as "not found" during cancellation  |

***

### Troubleshooting

<details>

<summary>Calendar account is not appearing in the dropdown</summary>

1. Click "Add Account" and reconnect the Google account.
2. Confirm you clicked "Allow" on the permissions screen during authorization.
3. Refresh the Chatflow builder and check the dropdown again.

</details>

<details>

<summary>Appointment slots aren't showing as expected</summary>

1. Check that the correct Availability Schedule and Business Hours are selected.
2. Confirm the Customer Time Zone matches the timezone you want displayed to customers.
3. Verify the Per-Day Availability limit hasn't already been reached for that date.

</details>

<details>

<summary>Cancellation shows "no appointment found" even though one exists</summary>

1. Confirm the Name, Email, and Phone details entered match exactly what was used at the time of booking.
2. Check that the Count of Previous Scheduled Events is set correctly in the Cancel Event configuration.

</details>

<details>

<summary>Booking fails even though the calendar shows as connected</summary>

1. Confirm the connected account has calendar write permissions.
2. Reconnect the account via "Add Account" to refresh permissions.
3. Enable "Retry booking once upon failure" as a temporary safeguard while you investigate.

</details>

### FAQs

<details>

<summary>Is this component available for all bot types?</summary>

No. The Appointment Booking component is available for Facebook Chatbots only.

</details>

<details>

<summary>Which calendar providers are supported?</summary>

Google Calendar is currently the only supported Calendar Provider.

</details>

<details>

<summary>Can customers choose their own slot duration?</summary>

No. Slot duration is set by you from a dropdown of 15, 30, 45, or 60 minutes — it is not customer-selectable.

</details>

<details>

<summary>What's the difference between Create, Reschedule, and Cancel Event?</summary>

Create Event books a new appointment. Reschedule Event updates an existing booking with a new date/time. Cancel Event removes an existing booking from the calendar.

</details>

<details>

<summary>Can I customize the language used in the appointment flow?</summary>

Yes. You can select the language for the appointment flow from the Language dropdown under Basic Details.

</details>

<details>

<summary>Where can I see all appointments booked through Facebook?</summary>

All appointments — created, rescheduled, or cancelled — appear in Inbox → Appointments, where you can filter by status, date range, email, or phone number.

</details>

<details>

<summary>Do I need to add all three flows (Create, Reschedule, Cancel) to every Chatflow?</summary>

No. Add only the flows you want to offer customers. Many businesses start with Create Event and add Reschedule/Cancel later.

</details>

***

### Support

If everything is correct and you are still unable to move forward, write to us at <support@botpenguin.com>. We will respond back within 48 business hours.
