WooCommerce & Online Payments
WooCommerce Bookings Not Syncing to Google Calendar?
A booking missing from Google Calendar and a Google event failing to block a slot are different sync directions. Check the connected calendar, booking eligibility, and availability rules before reconnecting or changing paid statuses.

In this guide
If WooCommerce Bookings is not syncing with Google Calendar, first identify the failed direction. A booking missing from Google is an outbound issue; a Google busy event failing to block store availability is an inbound issue. Each needs its own test and evidence.
Record the booking ID or test event, expected calendar, date, timezone, and first failure time. Do not change a booking to Paid merely to force calendar visibility. Booking status and calendar presence do not establish that a payment was received or settled.
Confirm the calendar you are actually checking
In the Bookings calendar connection settings, identify the authorized Google account and selected calendar. Compare the calendar’s identity rather than its display name alone: accounts can contain several calendars with similar names, and a staff member may be viewing a different shared calendar.
Then record the integration method. The official Google Calendar integration guide distinguishes the provided calendar connection from a custom Google app. For the custom route, use the custom Google Calendar integration instructions, rather than mixing the two setup procedures.
Check whether the failure started after an account change, permission change, migration, or reconnection. The owner can confirm the intended calendar and access owner. A developer can inspect the connection errors and custom-app configuration without asking staff to send passwords or OAuth secrets.
Test outbound booking sync on its own
Select a booking that should be exported under the installed configuration. Confirm its actual booking status, not only the parent order’s status or a customer payment screenshot. Compare the booking’s timestamp and the integration’s recorded events.
By default, the official integration syncs Complete, Confirmed, and Paid bookings. Its documentation also notes that including unpaid bookings is a customization and does not record payment. A pending or otherwise ineligible booking should not be relabelled just to make it appear in Google.
Use this outbound decision sequence:
- The booking is ineligible: resolve its real workflow state or confirm the intended customization.
- The booking is eligible, but no sync attempt appears: inspect connection settings and the relevant background processing.
- An attempt fails: review the exact authorization or service response before reconnecting.
- An event exists elsewhere: correct the selected calendar or staff viewing setup.
Do not assume a reconnection will backfill every old booking. The documented integration has limits on syncing past bookings. Reconcile the affected period and agree how staff will handle any missing historical entries.
Test inbound busy events separately
Check the configured sync preference before expecting a Google event to change store availability. One-way sync exports bookings; two-way sync also brings Google events into store availability rules. Those rules can be affected by rule priority.
Create a synthetic busy event on the connected test calendar for a clearly documented future slot. Review whether an availability rule appears in Bookings, then inspect whether the intended product or resource is blocked. Allow the integration’s normal polling cycle before concluding that an import failed.
If the rule arrives but the slot remains bookable, investigate the rule hierarchy rather than repeating authorization. Compare product, resource, and store availability settings around that exact time. The calendar-ownership guide helps clarify which system should control the appointment when several calendars or booking tools are involved.
A Google event is not automatically a complete customer booking record. Keep the external busy-time purpose distinct from order, customer, and payment administration.
Investigate processing and time context
Compare the site timezone, booking timezone settings, and Google event timezone for the same slot. An event shown at a different time can look missing when it is actually elsewhere on the calendar. Include daylight-saving boundaries when the report concerns a seasonal time change.
For queued or failed work, review logs and the relevant scheduled actions with a developer. Avoid bulk-running the entire queue, which may contain unrelated payments and emails. Use the scheduled-task diagnostic guide to investigate a shared processing failure.
Before reconnecting a production account, record the calendar selection and existing configuration. Confirm who owns the Google account and what authorization will change. Repeated reconnects can obscure the timeline without addressing a bad rule or ineligible booking state.
Verify the two journeys without real charges
Use an isolated staging environment with a dedicated calendar and synthetic customer details. Prevent the copy from exporting to staff’s live operational calendar. Test one new eligible booking outbound and one Google busy event inbound, then verify the expected availability boundary.
Inspect both systems after each step. Confirm the correct event, time, calendar, and booking relationship, and ensure the event is not duplicated. Remove synthetic test records through the supported workflow when finished.
For production, monitor naturally occurring eligible bookings and reconcile the missed window with operations staff. Record which entries were recovered automatically and which needed an approved manual process. A repaired connection should leave staff with a trustworthy calendar, not unexplained duplicate events.
FAQs
Why does a confirmed booking appear when an unpaid one does not?
The default outbound sync uses specific booking statuses. Review the actual booking status and any installed customization; do not use calendar visibility as payment evidence.
Why is Google busy time visible but the slot still available?
The imported availability rule may be overridden by another rule or apply differently from your expectation. Inspect its priority and the affected product or resource.
Will reconnecting automatically sync every past booking?
Do not assume that. Check the integration’s documented historical-sync limitations and reconcile the missing period before creating manual replacement events.
Prepared for website owners by Nithu / Suthakaran Nithursan. Dated advisory facts link to primary sources. Examples are illustrative and are not client results or guarantees.