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
Monday … SundayHours 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