watch
Get told when a slot opens: add, check, run, schedule
booksy watch
Get told when a slot opens: add, check, run, schedule
A watch remembers which slots were open for one service and reports the ones that open later, typically because someone cancelled. Watches live locally in the state database; Booksy knows nothing about them.
The first check records what is open without reporting it (--emit-initial reports it). Slots that appear only because the booking window rolled forward a day are not reported either.
"check" runs due watches once, "run" loops in the foreground, and "service install" sets up a systemd timer or launchd agent that runs "check".
booksy watch add
Create a watch
booksy watch add slots
Watch one service for newly opened slots
booksy watch add slots <business> [flags]booksy watch add slots 3349 --service corte --staff Javier --between 17:00-20:00
booksy watch add slots 3349 --service 273164 --before 2026-11-07 --notify phone --name barber
booksy watch add slots 3349 --service corte --weekdays sat --days 21 --interval 10m| Flag | Type | Default | Description |
|---|---|---|---|
--before | string | - | only slots starting before this date or date and time |
--between | string | - | only start times in HH:MM-HH:MM, e.g. 17:00-20:00 |
--days | int | 14 | how many days to look ahead (booksy caps this, usually at a month) |
--emit-initial | bool | false | report the slots open right now as an event |
--from | string | - | first day to look at, YYYY-MM-DD (default today) |
--interval | duration | 0s | check at most this often (default watch.interval, else 15m) |
--name | string | - | watch name (default from business and service) |
--notify | stringSlice | [] | sinks from config.toml to deliver events to |
--service | string | - | variant id, service id, or part of the service name |
--staff | string | - | staffer id or name (default: anyone) |
--weekdays | string | - | only these days: mon,tue,... or 1-5 (1 is Monday) |
--when | stringArray | [] | per-day schedule, repeatable: "mon-fri 16:00-close", "sat", "2026-12-24 10:00-12:00", "2026-12-31 off" |
booksy watch check
Run due watches once and print their events
booksy watch check [name...] [flags]Run watches once. With names, those watches run regardless of schedule. Without names, watches whose interval has elapsed run; --all forces every watch. Prints the events produced (none is fine: exit 0) and delivers them to the watches' sinks.
| Flag | Type | Default | Description |
|---|---|---|---|
--all | bool | false | run every watch of the profile, due or not |
booksy watch events
Show stored events, newest first
booksy watch events [name] [flags]| Flag | Type | Default | Description |
|---|---|---|---|
--limit | int | 50 | at most this many |
--since | duration | 0s | only events newer than this, e.g. 24h |
booksy watch list
Watches of the profile (--all for every profile)
booksy watch list [flags]| Flag | Type | Default | Description |
|---|---|---|---|
--all | bool | false | every profile |
booksy watch remove
Delete watches and their history
booksy watch remove <name...>booksy watch run
Check due watches in a loop until Ctrl-C
booksy watch run [flags]Foreground loop. Every tick runs the due watches and prints events as they happen (use --format jsonl to stream). The tick defaults to the shortest watch interval, with up to 10% jitter.
| Flag | Type | Default | Description |
|---|---|---|---|
--interval | duration | 0s | tick length (default: shortest watch interval) |
booksy watch service
Run checks on a schedule via systemd (Linux) or launchd (macOS)
booksy watch service install
Install a user-level timer that runs watch check --all
booksy watch service install [flags]| Flag | Type | Default | Description |
|---|---|---|---|
--interval | duration | 0s | timer period (default watch.interval, else 15m) |
booksy watch service status
Show the timer's state and last run
booksy watch service statusbooksy watch service uninstall
Remove the timer and its log
booksy watch service uninstall