Troubleshooting
The booking form shows no times, reminders arrive late, or a paid booking still says it’s waiting for payment. Most problems come down to a handful of causes, and Core Bookings has a screen that checks the common ones. Start there, then jump to the section that matches what you see.
Start With Setup Checks
Open Bookings → Settings → Setup checks. It reads your saved settings locally and doesn’t contact any provider until you ask it to:
- Booking setup: whether you have staff availability and an active service.
- Connections: Stripe, Google Calendar, Zoom, spam protection and email delivery, each with the next check to run.
- Background work and readiness: when the worker last ran, whether its schedule exists, the encryption key, and FluentCart or Stripe key problems when you use them.
- Check my calendar access and Send my test email test your own calendar connection and email delivery.
From a terminal, wp core-bookings doctor prints a redacted health summary and wp core-bookings checks lists each switched-on module’s status. Both are safe to share when you ask for help.
No Times Show on the Booking Form
Work down this list; the first one that fails is usually the answer:
- The service is active. Paused services show no times, even on their own booking page.
- At least one active staff member is assigned to the service.
- That person has weekly hours on the day you’re checking, with no time off or holiday closing it.
- The service length plus buffers fits inside those hours.
- The day falls between the service’s minimum notice and how far ahead it can be booked.
- A required calendar is still connected. When a connected calendar can’t be read, online availability for that person pauses rather than risk a double booking.
For the last one, the staff member opens Bookings → Staff → My calendar and reconnects, or chooses Use local availability only to stop requiring that calendar. Service settings are explained in Create a Service and hours in Staff Hours, Time Off and Holidays.
Emails and Reminders Are Late or Missing
A background worker sends emails, reminders, payment checks and webhooks. WordPress cron only runs on visits, so a quiet site sends late. If Background worker on Setup checks hasn’t run in the last few minutes, run both workers from system cron every minute:
* * * * * wp --path=/absolute/path/to/wordpress core-bookings jobs
* * * * * wp --path=/absolute/path/to/wordpress core-bookings calendar
If the worker runs but a message still fails, open Bookings → Settings → Operations. Fix the cause shown for the failed item, then click Retry operation. A failed notification you’ve handled another way can be dismissed with a reason. Payment and refund work can’t be dismissed: reconcile it first.
A successful send means your mail system accepted the message, not that it reached the inbox. Check spam folders and your mail provider’s log.
A Payment Looks Stuck
- Stripe: the Stripe webhook section on Setup checks shows the address to add in Stripe and how many signed events have arrived. Zero events after a test checkout means Stripe can’t reach your site or the signing secret is wrong. Embedded payments also need a publishable key in the same test or live mode as the secret key.
- FluentCart: needs FluentCart 1.6.5 or later with its checkout page set.
- Events that ran out of retries appear under Payment event recovery in Operations. Retry event checks the provider again before changing the booking.
- Payment review means a payment arrived but the booking couldn’t be confirmed automatically, for example because it came after the hold expired and the time was taken. A manager confirms it from the appointment, or refunds it. See Refunds and Payment Review.
Calendar Conflicts
When an outside event lands on top of a confirmed booking, Core Bookings flags the conflict on the appointment and dashboard and notifies the staff member. Fix it by rescheduling or cancelling the booking, or by removing the outside event. The flag clears on the next successful check. My calendar shows each connection’s last successful sync, and Operations shows calendar connection health for everyone.
After Moving or Restoring a Site
- Credentials stopped working: the encryption key changed. Restore the original
CORE_BOOKINGS_KEY(orAUTH_KEY) from your backup, or reconnect every provider. See Data, Privacy and Uninstall. - No updates: a license belongs to one site address. Activate it again on the new address and remove the old activation from your account.
- New address: review calendar destinations and reconnect payment and calendar providers before the worker runs and bookings reopen. Their webhook addresses include your domain.
Error Codes You May See
| Code | What it means | What to do |
|---|---|---|
cb_slot_taken | The time was taken, filled up or clashes with a calendar event | Pick another time |
cb_stale_version | The booking changed since it was loaded | Reload, then try again |
cb_cutoff | The online change window has closed | Staff can still change it from the workspace |
cb_calendar_unavailable | A required calendar couldn’t be read | Reconnect it on My calendar |
cb_login_required | The service needs a signed-in customer | Sign in, or change the service’s login setting |
cb_rate_limited | Too many requests from one address in a minute | Wait a minute. Behind a proxy or CDN, add it under Trusted proxies in Bookings → Settings → Customer accounts. |
Still stuck? Check the changelog for a newer fix, and send your doctor output with your question.