---
title: Bookly–Square–Google Calendar Sync Pattern
type: article
created: '2026-04-05'
updated: '2026-04-05'
source_docs:
- raw/2025-09-30-la-marie-beauty-project-call-90853656.md
tags:
- integrations
- bookly
- square
- google-calendar
- zapier
- wordpress
- booking
layer: 2
client_source: null
industry_context: null
transferable: true
---

# Bookly–Square–Google Calendar Sync Pattern

## Overview

When a client uses both **Bookly** (WordPress booking plugin) and **Square** (POS/scheduling), direct two-way sync between the two systems via Zapier is not reliably achievable. The recommended pattern is to introduce **Google Calendar as a centralized sync hub**, with both Bookly and Square communicating to and from it independently.

This pattern was developed during the [[clients/la-marie-beauty/index|La Marie Beauty]] project.

---

## The Problem

### Direct Bookly ↔ Square Sync Fails in One Direction

Bookly relies on its Zapier add-on for all third-party communication. While it is possible to push appointment data **from Bookly to Square** via Zapier, the reverse direction — Square back to Bookly — cannot be established through Zapier. This means appointments created or modified in Square do not propagate back to Bookly.

### Timestamp Mismatch

Even in the working direction (Bookly → Square), a timestamp format mismatch between the two systems prevents Square from correctly reading appointment times. This requires a translation step, such as a Zapier AI action or a custom formatter, to normalize the timestamp before Square can create the appointment record.

### Bookly's Native Square Integration Is Payment-Only

Bookly does have a built-in Square integration, but it covers **payment processing only** — not calendar or appointment syncing. Teams often assume this integration covers scheduling as well; it does not.

---

## The Solution: Google Calendar as Sync Hub

```
Bookly ──┐
         ├──► Google Calendar ◄──► Square
Square ──┘
```

Both Bookly and Square are configured to sync with a shared Google Calendar. This sidesteps the direct Bookly ↔ Square limitation by making Google Calendar the source of truth for availability and appointments.

### Why This Works

- Bookly supports Google Calendar sync natively (or via Zapier).
- Square supports Google Calendar sync natively.
- Google Calendar becomes the single authoritative view of the schedule.
- Staff can view and manage appointments from either system or directly in Google Calendar without creating conflicts.

### G Suite Simplifies Setup

If the client already uses **G Suite (Google Workspace)**, all team email accounts are Google-domain accounts, meaning no new Gmail account needs to be created. The existing organizational calendar infrastructure can be used directly.

---

## Implementation Steps

1. **Identify the Google Calendar account** to use as the hub — typically the primary staff member's calendar or a dedicated shared calendar within the client's G Suite org.
2. **Grant Bookly access** to the Google Calendar (via OAuth or Bookly's Google Calendar add-on settings).
3. **Connect Square** to the same Google Calendar via Square's native calendar sync settings.
4. **Resolve the timestamp mismatch** in the Bookly → Square Zapier zap. Use a Zapier Formatter or AI action step to convert Bookly's timestamp format to one Square accepts before the appointment creation step.
5. **Test the full loop**: create a booking in Bookly, verify it appears in Google Calendar and Square; create/modify in Square, verify it reflects in Google Calendar.
6. **Verify deduplication logic**: configure the Bookly → Square zap to search for an existing Square customer by email and phone before creating a new one, to avoid duplicate customer records.

---

## Known Limitations

| Issue | Status |
|---|---|
| Square → Bookly direct sync via Zapier | Not achievable; use Google Calendar as intermediary |
| Bookly timestamp format incompatible with Square | Requires Zapier formatter/AI step to translate |
| Bookly native Square integration | Payment only, not scheduling |
| Bookly third-party communication | Always requires the paid Zapier add-on |

---

## UX Consideration: Service Variations and Booking Flow

A related challenge on projects using Bookly with service variations (e.g., multiple lengths or types of a single service):

- Bookly does **not** support displaying variations within its booking widget.
- The recommended approach is to handle variation selection **on the WordPress product/service page** before entering the Bookly flow:
  1. User lands on a service page (e.g., "Anything But Basic Facial").
  2. User selects a variation (e.g., 60 min, 90 min) from options on that page.
  3. User clicks a CTA button that deep-links into the **specific corresponding Bookly service**.
  4. Bookly booking flow proceeds for that single, pre-selected service.
- The CTA button label should be reviewed — "Book Now" can be confusing if the user hasn't yet selected a variation. Consider "View Options" or "Select & Book" depending on the flow.
- Implementation requires coordinating the variation-to-Bookly-service mapping in WordPress (work with the front-end developer to wire each variation selection to the correct Bookly service URL/shortcode).

See [[clients/la-marie-beauty/index|La Marie Beauty]] for the specific implementation context.

---

## References

- [[clients/la-marie-beauty/index|La Marie Beauty — Client Overview]]
- Source meeting: La Marie Beauty — Bookly/Square/Google Calendar Integration Call (2026-04-05)