wiki/knowledge/integrations/bookly-square-google-calendar-sync.md · 782 words · 2026-04-05
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 [1] 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
- 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.
- Grant Bookly access to the Google Calendar (via OAuth or Bookly's Google Calendar add-on settings).
- Connect Square to the same Google Calendar via Square's native calendar sync settings.
- 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.
- 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.
- 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 [1] for the specific implementation context.
References
- [2]
- Source meeting: La Marie Beauty — Bookly/Square/Google Calendar Integration Call (2026-04-05)