Cross-calendar blocking events
BusyCal supports creating time-blocking events across multiple calendars to help manage your availability seamlessly. Blocking is available in two complementary forms:
- Manual blocking — On any individual event, choose Block on calendar from the Ctrl+click menu to mirror that one event's busy time onto another calendar of your choice.
- Automatic blocking with rules — Configure up to three rules per calendar so that any new or edited event matching your working schedule (or a custom day/time window) is automatically mirrored onto another calendar — even one belonging to a different account.
Need to ensure your personal commitments don’t clash with work meetings? For example, if you have a family gathering on your personal calendar, you can block that time on your work calendar, indicating to your colleagues that you’re busy without sharing personal details.
BusyCal ensures that time-blocked events stay in sync with the original event. Whenever you update the date, title, or details of the original event, these changes are automatically propagated to all associated blocking events. This works seamlessly across any calendar or account, ensuring that your availability is consistently managed and accurately reflected.
Block on Another Calendar
To block time on another calendar based on an existing event:
- Select and Ctrl+click on any event.
- Select a calendar from the Block on calendar sub-menu.
- Choose how you want the event to appear:
- Show as busy: This option will strip the original event's details (title, notes, location etc) and will simply state
[Busy]as the title on the time-blocking event. - Include details: Alternatively, you can choose to copy the title and notes to the blocking event.
When you select Show as Busy, the event in question is duplicated and stripped of all information. When using this feature on a shared calendar, rest assured the time-blocking event contains no information at all other than the date & time. No part of the notes, tags, location details or any other information is copied.
Blocking events are automatically updated with changes from the original event on the Mac where they were created. Manual changes to these events should be avoided, as they will be overwritten the next time the original event is updated.
Automatic Time Blocking with Rules
Available in BusyCal v2026.2.3 and later.
In addition to blocking events on demand, BusyCal can also create time-blocking events automatically as soon as you add or move an event onto a configured calendar — even when the destination calendar lives on a completely different account. This is ideal for keeping a personal calendar from quietly leaking into a shared work calendar (or vice-versa) without having to remember to block each event by hand.
Each calendar can be configured with up to three independent automation rules, allowing a single source calendar (for example, a Family calendar holding doctor appointments and school pickups) to mirror its busy time onto multiple destinations — say, your Work calendar so colleagues never double-book you, and a Shared Household calendar so your partner can see you're unavailable — each with its own criteria.
Opening the Automation Editor
To configure rules for a calendar:
- In the sidebar, Ctrl+click on the calendar you want to mirror events from and choose Get Info.

- Switch to the Automation tab at the top of the calendar info dialog.
- Click Add New Rule to create a new rule, or edit any existing rule already listed.
Configuring a Rule
Each rule is presented as a self-contained card with the following options:
- Automatically block on: Toggles the rule on or off. A disabled rule is preserved in the editor (so its configuration is not lost) but will not create any new blocking events.
- Destination calendar: The calendar that should receive the automatically created blocking event. Only writable, event-capable calendars are listed. The source calendar itself is excluded — automation rules are always cross-calendar.
- Blocking style: The same two styles available for manual blocking apply here:
- Show as Busy & Remove All Details — the destination receives a stripped event titled
[Busy], with no notes, location, URL, or other details copied across. Recommended for shared calendars where privacy matters. - Include Details — the destination receives a copy of the original event title, notes, and location, useful when you want full context to remain visible on both calendars.
- Show as Busy & Remove All Details — the destination receives a stripped event titled

Choosing When the Rule Applies
Each rule decides which events qualify based on a simple schedule constraint:
- Use working schedule (default) — The rule follows the app-wide working days and working hours configured under BusyCal > Settings > General (the Day starts at, Day ends at, and Work week options). The weekday pills and time range below the toggle show the live schedule and update automatically if you change your working hours later.
- Custom days and times — Turn off Use working schedule to pick a custom weekday set and time window for this individual rule. The weekday pills become clickable and the Between times become editable. This is useful when, for example, you want a rule that only fires on weekends, or only for late-evening events.
The time window is treated as a closed-open interval: an event that starts at exactly the end time of the window does not qualify. For instance, with a window of Between 8:00 AM and 7:00 PM, an event starting at 6:59 PM matches but one starting at 7:00 PM does not.
If you change the app-wide working hours later, every rule that has Use working schedule enabled will automatically pick up the new schedule the next time an event is added or edited — there is no need to revisit the rules.
Note that existing events on the source calendar are not retroactively re-evaluated when the schedule changes. Blocking events are only created or refreshed when the original event itself is updated. If you want a previously created event to (re-)trigger a rule under the new schedule, simply open and save it again.
How and When a Blocking Event Is Created
The decision to create a blocking event is made whenever BusyCal reconciles automatic time blocking after an event is added, pasted, moved, or edited so that it matches the rule. Specifically, an event will trigger a rule when all of the following are true:
- The item is a calendar event — tasks, journals, all-day banners are never mirrored.
- The event is timed (not all-day).
- The event was not marked Free — events with a busy status of Free are skipped by default.
- The event's start time falls on one of the rule's selected weekdays and inside the rule's time window.
- The destination calendar still resolves to a writable, enabled calendar.
When more than one rule on the same source calendar matches, BusyCal creates one blocking event per distinct destination calendar — duplicate destinations are de-duplicated automatically.
Once a blocking event has been created by a rule, it stays. If you later move the original event outside the working schedule window (or into a day the rule does not cover), the existing blocking event is not automatically removed. The rule's job is to make sure the blocker exists when the event first qualifies; from that point on the blocker is treated like any other time-blocking event and stays in lockstep with the original's date, time, and details.
If you no longer need a particular blocker, you can delete it manually at any time, or use the manual Block on calendar menu on the source event to toggle it off — the same way you would unblock a manually created blocker.
Automatic rules don't only fire when you create events through BusyCal's own UI. They also evaluate events that are added or modified on this Mac through:
- The BusyCal Claude Desktop Extension — when Claude creates, moves, or updates an event on the source calendar, any matching rule will create the corresponding blocker on the destination calendar automatically.
- AppleScript — events created or updated via BusyCal's scripting API trigger the same rule evaluation as a manual edit, so scripted workflows benefit from automatic blocking without any additional code.
In both cases the rule contract is identical: the event must be timed and must fall within the rule's day/time window. Rules now sync between all your devices (see below), and the device where the change originates evaluates the rule and creates the blocker.
Manual and Automatic Blocking Work Together
Automatic rules are purely additive — they never interfere with manually created blocking events. You can still:
- Use Ctrl+click > Block on calendar on any individual event to add an extra blocker on a different calendar that no rule covers.
- Manually delete an automatically created blocker if you want a one-off exception for that event.
- Use a mix of both: for example, let a rule mirror your weekday meetings to a Work calendar automatically, while occasionally blocking weekend personal events to Work by hand.
Spotting Calendars That Have Rules
Once a calendar has at least one automation rule configured, BusyCal displays a small calendar-with-clock badge next to that calendar's name in the sidebar. This makes it easy to see at a glance which of your calendars are participating in automatic time blocking and which are not. Calendars with no rules show no indicator.

Limitations and Notes
- A maximum of three rules can be configured per source calendar. The Add New Rule button becomes disabled once three rules are present, or when no eligible writable calendars are available as a destination.
- All-day events are intentionally excluded from automatic rules, since the goal of time blocking is to reserve specific working hours rather than entire days. All-day events can still be blocked manually using the menu approach described above.
- If a rule's destination calendar later becomes unavailable (for example, the account is disabled or the calendar is deleted), the rule is preserved but greyed out in the editor with a small "Destination calendar unavailable" warning. The rule will resume working as soon as the destination is reachable again, or you can delete it.
Automatic time-blocking rules sync via iCloud across every Mac and iPhone signed in to the same Apple ID, so you can configure a rule once on one Mac and trust the same rule appears on your other devices automatically — no per-device setup required. Editing or deleting a rule on any Mac propagates the change everywhere.
A couple of practical details worth knowing:
- Rule evaluation always happens on the device that originates the event change. Whichever device you create, paste, move, or edit an event on is the one that decides — using its synced copy of the rule — whether to create the corresponding blocker. The blocker then syncs to your other devices like any normal event. Events that arrive on a device purely through sync (i.e. were added or edited elsewhere) are not retroactively re-evaluated, which is what keeps multiple devices from racing to create duplicate blockers for the same edit.
- BusyCal on iPhone doesn't currently expose a UI for managing rules, but any rule you configure on a Mac syncs down to your iPhone automatically and is honored when you add or edit events from there. The resulting blocker events appear on every device exactly like any other event. In short: manage rules from any of your Macs and the same automation behavior follows your data everywhere.
Hiding Blocking Events from View
When both the original and blocking calendars are visible in BusyCal, you'll see two event boxes for the same time slot. To declutter the view, enable View > Combine Identical Events. BusyCal treats the original event and its blocking copy as identical (same title, same time, different calendars) and displays only the most appropriate one — typically the original — while the blocker stays hidden in the background.
The blocking event still exists on the other calendar and remains visible to anyone else who shares that calendar, so your availability is preserved. You can switch to the hidden copy at any time through the calendar picker at the bottom of the Info Panel.
For more details on how combining works and which copy is shown, see Combine Identical Events.
Unblocking an Event
Unblocking is performed in the same manner by selecting the original event, then Ctrl+click > "Block on calendar" and select the same calendar. Alternatively, you can select a time-blocking event and press the delete key.
Travel Time in Blocking Events
If the original event has travel time set, BusyCal can extend the blocking event's start time so the travel period also appears as busy on the other calendar. This is useful when you want colleagues to see that you're unavailable during your commute, not just during the meeting itself.

You can control this under BusyCal > Settings > Advanced > Other, using the Travel time in blocking events popup:
| Option | Behavior |
|---|---|
| Match original event times | Blocking events use the same start and end as the original. Travel time is not reflected in the blocked time on the other calendar. |
| Include travel time in all | Every blocking event starts earlier by the original event's travel duration, so the travel period is also shown as busy. This is the default. |
| Include travel time in "Show as Busy" only | Only blocking events created with the Show as Busy option start earlier. Blocking events that include full details keep the original times. |
Changing this setting applies the next time BusyCal updates a blocking event. You can trigger an immediate update by making any edit to the original event (or by removing and re-creating the blocker).
Suppressing Time-Blocking Notes
Time-blocking events help manage availability across calendars, but if you choose Show as Busy, you may later forget where the event originated. To prevent this, BusyCal automatically leaves a small note in place of the original:
Time-blocking event created by BusyCal
If you'd prefer not to include this note, you can disable it using the following Terminal command:
For Direct Download and App Store Users:
defaults write com.busymac.busycal3 suppressTimeBlockingNoteFooter -bool true
For Setapp Users:
defaults write com.busymac.busycal-setapp suppressTimeBlockingNoteFooter -bool true
After running the command, quit and restart BusyCal for the changes to take effect.