# WhatsApp appointment scheduling with Google Calendar: n8n workflow

> Started by an incoming WhatsApp message, and works across Google Calendar, Postgres and WhatsApp.

Source: https://millionrounds.com/workflow/whatsapp-appointment-scheduling-with-google-calendar (Millionrounds; every figure on the page links to its filing or article)

[Automation library](https://millionrounds.com/workflows) · [Scheduling](https://millionrounds.com/workflows?category=Scheduling#library)

# WhatsApp appointment scheduling with Google Calendar

Started by an incoming WhatsApp message, and works across Google Calendar, Postgres and WhatsApp. 32 steps, 7 branches: large, and worth reading before you trust it with anything live.

Large

[Download free](https://millionrounds.com/login?next=%2Fapp%2Fworkflow%2Fwhatsapp-appointment-scheduling-with-google-calendar)

**32 steps** Large: read it before trusting it with anything live

**7** Branches: places the flow splits

**0** Loops or waits

**3** Services it connects to

## The flow

Starts it 1 Logic 12 Service 19

The steps in the order they run, from what starts it.

- 1 **WhatsApp Trigger** Whats App trigger *Starts it*
- 2 **Initialization** Set *Logic*
- 3 **Get bot status** Postgres *Service*
- 4 **Is First?** If *Logic*
- 5 **Update bot status on START** Postgres *Service*
- 6 **Is bot starts?** If *Logic*
- 7 **Welcome Message** Whats App *Service*
- 8 **Update bot status on START** Postgres *Service*
- 9 **Define flow** Switch *Logic*
- 10 **Main Menu** Whats App *Service*
- 11 **Get available question** Postgres *Service*
- 12 **Commands** Switch *Logic*
- 13 **Is found?** If *Logic*
- 14 **Update bot status on BOOKING** Postgres *Service*
- 15 **Error** Whats App *Service*
- 16 **Get available questions** Postgres *Service*
- 17 **Add Answer** Postgres *Service*
- 18 **Is Questions available?** If *Logic*
- 19 **Date?** If *Logic*
- 20 **Finish** Whats App *Service*
- 21 **Set Date** Set *Logic*
- 22 **Question** Whats App *Service*
- 23 **Get Answers** Postgres *Service*
- 24 **Get Day Event** Google Calendar *Service*
- 25 **Add pred Answer** Postgres *Service*
- 26 **Set Datetime AND Name** Set *Logic*
- 27 **Set Work Hours** Code *Logic*
- 28 **Create an event** Google Calendar *Service*
- 29 **Set Free Time Slots** Set *Logic*
- 30 **Delete Answers** Postgres *Service*
- 31 **Union Slots** Summarize *Service*
- 32 **Request Time** Whats App *Service*

## How it's built

- **Starts on:** An incoming WhatsApp message
- **Steps:** 32, with 7 branches
- **Size:** Large: read it before trusting it with anything live
- **Connects to:** Google Calendar, Postgres, WhatsApp
- **Model:** None. This is plumbing, not judgement

## Questions

What does it need to run?

An n8n account, plus your own Google Calendar, Postgres and WhatsApp accounts. You connect your own accounts after importing it; none are included.

What starts it?

It starts on an incoming WhatsApp message.

Does it use AI?

No. Every step is fixed logic or a call to a service, so it does the same thing every time.

How long does it take to set up?

Take your time. At 32 steps it is large: read it before trusting it with anything live.

How do I import it?

Copy the workflow, open a new workflow in n8n and paste. The steps appear on the canvas, ready for your own accounts.

**Before you run it**

Nothing here has been tested by us. It is somebody's working automation, read and described from its own steps. Treat the connections it wants as a list of accounts it will touch, and read the 32 steps before you point it at anything that matters.

## Run it in n8n

- **Create your n8n account** Free to start. n8n is where the workflow runs. [Create an n8n account ↗](https://millionrounds.com/n8n)
- **Download the workflow** Free with a Millionrounds account. [Download free](https://millionrounds.com/login?next=%2Fapp%2Fworkflow%2Fwhatsapp-appointment-scheduling-with-google-calendar)
- **Paste it into n8n** Open a new workflow in n8n and paste. Then connect your own accounts.

Stored with the author's traces removed: canvas notes, instance identifiers, saved credential names and any live document they had left behind.

## Connects to

Each opens the other workflows that use it.

[Google Calendar](https://millionrounds.com/workflows?service=Google+Calendar#library)[Postgres](https://millionrounds.com/workflows?service=Postgres#library)[WhatsApp](https://millionrounds.com/workflows?service=WhatsApp#library)

## Workflows like it

Also scheduling, with the same services where possible, closest in size first.

- [**Automate email & calendar management with Gmail** 32 steps · calls a model · Gmail, Google Calendar](https://millionrounds.com/workflow/automate-email-and-calendar-management-with-gmail)
- [**Automate pet grooming posts & bookings with Facebook** 32 steps · calls a model · Google Calendar, Google Sheets](https://millionrounds.com/workflow/automate-pet-grooming-posts-and-bookings-with-facebook)
- [**Turn Telegram voice messages into Gmail emails** 32 steps · calls a model · Gmail, Google Calendar](https://millionrounds.com/workflow/turn-telegram-voice-messages-into-gmail-emails)
- [**Route missed roofing calls to a Retell AI agent with Twilio** 31 steps · Google Calendar, Google Sheets](https://millionrounds.com/workflow/route-missed-roofing-calls-to-a-retell-ai-agent-with-twilio)
- [**AI secretary for scheduling with WhatsApp and Telegram** 31 steps · calls a model · Google Calendar, Redis](https://millionrounds.com/workflow/ai-secretary-for-scheduling-with-whatsapp-and-telegram)
- [**Calendar Management & RAG Agent with OpenAI and OpenRouter** 31 steps · calls a model · Google Calendar, n8n data table](https://millionrounds.com/workflow/calendar-management-and-rag-agent-with-openai-and-openrouter)
