Skip to main content

Availability Rules

Before you begin

Default: nothing is bookable until a Yes rule opens time.

Rules stack — last match wins (not “AND”). Lower priority number wins · staff beats product beats global · lower row in the list wins ties.

What you need: Appointable product · Site timezone

How global, product, and staff availability rules layer together

Mon–Fri 9–5 — read this first

Most setup mistakes happen here.

✅ Works — Mon–Fri 9–5, weekends closed

Option A — 2 rules

#Range typeFromToAppointable
1Recurring time (all week)09:0017:00Yes
2Range of daysSaturdaySundayNo

Rule 2 must sit below rule 1 in the list.

You get: ✅ Mon–Fri 9–5 · Sat–Sun closed

Option B — 5 rules

Add five separate rules — one per weekday:

#Range typeFromToAppointable
1Monday09:0017:00Yes
2Tuesday09:0017:00Yes
3Wednesday09:0017:00Yes
4Thursday09:0017:00Yes
5Friday09:0017:00Yes

Do not add Saturday or Sunday rules — weekends stay closed by default.

You get: ✅ Mon–Fri 9–5 · Sat–Sun closed

❌ Does not work — looks like 9–5, but isn’t

#Range typeFromToAppointable
1Range of daysMondayFridayYes
2Recurring time (all week)09:0017:00Yes

You get: ❌ Mon–Fri 24/7 · Sat–Sun 9–5 only

Why: Range of days → Yes opens the whole day (midnight–midnight), not office hours. The time rule does not trim weekdays — it only adds 9–5 on every day including weekends.

Remember

Range of days = full day on those weekdays. Time rules = hours only. For Mon–Fri 9–5, use Option A or B above — not range-of-days Yes on Mon–Fri.

How rules combine

When rules overlapWinner
Different priorityLower number
Same priorityStaff > product > global
Still tiedRule lower in the list

One minute = one winner (last painted). Rules do not intersect like “AND.”

Where rules live

ScopeWhereApplies to
GlobalWooCommerce → Settings → Appointments → Global AvailabilityAll products
ProductProduct → Availability tabThat product
StaffUsers → staff → AvailabilityThat staff member

Availability settings

Rule fields

Availability rules

FieldPurpose
Range typeWhat gets opened or blocked — types below
From / ToStart and end
AppointableYes = open · No = block
PriorityLower number wins (manual 10, Google sync 5)
QtyOptional seat limit for matching slots
TitleAdmin label

Range types — what each rule paints

TypePaints
Range of daysFull day on the weekdays you pick (not “hours only”)
Date rangeFull day on those dates
Recurring time (all week)Same hours every day
MondaySundayHours on that weekday only
Recurring time (date range)Hours on each day in a date span

More examples

Lunch break (12–1) — add to Option A

#Range typeFromToAppointablePriority
3Recurring time (all week)12:0013:00No9

Priority 9 beats the open rules (10) for that hour.

Christmas closed

#Range typeFromToAppointablePriority
1Date range2026-12-252026-12-25No1

Staff leaves at 1 PM

Product uses Option A above. On the staff profile, add:

#Range typeFromToAppointablePriority
1Recurring time (all week)13:0017:00No9

✅ Works: a No rule closes their afternoon when that staff member is selected.

❌ Does not work: staff Yes 09:00–13:00 alone — that does not remove product hours after 1 PM. Use a No rule to block unwanted hours.

Staff vs auto-assign

Booking modeStaff rules
Customer picks a staff memberCan open or close times on top of product rules
Auto-assign (no pick)Staff Yes can add time · staff No cannot remove product Yes

Google synced rules

Global Availability → Synced rules tab · read-only from Google (two-way sync). Edit in Google Calendar, then re-sync.

Synced rules tab in Global Availability

Blocks slotsBusy events only — Free events are ignored
Default priority5 (manual rules 10)

Google Calendar sync · Backup before re-sync

Checklist before you go live

  1. At least one Yes rule exists
  2. Mon–Fri hours use time rules (Option A or B) — not range of days Yes on Mon–Fri alone
  3. Test on the storefront — Customer booking