# BusyCal & BusyContacts > BusyCal and BusyContacts help professionals manage calendars and contacts on macOS and iOS. - [BusyCal & BusyContacts](/index.md) ## about About Busy Apps - [About](/about.md): About Busy Apps ## bookings-privacy What BusyCal's optional Bookings service stores about hosts and invitees, why it needs that data, and how long it keeps it. - [Bookings Privacy Notice](/bookings-privacy.md): What BusyCal's optional Bookings service stores about hosts and invitees, why it needs that data, and how long it keeps it. ## bookings-terms The terms for using the optional Bookings service in BusyCal, including the data processing terms. - [Bookings Terms](/bookings-terms.md): The terms for using the optional Bookings service in BusyCal, including the data processing terms. ## busycal ### releasenotes BusyCal Version History - [BusyCal Version History](/busycal/releasenotes.md): BusyCal Version History ## busycalios BusyCal for iPhone and iPad is an iOS calendar app with natural language entry, tasks, and unified sync with BusyCal for Mac, iCloud, Google, Exchange, and CalDAV calendars. - [BusyCal](/busycalios.md): BusyCal for iPhone and iPad is an iOS calendar app with natural language entry, tasks, and unified sync with BusyCal for Mac, iCloud, Google, Exchange, and CalDAV calendars. ## busycontacts BusyContacts is a powerful contact manager for Mac that provides advanced contact management, syncing, and CRM features for professionals and teams. - [BusyContacts](/busycontacts.md): BusyContacts is a powerful contact manager for Mac that provides advanced contact management, syncing, and CRM features for professionals and teams. ### releasenotes BusyContacts Version History - [BusyContacts Version History](/busycontacts/releasenotes.md): BusyContacts Version History ## compare Compare BusyCal with Fantastical, Outlook, Apple Calendar, Google Calendar, Notion Calendar, Readdle Calendars, Things 3, OmniFocus, Todoist, and 2Do. - [BusyCal Comparison Guides](/compare.md): Compare BusyCal with Fantastical, Outlook, Apple Calendar, Google Calendar, Notion Calendar, Readdle Calendars, Things 3, OmniFocus, Todoist, and 2Do. ### 2do Compare BusyCal and 2Do for calendar and task planning, including task sections, calendar views, and ways to use both apps together. - [BusyCal vs 2Do](/compare/2do.md): Compare BusyCal and 2Do for calendar and task planning, including task sections, calendar views, and ways to use both apps together. ### apple-calendar Compare BusyCal and Apple Calendar for everyday scheduling, booking links, calendar organization, filtering, and customization. - [BusyCal vs Apple Calendar](/compare/apple-calendar.md): Compare BusyCal and Apple Calendar for everyday scheduling, booking links, calendar organization, filtering, and customization. ### calendar-apps Compare BusyCal, Fantastical, Outlook, Apple Calendar, Google Calendar, and Notion Calendar to choose the best calendar app for Mac and iOS. - [Best Calendar App for Mac and iOS](/compare/calendar-apps.md): Compare BusyCal, Fantastical, Outlook, Apple Calendar, Google Calendar, and Notion Calendar to choose the best calendar app for Mac and iOS. ### fantastical Compare BusyCal and Fantastical for Mac and iOS, including BusyCal Bookings, Fantastical Openings, calendar sets, Smart Filters, and purchase options. - [BusyCal vs Fantastical](/compare/fantastical.md): Compare BusyCal and Fantastical for Mac and iOS, including BusyCal Bookings, Fantastical Openings, calendar sets, Smart Filters, and purchase options. ### google-calendar Compare BusyCal and Google Calendar for Mac users, including booking links, calendar views, account sync, customization, and browser access. - [BusyCal vs Google Calendar](/compare/google-calendar.md): Compare BusyCal and Google Calendar for Mac users, including booking links, calendar views, account sync, customization, and browser access. ### notion-calendar Compare BusyCal and Notion Calendar for Mac, including booking links, account support, calendar views, customization, and Notion integration. - [BusyCal vs Notion Calendar](/compare/notion-calendar.md): Compare BusyCal and Notion Calendar for Mac, including booking links, account support, calendar views, customization, and Notion integration. ### omnifocus Compare BusyCal and OmniFocus for calendar planning, task organization, project structure, and sync. - [BusyCal vs OmniFocus](/compare/omnifocus.md): Compare BusyCal and OmniFocus for calendar planning, task organization, project structure, and sync. ### outlook-calendar Compare BusyCal and Outlook Calendar on Mac, including booking links, Microsoft 365 support, calendar views, filtering, and email integration. - [BusyCal vs Outlook Calendar](/compare/outlook-calendar.md): Compare BusyCal and Outlook Calendar on Mac, including booking links, Microsoft 365 support, calendar views, filtering, and email integration. ### readdle-calendars Compare BusyCal and Readdle Calendars for Mac, including booking links, calendar views, task planning, customization, and account sync. - [BusyCal vs Readdle Calendars](/compare/readdle-calendars.md): Compare BusyCal and Readdle Calendars for Mac, including booking links, calendar views, task planning, customization, and account sync. ### things-3 Compare BusyCal and Things 3 for calendar and task planning, including scheduling, task lists, and account sync. - [BusyCal vs Things 3](/compare/things-3.md): Compare BusyCal and Things 3 for calendar and task planning, including scheduling, task lists, and account sync. ### todoist Compare BusyCal and Todoist for calendar and task planning, including account sync and ways to use both apps together. - [BusyCal vs Todoist](/compare/todoist.md): Compare BusyCal and Todoist for calendar and task planning, including account sync and ways to use both apps together. ## eula End-User License Agreement - [End-User License Agreement](/eula.md): End-User License Agreement ## press Press resources for Busy Apps - [Press Kit](/press.md): Press resources for Busy Apps ## privacy Privacy Policy - [Privacy Policy](/privacy.md): Privacy Policy ## store Purchase BusyCal and BusyContacts licenses, renew existing licenses, or upgrade your productivity suite. Volume discounts available for multiple licenses. - [Store](/store.md): Purchase BusyCal and BusyContacts licenses, renew existing licenses, or upgrade your productivity suite. Volume discounts available for multiple licenses. ## webdav Calendar subscriptions for BusyCal - [Holiday & Sports Calendar Subscriptions](/webdav.md): Calendar subscriptions for BusyCal ## docs Learn about Support & User Guides in BusyCal and BusyContacts. - [Support & User Guides](/docs.md): Learn about Support & User Guides in BusyCal and BusyContacts. ### bookings Let people book a meeting with you at a time you're free. Learn how BusyCal Bookings works, what you need to get started, and how it protects your calendar details. - [BusyCal Bookings](/docs/bookings.md): Let people book a meeting with you at a time you're free. Learn how BusyCal Bookings works, what you need to get started, and how it protects your calendar details. - [Account, Security and Privacy](/docs/bookings/account-security-and-privacy.md): Manage your Bookings sign-ins, devices and account. Learn what data is shared, how long it is kept, and how to remove invitee details or delete your account. - [Availability and Busy Calendars](/docs/bookings/availability-and-busy-calendars.md): Set your booking hours, choose which calendars block time, and check why a time is available or unavailable. Learn how BusyCal keeps your availability up to date. - [Booking Pages](/docs/bookings/booking-pages.md): Create and edit BusyCal booking pages. Choose meeting settings, share a link, or embed a booking page in WordPress or another website. - [Bookings and Requests](/docs/bookings/bookings-and-requests.md): Manage BusyCal bookings and requests: approve or decline requests, reschedule meetings, book on someone's behalf and find bookings in your calendar. - [Emails and Replies](/docs/bookings/emails-and-replies.md): Learn which booking emails you and your invitees receive, how calendar invitations work, and how to choose where email replies go. - [Locations and Video Calls](/docs/bookings/locations-and-video-calls.md): Offer video calls, Jitsi room links, phone calls or in-person meetings on your BusyCal booking pages. Learn how call links reach invitees. - [Your Profile and Appearance](/docs/bookings/profile-and-appearance.md): Personalize your BusyCal booking pages with your name, photo, logo and colors. Embed your profile on your website so visitors can choose a meeting type. - [Troubleshooting Bookings](/docs/bookings/troubleshooting.md): Find help with missing bookings, unavailable times, calendar sync, approval requests, booking links and sign-in problems. ### busycal - [Using BusyCal with Reminders](/docs/busycal/114450-using-busycal-with-reminders.md): Reminders is available as an app on iOS and macOS, which can include lists of reminders / tasks. BusyCal can connect to Reminders directly for syncing these lists their container reminders. - [Do Not Disturb](/docs/busycal/116037-do-not-disturb.md): You can set a DND timer to suppress all alarms and sounds temporarily. - [Using BusyCal with Zoom](/docs/busycal/119897-using-busycal-with-zoom.md): Zoom is a market leading online video conferencing solution. BusyCal's Zoom integration connects to your Zoom account and enables you to add video/audio conferencing calls to existing meetings or new calendar events with just a click. This powerful integration makes scheduling and managing Zoom meetings directly in your calendar simple and efficient. - [Using BusyCal with Todoist](/docs/busycal/128557-using-busycal-with-todoist.md): [Todoist] is a popular task management offering by Doist. You can add an existing account to BusyCal and manage all your Lists and Tasks along with all your other accounts from a single place. Changes made in BusyCal will sync to Todoist and all other devices running Todoist and vice versa. - [Automatic Tagging](/docs/busycal/130480-automatic-tagging.md): BusyCal 2022.3.1 adds support for creating automation rules that allow you automatically categorize / tag incoming events. - [Combine Identical Events](/docs/busycal/133794-combine-identical-events.md): Identical events syncing from multiple calendars can be combined to display the first, most appropriate event. - [Paste as Task](/docs/busycal/135995-paste-as-task.md): BusyCal supports pasting text as a list of tasks - [Using BusyCal with Apple Calendar](/docs/busycal/140077-using-busycal-with-apple-calendar.md): BusyCal now supports direct syncing with Apple Calendar in read-only mode for those instances where adding your account directly to BusyCal is not feasible. - [Using BusyCal with Office 365 (Microsoft Graph)](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md): In our continuous effort to enhance BusyCal's connectivity and feature set, we have transitioned our syncing mechanism for Office 365 accounts to use Microsoft Graph API, Microsoft's latest sync offering. - [Cross-calendar blocking events](/docs/busycal/142884-cross-calendar-blocking-events.md): BusyCal supports creating time-blocking events across multiple calendars to help manage your availability seamlessly. - [Quick Edits](/docs/busycal/142890-quick-edits.md): Discover a variety of powerful batch editing options available in BusyCal under the Edit menu. - [Syncing Extended Task Properties](/docs/busycal/144591-syncing-extended-task-properties.md): Learn about Syncing Extended Task Properties in BusyCal and BusyContacts. - [Widgets](/docs/busycal/145200-widgets.md): BusyCal widgets let you see upcoming events and tasks at a glance from macOS, with multiple widget sizes and configuration options. - [Getting Started with BusyCal for Mac](/docs/busycal/70585-getting-started-with-busycal-for-mac.md): This tutorial provides instructions for getting started with BusyCal and an overview of its features. - [The BusyCal Window](/docs/busycal/70586-the-busycal-window.md): The main BusyCal window has a number of controls, some of which may not appear depending on your current settings. - [Day View](/docs/busycal/70587-day-view.md): Day view displays a single day of your calendar. - [Week View](/docs/busycal/70588-week-view.md): Week view displays one week of your calendar by default (with the option to redefine “week” as any period from 2–90 days). - [Month View](/docs/busycal/70589-month-view.md): Month view displays one month of your calendar by default (with the option to redefine "month" as any period from 1–12 weeks). - [Year View](/docs/busycal/70590-year-view.md): Year view provides a year-at-a-glance overview for planning, with optional Year Planner mode, Banners or Heatmap display styles, and a Highlights drawer that surfaces key stats. - [List View](/docs/busycal/70591-list-view.md): List view displays all your events in a scrolling table format. - [Calendar List (Left Panel)](/docs/busycal/70592-calendar-list.md): BusyCal displays a list of your calendars (along with optional mini month calendars) in the left sidebar. You can rearrange this list and use it to show, hide, and share calendars, among other things. - [Event Types](/docs/busycal/70593-event-types.md): BusyCal supports a variety of event types, including banners, tasks (also known as to dos), stickies, and journals. - [Tasks](/docs/busycal/70594-tasks.md): BusyCal can manage all your tasks (also known as to dos or reminders). Tasks can be displayed in a Task List in the right sidebar and/or in the calendar on the date they are due. - [Info Panel](/docs/busycal/70595-info-panel.md): The Info Panel displays the details of the selected event or task. The Info Panel may appear in any of three locations: in the righthand sidebar, as a floating window, or as a popover in the main calendar view. - [Repeating Events](/docs/busycal/70596-repeating-events.md): Repeating events reoccur at regular intervals (such as every day, every week, or the second Thursday of every month). - [Tags](/docs/busycal/70597-tags.md): Tags are user-defined labels with which you can categorize and color events in BusyCal. You can also search and filter events in your calendar based on tags. - [Graphics](/docs/busycal/70598-graphics.md): BusyCal enables you to add graphics and Emoji icons to your calendar to highlight certain dates, such as holidays and special events. - [Birthdays and Anniversaries](/docs/busycal/70599-birthdays-and-anniversaries.md): BusyCal can display the birthdays and anniversaries from macOS Contacts (or BusyContacts) in your calendar. - [Holidays](/docs/busycal/70600-holidays.md): BusyCal optionally displays holidays on your calendars, and can subscribe to public calendar servers to supply this information automatically. - [Subscribing to Public Calendars](/docs/busycal/70601-subscribing-to-public-calendars.md): BusyCal supports subscribing to read-only (WebDAV) public calendars like holidays and sports schedules. - [Weather](/docs/busycal/70602-weather.md): BusyCal can display a 7-day weather forecast and moon phases in your calendar. - [Locations, Maps & Travel Time](/docs/busycal/70603-locations-maps-travel-time.md): BusyCal’s Info Panel automatically displays maps to events with addresses in their Location fields. In addition, BusyCal can calculate travel time to these destinations based on current traffic conditions and alert you when you must leave in order to arrive on time. - [Alarms](/docs/busycal/70604-alarms.md): BusyCal has a flexible selection of alarms to remind you about scheduled events. - [Quick Entry](/docs/busycal/70605-quick-entry.md): You can create events and tasks in BusyCal using natural language via the Quick Entry feature. - [BusyCal Menu App](/docs/busycal/70606-busycal-menu.md): BusyCal Menu lets you view and add locally stored events, even when BusyCal has quit. The main BusyCal app must remain running to sync with calendar services. - [Settings](/docs/busycal/70607-preferences.md): BusyCal's Settings window offers numerous ways to configure its appearance and behavior to suit your needs. - [Date and Time Format](/docs/busycal/70608-date-and-time-format.md): BusyCal displays dates and times based on the format you have specified in **System Settings > Language & Text > Region**. - [Time Zones](/docs/busycal/70609-time-zones.md): Because you may move from one time zone to another, and may interact with others in other time zones, BusyCal offers flexible features for dealing with time zone differences. - [Printing](/docs/busycal/70610-printing.md): You can print your calendar by choosing File > Print. BusyCal prints whatever is currently displayed onscreen. - [Searching, Finding, and Filtering Events](/docs/busycal/70611-searching-finding-and-filtering-events.md): BusyCal provides two methods of searching for events: you can find all matching events throughout your entire calendar, or you can filter the current view to show only matching events within the current date range. - [Smart Filters](/docs/busycal/70612-smart-filters.md): Smart filters are a powerful tool for creating calendar sets and saved searches that can be applied with a single click. - [Time Tracking](/docs/busycal/70613-time-tracking.md): Using a combination of tags, smart filters, and List view, you can generate a custom view that displays the total amount of time spent on a project for calculating billable hours, etc. - [Contacts](/docs/busycal/70614-contacts.md): You can drag contacts from BusyContacts or the macOS Contacts app into BusyCal to attach contacts to events or tasks. You can also drag a contact into BusyCal to create a meeting with that person, or to create a new task linked to that person. - [Managing Meeting and Invites](/docs/busycal/70615-meetings-and-invitations.md): Learn how to manage meetings and invites in BusyCal - from scheduling meetings and sending invitations to responding to calendar invites and proposing new meeting times. - [Free/Busy Availability Viewer](/docs/busycal/70616-free-busy-availability-viewer.md): Use BusyCal's Availability Viewer to check attendee free/busy status, compare proposed meeting times, and find a time that works for everyone. - [Backing Up and Restoring](/docs/busycal/70617-backing-up-and-restoring.md): BusyCal automatically backs up your calendars every 24 hours and saves your last 10 backups. - [Exporting, Importing, and Merging Calendars](/docs/busycal/70618-exporting-importing-and-merging-calendars.md): Learn about Exporting, Importing, and Merging Calendars in BusyCal and BusyContacts. - [Resetting BusyCal](/docs/busycal/70619-resetting-busycal.md): If an error is displayed when launching BusyCal that the file couldn't be opened because it isn't in the correct format, your BusyCal database may be corrupted. You can solve this by resetting BusyCal. - [Keyboard Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md): BusyCal offers a long list of built-in keyboard shortcuts, enabling you to perform almost any action without moving your hand to a mouse or trackpad, such as copying or duplicating events. - [URL Handler](/docs/busycal/70621-url-handler.md): BusyCal supports URL handlers for creating new events and finding events in BusyCal. Through the use of BusyCal’s URL handlers you can interact with BusyCal from AppleScript or other apps that can open URLs. - [Archiving Old Events](/docs/busycal/70622-archiving-old-events.md): If you've accumulated a lot of data in your calendar over the years, it might be useful to remove old events to reduce the size of your calendar database, improve performance, and speed up syncing with a cloud service such as iCloud or Google. - [Syncing BusyCal with an iOS Device](/docs/busycal/70623-syncing-busycal-with-an-ios-device.md): BusyCal can sync with the built-in Calendar and Reminders apps on iPhone and iPad, as well as with the iOS version of BusyCal. - [AppleScript Support](/docs/busycal/70624-applescript.md): BusyCal's AppleScript API lets you list calendars, search events and tasks, check free/busy availability, and create, update, or delete calendar items from scripts. - [Claude Desktop Extension](/docs/busycal/70624-mcp.md): Connect BusyCal to Claude Desktop so Claude can manage your calendars, check availability, and create or update events and tasks. - [Raycast Extension](/docs/busycal/70624-raycast.md): BusyCal's Raycast extension lets you create events and tasks, search upcoming items, and find free time — all without leaving the keyboard. - [Syncing Calendar Subscriptions with an iOS Device](/docs/busycal/70629-syncing-calendar-subscriptions-with-an-ios-device.md): If you subscribe to a WebDAV calendar in BusyCal on your Mac, you can sync that subscription to your iPhone or iPad to avoid having to subscribe again. - [Using BusyCal with iCloud](/docs/busycal/70630-using-busycal-with-icloud.md): iCloud is Apple's free online service, which includes calendar syncing among its many features. BusyCal can connect to iCloud for syncing calendars across your devices and sharing them with others. - [Using BusyCal with Google](/docs/busycal/70636-using-busycal-with-google.md): Google Calendar is a free service for Google users that lets you sync and share calendars. BusyCal can connect to Google Calendar, using it to sync calendars across your devices and share them with others. - [Using BusyCal with Exchange / Office 365](/docs/busycal/70642-using-busycal-with-exchange-office-365.md): Microsoft Exchange servers provide a number of online services, among which is syncing and sharing calendars. BusyCal can connect to Exchange servers, using them to sync calendars across your devices and share them with others. - [Using BusyCal with CalDAV](/docs/busycal/70647-using-busycal-with-caldav.md): CalDAV is an industry standard for calendar servers. BusyCal can connect to CalDAV servers, using them to sync calendars across your devices and share them with others. - [Using BusyCal with Fruux](/docs/busycal/70651-using-busycal-with-fruux.md): Fruux is a popular third-party CalDAV server. As such, you can connect to it with BusyCal for calendar syncing and sharing. BusyCal can connect to Fruux, using it to sync calendars across your devices and share them with others. - [LAN Calendar Sharing](/docs/busycal/70655-using-busycal-on-a-lan.md): Share calendars peer-to-peer with other BusyCal users on your local network using Bonjour, without a server or cloud service. - [Sharing Calendars](/docs/busycal/77661-sharing-calendars.md): BusyCal enables you to share calendars with other users for collaborative calendar management with different permission levels. - [Archiving Old Tasks](/docs/busycal/archiving-old-tasks.md): If you've accumulated a large number of completed tasks over the years, archiving or deleting old tasks can reduce the size of your Reminders database, improve sync performance, and speed up BusyCal. - [Getting Started with Bookings](/docs/busycal/bookings-getting-started.md): Set up BusyCal Bookings on your Mac, choose your calendars, create your first booking page and share its link. Then use Bookings on your other devices. - [Date Picker](/docs/busycal/date-picker.md): BusyCal's intelligent date picker lets you type natural language dates and times directly into the start and end fields. Learn about all the formats it supports, from relative dates to week numbers. - [Mapping Event Locations](/docs/busycal/event-map-view.md): View all your calendar event locations on an interactive map. BusyCal's map view displays pins for all your events with locations. - [Suggestions as Templates](/docs/busycal/event-suggestions.md): Learn about Suggestions as Templates in BusyCal and BusyContacts. - [Find and Replace](/docs/busycal/find-and-replace.md): Use Find and Replace to update text across many events, tasks, and journal entries at once. Search titles, notes, locations, and URLs, preview changes before you commit them, and use Regular Expression mode with capture groups for pattern-based edits. - [Meeting Accounts](/docs/busycal/meeting-accounts.md): Meeting accounts let BusyCal create Zoom, Webex, Google Meet and Microsoft Teams calls for events and bookings. See which account creates each call and how to set it up. - [Siri and Shortcuts](/docs/busycal/siri-and-shortcuts.md): Use Siri and the Shortcuts app with BusyCal for Mac to create events and tasks, check your schedule, find free time, and switch Calendar Sets with a Focus filter. ### busycalios - [Using BusyCal with Reminders](/docs/busycalios/114474-using-busycal-with-reminders.md): Reminders is available as an app on iOS and macOS, which can include lists of reminders. BusyCal can connect to Reminders directly for syncing these lists their container reminders. - [Using BusyCal with Zoom](/docs/busycalios/119897-using-busycalios-with-zoom.md): Learn about Using BusyCal with Zoom in BusyCal and BusyContacts. - [Calendar Sets](/docs/busycalios/131439-calendar-sets.md): With Calendar Sets, you can manage different collections of calendars to be able to quickly switch between them, such as a different collection of Work related calendars and a different one for Personal. - [URL Handler](/docs/busycalios/139998-url-handler.md): BusyCal iOS supports URL handlers for creating new events and performing a few other tasks. - [Siri and Shortcuts](/docs/busycalios/140000-shortcuts.md): Use Siri and the Shortcuts app with BusyCal for iPhone and iPad to create events and tasks, check your schedule, find free time, and switch Calendar Sets with a Focus filter. - [Using BusyCal with Apple Calendar](/docs/busycalios/140078-using-busycal-with-apple-calendar.md): BusyCal now supports direct syncing with Apple Calendar in read-only mode for those instances where adding your account directly to BusyCal is not feasible. - [Event Text Style](/docs/busycalios/142141-event-text-style.md): BusyCal supports various text display styles. - [Cross-calendar blocking events](/docs/busycalios/142884-cross-calendar-blocking-events.md): BusyCal for iOS lets you mirror an event's busy time onto another calendar so your availability stays in sync without duplicating details. Automatic time-blocking rules created on the Mac sync over and remain active on iPhone too. - [Widgets](/docs/busycalios/145201-widgets.md): BusyCal widgets on iPhone and iPad let you see upcoming events and tasks at a glance, with multiple sizes and configuration options. - [Getting Started with BusyCal for iOS](/docs/busycalios/70656-getting-started-with-busycal-for-ios.md): Learn about Getting Started with BusyCal for iOS in BusyCal and BusyContacts. - [Calendar Views](/docs/busycalios/70657-calendar-views.md): BusyCal provides several views for displaying your calendar: Day view, Week view, Month view, Year view, and List view. - [Event Types](/docs/busycalios/70658-event-types.md): BusyCal supports a variety of event types, including events, banners and tasks. - [Managing Tasks in BusyCal iOS](/docs/busycalios/70659-tasks.md): BusyCal for iOS can manage all your tasks (also known as to dos or reminders). Tasks can be displayed in a Task List and/or in the calendar on your iPhone or iPad on the date they are due. - [Event Details](/docs/busycalios/70660-event-details.md): The Event Details view displays the details of the selected event or task. The Event Details view appears when you create a new event or to do, or when you tap an existing event or to do in your calendar. - [Repeating Events and Tasks](/docs/busycalios/70661-repeating-events-and-to-dos.md): Repeating events and tasks reoccur at regular intervals (such as every day, every week, or every month). - [Tags](/docs/busycalios/70662-tags.md): Tags are user-defined labels that allow you to categorize events and tasks in BusyCal. You can also use tags to search for specific events within your calendar. - [Birthdays and Anniversaries in BusyCal for iOS](/docs/busycalios/70663-birthdays-and-anniversaries.md): BusyCal can display the birthdays and anniversaries from the iOS Contacts app in your calendar. Troubleshoot issues with birthdays not showing on iPhone or iPad. - [Subscribing to Public Calendars](/docs/busycalios/70664-subscribing-to-public-calendars.md): BusyCal supports subscribing to read-only (WebDAV) public calendars like holidays and sports schedules. - [Weather](/docs/busycalios/70665-weather.md): BusyCal can display a 8-day weather forecast and moon phases in your calendar. - [Maps & Travel Time](/docs/busycalios/70666-maps-travel-time.md): BusyCal’s Event Details view automatically displays maps to events with addresses in their Location fields. In addition, BusyCal can calculate travel time to these destinations and alert you when it’s time to leave in order to arrive on time. - [Alarms](/docs/busycalios/70667-alarms.md): BusyCal has a flexible selection of alarms to remind you about scheduled events. An event can have one or more alarms, each of which can occur at or before the event’s start time. - [Natural Language](/docs/busycalios/70669-natural-language.md): You can create events and tasks in BusyCal using natural language—simply type the details and BusyCal interprets them automatically. - [Settings](/docs/busycalios/70670-settings.md): BusyCal's Settings view offers numerous ways to configure its appearance and behavior to suit your needs. - [Date and Time Options](/docs/busycalios/70671-date-and-time-options.md): BusyCal displays dates and times based on what you have specified in the main iOS System Settings app in General > Date & Time. - [Finding Events](/docs/busycalios/70672-finding-events.md): BusyCal makes it easy to find all matching events throughout your entire calendar. - [Meetings and Invitations](/docs/busycalios/70673-meetings-and-invitations.md): BusyCal enables you to schedule meetings with others by adding attendees to an event and sending a meeting invitation. - [Syncing BusyCal for iOS with a Mac](/docs/busycalios/70674-syncing-busycal-for-ios-with-a-mac.md): BusyCal iOS supports syncing with all the different types of accounts just as its macOS counterpart. - [Using BusyCal iOS with iCloud](/docs/busycalios/70675-using-busycal-with-icloud.md): iCloud is Apple's free online service, which includes calendar syncing among its many features. BusyCal for iOS can connect to iCloud for syncing calendars across your iPhone and iPad devices. - [Using BusyCal iOS with Google Calendar](/docs/busycalios/70676-using-busycal-with-google.md): Google Calendar is a free service for Google users that lets you sync and share calendars. BusyCal for iOS can connect to Google Calendar, using it to sync calendars across your iPhone and iPad devices. - [Using BusyCal with Exchange](/docs/busycalios/70677-using-busycal-with-exchange.md): Microsoft Exchange servers provide a number of online services, among which is syncing and sharing calendars. BusyCal can connect to Exchange servers, using them to sync calendars across your devices and share them with others. - [Using BusyCal iOS with CalDAV](/docs/busycalios/70678-using-busycal-with-caldav.md): CalDAV is an industry standard for calendar servers. BusyCal for iOS can connect to CalDAV servers, using them to sync calendars across your iPhone and iPad devices. - [Using BusyCal iOS with Todoist](/docs/busycalios/70679-using-busycal-with-todoist.md): Todoist is a popular task management service by Doist. BusyCal for iOS can connect to your Todoist account so you can view and manage your projects and tasks alongside your calendar events. - [BusyCal for Apple Watch](/docs/busycalios/apple-watch.md): Use BusyCal on Apple Watch to check your calendar, see upcoming events and dated tasks, create items, and add BusyCal complications to your watch face. - [Export Calendars as CSV](/docs/busycalios/export-as-csv.md): Export selected BusyCal for iOS calendars to a CSV spreadsheet for use in Excel, Numbers, Google Sheets, or any other app that accepts comma-separated values. - [Using BusyCal for iOS with Office 365 (Microsoft Graph)](/docs/busycalios/using-busycalios-with-office-365-microsoft-graph.md): Connect BusyCal for iOS with Office 365 using Microsoft Graph API. Learn how to set up and use Office 365/Microsoft 365 with BusyCal on iPhone and iPad. - [Using BusyCal iOS with Calendar Subscriptions (WebDAV)](/docs/busycalios/using-busycalios-with-webdav.md): BusyCal for iOS supports subscribing to read-only WebDAV calendar feeds such as holidays, sports schedules, and other .ics calendars. Learn how to add and manage WebDAV calendar subscriptions on your iPhone or iPad. ### busycontacts - [Using BusyContacts with Office 365 (Microsoft Graph)](/docs/busycontacts/140983-using-busycontacts-with-office-365-microsoft-graph.md): Connect BusyContacts to Office 365 using Microsoft Graph API for enhanced contact syncing with better security and performance. - [Getting Started with BusyContacts](/docs/busycontacts/44314-getting-started-with-busycontacts.md): This tutorial provides instructions for getting started with BusyContacts and an overview of its features. - [Keyboard Shortcuts](/docs/busycontacts/45868-keyboard-shortcuts.md): BusyContacts Keyboard Shortcuts - [Address Books](/docs/busycontacts/47211-address-books.md): BusyContacts supports multiple address books and syncs with multiple services. - [Tags (Groups)](/docs/busycontacts/47214-tags-groups.md): You can use Tags in BusyContacts to categorize and filter your contacts. - [Linking and Merging Cards](/docs/busycontacts/47349-linking-and-merging-cards.md): If you are syncing with multiple services, you are likely to have duplicate cards for many of your contacts. - [Activity List](/docs/busycontacts/47350-activity-list.md): The Activity List shows a chronological listing of activities associated with the selected contact. You can show or hide the Activity List by selecting View > Show/Hide Activity List. - [Info Panel](/docs/busycontacts/47351-info-panel.md): The BusyContacts info panel displays the details of the selected contact. - [Card View and List View](/docs/busycontacts/47352-card-view-and-list-view.md): BusyContacts can display your contacts in two formats: Card View and List View. - [Birthdays and Anniversaries](/docs/busycontacts/47353-birthdays-and-anniversaries.md): BusyContacts can surface contacts with upcoming birthdays and anniversaries at the top of your list, and display them as events in BusyCal. - [Linking Contacts with Events in BusyCal](/docs/busycontacts/47355-linking-contacts-with-events-in-busycal.md): The BusyContacts Activity List displays a list of calendar events for the selected contact. - [Sharing Contacts](/docs/busycontacts/48244-sharing-contacts.md): BusyContacts enables you to share address books with other BusyContacts users. - [Syncing with a Server](/docs/busycontacts/49373-syncing-with-a-server.md): BusyContacts is a client app that syncs with a server. Typically, the built-in Contacts app on macOS and iOS is configured to sync with either iCloud, Google or Exchange, all of which are compatible with BusyContacts. - [Syncing with Apple Contacts](/docs/busycontacts/49374-syncing-with-apple-contacts.md): You can sync BusyContacts with Apple Contacts on your Mac. - [Settings](/docs/busycontacts/49554-preferences.md): You can configure various settings in BusyContacts > Settings (also known as "Preferences" on earlier macOS versions). - [Action Menu and Contextual Menu](/docs/busycontacts/49708-action-menu-and-contextual-menu.md): You can use the Action menu or contextual menu to perform various actions. - [Copying Contact Info](/docs/busycontacts/49709-copying-contact-info.md): Learn about Copying Contact Info in BusyCal and BusyContacts. - [Custom Field Types and Labels](/docs/busycontacts/49714-custom-field-types-and-labels.md): BusyContacts supports many predefined field types and an unlimited number of field labels. - [Backup and Restore](/docs/busycontacts/49877-backup-and-restore.md): BusyContacts automatically backs up your contacts every 24 hours. - [Smart Filters](/docs/busycontacts/50099-smart-filters.md): Smart Filters are a powerful tool for filtering contacts and customizing the List View. Smart Filters are displayed on the Filter toolbar where they can be applied with a single click. - [URL Handler](/docs/busycontacts/56235-url-handler.md): BusyContacts supports URL handlers for showing a contact and creating a new contact. - [Printing Envelopes and Mailing Labels](/docs/busycontacts/56669-printing-envelopes-and-mailing-labels.md): You may print Envelopes and Mailing Labels by selecting Print from the File menu. - [Phone Dialing](/docs/busycontacts/56728-phone-dialing.md): BusyContacts can dial phone numbers through an iPhone, Skype, and other third-party dialers. - [Exporting and Importing Contacts](/docs/busycontacts/56820-exporting-and-importing-contacts.md): BusyContacts supports exporting and importing in vCard format. - [Special Fields](/docs/busycontacts/56829-special-fields.md): BusyContacts includes several special fields, in addition to the standard predefined fields you'd expect to find in a contact manager (phone, email, URL, address, etc.). - [Me Card](/docs/busycontacts/56832-me-card.md): BusyContacts allows you to identify one of the cards in your database as your Me Card. - [Reset BusyContacts](/docs/busycontacts/56833-reset-busycontacts.md): If an error is displayed when launching BusyContacts that the file couldn't be opened because it isn't in the correct format, your BusyContacts database may be corrupted. You can solve this by resetting BusyContacts. - [Syncing with an iOS device](/docs/busycontacts/77549-syncing-with-an-ios-device.md): You can sync BusyContacts with Apple Contacts on your iPhone and iPad. - [Using BusyContacts with iCloud](/docs/busycontacts/77662-using-busycontacts-with-icloud.md): iCloud is Apple’s free online service, which includes contact syncing among its many features. BusyContacts can connect to iCloud for syncing contacts across your devices. - [Using BusyContacts with Google](/docs/busycontacts/77663-using-busycontacts-with-google.md): Google is a free service for Google users that lets you sync contacts. BusyContacts can connect to Google, using it to sync contacts across your devices. - [Using BusyContacts with Exchange](/docs/busycontacts/77664-using-busycontacts-with-exchange.md): Microsoft Exchange servers provide a number of online services, among which is syncing and sharing contacts. BusyContacts can connect to Exchange servers, using them to sync contacts across your devices and share them with others. - [Using BusyContacts with CardDAV](/docs/busycontacts/77665-using-busycontacts-with-carddav.md): CardDAV is an industry standard for contact servers. BusyContacts can connect to CardDAV servers, using them to sync contacts across your devices. - [Using BusyContacts with Fruux](/docs/busycontacts/77666-using-busycontacts-with-fruux.md): Fruux is a popular third-party CardDAV server. As such, you can connect to it with BusyContacts for contact syncing and sharing. BusyContacts can connect to Fruux, using it to sync contacts across your devices and share them with others. - [Business Card Reader](/docs/busycontacts/business-card-reader.md): Import contacts from business cards and images using advanced text recognition and natural language processing. - [QR Code Generation](/docs/busycontacts/qr-code-generation.md): Generate QR codes from contact information for easy sharing and scanning. ### faqs Browse through our collection of frequently asked questions - [Frequently Asked Questions](/docs/faqs.md): Browse through our collection of frequently asked questions - [How to setup sync with Synology](/docs/faqs/100599-how-to-setup-sync-with-synology.md): You need to manually provide a server address in the correct format in order to sync with a Synology account - [How can I try the latest BusyCal without losing my current version](/docs/faqs/100629-how-can-i-try-busycal-3-without-losing-busycal-2.md): You can evaluate the latest BusyCal by having both the new version and your current version installed side by side. - [How can I change the event text color?](/docs/faqs/103359-event-titles-don-t-reflect-the-same-color-i-ve-set-on-the-calendar.md): Learn how can I change the event text color in BusyCal and BusyContacts. - [Snooze alarms from Outlook are not appearing in BusyCal](/docs/faqs/103486-snooze-alarms-from-outlook-are-not-appearing-in-busycal.md): Snoozes are not pushed to the server by Outlook - [Birthday set for a contact in Google is not syncing with BusyContacts](/docs/faqs/103777-birthday-set-for-a-contact-in-google-is-not-syncing-with-busycontacts.md): Unfortunately, Google does not sync the Birthday field with 3rd party apps, and so this won't sync back to BusyContacts. - [Shared calendars keep disappearing from our Exchange account](/docs/faqs/104149-shared-calendars-keep-disappearing-from-our-exchange-account.md): This is due to incorrect permissions set when setting up sharing in Exchange - [Unable to connect to an Office 365 / Outlook account](/docs/faqs/104475-unable-to-connect-to-an-office-365-outlook-account.md): Office 365 connections normally fail due to one of two things. - [Cannot connect to Fruux](/docs/faqs/110543-cannot-connect-to-fruux.md): Learn about Cannot connect to Fruux in BusyCal and BusyContacts. - [Reminders from iOS 13 / macOS 10.15 Reminders aren't syncing](/docs/faqs/112428-reminders-from-ios-13-macos-10-15-reminders-aren-t-syncing.md): Upgraded Reminders no longer sync through CalDAV. Connect BusyCal directly to Reminders on supported macOS and iOS versions instead. - [Activity list is not showing emails in BusyContacts on macOS Catalina](/docs/faqs/112805-activity-list-is-not-showing-emails-in-busycontacts-on-macos-catalina.md): Find the Apple Mail integration for your macOS version, including Mail Assistant on macOS 12+ and older Spotlight troubleshooting. - [Where Did My Reminders Go After Upgrade? (No CalDAV Support)](/docs/faqs/112990-reminders-in-ios-13-and-macos-catalina-drops-support-for-caldav.md): Upgraded Reminders use a separate store from CalDAV. Connect BusyCal directly to Reminders, or review the historical migration and backup guidance. - [Alarm field in Meeting Events syncing with Google is disabled](/docs/faqs/115308-alarm-field-in-meeting-events-syncing-with-google-is-disabled.md): Learn about Alarm field in Meeting Events syncing with Google is disabled in BusyCal and BusyContacts. - [End Time Zone Ignored in Google Calendar Events](/docs/faqs/115393-end-timezone-is-ignored-when-creating-events-in-a-google-calendar-account.md): Learn about End Timezone is ignored when creating events in a Google Calendar account in BusyCal and BusyContacts. - [I am using MailMate but BusyContacts is not showing any emails](/docs/faqs/116021-i-am-using-mailmate-but-busycontacts-is-not-showing-any-emails.md): You need to enable Indexed for Messages under MailMate Settings - [Alarms not showing in BusyCal](/docs/faqs/116035-alarms-not-showing-in-busycal.md): Learn about Alarms not showing in BusyCal in BusyCal and BusyContacts. - [WAN Sync is no longer working](/docs/faqs/120196-wan-sync-is-no-longer-working.md): Recent updates to macOS have broken WAN sync which uses a legacy communication protocol. - [Licensing Explained](/docs/faqs/120616-licensing-explained.md): Here you will find answers to some of the most frequently asked questions about the different licensing options we offer for BusyCal & BusyContacts on macOS. If you don't find your question answered below, feel free to contact us. - [Zoom account keeps requesting to be reauthorized](/docs/faqs/122644-zoom-account-keeps-requesting-to-be-reauthorized.md): Learn about Zoom account keeps requesting to be reauthorized in BusyCal and BusyContacts. - [Manage Plugins button not showing in Apple Mail preferences](/docs/faqs/124218-manage-plugins-button-not-showing-in-apple-mail-preferences.md): If you're using the legacy BusyContacts Apple Mail plug-in, Apple Mail's "Manage Plug-ins…" button may not appear. - [Does BusyCal support Push sync for Google Calendar?](/docs/faqs/130875-does-busycal-support-push-sync-for-google-calendar.md): BusyCal v2022.3.1 upwards supports Push sync for Google Calendar. - [BusyContacts update stuck on Converting Database](/docs/faqs/130984-busycontacts-update-stuck-on-converting-database.md): This appears to be due to a bug in how migration is handled by macOS. - [Why BusyCal Uses iCloud Credentials Instead of Local Access](/docs/faqs/132655-why-does-busycal-require-icloud-credentials-and-not-use-local-calendar-access.md): BusyCal uses CalDAV for direct iCloud synchronization to access advanced calendar features and metadata that aren't available through Apple's local Calendar SDK. - [The badge count on the iOS app won't refresh](/docs/faqs/133435-the-badge-count-on-the-ios-app-won-t-refresh.md): There can be a number of reasons why the badge count won't refresh. - [Tags I delete in BusyCal come back after a few minutes](/docs/faqs/134227-tags-i-delete-in-busycal-come-back-after-a-few-minutes.md): Tags will continue to re-appear if they're being used by one or more events that are syncing in - deleting a tag sadly does not delete it from all existing events that use them. - [Office 365 Connectivity Problems](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md): Learn about Office 365 Connectivity Problems in BusyCal and BusyContacts. - [I see "Installation Failed" error when running the installer](/docs/faqs/135288-i-see-installation-failed-error-when-running-the-installer.md): Learn about I see "Installation Failed" error when running the installer in BusyCal and BusyContacts. - [Unable to connect my Google account](/docs/faqs/137727-unable-to-connect-my-google-account.md): There can be a variety of reasons why you may be unable to connect to your Google Calendar / Contacts account. - [Why does my inbox show that a change was made by an Unknown Person?](/docs/faqs/138188-why-does-my-inbox-show-that-a-change-was-made-by-an-unknown-person.md): Understand why does my inbox show that a change was made by an Unknown Person in BusyCal and BusyContacts. - [Two week widget appears blank](/docs/faqs/138539-two-week-widget-appears-blank.md): Learn about Two week widget appears blank in BusyCal and BusyContacts. - [Cannot add multiple alarms to events on Exchange / O365](/docs/faqs/139601-cannot-add-multiple-alarms-to-events-on-exchange-o365.md): Learn about Cannot add multiple alarms to events on Exchange / O365 in BusyCal and BusyContacts. - [Events from Microsoft Bookings not showing in BusyCal](/docs/faqs/141078-events-from-microsoft-bookings-not-showing-in-busycal.md): Office 365 accounts syncing via Exchange Web Services (EWS) do not support Microsoft Bookings. Use the Office 365 (Microsoft Graph) account type for Bookings support. - [Does BusyCal sync Settings between multiple devices?](/docs/faqs/143538-does-busycal-sync-settings-between-multiple-devices.md): Yes. BusyCal syncs Mac app/view settings plus CloudKit data (accounts, color tags, and calendar sets) with platform-specific calendar set rules. - [Does BusyCal have access to my calendars / events?](/docs/faqs/143979-does-busycal-have-access-to-my-calendars-events.md): Absolutely not. We have no access to any data or information you store within our apps. In fact, we do not even know who's using the app. - [How does BusyCal receive and show Inbox invitations?](/docs/faqs/144514-how-does-busycal-receive-and-show-inbox-invitations.md): Invitations in iCloud, Google Calendar, Exchange, and Outlook are primarily managed at the account level. When someone sends an invite, it can be delivered in two main ways: as a direct update to your calendar account (common for users on the same service such as Google Calendar or using CalDAV-compatible platforms) or as an email with an `.ics` attachment. - [Why are there two processes for BusyCal? BusyCal and BusyCal Menu](/docs/faqs/144653-why-are-there-two-processes-for-busycal-busycal-and-busycal-menu.md): Understand why are there two processes for BusyCal? BusyCal and BusyCal Menu in BusyCal and BusyContacts. - [Google Calendar showing Birthdays in main calendar](/docs/faqs/144716-google-calendar-showing-birthdays-in-main-calendar.md): This appears to be a bug in Google Calendar that they introduced recently, causing birthdays to erroneously show up in 3rd party apps but not within Google Calendar. - [Todoist Login Screen Is Blank in BusyCal iOS](/docs/faqs/153671-todoist-login-blank-screen-in-busycal-ios.md): If Todoist sign-in shows a blank screen while connecting Todoist in BusyCal for iPhone/iPad, this article walks through the most common fix and what to send support. - [Why do I see two BusyCal widgets in the macOS widget picker?](/docs/faqs/155032-duplicate-busycal-widgets-in-widget-picker.md): Duplicate BusyCal entries in the macOS widget picker are almost always caused by iPhone widgets being mirrored onto the Mac. Turn off 'Use iPhone widgets' to keep only the native Mac widget. - [Why do I see duplicate events from a shared calendar and my own calendar?](/docs/faqs/155263-why-do-i-see-duplicate-events-from-a-shared-calendar.md): When the same event appears on a shared calendar and on a calendar you own — for example a meeting invite that landed on two of your accounts, or an event on a calendar shared with you that also exists on a calendar you own — turn on View > Combine Identical Events in BusyCal to display only the most appropriate copy. - [How do I remove a file attachment from an event or task?](/docs/faqs/157364-how-do-i-remove-a-file-attachment-from-an-event.md): There is no trash or remove button next to an attached file in the BusyCal Info Panel. To remove the attachment, click the pop-up menu next to "attached" and choose None. You do not need to delete and recreate the event or task. - [How to upgrade BusyCal](/docs/faqs/71143-how-to-upgrade-busycal.md): You may upgrade from BusyCal 2 to BusyCal's latest version as follows: - [Unable to Log Into iCloud: Password Incorrect Prompts](/docs/faqs/71150-unable-to-log-into-icloud-i-m-seeing-password-incorrect-prompts.md): If your iCloud sync is failing or not working in BusyCal or BusyContacts, it's likely due to app-specific password issues. Apple requires all third-party apps to use app-specific passwords instead of your regular iCloud password. When iCloud sync fails or displays error codes, it's often because this password is incorrect, expired, or was automatically revoked after you changed your main iCloud password. Learn how to fix iCloud sync failures by generating a new app-specific password. - [Can I download old versions of BusyCal and BusyContacts?](/docs/faqs/71151-can-i-download-old-versions-of-busycal-and-busycontacts.md): Following is a list of the current and past releases of BusyCal and BusyContacts. - [Selecting a Cloud Syncing Service](/docs/faqs/71160-selecting-a-cloud-syncing-service.md): In order to sync calendars and contacts between all of your devices, or to share calendars and contacts with others, you must sync BusyCal and BusyContacts with a server. BusyCal and BusyContacts are compatible with CalDAV, CardDAV and Exchange servers. - [How to set BusyCal and BusyContacts as the default apps](/docs/faqs/71161-how-to-set-busycal-and-busycontacts-as-the-default-apps.md): You may set BusyCal and BusyContacts as the default apps as follows: - [Does BusyCal support location based travel time alarms?](/docs/faqs/71163-does-busycal-support-location-based-travel-time-alarms.md): Yes, BusyCal supports location based travel time alarms. - [Importing from Now Up-to-Date and Now Contact](/docs/faqs/71167-importing-from-now-up-to-date-and-now-contact.md): If you are a former NUD/NCT user and would like to migrate your data to BusyCal and BusyContacts, this article explains how. - [How do I add my LinkedIn account to BusyContacts?](/docs/faqs/71170-how-do-i-add-my-linkedin-account-to-busycontacts.md): Learn how do I add my LinkedIn account to BusyContacts in BusyCal and BusyContacts. - [Why does BusyCal launch when I snooze or dismiss an alarm?](/docs/faqs/71171-why-does-busycal-launch-when-i-snooze-or-dismiss-an-alarm.md): In BusyCal versions prior to 2026.1.2, snoozing or dismissing alarms could launch the main BusyCal app. Updating to 2026.1.2 or later resolves this. - [How can I avoid duplicate alarms from being displayed?](/docs/faqs/71172-how-can-i-avoid-duplicate-alarms-from-being-displayed.md): macOS Calendar, Reminders, and BusyCal can each display alarms for your Events and Tasks. You should disable the alerts for macOS Calendar and Reminders to prevent receiving two alarms for every event — one displayed by macOS Calendar or Reminders and another displayed by BusyCal. - [Trademarks and Open Source Acknowledgements](/docs/faqs/71173-trademarks-and-open-source-acknowledgements.md): Learn about Trademarks and Open Source Acknowledgements in BusyCal and BusyContacts. - [How do I uninstall BusyContacts?](/docs/faqs/71175-how-do-i-uninstall-busycontacts.md): Learn how do I uninstall BusyContacts in BusyCal and BusyContacts. - [How do I uninstall BusyCal?](/docs/faqs/71176-how-do-i-uninstall-busycal.md): Learn how do I uninstall BusyCal in BusyCal and BusyContacts. - [Why Events Could Not Be Stored to the Server](/docs/faqs/71177-why-do-i-get-an-error-stating-that-the-following-events-could-not-be-stored-to-the-server.md): BusyCal may display an alert stating that the following events could not be stored to the server. - [Why does BusyCal need access to Contacts?](/docs/faqs/71180-why-does-busycal-need-access-to-contacts.md): BusyCal requires permission to access your Me Card in Apple Contacts for creating and responding to meeting invitations. It also requires access to your Contacts for displaying Birthdays and Anniversaries in your calendar. - [Why does a red badge appear on the BusyCal icon?](/docs/faqs/71181-why-does-a-red-badge-appear-on-the-busycal-icon.md): The BusyCal Inbox displays notifications of meeting invites or changes to existing events. You can accept / decline or ignore (delete) notifications directly from the Inbox. - [Does BusyContacts support Exchange Global Address Lists (GAL)?](/docs/faqs/71182-does-busycontacts-support-exchange-global-address-lists-gal.md): BusyContacts does not support Exchange GAL. - [How do I clean up duplicate contacts in BusyContacts?](/docs/faqs/71184-how-do-i-clean-up-duplicate-contacts-in-busycontacts.md): If you are syncing with multiple services, you are likely to have duplicate cards for many of your contacts. - [How do I remove the shared Family calendars from BusyCal?](/docs/faqs/71185-how-do-i-remove-the-shared-family-calendars-from-busycal.md): When you enable iCloud Family Sharing, two shared calendars named "Family" will appear in BusyCal's sidebar. One is an Event calendar and the other is a To Do calendar (the To Do calendar has a checkmark √ next to its name and syncs with the Reminders app on iCloud and iOS). These calendars are automatically created by iCloud and shared with all family members. - [How can I change the colors in BusyCal?](/docs/faqs/71186-how-can-i-change-the-colors-in-busycal.md): You can change the colors of events in BusyCal using calendars or tags. - [What email apps is BusyCal compatible with?](/docs/faqs/71187-what-email-apps-is-busycal-compatible-with.md): BusyCal and BusyContacts can send messages using Apple Mail and several other third-party mail clients. - [Does BusyCal support Google Hangouts?](/docs/faqs/71188-does-busycal-support-google-hangouts.md): Google Hangouts has been retired. BusyCal supports Google Meet links on Google calendars. - [What email apps is BusyContacts compatible with?](/docs/faqs/71189-what-email-apps-is-busycontacts-compatible-with.md): BusyContacts displays mail messages in the Activity List sent to/from the selected contact. Currently, only messages from Apple Mail or MailMate are supported. - [How can I change the colors in BusyContacts?](/docs/faqs/71190-how-can-i-change-the-colors-in-busycontacts.md): You can change the color of contacts in BusyContacts using Address Book colors or Tag colors. - [How to downgrade from BusyCal 3 to BusyCal 2](/docs/faqs/74938-how-to-downgrade-from-busycal-3-to-busycal-2.md): You can downgrade from BusyCal 3 to BusyCal 2 as follows: - [Why does BusyCal require access to Location Services?](/docs/faqs/77690-why-does-busycal-require-access-to-location-services.md): BusyCal requires access to location services for Weather, Travel Time and Time to Leave Alarms. - [How to update BusyCal and BusyContacts](/docs/faqs/79328-how-to-update-busycal-and-busycontacts.md): You may update to the latest version of BusyCal and BusyContacts or simply re-install it on a new mac as follows: - [BusyCal / BusyContacts crashing on launch. Corrupt database.](/docs/faqs/93133-busycal-busycontacts-crashing-on-launch-corrupt-database.md): Learn about BusyCal / BusyContacts crashing on launch. Corrupt database. in BusyCal and BusyContacts. - [Google Hangouts video call links appear in notes field](/docs/faqs/94535-google-hangouts-video-call-links-appear-in-notes-field.md): Learn about Google Hangouts video call links appear in notes field in BusyCal and BusyContacts. - [Why Can't I See My Events in BusyCal? Calendar Suddenly Empty](/docs/faqs/98754-i-cannot-see-any-of-my-events-in-busycal-my-calendar-is-suddenly-empty.md): Understand why Can't I See My Events in BusyCal? Calendar Suddenly Empty in BusyCal and BusyContacts. - [Does BusyCal iOS support syncing attachments?](/docs/faqs/98756-does-busycal-ios-support-syncing-attachments.md): Learn about Does BusyCal iOS support syncing attachments in BusyCal and BusyContacts. - [How do I sync Tags between my devices?](/docs/faqs/98757-how-do-i-sync-tags-between-my-devices.md): Learn how do I sync Tags between my devices in BusyCal and BusyContacts. - [BusyContacts did not download any photos after adding a new account](/docs/faqs/98760-busycontacts-did-not-download-any-photos-after-adding-a-new-account.md): Learn about BusyContacts did not download any photos after adding a new account in BusyCal and BusyContacts. - [Does BusyCal support creating different views of the same data?](/docs/faqs/98761-does-busycal-support-creating-different-views-of-the-same-data.md): Learn about Does BusyCal support creating different views of the same data in BusyCal and BusyContacts. - [Birthdays / Anniversaries are not showing up](/docs/faqs/98762-birthdays-anniversaries-are-not-showing-up.md): Check contact date labels, the selected contact source, and Show Dates settings when birthdays or anniversaries are missing from BusyCal. - [Will BusyTodo be updated for iOS?](/docs/faqs/98763-will-busytodo-be-updated-for-ios.md): Learn about Will BusyTodo be updated for iOS in BusyCal and BusyContacts. - [Default calendar for Todos shows all listed calendars grayed out](/docs/faqs/98764-default-calendar-for-todos-shows-all-listed-calendars-grayed-out.md): Calendars are type-specific. Each calendar may contain either Events or Tasks, but not both. - [Can I sync with Exchange?](/docs/faqs/98765-can-i-sync-with-exchange.md): BusyCal and BusyContacts are compatible with Exchange 2007 SP3 and later, but BusyMac recommends Exchange 2013, which is more reliable than older versions. - [Does BusyContacts support printing the phone list?](/docs/faqs/98766-does-busycontacts-support-printing-the-phone-list.md): BusyContacts currently only prints labels and envelopes. - [Does BusyContacts support file attachments?](/docs/faqs/98768-does-busycontacts-support-file-attachments.md): Learn about Does BusyContacts support file attachments in BusyCal and BusyContacts. - [Why BusyCal iOS Sometimes Creates Timed All-Day Events](/docs/faqs/98769-why-does-busycal-on-ios-create-all-day-events-at-times-and-other-times-not.md): By default, BusyCal for iOS creates new events using natural language. - [How do I merge multiple calendars into a single calendar in BusyCal?](/docs/faqs/98770-how-do-i-merge-multiple-calendars-into-a-single-calendar-in-busycal.md): You can merge multiple calendars into a single calendar by exporting calendar A and importing it into calendar B. - [How do I add Google resources as locations in BusyCal?](/docs/faqs/98771-how-do-i-add-google-resources-as-locations-in-busycal.md): BusyCal supports Google Workspace meeting rooms directly from the Info Panel. You can also add any Google resource as an attendee manually. - [How can I hide a calendar without deleting it?](/docs/faqs/98772-how-can-i-hide-a-calendar-without-deleting-it.md): To hide a calendar from view without deleting it, you can unsubscribe from it by double-clicking on the calendar in the left sidebar to show the Calendar Info dialog and click the Unsubscribe button. Then choose Hide Unsubscribed Calendars from the View menu to hide it from view. - [Tags in BusyContacts are appearing as records in Google Contacts](/docs/faqs/98773-tags-in-busycontacts-are-appearing-as-records-in-google-contacts.md): Tags in BusyContacts do not sync with Groups in Google Contacts. BusyContacts Tags only sync with iCloud and Exchange. - [How can I convert an event into a todo or vice-versa?](/docs/faqs/98774-how-can-i-convert-an-event-into-a-todo-or-vice-versa.md): BusyCal allows you to easily convert Tasks to Events and visa-versa. - [I cannot log into my Yahoo account, it says my password is incorrect](/docs/faqs/98776-i-cannot-log-into-my-yahoo-account-it-says-my-password-is-incorrect.md): BusyCal or BusyContacts is unable to sync with your Yahoo account because it now requires that third-party apps use an app-specific password to sync with your Yahoo account. Your standard Yahoo password will not work. - [How do I migrate from an old computer to a new computer?](/docs/faqs/98887-how-do-i-migrate-from-an-old-computer-to-a-new-computer.md): BusyCal or BusyContacts can be installed on up to 5 computers that you own, using the same registration code. - [BusyContacts Address Book Suddenly Empty](/docs/faqs/98896-i-cannot-see-any-of-my-contacts-in-busycontacts-my-address-book-is-suddenly-empty.md): Learn about I cannot see any of my contacts in BusyContacts, my address book is suddenly empty in BusyCal and BusyContacts. - [What does the BusyCal Menu app do?](/docs/faqs/98954-what-does-the-busycal-menu-app-do.md): BusyCal Menu is a helper app in the macOS menu bar for quickly viewing your calendar, upcoming events, and alarms. - [Weather in BusyCal is not showing](/docs/faqs/98957-weather-in-busycal-is-not-showing.md): The weather feature requires access to location services as well as the internet. - [How to Access Pre-Release Versions of BusyCal/BusyContacts](/docs/faqs/98958-how-can-i-get-access-to-a-pre-release-version-of-busycal-busycontacts.md): You can take part in beta testing voluntarily by enabling it in Settings - [Why can't I assign a To do to a particular calendar?](/docs/faqs/98959-why-can-t-i-assign-a-to-do-to-a-particular-calendar.md): Calendars are type-specific. Each calendar may contain either Events or Tasks, but not both. - [Is there a BusyContacts version for iOS?](/docs/faqs/98962-is-there-a-busycontacts-version-for-ios.md): Unfortunately not. We do not currently have any plans of bringing BusyContacts to iOS - [Will there be further upgrades to BusyCal 2](/docs/faqs/98966-will-there-be-further-upgrades-to-busycal-2.md): We will no longer be updating BusyCal 2. You may upgrade from BusyCal 2 to BusyCal 3 at any time. - [Any plans for a Windows OS version?](/docs/faqs/98967-any-plans-for-a-windows-os-version.md): Learn about Any plans for a Windows OS version in BusyCal and BusyContacts. - [Does BusyCal Sync With OmniFocus, 2Do, or Other Apps?](/docs/faqs/98979-does-busycal-support-syncing-with-other-apps-such-as-omnifocus-and-2do.md): BusyCal has built-in support for CalDAV and WebDAV servers & subscriptions, and by extension supports any third party app that supports the same. - [Can events be paused?](/docs/faqs/99012-can-events-be-paused.md): An event normally has a start / end date and as such cannot be paused. However you can choose to hide events. - [Does BusyCal iOS support adding contacts to events?](/docs/faqs/99063-does-busycal-ios-support-adding-contacts-to-events.md): Learn about Does BusyCal iOS support adding contacts to events in BusyCal and BusyContacts. - [Day/Week view keeps zooming when I scroll (timeline zoom)](/docs/faqs/accidental-timeline-zoom-when-scrolling.md): Learn about Day/Week view keeps zooming when I scroll (timeline zoom) in BusyCal and BusyContacts. - [Does BusyCal/BusyContacts work with iCloud Advanced Data Protection?](/docs/faqs/advanced-data-protection-icloud.md): BusyCal and BusyContacts work normally with iCloud Advanced Data Protection (ADP) enabled. - [Why Don't Alarm Dismissals Sync Across My Devices?](/docs/faqs/alarm-dismissals-not-syncing-across-devices.md): Learn why alarm dismissals may not sync between devices and understand the limitations with recurring events, meetings, tasks, and certain services. - [Why Does the Alarm Sound Name Change After Syncing?](/docs/faqs/alarm-sound-not-syncing-across-devices.md): Learn why the alarm sound name shown on a task or event may differ between devices, and how BusyCal handles alarm sounds locally. - [Why is my iCloud account showing only read only calendars?](/docs/faqs/apple-calendar-read-only.md): Understand why is my iCloud account showing only read only calendars in BusyCal and BusyContacts. - [Do BusyCal and BusyContacts support AppleScript?](/docs/faqs/applescript-support.md): Information about AppleScript support in BusyCal and BusyContacts - [Why BusyCal/BusyContacts Launch at Startup or Launch Each Other](/docs/faqs/apps-launch-at-startup.md): Understand why BusyCal and BusyContacts launch at startup and why they sometimes launch each other automatically. - [Availability Viewer Shows Busy All Day (Microsoft 365)](/docs/faqs/availability-viewer-shows-busy-all-day.md): Learn about Availability Viewer shows someone as busy all day (Microsoft 365 / Outlook) in BusyCal and BusyContacts. - [Can BusyCal show the Alarm window on all monitors or desktop spaces?](/docs/faqs/busycal-alarm-window-all-desktop-spaces.md): Learn how BusyCal's Show in all desktop spaces setting keeps the Alarm window visible across macOS Spaces, and what it means when using multiple monitors. - [Does BusyCal for iOS support Live Activities for upcoming events?](/docs/faqs/busycal-ios-live-activities.md): BusyCal for iOS does not yet offer a Live Activity for your next event. Here is why it hasn't shipped, and how Lock Screen and Home Screen widgets show your upcoming events today. - [BusyCal Top FAQs (Quick Links)](/docs/faqs/busycal-top-faqs.md): Learn about BusyCal Top FAQs (Quick Links) in BusyCal and BusyContacts. - [BusyContacts is no longer showing Apple Mail activity after an update](/docs/faqs/busycontacts-apple-mail-activity-missing-after-update.md): If Apple Mail messages stopped appearing in BusyContacts after an update, confirm you're using the Mail extension flow (not the legacy Mail plug-in). - [BusyContacts: iCloud China (icloud.com.cn) sync issues](/docs/faqs/busycontacts-icloud-china-sync.md): If your Apple ID uses iCloud China (icloud.com.cn), BusyContacts must connect to the China CardDAV endpoint (contacts.icloud.com.cn). - [BusyContacts: iCloud says "Service is currently unavailable"](/docs/faqs/busycontacts-icloud-service-unavailable.md): If BusyContacts can’t sync with iCloud Contacts and iCloud reports “Service is currently unavailable”, try these troubleshooting steps. - [BusyContacts: iCloud rejected changes because a tag/group is too large](/docs/faqs/busycontacts-icloud-tag-group-too-large.md): iCloud has a maximum contact group (group vCard) size. Very large BusyContacts Tags (mapped to iCloud Groups) can exceed this limit and iCloud will reject the update. - [BusyContacts is not showing iMessage / Messages activity](/docs/faqs/busycontacts-imessage-activity-not-showing.md): If iMessage (Messages.app) conversations are not appearing in BusyContacts' Activity List, this is expected on modern macOS due to system privacy restrictions. - [Why does S/MIME stop working when BusyContacts Mail Assistant is enabled?](/docs/faqs/busycontacts-mail-assistant-smime-conflict.md): BusyContacts Mail Assistant and Apple Mail's built-in S/MIME encryption cannot currently be used at the same time. - [Deploying BusyContacts via MDM or Scripted Installation](/docs/faqs/busycontacts-mdm-installation.md): Learn about deploying BusyContacts via MDM or scripted installation. - [Messages "Add Contact" opens Apple Contacts (not BusyContacts)](/docs/faqs/busycontacts-messages-add-contact-opens-apple-contacts.md): macOS Messages.app is hard-wired to create contacts in Apple Contacts. BusyContacts cannot replace that flow, but there are good workarounds. - [Why does BusyContacts show Name Order when I disabled it?](/docs/faqs/busycontacts-name-order-field-still-visible.md): BusyContacts may show the Name Order field when a contact has its own saved name order, even if the field is disabled in Info Panel settings. - [Why does New Card open Quick Contact instead of a blank contact?](/docs/faqs/busycontacts-new-card-opens-quick-contact.md): BusyContacts opens Quick Contact instead of a blank contact when a Smart Filter is active. Switch to the unfiltered contact list to restore the usual New Card behavior. - [BusyContacts is not syncing with Apple Contacts or iPhone](/docs/faqs/busycontacts-not-syncing-with-apple-contacts-or-iphone.md): BusyContacts syncs with Apple Contacts and iPhone through your cloud account (iCloud/Google/Exchange/CardDAV). Local “On My Mac” contacts do not sync. - [BusyContacts Phone Numbers Displayed Incorrectly](/docs/faqs/busycontacts-phone-display-format.md): If phone numbers appear with unexpected spaces, parentheses, dashes, or country codes, adjust the Phone Format For Display setting. This affects display only and does not change your stored phone number. - [Why does nothing happen when I choose Send Email in BusyContacts?](/docs/faqs/busycontacts-send-email-does-nothing.md): If Send Email does nothing or opens the wrong app in BusyContacts, check which app is set as your Mac's default email reader. - [BusyContacts (Setapp) Issues on Older macOS Versions](/docs/faqs/busycontacts-setapp-old-macos-issues.md): If you're using BusyContacts via Setapp on an older macOS version (e.g. Big Sur), updates may introduce compatibility issues. Here are safe recovery options. - [macOS Sonoma: BusyContacts Mail Plug-in Not Allowed](/docs/faqs/busycontacts-sonoma-mail-plugin-not-allowed.md): On newer macOS versions, the legacy BusyContacts Apple Mail plug-in is no longer supported. Use the BusyContacts Mail Assistant extension instead (macOS 12+). - [BusyContacts Top FAQs](/docs/faqs/busycontacts-top-faqs.md): The most common BusyContacts questions from customer support, with direct links to the relevant docs and FAQs. - [Calendar colors keep reverting (or change on other devices)](/docs/faqs/calendar-colors-keep-reverting.md): Learn about Calendar colors keep reverting (or change on other devices) in BusyCal and BusyContacts. - [Why does my calendar's name appear as a guest after I move a meeting?](/docs/faqs/calendar-name-appears-as-guest-after-moving-meeting.md): After you move a Google meeting invitation to another calendar, that calendar's name shows up as an extra guest. Here is why Google adds it and why you should leave it in place. - [Calendar Selection Resets After Relaunch](/docs/faqs/calendar-selection-reverts-after-every-launch.md): Learn about Calendar selection reverts and does not remember my selection after I quit and relaunch in BusyCal and BusyContacts. - [How do I stop spam calendar invitations?](/docs/faqs/calendar-spam-invitations.md): Spam or phishing events appearing on your calendar are added by the calendar server, not by BusyCal. Learn how to report, remove, and prevent spam invitations on Google Calendar, iCloud, Outlook, and other services. - [Calendars are greyed out or context-menu options are disabled](/docs/faqs/calendars-greyed-out-and-disabled.md): Learn about Calendars are greyed out or context-menu options are disabled in BusyCal and BusyContacts. - [Can I change the widget to always appear in light mode?](/docs/faqs/can-i-change-widget-to-always-appear-in-light-mode.md): BusyCal widgets follow the system appearance. The app’s appearance setting does not force widgets to stay in light mode. - [Day/Week View shows only working hours](/docs/faqs/day-week-view-missing-hours.md): Learn about Day/Week View shows only working hours in BusyCal and BusyContacts. - [Daylight shading is missing in Week view](/docs/faqs/daylight-shading-missing-in-week-view.md): Learn about Daylight shading is missing in Week view in BusyCal and BusyContacts. - [How do I declutter Day & Week View?](/docs/faqs/declutter-day-week-view.md): Learn how do I declutter Day & Week View in BusyCal and BusyContacts. - [How do I disable “Suggestions” while typing?](/docs/faqs/disable-event-suggestions.md): Learn how do I disable “Suggestions” while typing in BusyCal and BusyContacts. - [Does BusyCal support Calendly?](/docs/faqs/does-busycal-support-calendly.md): BusyCal does not directly integrate with Calendly, but bookings made through Calendly appear in BusyCal through your synced calendar account. BusyCal for Mac also has its own booking pages, BusyCal Bookings. - [Google Sync Error 403: Rate Limit Exceeded](/docs/faqs/google-403-rate-limit.md): Troubleshooting Google Calendar sync error 403 or "Rate Limit Exceeded". - [Google Birthdays in Primary Calendar or Birthdays Calendar Missing](/docs/faqs/google-birthdays-showing-in-primary-calendar.md): Learn about Google birthdays are showing in my Primary calendar (or the Birthdays calendar is missing) in BusyCal and BusyContacts. - [Why does Google Calendar keep adding alarms to my events?](/docs/faqs/google-calendar-adding-unwanted-default-alarms.md): If alarms keep appearing on Google Calendar events even after you turn off default alarms in BusyCal and Apple Calendar, Google Calendar's own per-calendar default notification setting is likely the cause. - [Google Calendar Limitations with BusyCal](/docs/faqs/google-calendar-limitations.md): Common limitations and restrictions when using BusyCal with Google Calendar, including time zone differences, task property syncing, alarms, and feature compatibility. - [How do I fix Google Calendar sync issues with BusyCal?](/docs/faqs/google-calendar-sync-issues-troubleshooting.md): Resolve Google Calendar sync problems, authentication failures, and connection issues with BusyCal for Mac and iOS. Step-by-step troubleshooting guide for common Google sync errors. - [Google Tasks sync fails with “Insert failed with no result”](/docs/faqs/google-tasks-insert-failed.md): Learn about Google Tasks sync fails with “Insert failed with no result” in BusyCal and BusyContacts. - [Google Workspace “Space” / assigned tasks don’t sync](/docs/faqs/google-workspace-space-tasks-not-syncing.md): Learn about Google Workspace “Space” / assigned tasks don’t sync in BusyCal and BusyContacts. - [How can I hide meeting invitations from one calendar?](/docs/faqs/hide-meeting-invitations-from-calendar.md): Keep a calendar's events visible in BusyCal while handling its invitations in Outlook or another calendar app. - [How do I change dark mode and appearance settings?](/docs/faqs/how-do-i-change-dark-mode-settings.md): Learn how to change between dark mode, light mode, and automatic appearance in BusyCal and BusyContacts. Control white background color and screen brightness settings. - [How do I fix "locked files" error when installing from DMG?](/docs/faqs/how-to-fix-locked-files-error-when-installing-dmg.md): Learn how to resolve the macOS Finder "locked files" error when installing BusyCal or BusyContacts from a DMG file by dragging to Applications folder. - [Managing Recurring Tasks](/docs/faqs/how-to-manage-recurring-tasks.md): Understand how recurring tasks regenerate in BusyCal and choose the right style for your workflow. - [How can I share minimal set of logs](/docs/faqs/how-to-send-minimal-logs.md): Share minimal amount of logs for troubleshooting - [How do I delete (not just hide) a subscribed calendar?](/docs/faqs/how-to-unsubscribe-or-delete-subscribed-calendars.md): Learn how do I delete (not just hide) a subscribed calendar in BusyCal and BusyContacts. - [iCloud Login Errors (-1012 and others)](/docs/faqs/icloud-login-errors.md): Troubleshooting common iCloud login errors in BusyCal, including error -1012. - [Info Panel Field Missing (Tags, Attendees, Travel Time)](/docs/faqs/info-panel-fields-missing.md): Learn about A field is missing from the Info Panel (Tags, Attendees, Travel Time, etc.) in BusyCal and BusyContacts. - [Why BusyCal Background Sync Is Limited on iOS](/docs/faqs/ios-background-sync-limits.md): Understand why doesn't BusyCal sync immediately or frequently in the background on iOS in BusyCal and BusyContacts. - [How do I stop BusyCal from adding the country to every address?](/docs/faqs/location-country-added-automatically.md): When you add an address to an event's Location, BusyCal appends the country (for example "United States"). This is because BusyCal resolves addresses through Apple Maps, which treats the country as part of a complete address. - [Why does a long Banner appear below other Banners on later days?](/docs/faqs/long-banner-appears-below-other-banners.md): Why a Banner that spans weeks or months can appear below other Banners on later days in BusyCal. - [Why isn't my @mac.com email address working with iCloud sync?](/docs/faqs/mac-domain-icloud-sync.md): Learn why @mac.com email addresses may have issues syncing with iCloud in BusyCal and BusyContacts, and how to fix it by using @icloud.com instead. - [macOS shows "Support Ending for Intel-based Apps" when launching BusyCal or BusyContacts](/docs/faqs/macos-support-ending-for-intel-based-apps-warning.md): BusyCal and BusyContacts are Universal apps and run natively on Apple silicon. The macOS warning about Intel-based apps can still appear when an internal helper component is detected as Intel-only — it's safe to ignore, and we'll address it in an upcoming update. - [Deploying BusyCal via MDM or Scripted Installation](/docs/faqs/mdm-installation.md): Learn about Deploying via MDM or Scripted Installation in BusyCal and BusyContacts. - [Troubleshooting Meeting Invitation Issues](/docs/faqs/meeting-invitation-faqs.md): Learn about Troubleshooting Meeting Invitation Issues in BusyCal and BusyContacts. - [A meeting invite disappears after I move it to another calendar](/docs/faqs/meeting-invite-disappears-after-moving.md): Learn about A meeting invite disappears after I move it to another calendar in BusyCal and BusyContacts. - [Microsoft 365 / Outlook events are not updating in BusyCal](/docs/faqs/microsoft-365-events-not-updating.md): Learn about Microsoft 365 / Outlook events are not updating in BusyCal in BusyCal and BusyContacts. - [Microsoft 365 Group Calendars don’t show up (Microsoft Graph)](/docs/faqs/microsoft-graph-group-calendars-not-showing.md): Learn about Microsoft 365 Group Calendars don’t show up (Microsoft Graph) in BusyCal and BusyContacts. - [Why is the first Microsoft Graph sync taking so long?](/docs/faqs/microsoft-graph-initial-sync-taking-a-long-time.md): Learn why a large Microsoft 365 or Outlook calendar can take hours to finish its first sync in BusyCal for Mac, iPhone, or iPad. - [The “Add Microsoft Teams meeting” option is missing](/docs/faqs/microsoft-teams-add-meeting-missing.md): Learn about The “Add Microsoft Teams meeting” option is missing in BusyCal and BusyContacts. - [No scroll bar in Month View](/docs/faqs/month-view-no-scroll-bar.md): Learn about No scroll bar in Month View in BusyCal and BusyContacts. - [Month View jumps to the week row when I click Today](/docs/faqs/month-view-today-button-behavior.md): Learn about Month View jumps to the week row when I click Today in BusyCal and BusyContacts. - [Why is “Move to iCloud” missing in BusyCal?](/docs/faqs/move-to-icloud-missing.md): Learn when BusyCal for Mac shows Move to iCloud and how to copy a Fruux or other server calendar to iCloud. - [How do I control automatic link and phone number detection in the Notes field?](/docs/faqs/notes-data-detectors-and-smart-links.md): BusyCal and BusyContacts can automatically turn phone numbers, URLs, and other data in the Notes field into clickable links. Learn how to turn this on or off using the Edit > Substitutions menu. - [Why are old Outlook emails appearing as tasks in BusyCal?](/docs/faqs/outlook-flagged-emails-appearing-as-tasks.md): Learn why old flagged Outlook emails can appear as overdue tasks in BusyCal and how to hide the Flagged Emails list on Mac, iPhone, or iPad. - [BusyCal Unable to Connect to Outlook Personal Accounts / Office 365](/docs/faqs/outlook-personal-account-connection-issue.md): Troubleshoot Outlook connections in BusyCal and distinguish current errors from the reported May 2025 personal-account incident. - [You don't have permission to modify events on the calendar Error](/docs/faqs/permission-modify-events-error.md): Learn about You don't have permission to modify events on the calendar Error in BusyCal and BusyContacts. - [Settings Reset After Quit: Fixing Corrupt Preferences](/docs/faqs/preferences-not-saving-corrupt-preference-file.md): If your BusyCal settings (like default view, days in week, or other preferences) keep reverting to defaults after quitting and relaunching the app, your preference file may be corrupted. This guide shows how to fix this issue for both the standard and Setapp versions of BusyCal. - [Quick Entry uses the wrong calendar](/docs/faqs/quick-entry-wrong-calendar.md): Learn about Quick Entry uses the wrong calendar in BusyCal and BusyContacts. - [Rich text notes are missing after exporting a contact or event](/docs/faqs/rich-text-notes-not-showing-after-export.md): Rich text notes in BusyContacts or BusyCal are stored separately from plain text notes and do not appear when a vCard or ICS file is opened in another app. Convert to plain text before exporting. - [How do I show equinox and solstice dates in BusyCal?](/docs/faqs/show-equinox-solstice-world-season-calendar.md): Learn how do I show equinox and solstice dates in BusyCal in BusyCal and BusyContacts. - [How do I show multiple time zones in Day/Week view?](/docs/faqs/show-multiple-time-zones.md): Learn how do I show multiple time zones in Day/Week view in BusyCal and BusyContacts. - [BusyCal Is Slow or Sluggish: How to Speed It Up](/docs/faqs/slow-and-sluggish-how-can-i-speed-it-up.md): If BusyCal or BusyContacts is running slow or freezing, capturing a CPU sample can help diagnose the issue. - [“Start week on” doesn’t change the leftmost day in Week view](/docs/faqs/start-week-on-does-not-align-week-view.md): Learn about “Start week on” doesn’t change the leftmost day in Week view in BusyCal and BusyContacts. - [A subscribed (WebDAV) calendar on my Mac isn’t showing on iPhone/iPad](/docs/faqs/subscribed-calendars-not-showing-on-iphone.md): Learn about A subscribed (WebDAV) calendar on my Mac isn’t showing on iPhone/iPad in BusyCal and BusyContacts. - [What Is the Sunrise/Sunset Button in Day/Week View?](/docs/faqs/sunrise-sunset-button-in-toolbar.md): Learn about What is the Sunrise/Sunset button in Day/Week view (and can I remove it) in BusyCal and BusyContacts. - [Tags are not syncing (or they disappear after sync)](/docs/faqs/tags-not-syncing-or-missing.md): Learn about Tags are not syncing (or they disappear after sync) in BusyCal and BusyContacts. - [Tasks added on iPhone/iPad don’t show up on the Mac](/docs/faqs/tasks-added-on-ios-not-showing-on-mac.md): Learn about Tasks added on iPhone/iPad don’t show up on the Mac in BusyCal and BusyContacts. - [Task Due Earlier Today Still Shows Under Today](/docs/faqs/tasks-due-time-still-shows-today.md): Learn about A task that was due earlier today still shows under “Today” (not “Overdue”) in BusyCal and BusyContacts. - [Tasks appear in the wrong order in Month View](/docs/faqs/tasks-order-in-month-view.md): Learn about Tasks appear in the wrong order in Month View in BusyCal and BusyContacts. - [Why can’t I select “bicycle” for Travel Time (Cycling)?](/docs/faqs/travel-time-bicycle-not-supported.md): Understand why can’t I select “bicycle” for Travel Time (Cycling) in BusyCal and BusyContacts. - [Why can't I delete the Reminders ⚠️ list in my iCloud account?](/docs/faqs/unable-to-delete-reminders-warning-list.md): After upgrading to the new Reminders app in iOS 13 or macOS Catalina, you may notice a "Reminders ⚠️" list that you cannot delete. This article explains why this happens and what you can do about it. - [Does BusyCal iOS support undoing actions?](/docs/faqs/undo-operation-on-ios.md): Learn about Does BusyCal iOS support undoing actions in BusyCal and BusyContacts. - [How do I use Siri with BusyCal?](/docs/faqs/using-siri-with-busycal.md): How to ask Siri to add events and tasks to BusyCal, check your schedule, and find free time on the Mac, iPhone, and iPad. - [Why does BusyContacts launch automatically?](/docs/faqs/why-busycontacts-launches.md): Explains why BusyContacts might open when you launch BusyCal and how to control this behavior. - [Widgets or Apple Watch show missing events](/docs/faqs/widgets-or-watch-missing-events.md): Fix missing BusyCal widget or Apple Watch items by checking the Widgets & Watch Calendar Set, task due dates, and refresh state. ### subscribe Subscribe to the BusyMac mailing list to receive news about updates, new features, and special offers. - [Mailing List](/docs/subscribe.md): Subscribe to the BusyMac mailing list to receive news about updates, new features, and special offers. --- # Full Documentation Content # About The busy bees 🐝 at Beehive create bee-utiful *Busy Apps!* Led by Fahad Gilani, the creator of the award-winning [2Do app](https://www.2doapp.com/) for macOS, iOS, and Android, Beehive has been buzzing with innovation since 2006. Drawing on decades of experience across firmware, software, and technical writing, Fahad remains dedicated to refining and enhancing our apps to meet the needs of our users. BusyCal and BusyContacts trace their origins to 2007, created by productivity software pioneers Dave Riggle and John Chaffee, who passed the torch in 2017. For the history buffs: back in the early '90s — long before Apple introduced iCal — they developed [*Now Up-to-Date*](https://en.wikipedia.org/wiki/Now_Software), a revolutionary [network calendar](https://www.macintoshrepository.org/84077-now-up-to-date-2-1-1) for Mac OS 7, and its companion app, [*Now Contact*](https://www.macintoshrepository.org/419-now-up-to-date-contact), which set the gold standard for calendar and contact management. *Now Software* later got [acquired by Qualcomm](https://www.qualcomm.com/news/releases/1997/11/qualcomm-incorporated-announces-acquisition-now-software). ![John & Dave at Macworld Expo 2009](https://downloads.busymac.com/resources/img/about.jpg) John & Dave at Macworld Expo 2009 Photo © Harris Fogel ![Macworld Eddy award for BusyCal](https://downloads.busymac.com/resources/img/busycal-mac/busymac_eddy_2.png) Macworld Editors' Choice · 2008 - 2009 ## Recognized From The Start In 2009, BusyCal 1.0 was named one of Macworld's *Editors' Choice* winners — an *Eddy* — in the magazine's 25th annual roundup of the year's best Mac software. Reviewers highlighted what set BusyCal apart from Apple's iCal: Google Calendar sync, shared local-network calendars, multi-person editing, rich notes, list views, embedded weather, and a host of thoughtful touches aimed squarely at power users. Macworld credited BusyCal with helping revive the Mac calendar category and establishing it as a category leader — a legacy we continue to build on today. [Read Macworld's 2009 Editors' Choice Awards write-up](https://www.macworld.com/article/201489/editorschoice2009.html). While much has changed since those early days, the need for powerful, user-friendly calendar and contact management solutions remains. Building on this legacy, BusyCal and BusyContacts have been refined and enhanced to become the ultimate tools for managing your schedule and connections on macOS and iOS. ###### Beehive Innovations FZE holds exclusive worldwide rights to Busy Apps, BusyMac, "Busy Mac" and 2Do. --- # Bookings Privacy Notice Effective date: October 1, 2026 Bookings lets you publish booking pages at [busybook.me](https://busybook.me) using BusyCal for Mac. A visitor chooses a time on your page and fills in a short form. The service emails a confirmation to the visitor and any guests they add, and sends you a booking notification. BusyCal adds the booking to your chosen calendar. Calendar invitations may come from Bookings, your calendar service, or both. These invitations can show your organizer email address to the invitee and their guests. Once BusyCal has added a booking to your calendar, the service removes its copy. Your calendar account handles later invitations and changes. This notice explains what the Bookings service stores, why it needs it, and how long it keeps it. In this notice, the **host** is the BusyCal user who turns Bookings on, and the **invitee** is the person who books a time on the host's page. ## When This Notice Applies[​](#scope "Direct link to When This Notice Applies") Bookings is included with BusyCal. To use it, turn it on in BusyCal's settings and accept the [Bookings Terms](/bookings-terms.md). BusyCal sends nothing to the Bookings service until you do. BusyCal on your iPhone, iPad, and other Macs that use the same iCloud account can then use Bookings too. BusyCal uses your iCloud account to let those devices sign in automatically. Bookings is separate from BusyCal's calendar syncing and never connects to your calendar accounts. Our [Privacy Policy](/privacy.md) covers calendar syncing and other BusyCal features. BusyCal handles events created from bookings like any other calendar events. ## Who Is Responsible for the Data[​](#roles "Direct link to Who Is Responsible for the Data") | Data | Who decides how it is used | Our role | | ------------------------------------------ | -------------------------- | -------------------------------------------- | | The host's own account data | We do | Controller | | The details an invitee enters when booking | The host | Processor, acting on the host's instructions | The host chooses what a booking page asks for and how to use the answers. The host is therefore responsible for the invitee's details. We store and process those details only to provide Bookings to the host. We are responsible for the host's account data, such as the email address used to sign in. We use it to provide the service, keep it secure, and prevent abuse. ## What We Store and Why[​](#data "Direct link to What We Store and Why") The tables below list what the service stores, why it needs it, and how long it keeps it. Most host account data stays while the account exists. Device and browser sign-ins, busy times, and bookings have the separate retention periods shown in their rows. Deleted data is removed from the live service immediately, with one exception. If you delete an invitee's details while a cancellation or decline email is waiting to be sent, those details are hidden immediately. They are removed once the email has been sent and any required update to the host's calendar is complete. If BusyCal does not complete that update, the details are removed one week after the meeting's start. Deleting your account ends access immediately. If you have upcoming bookings that BusyCal has not yet added to your calendar, or meeting requests, the service first sends cancellation or decline emails to the invitees. It then removes the account's data from the live service. If there are no such bookings or requests, it removes the data immediately. Meetings already in your calendar stay there. Log entries related to your account expire within 30 days. Backups are kept only to restore the service after a failure and are overwritten within 7 days. ### Host Account[​](#host-account "Direct link to Host Account") | Item | Why it is needed | How long it is kept | | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------- | | Email address | To sign you in with a one-time code, send you booking notifications, and recover your account | While your account exists | | One-time sign-in code | To confirm that you own the email address | Expires after 10 minutes | | Reply addresses you add for your pages, and their verification codes | Booking emails use your name and the shared sender address `bookings@busybook.me`. Replies go to your email address or the reply address you choose for that page. | While your account exists, or until you remove the address. An unverified address is removed after its code expires. | | Bookings access status: which license or subscription allows you to use the service, and when that access expires | To check whether you can use Bookings | While your account exists | | Public handle and display name | Shown on your booking pages | While your account exists | | Profile picture, if you upload one | Shown on your booking pages and in link previews | While your account exists, or until you remove it | | Logo, if you upload one | Shown on your booking pages | While your account exists, or until you remove it | | Each booking page's settings and text | To show your booking pages | While your account exists | | Each device's name, app version, and the information needed to keep it signed in and send it notifications | To list your devices, let you sign them out, and notify BusyCal of new bookings and changes | While that device stays signed in | | Sign-in information shared through your iCloud account | So your iPhone, iPad, and other Macs that use the same iCloud account can sign in without a code | Until you sign out of Bookings on a Mac, or until your account is deleted | | Browser information and sign-in details for your Bookings dashboard | To keep each browser signed in and let you sign it out from the dashboard | Until the browser signs out, or 90 days after it was last used. Browser sign-ins are separate from device sign-ins. | Invitees who reply to a booking email see your email address or the reply address you set for that page. ### Calendar Information[​](#calendar-information "Direct link to Calendar Information") BusyCal sends a list of calendars it can add bookings to, along with calendars already chosen for your booking pages. For each calendar, it sends the calendar type, account provider (such as Google or iCloud), available video call services, whether the account is turned on, and your access permissions. For calendars BusyCal can add bookings to, the list also includes the calendar's name and color and the account name shown in BusyCal. An account name may be an email address. When available, the list includes the email address used to identify you as the organizer in booking invitations. | Item | Why it is needed | How long it is kept | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Your calendar choices for booking pages and availability, including calendars you exclude, and the information needed to match those calendars across your devices | So your devices use the same calendar choices | While your account exists, or until you change the choice. A page's calendar choice is kept after you delete the page so its existing bookings can still be updated. | | Each device's calendar list, with the details described above | To let you choose each page's calendar and video service in your dashboard, and to stop new bookings when the calendar's account is turned off | Until a signed-in device sends a newer list, or until your account is deleted | | The organizer email address for each calendar in that list, when BusyCal has one. Each booking keeps the address in use when it was made. | To identify you as the organizer in invitations, updates, and cancellations from the service, and in the meeting BusyCal adds to your calendar | In the calendar list, until a signed-in device sends a newer list or your account is deleted. With a booking, until the booking is removed or your account is deleted. Deleting the invitee's details does not remove this address. | Only you see the calendar and account names and the calendar colors. They never appear on booking pages or in booking data. The organizer address appears in calendar invitations sent to the invitee and their guests, but never on booking pages. ### Busy Times[​](#busy-times "Direct link to Busy Times") | Item | Why it is needed | How long it is kept | | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | For each calendar used to check your availability: the start and end times of busy periods, and when BusyCal last updated them | To offer only free times on your booking pages and show when each calendar's busy times were last updated in your dashboard | Until a signed-in device sends that calendar's busy times again, you remove them in your Bookings dashboard, or your account is deleted. Signing out does not remove them. | BusyCal does not send event titles, locations, notes, or guest lists with these busy times. The [Calendar Information](#calendar-information) section describes the other calendar details it sends. ### Bookings[​](#bookings "Direct link to Bookings") | Item | Why it is needed | How long it is kept | | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------- | | The chosen time, booking page, and status (requested, confirmed, or cancelled) | To record the booking and add it to your calendar | Until the booking is removed, as described below | | The invitee's name and email address | To send the confirmation and invitation, and tell you who booked | Until the booking is removed, or sooner if you delete these details | | The invitee's phone number (if the page asks for it), answers to the page's questions, and message | To give you the details your booking page asks for | Until the booking is removed, or sooner if you delete these details | | Email addresses of any guests the invitee adds | To show you who is attending and email each guest the same calendar invitation the invitee receives | Until the booking is removed, or sooner if you delete these details | | The invitee's chosen language and 12-hour or 24-hour time format | To use those choices in emails to the invitee | Kept with the booking | | The video call link, if the page offers one (Zoom, Google Meet, Microsoft Teams, Webex, or Skype). BusyCal creates it through the service you connected in the app. | To include the link in an updated invitation to the invitee and guests, and show it on the confirmation page once the booking is confirmed | Until the booking is removed, or sooner if you delete the invitee's details | | Booking references used in email links | To open the right booking when someone follows a link | Kept with the booking | The service also uses invitee and guest email addresses to find their data when you ask to delete it. The service removes a booking and all the data in this table at the following points: * A confirmed booking is removed once BusyCal has added it to your calendar. * A declined or expired request is removed after its last email has been sent. * A request withdrawn by the invitee stays until you dismiss its notice in your Bookings dashboard. * A cancelled booking is removed once BusyCal has removed it from your calendar. If BusyCal does not finish updating your calendar, the service keeps the booking until one week after the meeting's start, then emails you and removes it. Meetings already added to your calendar remain under your control. The service keeps no copy of the meeting, only the records listed under [Service Records](#service-records). ### Service Records[​](#service-records "Direct link to Service Records") | Item | Why it is needed | How long it is kept | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | Pending emails and push notifications | To send them | Removed within 7 days after they are sent | | Service activity and error records, including references to accounts, bookings, and devices. These contain no names, email addresses, page text, or URLs. | To find and fix problems in the service | Expire within 30 days | | References to old booking forms and links, and the date each booking was removed. These records contain no details about the host, meeting, or invitee. | To prevent the same form from creating another booking and let old links show that the booking is no longer managed by the service | Kept permanently | | For each booking added to the host's calendar: its start and end times, including the page's buffer time. These are stored with the host's account and no other booking details. | To keep that time unavailable on the host's pages, even if the host moves or deletes the calendar event | Until that time has passed | | For each booking added to the host's calendar: its page and start time, with no other meeting or invitee details | To count it toward the page's daily, weekly, and monthly booking limits | Until 45 days after the start | ## Subprocessors[​](#subprocessors "Direct link to Subprocessors") Bookings uses these companies to run the service: | Subprocessor | What it does | Location | | ------------------- | ----------------------------------------------------------------------------------------------- | ------------- | | Amazon Web Services | Hosting, data storage, and email sending | United States | | Apple | Notifications that tell BusyCal to check for changes. They contain no names or booking details. | United States | Because the service is hosted in the United States, Bookings data is transferred to the United States and stored there. We announce any change to this list on this page. We do not sell Bookings data. ## Security[​](#security "Direct link to Security") * Booking pages always use encrypted connections. * Emails use an encrypted connection whenever the receiving mail server supports it, as nearly all do. * We encrypt the data stored in our database, including invitee details. * Our staff tools do not let us browse your bookings. ## What We Do Not Collect[​](#not-collected "Direct link to What We Do Not Collect") * Booking pages set no cookies and load no analytics or tracking scripts. While someone fills in a form, the browser temporarily saves their unsent answers in that tab until they book or close it. * Emails from Bookings contain no tracking pixels or tracked links. * The service does not receive titles, locations, notes, or guests from your calendar events. The data it receives from your calendars is limited to the [busy times](#busy-times), [calendar information](#calendar-information), and video call links for bookings described above. ## Your Rights and Choices[​](#rights "Direct link to Your Rights and Choices") ### If You Booked a Time or Were Added as a Guest[​](#invitees "Direct link to If You Booked a Time or Were Added as a Guest") The host decides how your details are used, whether you booked the time or were added as a guest. Contact the host first to see, correct, or delete your details. If you contact us instead, we forward your request to the host and delete your details when the host instructs us to. The service keeps invitee and guest details for the periods described under [Bookings](#bookings), or less if the host deletes them sooner. The host controls the copy of the meeting in their calendar. ### If You Are a Host[​](#hosts "Direct link to If You Are a Host") In your Bookings dashboard, you can: * Delete invitee details from bookings or requests still stored by the service. * Delete your Bookings account. Access ends immediately. If upcoming bookings have not yet been added to your calendar, or meeting requests remain, the service sends cancellation or decline emails before removing the account's data. Otherwise, it removes the data immediately. Meetings already in your calendar stay there. To delete all data the service still stores for an email address, whether it belongs to an invitee or a guest, choose **Settings > Privacy and data** in your Bookings dashboard and click **Erase an Email Address…**. This does not change meetings already in your calendar. You can edit or delete those in your calendar. Signing out of Bookings in BusyCal on a Mac also signs out your iPhone, iPad, and other Macs that use the same iCloud account. Each device's sign-in and device details are removed as soon as it signs out. Busy times stay until a device sends those calendars' busy times again, you remove them under **Settings > Access** in your dashboard, or you delete your Bookings account. Signing out does not delete your account or booking pages. To delete your account, choose **Settings > Privacy and data** in your Bookings dashboard and click **Delete Account…**. Your pages offer times only while at least one device has sent busy times in the past 7 days and every calendar's busy times are no more than 7 days old. If your license or subscription no longer includes access to Bookings, your pages stop accepting bookings, and BusyCal on iPhone and iPad stops offering Bookings. This does not delete your existing bookings or account data. You can restore access by renewing or subscribing. For any request about your data, contact us. If you are in the European Union or the United Kingdom, you can also complain to your local data protection authority. ## Contact[​](#contact "Direct link to Contact") Bookings is provided by Beehive Innovations FZE, the company that makes BusyCal ("we" or "us"). For privacy questions and requests, write to . ## Changes to This Notice[​](#changes "Direct link to Changes to This Notice") When Bookings changes what it stores or which subprocessors it uses, we update this notice and its effective date. --- # Bookings Terms Effective date: October 1, 2026 These terms cover your use of Bookings, the optional booking service in BusyCal for Mac. They are an agreement between you and Beehive Innovations FZE, the company that makes BusyCal ("we" or "us"). You accept them in BusyCal when you turn Bookings on. Our [End-User License Agreement](/eula.md) continues to cover BusyCal itself, and the [Bookings Privacy Notice](/bookings-privacy.md) explains what the service stores and why. ## The Service[​](#service "Direct link to The Service") Bookings lets you publish booking pages at `busybook.me//`. A visitor (the "invitee") picks a time on your page and fills in a short form. The service emails the invitee and any guests the invitee adds a confirmation, and emails you a notification. BusyCal adds the booking to the calendar you chose and, when that calendar's account has an email address BusyCal can use for you as the organizer, makes it a meeting you organize, with the invitee and guests as attendees, so your calendar account can send them its own invitation too. The service's confirmation includes a calendar invitation, except for a booking made on a Microsoft 365 calendar whose organizer address BusyCal had already sent to the service; for that booking, only your calendar sends an invitation. The service keeps a booking only until BusyCal has added it to your calendar. From then on, the meeting is an event in your calendar, and your calendar account handles any later invitations and changes. So that your pages offer only free times, BusyCal sends the service the time ranges when you are busy, as start and end times only. Bookings is not designed for protected health information, and we do not offer a HIPAA business associate agreement. ## Who May Use Bookings[​](#eligibility "Direct link to Who May Use Bookings") Bookings is included with BusyCal for Mac. You may use it while your copy of BusyCal entitles you to it, once you have accepted these terms. BusyCal on your iPhone and iPad takes part in Bookings while your copy of BusyCal for Mac entitles you to it. You must be able to enter into a binding agreement where you live. If you use Bookings for an organization, you confirm that you may accept these terms on its behalf. ## Your Account[​](#account "Direct link to Your Account") You sign in to Bookings with your email address and a one-time code. Keep that email account secure, because anyone who can read its mail can sign in to your Bookings account. You are responsible for what is done through your account and for the content of your booking pages. Your handle and display name are public, because they appear on your pages. ## Your Responsibilities Toward Invitees[​](#invitees "Direct link to Your Responsibilities Toward Invitees") You decide what your booking pages ask for and what you do with the answers. For the details invitees enter, you are the controller and we are your processor, as described in the [data processing terms](#data-processing). You agree to: * Ask only for the details you need, and have a lawful reason to collect them. * Tell invitees how you use their details, where the law requires it. * Answer requests from invitees, and from any guests they add, about their details, using the deletion tools in your Bookings dashboard where needed. * Never ask for passwords, payment card numbers, or government identity numbers on your booking pages. * Never collect protected health information through your booking pages. Bookings is not designed for it, and we do not offer a HIPAA business associate agreement. * Protect the invitee details you receive outside Bookings, such as in your email or your calendar. ## Acceptable Use[​](#acceptable-use "Direct link to Acceptable Use") Do not use Bookings to: * Send spam, or enter other people's details so that they receive email they did not ask for. * Break the law or help anyone else break it. * Impersonate a person or organization, or mislead invitees about who you are. * Publish pages that are deceptive or harassing, or that try to collect passwords or payment details. * Probe, overload, or disrupt the service, or get around its limits. * Reach accounts or data that are not yours. ## Availability[​](#availability "Direct link to Availability") We work to keep Bookings running, but we do not guarantee that it will always be available or free of errors, and we may change its features over time. Bookings is provided "as is". The [disclaimers and limitations on liability](/eula.md#disclaimers-and-limitations-on-liability) in our End-User License Agreement apply to Bookings as they do to BusyCal. ## Suspension[​](#suspension "Direct link to Suspension") We may suspend or remove a booking page or an account that breaks these terms, harms invitees or other people, or puts the service at risk. When we can, we tell you by email and explain why. If you think we made a mistake, contact us at . ## Ending Bookings[​](#ending "Direct link to Ending Bookings") You can stop using Bookings at any time by signing out of Bookings in BusyCal on a Mac. Your iPhone, iPad, and other Macs that use the same iCloud account then sign out too. Signing out removes the sign-in and device details of each device that signs out, at once. The busy times your devices shared stay until a device shares those calendars again, until you remove them in your Bookings dashboard, or until you delete your Bookings account. Your account and pages stay until you delete your Bookings account: in your Bookings dashboard, choose **Settings > Privacy and data** and click **Delete Account…**. Your pages offer times only while one of your devices has shared your busy times within the last 7 days and no calendar's busy times are older than 7 days. If your copy of BusyCal is no longer entitled to Bookings, your pages stop accepting bookings, and BusyCal on iPhone and iPad stops offering Bookings. Your existing bookings and data stay, and you can continue by renewing or subscribing. Deleting your Bookings account ends your access at once. If upcoming bookings that BusyCal has not added to your calendar, or requests, remain, their invitees first get the usual cancellation or decline email, and everything we store for your account is removed from the live service once those emails are sent; otherwise it is removed at once, as the [Bookings Privacy Notice](/bookings-privacy.md#data) describes. Meetings already in your calendar stay there. The data processing terms continue to apply to any invitee data we hold until it is deleted. ## Changes to These Terms[​](#changes "Direct link to Changes to These Terms") We may update these terms. When we make a significant change, we update this page and its effective date and, where appropriate, tell you in BusyCal or by email before the change takes effect. If you keep using Bookings after that, the updated terms apply. If you do not accept them, delete your Bookings account in your Bookings dashboard. ## Data Processing Terms[​](#data-processing "Direct link to Data Processing Terms") This section covers the personal data in your bookings that we process for you: the details invitees enter, including the addresses of any guests they add ("invitee data"). For invitee data, you are the controller and we are the processor. For your own account data, we are the controller, as the [Bookings Privacy Notice](/bookings-privacy.md#roles) explains. ### Your Instructions[​](#instructions "Direct link to Your Instructions") We process invitee data only to provide Bookings to you, and only on your instructions. Your instructions are these terms and what you set up and do in BusyCal and your Bookings dashboard, such as your booking pages and your deletions. ### Instructions We Cannot Follow[​](#unlawful-instructions "Direct link to Instructions We Cannot Follow") If we believe an instruction breaks data protection law, we tell you before acting on it. ### Confidentiality[​](#confidentiality "Direct link to Confidentiality") We keep invitee data confidential. Only the people who run the service can reach it, only when running the service requires it, and they are bound to keep it confidential. ### Security[​](#security "Direct link to Security") We protect invitee data with the measures listed in the [Bookings Privacy Notice](/bookings-privacy.md#security): * Booking pages are always served over encrypted connections (TLS). * Emails are delivered over an encrypted connection whenever the receiving mail server supports it, which nearly all do. * The database is encrypted at rest. * Invitee details are stored in an encrypted form, with the key held outside the database. * Sign-in tokens are stored as hashes. * No staff interface browses bookings. ### If Something Goes Wrong[​](#breach "Direct link to If Something Goes Wrong") If we learn of a security breach that affects invitee data, we tell you without undue delay and share what we know, so you can meet your own obligations. ### Subprocessors[​](#subprocessors "Direct link to Subprocessors") You allow us to use the subprocessors listed in the [Bookings Privacy Notice](/bookings-privacy.md#subprocessors): Amazon Web Services for hosting, database, and email sending in the United States, and Apple for push notifications. Invitee data is therefore transferred to the United States and stored there. We announce any change to the list on the privacy notice. If you do not agree with a change, you can stop using Bookings and delete your Bookings account. ### Requests From Invitees[​](#requests "Direct link to Requests From Invitees") Invitees, and any guests they add, are asked to contact you first about their data. If an invitee or a guest sends the request to us instead, we forward it to you, and we delete invitee data when you tell us to. Your Bookings dashboard lets you delete the invitee details of a booking or request that we still hold. To delete everything we still store for one email address, use **Erase an Email Address…** under **Settings > Privacy and data** in your Bookings dashboard. Meetings already in your calendar are outside the service; you change or delete them in your calendar. ### Help With Assessments and Authorities[​](#assistance "Direct link to Help With Assessments and Authorities") We give you reasonable help with data protection impact assessments and with inquiries from a data protection authority, using the information in the [Bookings Privacy Notice](/bookings-privacy.md) and these terms. ### Deletion[​](#deletion "Direct link to Deletion") We hold invitee data only until BusyCal has added the booking to your calendar, or until a request has ended and its last email has been sent, as the [Bookings Privacy Notice](/bookings-privacy.md#bookings) describes. We delete it sooner when you delete it in your Bookings dashboard or when your account ends. ### Information About These Measures[​](#information "Direct link to Information About These Measures") If you need more information about how we meet these commitments, contact us at and we will provide it. --- # BusyCal Version History --- ![](https://downloads.busymac.com/resources/img/busycal-ios/icon_128.png) # BusyCal Handling Busy Calendars, [Bee-utifully](/about.md) 🐝Since 2 0 2 1 0 6 5 4 3 2 1 0 9 8 7 The Calendar That Works—So You Don't Have To macOSiOS ![BusyCal for iOS](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-portrait.png) [Buy $9.99 USD](https://apps.apple.com/us/app/busycal-calendar-tasks/id1035689743) iOS 15.0 or later. **Universal app for iPhone, iPad, and Apple Watch. No Subscription.** One-time purchase on the App Store. ![Apple logo](https://downloads.busymac.com/resources/img/logos/apple.svg) Best Calendar Apps 2026 ★★ ★★ ★★ ★★ ★★ [Loved ♥ on the App Store](https://apps.apple.com/app/busycal-calendar-tasks/id1035689743) ## The Calendar App Preferred by Pros, Students, and Scholars Everywhere—Don't Get Left Behind! ![Amazon](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/amazon.svg "Amazon") ![Apple](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/apple.svg "Apple") ![ARM](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/arm.svg "ARM") ![UC Berkeley](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/berkeley.svg "UC Berkeley") ![California Institute of Technology](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/caltech.svg "California Institute of Technology") ![Meta](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/facebook.svg "Meta") ![Georgia Institute of Technology](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/gatech.svg "Georgia Institute of Technology") ![Harvard University](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/harvard.svg "Harvard University") ![Massachusetts Institute of Technology](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/mit.svg "Massachusetts Institute of Technology") ![The National Aeronautics and Space Administration](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/nasa.svg "The National Aeronautics and Space Administration") ![Oracle](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/oracle.svg "Oracle") ![SAP](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/sap.svg "SAP") ![Shell](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/shell.svg "Shell") ![SpaceX](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/spacex.svg "SpaceX") ![Ubisoft](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ubisoft.svg "Ubisoft") ![The University of California, Los Angeles](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ucla.svg "The University of California, Los Angeles") ![University of Michigan](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/umich.svg "University of Michigan") ![University of Washington](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/uw_edu.svg "University of Washington") ![Adobe](https://downloads.busymac.com/resources/img/company_logos/bcl/adobe.svg "Adobe") ![Airbus](https://downloads.busymac.com/resources/img/company_logos/bcl/airbus.svg "Airbus") ![At\&T](https://downloads.busymac.com/resources/img/company_logos/bcl/att.svg "At\&T") ![Cisco](https://downloads.busymac.com/resources/img/company_logos/bcl/cisco.svg "Cisco") ![Carnegie Mellon University](https://downloads.busymac.com/resources/img/company_logos/bcl/cmu.svg "Carnegie Mellon University") ![CSIRO](https://downloads.busymac.com/resources/img/company_logos/bcl/csiro.svg "CSIRO") ![Disney](https://downloads.busymac.com/resources/img/company_logos/bcl/disney.svg "Disney") ![Engadget](https://downloads.busymac.com/resources/img/company_logos/bcl/engadget.svg "Engadget") ![Intel](https://downloads.busymac.com/resources/img/company_logos/bcl/intel.svg "Intel") ![LinkedIn](https://downloads.busymac.com/resources/img/company_logos/bcl/linkedin.svg "LinkedIn") ![NFL](https://downloads.busymac.com/resources/img/company_logos/bcl/nfl.svg "NFL") ![Nike](https://downloads.busymac.com/resources/img/company_logos/bcl/nike.svg "Nike") ![Roche](https://downloads.busymac.com/resources/img/company_logos/bcl/roche.svg "Roche") ![Uber](https://downloads.busymac.com/resources/img/company_logos/bcl/uber.svg "Uber") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/amazon.svg "Amazon") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/apple.svg "Apple") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/arm.svg "ARM") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/berkeley.svg "UC Berkeley") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/caltech.svg "California Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/facebook.svg "Meta") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/gatech.svg "Georgia Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/harvard.svg "Harvard University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/mit.svg "Massachusetts Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/nasa.svg "The National Aeronautics and Space Administration") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/oracle.svg "Oracle") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/sap.svg "SAP") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/shell.svg "Shell") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/spacex.svg "SpaceX") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ubisoft.svg "Ubisoft") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ucla.svg "The University of California, Los Angeles") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/umich.svg "University of Michigan") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/uw_edu.svg "University of Washington") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/adobe.svg "Adobe") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/airbus.svg "Airbus") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/att.svg "At\&T") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/cisco.svg "Cisco") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/cmu.svg "Carnegie Mellon University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/csiro.svg "CSIRO") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/disney.svg "Disney") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/engadget.svg "Engadget") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/intel.svg "Intel") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/linkedin.svg "LinkedIn") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/nfl.svg "NFL") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/nike.svg "Nike") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/roche.svg "Roche") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/uber.svg "Uber") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/amazon.svg "Amazon") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/apple.svg "Apple") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/arm.svg "ARM") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/berkeley.svg "UC Berkeley") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/caltech.svg "California Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/facebook.svg "Meta") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/gatech.svg "Georgia Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/harvard.svg "Harvard University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/mit.svg "Massachusetts Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/nasa.svg "The National Aeronautics and Space Administration") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/oracle.svg "Oracle") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/sap.svg "SAP") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/shell.svg "Shell") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/spacex.svg "SpaceX") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ubisoft.svg "Ubisoft") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ucla.svg "The University of California, Los Angeles") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/umich.svg "University of Michigan") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/uw_edu.svg "University of Washington") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/adobe.svg "Adobe") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/airbus.svg "Airbus") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/att.svg "At\&T") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/cisco.svg "Cisco") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/cmu.svg "Carnegie Mellon University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/csiro.svg "CSIRO") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/disney.svg "Disney") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/engadget.svg "Engadget") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/intel.svg "Intel") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/linkedin.svg "LinkedIn") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/nfl.svg "NFL") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/nike.svg "Nike") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/roche.svg "Roche") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/uber.svg "Uber") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/amazon.svg "Amazon") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/apple.svg "Apple") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/arm.svg "ARM") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/berkeley.svg "UC Berkeley") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/caltech.svg "California Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/facebook.svg "Meta") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/gatech.svg "Georgia Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/harvard.svg "Harvard University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/mit.svg "Massachusetts Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/nasa.svg "The National Aeronautics and Space Administration") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/oracle.svg "Oracle") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/sap.svg "SAP") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/shell.svg "Shell") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/spacex.svg "SpaceX") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ubisoft.svg "Ubisoft") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ucla.svg "The University of California, Los Angeles") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/umich.svg "University of Michigan") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/uw_edu.svg "University of Washington") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/adobe.svg "Adobe") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/airbus.svg "Airbus") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/att.svg "At\&T") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/cisco.svg "Cisco") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/cmu.svg "Carnegie Mellon University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/csiro.svg "CSIRO") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/disney.svg "Disney") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/engadget.svg "Engadget") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/intel.svg "Intel") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/linkedin.svg "LinkedIn") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/nfl.svg "NFL") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/nike.svg "Nike") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/roche.svg "Roche") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/uber.svg "Uber") The most powerful, customizable calendar ## Like No Other BusyCal isn't just another calendar app—it's a navigation experience like no other. With its innovative Month View, tap any day to expand it and see event details in place, making scheduling effortless and intuitive. *No other app* makes managing your calendar this easy 💪 BusyCal is a universal iPad + iPhone app. With a companion app for watchOS, customizable widgets for your home and lock screen, and unparalleled flexibility, BusyCal is designed to fit seamlessly into your life—your calendar, your way. ## Month View One of BusyCal's most innovative features is its Month View, which provides a scrolling view that can be customized to show any period from 2-8 weeks at a time by pinching. ![BusyCal for iOS month view in landscape](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-land.png) Tapping on a day reveals its details like an accordion within the Month View. It's ideal for getting an overview of your Month, then quickly drilling down to see the details of a specific day. [Learn More →](https://www.busymac.com/docs/busycalios/70656-getting-started-with-busycal-for-ios.md#views) [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-ios/videos/month_view_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-portrait@2x.png) ## Week View The Week view displays 2-7 days at a time. You can adjust the number of days and hours shown by pinching anywhere on screen. Create events effortlessly with a long-tap, or move events easily by dragging. [Learn More →](https://www.busymac.com/docs/busycalios/70656-getting-started-with-busycal-for-ios.md#views) ![BusyCal for iOS week view screenshot](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-week.png) ## List View The List view displays all of your events and tasks chronologically in a compact easy to read format. Supports infinite scrolling. There are several settings to tweak from, such as hiding empty days. [Learn More →](https://www.busymac.com/docs/busycalios/70656-getting-started-with-busycal-for-ios.md#views) ![BusyCal for iOS list view screenshot](https://downloads.busymac.com/resources/img/busycal-ios/list_view.png) ## Tasks In BusyCal, Tasks are integrated into your calendar, display on the date they are due, and carry forward until completed. ![BusyCal for iOS month and week view in landscape](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-week-land.png) Tasks are also displayed in the Task List, which can be sorted by Due Date, Priority, Title, Calendar, Tag, or Manually. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-ios/videos/task-list_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-ios/task_list@2x.png) ## Calendar Sets With Calendar Sets, you can manage different collections of calendars to be able to quickly switch between them, such as a different collection of Work related calendars and a different one for Personal. [Learn More →](https://www.busymac.com/docs/busycalios/131439-calendar-sets.md) ![BusyCal for iOS calendar sets screenshot](https://downloads.busymac.com/resources/img/busycal-ios/bcl-calendarset.png) ## Travel Time BusyCal supports travel time, which allows you to block out time for travel to an event or location. ![BusyCal for iOS travel time in month view](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-travel.png) You can set a fixed amount of travel time or determine it automatically using the integrated support for Location Services and Apple Maps. You can even set alarms to remind you when it's time to leave. [Learn More →](https://www.busymac.com/docs/busycalios/70666-maps-travel-time.md) ![BusyCal for iOS travel time settings screenshot](https://downloads.busymac.com/resources/img/busycal-ios/travel_time_edit.png) Plan for Sunshine or Showers ## Weather & Moon Phases in Your Calendar BusyCal displays a live 8-day weather forecast based on your current location using Location Services. It can also show phases of the moon. ![BusyCal for iOS month view with weather and moon phases](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-weather.png) ## Tags BusyCal allows you to tag events for tracking and filtering. Tags are user-defined labels with which you can categorize events in BusyCal. You can also search and filter events in your calendar based on tags. Note: Tags in BusyCal map to Categories in Exchange/Outlook. [Learn More →](https://www.busymac.com/docs/busycalios/70662-tags.md) ![BusyCal for iOS event tags editor screen](https://downloads.busymac.com/resources/img/busycal-ios/edit_screen_tags.png) ## Natural Language You can create events and tasks in BusyCal using natural language. Simply type the details and BusyCal interprets them automatically. For example: * Lunch with Joe next Tuesday * Meeting with Joe Nov 7 at 3 * Coffee at Starbucks 9:00 * Call Bob tomorrow * Buy Toner You can even set locations and add attendees interactively. Supports English, French, German, Spanish, Italian, Dutch, Chinese Simplified and Korean. [Learn More →](https://www.busymac.com/docs/busycalios/70669-natural-language.md) ![BusyCal for iOS natural language event entry](https://downloads.busymac.com/resources/img/busycal-ios/nlp_event.png) ## Search BusyCal makes it easy to find all matching events throughout your entire calendar. Tap the magnifying glass icon at the top of the screen to display the Search field. Begin typing to find all events whose title, location, notes, or tags match the search term and display them in a list. You can then tap any item in the list to display its Event Details view. ![BusyCal for iOS search results screen](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-search.png) ## Syncs with Everything BusyCal has long been respected for its solid support for syncing with Reminders, iCloud, Google, Exchange, Office 365, Outlook, Todoist, Fastmail, CalDAV, Zoom, WebEx and more. [Learn More →](https://www.busymac.com/docs/busycalios/70674-syncing-busycal-for-ios-with-a-mac.md) ![BusyCal for iOS account setup screen](https://downloads.busymac.com/resources/img/busycal-ios/screenshot-welcome-accounts.png) Protection ## Password Protected Calendar Sets Lock individual calendar sets with Face ID or a Pass Code Event-Driven Productivity ## Automate Calendar Sets Automatically activate calendar sets based on time, location, or focus modes. Celebrations ## Birthdays & Anniversaries Sync key dates from Apple Contacts Make It Your Style ## Custom Appearance Text sizes, date alignments, customizable visual elements and more Record Everything ## Journaling Capture memories and milestones, not just events watchOS ## Agenda on The Wrist Access events, tasks, and more with BusyCal on watchOS—designed for quick glances and easy navigation Cross-Calendar ## Time Blocking Block time across calendars, effortlessly Stay Connected ## Conference Calls Create and join conference calls effortlessly, right from your calendar Home & Away ## Time Zones Made Simple Stay effortlessly in sync across time zones Time That Travels ## Floating Time Support Keep events unbound to time zones Your Schedule, At a Glance ## Widgets for Every Need Up-next, week view, and more Stay on Track ## Countdown to Events See time remaining in the event details view and more Tasks That Don't Slip ## Carry Over Overdue Tasks Automatically show unfinished tasks under Today in calendar Beyond the Basics ## Alternative Calendars Support for Chinese, Hebrew, Islamic, and more Task Precision ## Task Durations Set unique durations for individual tasks Nag Alerts ## Multiple Default Alarms Add many custom alerts to a single event Here for You ## First-Class Support We're a dedicated team driven by the passion to deliver exceptional service. Always open to your ideas, suggestions, critique, and feedback, [we're here to help](/docs.md) you when you need to reach out ## And Then There's More... [So Much More.](/docs/busycalios/70656-getting-started-with-busycal-for-ios.md) ## Your Data, Your Rules We believe your calendar is your life, and your life is private. That's why BusyCal is designed with privacy at its core. Your calendar only syncs with services you control, ensuring your data stays where it belongs—with you. No funny business, just secure scheduling. See our [privacy policy](/privacy.md) for more details. ## The Word on the Street ### Easily the best calendar app Easily the best calendar app I've used for iOS and Mac. Being able to see all of the events on your calendar across an entire month - why this is isn't an option on the default calendar app is beyond me. Best money I've spent on an iOS app, hands down. [App Store →](https://appfigures.com/reviews/229988087970LVFcu38cm6qV5ZgHQmSFiBA) ### Totally the best Tried the others and BusyCal is still the best all round. [App Store →](https://appfigures.com/reviews/229988087970LtbBh5LE7DxYqpOh0qiNr6Q) ### Best monthly view calendar I like to look at the month at a glance. Nice crisp format…rounded bubbles, colored entries…nice. Too bad it's not multi platform. Switching to a flip phone…apple just doesn't get it. Gonna have to switch to ticktick for that phone. [App Store →](https://appfigures.com/reviews/229988087970LcrwrMTbGub6Tm9J6uUrmrg) ### New Update To Tasks is Amazing The new update to the edit tasks window is MUCH improved. Much more streamlined and far more convenient. [App Store →](https://appfigures.com/reviews/229988087970LWSX5vYemOVf32pma5Z0ydA) ### Keeps getting better ... Tried Fantastical for a couple years, but was glad to come back to BusyCal. [App Store →](https://appfigures.com/reviews/229988087970L4dZN_wgnoJHM5DTANZUTfQ) --- ![](https://downloads.busymac.com/resources/img/busycontacts/busycontacts-icon.png) # BusyContacts Contact Management Made Easy The Contact Manager That Knows Everyone ![BusyContacts for macOS](https://downloads.busymac.com/resources/img/busycontacts/hero.png) [![](https://downloads.busymac.com/resources/img/icons/download.svg)Free *14-Day* Trial](https://www.busymac.com/download/BusyContacts.dmg)[![](https://downloads.busymac.com/resources/img/icons/buy.svg)Buy $49.99 USD](/store.md)[![](https://downloads.busymac.com/resources/img/icons/setapp.svg)Get it on Setapp](https://go.setapp.com/stp181?ref=busymac_site) macOS 12.0 or later · [**Release notes & older versions**](/busycontacts/releasenotes.md) ★★ ★★ ★★ ★★ ★★ [Loved ♥ on the App Store](https://apps.apple.com/us/app/busycontacts/id964258399?mt=12) ## Organizing Contacts for Pros, Students, and Scholars Everywhere—Don't Miss Out! ![Amazon](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/amazon.svg "Amazon") ![Apple](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/apple.svg "Apple") ![ARM](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/arm.svg "ARM") ![SpaceX](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/spacex.svg "SpaceX") ![Atlassian](https://downloads.busymac.com/resources/img/company_logos/bct/atlassian.svg "Atlassian") ![Carnegie Mellon University](https://downloads.busymac.com/resources/img/company_logos/bcl/cmu.svg "Carnegie Mellon University") ![Emory University](https://downloads.busymac.com/resources/img/company_logos/bct/emory.svg "Emory University") ![UC Berkeley](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/berkeley.svg "UC Berkeley") ![California Institute of Technology](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/caltech.svg "California Institute of Technology") ![Meta](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/facebook.svg "Meta") ![Georgia Institute of Technology](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/gatech.svg "Georgia Institute of Technology") ![The National Aeronautics and Space Administration](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/nasa.svg "The National Aeronautics and Space Administration") ![Harvard University](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/harvard.svg "Harvard University") ![Massachusetts Institute of Technology](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/mit.svg "Massachusetts Institute of Technology") ![Oracle](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/oracle.svg "Oracle") ![SAP](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/sap.svg "SAP") ![Shell](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/shell.svg "Shell") ![Ubisoft](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ubisoft.svg "Ubisoft") ![The University of California, Los Angeles](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ucla.svg "The University of California, Los Angeles") ![University of Michigan](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/umich.svg "University of Michigan") ![University of Washington](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/uw_edu.svg "University of Washington") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/amazon.svg "Amazon") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/apple.svg "Apple") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/arm.svg "ARM") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/spacex.svg "SpaceX") ![](https://downloads.busymac.com/resources/img/company_logos/bct/atlassian.svg "Atlassian") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/cmu.svg "Carnegie Mellon University") ![](https://downloads.busymac.com/resources/img/company_logos/bct/emory.svg "Emory University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/berkeley.svg "UC Berkeley") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/caltech.svg "California Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/facebook.svg "Meta") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/gatech.svg "Georgia Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/nasa.svg "The National Aeronautics and Space Administration") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/harvard.svg "Harvard University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/mit.svg "Massachusetts Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/oracle.svg "Oracle") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/sap.svg "SAP") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/shell.svg "Shell") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ubisoft.svg "Ubisoft") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ucla.svg "The University of California, Los Angeles") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/umich.svg "University of Michigan") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/uw_edu.svg "University of Washington") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/amazon.svg "Amazon") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/apple.svg "Apple") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/arm.svg "ARM") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/spacex.svg "SpaceX") ![](https://downloads.busymac.com/resources/img/company_logos/bct/atlassian.svg "Atlassian") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/cmu.svg "Carnegie Mellon University") ![](https://downloads.busymac.com/resources/img/company_logos/bct/emory.svg "Emory University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/berkeley.svg "UC Berkeley") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/caltech.svg "California Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/facebook.svg "Meta") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/gatech.svg "Georgia Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/nasa.svg "The National Aeronautics and Space Administration") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/harvard.svg "Harvard University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/mit.svg "Massachusetts Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/oracle.svg "Oracle") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/sap.svg "SAP") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/shell.svg "Shell") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ubisoft.svg "Ubisoft") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ucla.svg "The University of California, Los Angeles") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/umich.svg "University of Michigan") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/uw_edu.svg "University of Washington") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/amazon.svg "Amazon") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/apple.svg "Apple") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/arm.svg "ARM") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/spacex.svg "SpaceX") ![](https://downloads.busymac.com/resources/img/company_logos/bct/atlassian.svg "Atlassian") ![](https://downloads.busymac.com/resources/img/company_logos/bcl/cmu.svg "Carnegie Mellon University") ![](https://downloads.busymac.com/resources/img/company_logos/bct/emory.svg "Emory University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/berkeley.svg "UC Berkeley") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/caltech.svg "California Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/facebook.svg "Meta") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/gatech.svg "Georgia Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/nasa.svg "The National Aeronautics and Space Administration") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/harvard.svg "Harvard University") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/mit.svg "Massachusetts Institute of Technology") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/oracle.svg "Oracle") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/sap.svg "SAP") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/shell.svg "Shell") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ubisoft.svg "Ubisoft") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/ucla.svg "The University of California, Los Angeles") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/umich.svg "University of Michigan") ![](https://downloads.busymac.com/resources/img/company_logos/bcl_bct/uw_edu.svg "University of Washington") Rock-Solid Contact Management ## Take Control of Your Contacts Keep phone numbers, addresses, notes, and other contact details organized on your Mac. For each contact, the Activity List shows related emails from Apple Mail and events from BusyCal. BusyContacts syncs directly with your accounts on iCloud, Google, Office 365, Exchange, Fastmail, and other CardDAV servers. The Contacts app on your iPhone, iPad, or another Mac shows the same contacts when it uses those accounts. The One Place All Your Contacts Get Along ## Bring Them Altogether Choose between a unified card view or a multi-column list view, where you can customize displayed columns (e.g., company, last name, first name) and define the sort order to suit your needs. ![BusyContacts card view screenshot](https://downloads.busymac.com/resources/img/busycontacts/cardview.png) ![BusyContacts combined view screenshot](https://downloads.busymac.com/resources/img/busycontacts/combinedallshow.png) ![BusyContacts list view screenshot](https://downloads.busymac.com/resources/img/busycontacts/listview.png) ![BusyContacts in dark mode](https://downloads.busymac.com/resources/img/busycontacts/hero_dark.png) ←→ Never Miss an Event ## Contact Lists Don't Have to Be Static BusyContacts automatically surfaces upcoming events from your contact list: birthdays, anniversaries, and more. [Learn More →](/docs/busycontacts/47353-birthdays-and-anniversaries.md#upcoming-events) ![Upcoming Events](https://downloads.busymac.com/resources/img/busycontacts/upcomingbday.png) ## Tags Tags are a flexible way to categorize and filter contacts in BusyContacts. You can assign multiple tags to each contact and a tag cloud allows you to easily filter the list of contacts. ![BusyContacts tag panel](https://downloads.busymac.com/resources/img/busycontacts/bct-tag-panel-edit.png) Tags in BusyContacts map to Groups in Apple Contacts/iCloud and Categories in Outlook/Exchange. [Learn More →](/docs/busycontacts/47214-tags-groups.md) ![BusyContacts tags editor screenshot](https://downloads.busymac.com/resources/img/busycontacts/bct-tags-edit.png) ## Social Network Integration BusyContacts syncs with leading CardDAV services and consolidates information about your contacts and relationships from multiple sources. What's more, BusyContacts links related cards from multiple sources and combines them into a single virtual card. ![BusyContacts combined view with linked social profiles](https://downloads.busymac.com/resources/img/busycontacts/bct-combined-view.png)[Learn More →](/docs/busycontacts/44314-getting-started-with-busycontacts.md) ## Activity List The Activity List shows a chronological listing of activities associated with the selected contact including emails, meetings, tasks, and other calendar events, as well as social network posts from supported services: Bluesky, Dribbble, Facebook, Github, Instagram, LinkedIn, Mastodon, Pinterest, Reddit, TikTok, X (Twitter) and YouTube. It's a fantastic way to quickly review all types of communication and activities associated with a contact. ![BusyContacts activity list showing email activity](https://downloads.busymac.com/resources/img/busycontacts/activity-listing.png) [Learn More →](/docs/busycontacts/47350-activity-list.md) ![BusyContacts activity list screenshot](https://downloads.busymac.com/resources/img/busycontacts/activity-mail.png) From Pocket to Pixels ## Business Card Import Transform that pile of business cards collecting dust on your desk into digital contacts. Just drag, drop, and boom—instant contact card. It's that simple. Oh and it works with email-signatures too. [Learn More →](/docs/busycontacts/business-card-reader.md) ![BusyContacts business card reader](https://downloads.busymac.com/resources/img/busycontacts/business-card-reader.png) ![BusyCal app icon](https://downloads.busymac.com/resources/img/busycal-mac/icon_128.png) ## BusyCal integration BusyContacts integrates with BusyCal allowing you to link contacts to events and to dos in your calendar, providing flexible CRM capabilities for scheduling meetings, follow up tasks, and tracking past activities. [Learn More →](/docs/busycontacts/44314-getting-started-with-busycontacts.md#contextual) ![Create BusyCal events from BusyContacts](https://downloads.busymac.com/resources/img/busycontacts/bct-new-event.png) ## Smart Filters Smart Filters are a powerful tool for filtering contacts and creating saved searches that can be applied with a single click. You can create Smart Filters to display contacts that match certain conditions, such as a text string, tag, or birthdate. Or to apply view settings such as columns displayed and sort order. [Learn More →](/docs/busycontacts/50099-smart-filters.md) ![BusyContacts smart filters editor](https://downloads.busymac.com/resources/img/busycontacts/bct-edit-smart.png) Scan, Tap, Done! ## Generate QR Codes Generate QR codes instantly from any contact, making it effortless to share vCard information. Perfect for your own **Me Card** for events, quick contact exchanges, or to just look cool. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycontacts/videos/bct-qr-code_web.webm) [Learn More →](/docs/busycontacts/qr-code-generation.md) ## Sync and Share BusyContacts syncs with all leading cloud services including iCloud, Google, Exchange, and other CardDAV servers, enabling you to sync contacts with other Macs running BusyContacts or the built-in Contacts app on macOS and iOS. You can also share address books with other BusyContacts users with read-only or read/write privileges. Address Books can be shared through Exchange, Fastmail, Kerio, over the LAN, and through other CardDAV servers that support sharing. [Learn More →](/docs/busycontacts/49373-syncing-with-a-server.md) ![BusyContacts accounts and sources list](https://downloads.busymac.com/resources/img/busycontacts/bct-sourcelist.png) Email Timeline ## Contact Emails See emails for a contact in the Activity List [Learn More →](/docs/busycontacts/47350-activity-list.md#adding-mail) All the Fields and More ## Custom Fields Add custom fields to track exactly what matters to you [Learn More →](/docs/busycontacts/49714-custom-field-types-and-labels.md) Print Options ## Envelopes & Mailing Labels Quickly print envelopes or mailing labels for selected contacts [Learn More →](/docs/busycontacts/56669-printing-envelopes-and-mailing-labels.md) Tags ## Easy Grouping Organize, color-code, and label your contacts for effortless grouping. [Learn More →](/docs/busycontacts/47214-tags-groups.md#adding) Powerful ## Addressbook Sets Like BusyCal's Calendar Sets, use Smart Filters to memorize views and settings [Learn More →](/docs/busycontacts/50099-smart-filters.md) CSV Support ## Export to Spreadsheets Export your entire Addressbook or a subset of your contact list [Learn More →](/docs/busycontacts/56820-exporting-and-importing-contacts.md) Combine Contacts ## Linking & Merging Link and merge contacts or view a unified card across multiple accounts [Learn More →](/docs/busycontacts/44314-getting-started-with-busycontacts.md#linking-merging) Multi-Column Layout ## Customizable List View Tailor your view with sortable, resizable columns like name, phone number, and more [Learn More →](/docs/busycontacts/47352-card-view-and-list-view.md#list) Rest Assured ## Automatic Backups BusyContacts backs up your data locally—ready for a rainy day. [Learn More →](/docs/busycontacts/49877-backup-and-restore.md) Make It Your Style ## Custom Appearance Custom font sizing and more ## And Then There's More... [So Much More.](/docs/busycontacts/44314-getting-started-with-busycontacts.md) ## Your Data, Your Rules We believe your contacts are personal, and personal means private. That's why BusyContacts is designed with privacy at its core. It connects directly to the accounts you choose (iCloud, Google, Exchange, Fastmail, or your own CardDAV server), with no intermediaries in between, so your data stays where it belongs, with you. No funny business, just contact management you control. See our [privacy policy](/privacy.md) for more details. ## The Word on the Street ### Utterly Indispensible The BusyMac suite (BusyCal and BusyContacts for macOS and BusyCal for iOS) are utterly indispensible for work and home. I've been a happy customer since a year after they started and the first thing I do with a new Apple device is set up my BusyMac. Do your productivity a favor and get it! [App Store →](https://appfigures.com/reviews/41048535045LIDRLM1Pvkl1a0TA0Wtx0fg?lang=en) ### Awesome Program Finally there is a way to keep ALL of your contacts in a organized way synced accross multiple systems. Great program! [App Store →](https://appfigures.com/reviews/41048535045LMHbFihywqEckq513j_gF4g?lang=en) ### Finally order in thousands of addresses! BusyContacts delivers on its promise as an address book manager. The list view is very handy for adding data and filters allow you to create address groups conveniently. The programme is versatile and connects to the main CarDAV servers and clouds. [App Store →](https://appfigures.com/reviews/41048535045L4prjw0vvROBl5dog-7DfrA?lang=en) --- # BusyContacts Version History --- # BusyCal Comparison Guides These guides compare BusyCal with Fantastical, Outlook Calendar, Apple Calendar, Google Calendar, Notion Calendar, Readdle Calendars, 2Do, Things 3, OmniFocus, and Todoist. Each guide explains the features and trade-offs, including where the other app may suit you better. Links to official product pages let you check the details. The calendar comparisons include [BusyCal Bookings](/docs/bookings.md), which lets people choose an available meeting time through a link. See how it compares with Fantastical Openings, Google appointment schedules, Notion scheduling links, and Microsoft Bookings. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. [See the access requirements](/docs/bookings.md#requirements). Last reviewed: October 16, 2026. ## Calendar Comparisons[​](#calendar-comparisons "Direct link to Calendar Comparisons") * [BusyCal vs Fantastical](/compare/fantastical.md) * [BusyCal vs Outlook Calendar](/compare/outlook-calendar.md) * [BusyCal vs Apple Calendar](/compare/apple-calendar.md) * [BusyCal vs Google Calendar](/compare/google-calendar.md) * [BusyCal vs Notion Calendar](/compare/notion-calendar.md) * [BusyCal vs Readdle Calendars](/compare/readdle-calendars.md) ## Calendar and Task Planning[​](#productivity-workflow-comparisons "Direct link to Calendar and Task Planning") These guides compare how each app helps you plan work, with calendars or task lists as the main focus. * [BusyCal vs 2Do](/compare/2do.md) * [BusyCal vs Things 3](/compare/things-3.md) * [BusyCal vs OmniFocus](/compare/omnifocus.md) * [BusyCal vs Todoist](/compare/todoist.md) ## Official Product Links[​](#official-product-links "Direct link to Official Product Links") * [Fantastical](https://flexibits.com/fantastical) * [Outlook Calendar](https://www.microsoft.com/en-us/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook) * [Apple Calendar](https://www.apple.com/os/macos/) * [Google Calendar](https://workspace.google.com/products/calendar/) * [Notion Calendar](https://www.notion.com/product/calendar) * [Readdle Calendars](https://readdle.com/calendars) * [2Do](https://www.2doapp.com/) * [Things 3](https://culturedcode.com/things/) * [OmniFocus](https://www.omnigroup.com/omnifocus) * [Todoist](https://todoist.com/) ## BusyCal Resources[​](#busycal-resources "Direct link to BusyCal Resources") * [BusyCal for macOS](/busycal/) * [BusyCal for iOS](/busycalios.md) * [BusyContacts for macOS](/busycontacts.md) * [BusyCal documentation](/docs/busycal/70585-getting-started-with-busycal-for-mac.md) * [BusyCal Bookings guide](/docs/bookings.md) --- # BusyCal vs 2Do 2Do is a dedicated task manager; BusyCal is a calendar app with tasks built in. 2Do may suit you if you plan around lists, projects, sections, and tags. BusyCal may suit you if you plan by time blocks and want events and tasks in one window. You can also use both through a shared service such as iCloud CalDAV. Last reviewed: October 16, 2026. ## At a Glance[​](#at-a-glance "Direct link to At a Glance") | Criteria | BusyCal | 2Do | | ------------- | ------------------------------------------------- | -------------------------------------------- | | Primary model | Calendar-first planning with tasks | Task and list management | | Best fit | Time-blocking and schedule-driven workflows | Organizing and completing work in task lists | | Strength | Day, Week, Month, and Year views of your schedule | Focused task organization and actions | | Trade-off | Calendar-oriented setup | Fewer calendar views and controls | ## Calendar & Sync Comparison[​](#calendar--sync-comparison "Direct link to Calendar & Sync Comparison") | Capability | BusyCal | 2Do | | ---------------------------------------------------------------------------- | ------- | -------------------------- | | Native CalDAV account sync | **✓** | **✓** | | Microsoft 365 / Exchange calendar sync | **✓** | | | Calendar subscriptions (.ics / holiday feeds) | **✓** | | | Multiple provider calendars in one app (iCloud + Google + Exchange + CalDAV) | **✓** | | | Calendar views (Day / Week / Month / Year Planner) | **✓** | | | Calendar Groups | **✓** | | | Smart Date Picker with real-time suggestions | **✓** | Limited (basic shorthands) | | Favorite Time Zones | **✓** | | | Show event locations on a map | **✓** | | | Apple Watch app | **✓** | **✓** | | Widgets (multiple sizes) | **✓** | **✓** | | Shortcuts / Siri integration | **✓** | **✓** | | Task management focused on lists | | **✓** | ## Where 2Do May Be Better[​](#where-2do-may-be-better "Direct link to Where 2Do May Be Better") * You want a dedicated task manager as your primary tool. * You organize work with lists, projects, sections, and tags more than calendar blocks. * You prefer to manage tasks in a dedicated app, possibly alongside a separate calendar. On Mac, iPhone, and iPad, 2Do lets you divide regular lists and the Inbox into **named task sections**. For example, a trip list can have Bookings and Packing sections. You can reorder or collapse sections, while the tasks within each section follow the list's sort. **Auto-Create Sections** organizes selected unfinished tasks or all unfinished, unsectioned tasks in a list. It reuses suitable existing sections and creates new ones where needed. **Auto-Name Section** names an existing section from its task titles. These Apple Intelligence commands run on your device and require supported hardware with Apple Intelligence enabled on macOS 26, iOS 26, or iPadOS 26 or later. See [Task Sections for Mac](https://www.2doapp.com/docs/macos/task-sections) and [iPhone and iPad](https://www.2doapp.com/docs/ios/task-sections). 2Do also offers [Auto-Prioritize on Mac](https://www.2doapp.com/docs/macos/auto-prioritize) and [iPhone and iPad](https://www.2doapp.com/docs/ios/auto-prioritize), which uses Apple Intelligence to set priorities for selected tasks on your device under the same requirements. ## Where BusyCal May Be Better[​](#where-busycal-may-be-better "Direct link to Where BusyCal May Be Better") * You want to see events and tasks in the same calendar. * You plan when to work on tasks around your existing appointments. * You want detailed Day, Week, Month, and Year views of your schedule. * You want to switch between saved combinations of calendars and filters using Smart Filters and Calendar Sets. * You want [Calendar Groups](/docs/busycal/70592-calendar-list.md#calendar-groups) to organize calendars into folders. * You want one app that combines iCloud, Google, Exchange/Microsoft 365, and CalDAV calendars. * You want to view event locations on a map and plan travel time. [Learn more](/docs/busycal/70603-locations-maps-travel-time.md). ## Booking Meetings with BusyCal[​](#booking-meetings-with-busycal "Direct link to Booking Meetings with BusyCal") Use BusyCal Bookings to let clients or colleagues choose an available meeting time through a link. For example, offer a 30-minute project call with a break afterward. Bookings checks busy times from your chosen calendars, lets you approve requests if needed, and adds confirmed meetings to your calendar. **[Learn More](/docs/bookings.md)**. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. [See the access requirements](/docs/bookings.md#requirements). ## BusyCal Features to Review[​](#busycal-features-to-review "Direct link to BusyCal Features to Review") * [Smart Filters and Calendar Sets](/docs/busycal/70612-smart-filters.md) * [Calendar Groups (folders)](/docs/busycal/70592-calendar-list.md#calendar-groups) * [Cross-Calendar Time Blocking](/docs/busycal/142884-cross-calendar-blocking-events.md) * [Year Planner + Overview](/docs/busycal/70590-year-view.md#year-planner) * [View event locations and plan travel time](/docs/busycal/70603-locations-maps-travel-time.md) * [Info Panel customization](/docs/busycal/70595-info-panel.md#info-panel-preferences) * [BusyCal Alarm Window and advanced snooze controls](/docs/busycal/70604-alarms.md#displaying-alarms) * [Upcoming event countdown in the menu bar](/docs/busycal/70606-busycal-menu.md#upcoming) ## BusyCal Account Sync Docs[​](#busycal-account-sync-docs "Direct link to BusyCal Account Sync Docs") * [Office 365 via Microsoft Graph](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) * [CalDAV account sync](/docs/busycal/70647-using-busycal-with-caldav.md#syncing) * [Public WebDAV calendar subscriptions](/docs/busycal/70601-subscribing-to-public-calendars.md) * [Google Calendar sync](/docs/busycal/70636-using-busycal-with-google.md) * [iCloud calendar sync](/docs/busycal/70630-using-busycal-with-icloud.md) ## Using BusyCal with 2Do[​](#using-busycal-with-2do "Direct link to Using BusyCal with 2Do") You can use both apps with a shared service such as iCloud CalDAV. Tasks can sync between them, but 2Do's named sections do not sync through CalDAV or appear as sections in BusyCal. For details, see: * [Does BusyCal Sync With OmniFocus, 2Do, or Other Apps?](/docs/faqs/98979-does-busycal-support-syncing-with-other-apps-such-as-omnifocus-and-2do.md) * [2Do knowledge base](https://www.2doapp.com/kb/) ## Common Questions * Can I use BusyCal and 2Do together? Yes. Both apps support CalDAV, so you can run them in parallel through a shared service such as iCloud and keep tasks visible in each. * Does 2Do have calendar views like BusyCal? No. 2Do is a task-first app. BusyCal provides Day, Week, Month, and Year Planner views, calendar subscriptions, and iCloud, Google, Microsoft 365 and Exchange, and CalDAV calendars in one window. * Which one is better for time blocking? BusyCal. It plans by time and availability, with cross-calendar time blocking, travel time, and events and tasks in the same workspace. 2Do is the stronger choice when you organize your work around lists, projects, sections, and tags. ## Official Links[​](#official-links "Direct link to Official Links") * [2Do official page](https://www.2doapp.com/) * [2Do knowledge base](https://www.2doapp.com/kb/) * [BusyCal for macOS](/busycal/) * [BusyCal for iOS](/busycalios.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # BusyCal vs Apple Calendar Apple Calendar comes free with macOS and handles everyday scheduling. BusyCal offers more ways to organize and view the same iCloud, Google, Exchange, and CalDAV accounts, including Calendar Sets and Calendar Groups, nested Smart Filters, tags, a Year Planner, and tasks alongside events. Last reviewed: October 16, 2026. ## Feature Snapshot[​](#feature-snapshot "Direct link to Feature Snapshot") | Capability | BusyCal | Apple Calendar | | ----------------------------------------------------------------------------------- | ----------------------------- | --------------------------------------------------------------------------------------------------------------- | | Sync accounts from several calendar services in one app | **✓** | **✓** | | On My Mac offline calendars | **✓** | **✓** | | Calendar Sets | **✓** | | | Calendar Groups | **✓** | | | Nested Smart Filters (ALL/ANY/NONE) | **✓** | | | Natural language Quick Entry | **✓** | Limited | | Smart Date Picker with real-time suggestions | **✓** | | | Working Hours toggle (collapse non-work hours) | **✓** | | | Sunrise & sunset shading in Day/Week views | **✓** | | | Side-by-side or stacked layouts for overlapping events | **✓** | | | Context menu event alignment (Match Start/End, Create Between) | **✓** | | | Multiple time zones in time ruler (up to 3) | **✓** | Limited (1 extra) | | Customizable view spans (2–90 days in week, 1–12 weeks in month) | **✓** | | | Weather forecasts & moon phases | **✓** | | | Travel time with live traffic updates | **✓** | **✓** (via Maps) | | Tags with auto-coloring and automatic tagging rules | **✓** | | | Configurable defaults (alarms, travel time, duration, priority, floating time zone) | **✓** | Limited | | Free/Busy availability viewer | **✓** | **✓** | | Meeting Rooms picker with live availability (Google Workspace + Microsoft 365) | **✓** | Limited (Exchange) | | Journal entry type | **✓** | | | Sticky notes attached to dates | **✓** | | | Event/date graphics and icons | **✓** | | | Customizable Info Panel | **✓** | | | Alarm Window with flexible snooze | **✓** | | | Holiday event display styles (footer, graphics) | **✓** | | | Year Planner + Overview | **✓** | **✓** | | Year metrics (Top Tags, Avg Scheduled / Workday, Meetings overview) | **✓** | | | Spreadsheet List View | **✓** | | | Task sorting, filtering, and grouping by calendar | **✓** | | | Task list printing | **✓** | Limited | | Print only Free/Busy information to keep event details private | **✓** | | | Cross-calendar time blocking (manual) | **✓** | Manual duplicate only | | Automatic time blocking with per-calendar rules (iCloud-synced) | **✓** | | | Travel time built into time-blocking events | **✓** | | | Favorite Time Zones | **✓** | | | Show event locations on a map | **✓** | | | Live countdown to next event in menu bar | **✓** | | | Automatic local backups | **✓** | | | CSV export | **✓** | | | Private LAN sync | **✓** | | | Custom fonts for views, notes, and titles | **✓** | | | Presets that save calendars, rules, view settings, and time zones together | **✓** | | | Conference call integration (Zoom, Teams) | **✓** | FaceTime only | | AppleScript automation | **✓** (full read/write) | Limited (degraded dictionary) | | Claude Desktop / MCP integration | **✓** | Community only | | Native AI scheduling assistant (built-in) | (uses Claude Desktop via MCP) | Limited (Apple Intelligence: Siri voice + "Found in Apps" date detection; no conversational calendar agent yet) | | Raycast extension | **✓** | Built-in (read-only) | | Shortcuts / Siri integration | **✓** | **✓** | | Apple Watch app | **✓** | **✓** | | Widgets (multiple sizes) | **✓** | **✓** | | One-time purchase (perpetual license) | **✓** | Free (built-in) | ## Booking Meetings with BusyCal[​](#booking-meetings-with-busycal "Direct link to Booking Meetings with BusyCal") Offer a 30-minute call through a link, and let the other person choose an available time. BusyCal Bookings checks busy times from your chosen calendars and adds confirmed meetings to the calendar you choose. You can set hours, leave breaks between meetings, ask questions, and approve each request if you prefer. **[Learn More](/docs/bookings.md)**. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. [See the access requirements](/docs/bookings.md#requirements). ## Where Apple Calendar May Be Better[​](#where-apple-calendar-may-be-better "Direct link to Where Apple Calendar May Be Better") * You want to use the calendar included with your Mac. * Apple Calendar and Reminders already cover your task needs. * You prefer a calendar with fewer settings to configure. * Your schedule is straightforward and doesn't need advanced filtering. ## Where BusyCal May Be Better[​](#where-busycal-may-be-better "Direct link to Where BusyCal May Be Better") * You want date suggestions as you type expressions such as `next fri`, `april 19`, or `w19` directly in a date field. [Learn more](/docs/busycal/date-picker.md). * You want a one-click Working Hours toggle to collapse non-work hours. [Learn more](/docs/busycal/70587-day-view.md#show-working-hours). * You want sunrise & sunset shading in Day and Week views. [Learn more](/docs/busycal/70602-weather.md#sunrise-and-sunset). * You want to align events using the context menu commands **Match Start/End**, **Create Between**, and **Create After**. [Learn more](/docs/busycal/70587-day-view.md#creating-events-in-between). * You want weather forecasts and moon phases in your calendar. [Learn more](/docs/busycal/70602-weather.md). * You want traffic-aware Time to Leave alarms that update every 5 minutes. [Learn more](/docs/busycal/70603-locations-maps-travel-time.md). * You want tags with auto-coloring and automatic tagging rules. [Learn more](/docs/busycal/70597-tags.md). * You want to show 2 to 90 days in Week view or 1 to 12 weeks in Month view. [Learn more](/docs/busycal/70588-week-view.md). * You need deeper customization than Apple Calendar offers. [Learn more](/docs/busycal/70607-preferences.md). * You want to save your preferred calendars and filters together using Smart Filters and Calendar Sets. [Learn more](/docs/busycal/70612-smart-filters.md#calendar-sets). * You want configurable columns to compare event details in List View. [Learn more](/docs/busycal/70591-list-view.md). * You need tools to organize and work with several calendars. [Learn more](/docs/busycal/70592-calendar-list.md#calendar-groups). * You want a customizable Info Panel showing only the fields you actually use. [Learn more](/docs/busycal/70595-info-panel.md#info-panel-preferences). * You want a Year Planner for long-range schedule planning. [Learn more](/docs/busycal/70590-year-view.md#year-planner). * You want a menu bar countdown for upcoming events. [Learn more](/docs/busycal/70606-busycal-menu.md#upcoming). * You want multiple alarms per event with flexible snooze controls. [Learn more](/docs/busycal/70604-alarms.md#displaying-alarms). * You want holiday event display styles, including footer placement. [Learn more](/docs/busycal/70600-holidays.md#holiday-calendar). * You want a spreadsheet-style List View with configurable columns. [Learn more](/docs/busycal/70591-list-view.md). * You want to view event locations on a map and plan travel time. [Learn more](/docs/busycal/70603-locations-maps-travel-time.md). * You want cross-calendar time blocking, with both **manual** blocks that stay synced to the original event and **automatic time-blocking rules** that mirror new or edited events from one calendar onto another (even across different accounts) based on your working schedule or a custom range of days and times. Rules sync across all your Macs and iPhones via iCloud. [Learn more](/docs/busycal/142884-cross-calendar-blocking-events.md#automatic-rules). * You want task list printing from within the app. [Learn more](/docs/busycal/70610-printing.md#printing-a-task-list). * You want automatic local backups and CSV export. [Learn more](/docs/busycal/70617-backing-up-and-restoring.md#automatic-backups) and [CSV export](/docs/busycal/70618-exporting-importing-and-merging-calendars.md#export-csv). * You want private LAN sync without relying on cloud providers. [Learn more](/docs/busycal/70655-using-busycal-on-a-lan.md). * You want custom fonts for views, notes, and titles. [Learn more](/docs/busycal/70607-preferences.md#appearance-preferences). * You want full AppleScript automation with a complete, maintained scripting dictionary. Apple Calendar's dictionary has not been meaningfully updated in years. [Learn more](/docs/busycal/70624-applescript.md). * You want to manage calendar items through an AI assistant. Apple Intelligence in Calendar currently covers Siri voice commands and "Found in Apps" date detection. BusyCal’s official Claude Desktop / MCP extension offers about 20 tools for events and tasks, including search, availability, finding free time, creating, updating, moving, duplicating, deferring, completing, and deleting items, and working with your current selection. [Learn more](/docs/busycal/70624-mcp.md). ## Common Questions * Can BusyCal replace Apple Calendar? Yes. BusyCal connects to the same iCloud, Google, Microsoft 365 and Exchange, and CalDAV accounts, so the same events appear in both apps and nothing has to be moved or converted. Apple Calendar stays installed either way. * Is BusyCal free like Apple Calendar? No. Apple Calendar comes with macOS at no cost. BusyCal for Mac is a one-time purchase of $49.99 with a free 14-day trial, and BusyCal for iPhone and iPad is $9.99 on the App Store. * What does BusyCal add over Apple Calendar? Calendar Sets and Calendar Groups, nested Smart Filters, tags with automatic rules, a Year Planner, a customizable Info Panel, weather and travel time, cross-calendar time blocking, and a spreadsheet-style List View. * Does BusyCal sync my tasks too? Yes. BusyCal shows tasks alongside events in calendar views. You can sort, filter, and group tasks by calendar, and sync them with Apple Reminders. ## Official Links[​](#official-links "Direct link to Official Links") * [Apple Calendar on macOS](https://www.apple.com/os/macos/) * [BusyCal for macOS](/busycal/) * [Using BusyCal with Apple Calendar data](/docs/busycal/140077-using-busycal-with-apple-calendar.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # Best Calendar App for Mac and iOS The best calendar app depends on how you plan. This page compares BusyCal with Fantastical, Outlook Calendar, Apple Calendar, Google Calendar, Notion Calendar, and Readdle Calendars on Mac and iOS. BusyCal may suit you if you want several calendar accounts in one window, detailed filters and view settings, tasks alongside events, and a one-time purchase option. Start with these questions: * Do you plan with calendar blocks, task lists, or both? * Do you need one app across iCloud, Google, Exchange, and CalDAV? * Do you want to customize views and settings, or use the defaults? * Do you want people to book available meeting times through a link? * Do you prefer a one-time purchase or a subscription? Below are links to individual comparisons, an overview of BusyCal features, and official product pages for each app. Last reviewed: October 16, 2026. ## Comparison Pages[​](#comparison-pages "Direct link to Comparison Pages") * [BusyCal vs Fantastical](/compare/fantastical.md) * [BusyCal vs Outlook Calendar](/compare/outlook-calendar.md) * [BusyCal vs Apple Calendar](/compare/apple-calendar.md) * [BusyCal vs Google Calendar](/compare/google-calendar.md) * [BusyCal vs Notion Calendar](/compare/notion-calendar.md) * [BusyCal vs Readdle Calendars](/compare/readdle-calendars.md) ## Booking Links[​](#booking-links "Direct link to Booking Links") BusyCal Bookings lets people book a call, consultation, or other meeting through a link. You choose the calendars to check for busy times, set your hours and breaks between meetings, and decide whether to approve each request. Confirmed bookings appear in the calendar you choose. **[Learn More](/docs/bookings.md)**. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. [See the access requirements](/docs/bookings.md#requirements). Fantastical has [Openings](https://flexibits.com/fantastical/help/openings), Google Calendar has [appointment schedules](https://support.google.com/calendar/answer/11608416), Notion Calendar has [scheduling links](https://www.notion.com/help/availability-blocking-and-time-zones), and Microsoft offers [Personal Bookings](https://learn.microsoft.com/en-us/microsoft-365/bookings/personal-bookings-faq?view=o365-worldwide). Compare their account and plan requirements as well as the booking options you need. ## What You Can Do with BusyCal[​](#what-sets-busycal-apart "Direct link to What You Can Do with BusyCal") * **Working Hours toggle:** Collapse non-work hours in Day and Week views with one click. * **Sunrise & sunset shading:** Show daylight and nighttime as light and dark bands in Day and Week views. * **Event alignment:** Use **Match Start/End**, **Create Between**, and **Create After** in the context menu to align events and fill gaps in your schedule. * **Nested Smart Filters (ALL/ANY/NONE):** Combine reusable groups of rules to filter your calendar. * **Calendar Sets and saved view settings:** Save calendars, filtering rules, and view settings together, then switch between them. * **Flexible Week view (2–90 days):** Show as few as two days or as many as 90. * **Multiple time zones:** Show up to three zones together in the time ruler. * **Weather forecasts and moon phases:** See both in your calendar views. * **Travel time with live traffic:** Get Time to Leave alarms that update with traffic conditions. * **Colored tags and rules:** Assign colors to tags and apply tags automatically during sync, with rules for each account. * **Conference calls:** Create Zoom and Teams meetings from an event with one click. * **Task organization:** Sort, filter, and group tasks using due dates, priorities, titles, calendars, tags, or manual order. * **Configurable defaults:** Set automatic alarms by event or task type, automatic travel time, default duration and priority, and a floating time zone. * **Upcoming event countdown:** See how long until your next event in the menu bar without opening the app. * **Automation:** Use [AppleScript](/docs/busycal/70624-applescript.md), the official [Claude Desktop / MCP integration](/docs/busycal/70624-mcp.md), or the [Raycast extension](/docs/busycal/70624-raycast.md) to work with your calendar. ## Official Calendar Product Pages[​](#official-calendar-product-pages "Direct link to Official Calendar Product Pages") * [Fantastical](https://flexibits.com/fantastical) * [Outlook Calendar](https://www.microsoft.com/en-us/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook) * [Apple Calendar](https://www.apple.com/os/macos/) * [Google Calendar](https://workspace.google.com/products/calendar/) * [Notion Calendar](https://www.notion.com/product/calendar) * [Readdle Calendars](https://readdle.com/calendars) ## Get Started with BusyCal[​](#get-started-with-busycal "Direct link to Get Started with BusyCal") * [BusyCal for macOS](/busycal/) * [BusyCal for iPhone and iPad](/busycalios.md) * [Getting started guide](/docs/busycal/70585-getting-started-with-busycal-for-mac.md) * [Getting started with Bookings](/docs/busycal/bookings-getting-started.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # BusyCal vs Fantastical BusyCal and Fantastical both bring several calendar services into one app, with calendar sets and links that let people book time with you. BusyCal offers Bookings, nested Smart Filters, adjustable calendar views, built-in tasks, and a one-time purchase option. Fantastical offers Openings and calendar sets that switch by location or time through its Premium subscription. Last reviewed: October 16, 2026. ## Feature Snapshot[​](#feature-snapshot "Direct link to Feature Snapshot") | Capability | BusyCal | Fantastical | | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | | Sync accounts from several calendar services in one app | **✓** | **✓** | | On My Mac offline calendars | **✓** | **✓** | | Calendar Sets | **✓** | **✓** | | Calendar Groups | **✓** | | | Nested Smart Filters (ALL/ANY/NONE) | **✓** | | | Natural language Quick Entry | **✓** | **✓** | | Smart Date Picker with real-time suggestions | **✓** | Title bar parsing only | | Working Hours toggle (collapse non-work hours) | **✓** | | | Sunrise & sunset shading in Day/Week views | **✓** | In weather view | | Side-by-side or stacked layouts for overlapping events | **✓** | | | Context menu event alignment (Match Start/End, Create Between) | **✓** | | | Multiple time zones in time ruler (up to 3) | **✓** | **✓** | | Customizable view spans (2–90 days in week, 1–12 weeks in month) | **✓** | | | Weather forecasts & moon phases | **✓** | **✓** (weather) | | Travel time with live traffic updates | **✓** | **✓** | | Tags with auto-coloring and automatic tagging rules | **✓** | | | Configurable defaults (alarms, travel time, duration, priority, floating time zone) | **✓** | Limited | | Free/Busy availability viewer | **✓** | **✓** | | Meeting Rooms picker with live availability (Google Workspace + Microsoft 365) | **✓** | **✓** | | Journal entry type | **✓** | | | Sticky notes attached to dates | **✓** | | | Event/date graphics and icons | **✓** | | | Customizable Info Panel | **✓** | | | Alarm Window with flexible snooze | **✓** | | | Holiday event display styles (footer, graphics) | **✓** | | | Year Planner + Overview | **✓** | Year View Only | | Year metrics (Top Tags, Avg Scheduled / Workday, Meetings overview) | **✓** | | | Spreadsheet List View | **✓** | | | Task sorting, filtering, and grouping by calendar | **✓** | Limited | | Task list printing | **✓** | Limited | | Print only Free/Busy information to keep event details private | **✓** | | | Cross-calendar time blocking (manual) | **✓** | Manual duplicate only | | Automatic time blocking with per-calendar rules (iCloud-synced) | **✓** | | | Travel time built into time-blocking events | **✓** | | | Favorite Time Zones | **✓** | **✓** | | Show event locations on a map | **✓** | | | Live countdown to next event in menu bar | **✓** | Remaining time only | | Automatic local backups | **✓** | | | CSV export | **✓** | | | Private LAN sync | **✓** | | | Custom fonts for views, notes, and titles | **✓** | | | Presets that save calendars, rules, view settings, and time zones together | **✓** | | | Conference call integration (Zoom, Teams) | **✓** | **✓** | | AppleScript automation | **✓** (full read/write) | Limited (parse only) | | Claude Desktop / MCP integration | **✓** (events, tasks, journals, stickies; tags, reminders, IANA time zones, selected items, find free time, duplicate, open-in-app) | **✓** (events only: search, create, rename/reschedule, delete, availability) | | Raycast extension | **✓** | **✓** | | Shareable booking links | **✓** ([Bookings](/docs/bookings.md)) | **✓** (Openings, Premium) | | Apple Watch app | **✓** | **✓** | | Widgets (multiple sizes) | **✓** | **✓** | | Shortcuts / Siri integration | **✓** | **✓** | | One-time purchase (perpetual license) | **✓** | Subscription only | ## Bookings and Openings[​](#bookings-and-openings "Direct link to Bookings and Openings") Both [BusyCal Bookings](/docs/bookings.md) and [Fantastical Openings](https://flexibits.com/fantastical/help/openings) let people choose an available time through a link. With Bookings, you can offer a short call or a longer consultation, set your hours and breaks between meetings, ask questions, and confirm bookings automatically or approve each request. BusyCal checks the busy times from your chosen calendars without sharing their event titles or notes. It adds confirmed bookings to the calendar you choose. **[Learn More](/docs/bookings.md)**. Bookings is included while your Mac license covers updates (plus a 14-day grace period), your Mac App Store subscription or Setapp membership is active, or your free trial is running. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Keep BusyCal running on your Mac to keep availability up to date. [See the access requirements](/docs/bookings.md#requirements). ## Where Fantastical May Be Better[​](#where-fantastical-may-be-better "Direct link to Where Fantastical May Be Better") * You want Calendar Sets that switch automatically by location or time. * You prefer Fantastical's overall look and feel. * You're comfortable with a recurring subscription. ## Where BusyCal May Be Better[​](#where-busycal-may-be-better "Direct link to Where BusyCal May Be Better") * You prefer to buy the Mac app from our store with a perpetual license. Bookings access depends on the requirements above. [Learn more](/docs/faqs/120616-licensing-explained.md). * You want date suggestions as you type expressions such as `next fri`, `april 19`, or `w19` directly in a date field. Fantastical parses natural language only in the title bar. [Learn more](/docs/busycal/date-picker.md). * You want a one-click Working Hours toggle to collapse non-work hours. [Learn more](/docs/busycal/70587-day-view.md#show-working-hours). * You want sunrise & sunset shading in Day and Week views. [Learn more](/docs/busycal/70602-weather.md#sunrise-and-sunset). * You want to align events using the context menu commands **Match Start/End**, **Create Between**, and **Create After**. [Learn more](/docs/busycal/70587-day-view.md#creating-events-in-between). * You want moon phases alongside weather forecasts. [Learn more](/docs/busycal/70602-weather.md). * You want tags with auto-coloring and automatic tagging rules. [Learn more](/docs/busycal/70597-tags.md). * You want to show 2 to 90 days in Week view or 1 to 12 weeks in Month view. [Learn more](/docs/busycal/70588-week-view.md). * You want advanced task sorting, filtering, and grouping by calendar. [Learn more](/docs/busycal/70607-preferences.md#to-dos). * You want one-click Zoom or Teams meeting creation from inside your calendar. [Learn more](/docs/busycal/119897-using-busycal-with-zoom.md). * You need nested Smart Filters with ALL/ANY/NONE conditions. [Learn more](/docs/busycal/70612-smart-filters.md#nestedfilters). * You want Calendar Sets, content conditions, and view preferences saved together. [Learn more](/docs/busycal/70612-smart-filters.md#combination-filters). * You want to return to saved layouts with one click, such as a 4-day Week view, a 3-week Month view, or custom List columns. [Learn more](/docs/busycal/70612-smart-filters.md#view-settings). * You need filter presets that remember your selected time zone when you travel. [Learn more](/docs/busycal/70612-smart-filters.md#remember-time-zone). * You want custom columns, adjustable Week and Month views, and view settings saved with filters. [Learn more](/docs/busycal/70591-list-view.md). * You want to customize views, tasks, alarms, appearance, and the menu bar. [Learn more](/docs/busycal/70607-preferences.md). * You want a menu bar countdown for upcoming events. [Learn more](/docs/busycal/70606-busycal-menu.md#upcoming). * You want multiple alarms per event with flexible snooze controls. [Learn more](/docs/busycal/70604-alarms.md#displaying-alarms). * You want holiday event display styles, including footer placement. [Learn more](/docs/busycal/70600-holidays.md#holiday-calendar). * You want a customizable Info Panel showing only the fields you use. [Learn more](/docs/busycal/70595-info-panel.md#info-panel-preferences). * You want a Year Planner for long-range scheduling. [Learn more](/docs/busycal/70590-year-view.md#year-planner). * You want a spreadsheet-style List View with configurable columns. [Learn more](/docs/busycal/70591-list-view.md). * You want cross-calendar time blocking, with both **manual** blocks that stay synced to the original event and **automatic time-blocking rules** that mirror events across calendars (and accounts) based on your working schedule or a custom range of days and times. Rules sync via iCloud across all your Macs and iPhones. [Learn more](/docs/busycal/142884-cross-calendar-blocking-events.md#automatic-rules). * You want to view event locations on a map and plan travel time. [Learn more](/docs/busycal/70603-locations-maps-travel-time.md). * You want task list printing from within the app. [Learn more](/docs/busycal/70610-printing.md#printing-a-task-list). * You want automatic local backups with configurable retention. [Learn more](/docs/busycal/70617-backing-up-and-restoring.md#automatic-backups). * You want CSV export for reporting. [Learn more](/docs/busycal/70618-exporting-importing-and-merging-calendars.md#export-csv). * You want private LAN sync without relying on cloud providers. [Learn more](/docs/busycal/70655-using-busycal-on-a-lan.md). * You want custom fonts for views, notes, and titles. [Learn more](/docs/busycal/70607-preferences.md#appearance-preferences). * You want to create, read, modify, and delete events and tasks with AppleScript. Fantastical's AppleScript is limited to `parse sentence`. [Learn more](/docs/busycal/70624-applescript.md). * You want Claude to work with tasks as well as events. BusyCal’s MCP extension offers about 20 tools: search events, tasks, journals, graphics, and sticky notes; read selected items; find free time within working hours; duplicate items across calendars; update tags, My Tags, and reminders; defer or complete tasks; reschedule using named IANA time zones; and open items in BusyCal’s Info Panel. Fantastical’s connector covers events only, with search, creation, renaming, rescheduling, deletion, and basic availability. [Learn more](/docs/busycal/70624-mcp.md). ## What BusyCal Helps You Do[​](#what-busycal-helps-you-do "Direct link to What BusyCal Helps You Do") These features let you adjust how you view and manage your schedule: * Smart Filters with nested rule groups and saved searches. * Calendar Sets saved through Smart Filters, so you can switch calendars and filtering rules together. * Remember View Settings for custom week/month/list layouts. * Remember Time Zone to restore a saved time zone when you switch filters. * Integrated tasks in calendar views with sorting and Reminders sync. * Natural language event entry with live parsing. * Favorite Time Zones and travel time planning. * Menu bar calendar, customizable info panel, tags, graphics, and reminder controls. ## Common Questions * Does BusyCal require a subscription like Fantastical? No. BusyCal for Mac is a one-time purchase of $49.99 from our store, with a perpetual license and a free 14-day trial. BusyCal for iPhone and iPad is $9.99 on the App Store. Fantastical’s Premium features require a subscription. * Can BusyCal sync the same calendar accounts as Fantastical? Yes. Both apps bring several providers into one window, including iCloud, Google, Microsoft 365 and Exchange, and CalDAV accounts, and both support offline On My Mac calendars. * Does BusyCal have booking links like Fantastical Openings? Yes. BusyCal Bookings lets you share a page where people choose an available meeting time. You can set hours, leave breaks between meetings, ask questions, and approve requests. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. * Can Fantastical switch Calendar Sets automatically? Yes. Fantastical can switch Calendar Sets by location or time. BusyCal has Calendar Sets that you switch yourself, with options to save filters, view settings, and time zones together. * Does BusyCal run on iPhone, iPad, and Apple Watch? Yes. BusyCal has Mac, iPhone, iPad, and Apple Watch apps, along with widgets in several sizes and Shortcuts and Siri support. ## Official Links[​](#official-links "Direct link to Official Links") * [Fantastical official product page](https://flexibits.com/fantastical) * [BusyCal for macOS](/busycal/) * [BusyCal for iOS](/busycalios.md) * [BusyCal getting started guide](/docs/busycal/70585-getting-started-with-busycal-for-mac.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # BusyCal vs Google Calendar Google Calendar is free and works in a browser. BusyCal is a paid Mac and iOS app that syncs with the same Google account. It adds Calendar Sets, nested Smart Filters, customizable view spans, offline On My Mac calendars, and the option to show iCloud, Exchange, and CalDAV calendars in the same window. Last reviewed: October 16, 2026. ## Feature Snapshot[​](#feature-snapshot "Direct link to Feature Snapshot") | Capability | BusyCal | Google Calendar | | ----------------------------------------------------------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------- | | Native macOS desktop app | **✓** | | | Sync accounts from several calendar services in one app | **✓** | | | On My Mac offline calendars | **✓** | | | Calendar Sets | **✓** | | | Calendar Groups | **✓** | | | Nested Smart Filters (ALL/ANY/NONE) | **✓** | | | Natural language Quick Entry | **✓** | Limited | | Smart Date Picker with real-time suggestions | **✓** | | | Working Hours toggle (collapse non-work hours) | **✓** | Settings only | | Sunrise & sunset shading in Day/Week views | **✓** | | | Side-by-side or stacked layouts for overlapping events | **✓** | | | Context menu event alignment (Match Start/End, Create Between) | **✓** | | | Multiple time zones in time ruler (up to 3) | **✓** | **✓** (2) | | Customizable view spans (2–90 days in week, 1–12 weeks in month) | **✓** | Limited (2–4 days) | | Weather forecasts & moon phases | **✓** | | | Travel time with live traffic updates | **✓** | | | Tags with auto-coloring and automatic tagging rules | **✓** | | | Configurable defaults (alarms, travel time, duration, priority, floating time zone) | **✓** | Limited | | Free/Busy availability viewer | **✓** | **✓** (Workspace) | | Meeting Rooms picker with live availability (Google Workspace + Microsoft 365) | **✓** | **✓** (Workspace) | | Journal entry type | **✓** | | | Sticky notes attached to dates | **✓** | | | Event/date graphics and icons | **✓** | | | Customizable Info Panel | **✓** | | | Alarm Window with flexible snooze | **✓** | | | Holiday event display styles (footer, graphics) | **✓** | | | Year Planner + Overview | **✓** | **✓** | | Year metrics (Top Tags, Avg Scheduled / Workday, Meetings overview) | **✓** | | | Spreadsheet List View | **✓** | | | Task sorting, filtering, and grouping by calendar | **✓** | | | Task list printing | **✓** | Limited | | Print only Free/Busy information to keep event details private | **✓** | | | Cross-calendar time blocking (manual) | **✓** | Manual duplicate only | | Automatic time blocking with per-calendar rules (iCloud-synced) | **✓** | | | Travel time built into time-blocking events | **✓** | | | Favorite Time Zones | **✓** | | | Show event locations on a map | **✓** | | | Live countdown to next event in menu bar | **✓** | | | Automatic local backups | **✓** | | | CSV export | **✓** | | | Private LAN sync | **✓** | | | Custom fonts for views, notes, and titles | **✓** | | | Conference call integration (Zoom, Teams) | **✓** | **✓** (Google Meet) | | AppleScript automation | **✓** (full read/write) | (web app) | | Claude Desktop / MCP integration | **✓** | Community only | | Native AI scheduling assistant (built-in) | (uses Claude Desktop via MCP) | **✓** (Gemini: "Help me schedule" in Gmail/Calendar; NL event creation; eligible Workspace plans) | | Raycast extension | **✓** | **✓** | | Shareable booking links | **✓** ([Bookings](/docs/bookings.md)) | **✓** (appointment schedules; features vary by plan) | | Browser-first collaboration workflow | | **✓** | | Cross-platform (any device with a browser) | Mac + iOS | **✓** | | Apple Watch app | **✓** | **✓** | | Widgets (multiple sizes) | **✓** | **✓** (mobile) | | Shortcuts / Siri integration | **✓** | | | One-time purchase (perpetual license) | **✓** | Free | ## Booking Meetings[​](#booking-meetings "Direct link to Booking Meetings") Both apps let people book an available time through a link. BusyCal Bookings lets you offer different meeting types, set hours and breaks between meetings, and check busy times across the calendars you use in BusyCal. **[Learn More](/docs/bookings.md)**. Google Calendar’s [appointment schedules](https://support.google.com/calendar/answer/11608416) work in the browser. A personal Google account can create one booking page; [extra features require an eligible paid plan](https://support.google.com/calendar/answer/16287038). Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. [See the access requirements](/docs/bookings.md#requirements). ## Where Google Calendar May Be Better[​](#where-google-calendar-may-be-better "Direct link to Where Google Calendar May Be Better") * You spend most of your time in a browser and want access from any device. * You prioritize collaboration in Google Workspace. * You want to manage appointment schedules in a browser alongside your Google calendars. * You need Free/Busy visibility across your Google Workspace team. * You want a free calendar that works everywhere without installing anything. ## Where BusyCal May Be Better[​](#where-busycal-may-be-better "Direct link to Where BusyCal May Be Better") * You prefer to buy the Mac app from our store with a perpetual license. Bookings access depends on the requirements above. [Learn more](/docs/faqs/120616-licensing-explained.md). * You want date suggestions as you type expressions such as `next fri`, `april 19`, or `w19` directly in a date field. [Learn more](/docs/busycal/date-picker.md). * You want a one-click Working Hours toggle to collapse non-work hours. [Learn more](/docs/busycal/70587-day-view.md#show-working-hours). * You want sunrise & sunset shading in Day and Week views. [Learn more](/docs/busycal/70602-weather.md#sunrise-and-sunset). * You want to align events using the context menu commands **Match Start/End**, **Create Between**, and **Create After**. [Learn more](/docs/busycal/70587-day-view.md#creating-events-in-between). * You want weather forecasts and moon phases in your calendar. [Learn more](/docs/busycal/70602-weather.md). * You want traffic-aware travel time with Time to Leave alarms. [Learn more](/docs/busycal/70603-locations-maps-travel-time.md). * You want tags with auto-coloring and automatic tagging rules. [Learn more](/docs/busycal/70597-tags.md). * You want to show 2 to 90 days in Week view or 1 to 12 weeks in Month view. [Learn more](/docs/busycal/70588-week-view.md). * You want a Mac app with more settings for views, events, and tasks. [Learn more](/docs/busycal/70607-preferences.md). * You want to filter events by calendar, tag, or other details. [Learn more](/docs/busycal/70612-smart-filters.md#nestedfilters). * You want to choose which event details appear as columns in List View. [Learn more](/docs/busycal/70591-list-view.md). * You want one app that shows Google, Outlook/Microsoft 365, iCloud, and CalDAV calendars together. [Learn more](/docs/busycal/70592-calendar-list.md#accounts). * You want a menu bar countdown for upcoming events. [Learn more](/docs/busycal/70606-busycal-menu.md#upcoming). * You want multiple alarms per event with flexible snooze controls. [Learn more](/docs/busycal/70604-alarms.md#displaying-alarms). * You want holiday event display styles, including footer placement. [Learn more](/docs/busycal/70600-holidays.md#holiday-calendar). * You want a customizable Info Panel showing only the fields you use. [Learn more](/docs/busycal/70595-info-panel.md#info-panel-preferences). * You want a Year Planner for long-range scheduling. [Learn more](/docs/busycal/70590-year-view.md#year-planner). * You want a spreadsheet-style List View with configurable columns. [Learn more](/docs/busycal/70591-list-view.md). * You want to view event locations on a map and plan travel time. [Learn more](/docs/busycal/70603-locations-maps-travel-time.md). * You want cross-calendar time blocking, with both **manual** blocks that stay synced to the original event and **automatic time-blocking rules** that mirror new or edited events from one calendar onto another (even across different accounts) based on your working schedule or a custom range of days and times. Rules sync across all your Macs and iPhones via iCloud. [Learn more](/docs/busycal/142884-cross-calendar-blocking-events.md#automatic-rules). * You want task list printing from within the app. [Learn more](/docs/busycal/70610-printing.md#printing-a-task-list). * You want automatic local backups and CSV export. [Learn more](/docs/busycal/70617-backing-up-and-restoring.md#automatic-backups) and [CSV export](/docs/busycal/70618-exporting-importing-and-merging-calendars.md#export-csv). * You want private LAN sync without relying on cloud providers. [Learn more](/docs/busycal/70655-using-busycal-on-a-lan.md). * You want custom fonts for views, notes, and titles. [Learn more](/docs/busycal/70607-preferences.md#appearance-preferences). * You want AppleScript automation and an official Claude Desktop / MCP integration. Google Calendar has no native macOS scripting. Its Gemini features currently focus on "Help me schedule" suggestions for two-person meetings in Gmail and natural-language event creation on eligible Workspace plans. BusyCal’s Claude/MCP extension offers about 20 tools for events and tasks, including working with selected items, finding free time within working hours, rescheduling with named IANA time zones, duplicating items across calendars, and updating tags and reminders. [Learn more](/docs/busycal/70624-applescript.md). ## Common Questions * Does BusyCal sync with Google Calendar? Yes. BusyCal syncs your Google calendars natively, and can show them beside iCloud, Microsoft 365 and Exchange, and CalDAV calendars in one window. You keep using the same Google account. * Is BusyCal free like Google Calendar? No. Google Calendar is free. BusyCal for Mac is a one-time purchase of $49.99 with a free 14-day trial, and BusyCal for iPhone and iPad is $9.99 on the App Store. * Does BusyCal work without a connection? Yes. BusyCal is a native Mac app, and On My Mac calendars live on your device rather than on a server. * What does BusyCal add over the Google Calendar web app? Calendar Sets and Calendar Groups, nested Smart Filters, a Smart Date Picker that suggests dates as you type, customizable view spans, a Year Planner, tags, weather and travel time, and automatic local backups. ## Official Links[​](#official-links "Direct link to Official Links") * [Google Calendar official page](https://workspace.google.com/products/calendar/) * [BusyCal for macOS](/busycal/) * [Using BusyCal with Google Calendar](/docs/busycal/70636-using-busycal-with-google.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # BusyCal vs Notion Calendar Notion Calendar is free with Notion and supports Google, iCloud, and Outlook accounts. BusyCal is a paid Mac and iOS calendar with more settings for views and filtering. It adds Exchange and CalDAV accounts, offline On My Mac calendars, Calendar Sets, nested Smart Filters, and tasks. Last reviewed: October 16, 2026. ## Feature Snapshot[​](#feature-snapshot "Direct link to Feature Snapshot") | Capability | BusyCal | Notion Calendar | | ----------------------------------------------------------------------------------- | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | Native macOS desktop app | **✓** | **✓** | | Multi-provider sync (iCloud + Google + Exchange + CalDAV) | **✓** | Google + iCloud + Outlook | | On My Mac offline calendars | **✓** | | | CalDAV account support | **✓** | | | Calendar Sets | **✓** | | | Calendar Groups | **✓** | | | Nested Smart Filters (ALL/ANY/NONE) | **✓** | | | Natural language Quick Entry | **✓** | | | Smart Date Picker with real-time suggestions | **✓** | | | Working Hours toggle (collapse non-work hours) | **✓** | | | Sunrise & sunset shading in Day/Week views | **✓** | | | Side-by-side or stacked layouts for overlapping events | **✓** | | | Context menu event alignment (Match Start/End, Create Between) | **✓** | | | Multiple time zones in time ruler (up to 3) | **✓** | Limited | | Customizable view spans (2–90 days in week, 1–12 weeks in month) | **✓** | | | Weather forecasts & moon phases | **✓** | | | Travel time with live traffic updates | **✓** | | | Tags with auto-coloring and automatic tagging rules | **✓** | | | Configurable defaults (alarms, travel time, duration, priority, floating time zone) | **✓** | | | Journal entry type | **✓** | | | Sticky notes attached to dates | **✓** | | | Event/date graphics and icons | **✓** | | | Customizable Info Panel | **✓** | | | Alarm Window with flexible snooze | **✓** | | | Holiday event display styles (footer, graphics) | **✓** | | | Year Planner + Overview | **✓** | | | Year metrics (Top Tags, Avg Scheduled / Workday, Meetings overview) | **✓** | | | Meeting Rooms picker with live availability (Google Workspace + Microsoft 365) | **✓** | **✓** | | Spreadsheet List View | **✓** | | | Task list printing | **✓** | | | Print only Free/Busy information to keep event details private | **✓** | | | Task sorting, filtering, and grouping by calendar | **✓** | | | Cross-calendar time blocking (manual) | **✓** | Manual duplicate only | | Automatic time blocking with per-calendar rules (iCloud-synced) | **✓** | | | Travel time built into time-blocking events | **✓** | | | Conference call integration (Zoom, Teams) | **✓** | | | Live countdown to next event in menu bar | **✓** | | | Automatic local backups | **✓** | | | CSV export | **✓** | | | Private LAN sync | **✓** | | | Custom fonts for views, notes, and titles | **✓** | | | Notion database integration | | **✓** | | Meeting notes linked to events | | **✓** | | Shareable booking links | **✓** ([Bookings](/docs/bookings.md)) | **✓** (scheduling links) | | Free with Notion plan | | **✓** | | AppleScript automation | **✓** (full read/write) | | | Claude Desktop / MCP integration | **✓** | (Notion workspace only) | | Native AI scheduling assistant (built-in) | (uses Claude Desktop via MCP) | **✓** (Notion Agent + Calendar Optimizer: automated scheduling, shared-time finding, calendar summarization within Notion) | | Raycast extension | **✓** | (Notion workspace only) | | Cross-platform (Mac, Windows, iOS, Android, Web) | Mac + iOS | **✓** | | Apple Watch app | **✓** | | | Widgets (multiple sizes) | **✓** | | | Shortcuts / Siri integration | **✓** | | | One-time purchase (perpetual license) | **✓** | Free with Notion | ## Booking Meetings[​](#booking-meetings "Direct link to Booking Meetings") Both apps let you share a link so people can book time with you. BusyCal Bookings offers meeting pages with your chosen hours, breaks between meetings, questions, and automatic or manual approval. It checks busy times from the calendars you choose in BusyCal and adds confirmed bookings to your chosen calendar. **[Learn More](/docs/bookings.md)**. Notion Calendar offers [one-off and recurring scheduling links](https://www.notion.com/help/availability-blocking-and-time-zones) that you create on desktop or the web. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. [See the access requirements](/docs/bookings.md#requirements). ## Where Notion Calendar May Be Better[​](#where-notion-calendar-may-be-better "Direct link to Where Notion Calendar May Be Better") * Your workflow revolves around Notion databases and project pages. * You prefer a calendar with fewer settings to configure. * You want meeting notes linked directly to calendar events inside Notion. * You need a free calendar app. Notion Calendar is included with Notion at no extra cost. * You want cross-platform access on Mac, Windows, iOS, Android, and the web. * You value tight integration with Notion project timelines and databases. ## Where BusyCal May Be Better[​](#where-busycal-may-be-better "Direct link to Where BusyCal May Be Better") * You prefer to buy the Mac app from our store with a perpetual license. Bookings access depends on the requirements above. [Learn more](/docs/faqs/120616-licensing-explained.md). * You want date suggestions as you type expressions such as `next fri`, `april 19`, or `w19` directly in a date field. [Learn more](/docs/busycal/date-picker.md). * You need a calendar with extensive settings for views, events, and tasks. [Learn more](/docs/busycal/70607-preferences.md). * You want nested Smart Filters with ALL/ANY/NONE logic. [Learn more](/docs/busycal/70612-smart-filters.md#nestedfilters). * You want to collapse non-working hours with a one-click Working Hours toggle. [Learn more](/docs/busycal/70587-day-view.md#show-working-hours). * You want sunrise & sunset shading in Day and Week views. [Learn more](/docs/busycal/70602-weather.md#sunrise-and-sunset). * You want to align events using the context menu commands **Match Start/End**, **Create Between**, and **Create After**. [Learn more](/docs/busycal/70587-day-view.md#creating-events-in-between). * You need multiple time zones displayed simultaneously in the time ruler. [Learn more](/docs/busycal/70609-time-zones.md). * You want to show 2 to 90 days in Week view or 1 to 12 weeks in Month view. [Learn more](/docs/busycal/70588-week-view.md). * You want weather forecasts and moon phases in your calendar. [Learn more](/docs/busycal/70602-weather.md). * You want traffic-aware travel time with Time to Leave alarms. [Learn more](/docs/busycal/70603-locations-maps-travel-time.md). * You want tags with auto-coloring and automatic tagging rules. [Learn more](/docs/busycal/70597-tags.md). * You need CalDAV support or On My Mac offline calendars. [Learn more](/docs/busycal/70592-calendar-list.md#accounts). * You want one app that syncs iCloud, Google, Exchange, and CalDAV calendars together. [Learn more](/docs/busycal/70592-calendar-list.md#accounts). * You want a Year Planner for long-range scheduling. [Learn more](/docs/busycal/70590-year-view.md#year-planner). * You want a spreadsheet-style List View with configurable columns. [Learn more](/docs/busycal/70591-list-view.md). * You want cross-calendar time blocking, with both **manual** blocks that stay synced to the original event and **automatic time-blocking rules** that mirror events from one calendar onto another (even across different accounts) based on your working schedule or a custom range of days and times. Rules sync across all your Macs and iPhones via iCloud. [Learn more](/docs/busycal/142884-cross-calendar-blocking-events.md#automatic-rules). * You want to work directly with your calendar through AppleScript, the official Claude Desktop / MCP integration, or a Raycast extension. Notion Agent and Calendar Optimizer provide AI calendar tools within the Notion workspace and require a Notion plan. Notion Calendar itself has no AppleScript support or Raycast integration. [Learn more](/docs/busycal/70624-applescript.md). ## Common Questions * Which calendar accounts does BusyCal support that Notion Calendar does not? BusyCal adds Microsoft 365 and Exchange, CalDAV accounts, and offline On My Mac calendars. Notion Calendar covers Google, iCloud, and Outlook. * Is BusyCal free like Notion Calendar? No. Notion Calendar is free with Notion. BusyCal for Mac is a one-time purchase of $49.99 with a free 14-day trial, and BusyCal for iPhone and iPad is $9.99 on the App Store. * Does BusyCal have an Apple Watch app? Yes. BusyCal has an Apple Watch app and widgets in several sizes. Notion Calendar does not. * What does BusyCal add for more complex schedules? Calendar Sets and Calendar Groups, nested Smart Filters, customizable view spans, a Year Planner, tags with automatic rules, weather and travel time, cross-calendar time blocking, and automatic local backups. ## Official Links[​](#official-links "Direct link to Official Links") * [Notion Calendar](https://www.notion.com/product/calendar) * [BusyCal for macOS](/busycal/) * [BusyCal for iOS](/busycalios.md) * [BusyCal getting started guide](/docs/busycal/70585-getting-started-with-busycal-for-mac.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # BusyCal vs OmniFocus OmniFocus organizes projects and tasks, with nested project structure and regular reviews. BusyCal focuses on calendar planning, with tasks alongside events. It brings iCloud, Google, Microsoft 365 and Exchange, and CalDAV calendars into one window. Last reviewed: October 16, 2026. ## At a Glance[​](#at-a-glance "Direct link to At a Glance") | Criteria | BusyCal | OmniFocus | | ------------- | ---------------------------------------- | --------------------------------------------------- | | Primary model | Calendar-first scheduling | Project and task management | | Best fit | Planning around time and availability | Breaking projects into tasks and reviewing progress | | Strength | Calendar context and schedule visibility | Project hierarchy and task control | | Trade-off | Lighter project hierarchy | Fewer calendar planning tools | ## Calendar & Sync Comparison[​](#calendar--sync-comparison "Direct link to Calendar & Sync Comparison") | Capability | BusyCal | OmniFocus | | ---------------------------------------------------------------------------- | ------- | --------------------------------- | | Native CalDAV account sync | **✓** | | | Microsoft 365 / Exchange calendar sync | **✓** | | | Calendar subscriptions (.ics / holiday feeds) | **✓** | | | Multiple provider calendars in one app (iCloud + Google + Exchange + CalDAV) | **✓** | | | Calendar views (Day / Week / Month / Year Planner) | **✓** | | | Calendar Groups | **✓** | | | Smart Date Picker with real-time suggestions | **✓** | Accepts shorthand, no suggestions | | Favorite Time Zones | **✓** | | | Show event locations on a map | **✓** | | | Apple Watch app | **✓** | **✓** | | Widgets (multiple sizes) | **✓** | **✓** | | Shortcuts / Siri integration | **✓** | **✓** | | Task-database sync via first-party cloud or WebDAV | | **✓** | ## Where OmniFocus May Be Better[​](#where-omnifocus-may-be-better "Direct link to Where OmniFocus May Be Better") * You want to break projects into smaller tasks and review them regularly. * You follow a structured method for managing tasks. * You prefer OmniFocus sync via Omni Sync Server or WebDAV. ## Where BusyCal May Be Better[​](#where-busycal-may-be-better "Direct link to Where BusyCal May Be Better") * You want to plan calendar events and tasks together. * You plan work around calendar events and available time. * You need to see several calendars together. * You want [Calendar Groups](/docs/busycal/70592-calendar-list.md#calendar-groups) to organize many calendars into folders. * You want to see iCloud, Google, Microsoft 365, Exchange, and CalDAV calendars in one app. * You want to view event locations on a map and include travel time in your schedule. ## Booking Meetings with BusyCal[​](#booking-meetings-with-busycal "Direct link to Booking Meetings with BusyCal") Use BusyCal Bookings to let clients or colleagues choose an available meeting time through a link. For example, offer a 30-minute project call with a break afterward. Bookings checks busy times from your chosen calendars, lets you approve requests if needed, and adds confirmed meetings to your calendar. **[Learn More](/docs/bookings.md)**. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. [See the access requirements](/docs/bookings.md#requirements). ## BusyCal Account Sync Docs[​](#busycal-account-sync-docs "Direct link to BusyCal Account Sync Docs") * [Office 365 via Microsoft Graph](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) * [CalDAV account sync](/docs/busycal/70647-using-busycal-with-caldav.md#syncing) * [Public WebDAV calendar subscriptions](/docs/busycal/70601-subscribing-to-public-calendars.md) * [Google Calendar sync](/docs/busycal/70636-using-busycal-with-google.md) * [iCloud calendar sync](/docs/busycal/70630-using-busycal-with-icloud.md) * [View event locations and plan travel time](/docs/busycal/70603-locations-maps-travel-time.md) ## Common Questions * Does BusyCal sync with OmniFocus? Not directly, but OmniFocus can publish its items as a WebDAV subscription, and BusyCal can subscribe to it. BusyCal has built-in support for CalDAV and WebDAV servers and subscriptions, so it works with any app that supports the same. * Can BusyCal manage projects the way OmniFocus does? Not to the same depth. OmniFocus is built for project hierarchy, review cycles, and sequential tasks. BusyCal keeps tasks beside your calendar for time-based planning instead. * Is BusyCal a subscription? No. BusyCal for Mac is a one-time purchase of $49.99 from our store, with a perpetual license and a free 14-day trial. BusyCal for iPhone and iPad is $9.99 on the App Store. ## Official Links[​](#official-links "Direct link to Official Links") * [OmniFocus official page](https://www.omnigroup.com/omnifocus) * [BusyCal product page](/busycal/) * [BusyCal smart filters](/docs/busycal/70612-smart-filters.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # BusyCal vs Outlook Calendar Outlook keeps email and calendar in one app, which may suit you if you do most of your work in Microsoft 365. BusyCal is a dedicated calendar that works alongside your preferred email app. It shows Microsoft 365 and Exchange, iCloud, Google, and CalDAV calendars in one window, with detailed views, filters, and built-in tasks. Last reviewed: October 16, 2026. ## Feature Snapshot[​](#feature-snapshot "Direct link to Feature Snapshot") | Capability | BusyCal | Outlook Calendar | | ----------------------------------------------------------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | | Native macOS desktop app | **✓** | **✓** | | Email + calendar in one app | | **✓** | | Sync accounts from several calendar services in one app | **✓** | | | On My Mac offline calendars | **✓** | Limited | | Calendar Sets | **✓** | | | Calendar Groups | **✓** | | | Nested Smart Filters (ALL/ANY/NONE) | **✓** | | | Natural language Quick Entry | **✓** | | | Smart Date Picker with real-time suggestions | **✓** | (accepts text, no suggestions) | | Working Hours toggle (collapse non-work hours) | **✓** | | | Sunrise & sunset shading in Day/Week views | **✓** | | | Side-by-side or stacked layouts for overlapping events | **✓** | | | Context menu event alignment (Match Start/End, Create Between) | **✓** | | | Multiple time zones in time ruler (up to 3) | **✓** | **✓** (up to 3) | | Customizable view spans (2–90 days in week, 1–12 weeks in month) | **✓** | | | Weather forecasts & moon phases | **✓** | | | Travel time with live traffic updates | **✓** | | | Tags with auto-coloring and automatic tagging rules | **✓** | Categories only | | Configurable defaults (alarms, travel time, duration, priority, floating time zone) | **✓** | Limited | | Free/Busy availability viewer | **✓** | **✓** (Exchange) | | Shareable booking links | **✓** ([Bookings](/docs/bookings.md)) | **✓** (Microsoft Bookings; eligible license required) | | Meeting Rooms picker with live availability (Google Workspace + Microsoft 365) | **✓** | **✓** (Room Finder) | | Journal entry type | **✓** | | | Sticky notes attached to dates | **✓** | | | Event/date graphics and icons | **✓** | | | Customizable Info Panel | **✓** | | | Alarm Window with flexible snooze | **✓** | | | Holiday event display styles (footer, graphics) | **✓** | | | Year Planner + Overview | **✓** | | | Year metrics (Top Tags, Avg Scheduled / Workday, Meetings overview) | **✓** | | | Spreadsheet List View | **✓** | Limited | | Task sorting, filtering, and grouping by calendar | **✓** | Limited | | Task list printing | **✓** | Limited | | Print only Free/Busy information to keep event details private | **✓** | | | Cross-calendar time blocking (manual) | **✓** | Manual duplicate only | | Automatic time blocking with per-calendar rules (iCloud-synced) | **✓** | | | Travel time built into time-blocking events | **✓** | | | Favorite Time Zones | **✓** | | | Show event locations on a map | **✓** | | | Live countdown to next event in menu bar | **✓** | | | Automatic local backups | **✓** | | | CSV export | **✓** | | | Private LAN sync | **✓** | | | Custom fonts for views, notes, and titles | **✓** | | | Conference call integration (Zoom, Teams) | **✓** | **✓** (Teams) | | AppleScript automation | **✓** (full read/write) | Broken (new Outlook) | | Claude Desktop / MCP integration | **✓** | Community only | | Native AI scheduling assistant (built-in) | (uses Claude Desktop via MCP) | **✓** (Microsoft 365 Copilot: automated scheduling, RSVP handling, focus blocks; Outlook on Windows/Web, eligible plans) | | Raycast extension | **✓** | | | Apple Watch app | **✓** | **✓** | | Widgets (multiple sizes) | **✓** | **✓** | | Shortcuts / Siri integration | **✓** | | | One-time purchase (perpetual license) | **✓** | (Microsoft 365 subscription) | ## Booking Meetings[​](#booking-meetings "Direct link to Booking Meetings") BusyCal Bookings lets people choose an available time through a link, with hours, breaks between meetings, questions, and approval settings for each meeting type. It checks busy times from your chosen BusyCal calendars and adds confirmed meetings to the calendar you choose. **[Learn More](/docs/bookings.md)**. Microsoft offers [Personal Bookings](https://learn.microsoft.com/en-us/microsoft-365/bookings/personal-bookings-faq?view=o365-worldwide), which works with your Outlook calendar and requires a Bookings license for the organizer. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. [See the access requirements](/docs/bookings.md#requirements). ## Where Outlook Calendar May Be Better[​](#where-outlook-calendar-may-be-better "Direct link to Where Outlook Calendar May Be Better") * Your team is standardized on Microsoft 365 and Outlook. * You want email, calendar, and contacts together in one app. * You rely on Exchange scheduling tools like room booking and delegate access. * You need Free/Busy visibility across your Exchange organization. * You want categories for color-coding events within the Microsoft ecosystem. ## Where BusyCal May Be Better[​](#where-busycal-may-be-better "Direct link to Where BusyCal May Be Better") * You prefer a one-time purchase with a perpetual license. BusyCal itself does not require a Microsoft 365 subscription. [Learn more](/docs/faqs/120616-licensing-explained.md). * You want date suggestions as you type. Outlook accepts natural language in date fields but does not show a dropdown of suggestions. [Learn more](/docs/busycal/date-picker.md). * You want a one-click Working Hours toggle to collapse non-work hours. [Learn more](/docs/busycal/70587-day-view.md#show-working-hours). * You want sunrise & sunset shading in Day and Week views. [Learn more](/docs/busycal/70602-weather.md#sunrise-and-sunset). * You want to align events using the context menu commands **Match Start/End**, **Create Between**, and **Create After**. [Learn more](/docs/busycal/70587-day-view.md#creating-events-in-between). * You want weather forecasts and moon phases in your calendar. [Learn more](/docs/busycal/70602-weather.md). * You want traffic-aware travel time with Time to Leave alarms. [Learn more](/docs/busycal/70603-locations-maps-travel-time.md). * You want tags with auto-coloring and automatic tagging rules. [Learn more](/docs/busycal/70597-tags.md). * You want to show 2 to 90 days in Week view or 1 to 12 weeks in Month view. [Learn more](/docs/busycal/70588-week-view.md). * You spend most of your day planning inside calendar views. [Learn more](/docs/busycal/70591-list-view.md). * You want to save calendar filters and view settings for different kinds of work. [Learn more](/docs/busycal/70612-smart-filters.md#nestedfilters). * You want a dedicated calendar app that works alongside your email app. [Learn more](/docs/busycal/70607-preferences.md). * You want one app that shows Outlook/Microsoft 365, Google, iCloud, and CalDAV calendars together. [Learn more](/docs/busycal/70592-calendar-list.md#accounts). * You want On My Mac calendars stored locally for offline use. [Learn more](/docs/busycal/70592-calendar-list.md#accounts). * You want a menu bar countdown for upcoming events. [Learn more](/docs/busycal/70606-busycal-menu.md#upcoming). * You want multiple alarms per event with flexible snooze controls. [Learn more](/docs/busycal/70604-alarms.md#displaying-alarms). * You want holiday event display styles, including footer placement. [Learn more](/docs/busycal/70600-holidays.md#holiday-calendar). * You want a customizable Info Panel showing only the fields you use. [Learn more](/docs/busycal/70595-info-panel.md#info-panel-preferences). * You want a Year Planner for long-range scheduling. [Learn more](/docs/busycal/70590-year-view.md#year-planner). * You want a spreadsheet-style List View with configurable columns. [Learn more](/docs/busycal/70591-list-view.md). * You want to view event locations on a map and plan travel time. [Learn more](/docs/busycal/70603-locations-maps-travel-time.md). * You want cross-calendar time blocking, with both **manual** blocks that stay synced to the original event and **automatic time-blocking rules** that mirror new or edited events from one calendar onto another (even across different accounts) based on your working schedule or a custom range of days and times. Rules sync across all your Macs and iPhones via iCloud. [Learn more](/docs/busycal/142884-cross-calendar-blocking-events.md#automatic-rules). * You want task list printing from within the app. [Learn more](/docs/busycal/70610-printing.md#printing-a-task-list). * You want automatic local backups and CSV export. [Learn more](/docs/busycal/70617-backing-up-and-restoring.md#automatic-backups) and [CSV export](/docs/busycal/70618-exporting-importing-and-merging-calendars.md#export-csv). * You want private LAN sync without relying on cloud providers. [Learn more](/docs/busycal/70655-using-busycal-on-a-lan.md). * You want custom fonts for views, notes, and titles. [Learn more](/docs/busycal/70607-preferences.md#appearance-preferences). * You want AppleScript automation, which the new Outlook for Mac does not support. [Learn more](/docs/busycal/70624-applescript.md). * You want to manage your calendar with the official Claude Desktop / MCP integration on Mac. Microsoft 365 Copilot offers Outlook scheduling, including RSVP handling, focus blocks, and finding meeting times, on eligible Windows and web plans; those calendar actions are not yet available in the Mac client. BusyCal’s integration works on Mac with events, tasks, journals, and sticky notes. It can work with selected items, find free time during working hours, reschedule across time zones, and update tags and reminders. [Learn more](/docs/busycal/70624-mcp.md). ## Common Questions * Can BusyCal show my Outlook or Microsoft 365 calendar? Yes. BusyCal syncs Microsoft 365 and Exchange calendars through Microsoft Graph, and shows them beside your iCloud, Google, and CalDAV calendars in the same window. * Do I still need Outlook for email? Yes, if Outlook is your mail client. BusyCal is a calendar app and does not include email, so most people keep Outlook or Apple Mail for mail and use BusyCal for scheduling. * Is BusyCal a subscription like Microsoft 365? No. BusyCal for Mac is a one-time purchase of $49.99 from our store, with a perpetual license and a free 14-day trial. BusyCal for iPhone and iPad is $9.99 on the App Store. Outlook Calendar comes with a Microsoft 365 subscription. * Can BusyCal book meeting rooms and Teams calls? Yes. BusyCal includes a Meeting Rooms picker with live availability for Google Workspace and Microsoft 365, a Free/Busy availability viewer, and one-click Zoom and Teams meeting creation. ## Official Links[​](#official-links "Direct link to Official Links") * [Outlook Calendar official page](https://www.microsoft.com/en-us/microsoft-365/outlook/email-and-calendar-software-microsoft-outlook) * [BusyCal for macOS](/busycal/) * [Microsoft 365 + BusyCal setup guide](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # BusyCal vs Readdle Calendars Readdle Calendars and BusyCal are native Mac and iOS calendars with support for several calendar services, built-in tasks, and a one-time purchase option. Readdle Calendars has a simpler interface and a drag-and-drop planner for scheduling tasks into time slots. BusyCal offers more ways to customize views, with Calendar Sets, nested Smart Filters, and offline On My Mac calendars. Last reviewed: October 16, 2026. ## Feature Snapshot[​](#feature-snapshot "Direct link to Feature Snapshot") | Capability | BusyCal | Readdle Calendars | | ------------------------------------------------------------------------------ | ----------------------------- | -------------------------------------------------------------------------------------------------------------- | | Native macOS + iOS app | **✓** | **✓** | | Multi-provider sync (iCloud + Google + Exchange + CalDAV) | **✓** | **✓** (iCloud + Google + Outlook + CalDAV) | | On My Mac offline calendars | **✓** | | | Calendar Sets | **✓** | | | Calendar Groups | **✓** | | | Nested Smart Filters (ALL/ANY/NONE) | **✓** | | | Natural language Quick Entry | **✓** | **✓** | | Smart Date Picker with real-time suggestions | **✓** | (title bar parsing only) | | Configurable default alarms (per event type, per task type) | **✓** | Limited | | Auto travel time when location is set | **✓** | | | Default event duration & default start time | **✓** | **✓** | | Floating Time Zone for new events/tasks | **✓** | | | Default task priority & regeneration style | **✓** | | | Working Hours toggle (collapse non-work hours) | **✓** | | | Sunrise & sunset shading in Day/Week views | **✓** | | | Side-by-side or stacked layouts for overlapping events | **✓** | | | Context menu event alignment (Match Start/End, Create Between) | **✓** | | | Multiple time zones in time ruler (up to 3) | **✓** | | | Customizable view spans (2–90 days in week, 1–12 weeks in month) | **✓** | | | Weather forecasts & moon phases | **✓** | **✓** (weather) | | Travel time with live traffic updates | **✓** | | | Tags with auto-coloring and automatic tagging rules | **✓** | | | Free/Busy availability viewer | **✓** | **✓** | | Meeting Rooms picker with live availability (Google Workspace + Microsoft 365) | **✓** | **✓** | | Drag-and-drop task planner | | **✓** | | Quick Scheduler with event shortcuts/templates | | **✓** | | Journal entry type | **✓** | | | Sticky notes attached to dates | **✓** | | | Event/date graphics and icons | **✓** | | | Customizable Info Panel | **✓** | | | Alarm Window with flexible snooze (keyboard-driven) | **✓** | | | Holiday event display styles (footer, graphics) | **✓** | | | Year Planner + Overview | **✓** | **✓** (Year View) | | Year metrics (Top Tags, Avg Scheduled / Workday, Meetings overview) | **✓** | | | Spreadsheet List View with custom columns | **✓** | | | Task list printing | **✓** | | | Print only Free/Busy information to keep event details private | **✓** | | | Task sorting, filtering, and grouping by calendar | **✓** | | | Cross-calendar time blocking (manual) | **✓** | Manual duplicate only | | Automatic time blocking with per-calendar rules (iCloud-synced) | **✓** | | | Travel time built into time-blocking events | **✓** | | | Conference call integration (Zoom, Teams) | **✓** | **✓** (Zoom, Meet, GoToMeeting) | | Live countdown to next event in menu bar | **✓** | | | Automatic local backups | **✓** | | | CSV export | **✓** | | | Private LAN sync | **✓** | | | Custom fonts for views, notes, and titles | **✓** | | | Presets that save calendars, rules, view settings, and time zones together | **✓** | | | Apple Watch app | **✓** | **✓** | | Widgets (multiple sizes) | **✓** | **✓** | | AppleScript automation | **✓** (full read/write) | | | Claude Desktop / MCP integration | **✓** | | | Native AI scheduling assistant (built-in) | (uses Claude Desktop via MCP) | Limited (natural-language event parsing in Calendars; broader AI Assistant lives in Readdle's Spark email app) | | Raycast extension | **✓** | | | Siri integration | **✓** | **✓** | | One-time purchase (perpetual license) | **✓** | **✓** ($29.99 lifetime or $19.99/yr) | ## Booking Meetings with BusyCal[​](#booking-meetings-with-busycal "Direct link to Booking Meetings with BusyCal") Share a link for a consultation or call, and let the other person choose an available time. BusyCal Bookings checks busy times from your chosen calendars and adds confirmed meetings to the calendar you choose. You can set hours, leave breaks between meetings, ask questions, and approve each request if you prefer. **[Learn More](/docs/bookings.md)**. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. [See the access requirements](/docs/bookings.md#requirements). ## Where Readdle Calendars May Be Better[​](#where-readdle-calendars-may-be-better "Direct link to Where Readdle Calendars May Be Better") * You prefer a calendar with fewer settings to configure. * You want to drag tasks into time slots in the Planner. * You want Quick Scheduler shortcuts and event templates for recurring routines. * You want an Apple Watch app with calendar faces. * You want home screen and desktop widgets in multiple sizes. * You prefer a lower-cost option ($19.99/yr or $29.99 lifetime). * You want Siri integration for hands-free event creation. * You value a polished, consistent experience across Mac, iPhone, iPad, and Apple Watch. ## Where BusyCal May Be Better[​](#where-busycal-may-be-better "Direct link to Where BusyCal May Be Better") * You want date suggestions as you type directly in a date field. Readdle parses natural language only in the title bar. [Learn more](/docs/busycal/date-picker.md). * You want a one-click Working Hours toggle to collapse non-work hours. [Learn more](/docs/busycal/70587-day-view.md#show-working-hours). * You want sunrise & sunset shading in Day and Week views. [Learn more](/docs/busycal/70602-weather.md#sunrise-and-sunset). * You want to align events using the context menu commands **Match Start/End**, **Create Between**, and **Create After**. [Learn more](/docs/busycal/70587-day-view.md#creating-events-in-between). * You want configurable defaults for alarms, travel time, duration, priority, and floating time zones. [Learn more](/docs/busycal/70607-preferences.md). * You want auto travel time added whenever a location is set. [Learn more](/docs/busycal/70607-preferences.md#locations). * You want traffic-aware Time to Leave alarms that update in real time. [Learn more](/docs/busycal/70603-locations-maps-travel-time.md). * You need nested Smart Filters with ALL/ANY/NONE conditions. [Learn more](/docs/busycal/70612-smart-filters.md#nestedfilters). * You want Calendar Sets, content conditions, and view preferences saved together. [Learn more](/docs/busycal/70612-smart-filters.md#combination-filters). * You want to show 2 to 90 days in Week view or 1 to 12 weeks in Month view. [Learn more](/docs/busycal/70588-week-view.md). * You want multiple time zones displayed simultaneously in the time ruler. [Learn more](/docs/busycal/70609-time-zones.md). * You want tags with auto-coloring and automatic tagging rules. [Learn more](/docs/busycal/70597-tags.md). * You want moon phases alongside weather forecasts. [Learn more](/docs/busycal/70602-weather.md). * You want a customizable Info Panel showing only the fields you use. [Learn more](/docs/busycal/70595-info-panel.md#info-panel-preferences). * You want a keyboard-driven Alarm Window with flexible snooze controls. [Learn more](/docs/busycal/70604-alarms.md#displaying-alarms). * You want a Year Planner for long-range scheduling. [Learn more](/docs/busycal/70590-year-view.md#year-planner). * You want a spreadsheet-style List View with configurable columns. [Learn more](/docs/busycal/70591-list-view.md). * You want cross-calendar time blocking, with both **manual** blocks that stay synced to the original event and **automatic time-blocking rules** that mirror events from one calendar onto another (even across different accounts) based on your working schedule or a custom range of days and times. Rules sync across all your Macs and iPhones via iCloud. [Learn more](/docs/busycal/142884-cross-calendar-blocking-events.md#automatic-rules). * You want a menu bar countdown for upcoming and ongoing events. [Learn more](/docs/busycal/70606-busycal-menu.md#upcoming). * You want On My Mac offline calendars. [Learn more](/docs/busycal/70592-calendar-list.md#accounts). * You want automatic local backups and CSV export. [Learn more](/docs/busycal/70617-backing-up-and-restoring.md#automatic-backups). * You want AppleScript automation, the official Claude Desktop / MCP integration, or a Raycast extension. Readdle Calendars does not offer these integrations. Readdle’s broader AI assistant is part of Spark, its email app. [Learn more](/docs/busycal/70624-applescript.md). ## Common Questions * How do BusyCal and Readdle Calendars compare on price? Both offer a one-time purchase. BusyCal for Mac is $49.99 from our store with a free 14-day trial, and BusyCal for iPhone and iPad is $9.99 on the App Store. Readdle Calendars is $29.99 for a lifetime license or $19.99 a year. * Do both apps run on Mac, iPhone, and Apple Watch? Yes. Both are native Mac and iOS apps with Apple Watch apps, widgets, and multi-provider calendar sync, and both include task management. * Which calendar accounts does each app sync? BusyCal syncs iCloud, Google, Microsoft 365 and Exchange, and CalDAV accounts, and adds offline On My Mac calendars. Readdle Calendars syncs iCloud, Google, Outlook, and CalDAV accounts. * What does BusyCal add over Readdle Calendars? Calendar Sets and Calendar Groups, nested Smart Filters, a Smart Date Picker that suggests dates as you type, customizable view spans, a spreadsheet-style List View, and automatic local backups. ## Official Links[​](#official-links "Direct link to Official Links") * [Readdle Calendars](https://readdle.com/calendars) * [BusyCal for macOS](/busycal/) * [BusyCal for iOS](/busycalios.md) * [BusyCal getting started guide](/docs/busycal/70585-getting-started-with-busycal-for-mac.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # BusyCal vs Things 3 Things 3 is a dedicated task manager; BusyCal is a calendar app with tasks built in. Things 3 may suit you if you plan around task lists. BusyCal may suit you if you want to schedule events and tasks together, sync with several calendar services, and choose from detailed calendar views. Last reviewed: October 16, 2026. ## At a Glance[​](#at-a-glance "Direct link to At a Glance") | Criteria | BusyCal | Things 3 | | ------------- | ------------------------------------------- | ----------------------------------- | | Primary model | Calendar planning with tasks | Task list planning | | Best fit | Time-blocked schedules and calendar context | Managing personal tasks in lists | | Strength | Schedule visibility and calendar context | Simplicity and clean task workflows | | Trade-off | Calendar-oriented setup | Limited calendar controls | ## Calendar & Sync Comparison[​](#calendar--sync-comparison "Direct link to Calendar & Sync Comparison") | Capability | BusyCal | Things 3 | | ---------------------------------------------------------------------------- | ------- | -------- | | Native CalDAV account sync | **✓** | | | Microsoft 365 / Exchange calendar sync | **✓** | | | Calendar subscriptions (.ics / holiday feeds) | **✓** | | | Multiple provider calendars in one app (iCloud + Google + Exchange + CalDAV) | **✓** | | | Calendar views (Day / Week / Month / Year Planner) | **✓** | | | Calendar Groups | **✓** | | | Smart Date Picker with real-time suggestions | **✓** | **✓** | | Favorite Time Zones | **✓** | | | Show event locations on a map | **✓** | | | Apple Watch app | **✓** | **✓** | | Widgets (multiple sizes) | **✓** | **✓** | | Shortcuts / Siri integration | **✓** | **✓** | | Task management focused on lists | | **✓** | ## Where Things 3 May Be Better[​](#where-things-3-may-be-better "Direct link to Where Things 3 May Be Better") * You want to focus on managing tasks in lists. * You prefer a task manager focused on personal lists and projects. * You organize your day around task lists rather than calendar blocks. ## Where BusyCal May Be Better[​](#where-busycal-may-be-better "Direct link to Where BusyCal May Be Better") * You want to plan calendar events and tasks together. * You use calendar blocks to decide when to work on tasks. * You manage multiple calendars alongside tasks. * You want [Calendar Groups](/docs/busycal/70592-calendar-list.md#calendar-groups) to organize many calendars into folders. * You want to see iCloud, Google, Microsoft 365, Exchange, and CalDAV calendars in one app. * You want to view event locations on a map and include travel time in your schedule. ## Booking Meetings with BusyCal[​](#booking-meetings-with-busycal "Direct link to Booking Meetings with BusyCal") Use BusyCal Bookings to let clients or colleagues choose an available meeting time through a link. For example, offer a 30-minute project call with a break afterward. Bookings checks busy times from your chosen calendars, lets you approve requests if needed, and adds confirmed meetings to your calendar. **[Learn More](/docs/bookings.md)**. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. [See the access requirements](/docs/bookings.md#requirements). ## BusyCal Account Sync Docs[​](#busycal-account-sync-docs "Direct link to BusyCal Account Sync Docs") * [Office 365 via Microsoft Graph](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) * [CalDAV account sync](/docs/busycal/70647-using-busycal-with-caldav.md#syncing) * [Public WebDAV calendar subscriptions](/docs/busycal/70601-subscribing-to-public-calendars.md) * [Google Calendar sync](/docs/busycal/70636-using-busycal-with-google.md) * [iCloud calendar sync](/docs/busycal/70630-using-busycal-with-icloud.md) * [View event locations and plan travel time](/docs/busycal/70603-locations-maps-travel-time.md) ## Common Questions * Can BusyCal replace Things 3? BusyCal may cover your needs if you plan tasks alongside calendar events. Things 3 offers more tools for organizing personal tasks and projects in lists. * Does BusyCal show tasks and events together? Yes. BusyCal shows tasks alongside events in calendar views. You can sort, filter, and group tasks by calendar, and sync them with Apple Reminders. * Is BusyCal a subscription? No. BusyCal for Mac is a one-time purchase of $49.99 from our store, with a perpetual license and a free 14-day trial. BusyCal for iPhone and iPad is $9.99 on the App Store. ## Official Links[​](#official-links "Direct link to Official Links") * [Things 3 official page](https://culturedcode.com/things/) * [BusyCal product page](/busycal/) * [BusyCal tasks documentation](/docs/busycal/70594-tasks.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # BusyCal vs Todoist Todoist focuses on tasks and project lists, with apps across many platforms. BusyCal focuses on calendar planning, with built-in tasks and iCloud, Google, Microsoft 365 and Exchange, and CalDAV calendars in one window. You can add a Todoist account to BusyCal to manage those tasks alongside your calendar. Last reviewed: October 16, 2026. ## At a Glance[​](#at-a-glance "Direct link to At a Glance") | Criteria | BusyCal | Todoist | | ------------- | ------------------------------------------ | ----------------------------------------- | | Primary model | Calendar scheduling with tasks | Task and project list management | | Best fit | Time-blocking and schedule-driven planning | Personal and shared project lists | | Strength | Calendar context and visibility | Lightweight task capture and organization | | Trade-off | Calendar-oriented setup | Less calendar planning depth | ## Calendar & Sync Comparison[​](#calendar--sync-comparison "Direct link to Calendar & Sync Comparison") | Capability | BusyCal | Todoist | | ---------------------------------------------------------------------------- | ------------------------------ | ------------------------------------------------------------ | | Native CalDAV account sync | **✓** | | | Microsoft 365 / Exchange calendar sync | **✓** | | | Calendar subscriptions (.ics / holiday feeds) | **✓** | | | Multiple provider calendars in one app (iCloud + Google + Exchange + CalDAV) | **✓** | | | Calendar views | Day, Week, Month, Year Planner | Calendar layouts on Pro and Business; views vary by platform | | Calendar Groups | **✓** | | | Smart Date Picker with real-time suggestions | **✓** | **✓** (in task title and date field) | | Favorite Time Zones | **✓** | | | Show event locations on a map | **✓** | | | Apple Watch app | **✓** | **✓** | | Widgets (multiple sizes) | **✓** | **✓** | | Shortcuts / Siri integration | **✓** | **✓** | | Google and Outlook calendar integrations | **✓** | **✓** | | Task management focused on lists | | **✓** | ## Where Todoist May Be Better[​](#where-todoist-may-be-better "Direct link to Where Todoist May Be Better") * You want to organize tasks in lists. * You plan work around project lists. * You want a task manager that connects to Google or Outlook calendars. ## Where BusyCal May Be Better[​](#where-busycal-may-be-better "Direct link to Where BusyCal May Be Better") * You plan primarily by time and calendar availability. * You want to see events and tasks in the same calendar. * You want more ways to filter and view several calendars together. * You want [Calendar Groups](/docs/busycal/70592-calendar-list.md#calendar-groups) to organize many calendars into folders. * You want to see iCloud, Google, Microsoft 365, Exchange, and CalDAV calendars in one app. * You want to view event locations on a map and include travel time in your schedule. ## Booking Meetings with BusyCal[​](#booking-meetings-with-busycal "Direct link to Booking Meetings with BusyCal") Use BusyCal Bookings to let clients or colleagues choose an available meeting time through a link. For example, offer a 30-minute project call with a break afterward. Bookings checks busy times from your chosen calendars, lets you approve requests if needed, and adds confirmed meetings to your calendar. **[Learn More](/docs/bookings.md)**. Bookings is currently available only in BusyCal for Mac. Once you activate it on your Mac, the iPhone app automatically syncs free/busy times if both devices use the same iCloud account. Access depends on your Mac license’s update coverage, an active Mac App Store subscription or Setapp membership, or the free trial. [See the access requirements](/docs/bookings.md#requirements). ## BusyCal Account Sync Docs[​](#busycal-account-sync-docs "Direct link to BusyCal Account Sync Docs") * [Office 365 via Microsoft Graph](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) * [CalDAV account sync](/docs/busycal/70647-using-busycal-with-caldav.md#syncing) * [Public WebDAV calendar subscriptions](/docs/busycal/70601-subscribing-to-public-calendars.md) * [Google Calendar sync](/docs/busycal/70636-using-busycal-with-google.md) * [iCloud calendar sync](/docs/busycal/70630-using-busycal-with-icloud.md) * [View event locations and plan travel time](/docs/busycal/70603-locations-maps-travel-time.md) ## Common Questions * Does BusyCal work with Todoist? Yes. You can add a Todoist account to BusyCal and manage those task lists beside your calendar. Changes made in BusyCal sync back to Todoist and to every other device running it, and BusyCal supports one Todoist account at a time. * Does Todoist have calendar views like BusyCal? Todoist offers calendar layouts on its Pro and Business plans, with views that vary by platform. It also connects to Google and Outlook calendars. BusyCal provides Day, Week, Month, and Year Planner views, calendar subscriptions, and direct sync with iCloud, Google, Microsoft 365, Exchange, and CalDAV accounts. * Is BusyCal a subscription like Todoist? No. BusyCal for Mac is a one-time purchase of $49.99 from our store, with a perpetual license and a free 14-day trial. BusyCal for iPhone and iPad is $9.99 on the App Store. ## Official Links[​](#official-links "Direct link to Official Links") * [Todoist official page](https://todoist.com/) * [Todoist calendar layouts](https://www.todoist.com/help/todoist/features/use-the-calendar-layout-in-todoist-lPHRQTu0o) * [BusyCal for macOS](/busycal/) * [Using BusyCal with Todoist](/docs/busycal/128557-using-busycal-with-todoist.md) Want to compare a few more options before deciding? Browse all [BusyCal comparison guides](/compare.md). --- # End-User License Agreement This End-User License Agreement (EULA) is a legal agreement between you (either as an individual or on behalf of an entity) and Busy Apps regarding your use of our desktop and iOS applications, namely BusyCal and BusyContacts for macOS and BusyCal for iOS (the "Software"). IF YOU DO NOT AGREE TO ALL OF THE TERMS OF THIS EULA, DO NOT INSTALL, USE OR COPY THE SOFTWARE. ### Summary[​](#summary "Direct link to Summary") * You must agree to all of the terms of this EULA to use this Software. * If so, you may use the Software for any lawful purpose. * This Software automatically communicates with Busy Apps servers and Google Crashlytics for three reasons: (1) to authenticate licenses during installation and to receive / install updates; (2) to send error reports; and (3) to send anonymized usage information. If you turn on the optional Bookings service in BusyCal, BusyCal also exchanges data with the Bookings servers, which store what the service needs to work. * This Software is provided "as-is" with no warranties, and you agree that Busy Apps is not liable for anything you do with it. ### The Agreement[​](#the-agreement "Direct link to The Agreement") By downloading, installing, using, or copying the Software, you accept and agree to be bound by the terms of this EULA. If you do not agree to all of the terms of this EULA, you may not download, install, use or copy the Software. Your use of the optional Bookings service in BusyCal is also subject to the [Bookings Terms](/bookings-terms.md). ### The License[​](#the-license "Direct link to The License") This EULA entitles you to install the Software on as many devices the licensee owns, as long as it the installation count does not exceed the number of licenses originally purchased. The Software for macOS is distributed with a license code that you may only use for devices owned or controlled by the person or entity that made the original purchase. This license also entitles you to use the Software for any lawful purpose consistent with this EULA. Your license to use the Software is expressly conditioned upon your agreement to all of the terms of this EULA. This software is sold and is not distributed for free. Busy Apps reserves all other rights not granted by this EULA. ### The Restrictions[​](#the-restrictions "Direct link to The Restrictions") * When using the Software you must use it in a manner that complies with the applicable laws in the jurisdiction(s) in which you use the Software. * You may not sell, resell, rent, lease or exchange the Software for anything of value. * You may no redistribute the software in any way or form via any medium, without the prior written agreement with Busy Apps. Any such agreement of redistribution must include this EULA and you may not repackage or bundle the Software with any other software without the prior written agreement with Busy Apps. * You may not remove or alter any proprietary notices or marks on the Software. ### Privacy Notices[​](#privacy-notices "Direct link to Privacy Notices") The Software automatically communicates with Busy Apps servers as well as Google Crashlytics servers for three purposes: (1) license verification during installation and updating the Software; (2) sending error reports; and (3) sending anonymized usage data so we may improve the Software. If you turn on the optional Bookings service in BusyCal, BusyCal also sends it the data it needs to run your booking pages, and the service stores that data on our servers, as described in the [Bookings Privacy Notice](/bookings-privacy.md). If you would like to learn more about the specific information we send, please contact us. You may control the frequency of the number of times the software checks for updates, but this cannot be disabled entirely. If you do not want the Software to update automatically or send error reports / anonymous usage information, you must uninstall the Software. Furthermore, by accepting this EULA you agree with our [Privacy Policy](/privacy.md). ### Intellectual Property Notices[​](#intellectual-property-notices "Direct link to Intellectual Property Notices") The Software and all worldwide copyrights, trade secrets, and other intellectual property rights therein are the exclusive property of Busy Apps. Busy Apps reserves all rights in and to the Software not expressly granted to you in this EULA. ### Disclaimers and Limitations on Liability[​](#disclaimers-and-limitations-on-liability "Direct link to Disclaimers and Limitations on Liability") THE SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND NO WARRANTY, EITHER EXPRESS OR IMPLIED, IS GIVEN. YOUR USE OF THE SOFTWARE IS AT YOUR SOLE RISK. Busy Apps does not warrant that (i) the Software will meet your specific requirements; (ii) the Software is fully compatible with any particular platform; (iii) your use of the Software will be uninterrupted, timely, secure, or error-free; (iv) the results that may be obtained from the use of the Software will be accurate or reliable; (v) the quality of any products, services, information, or other material purchased or obtained by you through the Software will meet your expectations; or (vi) any errors in the Software will be corrected. YOU EXPRESSLY UNDERSTAND AND AGREE THAT BUSY APPS SHALL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL OR EXEMPLARY DAMAGES, INCLUDING BUT NOT LIMITED TO, DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER INTANGIBLE LOSSES (EVEN IF BUSY APPS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES) RELATED TO THE SOFTWARE, including, for example: (i) the use or the inability to use the Software; (ii) the cost of procurement of substitute goods and services resulting from any goods, data, information or services purchased or obtained or messages received or transactions entered into through or from the Software; (iii) unauthorized access to or alteration of your transmissions or data; (iv) statements or conduct of any third-party on the Software; (v) or any other matter relating to the Software. Busy Apps reserves the right at any time and from time to time to modify or discontinue, temporarily or permanently, the Software (or any part thereof) with or without notice. Busy Apps shall not be liable to you or to any third-party for any modification, price change, suspension or discontinuance of the Software. --- # Press Kit ### BusyCal Press Resources[​](#busycal-press-resources "Direct link to BusyCal Press Resources") * [BusyCal Mac Product Page](https://www.busymac.com/busycal) * [BusyCal Mac User Guide](https://www.busymac.com/docs/busycal/70585-getting-started-with-busycal-for-mac.md) * [BusyCal iOS Product Page](https://www.busymac.com/busycalios.md) * [BusyCal iOS User Guide](https://www.busymac.com/docs/busycalios/70656-getting-started-with-busycal-for-ios.md) * [Request a review copy](mailto:info@busymac.com?subject=Press%20request%20for%20review%20copy) ### BusyCal Highlights[​](#busycal-highlights "Direct link to BusyCal Highlights") * **Modern UI** — BusyCal features a sleek, modern interface that's visually stunning and effortless to use. * **Calendar Sets** — Quickly toggle between different calendar groups, such as work and personal, with a single click. * **Natural Language Input** — Quickly create events or tasks by typing phrases like "Lunch with Alex tomorrow at 2 PM." * **Graphics & Emojis** — Add visual flair to your calendar by embedding graphics or emojis to highlight important dates. * **Favorite Time Zones** — Stay in sync no matter where you are, with support for managing and displaying multiple time zones. * **Conference Calls** — Create and join conference calls seamlessly with integrated support for services like Zoom and WebEx. * **Travel Time** — Plan smarter with travel time integration, including Apple Maps and traffic-based alerts to ensure you're never late. * **Menu Bar App** — Access a beautifully redesigned menu bar app with a mini-month calendar and a visual density map of your availability. * **Timed Tasks** — Add to-dos with specific times, seamlessly integrated with your calendar events. * **Info Panel** — A streamlined Info Panel with enhanced controls for dates, times, locations, attendees, maps, and more. * **Mapping Event Locations** — Visualize all locations from your calendar events on an interactive map. * **BusyCal for iOS** — Now available for iOS with all the power of BusyCal for macOS, including customizable views, integrated tasks, travel time, live weather feeds, and more. * **Widgets** — Choose from various widgets for up-next events, week views, and more, right from your home or lock screen. * **Smart Tags** — Tag your events for better organization and easy filtering. * **Smooth Infinite Scrolling** — Swipe through days, weeks, and months effortlessly with intuitive trackpad gestures. Discover dozens of other features throughout the app, making BusyCal the ultimate productivity tool for macOS and iOS. ### System Requirements[​](#system-requirements "Direct link to System Requirements") * BusyCal for macOS requires macOS 12.0 or later. * BusyCal for iOS requires iOS 15 or later. ### BusyCal Mac App Icon & Screenshots[​](#busycal-mac-app-icon--screenshots "Direct link to BusyCal Mac App Icon & Screenshots") ![](https://downloads.busymac.com/resources/img/busycal-mac/icon_128.png) ![](https://downloads.busymac.com/resources/img/busycal-mac/slideshow-month.png) ![](https://downloads.busymac.com/resources/img/busycal-mac/slideshow-week.png) ![](https://downloads.busymac.com/resources/img/busycal-mac/slideshow-year.png) ![](https://downloads.busymac.com/resources/img/busycal-mac/slideshow-list.png) ### BusyCal iOS App Icon & Screenshots[​](#busycal-ios-app-icon--screenshots "Direct link to BusyCal iOS App Icon & Screenshots") ![](https://downloads.busymac.com/resources/img/busycal-ios/icon_128.png) ![](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-land.png)

![](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-portrait.png)

![](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-week.png)

![](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-tasks.png)

![](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-nlp.png) ### BusyContacts Highlights[​](#busycontacts-highlights "Direct link to BusyContacts Highlights") * [BusyContacts Product Page](https://www.busymac.com/busycontacts.md) * [BusyContacts User Guide](https://www.busymac.com/docs/busycontacts/44314-getting-started-with-busycontacts.md) * **Unified Contact Management** — Bring all your contacts together in one place with options to view as cards or customizable multi-column lists. * **Rich Contact Profiles** — Build detailed contact profiles, including links to emails, calendar events, messages, and social media interactions. * **Smart Filters** — Create dynamic groups and filter contacts based on tags, keywords, or specific criteria. * **Customizable Views** — Tailor your contact views with sortable columns like company, name, and last interaction. * **Tags for Better Organization** — Add user-defined tags for quick categorization and easy filtering. * **Activity Timeline** — See a chronological view of every interaction—emails, messages, and meetings—linked to each contact. * **Seamless Sync** — Directly sync with iCloud, Google, Office 365, Exchange, and other CardDAV servers for real-time updates. * **Contact Sharing** — Share groups or individual contacts effortlessly while maintaining privacy and control. * **Multiple Accounts Support** — Manage contacts from multiple accounts simultaneously with seamless integration. * **Private LAN Sync** — Share contacts securely over your local network without relying on third-party services. * **Social Media Integration** — Link Twitter and other social profiles to contacts for a unified view of interactions. * **Advanced Search** — Find contacts instantly with powerful search tools that let you search by tags, notes, or any contact field. * **Accessibility Features** — Extensive customization options for improved accessibility and usability. * **Compatibility with BusyCal** — Tight integration with BusyCal makes it a complete CRM solution for managing both calendars and contacts. Discover even more features that make BusyContacts the ultimate contact manager for macOS. ### System Requirements[​](#system-requirements-1 "Direct link to System Requirements") * BusyContacts for macOS requires Requires macOS 12.0 or later. ### BusyContacts Mac App Icon & Screenshots[​](#busycontacts-mac-app-icon--screenshots "Direct link to BusyContacts Mac App Icon & Screenshots") ![](https://downloads.busymac.com/resources/img/busycontacts/busycontacts-icon.png) ![](https://downloads.busymac.com/resources/img/busycontacts/bct-hero-2.png) ![](https://downloads.busymac.com/resources/img/busycontacts/bct-list-mode.png) ![](https://downloads.busymac.com/resources/img/busycontacts/bct-combined-view.png) ![](https://downloads.busymac.com/resources/img/busycontacts/bct-tags-edit.png) ![](https://downloads.busymac.com/resources/img/busycontacts/bct-activity.png)

### About[​](#about "Direct link to About") The busy bees at Beehive create bee-utiful *Busy Apps!* Led by Fahad Gilani, the creator of the award-winning [2Do app](https://www.2doapp.com/) for macOS, iOS, and Android, Beehive has been buzzing with innovation since 2006. Drawing on decades of experience across firmware, software, and technical writing, Fahad remains dedicated to refining and enhancing our apps to meet the needs of our users. BusyCal and BusyContacts trace their origins to 2007, created by productivity software pioneers Dave Riggle and John Chaffee, who passed the torch in 2017. For the history buffs: back in the early '90s — long before Apple introduced iCal — they developed *Now Up-to-Date*, a revolutionary network calendar for Mac OS 7, and its companion app, *Now Contact*, which set the gold standard for calendar and contact management. While much has changed since those early days, the need for powerful, user-friendly calendar and contact management solutions remains. Building on this legacy, BusyCal and BusyContacts have been refined and enhanced to become the ultimate tools for managing your schedule and connections on macOS and iOS. ###### Beehive Innovations FZE holds exclusive worldwide rights to Busy Apps, BusyMac and 2Do. ### Contact Info[​](#contact-info "Direct link to Contact Info") Busy Apps ![](data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMTA1cHgiIGhlaWdodD0iMTM3cHgiIHZpZXdCb3g9IjAgMCAxMDUgMTM3IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPGcgaWQ9IkRlY29yYXRpbnMiIHN0cm9rZT0ibm9uZSIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIGlkPSJBcnRib2FyZCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMwLjAwMDAwMCwgLTcuMDAwMDAwKSIgZmlsbD0iIzQ4OEVFMiIgZmlsbC1ydWxlPSJub256ZXJvIj4KICAgICAgICAgICAgPGcgaWQ9ImlucHV0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzMC4wMDAwMDAsIDcuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUyLjAzNDEzNSwgNjguNTAwMDAwKSBzY2FsZSgtMSwgMSkgcm90YXRlKC0xODAuMDAwMDAwKSB0cmFuc2xhdGUoLTUyLjAzNDEzNSwgLTY4LjUwMDAwMCkgdHJhbnNsYXRlKDAuMDAwMDAwLCAwLjAwMDAwMCkiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNS45Nzg2MjQyLDEwOC4xIEwxNS45Nzg2MjQyLDc5LjMgTDEyLjg3ODYyNDIsNzUuNCBDOC4zNzg2MjQxNSw2OS44IDMuMTc4NjI0MTUsNTkgMS40Nzg2MjQxNSw1MS44IEMtMC43MjEzNzU4NDksNDIuNSAtMC40MjEzNzU4NDksMjggMi4wNzg2MjQxNSwxOSBDMy45Nzg2MjQxNSwxMS45IDkuNTc4NjI0MTUsMCAxMC44Nzg2MjQyLDAgQzExLjE3ODYyNDIsMCAxMy4yNzg2MjQyLDIuOCAxNS4zNzg2MjQyLDYuMSBMMTkuMjc4NjI0MiwxMi4yIEwxNy4wNzg2MjQyLDE4LjggQzguMTc4NjI0MTUsNDUuNCAyMS45Nzg2MjQyLDcyLjEgNDcuMjc4NjI0Miw3Ny4xIEM2MC40Nzg2MjQyLDc5LjggNzYuOTc4NjI0Miw3MS4zIDgxLjQ3ODYyNDIsNTkuNSBDODUuNTc4NjI0Miw0OSA4MS41Nzg2MjQyLDM3LjcgNzEuNTc4NjI0MiwzMS42IEM2MC43Nzg2MjQyLDI0LjkgNDUuODc4NjI0MiwyOS41IDM5Ljc3ODYyNDIsNDEuNCBDMzcuOTc4NjI0Miw0NC44IDM3LjQ3ODYyNDIsNDcuOSAzNy4wNzg2MjQyLDU5IEwzNi40Nzg2MjQyLDcyLjUgTDMxLjc3ODYyNDIsNjguMSBDMjkuMTc4NjI0Miw2NS43IDI1Ljc3ODYyNDIsNjEuMiAyNC4yNzg2MjQyLDU4LjEgQzIxLjg3ODYyNDIsNTMuMiAyMS40Nzg2MjQyLDUxLjQgMjEuNDc4NjI0Miw0My41IEMyMS41Nzg2MjQyLDM1LjggMjEuOTc4NjI0MiwzMy43IDI0LjI3ODYyNDIsMjguOCBDMjcuODc4NjI0MiwyMS40IDM0LjY3ODYyNDIsMTQuNSA0MS4yNzg2MjQyLDExLjQgQzYzLjY3ODYyNDIsMS4yIDg5Ljg3ODYyNDIsMTAuOCAxMDAuMzc4NjI0LDMzIEMxMDYuMzc4NjI0LDQ1LjkgMTA0Ljk3ODYyNCw2My44IDk2Ljc3ODYyNDIsNzYgQzg2LjM3ODYyNDIsOTEuNiA2My4yNzg2MjQyLDk5LjYgNDMuNjc4NjI0Miw5NC41IEM0MC40Nzg2MjQyLDkzLjcgMzcuNjc4NjI0Miw5MyAzNy40Nzg2MjQyLDkzIEMzNy4xNzg2MjQyLDkzIDM2Ljk3ODYyNDIsMTAyLjkgMzYuOTc4NjI0MiwxMTUgTDM2Ljk3ODYyNDIsMTM3IEwyNi40Nzg2MjQyLDEzNyBMMTUuOTc4NjI0MiwxMzcgTDE1Ljk3ODYyNDIsMTA4LjEgWiIgaWQ9IlBhdGgiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+) --- # Privacy Policy Takeaway **We do not host your calendar or contact databases.** Our apps store them on your device and sync directly with the services you choose. Optional features, licensing, diagnostics, and information you choose to share with support use the connections described below. If you turn on the optional [Bookings](#bookings) service in BusyCal, it stores what it needs to run your booking pages, including the times you are busy (never event details) and the bookings people make. ## Regulatory Compliance[​](#compliance "Direct link to Regulatory Compliance") Our apps are designed to align with various global privacy and security regulations. Calendar and contact synchronization does not pass through our servers. We follow best practices that support compliance with: * **GDPR (General Data Protection Regulation)** – Your calendar and contact databases remain on your device or with the services you choose to sync with. * **HIPAA (Health Insurance Portability and Accountability Act)** – Your organization controls which service stores synced calendar and contact content. If you use our apps in a healthcare setting, you must ensure that your chosen sync service meets HIPAA compliance requirements. The optional Bookings service is not designed for PHI, and we do not offer a HIPAA business associate agreement, so do not collect PHI through booking pages. * **CCPA (California Consumer Privacy Act)** – We do not sell your personal data. important Our apps have not undergone formal certification for these regulatory frameworks. This information is for **general guidance and transparency purposes only**. Compliance is based on self-assessment and industry best practices. If you are required to meet specific legal or industry standards and use our software with a third-party service (such as a CalDAV or WebDAV server), it is your responsibility to ensure that the service complies with GDPR requirements, as these services are ultimately responsible for storing and handling your private data on their systems. ## GDPR Compliance[​](#gdpr "Direct link to GDPR Compliance") Your calendar and contact databases remain on your device or with the services you choose to sync with, such as iCloud, Google, or Microsoft 365. We do not host those databases or act as an intermediary for their synchronization. The feature requests, notification metadata, licensing information, and support information we handle are described below. The optional [Bookings](#bookings) service is different. If you turn it on, it stores what it needs to run your booking pages. For the details your invitees enter, you are the controller and we act as your processor, as the [Bookings Privacy Notice](/bookings-privacy.md) explains. Because of this design, our operations do not involve large-scale monitoring of people or large-scale processing of sensitive data, which means we are not required to appoint a Data Protection Officer (DPO) under GDPR. However, we remain fully committed to ensuring all interactions comply with GDPR regulations, prioritizing secure and direct communication between the app and the services you choose to use. ## HIPAA Compliance[​](#hipaa "Direct link to HIPAA Compliance") Calendar and contact synchronization occurs directly between your device and the service you choose, such as iCloud, Google, Microsoft, or a self-hosted service. It is the responsibility of the user and their organization to ensure that the chosen third-party service provider is HIPAA-compliant when handling sensitive data. The optional [Bookings](#bookings) service is different. If you turn it on, it stores the bookings people make on your pages, including the details they enter, as the [Bookings Privacy Notice](/bookings-privacy.md) describes. Bookings is not designed for PHI, and we do not offer a HIPAA business associate agreement. If you work in healthcare, do not collect PHI through your booking pages. ## SOC 2 Applicability[​](#soc2 "Direct link to SOC 2 Applicability") SOC 2 is a security and privacy compliance framework designed for service providers that store, process, or transmit user data via cloud infrastructure. BusyCal and BusyContacts are native clients, and we **do not host your calendar or contact databases**. The app's direct synchronization and the optional services described on this page are distinct parts of that architecture. If you turn on the optional [Bookings](#bookings) service, BusyCal sends it the times you are busy (start and end times only), and the service stores what it needs to run your booking pages. Bookings has not undergone a SOC 2 audit. Our apps are native, sandboxed macOS and iOS applications. Calendar and contact content is stored locally and synchronized **directly** with the services you connect, including Microsoft 365. Optional [push notifications](#push-notifications) use a relay to tell the app when to refresh; calendar and contact content is still retrieved directly from your provider. When connecting to Microsoft 365 or Exchange accounts: * BusyCal uses **Microsoft's official Exchange Web Services (EWS)**, **Microsoft Graph** protocol or **OAuth authentication**, depending on your configuration. * Calendar and contact synchronization occurs directly between your device and Microsoft's servers over secure channels. * Passwords and OAuth tokens are stored in the **system Keychain** and used to authenticate with your provider. * [Application logs](#application-logs) remain on your device unless you choose to share them with support. * If you turn on [Bookings](#bookings), BusyCal sends it the times you are busy, which can include busy times from Microsoft 365 calendars, the names and colors of your calendars and the names of their accounts, the email address each calendar uses as the organizer of your meetings (the invitations for your bookings show it), and, for pages that offer a video call, the meeting link BusyCal creates for each booking. Please [contact us](/docs.md#technical-support) if your IT team needs more information about these data flows for a vendor review. ## EULA[​](#eula "Direct link to EULA") Our [End User Licensing Agreement is accessible here.](/eula.md) ## Contacts Access Permission[​](#contacts-access-permission "Direct link to Contacts Access Permission") When you launch our apps, they will request your permission to access your Contacts. * **BusyCal**: Access to your Contacts is required to display birthdays and anniversaries, schedule meetings, and autofill addresses when adding locations to events. Your name and email addresses from your "Me Card" are used for sending invitations, managing shared calendars, and tracking changes to events (e.g., last modified details). BusyCal does not collect or upload your contact details to its servers. Contacts are only uploaded to the CalDAV server you sync with if you explicitly attach them to events. * **BusyContacts**: Access to your Contacts is required to autofill addresses, names, and numbers as needed. It also uses your "Me Card" to accurately identify you and allow changes to your contact card. Like BusyCal, BusyContacts does not collect or upload your contact details to its servers. ## Login Credentials[​](#login-credentials "Direct link to Login Credentials") BusyCal and BusyContacts use your login credentials (e.g., username and password) to synchronize, manage, and display your calendars, events, reminders, and contacts. * When adding accounts such as Office 365 or Google, our apps use industry-standard authentication methods like OAuth for secure login. * Passwords and OAuth tokens are securely stored in the system Keychain on macOS or iOS. Account names and settings are stored locally by the app. * Authentication and synchronization take place directly with the provider you choose. Passwords and OAuth tokens are not sent to our push-notification relays. * If you turn on [Bookings](#bookings), BusyCal never sends it your passwords, OAuth tokens, or the titles, locations, notes, or guests of your events. The [Bookings](#bookings) section describes what it does send. ### Zoom Meeting Accounts[​](#zoom-meeting-accounts "Direct link to Zoom Meeting Accounts") BusyCal supports connecting to Zoom accounts to enable users to add Zoom meetings to events within BusyCal or remove existing meetings that were created using BusyCal. The app has no access to any other Zoom meetings, or workflows beyond those specifically created or managed through BusyCal. All communication occurs directly between your device and Zoom's servers using OAuth authentication. ### Google Accounts[​](#google-accounts "Direct link to Google Accounts") BusyCal and BusyContacts connect to Google accounts using **OAuth 2.0** authentication via Google's sign-in flow. Our use of information received from Google APIs adheres to the [Google API Services User Data Policy](https://developers.google.com/terms/api-services-user-data-policy), including the Limited Use requirements. **1. Data Accessed** When you connect a Google account, our apps access the following Google user data through Google's official APIs: * **BusyCal:** Calendar events and their properties (titles, dates, times, locations, attendees, descriptions, reminders), calendar metadata (names, colors, time zones), tasks and their properties (titles, due dates, notes), and free/busy availability information via the Google Workspace API. * **BusyContacts:** Contact records and their properties (names, email addresses, phone numbers, physical addresses, organizations, notes, photos) and contact group memberships. * **Both apps:** Your Google account email address, used to identify and display the connected account. Google calendar identifiers used for push notifications can also contain an email address, as described below. **2. Data Usage** Your Google data is used **exclusively** to synchronize, display, and manage your calendars, tasks, and contacts within BusyCal and BusyContacts on your device, and, if you turn on [Bookings](#bookings), to offer only free times on your booking pages, to let you choose the calendar for each booking page, to name you as the organizer in the invitations for your bookings, and to add a Google Meet link to a booking when your page offers one. Specifically: * Calendar and task data is displayed in the BusyCal interface and synced bidirectionally so that changes you make in the app are reflected in Google Calendar and vice versa. * Contact data is displayed in the BusyContacts interface and synced bidirectionally with Google Contacts. * Free/busy data is used in the Availability Viewer to help you find available meeting times. * If you turn on Bookings, BusyCal sends the Bookings service the times you are busy, which can include busy times from Google calendars, as start and end times only. It also sends the names and colors of your calendars and the names of their accounts, which can include the names and colors of your Google calendars and the name BusyCal shows for your Google account, which can be its email address. With them, it sends the email address each calendar uses as the organizer of your meetings, which for a Google calendar can be the email address of your Google account. The invitations for your bookings show that address to the invitee and their guests. If your page offers a Google Meet call, BusyCal creates a Meet link for each booking through your Google account and sends that link to the Bookings service. * Your Google data is **not** used for advertising, analytics, market research, or any purpose unrelated to providing calendar and contact management functionality. **3. Data Sharing** We do not sell or rent your Google data. Calendar and contact synchronization occurs **directly** between your device and Google. Optional [Google Calendar push notifications](#push-notifications) pass notification metadata through our relay so the app knows when to refresh. If you turn on [Bookings](#bookings), BusyCal sends the Bookings service the busy times, calendar names and colors, account names, organizer addresses, and Meet links described above. The service stores them on Amazon Web Services. It sends the invitee and their guests calendar invitations, updates, and cancellations that show your organizer address, and the Meet link when your page offers the call, as you asked for by turning on the booking page. **4. Data Storage and Protection** Our apps are **sandboxed, native macOS and iOS applications**. Google calendar and contact content is stored **locally on your device** within the app's sandboxed container and in the system's Core Data store. Your OAuth 2.0 tokens are stored in the **system Keychain**. We do not host your Google calendar or contact databases. If you turn on [Bookings](#bookings), it stores the busy times, calendar names and colors, account names, organizer addresses, and Meet links described above. All network communication with Google's APIs occurs over **TLS-encrypted HTTPS** connections. **5. Data Retention and Deletion** Your Google data is retained on your device only for as long as the Google account remains connected in the app. To delete all locally stored Google data, simply **remove the Google account** from BusyCal or BusyContacts in the app's account settings. This immediately removes all locally cached calendar events, tasks, contacts, and credentials associated with that account. You can also delete your data directly through Google's services at any time. Uninstalling the app removes all locally stored data, including any cached Google data and OAuth tokens. Busy times sent to [Bookings](#bookings) are kept for each calendar until BusyCal sends that calendar's busy times again, until you remove them in your Bookings dashboard, or until you delete your Bookings account. Calendar names and colors and account names are kept until BusyCal sends newer ones or you delete your Bookings account. So are organizer addresses, except that each booking keeps the address it was made with until the booking is removed or you delete your Bookings account. A Meet link sent to Bookings is removed with its booking, once BusyCal has added the booking to your calendar or the booking is otherwise removed, or sooner if you delete the invitee's details. ### Office 365 / Exchange Web Services[​](#office-365--exchange-web-services "Direct link to Office 365 / Exchange Web Services") BusyCal and BusyContacts connect to Office 365 and Exchange accounts using Microsoft Graph or Exchange Web Services (EWS), depending on the account type. **ActiveSync is not supported.** * Calendar and contact synchronization occurs directly between your device and the server associated with your account. * Optional Microsoft Graph push notifications use the relay described below. 1. **Delegate and Shared Calendars** BusyCal and BusyContacts offer a full replacement of Outlook in their own rights and so in order to sync with Exchange / O365, our apps need to be able to see delegate and shared calendars and address books (only related to the connected account) so that the user is able to manage calendars they own, including ones shared them. 2. **Basic profiles** Our applications do **not** probe, discover, or access the profiles of others within your organization. They only request the email addresses of users from the server when adding an "attendee" to an event or when setting up a shared calendar. This is also necessary when using the Availability Viewer to conduct Free/Busy lookups. 3. **Full Access to User Calendars/Address Books** Our apps are designed to serve as replacements for native apps like Apple Calendar or Microsoft Outlook, and therefore require full access to perform actions such as creating, editing, or deleting events and contacts on your behalf. important Full access is required for our apps to read, write, or delete events and contacts as directed by you. This access is limited to your calendars and address books and does not include any other organizational data. In some cases, granting access to work or university accounts may require prior approval from your organization. This is typically done through administrative settings within platforms like Office 365 or similar portals. ## Push Notifications[​](#push-notifications "Direct link to Push Notifications") When Push is enabled for Google Calendar or Microsoft Graph, the provider sends change notifications to our AWS-hosted relay. The relay prompts your device to refresh through Apple Push Notification service. The app then retrieves the changed calendar or contact content directly from your provider. These notifications use a device push token, account and calendar or resource identifiers, and subscription or change metadata. Microsoft Graph notifications include the connected account's email address. Google calendar identifiers can also contain an email address. The notifications do not include full event or contact content, passwords, or OAuth tokens. You can choose a timed interval instead of Push under **Settings > Accounts > Refresh calendars** in BusyCal for Mac. Existing subscriptions are removed during a subsequent successful sync. ## Bookings[​](#bookings "Direct link to Bookings") Bookings is an optional BusyCal service that lets people book time with you on booking pages at `busybook.me`. To do that, it stores data on our servers, but only after you turn it on in BusyCal's settings and accept the [Bookings Terms](/bookings-terms.md). Bookings never connects to your calendar accounts. From your calendars, BusyCal sends it the times you are busy, as start and end times; the names and colors of your calendars and the names of the accounts they belong to, so that you can choose a calendar for each booking page in your Bookings dashboard; the email address each calendar uses as the organizer of the meetings BusyCal creates on it, which the invitations for your bookings show to the invitee and their guests; and, for pages that offer a video call, the meeting link BusyCal creates for each booking. Event titles, locations, notes, and guests never leave your devices. BusyCal on your iPhone, iPad, and other Macs that use the same iCloud account takes part in Bookings too. The service stores your Bookings account, your booking pages, and the bookings people make, including the details they enter. The [Bookings Privacy Notice](/bookings-privacy.md) lists each item, why it is needed, and how long it is kept. To set up Bookings, see the [Bookings guide](/docs/bookings.md). ## Licensing[​](#licensing "Direct link to Licensing") When you place an order or purchase a copy of our software, you are required to share your email address with us. This email is linked to the serial number generated to uniquely identify your installation(s). This information is stored and used exclusively for licensing and invoicing purposes. When you register your Mac for the first time, your Mac-ID, IP address, and serial number are sent to our servers to validate and activate your copy. This process is necessary solely for licensing purposes and to validate your installation. ## Automatic Updates[​](#automatic-updates "Direct link to Automatic Updates") BusyCal and BusyContacts on macOS periodically check for updates by contacting our servers. This process involves sending anonymous information about your installation, including the version of BusyCal/BusyContacts and macOS, to determine if an update is available for your software. ## Mailing List[​](#mailing-list "Direct link to Mailing List") If you have [subscribed to our mailing list](https://support.busymac.com/help/subscribe), you will receive infrequent emails from us about important software updates, new product announcements (which may or may not be developed in association / collaboration with another company) or special offers. We will protect your privacy and not share / sell your email addresses to anyone. You may [unsubscribe from our mailing list](https://support.busymac.com/help/subscribe) at any time. ## Application Logs[​](#application-logs "Direct link to Application Logs") If you contact us and choose to share private logs for diagnostic purposes (with your consent), these logs are retained only as long as necessary to resolve the issue. No one outside our organization has access to this information. You have the right to request immediate deletion of logs at any time, even before the issue is resolved. note Our support staff is trained to handle diagnostic logs with extreme care. They see logs day in and day out and are highly skilled at honing in on only the information necessary to resolve your issue or identify the fault, ignoring any unrelated details. Additionally, we utilize tools that filter out noise and highlight specific details, helping us efficiently locate faults or potential resolutions. The logs stored on your disk automatically roll over and are deleted every few days. When shared with us, only a snapshot of the data is captured, focusing on essential details like network request data or UI actions (e.g., editing) required to diagnose and assist in solving the issue. Your logs are never shared with us automatically, and we cannot access your computer or installed apps. Our apps are sandboxed, native applications that securely store data locally on your device, giving you complete control over your logs, including the ability to delete them or adjust logging levels as needed from the app's Help menu. tip [Please see instructions here](/docs/faqs/how-to-send-minimal-logs.md) on how to share the minimal set of logs if this is deemed necessary for troubleshooting purposes. ## Non-Personal Information[​](#non-personal-information "Direct link to Non-Personal Information") We use [Google Firebase](https://firebase.google.com/support/privacy) to receive crash reports and optional performance metrics. Reports can include stack traces, app and operating-system versions, and Firebase installation identifiers used to group diagnostics from an app installation. We use this information to identify bugs and improve performance. Application logs shared with support are separate and may contain sensitive information. They are sent only when you choose to share them. Crash reporting can be entirely disabled via the application's preferences, ensuring complete control over data sharing. In non-beta BusyCal for Mac, disabling both analytics and crash reporting before launch prevents Firebase from starting in BusyCal and BusyCal Menu. Fully quit and reopen both after changing these settings. Connections for sync, licensing, updates, and enabled features are separate from diagnostic reporting. ## Internet Access Policy[​](#internet-access-policy "Direct link to Internet Access Policy") The domains below support app updates, licensing, diagnostics, and optional features. The connections used depend on your app version, accounts, and settings. Your configured sync providers and their sign-in services require their own domains in addition to this list. Update checks and update downloads are separate requests, so a firewall needs to allow both. Outgoing Connections `versioncheck.busymac.com` Direct-download Mac versions use this server to check for app updates and update eligibility. `register.busymac.com` Direct-download Mac versions use this server to activate and validate licenses. The serial number and device identifier are used to check license status and the number of activated devices. `www.busymac.com, downloads.busymac.com` The update feed links to release notes and downloads on `www.busymac.com`. App downloads redirect to `downloads.busymac.com`, so both hosts need to be allowed for the download to complete. These connections use HTTPS. `support.busymac.com` This is the domain used by our online support portal. Some help links or contact links within the app will open help pages under this domain. `news.busymac.com` Our apps connect to this server to check for essential app-updates and related announcements. `busybook.me` BusyCal uses this server for our optional [Bookings](#bookings) service. It connects over HTTPS to sign in, update the available times on your booking pages, and receive bookings and meeting requests. This domain also hosts your booking pages and the Bookings dashboard. Blocking the connection stops these updates and prevents BusyCal from signing in to Bookings. See the [Bookings Privacy Notice](/bookings-privacy.md) for the data the service stores. `weatherkit.busymac.workers.dev, weather.busymac.workers.dev` BusyCal retrieves Apple Weather forecasts through `weatherkit.busymac.workers.dev` and uses `weather.busymac.workers.dev` for city lookups. Requests include the coordinates or city needed for the lookup. The Apple Weather attribution identifies the forecast provider; these proxy hosts are still used. Saved forecasts can remain visible after restarting the app. Weather requests may use HTTPS over TCP or HTTP/3 over UDP port 443. `ogpsakm3q7cp6qavyeymbtixze0mtmnv.lambda-url.us-east-1.on.aws` BusyCal uses this AWS endpoint to convert a What3Words address into coordinates. The three-word address is sent for that lookup. It is separate from the weather forecast hosts above. `url-us.link` Our apps connect to this URL shortening service when you explicitly use the link shortening feature to create shortened URLs for sharing events or other content. This connection only occurs when you manually invoke the URL shortening feature. Only the URL you choose to shorten is sent to the service. No personal information, event details, or other data is collected, stored, or tracked by us through this service. `icons.busymac.com` BusyCal connects to this server to look for icons online in the Graphics Panel. If you deny this connection, you will not be able to search for online icons in the Graphics Panel. `*.crashlytics.com, crashlyticsreports-pa.googleapis.com, firebaseinstallations.googleapis.com` Our apps use Firebase Crashlytics for crash reports and Firebase's installation service for the identifiers used in those diagnostics. Crash logs are automatically generated by macOS whenever an app unexpectedly closes or crashes due to issues such as user interactions, memory leaks, or other system errors. These stack traces provide critical insights, enabling developers to diagnose the root cause and improve the app's overall stability. `firebaselogging-pa.googleapis.com, firebaselogging.googleapis.com, app-measurement.com, *.app-measurement.com, app-analytics-services.com, *.app-analytics-services.com, app-analytics-services-att.com, *.app-analytics-services-att.com` **Analytics are turned off by default**. When manually enabled under app Settings, our apps occasionally send app-usage and licensing-related events to Firebase to correlate these with Crashlytics reports and to help identify general performance issues and usage trends. These analytics also help us identify areas that are under-utilized and need greater attention. Any data collected here strictly complies with the General Data Protection Regulation (GDPR). Data collection is also automatically purged periodically and contains absolutely no information related to events, calendars, and accounts, personal or otherwise. `*.googleapis.com` Google Calendar, Tasks, Contacts, and Workspace APIs use hosts under this domain when you connect a Google account. The Firebase diagnostic hosts listed above also use this domain and have separate reporting settings. `dns.google` This is Google's public DNS, used internally by all Google APIs (Calendar, Tasks, Contacts, Firebase, Crashlytics, etc.) for sending queries to authoritative servers from Core data centers and Google Cloud region locations. Push notification relay hosts `dxp5xke4dn2hydzeeahrttal7y0rlvie.lambda-url.us-east-1.on.aws` (Google Calendar) `m6fpsxmw3ad3k2hld4w7e6jnxe0gzsbq.lambda-url.us-east-1.on.aws` (Microsoft Graph) The app registers these callback addresses with Google or Microsoft. The provider contacts the relay, which prompts the device through Apple Push Notification service. These are provider-to-relay connections, not direct app requests to the relay. See [Push Notifications](#push-notifications) for the metadata involved. ## Cookies and Other Technologies[​](#cookies-and-other-technologies "Direct link to Cookies and Other Technologies") Our website, services, apps, email communications, and advertisements may use "cookies" and other technologies such as "pixel tags" and "click-through URLs". We use the information we collect in this manner to better understand our users' interactions with our website and to optimize the user experience. You can disable cookies in your browser settings, but please note that certain features on our website may not be available as a result. As you access our services, we gather some information automatically on our servers and store it in log files. This information includes your browser type, version, and language, your operating system, the referring and exit websites, IP address, a date/time stamp of the request, and the requested resource (file name and URL). We use this information in anonymized form for statistical analysis, to administer our site, and to improve our product and services, without directly associating this data with individual users. The optional [Bookings](#bookings) service is different. Its booking pages and emails use none of these technologies, and its server logs record only identifiers and error codes, never names, email addresses, page text, or URLs. --- # Store * New Customers * License Renewals * Sidegrades For first-time customers looking to elevate their productivity and stay organized. Purchase a new single-user or multi-user perpetual license. Volume discounts automatically apply at checkout. No Subscription Required With your one-time purchase, you'll receive all updates, improvements, and new features until ****. After that, you can keep using the last version you updated to—forever. Please [learn more](/docs/faqs/120616-licensing-explained.md) about our transparent license policy. ![](https://downloads.busymac.com/resources/img/icons/store_bundle.png) ## BusyCal + BusyContacts Complete Productivity Bundle $ 99.99$ 79.99USD Save 20 % Buy Bundle ![](https://downloads.busymac.com/resources/img/busycal-mac/icon_128.png) ## BusyCal Advanced Calendar Management Requires macOS 12.0+ $ 49.99USD Buy Now ![](https://downloads.busymac.com/resources/img/busycontacts/busycontacts-icon.png) ## BusyContacts Powerful Contact Management Requires macOS 12.0+ $ 49.99USD Buy Now *** ![](https://downloads.busymac.com/resources/img/busycal-ios/icon_128.png) ## BusyCal iOS Universal app for iPhone, iPad, and Apple Watch Requires iOS 15.0+ $ 9.99USD Buy Now BusyCal for iOS is available as a one-time purchase exclusively on the App Store. No subscription required. This universal app includes versions for iPhone, iPad, and Apple Watch, all in a single purchase. Plus, it supports Family Sharing, so everyone in your family can use it at no extra cost. Requires iOS 15.0+. ### Common Questions #### Licensing at a Glance Curious about how our flexible licensing works? To explore the types of licenses we offer and find the details you need, [click here](/docs/faqs/120616-licensing-explained.md) to learn more. #### How long does my license last? Your license comes with lifetime access to the app—it never expires. *However*, it comes with **18 months of updates** from the date of purchase, ensuring you always have the latest features and improvements. Example If you purchase a license today, ****, you'll receive regular updates to the app through ****. This covers everything from critical bug fixes to major new features. And when the time comes, you have the freedom to renew your license for continued updates—it's entirely your choice. #### Why 18 months? We selected 18 months to stand apart from traditional subscription models and provide you with better value. This extended period gives you more time to enjoy updates, new features, and improvements—all without the commitment of a recurring subscription—ensuring you get the most from your investment. #### What if I don't renew my license? If you choose not to renew your license after it expires, you can continue using the last version of the app that your current license covers for as long as you like. However, you will no longer receive any further updates. To access new features, enhancements, bug fixes, and compatibility improvements, you'll need to renew your license, which provides another 18 months of updates. #### How much will a renewal cost? You will be entitled to a 20-40% discount when renewing an existing license (actual discount rate is subject to promotional offerings at the time of renewal, but a minimum discounted rate is guaranteed). Further volume discounts automatically apply when you renew more than one license at the same time. #### Registration Code When purchasing, you will receive a registration code that converts the free trial version to a registered version. If you lose it, you may [look up your registration code](https://busybase.busymac.com/help/regcode) here #### Single License vs. Multi-User License **Personal License:** A single, personal license is intended for individual use only. It provides a single registration code that can be activated by one user on up to 5 personal Macs. This is ideal for personal use or for family sharing. **Multi-User License:** Multi-user licenses are designed for teams, workplaces, or organizations. They allow a single registration code to be used on a number of Macs equal to the number of licenses (or copies) purchased. This is perfect for shared or corporate environments where multiple users need access to the software. When purchasing, you’ll receive a single registration code, whether it’s for a single-user personal license or a multi-user license. This streamlined approach makes license management easy and ensures a hassle-free renewal process. The registration code automatically determines the number of Macs on which the app can be activated, tailored to your license type—perfect for individuals, families, or teams. #### Volume Discounts We apply automatic volume discounts on both new license purchases and multi-license renewals: * 2-4 licenses = **10% Off** * 5-9 licenses = **20% Off** * 10-49 licenses = **25% Off** * 50-99 licenses = **30% Off** * 100+ licenses = **35% Off** **Bundle Renewal Bonus:** When renewing 2+ licenses together using our Bundle Renewal feature, you automatically get **30% off** or more based on volume! Discounts are applied to the sum of all products purchased. For example, purchasing BusyCal and BusyContacts together = 2 products, which will apply a 10% discount at checkout. #### Educational Discounts We offer a 20% discount to staff and students at educational institutions. Email us for [educational pricing](mailto:info@busymac.com?subject=Educational%20Pricing) #### Refund Policy Refund can be requested any time within 30 days of purchase. Please download the free trial and evaluate the software before purchasing it. Email us if you would like a [refund](mailto:info@busymac.com?subject=Refund). #### Update Email Address If you have already made a purchase and wish to change the email address associated with your order, you may [do so by clicking here](https://busybase.busymac.com/help/email) --- # Holiday & Sports Calendar Subscriptions Here's a curated list of calendar subscriptions you can explore. These links are sourced from trusted third-party services like Yahoo! Sports or Calendar Labs. To subscribe: * Click on any link below to copy the URL to the `.ics` file to your clipboard * Then paste it into **[BusyCal > File > New Calendar Subscription](/docs/busycal/70601-subscribing-to-public-calendars.md)**. You may also wish to explore some more calendar subscriptions [listed here](https://www.calendarlabs.com/ical-calendar/). ## Categories * [Holidays](#holidays) * [MLB Baseball](#mlb) * [NBA Basketball](#nba) * [NFL Football](#nfl) * [NHL Hockey](#nhl) ## Holidays[​](#holidays "Direct link to Holidays") [Australian Holidays](https://www.calendarlabs.com/ical-calendar/ics/35/Australia_Holidays.ics)[Brazilian Holidays](https://www.calendarlabs.com/ical-calendar/ics/37/Brazil_Holidays.ics)[Canadian Holidays](https://www.calendarlabs.com/ical-calendar/ics/39/Canada_Holidays.ics)[Christian Holidays](https://www.calendarlabs.com/ical-calendar/ics/41/Christian_Holidays.ics)[French Holidays](https://www.calendarlabs.com/ical-calendar/ics/45/France_Holidays.ics)[German Holidays](https://www.calendarlabs.com/ical-calendar/ics/46/Germany_Holidays.ics)[Indian Holidays](https://www.calendarlabs.com/ical-calendar/ics/33/India_Holidays.ics)[International Holidays](https://www.calendarlabs.com/ical-calendar/ics/56/International_Holidays.ics)[Islamic Holidays](https://www.calendarlabs.com/ical-calendar/ics/52/Islam_Holidays.ics)[Irish Holidays](https://www.calendarlabs.com/ical-calendar/ics/51/Ireland_Holidays.ics)[Italian Holidays](https://www.calendarlabs.com/ical-calendar/ics/53/Italy_Holidays.ics)[Japanese Holidays](https://www.calendarlabs.com/ical-calendar/ics/54/Japan_Holidays.ics)[Jewish Holidays](https://www.hebcal.com/ical/jewish-holidays.ics)[Mexican Holidays](https://www.calendarlabs.com/ical-calendar/ics/60/Mexico_Holidays.ics)[Malaysia Holidays](https://www.calendarlabs.com/ical-calendar/ics/58/Malaysia_Holidays.ics)[New Zealand Holidays](https://www.calendarlabs.com/ical-calendar/ics/61/New_Zealand_Holidays.ics)[Norwegian Holidays](https://www.calendarlabs.com/ical-calendar/ics/62/Norway_Holidays.ics)[Pakistan Holidays](https://www.calendarlabs.com/ical-calendar/ics/102/Pakistan_Holidays.ics)[Philippines Holidays](https://www.calendarlabs.com/ical-calendar/ics/63/Philippines_Holidays.ics)[Russia Holidays](https://www.calendarlabs.com/ical-calendar/ics/65/Russia_Holidays.ics)[Spain Holidays](https://www.calendarlabs.com/ical-calendar/ics/70/Spain_Holidays.ics)[South Africa Holidays](https://www.calendarlabs.com/ical-calendar/ics/68/South_Africa_Holidays.ics)[Swedish Holidays](https://www.calendarlabs.com/ical-calendar/ics/71/Sweden_Holidays.ics)[Turkey Holidays](https://www.calendarlabs.com/ical-calendar/ics/73/Turkey_Holidays.ics)[Thailand Holidays](https://www.calendarlabs.com/ical-calendar/ics/72/Thailand_Holidays.ics)[UAE Holidays](https://www.calendarlabs.com/ical-calendar/ics/74/UAE_Holidays.ics)[UK Holidays](https://www.calendarlabs.com/ical-calendar/ics/75/UK_Holidays.ics)[US Holidays](https://www.busymac.com/download/us-holidays.ics)[US Holidays - with small images](https://www.busymac.com/download/us-holidays-small-icons.ics)[US Holidays - with large images](https://www.busymac.com/download/us-holidays-big-icons.ics) ## MLB Baseball[​](#mlb-baseball "Direct link to MLB Baseball") [Arizona Diamondbacks](https://sports.yahoo.com/mlb/teams/ari/ical.ics)[Atlanta Braves](https://sports.yahoo.com/mlb/teams/atl/ical.ics)[Baltimore Orioles](https://sports.yahoo.com/mlb/teams/bal/ical.ics)[Boston Red Sox](https://sports.yahoo.com/mlb/teams/bos/ical.ics)[Chicago Cubs](https://sports.yahoo.com/mlb/teams/chc/ical.ics)[Chicago White Sox](https://sports.yahoo.com/mlb/teams/chw/ical.ics)[Cincinnati Reds](https://sports.yahoo.com/mlb/teams/cin/ical.ics)[Cleveland Guardians](https://sports.yahoo.com/mlb/teams/cleveland/ical.ics)[Colorado Rockies](https://sports.yahoo.com/mlb/teams/col/ical.ics)[Detroit Tigers](https://sports.yahoo.com/mlb/teams/det/ical.ics)[Florida Marlins](https://sports.yahoo.com/mlb/teams/fla/ical.ics)[Houston Astros](https://sports.yahoo.com/mlb/teams/hou/ical.ics)[Kansas City Royals](https://sports.yahoo.com/mlb/teams/kan/ical.ics)[Los Angeles Angels](https://sports.yahoo.com/mlb/teams/laa/ical.ics)[Los Angeles Dodgers](https://sports.yahoo.com/mlb/teams/lad/ical.ics)[Milwaukee Brewers](https://sports.yahoo.com/mlb/teams/mil/ical.ics)[Minnesota Twins](https://sports.yahoo.com/mlb/teams/min/ical.ics)[New York Mets](https://sports.yahoo.com/mlb/teams/nym/ical.ics)[New York Yankees](https://sports.yahoo.com/mlb/teams/nyy/ical.ics)[Oakland Athletics](https://sports.yahoo.com/mlb/teams/oak/ical.ics)[Philadelphia Phillies](https://sports.yahoo.com/mlb/teams/phi/ical.ics)[Pittsburgh Pirates](https://sports.yahoo.com/mlb/teams/pit/ical.ics)[San Diego Padres](https://sports.yahoo.com/mlb/teams/sdg/ical.ics)[San Francisco Giants](https://sports.yahoo.com/mlb/teams/sfo/ical.ics)[Seattle Mariners](https://sports.yahoo.com/mlb/teams/sea/ical.ics)[St. Louis Cardinals](https://sports.yahoo.com/mlb/teams/stl/ical.ics)[Tampa Bay Rays](https://sports.yahoo.com/mlb/teams/tam/ical.ics)[Texas Rangers](https://sports.yahoo.com/mlb/teams/tex/ical.ics)[Toronto Blue Jays](https://sports.yahoo.com/mlb/teams/tor/ical.ics)[Washington Nationals](https://sports.yahoo.com/mlb/teams/was/ical.ics) ## NBA Basketball[​](#nba-basketball "Direct link to NBA Basketball") [Atlanta Hawks](https://sports.yahoo.com/nba/teams/atl/ical.ics)[Boston Celtics](https://sports.yahoo.com/nba/teams/bos/ical.ics)[Charlotte Bobcats](https://sports.yahoo.com/nba/teams/cha/ical.ics)[Chicago Bulls](https://sports.yahoo.com/nba/teams/chi/ical.ics)[Cleveland Cavaliers](https://sports.yahoo.com/nba/teams/cle/ical.ics)[Dallas Mavericks](https://sports.yahoo.com/nba/teams/dal/ical.ics)[Denver Nuggets](https://sports.yahoo.com/nba/teams/den/ical.ics)[Detroit Pistons](https://sports.yahoo.com/nba/teams/det/ical.ics)[Golden State Warriors](https://sports.yahoo.com/nba/teams/gsw/ical.ics)[Houston Rockets](https://sports.yahoo.com/nba/teams/hou/ical.ics)[Indiana Pacers](https://sports.yahoo.com/nba/teams/ind/ical.ics)[Los Angeles Clippers](https://sports.yahoo.com/nba/teams/lac/ical.ics)[Los Angeles Lakers](https://sports.yahoo.com/nba/teams/lal/ical.ics)[Memphis Grizzlies](https://sports.yahoo.com/nba/teams/mem/ical.ics)[Miami Heat](https://sports.yahoo.com/nba/teams/mia/ical.ics)[Milwaukee Bucks](https://sports.yahoo.com/nba/teams/mil/ical.ics)[Minnesota Timberwolves](https://sports.yahoo.com/nba/teams/min/ical.ics)[New Jersey Nets](https://sports.yahoo.com/nba/teams/njn/ical.ics)[New Orleans Hornets](https://sports.yahoo.com/nba/teams/nor/ical.ics)[New York Knicks](https://sports.yahoo.com/nba/teams/nyk/ical.ics)[Oklahoma City Thunder](https://sports.yahoo.com/nba/teams/okc/ical.ics)[Orlando Magic](https://sports.yahoo.com/nba/teams/orl/ical.ics)[Philadelphia 76ers](https://sports.yahoo.com/nba/teams/phi/ical.ics)[Phoenix Suns](https://sports.yahoo.com/nba/teams/pho/ical.ics)[Portland Trail Blazers](https://sports.yahoo.com/nba/teams/por/ical.ics)[Sacramento Kings](https://sports.yahoo.com/nba/teams/sac/ical.ics)[San Antonio Spurs](https://sports.yahoo.com/nba/teams/sas/ical.ics)[Toronto Raptors](https://sports.yahoo.com/nba/teams/tor/ical.ics)[Utah Jazz](https://sports.yahoo.com/nba/teams/uth/ical.ics)[Washington Wizards](https://sports.yahoo.com/nba/teams/was/ical.ics) ## NFL Football[​](#nfl-football "Direct link to NFL Football") [Arizona Cardinals](https://sports.yahoo.com/nfl/teams/arizona/ical.ics)[Atlanta Falcons](https://sports.yahoo.com/nfl/teams/atlanta/ical.ics)[Baltimore Ravens](https://sports.yahoo.com/nfl/teams/baltimore/ical.ics)[Buffalo Bills](https://sports.yahoo.com/nfl/teams/buffalo/ical.ics)[Carolina Panthers](https://sports.yahoo.com/nfl/teams/carolina/ical.ics)[Chicago Bears](https://sports.yahoo.com/nfl/teams/chicago/ical.ics)[Cincinnati Bengals](https://sports.yahoo.com/nfl/teams/cincinnati/ical.ics)[Cleveland Browns](https://sports.yahoo.com/nfl/teams/cleveland/ical.ics)[Dallas Cowboys](https://sports.yahoo.com/nfl/teams/dallas/ical.ics)[Denver Broncos](https://sports.yahoo.com/nfl/teams/denver/ical.ics)[Detroit Lions](https://sports.yahoo.com/nfl/teams/detroit/ical.ics)[Green Bay Packers](https://sports.yahoo.com/nfl/teams/green-bay/ical.ics)[Houston Texans](https://sports.yahoo.com/nfl/teams/houston/ical.ics)[Indianapolis Colts](https://sports.yahoo.com/nfl/teams/indianapolis/ical.ics)[Jacksonville Jaguars](https://sports.yahoo.com/nfl/teams/jacksonville/ical.ics)[Kansas City Chiefs](https://sports.yahoo.com/nfl/teams/kansas-city/ical.ics)[Los Angeles Chargers](https://sports.yahoo.com/nfl/teams/la-chargers/ical.ics)[Los Angeles Rams](https://sports.yahoo.com/nfl/teams/la-rams/ical.ics)[Miami Dolphins](https://sports.yahoo.com/nfl/teams/miami/ical.ics)[Minnesota Vikings](https://sports.yahoo.com/nfl/teams/minnesota/ical.ics)[New England Patriots](https://sports.yahoo.com/nfl/teams/new-england/ical.ics)[New Orleans Saints](https://sports.yahoo.com/nfl/teams/new-orleans/ical.ics)[New York Giants](https://sports.yahoo.com/nfl/teams/ny-giants/ical.ics)[New York Jets](https://sports.yahoo.com/nfl/teams/ny-jets/ical.ics)[Las Vegas Raiders](https://sports.yahoo.com/nfl/teams/las-vegas/ical.ics)[Philadelphia Eagles](https://sports.yahoo.com/nfl/teams/philadelphia/ical.ics)[Pittsburgh Steelers](https://sports.yahoo.com/nfl/teams/pittsburgh/ical.ics)[San Francisco 49ers](https://sports.yahoo.com/nfl/teams/san-francisco/ical.ics)[Seattle Seahawks](https://sports.yahoo.com/nfl/teams/seattle/ical.ics)[Tampa Bay Buccaneers](https://sports.yahoo.com/nfl/teams/tampa-bay/ical.ics)[Tennessee Titans](https://sports.yahoo.com/nfl/teams/tennessee/ical.ics)[Washington Commanders](https://sports.yahoo.com/nfl/teams/washington/ical.ics) ## NHL Hockey[​](#nhl-hockey "Direct link to NHL Hockey") [Anaheim Ducks](https://sports.yahoo.com/nhl/teams/ana/ical.ics)[Arizona Coyotes](https://sports.yahoo.com/nhl/teams/pho/ical.ics)[Boston Bruins](https://sports.yahoo.com/nhl/teams/bos/ical.ics)[Buffalo Sabres](https://sports.yahoo.com/nhl/teams/buf/ical.ics)[Carolina Hurricanes](https://sports.yahoo.com/nhl/teams/car/ical.ics)[Calgary Flames](https://sports.yahoo.com/nhl/teams/cgy/ical.ics)[Chicago Blackhawks](https://sports.yahoo.com/nhl/teams/chi/ical.ics)[Columbus Blue Jackets](https://sports.yahoo.com/nhl/teams/cob/ical.ics)[Colorado Avalanche](https://sports.yahoo.com/nhl/teams/col/ical.ics)[Dallas Stars](https://sports.yahoo.com/nhl/teams/dal/ical.ics)[Detroit Red Wings](https://sports.yahoo.com/nhl/teams/det/ical.ics)[Edmonton Oilers](https://sports.yahoo.com/nhl/teams/edm/ical.ics)[Florida Panthers](https://sports.yahoo.com/nhl/teams/fla/ical.ics)[Los Angeles Kings](https://sports.yahoo.com/nhl/teams/los/ical.ics)[Minnesota Wild](https://sports.yahoo.com/nhl/teams/min/ical.ics)[Montreal Canadiens](https://sports.yahoo.com/nhl/teams/mon/ical.ics)[Nashville Predators](https://sports.yahoo.com/nhl/teams/nas/ical.ics)[New Jersey Devils](https://sports.yahoo.com/nhl/teams/njd/ical.ics)[New York Islanders](https://sports.yahoo.com/nhl/teams/nyi/ical.ics)[New York Rangers](https://sports.yahoo.com/nhl/teams/nyr/ical.ics)[Ottawa Senators](https://sports.yahoo.com/nhl/teams/ott/ical.ics)[Philadelphia Flyers](https://sports.yahoo.com/nhl/teams/phi/ical.ics)[Pittsburgh Penguins](https://sports.yahoo.com/nhl/teams/pit/ical.ics)[San Jose Sharks](https://sports.yahoo.com/nhl/teams/san/ical.ics)[St. Louis Blues](https://sports.yahoo.com/nhl/teams/stl/ical.ics)[Tampa Bay Lightning](https://sports.yahoo.com/nhl/teams/tam/ical.ics)[Toronto Maple Leafs](https://sports.yahoo.com/nhl/teams/tor/ical.ics)[Vancouver Canucks](https://sports.yahoo.com/nhl/teams/van/ical.ics)[Washington Capitals](https://sports.yahoo.com/nhl/teams/was/ical.ics)[Winnipeg Jets](https://sports.yahoo.com/nhl/teams/wpg/ical.ics) --- # Support & User Guides [![BusyCal Mac](https://downloads.busymac.com/resources/img/busycal-mac/icon_128.png)](/docs/busycal/70585-getting-started-with-busycal-for-mac.md) ## [BusyCal Mac](/docs/busycal/70585-getting-started-with-busycal-for-mac.md) [User Guide](/docs/busycal/70585-getting-started-with-busycal-for-mac.md) [![BusyCal Mac](https://downloads.busymac.com/resources/img/busycal-ios/icon_128.png)](/docs/busycalios/70656-getting-started-with-busycal-for-ios.md) ## [BusyCal iOS](/docs/busycalios/70656-getting-started-with-busycal-for-ios.md) [User Guide](/docs/busycalios/70656-getting-started-with-busycal-for-ios.md) [![](/img/bookings/icon_128.png)](/docs/bookings.md) ## [BusyCal Bookings](/docs/bookings.md) [User Guide](/docs/bookings.md) [![BusyCal Mac](https://downloads.busymac.com/resources/img/busycontacts/busycontacts-icon.png)](/docs/busycontacts/44314-getting-started-with-busycontacts.md) ## [BusyContacts Mac](/docs/busycontacts/44314-getting-started-with-busycontacts.md) [User Guide](/docs/busycontacts/44314-getting-started-with-busycontacts.md) ### Technical Support[​](#technical-support "Direct link to Technical Support") **We encourage you to [search our extensive documentation](#)** and look through our [FAQs](/docs/faqs.md) and online user manuals for a quicker turnaround, as most topics are well documented. We frequently update our documentation with recently asked questions and new features. When contacting us, please make note of our working hours below. ### Support Information[​](#support-information "Direct link to Support Information") If you are encountering a problem with BusyCal or BusyContacts and need help solving it, please send your log files for technical support. By examining your log files, we can quickly identify problems and provide a solution. [![](https://downloads.busymac.com/resources/img/busycal-mac/icon_128.png)Send BusyCal Logs](busycallog://)[![](https://downloads.busymac.com/resources/img/busycontacts/busycontacts-icon.png)Send BusyContacts Logs](busycontactslog://) Click the appropriate button above to send your logs to us from the affected device (iOS or macOS). This will launch your default email application and create a new message addressed to with your log files attached as a zip file. Please provide a description of the problem in the body of the message. We will examine your logs and try to respond as soon as possible. important The information in the logs will be kept confidential, used **exclusively for troubleshooting**, and be deleted after the issue is resolved. Please consult our [privacy policy](/privacy.md) to learn how [we deal with your logs](/privacy.md#application-logs). tip If you wish to share the *minimal amount* of logs due to compliance issues, please follow [instructions given here](/docs/faqs/how-to-send-minimal-logs.md). For anything else, feel free to write to **Our working hours are:** * Monday to Friday: 10am to 6pm GMT * Saturday to Sunday: 11am to 4pm GMT * Public holidays: 12pm to 4pm GMT We have a small, but a very dedicated team. Emails are replied to on a first-come first-served basis. Due to the high volume of emails we receive, a reply may take between 36 to 48 hours (or sometimes, just a few minutes). Your patience is much appreciated. ### Looking to Compare Calendaring Solutions?[​](#looking-to-compare-calendaring-solutions "Direct link to Looking to Compare Calendaring Solutions?") If you are comparing BusyCal with tools like Fantastical, Outlook Calendar, Apple Calendar, or Google Calendar, start with our overview page: [BusyCal Comparison Guides](/compare.md) --- # BusyCal Bookings BusyCal Bookings lets people book a meeting with you at a time you're free. Create a booking page for each type of meeting, such as a 30-minute call, then share its link. The person chooses an available time and fills in a short form. BusyCal adds the confirmed booking to your calendar. ![A booking page for a 30-minute Intro call, with Thursday 22 October selected and its available times listed](https://downloads.busymac.com/resources/img/bookings/invitee-choose-time-2026-10-20.png) Your existing events stay private. Bookings receives their busy times, without titles, notes or other event details. It keeps a confirmed booking until BusyCal has finished adding it to your calendar, including any video call link. You then manage the meeting in your calendar. Set up Bookings in BusyCal for Mac. Your iPhone, iPad and other Macs can then use it through the same iCloud account. See [Getting Started with Bookings](/docs/busycal/bookings-getting-started.md). ## How Bookings Works with BusyCal[​](#how-it-works "Direct link to How Bookings Works with BusyCal") Bookings has two parts that work together: * **BusyCal on your devices** shares your busy times, adds bookings to your calendar and creates video calls. Its Inbox shows updates to bookings and requests. On your Mac, use **BusyCal > Settings > Bookings** to sign in and choose which calendars to check for conflicts. Devices using the same iCloud account join automatically. * **Your dashboard**, at `busybook.me/my`, lets you manage Bookings in a browser. Use it to create booking pages, answer requests, check bookings waiting for BusyCal, and change your settings. The Bookings service doesn't connect to your calendar accounts. BusyCal handles calendar access on your devices and receives booking updates through push notifications, with regular checks as well. Keep BusyCal running on a Mac to keep your busy times up to date. On iPhone and iPad, updates run while BusyCal is open and when iOS allows background refresh. BusyCal shares only the start and end times of busy periods from the calendars you choose. It doesn't send their event titles, locations, notes or guests. It also shares calendar names, colors and account names so you can choose a calendar in the dashboard, the organizer email address used for invitations, and whether each calendar's account is turned on. Bookings uses encrypted connections and encrypted storage, with each booking's invitee details encrypted separately. See [Account, Security and Privacy](/docs/bookings/account-security-and-privacy.md#privacy) for an overview, or the [Bookings Privacy Notice](/bookings-privacy.md) for full details about storage and retention. ## Booking Pages and Their Links[​](#pages-and-links "Direct link to Booking Pages and Their Links") Each booking page offers a type of meeting, with its own duration, hours, questions, location and approval setting. For example, offer a 15-minute call that confirms automatically and a one-hour consultation that needs your approval. Each page has a link such as `busybook.me/jane/intro`. It combines your username (`jane`) with the page's **Link** setting (`intro`). A booking page's **Visibility** setting decides who can book it: * **Turned off**: No one can book. People who open the link see that the booking page is turned off. * **Link only**: Anyone with the link can book. The booking page isn't listed on your profile page. * **On your profile**: The booking page is listed on your public profile page, so anyone with your profile link can find it and book. You can also let people book directly on your own website by embedding a booking page. See [Booking Pages](/docs/bookings/booking-pages.md) and [Embedding a Booking Page on Your Website](/docs/bookings/booking-pages.md#embedding), including the steps for WordPress. ## Your Profile Page[​](#profile-page "Direct link to Your Profile Page") Your public profile, such as `busybook.me/jane`, shows your name, photo and the booking pages set to **On your profile**. Share this link when you want people to choose from your available meeting types. You can also [embed the profile on your website](/docs/bookings/profile-and-appearance.md#embedding). See [Your Profile and Appearance](/docs/bookings/profile-and-appearance.md). ## Bookings and Requests[​](#bookings-and-requests "Direct link to Bookings and Requests") A booking is a confirmed meeting. A request needs your approval. * On a booking page with **Automatic** approval, each booking is confirmed right away. * On a booking page set to **You approve each request**, each new booking is a request until you approve or decline it. A pending request reserves its time until you approve or decline it, or it expires. See [Bookings and Requests](/docs/bookings/bookings-and-requests.md). ## Busy Calendars[​](#busy-calendars "Direct link to Busy Calendars") Choose which calendars should block booking times in **BusyCal > Settings > Bookings**. These are your **busy calendars**. For example, include both work and personal calendars to avoid conflicts with either. Bookings keeps their last shared busy times until they are replaced or removed, or you delete your account. If an account stops syncing, those times become out of date. See [Availability and Busy Calendars](/docs/bookings/availability-and-busy-calendars.md). ## Where Bookings Go[​](#where-bookings-go "Direct link to Where Bookings Go") Choose a destination calendar for each booking page using **Add bookings to** in the dashboard. BusyCal adds confirmed bookings there, and the calendar account syncs them to your other devices. Requests are added only after you approve them. You can use a smart filter to show just your bookings in BusyCal. See [Showing Your Bookings with a Smart Filter](/docs/bookings/bookings-and-requests.md#smart-filter). If you turn off the account of a booking page's calendar in **BusyCal > Settings > Accounts**, that booking page stops taking new bookings until you turn the account on again or choose another calendar. See [When the Calendar's Account Is Turned Off](/docs/bookings/booking-pages.md#account-off). Once BusyCal finishes adding the booking and any video call link, it leaves the dashboard. Edit, move or cancel the meeting in your calendar, as you would any other meeting you organize. See [Changing a Meeting in Your Calendar](/docs/bookings/bookings-and-requests.md#calendar-changes). Bookings sends you email updates, and BusyCal's Inbox shows booking and request updates with the Bookings icon. On your Mac, new bookings and requests also appear in Notification Center. To stop these notifications, turn off **Show bookings in Notification Center** in **BusyCal > Settings > Alarms**. See [Bookings in BusyCal's Inbox](/docs/bookings/bookings-and-requests.md#inbox) and [Receiving Meeting Invitations](/docs/busycal/70615-meetings-and-invitations.md#receiving-meeting-invitations). ## Your Dashboard[​](#dashboard "Direct link to Your Dashboard") To open your dashboard, click **Open Dashboard** in **BusyCal > Settings > Bookings**. Or go to `busybook.me/my` in your browser. You sign in with the same email address that you use in BusyCal. ![The dashboard's Overview, with Overview, Bookings, Booking pages and Settings at the top, a paused page under Status, two requests to answer and the booking links](https://downloads.busymac.com/resources/img/bookings/dashboard-overview-2026-10-20.png) The dashboard has four sections: * **Overview**: A summary of requests, bookings waiting for BusyCal, problems and withdrawals, plus your booking links. * **Bookings**: Four lists for managing outstanding items: **Requests**, **Waiting for BusyCal**, **Problems** and **Withdrawals**. A booking leaves these lists when BusyCal finishes saving the meeting and any call link. See [The Lists in Your Dashboard](/docs/bookings/bookings-and-requests.md#lists). * **Booking pages**: Your booking pages. Here you create, edit and preview booking pages, and turn them on or off. * **Settings**: **Profile**, **Appearance**, **Email replies**, **Access**, **Sign-in and security**, and **Privacy and data**. **Access** also has **Busy times**, where you see how old each calendar's busy times are and choose when new bookings need your approval. ## Who Can Use Bookings[​](#requirements "Direct link to Who Can Use Bookings") Bookings is included with BusyCal for Mac. You can use it with: * BusyCal from the Mac App Store, while your subscription is active. * BusyCal through Setapp, while your membership is active. * BusyCal bought from our website, while your license includes free updates, and for 14 days after they end. See [Licensing Explained](/docs/faqs/120616-licensing-explained.md). * The free trial of BusyCal from our website, until the trial ends. If you don't have access, **BusyCal > Settings > Bookings** explains why and offers **Buy…**, **Renew…** or **Subscribe…**, as appropriate. For a Setapp copy, check your membership in Setapp. Access on iPhone and iPad depends on your Mac copy's eligibility. If that ends, renew your Mac license, subscription or membership to keep using Bookings on those devices. See [Using Bookings on Your Other Devices](/docs/busycal/bookings-getting-started.md#other-devices). --- # Account, Security and Privacy Your email address is your Bookings sign-in. Bookings sends a code or link instead of asking for a password, so keep your email account secure: anyone with access to it can sign in. ## Signing In to BusyCal[​](#mac-sign-in "Direct link to Signing In to BusyCal") Create your account by signing in from **BusyCal > Settings > Bookings** on a Mac. Enter your email address, then the six-digit code sent to it. The code expires after 10 minutes. Your other devices join through the same iCloud account without a separate sign-in. See [Turn On Bookings in BusyCal](/docs/busycal/bookings-getting-started.md#sign-in). ## Signing In to Your Dashboard[​](#dashboard-sign-in "Direct link to Signing In to Your Dashboard") Your dashboard is at `busybook.me/my`. You can open it in any browser, or click **Open Dashboard** in **BusyCal > Settings > Bookings**. 1. Enter the email address that you use in BusyCal, then click **Email Me a Sign-In Link**. 2. Open the sign-in email. 3. Click the link in the email, then click **Sign In** in your browser. Or type the six-digit code from the email in the browser where you asked to sign in, then click **Sign In**. The link and code are single-use and expire after 10 minutes. Sign in with an address you've already used for Bookings in BusyCal; the dashboard doesn't send sign-in emails to other addresses. Your browser stays signed in until you sign out or leave the dashboard unused for 90 days. To sign out, open the account menu at the top right and choose **Sign Out**. ## Where You're Signed In[​](#sessions "Direct link to Where You're Signed In") Open **Settings > Sign-in and security > Where you're signed in** to see your signed-in browsers. Each entry shows its sign-in date, last activity and expiry. The current one is marked **This browser**. * To sign out another browser, click **Sign Out…** in its row, then click **Sign Out**. That browser then needs a new sign-in link or code to open your dashboard again. * To sign out every browser, including this one, click **Sign Out Everywhere…**, then click **Sign Out Everywhere**. Signing out browsers doesn't sign out BusyCal. Your devices stay signed in and keep your booking pages up to date. ## Devices That Use Bookings[​](#devices "Direct link to Devices That Use Bookings") Each device using Bookings can share busy times and add bookings to your calendar. After you sign in on one Mac, devices using the same iCloud account join automatically. See [Using Bookings on Your Other Devices](/docs/busycal/bookings-getting-started.md#other-devices). The **Devices** group in **BusyCal > Settings > Bookings** lists your other devices that use Bookings. It shows when each of them was last seen. * To remove a device that you no longer use, for example a Mac that you sold, click **Sign Out…** in its row, then click **Sign Out**. If that device has already signed out on its own, this just removes it from the list. * To sign out of Bookings, click **Sign Out…** in the **Account** group on a Mac, then click **Sign Out**. Your iPhone, iPad and other Macs that use the same iCloud account sign out too. A device that signs out of iCloud, or that changes to another iCloud account, stops using Bookings. Your other devices keep using it. Signing out keeps your account, pages, bookings and previously shared busy times. If no other device updates those calendars, new bookings require approval once the busy times exceed your chosen limit. After 7 days, your pages stop offering times. To remove stored busy times, use **Settings > Access > Remove Busy Times** in the dashboard. See [Busy Times for Each Calendar](/docs/bookings/availability-and-busy-calendars.md#calendar-busy-times). The dashboard's **Settings > Access** lists signed-in devices, their BusyCal versions and last activity. **Notifications off** means a device can't receive push notifications. It still checks for updates about every 15 minutes while BusyCal can run. ## Access to Bookings[​](#access "Direct link to Access to Bookings") In the dashboard, **Settings > Access > Access until** shows when your current access expires. BusyCal renews it automatically while your license, subscription or membership includes Bookings. If access expires, your pages stop accepting new bookings and show that you're not taking bookings right now. Your pages and bookings are kept. Access on iPhone and iPad also pauses until your Mac copy is eligible again. **BusyCal > Settings > Bookings** explains why access ended and offers **Buy…**, **Renew…** or **Subscribe…**, as appropriate. For a Setapp copy, check your membership in Setapp. See [Who Can Use Bookings](/docs/bookings.md#requirements). ## Deleting Your Account[​](#delete-account "Direct link to Deleting Your Account") When you delete your Bookings account: * Upcoming bookings still managed by Bookings are cancelled, and pending requests are declined. Invitees receive the usual emails. Past meetings aren't cancelled and generate no email. * Your account closes immediately, your pages stop accepting bookings, and all browsers are signed out of the dashboard. * After the final emails are sent, Bookings removes your profile, pages, busy times and remaining booking records. Your links stop working. It retains only records without personal details to prevent duplicate submissions and explain why an old booking link no longer works. Meetings that have left Bookings stay in your calendar, and their invitees aren't contacted. Delete those meetings in your calendar if you want to cancel them. A booking still managed by Bookings may also have a calendar event, for example while its call link is being prepared. Deleting your account can cancel that booking without removing the event, because BusyCal can't update your calendar for Bookings after deletion. Check your calendar for any meetings that need removing. For bookings whose emails have no calendar attachment, the cancellation email asks invitees to remove the meeting themselves. See [The Invitation from Your Calendar](/docs/bookings/emails-and-replies.md#calendar-invitation). Devices sign out when deletion finishes. Until then, **BusyCal > Settings > Bookings** shows that deletion is in progress and disables changes. You can't undo this. You delete your account in your dashboard, not in BusyCal: 1. Choose **Settings > Privacy and data**. 2. Click **Delete Account…**. The confirmation shows how many bookings it cancels (**Bookings to cancel**) and how many requests it declines (**Requests to decline**). 3. Click **Delete Account**. To open your dashboard from BusyCal, click **Open Dashboard** in **BusyCal > Settings > Bookings**. To keep your account but stop using it on your devices, sign out on a Mac. To stop accepting bookings temporarily, turn your pages off or pause them. ## Privacy[​](#privacy "Direct link to Privacy") * **Existing events**: Bookings doesn't connect to your calendar accounts or receive their passwords. BusyCal shares only busy start and end times, without event titles, locations, notes or guests. These times remain until they're replaced or removed, or you delete your account. * **Calendar and account information**: BusyCal shares calendar names, colors and account names so you can choose a destination in the dashboard. These names aren't public. It also shares whether each account is turned on, so pages using a disabled account can stop accepting bookings. * **Organizer address**: BusyCal shares the email address used to organize meetings on each calendar. Invitees and guests see it on invitations, but it doesn't appear on booking pages. Secondary Google calendars use a generated address ending in `@group.calendar.google.com`. * **Your booking pages**: They set no cookies and load no tracking or analytics scripts, and the emails have no tracking pixels. While someone fills in a booking form, their browser keeps their answers in that tab until the booking is made or the tab is closed. * **Invitee details**: Names, email addresses, phone numbers, answers, guests and messages are encrypted separately for each booking. They're deleted with the booking. See [Invitee Details](#invitee-details). * **Old booking links**: After a booking leaves the dashboard, Bookings keeps a one-way fingerprint of its invitee link and the removal time. This lets the link explain that the booking is no longer managed there. No host, meeting or invitee details are stored with it. * **Booked times**: After a booking leaves the dashboard, its start, end and buffer times remain blocked until they pass, even if you move or delete the calendar event. The page and start time are also kept for 45 days after the start so the booking still counts toward **Maximum bookings**. These records contain no invitee details. You are responsible for the details that your invitees enter, and Bookings stores them for you. The [Bookings Privacy Notice](/bookings-privacy.md) lists everything that Bookings stores and for how long. The [Bookings Terms](/bookings-terms.md) describe your responsibilities toward invitees. ### Invitee Details[​](#invitee-details "Direct link to Invitee Details") Bookings keeps invitee details while it manages the booking or request: * **Confirmed booking:** Until BusyCal finishes adding the meeting and any video call link. * **Declined or expired request:** Until its final email is sent. * **Withdrawn request:** Until you dismiss the notice. * **Booking BusyCal can't finish:** Until a week after the meeting's start, when Bookings emails you and deletes it. These retention rules also appear in **Settings > Privacy and data**. Your calendar keeps the meeting, including invitee details in its notes unless you chose to leave them out. Once the booking leaves the dashboard, Bookings no longer changes that event. To remove details sooner, you can: * Remove them from one booking with **Remove Invitee Details…**. See [Removing an Invitee's Details](/docs/bookings/bookings-and-requests.md#remove-details). * Erase every booking with one email address with **Erase an Email Address…**. See [Erasing an Email Address](#erase-address). For upcoming bookings still managed by Bookings, either option cancels the booking or declines the request and sends the usual email. For past meetings, only the details are removed, with no cancellation or email. Both options remain available after your access to Bookings expires. Once a booking leaves the dashboard, Bookings no longer has its invitee details. To remove them from your calendar, edit or delete the meeting there. If an invitee or a guest asks you about their details, it's up to you to answer. ### Erasing an Email Address[​](#erase-address "Direct link to Erasing an Email Address") Erase an email address to remove all retained bookings and requests associated with it. This includes meetings the person booked and meetings where they were a guest, across all your pages, including deleted pages. 1. In your dashboard, choose **Settings > Privacy and data**. 2. Under **Invitee details**, click **Erase an Email Address…**. 3. Enter the address, then click **Find Bookings**. 4. Read what erasing does, then click **Erase Email Address**. To leave the bookings as they are, click **Keep Bookings**. Before you confirm with **Erase Email Address**, the screen shows the affected bookings in three groups: * **Bookings to cancel**: Each upcoming booking is cancelled and removed from your calendar, and the invitee gets the usual email. * **Requests to decline**: Each one is declined, and the invitee gets the usual email. * **Bookings and requests that already ended**: Each one loses its details. This includes bookings whose meeting has ended: they aren't cancelled, and nobody gets an email. Each matching booking is erased in full, including everyone else's details on that booking, even when the address belongs to a guest. Records awaiting deletion show **Details removed** in your lists. This can't be undone. When it's complete, **Privacy and data** shows **Email address erased** and a summary. If the bookings change while the confirmation is open, erasure stops and the counts update. Review them before confirming again. On a booking's screen, **Erase This Email Address…** appears next to the invitee's address and next to each guest's address. It opens the same confirmation for that address, so you don't need to type it. If no retained booking matches the address, the screen says so and nothing changes. The search can't find bookings that have left the dashboard or whose details were already removed. To remove details from a calendar event, edit or delete the event in your calendar. ### Your Privacy Policy Link[​](#privacy-link "Direct link to Your Privacy Policy Link") If you have your own privacy policy, your booking forms can link to it next to the Bookings privacy notice. 1. In your dashboard, choose **Settings > Privacy and data**. 2. Under **Your privacy policy**, enter the link. It must start with `https://`. 3. Click **Save**. To remove the link, empty the field, then click **Save**. --- # Availability and Busy Calendars Your available times depend on two things: the hours and limits you set for a booking page, and the busy times in your chosen calendars. This guide explains how they work together and how to check the result. For help editing a page, see [Booking Pages](/docs/bookings/booking-pages.md). ## Which Times People Can Book[​](#how-times-are-chosen "Direct link to Which Times People Can Book") A booking page offers a start time when all of these are true: * The whole meeting fits within one of the page's weekly time ranges, or the hours set for that specific date. * The start is within the **Date range** and allows enough **Minimum notice**. * You're free in your busy calendars for the whole meeting and its buffer time. * No booking or request on any of your booking pages overlaps the meeting or its buffer time. * The booking page hasn't reached its **Maximum bookings** for that day, week or month. * The booking page is on and not paused, and your busy times are less than 7 days old (see [Keeping Your Busy Times Up to Date](#busy-times)). * The page has a destination calendar selected, and its account isn't turned off in BusyCal. See [When the Calendar's Account Is Turned Off](/docs/bookings/booking-pages.md#account-off). If a previously selected calendar is no longer available, the page may still accept bookings. Pause it while you choose another destination. See [When the Calendar Is Missing](/docs/bookings/booking-pages.md#calendar-missing). ## Hours and Specific Dates[​](#hours "Direct link to Hours and Specific Dates") Set **Weekly hours** in the booking page's time zone. You can add several time ranges per day, such as 9:00 AM to noon and 1:00 PM to 5:00 PM to keep lunch free. If the end time is earlier than the start, the hours continue overnight and show **Ends the next day**. Use **Specific dates** to replace your usual hours on a particular date. Leave a date without hours to mark it **Closed all day**. Overnight hours belong to the day they start on. Closing Tuesday doesn't remove the after-midnight portion of Monday's hours. For example, Monday hours of 11:00 PM to 1:00 AM still offer 30-minute meetings at midnight and 12:30 AM on Tuesday. To close Tuesday completely, also override Monday's hours so they end by midnight. You can add up to 30 specific dates per page. If you leave weekly hours empty, the page offers only those dates. Its card in **Booking pages** reminds you of this while the page is on. People see the times in their own time zone, and they can choose another time zone on the booking page. If the booking page uses **Show times only in this time zone**, everyone sees the booking page's time zone instead. ## Durations and Start Times[​](#lengths "Direct link to Durations and Start Times") If you offer more than one **Duration**, visitors choose one before choosing a time. **Default** sets the initial duration. **Start time increments** set how far apart the start times are. For example, a 30-minute meeting offers 9:00, 9:30 and 10:00 with **Same as the duration**. With 15-minute increments, it offers 9:00, 9:15 and 9:30. ## Notice, Buffers, Date Range and Limits[​](#limits "Direct link to Notice, Buffers, Date Range and Limits") * **Minimum notice**: How much advance notice you need. With 1 day selected, the earliest bookable meeting starts 24 hours from now. * **Buffer time**: Reserve free time **Before each meeting** and **After each meeting**. A meeting isn't offered if another booking or a busy calendar event would overlap that buffer. Between two bookings, the larger buffer applies; the two buffers aren't added together. * **Date range**: **Days into the future** offers times on that many days, counting today, up to 210 days. **Between two dates** offers times only from the **Start date** to the **End date**, including both dates. * **Maximum bookings**: Limit this page's bookings **Per day**, **Per week** or **Per month**. Confirmed bookings and pending requests count, including earlier ones in the same period. A booking continues to count against its original period after it's added to your calendar, even if you move or delete the event. Days and months use the page's time zone; weeks start on Monday. Once a limit is reached, no more times are offered in that period. Bookings and pending requests block their times across all your booking pages, so people can't reserve the same time through a different page. ## Busy Calendars[​](#busy-calendars "Direct link to Busy Calendars") Choose which calendars Bookings checks for conflicts under **Free Times** in BusyCal's Bookings settings. These are your busy calendars. Your selection applies to every device using your Bookings account. 1. Choose **BusyCal > Settings**, then select **Bookings**. 2. Under **Free Times**, click **Choose Calendars…** next to **Calendars to check**. The **Check for Free Times** sheet opens. 3. Check the calendars whose events should stop people from booking, and uncheck the others. If you have many calendars, use the search field to find one. **Select All** and **Deselect All** change all of your calendars except calendar subscriptions, which you check one by one. 4. Click **Save**. Calendars are grouped by account, with a selected count for each. After you save, **Calendars to check** shows **All calendars**, **No calendars**, or a count such as **3 of 5 calendars**. In the dashboard, **Settings > Access > Busy calendars** summarizes your selection, including excluded calendars and any subscriptions you've included. Below it, each calendar's last shared busy times are listed. See [Busy Times for Each Calendar](#calendar-busy-times). BusyCal shares up to 256 of your calendars with Bookings. If you have more, your dashboard says how many aren't listed. ### Which Calendars Count[​](#which-calendars "Direct link to Which Calendars Count") The picker lists calendars that hold events. A selected calendar blocks booking times even when it's hidden in BusyCal's calendar list. Calendars from accounts that are turned off or not in use on this Mac appear at the end without checkboxes. This Mac can't check them until the account is in use. See [When a Calendar Account Stops Syncing](#account-stops-syncing). Some kinds of calendar work differently: On My Mac calendars The sheet also lists your On My Mac calendars that hold events. A checked On My Mac calendar counts as busy, like a calendar in an account. Holiday calendars Holiday calendars don't count as busy, and the sheet doesn't list them. The Calendar app's holiday calendars in an Apple Calendar account are an exception: see **Apple Calendar accounts** below. Calendar subscriptions Calendar subscriptions, such as webcal links and subscriptions in iCloud, start unchecked. Select each one whose events should block booking times. **Select All** and **Deselect All** leave subscriptions unchanged, and new subscriptions also start unchecked. Subscriptions refresh on their own schedules, so changes may take longer to affect your availability. Calendars subscribed over the LAN Calendars that you [subscribe to over the LAN](/docs/busycal/70655-using-busycal-on-a-lan.md#subscribing-to-calendars) work like your other calendars, not like calendar subscriptions. They start checked and count as busy unless you uncheck them. Apple Calendar accounts An [Apple Calendar account](/docs/busycal/140077-using-busycal-with-apple-calendar.md) shows the calendars of the Calendar app on your Mac in BusyCal, read-only. It's different from an iCloud or other CalDAV account that you add to BusyCal directly. For an Apple Calendar account, the sheet lists the Calendar app's subscriptions, including its holiday calendars, as calendar subscriptions: they start unchecked and count as busy only after you check them. The sheet doesn't list the Calendar app's Birthdays calendar, which never counts as busy. ### Which Events Count[​](#which-events "Direct link to Which Events Count") In a busy calendar, events count as busy unless they're marked as free. This includes all-day events, and invitations that you accepted or accepted as tentative. An event whose free or busy status Microsoft reports as unknown also counts as busy. Declined invitations and cancelled events don't count. An all-day event that you make in iCloud on the web is marked as free, so it doesn't block the day. Travel time before an event, set in BusyCal or in Apple Calendar, also blocks booking times. Up to one day of travel time counts. An invitation that you haven't answered also counts as busy, unless it's for an all-day event. An all-day invitation doesn't block the day until you accept it or accept it as tentative. BusyCal shares only the times when you're busy with Bookings, as start and end times for each busy calendar. It shares nothing about the events themselves. Confirmed bookings and pending requests block their time even if their destination calendar isn't selected as a busy calendar. After BusyCal adds a booking to your calendar, its booked time stays blocked until that time has passed, even if you move or delete the meeting in your calendar. If you move the meeting, its new time counts as busy only when its calendar is checked for free times. ### How BusyCal Finds Your Answer to an Invitation[​](#your-answer "Direct link to How BusyCal Finds Your Answer to an Invitation") BusyCal identifies your response by finding you in the invitation's attendee list. Depending on the account, it uses the account email or addresses on your [My Card](/docs/busycal/70615-meetings-and-invitations.md#me-card) in Contacts. If it can't identify you, the invitation counts as busy even if you declined it. Apple Calendar accounts An [Apple Calendar account](/docs/busycal/140077-using-busycal-with-apple-calendar.md) shows the calendars of the Calendar app on your Mac in BusyCal, read-only. It's different from an iCloud or other CalDAV account that you add to BusyCal directly. For an Apple Calendar account, BusyCal also uses the attendee that the Calendar app marks as you. So your address doesn't need to be on your My Card. ## Keeping Your Busy Times Up to Date[​](#busy-times "Direct link to Keeping Your Busy Times Up to Date") Each device shares busy times for your selected calendars when BusyCal opens, shortly after calendar changes, and at least every 6 hours while it can run. Keep BusyCal running on a Mac for regular updates. On iPhone and iPad, updates run while the app is open or when iOS allows background refresh. Bookings stores each calendar's busy times separately, along with when they were updated. Your pages check all of them. If two devices share the same calendar, the last update received replaces the earlier one. Stored busy times remain until BusyCal replaces them, you remove them, or you delete your account. Signing out doesn't remove them. To stop checking a calendar, deselect it in **Check for Free Times** or use **Remove Busy Times** in the dashboard (see [Busy Times for Each Calendar](#calendar-busy-times)). To send an update now, click **Sync Free Times Now** under **Calendars to check** in **BusyCal > Settings > Bookings**. The button shows **Syncing Free Times…** until it finishes. Out-of-date busy times can miss recent changes to your calendar. Bookings checks both the last update from a device and the age of each calendar's busy times. It uses whichever is oldest to decide whether to require approval or stop offering times: * **Older than your chosen limit (1 day by default):** All new bookings need your approval, even on pages set to confirm automatically. Visitors and your dashboard's **Overview** show that confirmation is required. * **Older than 7 days:** Your booking pages stop offering times, and **Overview** says "Booking pages can't offer times right now". Booking pages offer times again a few minutes after BusyCal shares newer busy times. You can set the approval limit to 12 hours, 1 day, 2 days, 3 days or 5 days. See [Choosing When New Bookings Need Your Approval](#approval-setting). [What Old Busy Times Look Like](#old-busy-times) shows what you and your visitors see in each case. Pages also stop offering times if there are no busy times to check, such as after you remove the last calendar's busy times. **Overview** explains the problem. Click **Sync Free Times Now** in **BusyCal > Settings > Bookings** to share them again. Check **Settings > Access** in the dashboard. **Busy times > Last shared** shows the latest device update, or **Never**. Under **Busy calendars**, each calendar has its own age, such as **Updated 5 hr ago**. A recent device update doesn't mean every calendar is current: one account may still have a sync problem. To fix old busy times, follow the notice on **Overview** or in **Settings > Access**: * **No recent device update:** Open BusyCal on a device that uses Bookings. On a Mac, leave it running. * **A calendar is out of date:** The notice names it and shows the age of its busy times. Turn on or fix its account in **BusyCal > Settings > Accounts**, then click **Sync Free Times Now** in **BusyCal > Settings > Bookings**. If you no longer want to check that calendar, deselect it in **Check for Free Times** or remove its busy times in **Settings > Access**. ### What Old Busy Times Look Like[​](#old-busy-times "Direct link to What Old Busy Times Look Like") In this example, the busy times of a Work calendar in iCloud were last updated 4 days ago, which is past the default limit of 1 day. **Overview** and **Settings > Access** show **New bookings need your approval for now**, with the calendar, its account and the age of its busy times. Under **Busy calendars**, the calendar is marked **Old busy times**. ![Busy times in Settings > Access, with the notice New bookings need your approval for now, the Work calendar in iCloud marked Old busy times and updated 4 days ago, and the Personal calendar in Google updated less than an hour ago](https://downloads.busymac.com/resources/img/bookings/busy-times-approval-access-2026-10-20.png) **Last shared** is recent and the Personal calendar is current, so only the Work calendar needs attention. Visitors can still choose a time, but the booking page says that you'll confirm it. Each new booking arrives as a request in **Bookings > Requests**, even on a page set to confirm automatically. ![The top of a booking page with the notice Maya Chen will confirm your time. We'll hold it for you and email you when Maya Chen replies.](https://downloads.busymac.com/resources/img/bookings/busy-times-approval-booking-page-2026-10-20.png) When the oldest busy times are more than 7 days old, your booking pages offer no times, and visitors see **Not taking bookings right now**. ![A booking page that says Not taking bookings right now. Please check back later.](https://downloads.busymac.com/resources/img/bookings/busy-times-too-old-booking-page-2026-10-20.png) Once every calendar's busy times are within your limit again, pages set to **Automatic** confirm new bookings right away. Requests that arrived in the meantime still need your answer. ### Busy Times for Each Calendar[​](#calendar-busy-times "Direct link to Busy Times for Each Calendar") Under **Settings > Access > Busy calendars**, each row shows the calendar, its account and its last update. **Old busy times** means it exceeds your chosen approval limit. **Calendar not on your Mac** means none of your devices currently lists that calendar. To remove a calendar's busy times: 1. In your dashboard, choose **Settings > Access**. 2. Under **Busy calendars**, click **Remove…** in the calendar's row. 3. Read what removing does, then click **Remove Busy Times**. Removing busy times stops that calendar from blocking bookings until BusyCal shares it again. People may then book times that conflict with it. If you remove the last calendar's busy times, your pages offer no times until another update arrives. ### Choosing When New Bookings Need Your Approval[​](#approval-setting "Direct link to Choosing When New Bookings Need Your Approval") Choose how old your busy times can be before new bookings need your approval. The limit applies to both individual calendars and the last device update. 1. In your dashboard, choose **Settings > Access**. 2. Under **Busy times**, choose a time in **Ask for approval when busy times are older than**: 12 hours, 1 day, 2 days, 3 days or 5 days. 3. Click **Save**. The time applies to all of your booking pages. It's 1 day unless you change it. ### When a Calendar Account Stops Syncing[​](#account-stops-syncing "Direct link to When a Calendar Account Stops Syncing") If an account stops syncing, Bookings continues to use the last busy times it received for its calendars. Those times still block bookings, but new events may be missing. Their age is measured from the account's last successful sync. Once they exceed your approval limit, new bookings become requests; after 7 days, your pages stop offering times. See [Keeping Your Busy Times Up to Date](#busy-times). This happens while the calendar's account: * Is turned off in **BusyCal > Settings > Accounts**. * Was added to BusyCal on another device, and you haven't started to use it on this Mac. **Accounts** settings lists such an account under **Added on Another Device**. To use it, select it there and click **Use Account**. * Can't sync, for example because of a sign-in or permission problem, or because the device is offline. For an account that is turned off, or that you don't use on this Mac, **BusyCal > Settings > Bookings** shows a notice under **Calendars to check**, such as "BusyCal isn't checking the calendars in “iCloud” right now", with the reason and what to do. Your choices in the **Check for Free Times** sheet stay saved. BusyCal's ability to detect a sync problem depends on the account type: Google, iCloud, Exchange, Microsoft 365 and CalDAV accounts, and calendar subscriptions For these accounts, freshness depends on the last successful sync, even if other accounts continue updating. An account with no selected busy calendars doesn't affect your availability's freshness. A selected calendar subscription uses its last successful refresh in the same way. Unselected subscriptions don't affect freshness. Apple Calendar accounts An [Apple Calendar account](/docs/busycal/140077-using-busycal-with-apple-calendar.md) shows the calendars of the Calendar app on your Mac in BusyCal, read-only. It's different from an iCloud or other CalDAV account that you add to BusyCal directly. BusyCal reads these events from the Calendar app and can't tell whether that app has stopped syncing an account. Their busy times therefore continue to count as current and won't trigger approval for that reason. This also applies to selected subscriptions in the Calendar app. BusyCal needs full access to your calendars to read them. Without it in **System Settings > Privacy & Security > Calendars**, the sync of the Apple Calendar account ends with an error. Bookings keeps the last busy times of its calendars, and they get older from the account's last successful sync. Calendars subscribed over the LAN Calendars that you [subscribe to over the LAN](/docs/busycal/70655-using-busycal-on-a-lan.md#subscribing-to-calendars) count as busy unless you uncheck them. When the Mac that publishes them is offline, new events on it don't reach your Mac. This doesn't make your busy times out of date. So your booking pages can still offer the times of those new events, and bookings at those times can still be confirmed automatically. ## Checking Which Times a Booking Page Offers[​](#show-availability "Direct link to Checking Which Times a Booking Page Offers") To see the times that a booking page offers, and why it doesn't offer others: 1. In your dashboard, click **Booking pages**. 2. On the booking page's card, click **Show Availability**. 3. If the booking page offers more than one duration, choose the duration to check. 4. Choose a day in the month. Dots mark the days that offer times. The timeline uses the page's time zone. Point to a segment to see its time range and the reason it's offered or unavailable. Choose **All Times** for the whole day or **Not Offered** for unavailable times only. This view doesn't change your settings. ![Show Availability for the Project planning page on Thursday 22 October, with a timeline of offered times, busy times, times near an event and times outside the page's hours](https://downloads.busymac.com/resources/img/bookings/show-availability-2026-10-20.png) | Reason | What it means | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **Offered** | People can book this time. | | **Outside the dates people can book** | The time is outside the booking page's **Date range**. | | **Outside your hours** | The time is outside the booking page's **Weekly hours**. | | **Not in your hours for this date** | The hours of a specific date leave the time out. | | **You're busy** | An event in your busy calendars, or a booking or request on any of your booking pages, overlaps the time. | | **Too close to another event** | The time falls within the buffer time around an event or another booking. | | **Within your minimum notice** | The time starts sooner than the booking page's **Minimum notice** allows. | | **Daily booking limit reached**, **Weekly booking limit reached**, **Monthly booking limit reached** | The booking page's **Maximum bookings** for that period is full. | | **Turned off**, or **Booking page is turned off or paused** | The booking page is turned off, or its bookings are paused. | | **Calendar account turned off** | The account of the booking page's calendar is turned off in BusyCal. See [When the Calendar's Account Is Turned Off](/docs/bookings/booking-pages.md#account-off). | | **Can't offer a location** | The booking page can't offer any of its locations. See [When a Service Is No Longer Available](/docs/bookings/locations-and-video-calls.md#service-unavailable). | | **Can't check your availability** | Bookings doesn't have up-to-date busy times for this time. See [Keeping Your Busy Times Up to Date](#busy-times). | If the page can't accept bookings, a notice above the month explains why and links to the next step: * **No device update for 7 days:** The notice shows the last update and **See Your Devices**. * **Old or missing calendar busy times:** It lists affected calendars where applicable and links to **Access**. A similar notice appears when times are offered but require your approval. * **Calendar account turned off:** Turn the account on, or click **Edit** to choose another calendar in **Add bookings to**. * **No profile name, no selected destination calendar or expired access:** The timeline repeats the notice's reason for each time. --- # Booking Pages Create a booking page for each type of meeting you offer, such as a 30-minute introductory call. Each page has its own link and settings. To get started, click **Open Dashboard** in **BusyCal > Settings > Bookings**, then choose **Booking pages**. ## The Booking Pages List[​](#pages "Direct link to The Booking Pages List") **Booking pages** lists your pages in profile order. To rearrange them, open a card's three-dot **More actions** menu and choose **Move Up** or **Move Down**. Each card shows the page's link, durations, locations, approval setting and destination calendar. Warnings appear here too, such as missing weekly hours. Click **Edit** to go to the setting that needs attention. If a page is on but its calendar account is turned off, that warning appears first. See [When the Calendar's Account Is Turned Off](#account-off). Below the title, **On your profile**, **Link only** or **Turned off** shows the page's visibility. A page set to **On your profile** may be hidden for another reason. In that case, you'll see **Not on your profile** followed by **Paused**, **No calendar**, **Calendar account turned off**, **Can't offer a location** or **Profile incomplete**. Other paused pages show **Paused** alongside their visibility. ![The Booking pages list with cards for a page on the profile, a link-only page, a paused page marked Not on your profile and a turned-off page, each with Edit, Preview and Show Availability](https://downloads.busymac.com/resources/img/bookings/booking-pages-list-2026-10-20.png) Each card has these controls: * **Edit**: Opens the booking page editor. * **Preview**: Try the page in a new tab without making a booking, even if it's paused or turned off. Preview links expire quickly; share the page's normal link instead. * **Show Availability**: Check available times and see why others aren't offered. See [Checking Which Times a Booking Page Offers](/docs/bookings/availability-and-busy-calendars.md#show-availability). * The button with three dots (**More actions**): Opens a menu with the actions described in [Managing Your Booking Pages](#managing-pages). Click a booking page's title to see a summary of all its settings. The summary has **Preview**, **Show Availability** and **Edit**. For a booking page that is off, it also has **Turn On…**. ## Creating and Editing a Booking Page[​](#new-page "Direct link to Creating and Editing a Booking Page") 1. In **Booking pages**, click **New Booking Page**. 2. Fill in the settings. The editor has six sections: **Basics**, **Availability**, **Limits and buffers**, **Questions**, **Location** and **Approval**. To go to a section, click it in the list next to the form. 3. Click **Create Booking Page** at the bottom of the window. ![The New booking page editor on Basics, with the list of sections beside the form and Create Booking Page at the bottom](https://downloads.busymac.com/resources/img/bookings/page-editor-basics-2026-10-20.png) A new booking page starts with these settings: * Turned off. * One duration of 30 minutes. * Weekly hours from Monday to Friday, 9:00 AM to 5:00 PM. * 30 minutes of minimum notice. * A date range of 30 days into the future. * Automatic approval. * The first calendar in the **Add bookings to** menu whose account is turned on in BusyCal. * The time zone of the device that you used most recently. * The language of your dashboard. To edit an existing page, click **Edit** on its card or summary. Make your changes, then click **Save** or press `⌘-S`. The bar at the bottom indicates unsaved changes, and a dot marks each edited section. If a setting needs correction, the editor lists it at the top of the form. Click the message to go to that setting. If the page changes in another browser while you're editing, the editor warns you. Click **Load Latest Version** to use the saved version, or **Save** to replace it with your changes. ## Basics[​](#basics "Direct link to Basics") * **Title**: The meeting's name, shown at the top of the booking page. * **Link**: The last part of the page's address, after your profile link. For a new page, it follows the title until you enter your own text. Use lowercase letters, numbers and hyphens, starting with a letter. Changing a published page's link stops the old link from working. * **Description**: An introduction to the meeting. Use Markdown for formatting; **Formatting help** explains bold, italic and strikethrough text, links, lists and headings. Long descriptions initially show the first paragraph, with an option to read more. ### Who Can Book[​](#who-can-book "Direct link to Who Can Book") * **Visibility**: Choose **Turned off**, **Link only** or **On your profile**. A turned-off booking page tells people who open its link that it's turned off. Anyone with its link can book a **Link only** booking page. An **On your profile** booking page is also listed on your public profile page, so anyone with your profile link can find it and book. * **Pause bookings**: Temporarily stop accepting bookings without changing the page's visibility. Visitors see that bookings are paused, with no times offered. To turn on a page, add a name and username to your profile and choose a destination calendar. If something is missing, the editor explains it beside **Visibility**. You can choose **Create Turned Off** or **Turn Off and Save**, then turn the page on when it's ready. ### Calendar[​](#calendar "Direct link to Calendar") * **Add bookings to**: The calendar where BusyCal saves this page's meetings. Changing it affects only new bookings; existing bookings keep their original calendar. Calendars are grouped by account and marked with their BusyCal color. Some browsers show the color only for the selected calendar. BusyCal shares up to 256 calendars; the dashboard reports any beyond that limit. If the menu is empty, open BusyCal on a device using Bookings. Calendars in disabled accounts remain listed as **Calendar account turned off**. A page using one of them can't take new bookings until the account is turned on. See [Where Bookings Go](/docs/bookings.md#where-bookings-go). * **Event title**: The title of the event in your calendar and in the invitation that people get. Use `{page}` for the booking page's title and `{invitee}` for the person's name, for example `{page} with {invitee}`. A new booking page uses `{page}`. You can also leave booking details out of the calendar event. With this option on, the event has no notes containing the invitee's phone number, answers or message. Its title, location and attendees are unchanged. See [The Event in Your Calendar](/docs/bookings/bookings-and-requests.md#calendar-event). #### When the Calendar's Account Is Turned Off[​](#account-off "Direct link to When the Calendar's Account Is Turned Off") Turning off the destination calendar's account in **BusyCal > Settings > Accounts** stops the page from accepting new bookings and hides it from your profile. Visitors see that you're not taking bookings right now. The page keeps its calendar selection and can accept bookings again when you turn the account back on. To fix it, do one of these: * Turn the account on in **BusyCal > Settings > Accounts**. * Edit the booking page and choose another calendar in **Add bookings to**, then click **Save**. The dashboard explains both fixes on the page's card and summary, under **Overview > Status**, and in **Book Someone In…** and **Show Availability**. Choosing **Turn On…** also warns that the page will stay closed while the account is off. Existing bookings waiting for that calendar remain pending, with an explanation on their **Calendar** line. They can't be rescheduled until you turn the account back on. See [A Booking Doesn't Appear in BusyCal](/docs/bookings/troubleshooting.md#not-in-calendar). #### When the Calendar Is Missing[​](#calendar-missing "Direct link to When the Calendar Is Missing") If **Add bookings to** shows **Not on your Mac**, check the calendar and its account in BusyCal on the devices you use for Bookings. The label can reflect a device that doesn't have the account; another device may still be able to save bookings there. Removing a calendar or its account doesn't automatically stop new bookings. If none of your devices can save to the intended calendar, choose **Pause Bookings** from the page's **More actions** menu. Edit the page, choose an available calendar in **Add bookings to**, and click **Save**. Choose **Resume Bookings** when you're ready. Changing the destination affects new bookings only. Existing bookings keep their original calendar; see [A Booking Doesn't Appear in BusyCal](/docs/bookings/troubleshooting.md#not-in-calendar). ### Time Zone[​](#time-zone "Direct link to Time Zone") * **Time zone**: The time zone of the booking page's hours. To find a time zone quickly, type a city or region in the search box. * **Show times only in this time zone**: People see the times in this time zone instead of their own. Use this for meetings in person. Without it, people see the times in their own time zone, and they can change it on the booking page. ### Language and Replies[​](#language-and-replies "Direct link to Language and Replies") * **Booking page language**: People see the booking page in their browser's language if it's one of the 12 languages that Bookings offers. If not, they see it in this language. Text that you write, such as the title, description and questions, stays as you wrote it. * **Replies go to**: Where replies go when someone answers an email about a booking on this booking page. Choose your account email or another address that you verified. Or click **Add Address…** to add one. See [Replies Go To](/docs/bookings/emails-and-replies.md#replies-go-to). ### Website Embedding[​](#website-embedding "Direct link to Website Embedding") Enter additional websites that may show this booking page within their own pages, one HTTPS address per line. Websites allowed in **Settings > Profile** can already show all your booking pages. See [Embedding a Booking Page on Your Website](#embedding), including the steps for WordPress. ## Availability[​](#availability "Direct link to Availability") * **Duration**: Choose 15 min, 30 min, 45 min or 1 hr, or enter minutes in **Other** and press Return. You can offer up to 8 durations, each from 5 to 720 minutes. If you offer several, people choose one before booking. **Default** sets the initial choice. * **Start time increments**: How far apart the start times are. **Same as the duration** offers back-to-back times. The editor shows three example start times. * **Weekly hours**: The hours when you take bookings on each day of the week. To add hours to a day, click **+** on that day. Remove the hours that you don't need. A day without hours says **Unavailable**. * **Specific dates**: Override your weekly hours for a particular date. Click **Add Date**, choose the date, then click **Add Hours** or leave it **Closed all day**. [Availability and Busy Calendars](/docs/bookings/availability-and-busy-calendars.md) describes how these settings work together. ## Limits and Buffers[​](#limits "Direct link to Limits and Buffers") * **Buffer time**: Free time kept **Before each meeting** and **After each meeting**. * **Minimum notice**: How soon a meeting can start after someone books it. The editor shows what your choice means, for example that people can book only times that start at least 1 day from now. * **Date range**: How far ahead people can book. Choose a number of **Days into the future**, or **Between two dates**, from a **Start date** to an **End date**. * **Maximum bookings**: The most bookings that this booking page takes **Per day**, **Per week** and **Per month**. Bookings that are already in your calendar count too. For no limit, leave a box empty. Each of the buffer and notice menus has **Other**, where you can type any number of minutes. See [Availability and Busy Calendars](/docs/bookings/availability-and-busy-calendars.md#limits). ## Questions[​](#questions "Direct link to Questions") **Contact details**: People always give their name and email address. * **Phone number**: Choose **Not asked**, **Optional** or **Required**. * **Guests**: Let invitees add other people by email. Choose **Not allowed**, **Unlimited** (up to 10 guests) or **Limited**, then enter **Maximum guests**. Guests receive separate meeting emails without the main invitee's booking links, phone number or answers. To ask your own questions: 1. Click **Add Question** and type the question. 2. Choose its **Answer type**: **Short answer**, **Paragraph**, **Checkbox** or **Dropdown menu**. 3. If people must answer the question, select **Required**. 4. For a dropdown menu, type its **Choices**, each on its own line. ![The Questions section of the booking page editor, with phone number set to Optional, guests not allowed, a short-answer question and a required paragraph question, and Add Question](https://downloads.busymac.com/resources/img/bookings/page-editor-questions-2026-10-20.png) To move a question up or down, use its arrow buttons. To remove it, use its trash button. A booking page can ask up to 20 questions. tip To ask for consent, for example to a cancellation policy, add a checkbox question and make it required. People can't book until they select it. The booking form also has an optional **Notes** field for anything else the invitee wants to tell you. Their response appears as **Message** in the booking details. ## Location[​](#location "Direct link to Location") The **Location** section sets where the meeting happens: a video call, a web link, a phone call or an address. If you add more than one location, people choose one when they book. See [Locations and Video Calls](/docs/bookings/locations-and-video-calls.md). ## Approval[​](#approval "Direct link to Approval") * **Automatic**: People get a confirmation right away, and BusyCal adds the booking to your calendar. * **You approve each request**: New requests wait in **Bookings** under **Requests**. People get a confirmation after you approve. How BusyCal Gets Your Bookings BusyCal receives booking updates through push notifications and checks regularly as well. If it isn't running, it checks when you next open it. See [A Booking Doesn't Appear in BusyCal](/docs/bookings/troubleshooting.md#not-in-calendar) if a meeting is missing, or [contact us](/docs.md#support-information) for help. When your busy times are older than the time set in **Busy times** in your dashboard's **Settings > Access**, each new booking waits for your approval, even with **Automatic**. See [Bookings and Requests](/docs/bookings/bookings-and-requests.md#approval). ## Embedding a Booking Page on Your Website[​](#embedding "Direct link to Embedding a Booking Page on Your Website") Let visitors choose a time and book directly on your website. Allow your website in the booking page's settings, then copy the embed code into your site's HTML editor. To offer a choice of meeting types, [embed your profile instead](/docs/bookings/profile-and-appearance.md#embedding). Its website permission covers all your booking pages, so you don't need to enter the website again for each meeting type. If your website is already allowed in **Settings > Profile**, open the booking page's summary and copy **Embed code**. To allow a website just for this booking page: 1. In **Booking pages**, click **Edit** on the page you want to embed and open **Basics**. 2. Under **Website embedding**, enter your website's HTTPS address, such as `https://example.com`. Use one address per line, up to 10 addresses. Include `https://www.example.com` on another line if your website also uses that address. 3. Enter only the website address, without a page path. For example, use `https://example.com`, even if the booking page will appear at `https://example.com/book-a-call`. Wildcards such as `https://*.example.com` aren't accepted. 4. Click **Save**. The booking page must be able to take bookings: choose **Link only** or **On your profile**, resume bookings if paused, and resolve any warnings shown on its card. 5. Return to **Booking pages** and click the page's title to open its summary. 6. Under **Basics > Website embedding**, check the websites shown, then select and copy all the text in **Embed code**. This code appears while the page can take bookings. This page's website list adds to any websites allowed in **Settings > Profile**. To stop a website from embedding this page, remove its address from both places if it appears in both, then save each change. Leaving both lists empty prevents embedding. The page's normal booking link still works. Your host dashboard can't be embedded. ### Adding the Booking Page to WordPress[​](#wordpress "Direct link to Adding the Booking Page to WordPress") Your WordPress site must allow iframe code. On WordPress.com, this requires a paid plan with hosting features activated. See [WordPress.com's Custom HTML guide](https://wordpress.com/support/wordpress-editor/blocks/custom-html-block/). On a self-hosted WordPress site, your account must have permission to save this code; ask your site administrator if WordPress removes it. After copying **Embed code** for your booking page or profile: 1. Open the page or post in the WordPress editor. 2. Click the **+** block inserter, search for "HTML", and add a **Custom HTML** block. 3. Paste the complete embed code into the block's HTML editor. If the block shows **Edit HTML**, click it first, then click **Update** when you've pasted the code. 4. Save or publish the WordPress page, then open its public address to check the booking page. If the booking page doesn't appear, check that the public website address matches an entry under **Website embedding**, including `https://` and any `www`. Check the published page as well as the editor preview, which may use a different address. If WordPress removes the iframe code when you save, check your plan and editing permissions. You can also add a button or text link to the booking page's normal address. ## Managing Your Booking Pages[​](#managing-pages "Direct link to Managing Your Booking Pages") The **More actions** menu on each booking page's card in **Booking pages** offers the actions that apply to that booking page: * **Duplicate**: Creates a turned-off copy after the original, with `-copy` added to its link. Other settings, including **Add bookings to**, are copied. The editor opens so you can make changes, choose who can book and save. * **Pause Bookings** and **Resume Bookings**: Stops or starts new bookings again, without changing who can book. People see that bookings are paused. * **Turn Off**: Turns the booking page off. Its requests and bookings stay, and so does its pause setting. * **Turn On…**: Asks where people can find the booking page. Choose **Link only** or **On your profile**, then click **Turn On**. If something is missing, such as your name, the screen lists what the booking page still needs instead. If the account of the booking page's calendar is turned off in BusyCal, the screen warns you: the booking page stays closed until you turn the account on. * **Move Up** and **Move Down**: Changes the order of your booking pages. Your profile page lists them in the same order. * **Delete…**: Deletes the booking page. ### Deleting a Booking Page[​](#delete-page "Direct link to Deleting a Booking Page") 1. In the booking page's **More actions** menu, choose **Delete…**. 2. Review the counts under **Requests waiting for your answer** and **Bookings waiting for BusyCal**, if shown. These are the items still managed by Bookings. Choose whether to end them too, as described below. 3. Click **Delete Booking Page**. To keep the booking page, click **Keep Booking Page**. Deleting a page stops new bookings and disables its link. This can't be undone. Existing bookings and requests are kept by default, and your calendar is unchanged. To cancel pending bookings and decline requests too, select the **Also** checkbox, such as **Also cancel these bookings (2) and decline these requests (1)**. Invitees receive the usual emails, and BusyCal removes the cancelled bookings from your calendar. Meetings that have left Bookings aren't included in these counts. Deleting the page doesn't change them; they stay in your calendar. If the page changes while the confirmation is open, deletion stops so you can review the updated details. With the **Also** checkbox selected, a change to its bookings also stops deletion. Check the new counts before confirming again. For a temporary break, turn the page off or pause bookings. You can turn it on or resume bookings later. ## Languages and Link Options[​](#languages "Direct link to Languages and Link Options") Booking pages and the emails that people get come in 12 languages: Dutch, English, French, German, Italian, Japanese, Korean, Portuguese (Brazil), Portuguese (Portugal), Russian, Simplified Chinese and Spanish. A booking page appears in the visitor's browser language if it's one of these. If not, it appears in the language set in **Booking page language**. In the booking page's **Settings** menu, visitors can choose another language and the day their week starts on. They can also switch between 12-hour and 24-hour times. Their emails show times the same way. Add these options to a booking link to preselect a language or duration, or fill in contact details: | Add to the link | What it does | | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | | `?lang=de` | Opens the booking page in a language: `nl`, `en`, `fr`, `de`, `it`, `ja`, `ko`, `pt`, `pt-PT`, `ru`, `zh-Hans` or `es`. | | `?duration=60` | Chooses one of the booking page's durations, in minutes. | | `?name=Ann&email=ann@example.com` | Fills in the person's name and email address on the booking form. `phone` and `message` work the same way. | To use more than one option, join them with `&`, for example `busybook.me/jane/intro?lang=de&duration=60`. --- # Bookings and Requests A booking is a confirmed meeting. A request needs your approval before it becomes a booking. Use the dashboard to answer requests and manage bookings while they wait for BusyCal. Once BusyCal finishes adding a booking to your calendar, including any video call link, it leaves the dashboard. From then on, edit or cancel the meeting in your calendar. ## When Someone Books[​](#when-someone-books "Direct link to When Someone Books") ![The booking form for an Intro call, with the chosen time beside the Name, Email, a question, Notes and the Book Meeting button](https://downloads.busymac.com/resources/img/bookings/invitee-details-form-2026-10-20.png) The person booking, called the invitee, chooses a time and fills in the form. They click **Book Meeting**, or **Send Request** if the page requires your approval. Then: * The invitee sees a confirmation that the booking was made or the request was sent, and receives an email. See [What Invitees Receive](/docs/bookings/emails-and-replies.md#invitee-emails). * You get an email about the booking. See [What You Receive](/docs/bookings/emails-and-replies.md#host-emails). * On your Mac, a notification appears in Notification Center. Click it to open the booking (see [Opening and Removing Items](#inbox-items)). To disable these notifications, turn off **Show bookings in Notification Center** in **BusyCal > Settings > Alarms**. * BusyCal's Inbox on your Mac, iPhone and iPad lists the new booking or request. See [Bookings in BusyCal's Inbox](#inbox). * When the booking is confirmed, BusyCal adds it to your calendar as a meeting with the invitee. See [The Event in Your Calendar](#calendar-event). If BusyCal isn't running, it learns about new bookings the next time it opens. When the booking leaves the dashboard, manage it in your calendar. See [Changing a Meeting in Your Calendar](#calendar-changes). ## Bookings in BusyCal's Inbox[​](#inbox "Direct link to Bookings in BusyCal's Inbox") BusyCal's Inbox shows booking and request updates on Mac, iPhone and iPad. The Bookings icon distinguishes them from other meeting invitations. On a Mac, the Inbox button in BusyCal's toolbar shows how many items are waiting. If the toolbar shows no Inbox button, nothing is waiting. For more about the Inbox, see [Receiving Meeting Invitations](/docs/busycal/70615-meetings-and-invitations.md#receiving-meeting-invitations). On iPhone and iPad, tap the Inbox button next to the gear icon. See [Receiving Meeting Invitations on iPhone and iPad](/docs/busycalios/70673-meetings-and-invitations.md#ios-receiving-meeting-invitations). ### What the Inbox Shows[​](#inbox-changes "Direct link to What the Inbox Shows") BusyCal adds an item to its Inbox when: * Someone makes a booking on one of your booking pages. * Someone sends a request. * A request is approved, declined, withdrawn or expires. * A booking or request is moved to a new time or cancelled. * The invitee declines the meeting in their calendar. * BusyCal can't update your calendar for a booking, for example because the calendar's account didn't accept it. On a Mac, BusyCal shows a notification only for new bookings and new requests. The Inbox lists them even while **Show bookings in Notification Center** is off. If this device can't add a booking to your calendar, its Inbox item explains why, for example "Not added to your calendar. The booking page's calendar is read only". The message clears once the booking is added. See [A Booking Doesn't Appear in BusyCal](/docs/bookings/troubleshooting.md#not-in-calendar). ### Opening and Removing Items[​](#inbox-items "Direct link to Opening and Removing Items") On a Mac: * **Select an item:** Click it to show the event if it's already in your calendar. A single click doesn't open your browser. * **Open a booking:** Double-click it, or select it and press Return. BusyCal shows the calendar event if it exists; otherwise, it opens the dashboard in your browser. Open requests this way to approve or decline them. * **Dismiss an item:** Click **OK**. This clears the notice without changing the booking or answering the request. While a request waits for your answer, its item says "Waiting for your approval. Double-click to open the request". Reading or opening an item doesn't dismiss it. It stays for up to 30 days unless you click **OK** or remove the invitee's details from the booking. ## Automatic and Manual Approval[​](#approval "Direct link to Automatic and Manual Approval") Each booking page's **Approval** setting decides whether a booking is confirmed right away: * **Automatic**: Each booking is confirmed at once. The invitee gets a confirmation and a calendar invitation. BusyCal adds the booking to your calendar. * **You approve each request**: Each booking is a request until you answer it. The booking page tells people that you confirm each booking. Your profile page marks it **Needs confirmation**. Even with automatic approval, new bookings become requests if your busy times exceed the limit in **Settings > Access > Busy times** (1 day by default). See [Choosing When New Bookings Need Your Approval](/docs/bookings/availability-and-busy-calendars.md#approval-setting). A booking that you make yourself with **Book Someone In…** is always confirmed at once. See [Booking Someone In](#book-someone-in). A request reserves its time while you decide. It expires after 48 hours or at the meeting's start, whichever comes first; **Answer by** shows the deadline. Until you approve it, there's no event in your calendar and no calendar invitation for the invitee. ## Answering Requests[​](#answering "Direct link to Answering Requests") You answer a request in your dashboard or from the email about it. ### In Your Dashboard[​](#answer-in-dashboard "Direct link to In Your Dashboard") Find pending requests under **Overview > Requests** or **Bookings > Requests**. The count beside **Bookings** shows how many need your answer. * Click **Approve** in the list or inside the request to confirm it. * To decline a request, click **Decline…**. You can add a reason in **Reason (optional)**. Then click **Decline Request**. To leave the request waiting, click **Keep Request**. ![A request in the dashboard, awaiting approval, with its answer-by time, Approve, Decline… and Reschedule…, and the invitee's details and answers](https://downloads.busymac.com/resources/img/bookings/request-details-2026-10-20.png) ### From the Email[​](#answer-from-email "Direct link to From the Email") The email about a request has two links: **Approve Request** and **Decline Request**. Each link opens your browser and shows the request and the time when it expires. You don't need to sign in. * To approve, click **Approve**. * To decline, add a reason if you like, then click **Decline**. Opening the email link doesn't answer the request. Click **Approve** or **Decline** on the page to confirm your choice. ### From BusyCal[​](#answer-in-busycal "Direct link to From BusyCal") On a Mac, double-click the request in BusyCal's Inbox, select it and press Return, or click its notification. This opens the request in your dashboard, where you can approve or decline it. ### What Happens Next[​](#after-answer "Direct link to What Happens Next") * **Approved**: The invitee gets a confirmation and a calendar invitation. BusyCal adds the booking to your calendar. * **Declined**: The invitee gets an email saying that you can't meet at that time, with any reason you added. People can book that time again. * **Expired**: If you don't answer in time, people can book that time again. The invitee gets an email saying that you didn't answer in time. Bookings deletes a declined or expired request once its last email is sent. The invitee can also withdraw a request before you answer. You get an email when they do, and the request shows in **Withdrawals** in your dashboard until you click **Dismiss Notice**. ## The Lists in Your Dashboard[​](#lists "Direct link to The Lists in Your Dashboard") The dashboard's **Bookings** page has four lists. Click a name at the top to switch between them: * **Requests**: Requests waiting for your answer, each with **Approve** and **Decline…**. * **Waiting for BusyCal**: Bookings waiting for a calendar update or video call link, and cancelled bookings waiting to be removed from the calendar. * **Problems**: Bookings that BusyCal couldn't add to your calendar or update there, and requests whose email to the invitee couldn't be sent. A booking's **Calendar** line, or a request's **Email** line, says why. See [A Booking Doesn't Appear in BusyCal](/docs/bookings/troubleshooting.md#not-in-calendar). * **Withdrawals**: Requests withdrawn by invitees. Click **Dismiss Notice** to clear one from the list. A booking leaves these lists when BusyCal finishes saving the meeting and any video call link. Manage it in your calendar after that. Withdrawn requests stay in **Withdrawals** until you dismiss them. **Overview** shows up to five items from each list, with **See All** to open the rest. **Requests**, **Problems** and **Withdrawals** appear only when they have items. Empty lists show **Nothing here right now**. **Waiting for BusyCal** also explains that bookings leave the list after they're added to your calendar. Times use your most recently used device's time zone, which is shown on screen. Click **Show More** at the end of a list to load more items. For bookings you can still change, the three-dot **More actions** menu offers the available actions, such as **Reschedule…**, **Cancel Booking…** and **Remove Invitee Details…**. Click a booking to see its details: * The meeting's time and status, including whether it has ended. * The invitee's email address and phone number, their answers, their guests and their message. * The language of their emails. * The location and any call link. * **Calendar**: Progress or problems adding the meeting, such as **Waiting for BusyCal to update your calendar**. If the booking page's time zone is different from yours, the booking also shows its start in the booking page's time zone. ![A confirmed booking in the dashboard, with its time, a Calendar line saying Waiting for BusyCal to update your calendar, the location, Reschedule… and Cancel Booking…, and the invitee's details, answers, guest, message and Add Call Link…](https://downloads.busymac.com/resources/img/bookings/booking-details-2026-10-20.png) ## Rescheduling a Booking[​](#reschedule "Direct link to Rescheduling a Booking") You can reschedule requests and bookings that are still in the dashboard. Once a booking leaves the dashboard, move the meeting in your calendar instead. See [Changing a Meeting in Your Calendar](#calendar-changes). 1. Open the request or booking in your dashboard and click **Reschedule…**. 2. Under **Choose a new time**, choose a day, then a time. The booking keeps its duration. Its current time is marked **Current**. Times are in the booking page's time zone. 3. Check the current time and the new time, then click **Reschedule**. To go back, click **Choose Another Time**. For a booking, the invitee gets an updated invitation for the new time, and BusyCal moves the event in your calendar. For a request, the invitee gets an email with the new time, and the request still waits for your answer. The new time must be free. If the current meeting is already in a busy calendar, its existing time also blocks availability, so a partly overlapping time won't be offered. You can reschedule until the meeting starts, even while its booking page is paused or turned off. You can reschedule only when all of these are true: * The booking page still exists and has its calendar. * The account of the booking's calendar is turned on in BusyCal. See [When the Calendar's Account Is Turned Off](/docs/bookings/booking-pages.md#account-off). * Your access to Bookings is current. * Your busy times are less than 7 days old, so your booking pages can offer times. See [Keeping Your Busy Times Up to Date](/docs/bookings/availability-and-busy-calendars.md#busy-times). ## Cancelling a Booking[​](#cancel "Direct link to Cancelling a Booking") Cancel a booking in the dashboard while it's still listed there. To end a request, decline it. Once a booking leaves the dashboard, delete the meeting in your calendar to cancel it. See [Changing a Meeting in Your Calendar](#calendar-changes). 1. Open the booking in your dashboard and click **Cancel Booking…**. 2. If you like, add a reason in **Reason (optional)**. 3. Click **Cancel Booking**. To leave the booking as it is, click **Keep Booking**. The invitee gets an email about the cancellation, with any reason you added, and the booking is removed from your calendar. You can cancel until the meeting starts. Invitees can't reschedule or cancel confirmed bookings through Bookings. They can respond to the calendar invitation or contact you. They can withdraw a pending request using **View or Withdraw Request** in their email. You'll receive an email, and the request appears in **Withdrawals**. ## Booking Someone In[​](#book-someone-in "Direct link to Booking Someone In") You can make a booking for someone, for example after you arrange a meeting by phone. 1. In your dashboard, click **Bookings**, then click **Book Someone In…**. 2. Choose the **Booking page** and the **Day**, then click **Show Times**. 3. If the booking page offers several durations, choose a duration. Then choose a time. 4. Under **Who you're meeting**, enter the person's name and email address, and anything else that the booking page asks. 5. Click **Create Booking**. Checkbox questions, such as consent questions, are omitted because only the invitee can answer them. No answer is recorded for those questions. Bookings you make this way are confirmed immediately, even if the page normally requires approval or your busy times exceed the approval limit. The invitee receives the usual confirmation, and BusyCal adds the meeting to your calendar. If the page can't take bookings, a message explains why instead of showing times. For example, its calendar account may be turned off. See [When the Calendar's Account Is Turned Off](/docs/bookings/booking-pages.md#account-off). ## The Event in Your Calendar[​](#calendar-event "Direct link to The Event in Your Calendar") BusyCal saves confirmed bookings as meetings in the calendar selected in **Add bookings to** when the booking was made: * The title follows the booking page's **Event title**. * You're the organizer. The invitee and their guests are the attendees. * The location is the one that the invitee chose: the call link after BusyCal creates the call, or the web link, phone number or address. * The notes contain the invitee's name, email address, phone number, guests, answers and message. * The event gets your default alarms, like any new event. A booking page can leave the booking's details out of the event. The event then has no notes, so the invitee's phone number, answers and message don't go into your calendar. The event keeps its title, location and attendees. See [Calendar](/docs/bookings/booking-pages.md#calendar). Once BusyCal finishes adding the meeting and any call link, you can edit it like any other event. Bookings no longer manages it. Some calendar accounts send invitations themselves, such as iCloud, Google, Microsoft 365 and Exchange. These accounts send the invitee and their guests an invitation from you, as for other meetings that you organize. Bookings emails them as well, so they can get two invitations. See [The Invitation from Your Calendar](/docs/bookings/emails-and-replies.md#calendar-invitation). If the calendar's account has no email address that BusyCal can use for you as the organizer, the event has no attendees. The invitation then comes only from Bookings. ### Changing a Meeting in Your Calendar[​](#calendar-changes "Direct link to Changing a Meeting in Your Calendar") When a booking leaves the dashboard, use your calendar to make further changes: * **To move the meeting**, change its time. * **To cancel the meeting**, delete it. * **To change its location, notes or attendees**, edit the event. Your calendar account sends the invitee and their guests an update or a cancellation, the same way as for any meeting that you organize. See [Meetings and Invitations](/docs/busycal/70615-meetings-and-invitations.md). If the meeting has no attendees, because the calendar's account has no email address that BusyCal can use for you as the organizer, your changes don't reach the invitee. Let them know yourself. These changes don't appear in the dashboard or generate Bookings emails. The original booked time remains blocked on your booking pages until it has passed, even if you move or delete the meeting. See [Which Events Count](/docs/bookings/availability-and-busy-calendars.md#which-events). ### When the Invitee Answers[​](#invitee-answer "Direct link to When the Invitee Answers") When the invitee accepts or declines the invitation in their calendar app, their answer shows on the meeting in your calendar, as for any meeting that you organize. When they decline, BusyCal's Inbox also lists it, with the Bookings icon. Their answer doesn't change or remove the meeting. If they decline, decide whether to keep, move or delete the meeting. To change or cancel a confirmed meeting, the invitee uses the calendar invitation, for example to decline it, or contacts you. Bookings gives them no way to change it. Microsoft 365 calendars When you move a meeting on a Microsoft 365 calendar to a new time, Microsoft asks the invitee to accept the new time again. Microsoft does this whenever a meeting's time changes. ### Which Device Adds the Event[​](#which-device "Direct link to Which Device Adds the Event") Each booking keeps the calendar that its booking page used when the booking was made. If you choose another calendar for the booking page later, only new bookings use it. Only one device adds each booking to your calendar: a Mac, iPhone or iPad that uses Bookings, runs BusyCal and has the booking's calendar. The event then reaches your other devices through the calendar's account, like any other event. Until the calendar update and any video call are complete, the booking stays in **Waiting for BusyCal**, or **Problems** if something went wrong. BusyCal keeps trying until a week after the meeting's start. See [A Booking Doesn't Appear in BusyCal](/docs/bookings/troubleshooting.md#not-in-calendar). ### Showing Your Bookings with a Smart Filter[​](#smart-filter "Direct link to Showing Your Bookings with a Smart Filter") Use a smart filter to show only meetings created through Bookings. BusyCal identifies them independently of their title, notes, location and URL, so editing those fields doesn't remove them from the filter. On your Mac: 1. Choose **Filter > New Smart Filter…**. 2. Select **Show events that match the following conditions:**. 3. Set the condition to **event type** is **booking**. 4. Name the smart filter, then click **OK**. See [Smart Filters](/docs/busycal/70612-smart-filters.md). This identification syncs through iCloud, Google, CalDAV, Exchange and Microsoft 365, so the filter works on your other Macs too. Duplicates and [blocking events](/docs/busycal/142884-cross-calendar-blocking-events.md) aren't identified as bookings. Apple Calendar accounts An [Apple Calendar account](/docs/busycal/140077-using-busycal-with-apple-calendar.md) shows the calendars of the Calendar app on your Mac in BusyCal, read-only. It's different from an iCloud or other CalDAV account that you add to BusyCal directly. BusyCal reaches the calendars of an Apple Calendar account through the Calendar app. The mark stays with an event only as far as the Calendar app passes it on. So the smart filter might not show every booking in these calendars. ## Removing an Invitee's Details[​](#remove-details "Direct link to Removing an Invitee's Details") You can remove personal details from a request or booking still in the dashboard, for example at the invitee's request. This removes their name, email, phone number, answers, guests, message, location and call link. The record keeps its time and status, with **Details removed** in place of the invitee's name. 1. Open the booking in your dashboard. 2. Click **Remove Invitee Details…** at the end of its details. You can also choose it in the booking's **More actions** menu in the list. 3. Read the confirmation, then click the button below it. To keep the details, click **Keep Details**. What happens depends on the booking: | The booking | What happens | The button | | --------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ | | An upcoming confirmed booking in **Waiting for BusyCal** or **Problems** | It's cancelled and removed from your calendar, and the invitee gets the usual email. Their details are removed from Bookings right away. | **Cancel and Remove Details** | | A booking whose meeting has ended, for example one whose **Calendar** line says that BusyCal didn't finish updating your calendar | Only their details are removed from Bookings. The booking isn't cancelled, nobody gets an email, and your calendar doesn't change. | **Remove Details** | | A request waiting for your answer | It's declined, and the invitee gets the usual email. Their details are removed from Bookings right away. | **Decline and Remove Details** | | A cancelled booking, or a request that ended | Their details are removed from Bookings. | **Remove Details** | You can't undo this. Bookings deletes the details completely after the last email to the invitee and any update to your calendar. The invitee's link to the booking then says that their details were deleted. If the booking changes while the confirmation is open, removal stops. Review the updated confirmation before proceeding. Once a booking leaves the dashboard, Bookings no longer has its invitee details. To remove them from your calendar, edit or delete the meeting there. You can remove an invitee's details only in your dashboard. To open your dashboard from BusyCal, click **Open Dashboard** in **BusyCal > Settings > Bookings**. --- # Emails and Replies Bookings sends email confirmations and updates to you and your invitees while it manages a booking. Once BusyCal finishes adding the meeting and any call link, later changes are handled through your calendar account. This guide explains which emails to expect and where replies go. ## Who Sends the Emails[​](#sender "Direct link to Who Sends the Emails") All booking emails come from `bookings@busybook.me`: * Emails to invitees show your name as the sender, followed by "via BusyCal", for example "Jane Appleseed via BusyCal". * Emails to you show **BusyCal Bookings** as the sender. The `bookings@busybook.me` mailbox isn't monitored. Email replies are directed to you or the invitee, as described in [Where Replies Go](#replies-go-to). ## What Invitees Receive[​](#invitee-emails "Direct link to What Invitees Receive") Invitee emails include the meeting time, page title, your name, the invitee's name and the location. Added guests receive separate emails with the meeting details and any calendar attachment. They don't receive the main invitee's booking links, phone number or answers. Pending requests don't include a calendar attachment. Confirmed meetings do, except for some Microsoft 365 calendars (see [The Invitation from Your Calendar](#calendar-invitation)). Invitees can open the attachment to add the meeting to their calendar. If your calendar account doesn't send invitations, this is their only invitation. Updates from Bookings include an updated attachment. | What happened | The invitee's email | | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | | They booked on a booking page that confirms automatically, or you approved their request | "Your meeting is confirmed", with the calendar file | | They sent a request | "Request sent to" you, with the time until which their time is held, and no calendar file | | You declined their request | "Your request was declined", with any reason you added | | Their request expired | "Your request has expired" | | They withdrew their request | "Your request is withdrawn" | | You moved the meeting | "Your meeting has a new time", with an updated calendar file | | You cancelled the meeting | "Your meeting is cancelled", with any reason you added, and a calendar file that removes it from their calendar | | BusyCal created the call, or you added a call link | "Your call link is ready", with an updated calendar file | After BusyCal finishes saving the meeting and any call link, further updates come through your calendar account. See [The Invitation from Your Calendar](#calendar-invitation). Emails use the invitee's booking language, time zone and choice of 12-hour or 24-hour times. Rescheduling a pending request sends them the new time but doesn't confirm the request. ### Links in the Invitee's Emails[​](#invitee-links "Direct link to Links in the Invitee's Emails") Confirmation emails include **View Booking**. Neither this page nor the booking confirmation offers reschedule or cancel controls. Invitees can respond to their calendar invitation or contact you to request a change. ![The confirmation page that invitees see after booking and when they click View Booking, with the meeting details, Add to your calendar buttons and a note to use the calendar invitation or contact the organizer to change or cancel](https://downloads.busymac.com/resources/img/bookings/invitee-confirmation-2026-10-20.png) Pending-request emails include **View or Withdraw Request**, which lets the invitee withdraw before you answer. Cancellation, decline and expiry emails offer **Book a New Time** instead. Once a booking leaves the dashboard, **View Booking** explains that it is no longer managed by Bookings. It shows no meeting details and directs the invitee to their calendar invitation or to you. Links to ended requests or past meetings explain that the link no longer works and give the same advice. ### The Invitation from Your Calendar[​](#calendar-invitation "Direct link to The Invitation from Your Calendar") BusyCal adds each confirmed booking to your calendar as a meeting that you organize, with the invitee and their guests as attendees. Your calendar account can then send them its own invitation. See [The Event in Your Calendar](/docs/bookings/bookings-and-requests.md#calendar-event) for the calendars that do. Invitees may therefore receive two invitations: the attachment from Bookings and the invitation from your calendar account. Either can add the meeting to their calendar. After Bookings finishes with the meeting, changes and cancellations you make in your calendar reach invitees through the calendar account's invitation. If the calendar's account has no email address that BusyCal can use for you as the organizer, the meeting in your calendar has no attendees. The calendar file in the Bookings email is then the invitee's only invitation, and changes that you make in your calendar don't reach them. Let them know yourself. Two kinds of calendar can work differently: When the invitee uses Google Calendar By default, Google Calendar's **Add invitations to my calendar** setting is **Only if the sender is known**. Google then adds invitations on its own only from people in the invitee's contacts, or from people they've been in touch with before. For other senders, your calendar's invitation waits in the invitee's email until they click **I know the sender** or answer it. They can also add the meeting from the calendar file in the Bookings email. When your calendar is a Microsoft 365 calendar This applies to Office 365 accounts that BusyCal syncs with Microsoft Graph. For these calendars, the calendar account sends the only invitation if BusyCal had already shared the calendar and its organizer email address when the booking was made. In that case: * The Bookings emails for that booking have no calendar file. * The confirmation tells the invitee that the invitation comes from your calendar, in a separate email. * Your calendar sends that invitation after BusyCal adds the meeting. So keep BusyCal running on a device that has that calendar. * Updates and cancellations also come from your calendar. Otherwise, Bookings includes its usual calendar attachment. This choice is fixed when the booking is made; sharing the organizer address later doesn't change existing bookings. ## What You Receive[​](#host-emails "Direct link to What You Receive") Your account email receives notices for new bookings, requests and changes made through Bookings, including your own dashboard changes. The subject identifies the update: * **New booking request** * **Booking confirmed** * **Booking rescheduled** * **Booking cancelled** * **Request withdrawn by the invitee** * **Booking request declined** * **Booking request expired** * **This booking couldn't be completed**: BusyCal didn't finish adding the meeting to your calendar by a week after its start. The email asks you to check your calendar. See [A Booking Doesn't Appear in BusyCal](/docs/bookings/troubleshooting.md#not-in-calendar). Once a booking leaves the dashboard, editing the meeting in your calendar doesn't generate a Bookings email. The email includes the meeting details, the invitee's contact details, answers, guests and message, plus any reason given for a change. If your time zone differs from the page's, **Your time** shows the conversion. Pending-request emails also show the deadline for your answer. The email ends with links: * **Open in BusyCal** appears first for confirmed bookings. It opens the calendar event if it exists, or the dashboard booking if it hasn't been added yet. * **View Booking** opens the dashboard entry while it's available. After it leaves Bookings, the link explains why it's no longer there. * **Approve Request** and **Decline Request** answer a request. See [Answering Requests](/docs/bookings/bookings-and-requests.md#answer-from-email). * **Booking Page** opens the booking page that was booked. Host emails are in English. You don't receive a separate email when a call link is ready; it appears in your calendar event. BusyCal also lists each change to your bookings and requests in its Inbox on your Mac, iPhone and iPad. On your Mac, it shows each new booking and request in Notification Center unless you turn off **Show bookings in Notification Center** in **BusyCal > Settings > Alarms**. See [Bookings in BusyCal's Inbox](/docs/bookings/bookings-and-requests.md#inbox). ## Where Replies Go[​](#replies-go-to "Direct link to Where Replies Go") * **When an invitee replies** to an email about their booking, the reply goes to the address set in the booking page's **Replies go to**. That's your account email, unless you choose another address for the booking page. * **When you reply** to an email about a booking, your reply goes to the invitee. Host emails show the reply address beside **Invitee replies go to**. When an invitee accepts or declines the invitation in their calendar app, their answer shows on the meeting in your calendar, as for any meeting that you organize. Their answer doesn't change or remove the meeting. See [When the Invitee Answers](/docs/bookings/bookings-and-requests.md#invitee-answer). ## Adding a Reply Address[​](#reply-address "Direct link to Adding a Reply Address") To send replies to another address, such as a shared team mailbox, first verify that you have access to it: 1. In your dashboard, choose **Settings > Email replies**. 2. Under **Add an address**, enter the address, then click **Send Code**. 3. Open the email at that address. Enter the six-digit code under **Verify an address**, then click **Verify Address**. 4. Open the booking page's editor. Under **Basics**, choose the address in **Replies go to**, then click **Save**. You can also click **Add Address…** next to **Replies go to** in the booking page editor. It verifies the address in the same way, without leaving the editor. The code expires after 10 minutes, five incorrect attempts, or a request for a new code. If the email doesn't arrive, check that mailbox's junk folder, then click **Send New Code**. **Email replies** lists your account email and each verified address, with the booking pages that use it. To remove an address, click **Remove…** next to it, then click **Remove Address**. Replies for the booking pages that used it then go to your account email. ![Settings > Email replies, listing the account email and a verified address used by the Consultation page, with the Add an address form below](https://downloads.busymac.com/resources/img/bookings/email-replies-settings-2026-10-20.png) --- # Locations and Video Calls Choose how you'll meet in the booking page's **Location** section. You can offer up to 10 locations, such as a video call, phone call or office address. If you offer more than one, invitees choose when they book. ## Adding a Location[​](#adding "Direct link to Adding a Location") 1. In your dashboard, open the booking page's editor and go to **Location**. 2. Under **Add a location**, click **Video Call**, **Web Link**, **Phone Call** or **In Person**. 3. In **Name people see**, enter a name for the location, such as "Zoom call" or "Our office". 4. Fill in the location's details, described below. 5. Click **Save**. To change the order of the locations, use their arrow buttons. To remove a location, use its trash button. Location details appear at different stages: * Your profile shows only the location type, such as Phone call or In person. * While choosing a time, visitors see the names of video calls and web links. Phone and in-person options show only their type. * The booking form shows the name of every location. * The link, phone number or address appears in the confirmation and the emails only after the booking is confirmed. For a request, it appears after you approve it. Keep private addresses and phone numbers out of **Name people see**, since that name is visible before booking. ## Location Options[​](#kinds "Direct link to Location Options") * **Video Call**: Each booking gets its own call, which BusyCal creates for you. Choose the service in **Video service**. See [Video Calls](#video-calls). * **Web Link**: Enter an `https://` address in **Link**, such as a personal meeting room. A fixed address is shared by every booking. For a separate Jitsi room for each booking, see [Jitsi Room Links](#jitsi). * **Phone Call**: A phone number that people get after their booking is confirmed. Enter it in **Phone number**. To call people yourself instead, ask for their number with **Phone number** under **Questions**. * **In Person**: Enter the meeting address in **Address**. Consider turning on **Show times only in this time zone** under **Basics** so visitors see times in the meeting's local time zone. The location also appears in the event that BusyCal adds to your calendar. ## Jitsi Room Links[​](#jitsi "Direct link to Jitsi Room Links") Use a **Web Link** location to give each booking its own Jitsi room: 1. In **Booking pages**, click **Edit** on the page and go to **Location**. 2. Under **Add a location**, click **Web Link**. 3. Enter a name such as "Jitsi call" in **Name people see**. 4. In **Link**, enter `https://meet.jit.si/{booking}`. 5. Click **Save**. Keep `{booking}` exactly as written. Bookings replaces it with a new room name for each booking. The link stays the same if you approve a request or reschedule the booking. Invitees receive it when the booking is confirmed, and BusyCal adds it to the calendar event. You don't need to connect a Jitsi account in BusyCal. On the public `meet.jit.si` service, you must sign in to start the call; invitees may need to wait until you do. See [Jitsi's instructions for starting a meeting](https://jitsi.github.io/handbook/docs/user-guide/user-guide-start-a-jitsi-meeting/). If you use your own Jitsi server, use its HTTPS address followed by `/{booking}`. The placeholder must be the whole last part of the address, with nothing after it. Your server's sign-in rules still apply. To reuse a room instead, paste its existing HTTPS link in **Link** without `{booking}`. ## Video Calls[​](#video-calls "Direct link to Video Calls") Choose **Video Call** to have BusyCal create a separate call for each booking. **Video service** lists the services available for the page's calendar, with the account used to create the call shown below. ![The Location section of the booking page editor, with a Video call location named Google Meet, the Video service menu, the sentence saying that BusyCal creates the call with the calendar's Google account, and the Add a location buttons](https://downloads.busymac.com/resources/img/bookings/page-editor-location-2026-10-20.png) The account used depends on the service: Zoom and Webex **Zoom** and **Webex** calls come from the Zoom or Webex account that you linked in BusyCal. While the booking page has no calendar, you can choose only Zoom or Webex. To link a Zoom account, see [Adding Your Zoom Account](/docs/busycal/119897-using-busycal-with-zoom.md#settingup). Google Meet **Google Meet** calls come from the Google account of the booking page's calendar. Microsoft Teams and Skype **Microsoft Teams** and **Skype** calls come from the Microsoft account of the booking page's calendar. If no service is available, connect Zoom or Webex in BusyCal, or choose a destination calendar that supports video calls. See [Meeting Accounts](/docs/busycal/meeting-accounts.md). ### When the Call Link Arrives[​](#call-link "Direct link to When the Call Link Arrives") 1. The invitee receives a booking confirmation. If the call link isn't ready, the email says it will follow. 2. BusyCal adds the booking to your calendar, then creates the call. 3. The invitee and their guests receive an updated invitation with the link. BusyCal creates the call on the device that adds the booking to your calendar, with the meeting accounts on that device. The booking stays in your dashboard while BusyCal prepares the call link. If the call can't be created, you can add a link yourself. See [Adding a Call Link Yourself](#add-call-link). Zoom on more than one device A Zoom account can be authorized in BusyCal on only one device at a time. Authorizing it on another device revokes the first device's access, so that device will ask you to reconnect Zoom. For Bookings on multiple devices, a service tied to your calendar account, such as Google Meet or Microsoft Teams, avoids this limitation. If you use Zoom, connect it on one device, such as a Mac where you leave BusyCal running. See [Using BusyCal with Zoom](/docs/busycal/119897-using-busycal-with-zoom.md#reauth) and [Zoom account keeps requesting to be reauthorized](/docs/faqs/122644-zoom-account-keeps-requesting-to-be-reauthorized.md). ### Adding a Call Link Yourself[​](#add-call-link "Direct link to Adding a Call Link Yourself") Add a call link yourself if BusyCal couldn't create one, or replace the web link for a single booking: 1. In your dashboard, open the booking from **Bookings**. 2. Click **Add Call Link…**, or **Change Call Link…** if the booking already has one. 3. Enter the link. It must start with `https://`. 4. Click **Add Call Link** or **Save Call Link**. The invitee receives an updated invitation, and BusyCal updates the event's location with the new link. Other bookings and the booking page's default link are unchanged. This option is available for confirmed video-call or web-link bookings that are still in the dashboard and haven't started. Once a booking leaves the dashboard, edit the meeting's location in your calendar instead. ### When a Service Is No Longer Available[​](#service-unavailable "Direct link to When a Service Is No Longer Available") If a video service becomes unavailable, for example after you remove its account, a warning appears on the page's card in **Booking pages**. Edit the page to choose another service or remove that location. A page can't accept new bookings if none of its locations is available. --- # Your Profile and Appearance Personalize your profile and booking pages in the dashboard's **Settings**. Add your name and photo under **Profile**, and choose a theme, color and logo under **Appearance**. You can also edit your name, username and photo from **BusyCal > Settings > Bookings > Edit Profile…** on your Mac. ## Name and Username[​](#name-and-username "Direct link to Name and Username") 1. In your dashboard, choose **Settings > Profile**. 2. Under **Name and username**, enter your **Name**. It's shown on your profile page and your booking pages. 3. If you like, change the **Username**. It's the part of your links after `busybook.me/`. 4. Click **Save**. Your username must contain 3 to 64 lowercase letters, numbers or hyphens, starting with a letter. Bookings suggests one from your email address, such as `jane-doe` for . Choose another if your preferred username is taken. When you change your username, the links to your profile and to all of your booking pages change too. The old links stop working. Update any links that you already shared and any embed code on your website. You can turn a booking page on only when your profile has both a name and a username. Until you add your name, the **Profile** card in **Settings** is marked **Add your name**. ## Photo[​](#photo "Direct link to Photo") 1. In **Settings > Profile**, under **Photo**, click **Choose a photo**. Choose a PNG or JPEG image. If the image is very large, the dashboard makes it smaller before it uploads it. 2. Click **Upload Photo**. Your photo appears as a square on your profile, booking pages and link previews. To remove it, click **Remove Photo…**, then **Remove Photo**. Previously saved link previews may continue to show the old photo for a while. ## Your Profile Page[​](#profile-page "Direct link to Your Profile Page") Your public profile is at `busybook.me/` followed by your username. It shows your name, photo and a card for each page set to **On your profile**. Each card includes the meeting's duration options, location, available days and date range, description, and a **View Times** button. * A booking page that offers only specific dates shows **Specific dates** in place of its days. * A booking page where you approve each request is marked **Needs confirmation**. ![A public profile for Jane Appleseed with cards for four booking pages, each with its durations, location type, days, description and View Times, and one marked Needs confirmation](https://downloads.busymac.com/resources/img/bookings/public-profile-2026-10-20.png) A page can be set to **On your profile** but still be hidden if it's paused, has no available location, has no destination calendar selected, or uses an account that's turned off. Its card in **Booking pages** shows **Not on your profile** and explains why. See [The Booking Pages List](/docs/bookings/booking-pages.md#pages). The booking pages appear in the order of your **Booking pages** list. To change the order, use **Move Up** and **Move Down** in a booking page's **More actions** menu. When your profile lists at least one booking page, you can find its link in **Settings > Profile > Your profile page**. When the profile is open for bookings, you can also use the dashboard's top bar: * Click the globe button to open your profile, or point to it to see the address. In a narrow window, use the account menu instead. * The account menu shows the address under your email, where you can copy it. **View Your Profile** in the menu opens it. If no booking page is on your profile, the profile page says that there's nothing to book. ## Embedding Your Profile on Your Website[​](#embedding "Direct link to Embedding Your Profile on Your Website") Embed your profile to let visitors choose a meeting type and book without leaving your website. You allow the website once, and that permission covers your profile and all your booking pages, including pages you create later. 1. In your dashboard, open **Settings > Profile**. 2. Under **Website embedding**, enter your website's HTTPS address in **Allowed websites**, such as `https://example.com`. Use one address per line, up to 10. Add `https://www.example.com` on another line if your site also uses that address. 3. Enter only the website address, without a page path or wildcard. For example, use `https://example.com` for a booking section at `https://example.com/book`. 4. Click **Save** in that section. 5. Select and copy all the text in **Embed code**, then paste it into your website's HTML editor. For WordPress, use a **Custom HTML** block; see [Adding the Booking Page to WordPress](/docs/bookings/booking-pages.md#wordpress). The code appears while your profile can take bookings. If it isn't shown, make sure at least one booking page is set to **On your profile**, resume it if paused, and resolve any warnings in the dashboard. Visitors see the same meeting types as on your public profile. Pages set to **Link only** stay off the profile, although an allowed website can embed one directly if it has that page's link. You can also allow extra websites for a single page in that page's [Website embedding settings](/docs/bookings/booking-pages.md#embedding). To stop a website from embedding your profile, remove its address here and click **Save**. Clear the box to stop all profile embedding. A website listed in an individual booking page's settings can still embed that page until you remove it there too. Your normal profile and booking links keep working. ## Link-Only Booking Pages[​](#link-only "Direct link to Link-Only Booking Pages") Choose **Link only** to leave a booking page off your profile. Share its link with the people you want to book that meeting. Anyone who has the link can use it. ## Theme and Accent Color[​](#theme-and-color "Direct link to Theme and Accent Color") These settings apply to all of your booking pages and your profile page. Your dashboard always uses BusyCal's own colors. 1. In your dashboard, choose **Settings > Appearance**. 2. Under **Theme**, choose **Automatic**, **Light** or **Dark**. **Automatic** follows each visitor's light or dark setting. 3. Under **Accent color**, choose **Blue**, **Green**, **Purple**, **Red** or **Orange**. Or choose **Custom** and enter a color in **Custom color**, such as `#237c50`. 4. Click **Save Appearance**. The accent color appears on buttons, links and available times. Its shade adjusts for readability in light and dark themes. **How your booking pages look** previews the preset colors. ![Theme and color in Settings > Appearance, with Light selected, the accent colors from Blue to Custom, the preview under How your booking pages look and Save Appearance](https://downloads.busymac.com/resources/img/bookings/appearance-settings-2026-10-20.png) ## Logo[​](#logo "Direct link to Logo") Your logo appears at the top of your profile and booking pages, in an area eight times as wide as it is tall. 1. In **Settings > Appearance**, under **Logo**, click **Choose a logo**. Choose a PNG or JPEG image. If the image is very large, the dashboard makes it smaller before it uploads it. 2. Click **Upload Logo**. To remove the logo, click **Remove Logo…**, then click **Remove Logo**. ## Account Email[​](#account-email "Direct link to Account Email") Your **Account email**, shown in **Settings > Profile**, is used for sign-in and booking notifications. It doesn't appear on your public pages and can't be changed in the dashboard. --- # Troubleshooting Bookings Start with the section that matches the problem. Common things to check are whether BusyCal is running, your calendar accounts are syncing, and the booking page's hours and limits allow the time you expect. ## A Booking Doesn't Appear in BusyCal[​](#not-in-calendar "Direct link to A Booking Doesn't Appear in BusyCal") A device using Bookings must add each confirmed booking to your calendar. Check these first: * **Is it a request?** On a booking page where you approve each request, a booking goes into your calendar only after you approve it. * **Is BusyCal running?** It receives push notifications and normally checks every 30 minutes, or about every 15 minutes without push. On a Mac, it also checks when you open or switch to BusyCal and when the Mac wakes. On iPhone and iPad, updates depend on the app being open or iOS allowing background refresh. To check now on a Mac, choose **View > Refresh Calendars** (`⌘-R`). * **Does the device have the right calendar?** A booking keeps the destination selected in **Add bookings to** when it was made. Only a device with that calendar can save it. Choosing a different destination later affects new bookings only. ### In Your Dashboard[​](#not-in-calendar-dashboard "Direct link to In Your Dashboard") Look in **Waiting for BusyCal** for bookings that haven't finished updating your calendar. Check the **Calendar** line for progress. The booking leaves the dashboard once BusyCal finishes saving the meeting and any video call link. The booking moves to **Problems** when the calendar's account doesn't accept it, when Bookings can't email the invitee, or when BusyCal still hasn't finished a week after the meeting's start. Its **Calendar** line then says what went wrong: | What you see | What to do | | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | **BusyCal couldn't update your calendar for this booking. Open BusyCal on your Mac and check the calendar's account** | The calendar's account didn't accept the booking, or the calendar is gone. Open BusyCal and check the account in **BusyCal > Settings > Accounts**. | | **We couldn't email the invitee, so BusyCal can't update your calendar for this booking. Contact them another way** | Bookings couldn't send the invitee their email, even after several tries. BusyCal adds a booking only after its email is sent. Contact the invitee yourself. | | **BusyCal didn't finish updating your calendar for this booking. Check this meeting in your calendar** | A week has passed since the meeting's start, and BusyCal stopped trying. Check the meeting in your calendar, and add or remove it yourself if needed. | Requests also appear in **Problems** if their email couldn't be sent. Check the **Email** line and contact the invitee another way. BusyCal keeps trying until a week after the meeting's start. If it still hasn't finished, Bookings sends you "This booking couldn't be completed" and removes the booking. Check your calendar as the email asks; you may need to add or remove the meeting yourself. ### In BusyCal's Inbox[​](#not-in-calendar-inbox "Direct link to In BusyCal's Inbox") The booking's Inbox item explains what's preventing the calendar update. The message clears once the problem is resolved. If you dismissed the item with **OK**, check the booking in the dashboard instead. | What you see | What to do | | --------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | "Not added to your calendar. The booking page has no calendar" | This booking was made without a calendar, so BusyCal can't add it. For new bookings, edit the booking page in your dashboard and choose a calendar in **Add bookings to**. | | "Not added to your calendar. The booking page's calendar isn't on this Mac" | Open BusyCal on a device that has this calendar. That device then adds the booking. Another calendar for the booking page changes only new bookings. | | "Not added to your calendar. On My Mac calendars can't send invitations" | BusyCal can't add this booking. For new bookings, choose a calendar that belongs to an account, such as iCloud or Google, for the booking page. | | "Not added to your calendar. You aren't subscribed to the booking page's calendar in BusyCal" | Subscribe to the calendar again (see [Re-Subscribing to a Calendar](/docs/busycal/70592-calendar-list.md#unsubscribe-calendar)). BusyCal then adds the booking. Another calendar for the booking page changes only new bookings. | | "Not added to your calendar. The calendar's account is turned off" | Turn the account back on in **BusyCal > Settings > Accounts**. BusyCal then adds the booking. Another calendar for the booking page changes only new bookings. While the account is off, the booking page takes no new bookings. | | "Waiting for the calendar's account to sync" | BusyCal adds or changes the booking's event only after the account of the booking's calendar has synced within the time set in **Busy times** in your dashboard's **Settings > Access** (1 day unless you change it). Keep BusyCal open on this device and let the account sync. If it can't sync, check the account in **BusyCal > Settings > Accounts**. Another calendar for the booking page changes only new bookings. | | "Not added to your calendar. The booking page's calendar is read only" | BusyCal adds this booking when you can change the calendar again. For new bookings, choose a calendar that you can change for the booking page. | | "Not added to your calendar. The booking page's calendar is for tasks only" | BusyCal can't add this booking. For new bookings, choose a calendar for events for the booking page. | | "Not added to your calendar. BusyCal doesn't recognize the booking page's calendar" | BusyCal can't add this booking. For new bookings, choose the calendar again in the booking page's **Add bookings to**, then save the booking page. | | "Your calendar's account didn't accept this booking" | The calendar's account, such as iCloud or Google, refused the booking's event. Check the account in **BusyCal > Settings > Accounts**. Your dashboard shows the booking in **Problems**. | | "BusyCal couldn't update your calendar. It will try again" | Nothing. BusyCal tries again on its own. | | "BusyCal is still creating the video call" | Nothing. When the call is ready, the invitee gets the call link in an updated invitation. See [When the Call Link Arrives](/docs/bookings/locations-and-video-calls.md#call-link). | | "BusyCal couldn't create the video call. The booking is still confirmed" | Check the meeting account that creates the call. See [A Booking Has No Call Link](/docs/busycal/meeting-accounts.md#no-call-link). Or give the booking a call link yourself. See [Adding a Call Link Yourself](/docs/bookings/locations-and-video-calls.md#add-call-link). | | "Bookings couldn't finish this booking. Check the Bookings website for details." | Open the booking in your dashboard. Its **Calendar** or **Email** line says what went wrong. | | "BusyCal will update your calendar soon" | Leave BusyCal running. This device will try the update again shortly. | | "Waiting for “Studio iMac” to update your calendar" | BusyCal waits up to about two hours for the device that last updated this event. Open BusyCal on that device to finish sooner. Otherwise, another device with the calendar can make the change after the wait. | **Notifications off** in **Settings > Access** means the device can't receive push notifications. It still checks about every 15 minutes while BusyCal can run. ## Your Booking Pages Offer No Times, or Fewer Than You Expect[​](#no-times "Direct link to Your Booking Pages Offer No Times, or Fewer Than You Expect") Open **Booking pages** and click **Show Availability** on the affected page's card. The timeline shows which times are offered and why others are unavailable. See [Checking Which Times a Booking Page Offers](/docs/bookings/availability-and-busy-calendars.md#show-availability). These are the common causes: * **The booking page is turned off or paused.** People see "This booking page is turned off" or "Bookings are paused". Turn the booking page on, or resume its bookings. * **Busy times are over 7 days old or missing.** People see "Not taking bookings right now". **Overview** identifies whether a device update or specific calendars are out of date, or whether there are no busy times to check. Follow the notice to refresh them. Your pages resume offering times a few minutes after an up-to-date report arrives. See [Keeping Your Busy Times Up to Date](/docs/bookings/availability-and-busy-calendars.md#busy-times) and [What Old Busy Times Look Like](/docs/bookings/availability-and-busy-calendars.md#old-busy-times). * **Your access to Bookings has ended.** **Overview** says that booking pages can't take new bookings. See [Access to Bookings](/docs/bookings/account-security-and-privacy.md#access). * **No destination calendar is selected, or your profile has no name.** **Overview** says what's missing. Choose a calendar in the page's **Add bookings to** setting, or add your name in **Settings > Profile**. * **The account of the booking page's calendar is turned off in BusyCal.** The booking page's card says "This booking page can't take bookings right now", and people see "Not taking bookings right now". Turn the account on in **BusyCal > Settings > Accounts**, or choose another calendar for the booking page. See [When the Calendar's Account Is Turned Off](/docs/bookings/booking-pages.md#account-off). * **The booking page can't offer any of its locations,** for example because its video service is no longer available. Its card says so. See [When a Service Is No Longer Available](/docs/bookings/locations-and-video-calls.md#service-unavailable). * **The page's settings restrict the available times.** Check weekly hours, specific dates, date range, minimum notice, buffers and maximum bookings. * **Your busy calendars are full.** In BusyCal's Bookings settings, click **Choose Calendars…** next to **Calendars to check**. Then uncheck the calendars that shouldn't block bookings. See [Busy Calendars](/docs/bookings/availability-and-busy-calendars.md#busy-calendars). * **You moved or deleted a booked meeting in your calendar.** Its original time stays blocked until that time has passed. See [Which Events Count](/docs/bookings/availability-and-busy-calendars.md#which-events). ## People Can Book a Time When You're Busy[​](#busy-time-offered "Direct link to People Can Book a Time When You're Busy") If a page offers a time that conflicts with an event, check whether that event is included in the busy times shared with Bookings: * **Is the calendar checked for free times?** In BusyCal's Bookings settings, click **Choose Calendars…** next to **Calendars to check**, and check the calendar. Calendar subscriptions start unchecked. See [Busy Calendars](/docs/bookings/availability-and-busy-calendars.md#busy-calendars). * **Does the event count as busy?** Events marked as free, such as all-day events made in iCloud on the web, declined invitations and all-day invitations that you haven't answered don't block times. See [Which Events Count](/docs/bookings/availability-and-busy-calendars.md#which-events). * **Is the account turned on and syncing?** Without updates, Bookings uses the previous busy times and may miss new events. Check **BusyCal > Settings > Accounts**. See [When a Calendar Account Stops Syncing](/docs/bookings/availability-and-busy-calendars.md#account-stops-syncing). * **Did you remove the calendar's busy times?** After **Remove Busy Times** in your dashboard's **Settings > Access**, your booking pages don't check that calendar until BusyCal shares it again. See [Busy Times for Each Calendar](/docs/bookings/availability-and-busy-calendars.md#calendar-busy-times). * **Has the latest change been shared?** BusyCal sends updates shortly after calendar changes. On iPhone and iPad, open BusyCal or allow background refresh. Subscriptions update on their own schedules and may take longer. On your Mac, click **Sync Free Times Now** in **BusyCal > Settings > Bookings** to send an update. ## New Bookings Wait for Your Approval[​](#approval-needed "Direct link to New Bookings Wait for Your Approval") A page set to confirm automatically may start sending requests if your busy times are out of date. The limit is set in **Settings > Access > Busy times**, with a default of 1 day. Approval lets you check for conflicts that recent calendar updates may have missed. Follow the notice on **Overview**: * If no device has shared busy times recently, open BusyCal on a device using Bookings. On a Mac, leave it running. * If specific calendars are out of date, turn on or fix their accounts in **BusyCal > Settings > Accounts**. If you no longer want to check those calendars, deselect them in **Check for Free Times** or remove their busy times in **Settings > Access**. Automatic confirmation resumes when all relevant busy times are within the limit. Requests already received still need your answer. [What Old Busy Times Look Like](/docs/bookings/availability-and-busy-calendars.md#old-busy-times) shows the notice in your dashboard and what visitors see on your booking page. How a sync problem affects freshness depends on the account type: Google, iCloud, Exchange, Microsoft 365 and CalDAV accounts, and calendar subscriptions Selected busy calendars use the account's last successful sync to measure freshness. Selected subscriptions use their last successful refresh. See [When a Calendar Account Stops Syncing](/docs/bookings/availability-and-busy-calendars.md#account-stops-syncing). Apple Calendar accounts and calendars subscribed over the LAN An [Apple Calendar account](/docs/busycal/140077-using-busycal-with-apple-calendar.md) shows the calendars of the Calendar app on your Mac in BusyCal, read-only. It's different from an iCloud or other CalDAV account that you add to BusyCal directly. For Apple Calendar accounts, BusyCal can detect a failure to read calendars, such as missing access permission. It can't detect an account that stops syncing inside the Calendar app. LAN subscriptions also don't become out of date for this check. See [When a Calendar Account Stops Syncing](/docs/bookings/availability-and-busy-calendars.md#account-stops-syncing). ## A Booking Page Has No Link, or a Link Stopped Working[​](#links "Direct link to A Booking Page Has No Link, or a Link Stopped Working") * **"Gets a link once you choose a username in Profile settings".** Your profile has no username. Choose one in **Settings > Profile**. * **A booking page's link shows without Open.** The booking page can't take visitors, for example because it's turned off. Turn it on, or check its warnings. * **The editor warns that the old link stops working.** You changed the **Link** of a booking page that people can book. When you save, the old link stops working. Share the new link. * **Old links stopped working after you changed your username.** Changing your username changes the links to your profile and to all of your booking pages. Share the new links. * **People see "This booking page doesn't exist" or "We couldn't find this person".** The link has a typo, or the booking page or username has changed. Send them the current link. * **A preview link stopped working.** Preview links expire soon after you open them. Click **Preview** again, and share the booking page's own link instead. ## A Calendar Is Missing or Not on Your Mac[​](#missing-calendar "Direct link to A Calendar Is Missing or Not on Your Mac") **Add bookings to** lists calendars shared by your devices that can receive bookings: they must belong to an account, hold events, and be subscribed to and editable in BusyCal. On My Mac calendars The **Add bookings to** menu doesn't list On My Mac calendars, because they can't take bookings. Choose a calendar that belongs to an account, such as iCloud or Google. On My Mac calendars still count as busy while they're checked for free times. * **The menu is empty.** Open BusyCal on a device that uses Bookings. Your calendars appear after BusyCal shares them. * **You have more than 256 calendars.** BusyCal shares up to 256 calendars with Bookings. Your dashboard says how many aren't listed. * **The selected calendar shows "Not on your Mac".** Check whether another device still has the calendar and can save bookings to it. This label can reflect a device where the calendar isn't available, even when another device can use it. If none of your Bookings devices can save there, pause the page, choose an available calendar in **Add bookings to**, save, then resume bookings. Existing bookings keep their original calendar. See [When the Calendar Is Missing](/docs/bookings/booking-pages.md#calendar-missing). An account explicitly turned off in BusyCal is different: its calendars show **Calendar account turned off**, and pages using them stop accepting bookings. See [When the Calendar's Account Is Turned Off](/docs/bookings/booking-pages.md#account-off). Exchange accounts that use EWS Microsoft is switching off Exchange Web Services (EWS) for Microsoft 365 work and school accounts. An account that BusyCal syncs through EWS then stops syncing. Move the account to **Office 365 (Microsoft Graph)** in BusyCal, as described in [Switch to Microsoft Graph](/docs/busycal/70642-using-busycal-with-exchange-office-365.md#troubleshooting). Then edit each booking page that used one of its calendars, and choose the new calendar in **Add bookings to**. ## A Request Expired[​](#request-expired "Direct link to A Request Expired") Unanswered requests expire after 48 hours or at the meeting's start, whichever comes first. The time becomes available again, and the invitee receives an email with a link to book another time. To answer requests in time, use the **Approve Request** and **Decline Request** links in the email about each request. Or check **Requests** on your dashboard's **Overview**. If you don't need to approve each booking, set the booking page's **Approval** to **Automatic**. ## A Booking Can't Be Changed[​](#change-not-made "Direct link to A Booking Can't Be Changed") After BusyCal finishes adding the meeting and any call link, the booking leaves the dashboard. Make further changes in your calendar. Invitees can respond to their calendar invitation or contact you; Bookings doesn't offer them reschedule or cancel controls for confirmed meetings. * **The booking is no longer in your dashboard, or View Booking in an email says that the booking is no longer in Bookings.** BusyCal has added the booking to your calendar, or the request has ended. To move or cancel the meeting, change or delete it in your calendar. Your calendar account sends the invitee the update, as for any meeting that you organize. See [Changing a Meeting in Your Calendar](/docs/bookings/bookings-and-requests.md#calendar-changes). * **The invitee asks to move or cancel a confirmed meeting.** They can decline the invitation or contact you. Reschedule in the dashboard while the booking is listed there. After it leaves, edit the meeting in your calendar. See [Rescheduling a Booking](/docs/bookings/bookings-and-requests.md#reschedule). * **The invitee's link opens a page that says "This booking is no longer managed here".** The booking is in your calendar. The page asks the invitee to use their calendar invitation or to contact you. * **The invitee's link opens a page that says the booking link no longer works.** The request ended, or the meeting has passed. The page gives the same advice. * **"This booking changed in the meantime, so your change wasn't made."** Someone else changed the booking, for example the invitee withdrew a request, or you changed it in another browser. Check the booking's current details, then decide again. * **"This meeting has already started, so nothing was changed".** You can't approve, reschedule or cancel a booking after the meeting has started. * **"That time is no longer available".** Someone booked that time, or it's no longer free. Choose another time. A new time also can't overlap the meeting's current time when its event is already in your calendar. * **You can't reschedule a booking whose calendar's account is turned off.** Nobody can move such a booking until you turn the account on in **BusyCal > Settings > Accounts**. See [When the Calendar's Account Is Turned Off](/docs/bookings/booking-pages.md#account-off). * **"This booking page was changed elsewhere".** The booking page changed somewhere else, for example in another browser, after you opened it. Click **Load Latest Version**, or save your changes to replace it. ## BusyCal Shows a Notice in Bookings Settings[​](#mac-notices "Direct link to BusyCal Shows a Notice in Bookings Settings") * **"BusyCal can't check your license for Bookings right now".** BusyCal is still checking whether your copy includes Bookings, usually just after launch. Wait for the check to finish; no action is needed. * **"BusyCal couldn't start Bookings on this Mac".** BusyCal couldn't read its saved Bookings data. Quit and reopen the app as the message advises. Nothing is deleted, and other devices can keep using Bookings. Contact support if the message returns. * **"You've been signed out of Bookings on this Mac".** Until you sign in again, this Mac doesn't add bookings to your calendar or share your busy times. Click **Sign In…** and sign in with the same email address. * **A notice says that your booking pages can take new bookings until a date, or that they can't take new bookings.** BusyCal couldn't confirm your access to Bookings, and the notice says why. Click **Buy…**, **Renew…** or **Subscribe…**. With Setapp, check your membership in Setapp. Your booking pages and bookings are kept. * **"“Intro call” can't take bookings".** The account of that booking page's calendar is turned off in BusyCal, and the line under the notice says how to fix it. See [When the Calendar's Account Is Turned Off](/docs/bookings/booking-pages.md#account-off). * **"BusyCal isn't checking the calendars in “iCloud” right now", under Calendars to check.** The account is turned off, or you don't use it on this Mac, so BusyCal on this Mac doesn't share new busy times for its calendars; the line under the notice says which. Bookings keeps their last busy times, which get older. See [When a Calendar Account Stops Syncing](/docs/bookings/availability-and-busy-calendars.md#account-stops-syncing). ## Sign-In Problems[​](#sign-in "Direct link to Sign-In Problems") * **No email arrives.** Check your junk mail folder. In BusyCal, click **Send New Code** when the countdown ends. The dashboard emails only addresses that you signed in with in BusyCal, so turn on Bookings in BusyCal first. * **"That code isn't correct".** In BusyCal or in your dashboard, check the code in the latest email and enter it again. The message shows how many attempts are left. * **In BusyCal: "That code has expired. Get a new one" or "You entered too many wrong codes. Get a new one".** Click **Continue** to get a new code. * **In the dashboard: "We couldn't sign you in".** The link or code has expired or was already used, or someone entered a wrong code five times. Each link or code works once, for 10 minutes. Click **Sign In Again** to start over. ## Video Call Problems[​](#video-calls "Direct link to Video Call Problems") If a booking page doesn't offer a video service, or a booking has no call link, see [Meeting Accounts](/docs/busycal/meeting-accounts.md#troubleshooting). You can also add a call link to a booking yourself. See [Adding a Call Link Yourself](/docs/bookings/locations-and-video-calls.md#add-call-link). --- # Using BusyCal with Reminders Reminders is available as an app on iOS and macOS, which can include lists of reminders / tasks. BusyCal can connect to Reminders directly for syncing these lists their container reminders. important Please go through the considerations and limitations listed below to understand what is and isn't supported. ## Prerequisites[​](#prerequisites "Direct link to Prerequisites") If you own a mac or iOS that has already been upgraded to macOS Catalina or iOS 13, you may already have upgraded Reminders app to its new storage format. If so, you will need to ensure that **all your devices** are on macOS 10.15 (Catalina) or above, or iOS 13.0 or above, as upgraded Reminders from macOS 10.15+ (Catalina) or iOS 13+ are not visible on macOS 10.14 or below. BusyCal on any device below Catalina or iOS 13 will only see old, non-upgraded Reminders lists and tasks that will not sync with iCloud or other devices with more recent OS versions. ## Syncing with Reminders[​](#syncing "Direct link to Syncing with Reminders") To sync BusyCal with Reminders, do the following: 1. Choose **BusyCal > Settings > Tasks**. 2. Click the **Enable Reminders** checkbox. ## Important Considerations[​](#considerations "Direct link to Important Considerations") ### Reminders app: Not Upgraded[​](#notupgraded "Direct link to Reminders app: Not Upgraded") If you have *not* yet upgraded your Reminders app to the new storage format offered by iOS 13 and macOS Catalina, you may see duplicate calendars and tasks in BusyCal; one copy may be syncing from your iCloud account (if added to BusyCal), and one copy would appear to be syncing from the Reminders app. In this case, we would advise that you *ONLY* rely on the calendars syncing via your iCloud account and do *NOT* sync with Reminders separately, i.e. there's no need to use this new sync feature. ### Reminders app: Upgraded[​](#upgraded "Direct link to Reminders app: Upgraded") If you *have* already upgraded the Reminders app in iOS 13 / macOS Catalina, you may notice that changes you make in Reminders directly, or using the new Reminders Sync method in BusyCal, do not sync back to changes you made to Reminders in your iCloud account. This is important to understand ([and discussed here](/docs/faqs/112990-reminders-in-ios-13-and-macos-catalina-drops-support-for-caldav.md)): Reminders app no longer syncs to iCloud's CalDAV servers, and instead stores data into a special location inaccessible by the iCloud CalDAV server. #### Yellow Triangle Warning Symbol[​](#yellow-triangle-warning-symbol "Direct link to Yellow Triangle Warning Symbol") If you see a yellow triangle warning symbol (⚠️) next to your Reminders lists or a message asking "Where are my reminders?", this indicates that you've already upgraded the Reminders format on another device. This warning triangle appears when there's a format mismatch between devices. The side-effect is that you may see duplicated lists or tasks appear in both Reminders and under your iCloud (CalDAV account) in BusyCal, but changes will *not* sync between the two. These are two separate accounts, with two separate copies of unrelated data. Thus, this new syncing method is *only* useful if you have already upgraded Reminders to the new storage format, and plan to use the lists in Reminders to sync data between multiple-devices. Enabling Reminders support in BusyCal will allow you to manage you lists and tasks without requiring you to switch between apps. You should **stop** ✋ using the Task calendars syncing via your iCloud account. ### Reminders app: Partially Upgraded[​](#partially-upgraded "Direct link to Reminders app: Partially Upgraded") If you're on an older macOS version (10.14 or below) and own an iPhone / iPad with iOS 13 and have already upgraded Reminders there, you will immediately notice that the Reminders.app on macOS no longer syncs changes between your iPhone / iPad with iOS 13. This has been explained [and discussed here](/docs/faqs/112990-reminders-in-ios-13-and-macos-catalina-drops-support-for-caldav.md). Using the new Reminders sync option in BusyCal will not help in this case, as BusyCal is limited to syncing with whatever Reminders.app can see on your mac. Similarly if you're on macOS Catalina but an older version of iOS (12 or below), you'll see the same thing - i.e. Reminders.app on both platforms show two separate sets of data. One solution is to upgrade your mac to Catalina if you wish to continue syncing via Reminders.app. In case you do not wish to upgrade to Catalina, the other solution is to turn "Reminders Sync" off in BusyCal (Settings > Accounts > select Reminders and delete account) and stick to syncing via iCloud CalDAV. You will first need to restore your iCloud Reminders that Apple deleted during the automatic-migration, and that should then push all your Tasks via iCloud CalDAV instead. [Here's how you can restore your Reminders](https://support.apple.com/en-ae/guide/icloud/mme6182cfc37/icloud). If you're bothered by this, the only thing you can do is leave [Apple feedback](https://www.apple.com/feedback/iphone.html) and tell them how this change has disrupted your workflow. ## Reminders Limitations[​](#limitations "Direct link to Reminders Limitations") BusyCal attempts to sync all the information retrieved from Reminders, however the sync mechanism currently offered by the OS is somewhat limited to what it can and cannot sync. These limitations and caveats have been listed below. * BusyCal syncs all incomplete tasks, but only the completed tasks from the last 12 months. This keeps syncing fast and avoids the errors, duplicates, and hangs Reminders can run into with very large task histories. Older completed tasks remain untouched and can still be seen in the Reminders app. * New features in Reminders (such as indented sub-tasks, folders, "flagging" a task) are unavailable to 3rd party developer apps * These properties are not available for Tasks: Attachments, Graphics, Locations, Location URLs, Tags, URLs, Private Flag. * Multiple alarms are not supported. A reminder can have at most a single sound / message alarm and a single proximity alarm. * Assigning "My Alarm", "My Notes", "My Tag", "Contact" or "URL" to a To Do will not sync across multiple devices running BusyCal as Reminders does not support syncing 3rd party app meta-data. * Rich-text notes will not sync across multiple devices running BusyCal. * Snoozing or dismissing alarms on one device does not sync the snooze / dismissal across other devices running BusyCal. ## Switching to Reminders from iCloud[​](#switch "Direct link to Switching to Reminders from iCloud") If you upgraded to Catalina / iOS 13 earlier and chose not to upgrade your Reminders app to the new format (you're prompted to Upgrade when you first launch Reminders), your tasks calendars still reside on the iCloud's CalDAV servers. If you wish to now utilize BusyCal's support for the native Reminders app, you can launch Reminders on any of your iOS devices and upgrade from there (you should see an "Upgrade" button on the main screen if you haven't already upgraded). This will move all your existing iCloud CalDAV based tasks to Reminders. An indication of this would be an empty "Reminders ⚠️" list in iCloud, which would mean you've successfully upgraded Reminders. From there, you can use BusyCal directly to manage your Reminders. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") ### 🛠️ Reminders Sync Slow or Stuck[​](#sync-slow-or-stuck "Direct link to 🛠️ Reminders Sync Slow or Stuck") BusyCal reads directly from Apple's Reminders database on your Mac. It does not have its own sync engine for tasks — it simply reflects whatever Reminders currently has on that device. This means that if Reminders itself is not syncing properly between your devices, BusyCal will show the same stale or missing data. **Once Reminders is syncing reliably between your devices, BusyCal will automatically pick up the changes.** important When diagnosing task sync issues, **remove BusyCal from the equation entirely** and focus solely on getting Apple's Reminders to sync between your devices first. There is no point testing further in BusyCal until Reminders itself is working. #### Step 1: Test Reminders sync without BusyCal[​](#step-1-test-reminders-sync-without-busycal "Direct link to Step 1: Test Reminders sync without BusyCal") 1. Open the **Reminders** app on both your Mac and iPhone/iPad. 2. Create a **test task** on one device. 3. Check whether it appears in Reminders on the other device within a minute or two. #### Step 2: If Reminders is not syncing[​](#step-2-if-reminders-is-not-syncing "Direct link to Step 2: If Reminders is not syncing") If the test task does *not* appear in Reminders on both devices, the problem is with Apple's Reminders sync, not BusyCal. Try the following: * **Restart both devices** — this often clears a stuck Reminders sync. * **Launch Reminders and keep it open** — Apple's sync can stall when the Reminders app isn't running. Open it and give it a moment to finish syncing with iCloud. * **Trim large or old lists** — If you have very large Reminders lists or hundreds of old completed tasks, this can slow down or stall sync. Apple's Reminders has [system limits](https://support.apple.com/103188) on the number of items. Some users have found that deleting old completed tasks and keeping lists shorter resolves persistent sync issues. See [Archiving Old Tasks](/docs/busycal/archiving-old-tasks.md) for step-by-step instructions. * **Relaunch Reminders** — Force-quit and reopen Reminders to kick-start a fresh sync. * If Reminders still won't sync between devices, **contact [Apple Support](https://support.apple.com/)** for help with iCloud Reminders — this is outside BusyCal's control. #### Step 3: If Reminders is syncing, test BusyCal[​](#step-3-if-reminders-is-syncing-test-busycal "Direct link to Step 3: If Reminders is syncing, test BusyCal") Once you've confirmed that Reminders syncs correctly between your devices, test in BusyCal: 1. Relaunch BusyCal. 2. Go to **BusyCal > Settings > Tasks** and confirm **Enable Reminders** is checked. 3. Check whether the test task now appears. tip Apple's Reminders sync can occasionally be slow, appear stuck, or lag behind — especially with large task lists containing hundreds or thousands of items. This is entirely outside BusyCal's control. As a general best practice, **launch Reminders.app first** and give it a moment to finish syncing with iCloud before opening BusyCal. This ensures BusyCal has the latest data to work with. If your tasks do eventually appear, the sync is working correctly, just slowly. ### 🛠️ Duplicate Reminders Tasks[​](#duplicate-tasks "Direct link to 🛠️ Duplicate Reminders Tasks") Apple migrated tasks from iCloud Calendars to the dedicated **Reminders** app as part of an upgrade, [explained here](/docs/faqs/112990-reminders-in-ios-13-and-macos-catalina-drops-support-for-caldav.md). This upgrade is triggered when launching the **Reminders** app and tapping the **Upgrade** button. If you did **not** complete the upgrade, your task lists may appear in two places: 1. **Reminders app** 2. **iCloud CalDAV server** Since both still reside on iCloud, adding **both** Reminders and your iCloud account to BusyCal will result in duplicate tasks, as BusyCal will fetch the same data from both sources. To remove duplicates, follow these steps: 1. Open **BusyCal Settings > Accounts**. 2. Select **Reminders** from the list. 3. Click the `[-]` button to delete the **Reminders** account. This ensures that tasks sync **only** from your iCloud account, preventing duplicates. ### 🛠️ Changes not Syncing[​](#️-changes-not-syncing "Direct link to 🛠️ Changes not Syncing") If you feel changes made in Reminders are not syncing with BusyCal, or changes made in BusyCal do not appear in Reminders or iCloud on another device, you most likely have a mismatch of operating system versions and its data. Normally, this would happen when you are running BusyCal on a version of macOS below Catalina, and you're comparing the data you see with another device running a more recent version of the OS, such as macOS Catalina or iOS 13. Usually, if you see a list with a ⚠️ symbol in its name, or an otherwise empty list with a task titled *"Where are my reminders"*, you have already upgraded Reminders on one of your machines to its new storage format. This storage format is not compatible with older versions of the OS, nor does it sync via CalDAV to 3rd party clients. Data stored in Reminders is now only accessible by a device running a more recent version of the OS (macOS 10.15+, or iOS 13+). Here are a few things you can try: * Ensure all of your devices are on the latest version of the OS. If any mac is on or below 10.14, or an iOS device is on or below 12.0, you should upgrade these to the latest OS version. * On macOS, open Reminders.app. What do you see? If the lists and tasks present there are exactly the same as those found in BusyCal after an initial sync, then we know BusyCal isn't the culprit - it's simply seeing what Reminders is seeing. * On iOS, open Reminders.app. What do you see? If there's a mismatch with what you see in your macOS Reminders app, then we know the two aren't syncing and one of these may have been upgraded to the new storage format. Again, the only way out would be to ensure you're on the latest version of the OS. ### 🛠️ Changes Only Sync When Reminders.app is Running[​](#️-changes-only-sync-when-remindersapp-is-running "Direct link to 🛠️ Changes Only Sync When Reminders.app is Running") This is a long-standing bug in Reminders that we've reported to Apple over the years. Unfortunately, it still affects a small number of users. Issue: Changes made in BusyCal and Reminders may not sync until Reminders.app is launched in the background. Workaround: There is currently no known fix, and syncing will only resume when Reminders app is actively running. We understand this can be frustrating, however we currently do not have a solution for this other than keeping Reminders.app running. ### 🛠️ Task Appearing at the Wrong Date in Reminders vs. BusyCal[​](#️-task-appearing-at-the-wrong-date-in-reminders-vs-busycal "Direct link to 🛠️ Task Appearing at the Wrong Date in Reminders vs. BusyCal") Reminders has a known issue where it displays alarm information as the task's effective due date and time instead of the actual due date. This happens with both absolute alarms (specific date and time) and relative alarms (such as "2 days before due time"). When any alarm is present, Reminders hides the actual due date and time, showing the alarm's calculated date and time as the source of truth instead. This causes confusion when viewing the same task in third-party apps like BusyCal, which treats due dates and alarm dates as separate properties. To fix this discrepancy, inspect the task in BusyCal and remove any assigned alarms. This should resolve the date mismatch between the two apps. ### 🛠️ Calendars not Showing[​](#️-calendars-not-showing "Direct link to 🛠️ Calendars not Showing") BusyCal will show you whatever the Reminders app shows you. Open the Reminders.app to confirm if it's missing calendars as well. If it is, then you have not yet added all the accounts you're expecting to see calendars from. Open macOS Settings > Internet Accounts and make sure you have all your accounts listed. Tap on each of the accounts and ensure you have enabled Reminders (as this is a per-account setting). ### 🛠️ Sub-tasks and Checklists Not Syncing[​](#subtasks "Direct link to 🛠️ Sub-tasks and Checklists Not Syncing") Apple provides developers with an API called [`EventKit`](https://developer.apple.com/documentation/eventkit) to access calendar and reminders data. This is how apps like BusyCal can read and write to Reminders. However, **EventKit is extremely limited** and does **not** provide any way to: ❌ Access sub-tasks or checklists ❌ Support advanced task features beyond basic properties (title, date, time, alarms, notes etc) Since Apple **does not expose sub-tasks** through EventKit, there is no workaround until Apple expands its API to allow full syncing of checklists. ### 🛠️ BusyCal Only Syncs When Reminders.app is Running[​](#launch-reminders "Direct link to 🛠️ BusyCal Only Syncs When Reminders.app is Running") Due to a long-standing bug in Apple's Reminders system, syncing with BusyCal (or any third-party app) only works reliably **when the Reminders app is actively running**. This is a known issue that affects a few users for unknown reasons. Try the following steps to reset Reminders syncing: 1. Open **System Settings > \[your Apple Account] > iCloud**, turn off **Reminders**, and click **Done**. 2. Restart your Mac. 3. Go back to the same settings and **turn Reminders back on**. 4. Launch **Reminders.app** and wait for it to fully sync. 5. In BusyCal, go to **Tasks > Preferences** and uncheck **Enable Reminders**. 6. Quit and relaunch BusyCal, then re-enable **Enable Reminders**. If syncing still fails, your best option is to **contact Apple iCloud support** and report that **Reminders is not syncing with third-party apps**. --- # Do Not Disturb You can set a DND timer to suppress all alarms and sounds temporarily. In a meeting? Sharing your screen with someone else? Projecting slides in a staff meeting? You probably don't want personal alarms to popup in the middle of any of this, or alarm sounds to go off during an intense discussion. With BusyCal's built-in Do Not Disturb function, you can temporarily suppress all alarms and sounds, and have DND turn off automatically after the specified duration. The DND toggle button can be accessed from the toolbar, along with a dropdown to choose the time you wish for alarms to remain suppressed. ![Quick Entry](https://www.busymac.com/images/dndshot.png) Click on the down-arrow to select a duration, and then click on the moon icon to toggle between **On** and **Off** DND modes. The following demonstrates how to use the do-not-disturb feature. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/dnd_web.webm) --- # Using BusyCal with Zoom Zoom is a market leading online video conferencing solution. BusyCal's Zoom integration connects to your Zoom account and enables you to add video/audio conferencing calls to existing meetings or new calendar events with just a click. This powerful integration makes scheduling and managing Zoom meetings directly in your calendar simple and efficient. ## Adding your Zoom account[​](#settingup "Direct link to Adding your Zoom account") To sync BusyCal with Zoom, do the following: note BusyCal supports connecting one Zoom account per device. If you authorize the same Zoom account in BusyCal on another device, Zoom invalidates the previous authorization and you will be prompted to reauthorize. 1. Choose BusyCal > Settings > Accounts. 2. Click the + (plus) button to add a new account. 3. Choose Zoom from the Server Type pop-up menu and click OK. ![Add Zoom account](https://www.busymac.com/images/bcl3mac-connect-zoom.png) For how Zoom compares with the other video call services, and how [BusyCal Bookings](/docs/bookings.md) uses your Zoom account, see [Meeting Accounts](/docs/busycal/meeting-accounts.md). ## Adding Zoom meetings to events[​](#creating "Direct link to Adding Zoom meetings to events") You can add a Zoom meeting to an existing event as well as a new event. This works for your [On My Mac](./70592-calendar-list#accounts) calendars too. Meetings cannot be added to Tasks, however. Once your Zoom account has been setup successfully, select any event to see a new option in the Info Panel, labelled "zoom call: Add meeting...". ![Add Zoom Meeting](https://www.busymac.com/images/bcl3mac-add-zoom-meeting.png) Click on this button once to create a new Zoom meeting. You will see the button show "Pending..." briefly while it connects to Zoom to setup the meeting. Upon success, BusyCal will embed the meeting link within the notes section of the event, and optionally add a link to the Location (if you have that enabled under Settings > Accounts > Zoom). ![Meeting Created](https://www.busymac.com/images/bcl3mac-created-zoom-meeting.png) Please note that in order to protect this link from being accidentally deleted or modified, we hide it from view. You can still access the link by clicking on the "Copy to Clipboard" button next to the "Join button", or click on the (i) button below the event's title to access the hidden embedded notes section, as shown below. ![Accessing Embedded Link](https://www.busymac.com/images/bcl3mac-hidden-zoom-link.png) There is no way to customize individual meeting settings. Meeting settings are obtained directly from your Zoom account, including the timezone for the meetings or your meeting password requirements. Zoom will automatically add a password to your meeting if that has been setup in your Zoom account; BusyCal will simply request Zoom to create a meeting with your preferred settings. Whatever preferences and defaults you may have set, BusyCal will use those when creating or updating the meeting. ## Updating Zoom meetings[​](#updating "Direct link to Updating Zoom meetings") Every time you make a change to an event with a Zoom meeting, BusyCal automatically refreshes the meeting with new dates, topic or agenda. You do not have to perform any manual steps separately. Having said that, BusyCal will not poll Zoom for updates. If you were to delete or modify the meeting manually using Zoom's website, these changes will not automatically reflect within BusyCal, unless you were to make a change to the event within BusyCal itself. ## Recurring Meetings[​](#recurring "Direct link to Recurring Meetings") Zoom offers a limited number of options when it comes to setting up a recurring meeting. Any time you add a meeting to a recurring event within BusyCal, an attempt is made to create a Zoom meeting based on this pattern. However this is not always possible given the limitations. This is especially true for detached events. For this reason, any time you detach a repeating event (i.e. alter its date to effectively create an exception to the original recurring pattern), BusyCal leaves the meeting link within the notes untouched, but in addition allows you to optionally replace it with a new meeting (by clicking "Add Meeting.."). This of course makes sense, given the meeting date and time has now changed. Zoom, however, will continue to remind you of the meeting on the "wrong date", since it does not register such exceptions. You will need to ignore reminders coming from the Zoom app for those dates, as there is no way around this limitation. ## Uninstalling the BusyCal add-on from Zoom[​](#uninstall "Direct link to Uninstalling the BusyCal add-on from Zoom") You can remove Zoom from BusyCal, however this does not automatically deauthorize BusyCal from your account. If you'd like to deauthorize BusyCal from accessing your account entirely, please follow the second step described below. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") ### 🛠️ I keep getting re-authorization requests[​](#reauth "Direct link to 🛠️ I keep getting re-authorization requests") Zoom unfortunately does [not support users authenticating their Zoom account in multiple devices](/docs/faqs/122644-zoom-account-keeps-requesting-to-be-reauthorized.md) at the same time, without requiring them to re-authenticate after a day. They invalidate all your other devices the moment you log into and authorize one device. Zoom developer support has explained this here: The only thing you can do is to use either different accounts on each device, or use Zoom on only one device running BusyCal. Please leave feedback with Zoom so that they may reconsider. ### 🛠️ I only see "Pending..."[​](#pending "Direct link to 🛠️ I only see \"Pending...\"") When you click on "Create Meeting", it may take some time for the zoom meeting link to create, depending on other tasks BusyCal may be busy performing. At times it may be necessary for an ongoing sync to end before BusyCal is able to send a request to Zoom. Try clicking on *Refresh Calendars* from the View menu (CMD+R) to see if that helps. ### 🛠️ I cannot see zoom meeting links in event notes[​](#no-links "Direct link to 🛠️ I cannot see zoom meeting links in event notes") This has been explained in the [Add Zoom Meetings](#creating) section above, that meeting links are hidden from notes for security reasons. These links however are always sent to the invitees and will *always* be visible to them. This is a BusyCal only feature, to prevent accidental removal / modifications etc. ### 🛠️ Meetings are not assigning a password[​](#no-pass "Direct link to 🛠️ Meetings are not assigning a password") You need to log into [zoom.us](https://zoom.us), click on Settings and then ensure you have enabled *Require passcode* for scheduled meetings. BusyCal will generate a random password for the meeting, based on the minimum password requirements set on your account. ### 🛠️ I see a *Add meeting* option for an event that already contains a Zoom Meeting[​](#add-meeting "Direct link to add-meeting") Zoom meetings can only later be removed from the same machine used to add the meeting. If the event in question already has a *Join Zoom* link visible near the event's title, but you see *Add meeting* button next to "zoom call:", this may suggest that the meeting was created on a different machine. This is not a bug and this does not affect the meeting in question. This simply means that the Zoom meeting related meta-data was saved on a different machine that cannot, due to technical limitations, sync over to your other machines. ### 🛠️ I see an error[​](#error "Direct link to 🛠️ I see an error") Please [contact us](/docs.md#technical-support) so we can go through the logs to identify the issue. ### 1. Removing Zoom from BusyCal[​](#1-removing-zoom-from-busycal "Direct link to 1. Removing Zoom from BusyCal") You can remove your Zoom account from BusyCal at any time. Simply open Preferences > Accounts, select Zoom in the left panel and then click \[-] to remove the account. Existing meetings and links within event notes will not be removed. This is so that you remain in control of managing your Zoom meetings once the account has been removed. In case you add your account back into BusyCal, you can resume managing it directly from within the app. You can also disable Zoom temporarily to take it offline for whatever reason. Open Preferences > Accounts, select Zoom and uncheck "Enable this account". When you do this, you will no longer be able to manage your meetings from BusyCal, and any pending updates waiting to be sent to Zoom will be deferred indefinitely until the account is re-enabled. ### 2. Uninstalling and Deauthorizing BusyCal from Zoom[​](#2-uninstalling-and-deauthorizing-busycal-from-zoom "Direct link to 2. Uninstalling and Deauthorizing BusyCal from Zoom") 1. Login to your Zoom account and navigate to the Zoom App Marketplace. 2. Click *Manage* > *Installed Apps* or search for BusyCal. 3. Click on the *BusyCal* app listing. 4. Click *Uninstall* This will deauthorize the app from accessing Zoom. --- # Using BusyCal with Todoist [Todoist](https://www.todoist.com) is a popular task management offering by Doist. The BusyCal Todoist integration lets you add your Todoist account to BusyCal and manage all your task lists and calendar items in one place. You can view and manage your Todoist tasks alongside your calendar events, creating a comprehensive productivity system. Changes made in BusyCal will sync to Todoist and all other devices running Todoist and vice versa. ## Syncing with Todoist[​](#syncing "Direct link to Syncing with Todoist") To sync BusyCal with Todoist, do the following: note BusyCal currently supports a single Todoist account. You can add one Todoist account to BusyCal at a time. 1. Choose BusyCal > Settings > Accounts. 2. Click the + (plus) button to add a new account. 3. Choose Todoist from the Server Type pop-up menu, and click OK. ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") ### Update BusyCal first if Todoist sync reports errors[​](#update-busycal-first "Direct link to Update BusyCal first if Todoist sync reports errors") If Todoist sync shows errors such as **Failed to get content**, API errors, connectivity errors, metadata errors, or a red exclamation point next to the Todoist account, make sure you are running the very latest version of BusyCal **before** trying any deeper troubleshooting. Todoist updates and retires parts of its API roughly every year, and older BusyCal builds simply cannot keep up with those changes — even a build from only a few months ago may stop communicating with Todoist's current API, despite having worked fine before. This is the most common cause of the "Failed to get content" error, so updating BusyCal is always the first step, regardless of how much other troubleshooting you have already done. **If you installed BusyCal from the Mac App Store:** 1. Open the **Mac App Store**. 2. Go to **Updates**, or search for **BusyCal** directly. 3. Install the latest available BusyCal update. 4. Relaunch BusyCal and try the Todoist account again. **If you installed BusyCal directly from BusyMac:** 1. Open BusyCal. 2. Choose **BusyCal > Check for Updates**. 3. Install the latest update. 4. Quit and reopen BusyCal. 5. Try syncing Todoist again. If you installed BusyCal through **Setapp**, update it from the Setapp app instead. If the Todoist account still shows **Failed to get content** after you have confirmed BusyCal is up to date, remove the Todoist account from BusyCal and add it again from **BusyCal > Settings > Accounts**. Quota Limits Todoist enforces request limits. BusyCal’s Todoist sync happens in multiple steps (for example: checking for changes, then syncing lists, labels, reminders, and tasks). Some actions can trigger extra checks/updates (including handling completed tasks), so making lots of changes in a short time can use up your quota quickly. If sync pauses due to Todoist quota limits, you’ll need to wait a bit and let it resume. For current limits, see Todoist’s “Request Limits / Rate Limiting” documentation: ## Known Limitations[​](#limitations "Direct link to Known Limitations") BusyCal attempts to sync all the information retrieved from Todoist, including projects (calendars in BusyCal), task dates, notes, URL, reminders, labels etc, however the following limitations apply: * Labels can currently only be created and managed from your Todoist account. These changes automatically sync with BusyCal. * Some properties are not available: Attachments, Graphics, Locations, Location URLs, Private Flag. * Location based reminders sync from Todoist → BusyCal, however you cannot currently create one from within BusyCal. * Assigning "My Alarm", "My Notes", "My Tag" or "Contact" to a Task will not sync across multiple devices running BusyCal as Todoist does not support syncing 3rd party app meta-data. * Rich-text notes will not sync across multiple devices running BusyCal. * Snoozing or dismissing alarms on one device does not sync the snooze / dismissal across other devices running BusyCal. Note that any limits that apply to your Todoist subscription plan also apply from within BusyCal. For instance, non-premium features such as adding an alarm to a task will not be available on a free account. --- # Automatic Tagging Each account added to BusyCal can have its own set of automation rules to allow automatic tagging / categorizing of incoming events. ## Creating Automation Rules[​](#creating-rules "Direct link to Creating Automation Rules") To create a new rule, open BusyCal Settings > Accounts and then select the account you wish to add one to. Next, click on the **Automation** tab. Here, you can enter the tags you wish to automatically assign to incoming events. Only events that are pulled from the server during sync will be automatically tagged. If you have multiple rules, you can drag the rule to change its position to influence its execution-order. The following additional options can be enabled for each rule: * **Assign To "My Tags"**: Enable this to add tags to "My Tags". "My Tags" are only visible to you and local to your mac. These do not sync as part of the event. Read-only events will always have tags added to this field. * **Stop processing more rules**: Enable this to stop processing additional rules in case this one succeeded in tagging the event. note These rules do not sync across your devices. This is intentional to prevent unintended duplicate actions or conflicts when syncing events from multiple sources. Each device can have its own unique automation rules, giving you full control over how events are categorized per account. --- # Combine Identical Events Identical events syncing from multiple calendars can be combined to display the first, most appropriate event. Duplicate, identical events can be an inconvenient reality. Common cases include: * **Shared calendars and meeting invites** — a meeting invitation landing on two of your accounts (for example, work and personal) that you both subscribe to in BusyCal, or an event that lives on a calendar shared with you (a colleague's, a family member's, or a project calendar) and also exists on a calendar you own. The same event then appears twice in your view. * **Overlapping holiday subscriptions** — two different but similar holiday calendars that both contain the same entries, so dates like "New Year's Day" show up twice. * **[Cross-calendar blocking events](/docs/busycal/142884-cross-calendar-blocking-events.md)** — the original event and its blocking copy share the same title and time, so combining them keeps your view clean while the blocker still protects your availability on the other calendar. ![Identical Events](https://downloads.busymac.com/resources/img/busycal-mac/identical-events.png) When you enable the option under **View menu > Combine Identical Events**, BusyCal will display a single event. You will also receive a single alarm, in case both events contained alarms. ![Combined Identical Events](https://downloads.busymac.com/resources/img/busycal-mac/combined-events.png) Depending on the sorting order of the calendar in the left panel, BusyCal will show the *most appropriate* version. For instance, if you have 3 identical events where the first is on a calendar you have *write* access to, while the other two are read-only, the first will be displayed while the other two will hide. Conversely, a read-only *meeting invite* will be preferred over a duplicate you may have created on a privately owned family calendar. Combined events do not behave or appear differently. This is deliberate. Given BusyCal gives its user the freedom to customize its appearance, fonts, text colors and more, introducing additional visual indicators or colors would defeat the purpose of decluttering your calendar. ### Identical Events[​](#identical "Direct link to Identical Events") Two events are considered identical if: * Both are Events (i.e. this does not apply to tasks, journal entries or graphics) * Titles are the same * Start and end times are the same * Stored on different calendars The only exception are Birthday and Anniversary events. BusyCal will combine all identical birthdays, even if they belong to the same calendar. Any time an event gets modified or deleted, the view automatically refreshes to re-evaluate the above criteria. Note that identical events can have different notes, locations, tags or alarms. They'd still be considered identical as long as the above listed criteria is met. This way you can modify one of the two combined events using the Info Panel and tag them differently, if you wish. ## Accessing Combine Events[​](#access-combined "Direct link to Accessing Combine Events") You may access hidden, combined events directly from the Info Panel ![Combined Identical Info Panel Picker](https://downloads.busymac.com/resources/img/busycal-mac/combined-picker.png) Click on the calendar picker displayed at the bottom to switch to a different copy. --- # Paste as Task BusyCal supports pasting text as a list of tasks ## Creating Tasks from text[​](#pasting-as-tasks "Direct link to Creating Tasks from text") Simply copy a plain-text list and use the `Paste as Task` option from the Edit menu. Each line of text will be converted into a separate task. To assign a date to the task(s), first select a day on the calendar and click Edit Menu > Paste as Task. When no date is selected, pasted task(s) will remain undated. [](https://www.busymac.com/images/new/pasteastask.mov) --- # Using BusyCal with Apple Calendar BusyCal now supports direct syncing with Apple Calendar in **read-only** mode for those instances where adding your account directly to BusyCal is not feasible. This sync capability is available in BusyCal version 2024.1.2 (macOS) or later. For BusyCal on iOS, please ensure your application is updated to version 4.5.8 or higher. ✋ IMPORTANT While BusyCal can sync with Apple Calendar, this feature is intended as a workaround rather than a primary solution. It's best used when you cannot add accounts directly to BusyCal (such as with some enterprise setups). This connection has limitations, including: * **Read-only access** - You can view but not modify events from Apple Calendar * **No meeting response capabilities** - You cannot accept/decline invites through this connection * **Limited functionality** - Many BusyCal features won't work with Apple Calendar events ## How to Sync with Apple Calendar[​](#syncing "Direct link to How to Sync with Apple Calendar") Follow these simple steps to connect BusyCal with Apple's Calendar app: 1. First, ensure your calendars are properly set up in the Apple Calendar app 2. Open BusyCal and navigate to **BusyCal > Settings > Accounts** 3. Click the "+" button to add a new account 4. Select **Apple Calendar** from the options list 5. Click **Done** to establish the connection Once connected, your Apple Calendar events will appear in BusyCal as read-only entries, allowing you to view all your calendars in one place. ## Why This Connection Is Read-Only[​](#why-not-use-built-in-sdks "Direct link to Why This Connection Is Read-Only") You might wonder why BusyCal can only sync with Apple's Calendar app in read-only mode. The reason involves technical limitations with Apple's calendar APIs. Apple provides developers with an API called [`EventKit`](https://developer.apple.com/documentation/eventkit) to access calendar data. However, **EventKit is extremely limited** and does not support many of BusyCal's advanced features, such as: * Scheduling meetings, managing attendees and related steps * Custom durations * Attachments & conference call integration * Custom alarms * Time-blocking across calendars * Smart Filters & Saved Searches * Travel time and time-to-leave alerts * Tags, custom metadata, and private fields * Custom views, weather, and location-based features * And much, much, **much** more. Far too many to list here. Using EventKit would severely limit the flexibility and functionality that makes BusyCal unique. It's like building **a full-featured web browser like Chrome** instead of just wrapping around Apple's WebKit view—power and customization matter! ## Add Accounts Directly to BusyCal[​](#addtobusycal "Direct link to Add Accounts Directly to BusyCal") For the best experience, we strongly recommend adding your calendar accounts (iCloud, Google, Exchange, etc.) directly to BusyCal rather than using this Apple Calendar sync option. This gives you full access to all of BusyCal's powerful features without limitations. --- # Using BusyCal with Office 365 (Microsoft Graph) In our continuous effort to enhance BusyCal's connectivity and feature set, we have transitioned our syncing mechanism for Office 365 accounts to utilize Microsoft Graph API, Microsoft's latest sync offering. **Why the Change?** Microsoft Graph represents the next generation in Microsoft's cloud services, offering broader capabilities and better security than its predecessor, Exchange Web Services (EWS). Microsoft has announced a phased Exchange Online EWS retirement: initial blocking starts on **October 1, 2026**, with full shutdown on **April 1, 2027**. By adopting Microsoft Graph, BusyCal ensures continued compatibility with Office 365 and Outlook. **What's Different?** While the core functionality of syncing calendars, events and tasks remains the same, Microsoft Graph enables enhanced performance and compatibility with Outlook and its newest offerings, such as receiving updates from Microsoft Bookings and creating one-click conference calls with Microsoft Teams, features that are otherwise not available via EWS. ## Personal Outlook[​](#personal "Direct link to Personal Outlook") When it comes to personal Outlook accounts, including those on outlook.com, hotmail.com, and similar non-enterprise services, the integration process is slightly distinct. Microsoft has phased out basic authentication methods (such as passwords) for these accounts in favor of more secure authentication protocols. This change aims to enhance security for personal users by reducing the reliance on passwords, which are vulnerable to various security threats. As a result, BusyCal's connection to personal Outlook accounts leverages modern authentication techniques, ensuring a secure and streamlined experience for managing your calendars and tasks. This adjustment ensures that personal Outlook accounts benefit from the same robust Microsoft Graph connectivity as enterprise accounts. ## Syncing Calendars and Tasks[​](#syncing "Direct link to Syncing Calendars and Tasks") To sync BusyCal with your Office 365 account via Microsoft Graph, follow these steps: note BusyCal supports multiple Microsoft Graph accounts of the same type. You can add more than one Office 365 or Outlook account, including accounts from separate organizations, and view them side by side in BusyCal. 1. Open **BusyCal > Settings > Accounts**. 2. Click the + (plus) icon to add a new account. 3. Select Office 365 (Microsoft Graph) from the Server Type menu, enter your email address, then click OK. 4. Follow any additional prompts to complete the setup. Once configured, BusyCal will begin syncing with your Office 365 account via Microsoft Graph. important In case you're prompted to provide Admin Consent during the authentication process, you would need to reach out to your Office 365 admin and ask them to grant BusyCal permission to connect to your account. We have detailed instructions on how to [grant BusyCal access using the Azure Portal](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md). ## Flagged Emails Appearing as Tasks[​](#flagged-emails "Direct link to Flagged Emails Appearing as Tasks") Microsoft may include a **Flagged Emails** task list when you connect your account. Older flagged emails that are still incomplete can then appear as overdue tasks in BusyCal, including after switching from an older Exchange connection. See [Why are old Outlook emails appearing as tasks in BusyCal?](/docs/faqs/outlook-flagged-emails-appearing-as-tasks.md) to hide this list without changing your Outlook messages or flags. ## Handle Invitations in Outlook While Viewing Events in BusyCal[​](#handle-invitations-in-outlook "Direct link to Handle Invitations in Outlook While Viewing Events in BusyCal") You can keep Microsoft 365 events visible in BusyCal while excluding selected calendars' invitations from the BusyCal Inbox. See [How can I hide meeting invitations from one calendar?](/docs/faqs/hide-meeting-invitations-from-calendar.md). ## Meeting Rooms[​](#rooms "Direct link to Meeting Rooms") If your Office 365 account has conference rooms or other bookable resources configured by your organization, BusyCal can show them directly in the Info Panel when editing an event. ![Workspace Rooms](https://downloads.busymac.com/resources/img/busycal-mac/roomoffice.png) A **Rooms** picker appears in the Info Panel for events on supported Microsoft 365 accounts. From here you can: * **Browse available rooms** — Rooms are listed with their name, building, floor, and seating capacity. * **See live availability** — BusyCal queries room free/busy status for the event's time window so you can tell at a glance which rooms are free. * **Add or remove rooms** — Click the popup to select a room. Selected rooms are automatically added as resource attendees on the event. note This feature requires a Microsoft 365 enterprise or organizational account with room resources provisioned by the admin. It is not available on personal Outlook.com or Hotmail accounts. If your account has rooms configured but the tile does not appear, try removing and re-adding the account in **BusyCal > Settings > Accounts** to re-authenticate with the required permission scopes. ## Resources[​](#resources "Direct link to Resources") Conference rooms, printers, and other resources on a Microsoft Graph / Exchange server can also be added to events in BusyCal as an **attendee**. Simply type the name of the resource in the Attendees field and it will auto-complete for you. You can then click on the "Available Meeting Times" option to open the [Availability Viewer](/docs/busycal/70616-free-busy-availability-viewer.md). tip For conference rooms, the dedicated [Rooms picker](#rooms) above provides a more convenient way to browse and pick rooms with live availability. The attendee approach remains useful for non-room resources such as projectors, vehicles, or other equipment. ## Microsoft Teams Conference Calls[​](#teams "Direct link to Microsoft Teams Conference Calls") With version 2023.1.3 and above, you can add one-click Teams meetings to events / invitations. Simply open BusyCal Settings > Info Panel and make sure you have checked the **Microsoft Teams** option to show. You should now see a *Add Meeting* button appear in the Info Panel when editing events. Clicking on this button will automatically create a conference call (using Teams) and add it to the event. Please be aware that this functionality is contingent on specific account settings. It is available for Enterprise Office 365 accounts that have not restricted Teams access via the Office 365 Portal. Additionally, the visibility of this feature depends on the absence of administrative restrictions on your calendar. For those using Personal Outlook accounts, look for the *Add Skype* call option instead, allowing for easy incorporation of Skype calls into your events. ![Add Teams meeting](https://www.busymac.com/images/bcl-teams-add-meeting.png) After clicking on the *Add Meeting* button, a meeting is automatically added for you during the next time the app performs syncs. ![Join Teams meeting](https://www.busymac.com/images/bcl-teams-join.png) ## Shared Calendars[​](#sharedcalendars "Direct link to Shared Calendars") important Some secondary calendars created a long time ago on Exchange (and still visible via EWS) will not be available via Microsoft Graph. Overall however, you should see the same calendars in BusyCal that you do in Outlook, for instance. If there are some shared calendars not syncing through, you may need to separately configure these in BusyCal: * Open BusyCal Settings, click on the **Accounts** tab * Select the account in the left panel, then on the **Sharing** tab * Click **+** and then enter the email address of the person that has *shared their calendars with you* * Close Settings and click View > Refresh to sync Shared calendars should now appear in the left panel. In some situations, you may see duplicate calendars in the left panel for the same user that has shared their calendars with you. This is because the server is syncing these normally as well as separately via the sharing setting. The only workaround is to: * `CTRL+Click` (right-click) on the duplicate calendar name in the left panel * Click **Unsubscribe** * Now, from the View menu, disable the *Show unsubscribed calendars* option This way you will only see a single shared calendar. In case you're still unable to see certain calendars shared with you, please note that Microsoft Servers treat calendars shared via Outlook differently than those share from the Exchange Portal. Another idea would be to: * Ask the person who has shared the calendar with you to open the Outlook app * Click on the ... button next to the calendar name and then on **Sharing Permissions...** * Change Sharing permissions to something else, then back to what they were. **NOTE:** the minimum permission required is *Can view all details*. Click Done. * Now open your Mail and accept the calendar they've shared with you (i.e. the updated calendar) This may assist in configuring the calendar in a way that it appears in BusyCal during the next sync. ## Group Calendars[​](#groupcalendars "Direct link to Group Calendars") BusyCal supports Microsoft Group Calendars out of the box. Any groups you're a member of will automatically appear in the left calendar panel, typically as a calendar named **"Calendar"**. When adding a `Office 365` Microsoft Graph account to BusyCal, you must make sure that you have enabled the `Enable access to Group Calendars` option in the New Account setup dialog. > **Note:** You may need to remove and re-add your Microsoft account in BusyCal to re-authenticate and grant the additional permission scopes required to access Group information. In case this requires admin-approval, follow our step-by-step guide to [grant BusyCal access using the Azure Portal](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md). important Microsoft 365 Group calendars in Graph can be read and written with delegated permissions (for example, `Group.ReadWrite.All`). In BusyCal, availability depends on the permissions granted to the signed-in user and any tenant policy restrictions. ## Microsoft Graph Limitations[​](#limitations "Direct link to Microsoft Graph Limitations") While the Microsoft Graph API represents Microsoft's latest offerings, it continues to evolve. It offers significant improvements over Exchange Web Services (EWS) across several fronts, including better security, more flexibility, and broader feature support. However, the transition towards fully adopting Microsoft Graph in place of EWS is still underway and you may find a few differences. The most glaring worth mentioning: #### Categories[​](#categories "Direct link to Categories") Outlook categories sync with BusyCal on Office 365 accounts. If a category is added, recolored, or removed somewhere else — in Outlook on the web, for example — the change reaches BusyCal within a few minutes. Choose **View > Refresh** to pick it up right away. Microsoft keeps one category list per mailbox, shared by Mail, Calendar, Contacts, and Tasks. A category created by any app on the account appears in every app's category picker, including tags you create in BusyContacts, which sync as categories on that same shared list. This is how Microsoft designed categories to work, so there is no way to keep separate lists per app. Removing a category from the list in Outlook removes it everywhere, though items that carried it keep working normally. BusyCal shows category colors from Microsoft's official category palette — the same colors classic Outlook for Windows uses. The new Outlook and Outlook on the web display softened, pastel versions of those colors, so a category's exact shade can look a little different between BusyCal and the web. It is the same underlying color. A category with no color assigned appears without a color in BusyCal, and its events simply keep their calendar's color. #### Birthdays Calendar Read-Only[​](#birthdays-read-only "Direct link to Birthdays Calendar Read-Only") The `Birthdays` calendar is read-only when syncing via Microsoft Graph. It appears as a subscription and cannot be edited in BusyCal. This calendar was previously editable when connected via EWS. #### Possibly slow, initial sync[​](#slow-initial-sync "Direct link to Possibly slow, initial sync") An initial sync can take several hours, and a large calendar with thousands of events may need to run overnight. BusyCal retrieves full event details from Microsoft Graph in batches of up to 20. Microsoft may split the initial event list into many pages or temporarily slow requests, so BusyCal can continue to show **Syncing** while data is still arriving. Events are not guaranteed to arrive in date order, so your calendar may look incomplete until the first sync finishes. See [Why is the first Microsoft Graph sync taking so long?](/docs/faqs/microsoft-graph-initial-sync-taking-a-long-time.md) for steps to help the sync complete and ways to reduce a large calendar history. #### Due Times for Tasks[​](#exchange-due-times "Direct link to Due Times for Tasks") BusyCal's Microsoft task sync reliably round-trips due dates. For due-time workflows, BusyCal preserves additional task metadata using [Extended Sync](/docs/busycal/144591-syncing-extended-task-properties.md) between BusyCal clients. #### Sharing Secondary Calendars Limitations[​](#sharing-secondary-calendars "Direct link to Sharing Secondary Calendars Limitations") To share a secondary calendar with someone (in Outlook), you must also share your primary calendar with them, with at least Availability access. Once you’ve granted someone Availability access or higher to your primary calendar, you can share secondary calendars with them. #### Free/Busy Availability Viewer Limitations[​](#free-busy-availability-viewer "Direct link to Free/Busy Availability Viewer Limitations") Only events on your primary calendar affect your availability. Events stored on secondary calendars do not affect your availability and do not appear in the [Availability Viewer](/docs/busycal/70616-free-busy-availability-viewer.md) as blocking your free time. #### Floating Times Unavailable[​](#floating-times "Direct link to Floating Times Unavailable") [Floating Times](/docs/busycal/70609-time-zones.md#option-3) are not supported by Exchange. If you create an event in floating time in BusyCal, it appears in GMT time in other apps. #### Alarm Limitations[​](#alarms "Direct link to Alarm Limitations") * Exchange allows only one alarm per event. * Exchange does not allow Alarms to trigger after an event's start time. If you create an alarm that triggers after the start of an event, it is converted to an “At start” alarm after syncing with Exchange. #### Repeating Event Limitations[​](#repeating-events "Direct link to Repeating Event Limitations") * If you create a repeating event with a recurrence rule that is illegal on Exchange, it is modified during syncing to be compatible with Exchange and your local copy is updated to match Exchange. * Exchange doesn’t allow detached events (or alarms) to overlap the next/previous occurrence of the event. * Exchange doesn’t allow "undoing" the cancellation or deletion of particular occurrences. If you delete an occurrence in BusyCal and perform undo, Exchange will revert the change during sync. #### Attachments Limitations[​](#attachments "Direct link to Attachments Limitations") * Attachments are currently only supported for Events. Support for attachments for Tasks is coming soon. #### Public Calendars / Folders Unavailable[​](#public "Direct link to Public Calendars / Folders Unavailable") * There does not seem to be a way to explore and subscribe to public calendars / folders at the moment. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") If you are unable to connect to your account or you're being prompted for *Admin Consent*, you need to reach out to your Office 365 admin and ask them to grant BusyCal permission to connect to your account. We have detailed instructions on how to [grant BusyCal access using the Azure Portal](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md). --- # 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**](#blocking-events) — 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**](#automatic-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[​](#blocking-events "Direct link to Block on Another Calendar") To block time on another calendar based on an existing event: 1. Select and Ctrl+click on any event. 2. Select a calendar from the **Block on calendar** sub-menu. 3. 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. tip 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. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/blocking_event_web.webm) important 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[​](#automatic-rules "Direct link to 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[​](#automation-editor "Direct link to Opening the Automation Editor") To configure rules for a calendar: 1. In the sidebar, *Ctrl+click* on the calendar you want to mirror events **from** and choose **Get Info**. ![Edit Calendar](https://downloads.busymac.com/resources/img/busycal-mac/sidepanel-editcal.png) 2. Switch to the **Automation** tab at the top of the calendar info dialog. 3. Click **Add New Rule** to create a new rule, or edit any existing rule already listed. ### Configuring a Rule[​](#rule-options "Direct link to 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. ![New Automation Rule](https://downloads.busymac.com/resources/img/busycal-mac/calnewautorule.png) ### Choosing When the Rule Applies[​](#rule-schedule "Direct link to 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**](/docs/busycal/70607-preferences.md#general-preferences) (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. tip 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[​](#rule-trigger "Direct link to 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. important 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. Works with externally created events too 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](/docs/busycal/70624-mcp.md) — 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](/docs/busycal/70624-applescript.md) — 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[​](#manual-and-automatic "Direct link to 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[​](#automation-sidebar-indicator "Direct link to 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. ![Edit Calendar](https://downloads.busymac.com/resources/img/busycal-mac/sidepanel-autorules.png) ### Limitations and Notes[​](#automation-limitations "Direct link to 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. Rules sync across your devices 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: 1. **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. 2. **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[​](#hiding-blocking-events "Direct link to 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](/docs/busycal/133794-combine-identical-events.md). ## Unblocking an Event[​](#unblocking-events "Direct link to 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[​](#travel-time "Direct link to Travel Time in Blocking Events") If the original event has [travel time](/docs/busycal/70603-locations-maps-travel-time.md#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. ![Time Blocking Event with Travel Time Included](https://downloads.busymac.com/resources/img/busycal-mac/block-travel.png) 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. | note 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[​](#suppressing-footer "Direct link to 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:[​](#for-direct-download-and-app-store-users "Direct link to For Direct Download and App Store Users:") ``` defaults write com.busymac.busycal3 suppressTimeBlockingNoteFooter -bool true ``` #### For Setapp Users:[​](#setapp-users "Direct link to 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. --- # Quick Edits Discover a variety of powerful batch editing options available in BusyCal under the Edit menu. New in v2024.3.4: Quickly create events by clicking on an empty spot between events to span a new event across them. You can also manually select two events on the calendar to create a new event between them. [YouTube video player](https://www.youtube.com/embed/vJs6WUbkk-c?si=lD37xxrDil67rju3) You can also now select events and align their start / end dates with other events. [YouTube video player](https://www.youtube.com/embed/kVHchWMvg2I?si=j7ymUfk1bOpc_Sjd) --- # Syncing Extended Task Properties BusyCal can sync extended properties for Tasks such as due time, priority, and more with services that do not natively support these features. This feature is designed to enhance your experience (and productivity) by ensuring that all relevant task details are preserved across different devices and platforms, using BusyCal. ## How It Works[​](#how-it-works "Direct link to How It Works") There are multiple task management services available, such as Google Tasks, Outlook, and Todoist, each with unique features and limitations. Notably, Google Tasks has not evolved over the last decade despite user feedback. BusyCal addresses this issue by ensuring consistent feature synchronization across all devices and accounts, reducing user dependency on understanding each service’s specific constraints and limitations. The ultimate goal is to allow users to set properties such as priorities, due times, statuses, etc., without stopping to think if this feature is supported and have these reliably sync across devices. BusyCal achieves seamless synchronization by appending special tags to the notes section of tasks. Some of these supported tags are: * **@duration:900** Specifies the task duration in seconds. Example: 900 seconds for 15 minutes. * **@starred** Indicates whether a task is starred. * **@priority:low/medium/high** Marks the task priority as low, medium, or high. * **@duetime:HH:mm** Sets the exact time a task is due. Format: HH :MM in military time. * **@status:inprogress/cancelled/needsaction** Sets the task status, such as needs action, in progress, or cancelled. Modifying or removing these tags directly within the notes will result in changes to the associated task properties in BusyCal on the next sync, allowing for dynamic updates across your devices. note This is both a powerful feature and a potential source of errors if not handled carefully. Users are advised to modify these tags with caution to avoid unintended changes. ## Feature Matrix[​](#feature-matrix "Direct link to Feature Matrix") This table marks with a ✓ where a feature is natively supported and with a ✗ where it’s not. | Feature | Google Task | Todoist | Outlook / Exchange / Microsoft Todo | Reminders | CalDAV | | --------- | ----------- | ------- | ----------------------------------- | --------- | ------ | | Priority | ✗ | ✓ | ✓ | ✓ | ✓ | | Due Time | ✗ | ✓ | ✗ | ✓ | ✓ | | Durations | ✗ | ✓ | ✗ | ✗ | ✗ | | Starred | ✗ | ✗ | ✗ | ✗ | ✗ | | Status | ✗ | ✗ | ✓ | ✗ | ✓ | --- # Widgets BusyCal includes a set of widgets you can add from macOS’s widget gallery. Widgets are designed for quick “at a glance” viewing of your schedule and tasks, and most widgets open BusyCal when you click them. note Widget appearance (Light/Dark/Automatic) is controlled by the system. Widgets follow your macOS appearance and cannot be forced to a different mode from within BusyCal. ## Widget Sizes[​](#widget-sizes "Direct link to Widget Sizes") BusyCal widgets are available in different sizes depending on the widget: * **Small** — quick glance (single day / single item) * **Medium** — more detail (more items or a wider calendar grid) * **Large** — the most detail (multi-day lists or multi-week grids) ## Common Widget Options[​](#common-widget-options "Direct link to Common Widget Options") Depending on the widget you choose, you may be able to configure options such as: * Show **events**, **tasks**, or both * Show **weather** (where applicable) * Calendar display style (for example: **heat map** vs **dots**) * Highlight **weekends** / **current week**, show **week numbers** * Font size and title wrapping ## Widgets[​](#widgets "Direct link to Widgets") ### Upcoming Widgets[​](#upcoming-widgets "Direct link to Upcoming Widgets") These focus on “what’s next” and near-term schedule details. * **Current & Upcoming** (Small) — shows today’s date (and optional weather), what’s happening right now (or that you’re free), plus your next upcoming item. * **Up Next** (Small, Medium) — shows a compact list of upcoming items starting with your next event or task (with an optional date/weather header). * **Up Next + Calendar** (Medium) — shows “Up Next” alongside a compact month calendar grid for added context. * **Events List** (Medium, Large) — shows today’s date (and optional weather) plus a list of upcoming items. This widget also shows “banners” (such as birthdays and holidays). The Large size includes a calendar grid above the list. * **Agenda** (Large) — an agenda-style list of upcoming days, grouped by date, including events, tasks, and banners. * **Two Days** (Medium, Large) — shows today and tomorrow together. ### Calendar Grid Widgets[​](#calendar-grid-widgets "Direct link to Calendar Grid Widgets") These show your schedule in a more “calendar-like” grid. * **Calendar** (Small, Medium) — a month calendar grid. The Small size shows one month; the Medium size shows two months (current and next). Activity can be shown as dots or a heat map. * **Three Days** (Medium, Large) — a compact multi-day grid view. * **This Week** (Medium, Large) — a week-at-a-glance grid. * **Two Weeks** (Medium, Large) — a two-week grid for a wider planning horizon. * **Three Weeks** (Large) — a three-week grid for longer-range planning. ### Task Widgets[​](#task-widgets "Direct link to Task Widgets") * **Tasks** (Small, Medium, Large) — a task-focused widget that shows upcoming (incomplete) tasks. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") macOS widgets display calendar data stored on your Mac and do not sync accounts themselves. Keep the main BusyCal app running for changes from Outlook, iCloud, and other services to reach the widgets. You can close its window with `Command-W` or the red close button while it continues syncing. Running only the BusyCal Menu app is not enough. If your widgets appear blank, fail to update, or show "Please launch BusyCal", try the following steps: ### 1. Check Background Permissions[​](#1-check-background-permissions "Direct link to 1. Check Background Permissions") Widgets use background processes to read locally stored data. Ensure BusyCal is allowed to run in the background: 1. Open **System Settings > General > Login Items & Extensions**. 2. Under "Allow in the Background", ensure **BusyCal** is enabled. ### 2. Reboot Your Mac[​](#2-reboot-your-mac "Direct link to 2. Reboot Your Mac") macOS manages widget updates, and sometimes the system's widget service can get stuck. A simple restart of your Mac often resolves blank or non-updating widgets. ### 3. Launch BusyCal[​](#3-launch-busycal "Direct link to 3. Launch BusyCal") If the widget says "Please launch BusyCal," open the main app to refresh the data used by the widgets and leave it running for ongoing account syncing. ### 4. Interactive Widgets[​](#4-interactive-widgets "Direct link to 4. Interactive Widgets") You can complete tasks or switch months directly from the widget without opening the app. Note that **Interactive Widgets** require **macOS 14 (Sonoma)** or later. On older macOS versions, clicking a widget will simply open BusyCal. --- # Getting Started with BusyCal for Mac This tutorial walks you through setting up BusyCal and covers its main features. ## Introduction[​](#introduction "Direct link to Introduction") BusyCal is a calendar and task management app for macOS (optimized for Apple Silicon) with features beyond the built-in Calendar and Reminders apps. Key features include customizable calendar views, integrated tasks that display in the calendar and carry forward until completed (can be disabled), an embedded Info Panel for viewing and editing events, support for graphics, weather and moon phases, a menu bar app for quick access to your day's events, and more. ## Setup Assistant[​](#setup-assistant "Direct link to Setup Assistant") After installing the [BusyCal trial](/busycal/), or purchasing it, open BusyCal and you’re presented with the Setup Assistant. This is only presented to you the first time, as it walks you through a number of steps, including requests for permission to perform the following functions: * **Access to Contacts** — BusyCal requires access to Contacts for displaying birthdays, death anniversaries, meeting invitations, and email alarms, and for intelligently auto-completing addresses. * **Access to Location Services** — BusyCal requires access to Location Services for displaying real-time weather at your current location. * **Access to Reminders** — BusyCal requires access to the Reminders app to seamlessly sync and display all your tasks. If you skipped past the setup assistant, don't worry - simply open System Settings on your Mac, navigate to Privacy & Security, and grant BusyCal access to Contacts, Location Services, and Reminders. ## Syncing with iCloud, Exchange, and Google Calendar[​](#syncing-with-icloud-exchange-and-google-calendar "Direct link to Syncing with iCloud, Exchange, and Google Calendar") Once you’ve completed the setup assistant, the next step is to add your individual accounts to BusyCal, such as iCloud, Google, Office 365, Fastmail, Zimbra, and others. For security reasons, BusyCal cannot automatically access account details already stored in macOS System Settings. You will need to add these accounts manually under **BusyCal Settings > Accounts**. tip If you’re setting up BusyCal on a new Mac and have used it on another device before, a list of your added accounts will appear under **BusyCal Settings > Accounts**. Simply click *Use Account* and re-enter your credentials when prompted. If no accounts are listed, you can add them manually by clicking the `[+]` button under **BusyCal Settings > Accounts**. note BusyCal cannot sync or automatically import *On My Mac* calendars from Apple Calendar (i.e. calendars that are not otherwise stored on iCloud). To bring these events into BusyCal, you’ll need to manually export your On My Mac events from Apple Calendar and then import [them into BusyCal](/docs/busycal/70618-exporting-importing-and-merging-calendars.md#importing-ics-files). ## Syncing with an iOS Device[​](#syncing-with-an-ios-device "Direct link to Syncing with an iOS Device") BusyCal syncs with the built-in Calendar and Reminders apps on iOS, as well as with BusyCal for iOS, through cloud services (iCloud, Exchange, Google, or CalDAV servers). If you're already syncing calendars between your Mac and iOS device through a cloud service, your iOS device will sync with BusyCal once you configure the same account. BusyCal syncs calendars with an iOS device only through cloud-based services. BusyCal does not sync local “On My Mac” calendars with an iOS device. For more information, see [Syncing BusyCal with an iOS Device](/docs/busycal/70623-syncing-busycal-with-an-ios-device.md). ## Calendar Panel (Left Panel)[​](#calendars "Direct link to Calendar Panel (Left Panel)") The Calendar List in the left sidebar displays all your calendars in an organized, easy-to-navigate layout. If the sidebar isn't visible, choose **View > Show Calendar List**, press `⌘-Option-C`, or click the Hide/Show Calendar List button on the left side of the toolbar. ![Hide / Show Calendar List](https://downloads.busymac.com/resources/img/busycal-mac/show_hide_leftpanel.png) Calendars are grouped by source: * **On My Mac** — Calendars stored locally on your Mac for private events and offline access. * **iCloud, Google, Exchange, etc.** — Calendars hosted on cloud servers such as iCloud, Google Calendar, Exchange, Fruux, or other CalDAV servers. * **Other** — Special calendars displaying birthdays, death and wedding anniversaries from macOS Contacts or BusyContacts, plus read-only subscriptions from WebDAV servers, such as holiday and sports calendars. To change the color of a calendar (and all its events), *Control-click* the calendar and choose a color from the Color submenu. ![Calendar Color Menu](https://downloads.busymac.com/resources/img/busycal-mac/pick_cal_color.png) ## Views[​](#views "Direct link to Views") BusyCal provides several views: [Day](/docs/busycal/70587-day-view.md), [Week](/docs/busycal/70588-week-view.md), [Month](/docs/busycal/70589-month-view.md), [Year](/docs/busycal/70590-year-view.md), and [List](/docs/busycal/70591-list-view.md). Click the toolbar buttons to switch between them. **Year view** is especially useful as a year overview for planning. It can also be switched into a **Year Planner** layout and customized with different display styles and highlights — see [Year View](/docs/busycal/70590-year-view.md). ![View Buttons](https://downloads.busymac.com/resources/img/busycal-mac/view_switch_control.png) ### Scrolling Views[​](#scrolling-views "Direct link to Scrolling Views") You can scroll the view a full page at a time, or incrementally. To jump back to the current day, week, or month, click the Today button or choose **View > Go To Today** (`⌘-T`). ![Today Button](https://downloads.busymac.com/resources/img/busycal-mac/today_button.png) Click the navigation arrows to scroll forward/backward by one page (e.g. a month in Month view or a week in Week view), or Option-click them to move by smaller increments. You can also scroll with your trackpad, Magic Mouse, or scroll wheel. For keyboard navigation, see [Calendar Navigation Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md). ### Customizing the Number of Weeks per Month and Days per Week[​](#customizing-the-number-of-weeks-per-month-and-days-per-week "Direct link to Customizing the Number of Weeks per Month and Days per Week") You can choose the number of weeks to show in the Month View (from 1–12 weeks) by choosing **View > Weeks** in Month and choosing from the available options. This is particularly useful when you’re nearing the end of the month and want to see what’s ahead without having to scroll to the next month. You can also `CTRL+Click` (right-click) on the **Month** view-selector button in the navigation area to reveal a menu. ![View Menu Weeks in Month](https://downloads.busymac.com/resources/img/busycal-mac/weeks_in_month_nav.png) Likewise, you can choose the number of days to show in Week View (from 2–14 days) by choosing **View > Days** in Week and choosing from the available options, or `CTRL+Click` (right-click) on the **Week** view-selector button in the navigation area to reveal a menu. ![View Menu Days in Week](https://downloads.busymac.com/resources/img/busycal-mac/days_in_week_menu.png) Here's a video demonstrating this: [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/days_in_week_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/days_in_week_web_omm.png) ### Changing Number of Hours Viewed in Day & Week Views[​](#changing-number-of-hours-viewed-in-day--week-views "Direct link to Changing Number of Hours Viewed in Day & Week Views") You can choose how many hours are displayed in **Day** and **Week** views, from **4 to 24 hours**. [Learn more here](/docs/busycal/70587-day-view.md). #### Adjusting Hours Directly in the Calendar View[​](#adjusting-hours-directly-in-the-calendar-view "Direct link to Adjusting Hours Directly in the Calendar View") You can also dynamically adjust the visible hours on-the-fly while using **Day** or **Week** view: * **Option + Scroll** – Hold `Option` and scroll up/down anywhere to zoom in/out. * **Timeline Scroll** – Hover over the left-side time ruler and scroll: * Scroll **up** to zoom in (show fewer hours). * Scroll **down** to zoom out (show more hours). * **Click + Drag** – Click and drag on the **left-side time ruler** to manually adjust the hours displayed. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/show_more_hours_day_view2_web.webm) ### Show Working Hours Only[​](#show-working-hours "Direct link to Show Working Hours Only") If you want to focus on your **working hours** and hide the rest: Use the **Working Hours** toggle button in the toolbar (next to the date switcher) to quickly collapse hours outside your **Day Start** and **Day End** settings. This setting is remembered per [Smart Filter](/docs/busycal/70612-smart-filters.md), so switching views can automatically toggle working hours on or off. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/toggle_work_hours_web.webm) ### Customizing the Calendar Appearance[​](#customizing-the-calendar-appearance "Direct link to Customizing the Calendar Appearance") You can customize your calendar's appearance—font face and size, time format, and other visual options—in **BusyCal > Settings > Appearance**. ![Appearance Settings](https://downloads.busymac.com/resources/img/busycal-mac/settings_appearance.png) Additional appearance settings can be customized under [**BusyCal > Settings > Accessibility**](/docs/busycal/70607-preferences.md#appearance-preferences). ![Accessibility Settings](https://downloads.busymac.com/resources/img/busycal-mac/settings_accessibility.png) For more information, see [Appearance Settings](/docs/busycal/70607-preferences.md#appearance-preferences). ## Weather[​](#weather "Direct link to Weather") While we’re on the subject of customizing the appearance of your calendar, you may have noticed the 8-day weather forecast and moon phases that appear in the calendar. You can customize these settings by choosing **BusyCal > Settings > Weather**. ![\[Weather Settings](https://downloads.busymac.com/resources/img/busycal-mac/setting_weather.png) ### Weather Graphics[​](#weather-graphics "Direct link to Weather Graphics") You can choose one of three different formats for the weather graphics: Small, Large, or Background: ![Weather Icons](https://downloads.busymac.com/resources/img/busycal-mac/weather_icons.png) ![Weather Background](https://downloads.busymac.com/resources/img/busycal-mac/weather_background.png) ### Moon Graphics[​](#moon-graphics "Direct link to Moon Graphics") And you can display moon phases in three different formats: Realistic, Symbols, or Astrological: ![Moon realistic](https://downloads.busymac.com/resources/img/busycal-mac/moon_real.png) ![Moon Symbols](https://downloads.busymac.com/resources/img/busycal-mac/moon_symb.png) ![Moon Astrological](https://downloads.busymac.com/resources/img/busycal-mac/moon_astro.png) For more information, see [Weather](/docs/busycal/70602-weather.md). ## Events[​](#events "Direct link to Events") BusyCal supports the following event types: * **Banner** — An all-day event that can span multiple days. * **Event** — An event with a start and end time. * **Dated Task** — A task with a due date that appears in the calendar and/or Task List. See [Tasks](/docs/busycal/70594-tasks.md) for more information. * **Timed Task** — A task with a due date and time that appears in the calendar and/or Task List. See [Tasks](/docs/busycal/70594-tasks.md) for more information * **Undated Task** — A task with no due date that appears only in the Task List. See [Tasks](/docs/busycal/70594-tasks.md) for more information. * **Sticky** — A floating yellow sticky note attached to a date. * **Journal** — A Journal event is similar to an all-day event. It occurs on a date, but has no start or end time, and does not occupy any time in your calendar. Journal events can be useful for recording information that occurred on a specific date, such as the details of a discussion, a list of accomplishments, or a diary entry. * **Graphic** — A floating graphic attached to a date. Graphics may also be attached to events. See [Graphics](/docs/busycal/70598-graphics.md) for more information. To create a new event, double-click on a date in the calendar, choose **File > New Event**, *Control-click* on a day and choose **New Event**, or press `⌘-N`. (You can create other event types using the File menu, by *Control-clicking*, or using keyboard shortcuts.) You can edit event details in the Info Panel (described just ahead). For more information, see [Event Types](/docs/busycal/70593-event-types.md). ## Info Panel[​](#info-panel "Direct link to Info Panel") BusyCal includes an Info Panel for viewing and editing event details, which may appear in any of three locations: in the righthand sidebar, as a floating window, or as a popover in the main calendar view. You can move between fields on the Info Panel with the Tab key. ### Info Panel in Sidebar[​](#info-panel-in-sidebar "Direct link to Info Panel in Sidebar") The Info Panel can appear in the righthand sidebar, where it’s always available when an event or task is selected. To display the Info Panel in the sidebar if it’s not currently visible, click the Hide/Show Task List button, choose **View > Show/Hide Task List**, or press `⌘-Option-T`. (The pop-up menu on the right side of the Hide/Show Task List button lets you select whether the right sidebar shows the Task List, the Info Panel, or both.) ![Hide or Show Task List](https://downloads.busymac.com/resources/img/busycal-mac/main_right_panel_button.png) ![Info Panel Embedded](https://downloads.busymac.com/resources/img/busycal-mac/right_panel_info_tasklist.png) ### Info Panel as Popover[​](#info-panel-as-popover "Direct link to Info Panel as Popover") Alternatively, the Info Panel can appear as a popover, which disappears as soon as you click outside it. To display the Info Panel as a popover, first go to **BusyCal > Settings > Info Panel** and make sure the **Display Info Panel in floating window** checkbox is deselected. Then: * If the Info Panel in the righthand sidebar is hidden (see above), the popover appears when you select an event in the calendar or a task in the Task List and press `⌘-Return`, or double-click an event in the calendar or a task in the Task List. If **Open Info Panel for new events** is selected in **BusyCal > Settings > Info Panel**, the popover also appears when you create a new event or task. * If the Info Panel in the righthand sidebar is visible (see above), the popover never appears. ![Info Panel as popover](https://downloads.busymac.com/resources/img/busycal-mac/cal_popover.png) ### Info Panel as Floating Window[​](#info-panel-as-floating-window "Direct link to Info Panel as Floating Window") The Info Panel can also appear as a movable, resizable, floating window. To display the Info Panel as a floating window, first go to **BusyCal > Settings > Info Panel** and select the **Display Info Panel in floating window** checkbox. Then: * If the Info Panel in the righthand sidebar is hidden (see above), the floating window appears when you select an event in the calendar or a task in the Task List and press `⌘-Return`, or double-click an event in the calendar or a task in the Task List. If **Open Info Panel for new events** is selected in **BusyCal > Settings > Info Panel**, the floating window also appears when you create a new event or task. * If the Info Panel in the righthand sidebar is visible (see above), the floating window appears only when you double-click an event in the calendar or a task in the Task List. ![Info Panel floating window](https://downloads.busymac.com/resources/img/busycal-mac/info_map.png) tip Need to keep event details visible while you continue navigating your calendar? You can open event details in a separate window at any time. See [Get Info in New Window](/docs/busycal/70595-info-panel.md#get-info-in-new-window). ### Customizing the Info Panel[​](#customizing-the-info-panel "Direct link to Customizing the Info Panel") The Info Panel is customizable. You can choose to show just the basics, or add additional fields like tags, graphics, or attachments. tip Choose **BusyCal > Settings > Info Panel** and check **Open Info Panel for new events** to automatically open an Info Panel popover (or selecting the title in the embedded Info Panel, if visible) when creating a new event. For more information, see [Info Panel](/docs/busycal/70595-info-panel.md). ### Smart Date Editing[​](#smart-date-editing "Direct link to Smart Date Editing") The date and time fields in the Info Panel support natural language input. Instead of clicking through a calendar to find the right date, you can type expressions like `tomorrow morning`, `next fri`, `april 19`, or `w19` and BusyCal instantly suggests matching dates. You can also use compact formats like `d25` (December 25) or combined date and time input like `wed 8:30a`. For the full list of supported formats, see [Date Picker](/docs/busycal/date-picker.md). ## Suggestions as Templates[​](#suggestions "Direct link to Suggestions as Templates") BusyCal can suggest existing events and tasks as templates while you create or edit an event. Start typing to see matching past and future events. When you select a suggestion, properties from that event—title, time of day, alarms, attendees, and optionally notes—are copied to your new event, making it quick to recreate recurring meetings or appointments. ![Event Suggestions](https://downloads.busymac.com/resources/img/busycal-mac/suggest_info_panel.png) Suggestions automatically appear as you type in the Info Panel, Month View, Week View, and Day View. By default, all subscribed calendars are searched for suggestions (except holiday calendars), but you can customize this behavior in **Settings > Suggestions** to search only enabled calendars or to select which properties should be included when applying a template. For more information, see [Suggestions as Templates](/docs/busycal/event-suggestions.md). ## Tasks[​](#to-dos "Direct link to Tasks") Tasks in BusyCal appear directly in your calendar on their due dates, or in the Task List in the right sidebar. Tasks can be dated or undated. Dated tasks show up in the calendar on their due date; while **Show dated Tasks in calendar** is on, you can turn off **Include All-Day Tasks** in [Task Settings](/docs/busycal/70607-preferences.md#to-dos) to leave out the ones that have no due time. Undated tasks appear only in the Task List. ### Show Tasks in the Calendar[​](#show-tasks-in-the-calendar "Direct link to Show Tasks in the Calendar") Dated tasks and completed tasks appear in your calendar on their due or completion dates. When a task isn't completed by its due date, it carries forward each day until finished (this is customizable in Settings). Carried-forward tasks show a small **>** arrow in the checkbox. Completed tasks show a checkmark on the date they were finished. ![Tasks in Calendar](https://downloads.busymac.com/resources/img/busycal-mac/task_on_cal.png) ### Task List[​](#task-list "Direct link to Task List") To show the Task List, choose **View > Show Task List**, press `⌘-Option-T`, or click the Hide/Show Task List button on the right side of the toolbar and select Show Task List or Show Both. The Task List appears in the right sidebar. ![Task List](https://downloads.busymac.com/resources/img/busycal-mac/tasklist.png) The Task List can be sorted by Due Date, Priority, Title, Calendar, Tag, or manual arrangement. To change sort order and other task preferences, go to **BusyCal > Settings > Tasks**. ### Repeating Tasks[​](#repeating-tasks "Direct link to Repeating Tasks") You can create repeating tasks for recurring responsibilities. The example below shows a task that repeats every two months. ![Repeating Task](https://downloads.busymac.com/resources/img/busycal-mac/repeating_task_info.png) ### Task Calendars[​](#task-calendars "Direct link to Task Calendars") Calendars syncing from cloud services like iCloud, Google, Outlook, and Reminders are **always** type-specific, meaning each calendar can contain either events or tasks, but **not both**. Task calendars are marked with a checkmark icon next to their name in the left sidebar. ![Task Calendars](https://downloads.busymac.com/resources/img/busycal-mac/left_panel_task_checkmark.png) tip BusyCal allows you to create offline *On My Mac* calendars from **File menu > New Calendar > On My Mac**, which are stored locally within your copy of BusyCal. These calendars support both events and tasks in a single place. ### Creating Tasks[​](#creating-tasks "Direct link to Creating Tasks") With all that background information behind us, it’s time to create a task. * Click on today’s date in your calendar, then choose **File > New Task** (or press `⌘-K`), to create a new dated task with a due date of today. The task appears in your calendar with a checkbox in front of it. * You can drag the task to a different date, and its due date changes in the Info Panel. note If you drag the task to a past date it continues to be displayed on today, because past due tasks automatically carry forward to the current date (you can disable that option in **BusyCal > Settings > Tasks**). * If you mark the task as completed by checking the *done* checkbox in the calendar or Info Panel (or pressing `⌘-/`), the completed task appears with a checkmark in front of it on the date that it was completed. * To create an undated task, choose **File > New Undated Task** (or press `⌘-U`), and the new undated task appears in the Task List. For more information, see [Tasks](/docs/busycal/70594-tasks.md). ## BusyCal Menu[​](#busycal-menu "Direct link to BusyCal Menu") BusyCal includes a menu bar app that provides one-click access to your calendar and enables you to add events, even when BusyCal isn’t running. The BusyCal menu displays a navigable mini month view, a scrolling list of upcoming events and tasks, the weather forecast for today and upcoming days with events or tasks, and a Quick Entry field for creating new events with natural language. The Menu app uses locally stored calendar data and does not sync accounts itself. Keep the main BusyCal app running to sync with calendar services; you can close its window with `Command-W` or the red close button. To display the menu, click its icon in the menu bar or press `Control-⌘-B`. ![BusyCal Menu](https://downloads.busymac.com/resources/img/busycal-mac/menu_app_conf_call.png) ### Enabling the BusyCal Menu[​](#enabling-the-busycal-menu "Direct link to Enabling the BusyCal Menu") To display the BusyCal Menu in your menu bar, go to **BusyCal > Settings > Menu** and select the **Show BusyCal Menu in menu bar** checkbox. This opens a background application that loads at login and continues running even when BusyCal has quit. ![Show BusyCal Menu preference](https://downloads.busymac.com/resources/img/busycal-mac/setting_enable_menu.png) ### Using the BusyCal Menu[​](#using-the-busycal-menu "Direct link to Using the BusyCal Menu") To display the BusyCal Menu, click the menu bar icon or press the BusyCal Menu keyboard shortcut, `Control-⌘-B`. With the BusyCal menu open, you can do the following: * Detach (tear out) the menu into a floating window if you want to keep it visible while working in other apps. * Click the left or right arrow button to move across any number of months in either direction. * Scroll the list of daily events and tasks using your trackpad, Magic Mouse, or scroll wheel; the agenda supports infinite scrolling. * Click or use the arrow keys to select an item. A popover appears with the details of the event or task. Click the Show button in that popover to open the event or task in BusyCal. * If the item is a task, you can mark it as complete by clicking the done checkbox. * Double-click an event, or press Return with an event selected, to open the event in BusyCal. * Create new events using natural language by typing in the [Quick Entry](/docs/busycal/70605-quick-entry.md) field at the top of the menu. For a complete list of BusyCal Menu keyboard shortcuts, see [BusyCal Menu Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md). note The BusyCal Menu app is a **lightweight calendar extension** that resides in the menu bar. You can detach it as a floating window, resize it, and it remembers its last on-screen position and size. For full calendar access and advanced features, use the main BusyCal app. For more information, see [BusyCal Menu](/docs/busycal/70606-busycal-menu.md). ## Upcoming Event Countdown in the BusyCal Menu[​](#upcoming "Direct link to Upcoming Event Countdown in the BusyCal Menu") The BusyCal menu bar app also shows a real-time event countdown—counting down to upcoming events and counting up during ongoing ones. ![Upcoming](https://www.busymac.com/images/new/bcl-menubar-upcoming@2x.png) For more information, see [BusyCal Menu](/docs/busycal/70606-busycal-menu.md). ## Alarms[​](#alarms "Direct link to Alarms") BusyCal can display alarms through its own Alarm window or via macOS Notification Center. The BusyCal Alarm Window offers snooze options for any duration (minutes, hours, or days), the ability to mark tasks complete directly from the alarm, and calendar identification with names and colors. You can also [view and manage snoozed alarms](/docs/busycal/70604-alarms.md#viewing-snoozed-alarms) — snoozed alarms persist across app restarts, so you'll never lose track of them. ![BusyCal Alarm Window](https://downloads.busymac.com/resources/img/busycal-mac/bcl_alarm_windows.png) ### Enable BusyCal Alarm Window[​](#enable-busycal-alarm-window "Direct link to Enable BusyCal Alarm Window") To use the BusyCal Alarm window, go to [**BusyCal > Settings > Alarms**](/docs/busycal/70607-preferences.md#alarms-preferences), check **Show alarms**, and select **Use BusyCal Alarm Window**. ![Enable BusyCal Alarm Window](https://downloads.busymac.com/resources/img/busycal-mac/setting_enable_busy_alarms.png) ### Creating an Alarm[​](#creating-an-alarm "Direct link to Creating an Alarm") To try alarms, create a new event: click on today's date, choose **File > New Event**, set the start time for about two minutes from now, and set the alarm to "At start". ![Alarm at start](https://downloads.busymac.com/resources/img/busycal-mac/info_panel_alarm.png) Then wait a minute or two for the alarm to appear. When it does, you can snooze or dismiss the alarm, or double-click the event to select it in your calendar. For more information, see [Alarms](/docs/busycal/70604-alarms.md). Learn more about the difference between [relative alarms vs. absolute / fixed date+time alarms](/docs/busycal/70604-alarms.md#alarm-types). ## Graphics[​](#graphics "Direct link to Graphics") You can add graphics to your calendar to highlight holidays, special events, and other dates. ![Add a Graphic](https://downloads.busymac.com/resources/img/busycal-mac/graphic_month.png) ### Graphics Panel[​](#graphics-panel "Direct link to Graphics Panel") Choose **Window > Graphics Panel** to open a floating window of images you can drag onto your calendar. Browse Emoji images built into macOS, or search for images on [IconFinder.com](https://www.iconfinder.com/). You can also drag images into BusyCal from your desktop or a web browser. For more information, see [Graphics](/docs/busycal/70598-graphics.md). ## Birthdays and Anniversaries[​](#birthdays-and-anniversaries "Direct link to Birthdays and Anniversaries") BusyCal can display birthdays and anniversaries from macOS Contacts (or BusyContacts) in your calendar. Go to **BusyCal > Settings > General** and enable **Show Birthdays calendar** and/or **Show Anniversaries calendar**. For an anniversary, edit the contact and choose the built-in **anniversary** label from the date's label menu. Custom labels such as **Wedding** are not included in the Anniversaries calendar. Enter the original date; BusyCal repeats it every year. If you use BusyContacts, leave **show dates** checked on the contact. ![Birthdays and Anniversaries Settings](https://downloads.busymac.com/resources/img/busycal-mac/setting_enable_birthday.png) Once enabled, Birthdays and Anniversaries calendars appear under the Other section in your Calendar List, and matching contacts show up with icons in your calendar. BusyCal can also display death anniversaries. Choose the built-in **death date** label in **BusyContacts**, or add a custom date labeled **Death Date** in **Apple Contacts**. You can then choose how BusyCal should respond: 1. **Continue Showing Birthdays:** This option will always display the person's birthday. If a death date is detected, future birthdays will stop incrementing the person's age. 2. **Stop Showing Birthdays:** This option will stop displaying the person's birthday starting from the year of their death. 3. **Show Death Anniversaries:** This option will behave similarly to *Continue Showing Birthdays*, with the addition of displaying a yearly death anniversary event on the date of death. Death anniversary events use a leaf icon in the calendar. ![Birthday on calendar](https://downloads.busymac.com/resources/img/busycal-mac/birthday_cal.png) ![Anniversary on calendar](https://downloads.busymac.com/resources/img/busycal-mac/anniv_cal.png) For more information, see [Birthdays and Anniversaries](/docs/busycal/70599-birthdays-and-anniversaries.md). ## Holidays[​](#holidays "Direct link to Holidays") There are many Holiday and Sports calendar feeds available on the internet from [Apple](https://www.apple.com/downloads/macosx/calendars/index_top.html), [iCalShare](https://icalshare.com/), [Yahoo Sports](https://sports.yahoo.com/), and others that you can subscribe to in BusyCal or macOS Calendar. We provide a list of links to the most common US holiday and sports calendars [here](/webdav.md). When you subscribe to a Holiday calendar, BusyCal displays all-day events on Holiday calendars in a unique style—either as a banner or as gray italicized text at the bottom of the day cell. (Double-click a calendar to open the Calendar info dialog, and check the **Holiday calendar** checkbox to use the gray italicized text rather than banners for that calendar.) Since BusyCal has the ability to display graphics, we created some variations of the US Holidays calendar that include graphics for major holidays. You can subscribe these US Holidays calendars from our [holiday calendars section](/webdav.md). These are available as three variants: * **US Holidays** * **US Holidays - small graphics** * **US Holidays - large graphics** Here’s what Thanksgiving looks like for each of the US Holidays calendars (no graphics, small graphics, and large graphics) when subscribed to in BusyCal. US Holidays calendar ![US Holiday Normal](https://downloads.busymac.com/resources/img/busycal-mac/us_holiday_normal.png) US Holidays calendar with small images ![US Holiday Small](https://downloads.busymac.com/resources/img/busycal-mac/us_holiday_small.png) US Holidays calendar with large images ![US Holiday Large](https://downloads.busymac.com/resources/img/busycal-mac/us_holiday_large.png) For more information, see [Holidays](/docs/busycal/70600-holidays.md). ## Favorite Time Zones[​](#favorite-time-zones "Direct link to Favorite Time Zones") BusyCal supports multiple time zones for international scheduling. You can **save favorite time zones** with custom names, so you see **"Tokyo Office"** or **"NY Client"** instead of GMT offsets in drop-downs and time zone pickers. The video below demonstrates how to create and use favorite time zones. For more details on time zones, see [Time Zones](/docs/busycal/70609-time-zones.md). [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/fav_timezones_web.webm) ## Mapping Event Locations[​](#mapping-event-locations "Direct link to Mapping Event Locations") View all your event locations on an interactive map, past or present. [Learn more](/docs/busycal/event-map-view.md). ### Key Features[​](#key-features "Direct link to Key Features") * **See all event locations on a map** – Displays location pins for events with addresses. * **Search for specific locations** – Find events by location name or address. * **Navigate and zoom** – Pan and zoom across your event locations. * **Find events linked to locations** – Click any pin to view the associated events. * **Filter by calendar** – Select individual calendars or [calendar sets](/docs/busycal/70612-smart-filters.md) to narrow results. ![Event Location Map](https://downloads.busymac.com/resources/img/busycal-mac/event_map.png) ## Automation[​](#automation "Direct link to Automation") BusyCal includes a local automation engine that lets other apps create events and tasks, search your schedule, and find free time — all without your data leaving your Mac. * **[Claude Desktop Extension](/docs/busycal/70624-mcp.md)** — Manage your calendar through natural conversation with [Claude Desktop](https://claude.ai/download). Ask Claude to check availability, create events, reschedule meetings, or plan a trip. * **[Raycast Extension](/docs/busycal/70624-raycast.md)** — Create, search, and manage calendar items from [Raycast](https://www.raycast.com/) without leaving the keyboard. * **[AppleScript](/docs/busycal/70624-applescript.md)** — Script BusyCal directly for custom workflows and integrations. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/ClaudeMCP_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/ClaudeMCP_web.webp) ## Bookings[​](#bookings "Direct link to Bookings") With BusyCal Bookings, you share a link where people can book time with you. They see only the times when you're free, and BusyCal adds each booking to your calendar. To set it up, choose **BusyCal > Settings**, select **Bookings**, and follow [Getting Started with Bookings](/docs/busycal/bookings-getting-started.md). ## More[​](#more "Direct link to More") That concludes the overview of BusyCal. But there’s more. Check out some of these other great features: * [Calendar Sets / Smart Filters](/docs/busycal/70612-smart-filters.md) - Create saved calendar groups and custom views * [Calendar Groups](/docs/busycal/70592-calendar-list.md#calendar-groups) - Organize calendars into collapsible groups * [List View](/docs/busycal/70591-list-view.md) - View events in a sortable, customizable list * [Searching, Finding, and Filtering Events](/docs/busycal/70611-searching-finding-and-filtering-events.md) * [Tags](/docs/busycal/70597-tags.md) - Categorize and filter events with custom tags * [Meetings and Invitations](/docs/busycal/70615-meetings-and-invitations.md) - Schedule and manage meetings * [Backing Up and Restoring](/docs/busycal/70617-backing-up-and-restoring.md) - Protect your calendar data * [Keyboard Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md) - Navigate BusyCal efficiently with keyboard shortcuts --- # The BusyCal Window The main BusyCal window features an intuitive array of controls and interface elements, some of which may be hidden or displayed based on your personalized settings and preferences. ![](https://downloads.busymac.com/resources/img/busycal-mac/main_window.png) ### The Top Toolbar[​](#the-top-toolbar "Direct link to The Top Toolbar") ![](https://downloads.busymac.com/resources/img/busycal-mac/main_top2.png) 1. **Do Not Disturb** — Temporarily silence and hide all alarms and sounds for focused work sessions. All suppressed alarms will automatically reappear once DND expires or when manually disabled by clicking the toggle button. 2. **Hide/Show Calendar List** — Instantly hide or reveal the left sidebar, which contains your Calendar List and customizable mini-month displays. See [Calendar List](/docs/busycal/70592-calendar-list.md). 3. **New Quick Event** — Rapidly create events or tasks using intuitive natural language processing. See [Quick Entry](/docs/busycal/70605-quick-entry.md). 4. **Inbox** — Displays important notifications including meeting invitations and real-time updates to shared calendars. See [Receiving Meeting Invitations](/docs/busycal/70615-meetings-and-invitations.md#receiving-meeting-invitations). 5. **View Buttons** — Change the calendar’s current view. For details, see [Day View](/docs/busycal/70587-day-view.md), [Week View](/docs/busycal/70588-week-view.md), [Month View](/docs/busycal/70589-month-view.md), [Year View](/docs/busycal/70590-year-view.md), and [List View](/docs/busycal/70591-list-view.md). 6. **Time Zone Pop-up Menu** — Change the time zone BusyCal is currently using. See [Time Zones](/docs/busycal/70609-time-zones.md). 7. **Navigation Controls** — Click the left or right arrow to navigate forward or backward in time, or Today to jump to today. Long-press **Today**'s date to show a [Go To Date](#gotodate) dialog. 8. **Hide/Show Task List button** — Hide or show the Task List, Info Panel, or the entire righthand sidebar. See [Info Panel in Sidebar](/docs/busycal/70595-info-panel.md#info-panel-in-sidebar). 9. **Search Field** — Type here to search for events or tasks, or to filter the calendar display. See [Searching, Finding, and Filtering Events](/docs/busycal/70611-searching-finding-and-filtering-events.md). ### The Left Sidebar[​](#the-left-sidebar "Direct link to The Left Sidebar") Also elegantly referred to as the Calendar Source Panel, this essential workspace area contains: 1. **Calendar List** — A comprehensive list of all calendars across every account configured in BusyCal, including your Calendar Groups / Folders. See [Calendar List](/docs/busycal/70592-calendar-list.md). 2. **Mini Month** — Compact monthly calendar views; simply drag the dividing line upward to display additional months for better planning visibility. ![](https://downloads.busymac.com/resources/img/busycal-mac/main_left.png) ### The Right Sidebar[​](#the-right-sidebar "Direct link to The Right Sidebar") 1. **Sort Order pop-up menu** — Flexibly organize how tasks are displayed in the Task List. 2. **Task Filtering** — Customize which tasks appear in your Task List view. 3. **Task List** — A fully customizable display of all your tasks and to-dos. See [Task List](/docs/busycal/70594-tasks.md#to-do-list). 4. **Info Panel** — Comprehensive editable details for your selected events or tasks. See [Info Panel](/docs/busycal/70595-info-panel.md). ![](https://downloads.busymac.com/resources/img/busycal-mac/main_right.png) ## View Menu[​](#cv-view-menu "Direct link to View Menu") note Depending on your BusyCal version, you may discover additional new options or notice some features are unavailable in older versions. The View menu provides comprehensive controls for seamlessly switching between calendar views, navigating through time periods, and customizing how your calendar information is displayed. ![](https://downloads.busymac.com/resources/img/busycal-mac/menu_view.png) You can extensively personalize your calendar experience by selecting from these powerful options in the View menu: * **Appearance** — Instantly switch between Automatic, Light, or Dark mode for optimal viewing comfort. * **Days in Week** — Flexibly set the number of days displayed in Week view. (This context-sensitive submenu appears only in Week view.) * **Weeks in Month** — Customize how many weeks appear in Month view. (This context-sensitive submenu appears only in Month view.) * **Show/Hide Filter Bar** — Toggle the Filter bar visibility, where your powerful smart filter buttons reside. * **Show/Hide Calendar List** — Control visibility of the Calendar List sidebar on the left side of your workspace. * **Show/Hide Unsubscribed Calendars** — Manage display of unsubscribed calendars in the Calendar List sidebar. * **Show Hidden Calendars** — A checkable item that controls whether hidden calendars stay listed in the Calendar List sidebar. You can hide any calendar by right-clicking it and selecting **Hide Calendar**, but it only leaves the sidebar once this item is turned off. While it is on, hidden calendars remain listed with a dimmed checkbox and a crossed-out eye at the right edge of their rows. See [Hiding a Calendar Permanently](/docs/busycal/70592-calendar-list.md#permanently-hide-calendars). * **Show/Hide Hidden Events & Todos** — Toggle visibility of hidden events and tasks throughout your calendar views. Hide individual events by right-clicking and selecting `Hide`. * **Show/Hide Mini Months** — Control the mini-month navigator display at the bottom of the Calendar List sidebar. tip To display additional mini months for enhanced planning visibility, simply drag the horizontal divider line above the mini month section upward. * **Show/Hide Task List** — Toggle visibility of the Task List sidebar on the right side of your workspace. * **Show in Task List** — Choose which elements appear in the right sidebar when visible: * Task List (`⌘-Option-L`) — Display only the Task List * Info Panel (`⌘-Option-I`) — Display only the embedded Info Panel * Both (`⌘-Option-B`) — Show both the Task List (top) and embedded Info Panel (bottom). When both are visible, adjust their relative sizes by dragging the horizontal divider between them. * **Combine Identical Events** — Combine identical events found across different calendars and only the first appropriate event. When turned on, other identical events can be accessed via the Info Panel by selecting the visible event. BusyCal will pick the most appropriate event to display based on several heuristics, but most notably it will pick the one based on the Calendar sort order (in the left panel of the window). Use this when the same event appears twice in your view — for example, a meeting invite that lands on more than one of your accounts, or an event on a calendar shared with you that also exists on a calendar you own. See [Combine Identical Events](/docs/busycal/133794-combine-identical-events.md) for the full criteria and behavior. * **Show Declined & Canceled Events** — Show events that have been cancelled, or to which you’ve declined an invitation, on the calendar in strikethrough style. The same toggle also reveals tasks whose Status has been set to Cancelled — see [Cancelled Tasks](/docs/busycal/70594-tasks.md#cancelled-tasks) for the full workflow. * **Show Hidden Events** — Show events that have been hidden (by previously `CTRL+Click`ing (right-click) on selected events > Hide), on the calendar. * **Word Wrap** — Displays single or multi-line event titles in the Calendar view. Each display mode (Week, Month, List) can have separate word wrapping preferences. The Task list panel follows the currently applicable Word Wrap option. * **Word Wrap Style** - You can choose between *wrap by word* or *wrap by character*. The latter will better utilize the available space. * **Show Rich Text** — Displays plain or rich text event titles in the Calendar view. * **Show Weekends** — Show or hide weekends in Month/Week view. Does not apply to a Week view with custom number of days. ## Sidebar Controls[​](#cv-sidebar-controls "Direct link to Sidebar Controls") BusyCal’s toolbar includes two controls that affect the visibility and behavior of the sidebars. The Hide/Show Calendar List button, on the left, toggles display of the lefthand sidebar, which shows your Calendar List and, optionally, one or more mini month views at the bottom. (Clicking this button is the same as choosing View > Show/Hide Calendar List or pressing `⌘-Option-C`.) The Hide/Show Task List button, on the right, toggles display of the righthand sidebar, which shows your Task List, an embedded Info Panel, or both. (Clicking this button is the same as choosing View > Show/Hide Task List or pressing `⌘-Option-T`.) The pop-up menu on the right side of the Hide/Show Task List button lets you select whether the right sidebar shows the Task List, the embedded Info Panel, or both. ![](https://downloads.busymac.com/resources/img/busycal-mac/main_right_panel_button.png) ## Go To Date[​](#gotodate "Direct link to Go To Date") From the BusyCal **View menu > Go To Date...** you can instantly navigate to any specific date in your calendar. ![](https://downloads.busymac.com/resources/img/busycal-mac/today_button.png) You can also *long-press the **Today** button* above the calendar (displaying today's date) to reveal the powerful *Go To Date* window. The intelligent Quick Search entry field accepts natural language input including: 3 days, 3d (shorthand for 3 days), 2 months (or 2m), friday, next week, next year, 2y, and many more variations. You can even enter specific dates like "3 jan 22" or "dec 2023". Using the Quick Search field enables lightning-fast navigation to any date without tedious clicking through the date picker. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/goto_date_web.webm) --- # Day View Day view provides a focused, detailed display of a single day in your calendar, perfect for managing your daily schedule and appointments. ![Day view calendar example in BusyCal](https://downloads.busymac.com/resources/img/busycal-mac/day_view.png) Day View Calendar is ideal for focusing on a single day's schedule with granular detail. To effortlessly navigate within the current day, simply scroll up or down to reveal earlier or later time slots. To seamlessly scroll backward or forward one day at a time, click the navigation arrow buttons, swipe horizontally with two fingers on a trackpad, perform a single-finger swipe with a Magic Mouse, or use the keyboard shortcuts `⌘-Left-Arrow` or `⌘-Right-Arrow`. For a complete list of navigation shortcuts, see [Day & Week View Navigation Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md). ### All-Day Section[​](#all-day-section "Direct link to All-Day Section") The all-day section prominently appears at the top of both Day and Week views, elegantly displaying all-day [banner events](/docs/busycal/70593-event-types.md#banner) including holidays, birthdays, and other full-day occasions. **What appears in the all-day section:** * All-day banner events (holidays, birthdays, travel days, etc.) * Dated tasks (when **Show dated Tasks in calendar** is enabled in [Task Settings](/docs/busycal/70607-preferences.md#to-dos); all-day tasks appear here only while **Include All-Day Tasks** is also on) * Multi-day events that span across dates **Banner ordering in the all-day section:** Banners appear in the order of your calendars in the sidebar. To change the order, drag the calendars into the order you want. See [Ordering Events](/docs/busycal/70592-calendar-list.md#ordering-events). note A banner that spans several weeks or months cannot always stay in the same row for its whole span. BusyCal fills the space that is free on each day so there are no empty gaps between banners, so a long banner can appear below other banners on later days. This is normal. **Task ordering in the all-day section:** Tasks displayed here maintain the same order as configured in your [Task List panel](/docs/busycal/70594-tasks.md). This means: * Tasks sorted by priority will appear by priority in the all-day section * Manually ordered tasks will retain their custom arrangement * Tasks sorted by due date will follow chronological order tip If tasks in the all-day section appear in an unexpected order (not matching priority or due date), they may have been manually reordered previously. You can [reset the manual task ordering](/docs/busycal/70594-tasks.md#sorting-manually) to restore automatic sorting. ### Displaying Multiple Time Zones[​](#multiple-time-zones "Direct link to Displaying Multiple Time Zones") BusyCal allows you to display up to three time zones simultaneously in the time ruler (the vertical time bar on the left side of Day and Week views), making international scheduling and collaboration effortless. #### Enabling Additional Time Zones[​](#enabling-additional-time-zones "Direct link to Enabling Additional Time Zones") To display multiple time zones in Day and Week views: 1. Navigate to **BusyCal > Settings > [Time Zones](/docs/busycal/70607-preferences.md#timezones)** 2. Enable **Show second time zone in Day and Week views** to display a second time zone 3. Optionally enable **Show third time zone in Day and Week views** for a third time zone 4. Select your desired time zones from the dropdown menus Once enabled, the additional time zones appear as separate columns in the time ruler, each clearly labeled with the time zone abbreviation. tip Also see [Favorite Time Zones](/docs/busycal/70585-getting-started-with-busycal-for-mac.md#favorite-time-zones) for more details. ### Changing Number of Hours Viewed[​](#changing-number-of-hours-viewed "Direct link to Changing Number of Hours Viewed") BusyCal allows you to customize how many hours are displayed in **Day** and **Week** views, ranging from **4 to 24 hours**. #### Changing Hours from Settings[​](#changing-hours-from-settings "Direct link to Changing Hours from Settings") 1. Open [**BusyCal > Settings > General**](/docs/busycal/70607-preferences.md#general-preferences). 2. Locate the **Day and Week views show** option. 3. Select the desired number of hours from the drop-down menu. #### Adjusting Hours Directly in the Calendar View[​](#adjusting-hours-directly-in-the-calendar-view "Direct link to Adjusting Hours Directly in the Calendar View") You can also dynamically change the visible hours while using **Day** or **Week** view: * **Option + Scroll** – Hold `Option` and scroll up/down anywhere to zoom in/out. * **Timeline Scroll** – Hover over the left-side time ruler and scroll: * Scroll **up** to zoom in (show fewer hours). * Scroll **down** to zoom out (show more hours). * **Click + Drag** – Click and drag on the **left-side time ruler** to manually adjust the hours displayed. Disable Timeline Scroll Zoom If you find yourself accidentally triggering the zoom feature when scrolling over the timeline, you can disable this behavior in **Preferences > Accessibility** by checking "Disable timeline scroll zoom in Day & Week views". When enabled, scrolling over the timeline will no longer adjust the visible hours. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/show_more_hours_day_view2_web.webm) tip Day and Week views independently remember your preferred number of visible hours You can also change various display styles in [Appearance Settings](/docs/busycal/70607-preferences.md#appearance-preferences). ### Show Working Hours Only[​](#show-working-hours "Direct link to Show Working Hours Only") While you have full control over zoom levels in **Day** & **Week** views, sometimes you may want to focus only on your **working hours** and hide the rest. Use the **Working Hours** toggle button in the toolbar (next to the date switcher) to quickly collapse hours outside your [**Day Start** and **Day End** settings](/docs/busycal/70607-preferences.md#general-preferences). Even better, this setting is remembered when using [Smart Filters](/docs/busycal/70612-smart-filters.md), allowing you to switch between views seamlessly while automatically toggling working hours on or off based on your saved preferences. When working hours are hidden, BusyCal shows a subtle overlay reminder so you always know you’re in a focused-hours view. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/toggle_work_hours_web.webm) ### Changing Event / Task Times[​](#changing-event-times "Direct link to Changing Event / Task Times") You can efficiently select multiple events and drag them to adjust their start times. By default, BusyCal intelligently snaps to 15-minute intervals for quick scheduling. For more precise time adjustments, simply hold down the SHIFT key while dragging to enable minute-by-minute precision. When you resize an event by dragging its top or bottom edge, BusyCal shows a live tooltip with the event’s resulting duration, making it easier to fine-tune start/end times. While dragging events, BusyCal also shows a live time offset (for example `+2h` or `-3d`) so you can see exactly how far you’re moving an item. ### Creating Overlapping / Adjacent Events[​](#creating-overlapping-events "Direct link to Creating Overlapping / Adjacent Events") In **Day & Week View**, you can effortlessly create overlapping or adjacent events without disturbing existing schedules. Simply hold down the `⌘ (Command) + ⌥ (Option)` keys together, then **click and drag** anywhere on an existing event. This powerful feature allows you to strategically place new events alongside existing ones without affecting the original timing. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/create_overlapping_event_web.webm) ### Creating Events In Between[​](#creating-events-in-between "Direct link to Creating Events In Between") BusyCal makes intelligent scheduling effortless by allowing you to `CTRL+Click` (right-click) anywhere between two events to instantly create a perfectly-fitted new event in the available time slot. No need to manually calculate or adjust times—just click, create, and continue with your day! BusyCal also provides intelligent scheduling options when creating or editing events in week view through the context menu: * **Match Start to Previous End** — Seamlessly align your event to begin when the previous one ends * **Match End to Next Start** — Perfectly time your event to end when the next one begins * **Create Event Matching End of Previous** — Generate a new event starting exactly when the previous concludes * **Create Event Between** — Intelligently fill gaps between existing events * **Create Event After Selection** — Add a new event immediately following your selected time [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/create_event_between_web.webm) ### Calendar Selection via Natural Language[​](#calendar-selection-nlp "Direct link to Calendar Selection via Natural Language") When **Natural Language Processing** is enabled, you can specify which calendar to use when creating an event by typing a slash followed by the calendar name. For example, when creating a new event by double-clicking or dragging on the Day View, you can type: `Lunch with Joe /work` This will create the event "Lunch with Joe" on your "Work" calendar. You can use just the first few unique letters of the calendar name (e.g., `/w`). This feature shares the same settings as Month View's natural language processing. ### Free / Busy Times[​](#free-busy "Direct link to Free / Busy Times") Timed events marked as **Show as: Free** (i.e., *not* marked as **Busy** in the [Info Panel](/docs/busycal/70595-info-panel.md)) are visually distinguished with a **dashed colored border**, while events that block your availability display with **solid colors** (the standard default behavior). In shared calendars or calendars that publicize your availability for meeting scheduling, **Free/Busy status is absolutely crucial**. Events marked as **Busy** effectively prevent others from scheduling conflicting appointments, while events marked as **Free** clearly signal your availability for additional commitments. #### Understanding Free vs. Busy Events[​](#understanding-free-vs-busy-events "Direct link to Understanding Free vs. Busy Events") * **Free Events**: Indicate that you remain available and can accommodate additional meetings or multi-task. * **Busy Events**: Definitively mark you as unavailable, preventing others from scheduling over those time slots. By default: * **All-day events** (banners) are automatically set to **Free**, as they typically represent informational items that don't block your availability. * **Timed events** (with specific start and end times) are automatically set to **Busy**, effectively blocking your calendar for that duration. If you're genuinely unavailable for an entire day due to an **All-Day event** (e.g., Out of Office, Travel Day), you can manually mark it as **Busy** to block scheduling. #### Example Busy All-Day Event[​](#example-busy-all-day-event "Direct link to Example Busy All-Day Event") 📅 *All-Day Event:* * **Title**: Traveling * **Time**: All Day * **Show As**: Busy (blocks availability for the entire day) #### Example Busy Timed-Event[​](#example-busy-timed-event "Direct link to Example Busy Timed-Event") ⏰ *Timed Event:* * **Title**: "Doctor's Appointment" * **Time**: 2:00 PM - 3:30 PM * **Show As**: Busy (Solid color, blocks availability) #### Example Free Timed-Event[​](#example-free-timed-event "Direct link to Example Free Timed-Event") ⏰ *Timed Event:* * **Title**: "Brainstorming" * **Time**: 12:00 PM - 1:30 PM * **Show As**: Free (Dashed color, does not block availability) Use **Free** and **Busy** statuses to accurately reflect your availability and avoid unnecessary scheduling conflicts. ![Event marked as Free](https://downloads.busymac.com/resources/img/busycal-mac/free_event.png) ### Customizing Day View Appearance[​](#customizing-appearance "Direct link to Customizing Day View Appearance") Personalize how Day View displays your events: #### Event Display Options[​](#event-display-options "Direct link to Event Display Options") * **Event Text Color** - Choose between black text or calendar/tag colors via [Appearance Settings](/docs/busycal/70607-preferences.md#appearance-preferences) * **Show Notes** - Display event notes directly in Day View * **Show event times for single-line events** - Toggle this in [Accessibility Settings](/docs/busycal/70607-preferences.md#appearance-preferences) to show or hide times for single-line items * **Word Wrap** - Toggle word wrapping with `Shift-⌘-W` for longer event titles * **Rich Text/Plain Text** - Switch display mode with `Shift-⌘-H` #### Visual Indicators[​](#visual-indicators "Direct link to Visual Indicators") * **Free/Busy Status** - Free events show with dashed borders, busy events with solid colors * **Travel Time** - Blocked travel time appears as a separate time block before events * **Task Duration** - Tasks can display with visual duration blocks in the timeline #### Grid and Layout[​](#grid-and-layout "Direct link to Grid and Layout") * **Gridline Darkness** - Enable darker gridlines for better visibility in [Accessibility Settings](/docs/busycal/70607-preferences.md#appearance-preferences) * **Disable overlapping layout** - Stack overlapping events vertically for a cleaner layout in [Appearance Settings](/docs/busycal/70607-preferences.md#appearance-preferences) * **Time Format** - Customize 12/24 hour display in [General Settings](/docs/busycal/70607-preferences.md#general-preferences) * **Font Customization** - Adjust fonts for events, dates, and notes ### Keyboard Navigation in Day View[​](#keyboard-navigation "Direct link to Keyboard Navigation in Day View") Efficiently navigate Day View using keyboard shortcuts: * **Arrow Keys** - Navigate between days in the calendar * **Tab/Shift-Tab** - Select next/previous event or task * **⌘-Option-→/←** - Scroll forward/backward one day * **⌘-→/←** - Scroll forward/backward one week * **⌘-T** - Jump to today * **Double-click or ⌘-Return** - Open Info Panel for selected event * **⌘-D** - Duplicate selected event * \*\*⌘-/ \*\* - Mark selected task as done/not done * **⌘-⌥-click-drag** - Create overlapping events For the complete list of shortcuts, see [Day & Week View Navigation Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md). ### Event Suggestions in Day View[​](#event-suggestions "Direct link to Event Suggestions in Day View") BusyCal can suggest past and future events as templates while you create new events in Day View: * **Enable/Disable** - Control suggestions via **Settings > Suggestions > Show suggestions in Day View** * **Quick Templates** - Start typing an event title to see matching suggestions from your calendar history * **Smart Copying** - Selected suggestions copy relevant properties like time, location, and alarms to your new event * **Customize Sources** - Configure whether to search all calendars or only enabled ones in Settings ## See Also[​](#see-also "Direct link to See Also") * [Week View](/docs/busycal/70588-week-view.md) - Similar features in weekly calendar display * [Keyboard Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md) - Navigate Day View efficiently * [General Settings](/docs/busycal/70607-preferences.md#general-preferences) - Configure day start/end times and visible hours * [Time Zones](/docs/busycal/70609-time-zones.md) - Display multiple time zones in Day View * [Smart Filters](/docs/busycal/70612-smart-filters.md) - Save custom Day View configurations * [Info Panel](/docs/busycal/70595-info-panel.md) - Edit event details and set free/busy status --- # Week View Week view displays one week of your calendar by default (with the option to redefine “week” as any period from 2–90 days). ![Week View calendar](https://downloads.busymac.com/resources/img/busycal-mac/slideshow-week.png) Quick Tip: Week Not Starting on Monday? If your week view is showing today as the first day instead of Monday (or your preferred start day), you're seeing the "rolling 7-day" view. To display a traditional full calendar week, see [Customizing Week View Alignment](#weekviewalignment) below for the simple fix. To view to earlier or later times of day, scroll up or down. To scroll backward or forward one week at a time, click the left or right arrow button, or press `⌘-Left Arrow` or `⌘-Right Arrow`. To scroll backward or forward one day at a time, swipe left or right with two fingers on a trackpad, swipe left or right with one finger with a Magic Mouse, or press `⌘-Option-Left Arrow` or `⌘-Option Right Arrow`. For a complete list of navigation shortcuts, see [Week View Navigation Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md). You can change Week view to show any range from 4–24 hours by going to **BusyCal > Settings > General** and choosing the desired number of hours from the “Day and Week views show” pop-up menu. Or hold down the option key while swiping up/down to zoom in/out. You can change Week view to show any range from 2–14 days by using the View > Days in Week submenu or by going to **BusyCal > Settings > General**, or by **right-clicking** on the Week view-navigation button in the toolbar and choosing the desired time period from the “Week view shows” pop-up menu. You can also change the week’s start day and the number of hours shown at a time in [General Settings](/docs/busycal/70607-preferences.md#general-preferences), and various display styles in [Appearance Settings](/docs/busycal/70607-preferences.md#appearance-preferences). ### All-Day Section[​](#all-day-section "Direct link to All-Day Section") The all-day section appears at the top of both Day and Week views, displaying all-day [banner events](/docs/busycal/70593-event-types.md#banner) including holidays, birthdays, and other full-day events. **What appears in the all-day section:** * All-day banner events (holidays, birthdays, travel days, etc.) * Dated tasks (when **Show dated Tasks in calendar** is enabled in [Task Settings](/docs/busycal/70607-preferences.md#to-dos); all-day tasks appear here only while **Include All-Day Tasks** is also on) * Multi-day events that span across dates **Banner ordering in the all-day section:** Banners appear in the order of your calendars in the sidebar. To change the order, drag the calendars into the order you want. See [Ordering Events](/docs/busycal/70592-calendar-list.md#ordering-events). note A banner that spans several weeks or months cannot always stay in the same row for its whole span. BusyCal fills the space that is free on each day so there are no empty gaps between banners, so a long banner can appear below other banners on later days. This is normal. **Task ordering in the all-day section:** Tasks displayed here maintain the same order as configured in your [Task List panel](/docs/busycal/70594-tasks.md). This means: * Tasks sorted by priority will appear by priority in the all-day section * Manually ordered tasks will retain their custom arrangement * Tasks sorted by due date will follow chronological order tip If tasks in the all-day section appear in an unexpected order (not matching priority or due date), they may have been manually reordered previously. You can [reset the manual task ordering](/docs/busycal/70594-tasks.md#sorting-manually) to restore automatic sorting. ### Customizing Days in Week[​](#customizedays "Direct link to Customizing Days in Week") Video demonstrating how this can be done from the Week view-navigation button in the toolbar: [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/days_in_week_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/days_in_week_web_omm.png) tip If you display a custom number of days in the Week view, clicking the Today button causes the current day to appear in the leftmost column of the Week view. Otherwise, the leftmost column displays the standard Start of Week day, which you can select in [General Settings](/docs/busycal/70607-preferences.md#general-preferences). #### Showing 90 Days (Quarter) in Week View[​](#showing-90-days-quarter-in-week-view "Direct link to Showing 90 Days (Quarter) in Week View") BusyCal allows you to customize the Week View to display anywhere from **2 to 90 days**. This flexibility makes it an excellent tool for **project planning**, enabling you to see a **quarterly overview** at a glance. Easily track long-term timelines, deadlines, and key milestones in a single, streamlined view. ![Quarter View](https://downloads.busymac.com/resources/img/busycal-mac/ninety-days.png) * Long-click or context-click on the **Week** navigation button in the toolbar and select 90 Days, OR * Open BusyCal Settings, and select **90 Days** from the **Week view shows the next:** drop-down. ### Customizing Week View Alignment[​](#weekviewalignment "Direct link to Customizing Week View Alignment") Quick Solution: Making Monday the first day of the week To display a traditional calendar week that always starts on Monday: 1. Go to **BusyCal > Settings > General** 2. Set **Start Week On** to **Monday** 3. Set **Week View Shows** to **"One Week"** (not "7 Days") The difference: "One Week" displays a fixed calendar week, while "7 Days" shows a rolling window starting from today. This video demonstrates how the **Week View Shows** setting impacts how your week is displayed in BusyCal. #### Initial Settings (Next 7 Days from Today):[​](#initial-settings-next-7-days-from-today "Direct link to Initial Settings (Next 7 Days from Today):") 1. **Start Week On** → Sunday (or Monday, depending on your preference) 2. **Week View Shows** → 7 Days With these settings, the **Week View** displays the `next 7 days`, starting from today, regardless of your chosen **Start of Week**. Clicking on **Today's date** keeps the current date pinned to the leftmost position. Why does my week start with today instead of Monday? This is the **#1 most common question** about Week view. Many users expect the calendar to always display the full traditional week starting with their preferred start day (like Monday), but with "7 Days" selected, BusyCal shows a **rolling 7-day window** starting from today. **Quick Fix:** If you want your week to always start on Monday (or any other specific day), you need to select **"One Week"** instead of "7 Days", as explained below. #### Changing to "One Week" (Pin to Start Of Week):[​](#changing-to-one-week-pin-to-start-of-week "Direct link to Changing to \"One Week\" (Pin to Start Of Week):") To display a traditional full calendar week, change the following setting: * **Week View Shows** → **One Week** With this option, the **Week View** *pins* to your chosen **Start of the Week**, displaying *one complete calendar week* instead of a rolling 7-day window. When you click **Today's date**, it jumps to the current week but maintains your preferred week structure. **To ensure your week always starts on Monday** (or any other specific day): 1. Navigate to **BusyCal > Settings > General** 2. Set **Start Week On** to **Monday** (or your preferred day) 3. Set **Week View Shows** to **"One Week"** (not "7 Days") This configuration guarantees your calendar always displays the entire traditional week starting with Monday, rather than a rolling window starting with today. #### Choosing the Best View for You:[​](#choosing-the-best-view-for-you "Direct link to Choosing the Best View for You:") * If you prefer a continuously moving 7-day window that always starts with today, use **7 Days**. * If you want to see a full structured week starting on your preferred day (like Monday), select **One Week**. For added flexibility, you can [switch between these settings](#customizedays) at any time. If you frequently toggle between both views, consider using a **Smart Filter** with [*Remember View Settings*](/docs/busycal/70612-smart-filters.md#view-settings) to quickly switch between layouts. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/week_view_start_of_week_web.webm) ### Changing Event / Task Times[​](#changing-event-times "Direct link to Changing Event / Task Times") You can select multiple events and drag them to change their start times. By default BusyCal will snap at 15-minute offsets. If you wish to drag with more precision, hold down the `Shift key` while dragging in order to snap to the nearest minute instead. When resizing events, BusyCal shows a live tooltip with the event duration so you can quickly validate that you’ve set the intended length. While dragging events, BusyCal also shows a live time offset (for example `+2h` or `-3d`) so you can see exactly how far you’re moving an item. ### Creating Overlapping / Adjacent Events[​](#creating-overlapping-events "Direct link to Creating Overlapping / Adjacent Events") In **Day & Week View**, you can easily create overlapping / adjacent events without modifying existing ones. Simply hold down the `⌘ (Command) + ⌥ (Option)` keys together, then **click and drag** anywhere on an existing event. This allows you to place a new event next to it without affecting the original scheduling. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/create_overlapping_event_web.webm) ### Creating Events In Between[​](#creating-events-in-between "Direct link to Creating Events In Between") BusyCal makes scheduling effortless by allowing you to `CTRL+Click` (right-click) anywhere in between two events to instantly create a new event in the available time slot. No need to manually adjust times—just click, create, and go! BusyCal also allows other options when creating or editing events in week view using the context menu: * Match Start to Previous End * Match End to Next Start * Create Event Matching End of Previous * Create Event Between * Create Event After Selection [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/create_event_between_web.webm) ### Calendar Selection via Natural Language[​](#calendar-selection-nlp "Direct link to Calendar Selection via Natural Language") When **Natural Language Processing** is enabled, you can specify which calendar to use when creating an event by typing a slash followed by the calendar name. For example, when creating a new event by double-clicking or dragging on the Week View, you can type: `Lunch with Joe /work` This will create the event "Lunch with Joe" on your "Work" calendar. You can use just the first few unique letters of the calendar name (e.g., `/w`). This feature shares the same settings as Month View's natural language processing. ### Working Hours Toggle in Week View[​](#working-hours-toggle "Direct link to Working Hours Toggle in Week View") Just like in [Day View](/docs/busycal/70587-day-view.md#show-working-hours), Week View offers a **Working Hours** toggle button in the toolbar to instantly focus on your business hours. When non-working hours are hidden, BusyCal shows a subtle overlay hint to remind you that the view is focused on working hours. ### Displaying Multiple Time Zones[​](#multiple-time-zones "Direct link to Displaying Multiple Time Zones") BusyCal allows you to display up to three time zones simultaneously in the time ruler (the vertical time bar on the left side of Week view), making international scheduling and collaboration effortless. To display multiple time zones in Week view: 1. Navigate to [**BusyCal > Settings > Time Zones**](/docs/busycal/70607-preferences.md#timezones) 2. Enable **Show second time zone in Day and Week views** to display a second time zone 3. Optionally enable **Show third time zone in Day and Week views** for a third time zone 4. Select your desired time zones from the dropdown menus Once enabled, the additional time zones appear as separate columns in the time ruler, each clearly labeled with the time zone abbreviation. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/multiple_timezones_week_view_web.webm) ### Week View Pro Tips[​](#week-view-pro-tips "Direct link to Week View Pro Tips") Master Week View with these productivity tips: #### Quick View Switching[​](#quick-view-switching "Direct link to Quick View Switching") * **Right-click Week button** - Instantly access day count options without opening settings * **Keyboard shortcuts** - Use `⌘-Option-[1-9]` to quickly switch between 1-9 days/weeks * **Option-scroll** - Hold Option while scrolling to zoom hours in/out dynamically #### Efficient Event Management[​](#efficient-event-management "Direct link to Efficient Event Management") * **Batch operations** - Select multiple events with `⌘-click` to move or edit them together * **Precision dragging** - Hold `Shift` while dragging events for minute-level precision (vs. 15-minute snapping) * **Quick duplication** - `Option-drag` an event to create a copy instantly #### Custom Workflows[​](#custom-workflows "Direct link to Custom Workflows") * **Project Planning Mode** - Set Week View to show 90 days for quarterly planning * **Focus Mode** - Combine Working Hours toggle with a filtered calendar set for distraction-free scheduling * **Travel Planning** - Use multiple time zones display when coordinating international trips #### Visual Optimization[​](#visual-optimization "Direct link to Visual Optimization") * **Compact Display** - Reduce font sizes in [Appearance Settings](/docs/busycal/70607-preferences.md#appearance-preferences) to see more events * **Show event times for single-line events** - Toggle in [Accessibility Settings](/docs/busycal/70607-preferences.md#appearance-preferences) to hide times for single-line items * **Disable overlapping layout** - Stack overlapping events vertically via [Appearance Settings](/docs/busycal/70607-preferences.md#appearance-preferences) * **Color Coding** - Use [Tags](/docs/busycal/70597-tags.md) with distinct colors for quick visual categorization * **Clean View** - Hide weekends with `Shift-⌘-K` when focusing on business days #### Event Suggestions[​](#event-suggestions "Direct link to Event Suggestions") * **Enable/Disable Suggestions** - Control event suggestions in Week View via **Settings > Suggestions > Show suggestions in Week View** * **Smart Templates** - Start typing to see matching past events that can be used as templates for new events * **Customize Suggestions** - Configure which calendars to search and which properties to copy in Settings ## See Also[​](#see-also "Direct link to See Also") * [Day View](/docs/busycal/70587-day-view.md) - Similar features in daily calendar display * [Month View](/docs/busycal/70589-month-view.md) - Monthly calendar overview * [General Settings](/docs/busycal/70607-preferences.md#general-preferences) - Configure week start day and view options * [Keyboard Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md) - Navigate Week View efficiently * [Smart Filters](/docs/busycal/70612-smart-filters.md) - Save custom Week View configurations * [Time Zones](/docs/busycal/70609-time-zones.md) - Display multiple time zones in Week View --- # Month View Month view displays one month of your calendar by default (with the option to redefine “month” as any period from 1–12 weeks). ![Month View Calendar](https://downloads.busymac.com/resources/img/busycal-mac/slideshow-month.png) To scroll backward or forward one month at a time, click the left or right arrow button, or press `⌘-Left Arrow` or `⌘-Right Arrow`. To scroll backward or forward one week at a time, swipe upward or downward with two fingers on a trackpad, swipe upward or downward with one finger with a Magic Mouse, or press `⌘-Option-Left Arrow` or `⌘-Option-Right Arrow`. For more navigation options, see [Month View Navigation Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md). When you scroll through longer multi-week layouts, the month name overlay stays pinned while you move through the grid, helping you keep context as you cross month boundaries. You can change Month view to show any range from 1–12 weeks by: * Using the **View menu > Weeks in Month** submenu * Opening **BusyCal > Settings > General** and choosing the desired time period from the "Month view shows" pop-up menu. * `CTRL+Click` (right-click) on the **Month** view-navigation button in the toolbar You can also change various display styles in [Appearance Settings](/docs/busycal/70607-preferences.md#appearance-preferences). ### Customizing Weeks in Month[​](#customizeweeks "Direct link to Customizing Weeks in Month") Video demonstrating how this can be done from the Month view-navigation button in the toolbar. * Select **One Month** to view a *fixed* month from start to end * Select **X Weeks** to view the current week + the *next X weeks* [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/weeks_in_month_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/weeks_in_month_web_omm.png) tip If you display a custom number of weeks in the Month view, clicking the Today button causes the current week to appear in the top row of the Month view. Otherwise, the current week appears in its normal position in the Month view. ### Month View Display Options[​](#display-options "Direct link to Month View Display Options") Optimize how events appear in Month View: #### Event Display[​](#event-display "Direct link to Event Display") * **Event Times** - Choose from various time formats in [Appearance Settings](/docs/busycal/70607-preferences.md#appearance-preferences): * Compact formats (10a, 10:00) for more space * Full formats (10:00 AM - 12:00 PM) for clarity * Left or right justification options * **Word Wrap** - Toggle with `Shift-⌘-W` to fit more events or show full titles * **Event Text Color** - Use calendar colors or black text for better readability #### Space Optimization[​](#space-optimization "Direct link to Space Optimization") * **Banner Display** - Configure how all-day events appear (true color vs. selected only) * **Multi-day Events** - Choose between combined or separated display * **Week Numbers** - Show/hide week numbers to save space * **Graphics** - Resize or hide [event graphics](/docs/busycal/70598-graphics.md) when space is limited #### Visual Enhancements[​](#visual-enhancements "Direct link to Visual Enhancements") * **Today Highlight** - Always highlight today's date in [Accessibility Settings](/docs/busycal/70607-preferences.md#appearance-preferences) * **Month Separators** - Add thick borders between months for clarity * **Weekend Colors** - Differentiate weekends with red or gray day numbers ### Natural Language Input in Month View[​](#natural-language-input "Direct link to Natural Language Input in Month View") Natural Language in Multiple Places BusyCal supports natural language in multiple ways: 1. **Quick Entry button** (`+` in toolbar) - Always available for natural language input, see [Quick Entry](/docs/busycal/70605-quick-entry.md). 2. **Direct in Month, [Day](/docs/busycal/70587-day-view.md) and [Week](/docs/busycal/70588-week-view.md) views** - When this setting is enabled with inline editor, you can also use natural language when creating events directly in the calendar Create events faster in Month View using natural language with the inline editor: When you double-click to create an event in Month View, BusyCal can automatically parse what you type to extract event details. For example, typing "Lunch with Sarah at 12pm at Cafe Blue" creates an event with: * Title: "Lunch with Sarah" * Time: 12:00 PM * Location: "Cafe Blue" #### Enabling Natural Language[​](#enabling-natural-language "Direct link to Enabling Natural Language") Natural language input directly from within the calendar requires the inline editor. To enable: 1. Go to **BusyCal > Settings > Info Panel** 2. **Disable** "Open Info Panel for new events" to use the inline editor 3. Go to **BusyCal > Settings > Advanced > Other** 4. Enable **"Use natural language processing for events created in Month view"** Now when you create events in Month View via a double-click, the inline editor will parse your input automatically. ### Efficient Navigation in Month View[​](#efficient-navigation "Direct link to Efficient Navigation in Month View") Master Month View navigation with these techniques: #### Quick Date Jumping[​](#quick-date-jumping "Direct link to Quick Date Jumping") * **Go to Today** - Press `⌘-T` to instantly return to current month * **Go to Specific Date** - Press `Shift-⌘-T` to jump to any date * **Mini Calendar** - Click dates in the mini calendar to jump quickly #### Scrolling Options[​](#scrolling-options "Direct link to Scrolling Options") * **By Month** - Click arrows or press `⌘-Left/Right Arrow` * **By Week** - Swipe vertically or press `⌘-Option-Left/Right Arrow` * **Smooth Scrolling** - Use trackpad/mouse for fluid navigation * **Option-Scroll** - Hold Option to override day cell scrolling #### View Combinations[​](#view-combinations "Direct link to View Combinations") * **Multi-Week Planning** - Set to 6-12 weeks for project overview * **Focused View** - Use 2-3 weeks to concentrate on immediate schedule * **Traditional Month** - Select "One Month" for classic calendar display ### Month View Pro Features[​](#pro-features "Direct link to Month View Pro Features") Unlock the full potential of Month View: #### Advanced Event Management[​](#advanced-event-management "Direct link to Advanced Event Management") * **Batch Selection** - `⌘-click` multiple events to move or edit together * **Quick Duplication** - `Option-drag` events to create copies * **Cross-Month Dragging** - Drag events to mini calendar to move between months #### Smart Filtering Integration[​](#smart-filtering-integration "Direct link to Smart Filtering Integration") * **Calendar Sets** - Use [Smart Filters](/docs/busycal/70612-smart-filters.md) to switch between work/personal views * **Saved Layouts** - Remember custom week counts per filter * **Quick Toggle** - Switch filters with keyboard shortcuts `⌘-Control-[1-9]` #### Productivity Workflows[​](#productivity-workflows "Direct link to Productivity Workflows") * **Monthly Planning** - Combine 12-week view with [tags](/docs/busycal/70597-tags.md) for quarterly planning * **Dense Information** - Reduce fonts and disable graphics for maximum event visibility * **Print Optimization** - Configure display before [printing](/docs/busycal/70610-printing.md) monthly calendars #### Event Suggestions[​](#event-suggestions "Direct link to Event Suggestions") * **Enable/Disable Suggestions** - Control event suggestions in Month View via **Settings > Suggestions > Show suggestions in Month View** * **Inline Templates** - Start typing directly in a day cell to see matching past events as templates * **Quick Event Creation** - Select a suggestion to instantly copy its properties (time, location, alarms) to your new event * **Customize Behavior** - Configure which calendars to search and properties to copy in Settings ## See Also[​](#see-also "Direct link to See Also") * [Day View](/docs/busycal/70587-day-view.md) - Detailed daily calendar display * [Week View](/docs/busycal/70588-week-view.md) - Weekly calendar overview * [Year View](/docs/busycal/70590-year-view.md) - Annual calendar perspective * [Appearance Settings](/docs/busycal/70607-preferences.md#appearance-preferences) - Customize Month View appearance * [Keyboard Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md) - Navigate Month View efficiently * [Smart Filters](/docs/busycal/70612-smart-filters.md) - Save custom Month View configurations --- # Year View Year view provides a year-at-a-glance overview for planning (or for looking back at the year). It shows your year in a unique format with each month laid out horizontally, and can optionally display top statistics in the Highlights drawer. It can be shown in the classic 12-month layout, or in a continuous **Year Planner** layout. ![Year View](https://downloads.busymac.com/resources/img/busycal-mac/year1.png) ## View Settings[​](#view-settings "Direct link to View Settings") Year View has its own settings popover for quickly switching modes and display options. * Click the **View Settings** button in the lower-right corner of the Year View. * Toggle **Year Planner** and **Show Highlights**, and choose a **Display style** (Banners or Heatmap). * With **Year Planner** turned on, toggle **Align weekdays across months** to line up the days of the week across all 12 months. ![Year View Settings](https://downloads.busymac.com/resources/img/busycal-mac/year_settings.png) ## Year Planner[​](#year-planner "Direct link to Year Planner") Enable **Year Planner** to switch to a planner-style layout that’s designed for long-range planning. Months are arranged in rows, making it easy to scan patterns and find open days across the year. Turn on **Align weekdays across months** to shift each month so the days of the week line up down the year. Weekends then form stripes you can follow from January to December, which makes it easy to spot every Saturday, every Monday, or any other day of the week at a glance — much like a printed wall planner. Each row still shows only that month’s days, so the left and right edges are uneven. This option is off by default, follows your start-of-week setting, and applies only to the Year Planner layout. ![Year Planner](https://downloads.busymac.com/resources/img/busycal-mac/year1.png) ## Month by Month[​](#month-by-month "Direct link to Month by Month") In the classic Month by Month layout, BusyCal shows all 12 months at once, showing you one quarter per row. ![Year View (Month by Month)](https://downloads.busymac.com/resources/img/busycal-mac/year7.png) While in Year View, you can scroll forward or backward by one year by clicking the navigation arrows, or by pressing `⌘-Left Arrow` or `⌘-Right Arrow`. To scroll forward or backward by four months (one row), press `⌘-Option-Left Arrow` or `⌘-Option-Right Arrow`. Double-click on a date to switch to month view. While the Task Panel is open and showing on the right hand side, you can also drag and drop tasks on a date to quickly assign new dates. ## Changing Display Style[​](#display-style "Direct link to Changing Display Style") Year View supports two display styles: * **Banners** — Shows events as colored bars across their dates for easy “what’s booked” scanning. * **Heatmap** — Shades each day based on overall activity, making busy vs. quiet days stand out at a glance. Year View also supports special icons for **Birthdays**, **Anniversaries**, and **Journal** entries so these stand out even in compact views and heatmap mode. Make sure those calendars are enabled in the Calendar List to see their icons. ### Banners[​](#banners "Direct link to Banners") ![Year View (Banners)](https://downloads.busymac.com/resources/img/busycal-mac/year1.png) ### Heatmap[​](#heatmap "Direct link to Heatmap") ![Year Planner (Heatmap)](https://downloads.busymac.com/resources/img/busycal-mac/year5.png) ![Year View (Heatmap)](https://downloads.busymac.com/resources/img/busycal-mac/year6.png) ## Show Highlights[​](#show-highlights "Direct link to Show Highlights") Enable **Show Highlights** to display a Highlights drawer at the bottom of Year View. This section surfaces top statistics for the currently selected calendars, such as: * Top calendar, location, and attendee * Most active month and day * Totals (for example, event count and time) ![Year View Highlights](https://downloads.busymac.com/resources/img/busycal-mac/year2.png) ## Events on Mouse-Over[​](#mouseover "Direct link to Events on Mouse-Over") If you enable **Show events on mouse-over**, you can hover over any day to display a popover with a list of that day’s events. ![Year View Popover](https://downloads.busymac.com/resources/img/busycal-mac/year3.png) --- # List View List view displays all your events in a scrolling table format. ![List View](https://downloads.busymac.com/resources/img/busycal-mac/list_view.png) You can customize List view directly: * To select which columns to display, *Control-click* the column header and choose column names from the contextual menu to select or deselect them. * Move/resize columns by dragging the vertical divider line between column headers. * Sort the list by clicking a column header. Click again to reverse the sort order. ### List Settings[​](#list-settings "Direct link to List Settings") You can choose a date range (Day, Week, Month, Year, Decade, and Custom) from the pop-up menu in the upper-right corner, or choose List Settings to customize List view. ![List View Settings](https://downloads.busymac.com/resources/img/busycal-mac/list_setting_menu.png) ![List View Settings](https://downloads.busymac.com/resources/img/busycal-mac/list_settings.png) The List Settings dialog provides the following options: * **Columns Shown** — Check the columns you want to display in List view. tip If you need to track billable hours, you can use the Duration column to display the duration of each event, and the Total Duration column to display a running total of all events currently being viewed. See [Time Tracking](/docs/busycal/70613-time-tracking.md) for more info. * **Sort Order** — Use the pop-up menus to choose the primary, secondary, tertiary, and quaternary sort order. Select the Reverse checkbox to sort that column in reverse. * **Custom Date Range** — In addition to the built-in date ranges on the pop-up menu, you can specify a custom date range for *x* days. Once you've modified the List view settings, you can create a [smart filter](/docs/busycal/70612-smart-filters.md) to "Remember view settings & preferences" that enables you to redisplay the List view settings in the future by selecting the smart filter. ### Line Numbering[​](#line-numbering "Direct link to Line Numbering") You can display a numerical count for each event in the list by adding the **Line # / Manual Sort** column. This column shows line numbers for each event entry, providing a quick visual reference for the total number of events displayed and their sequential order in the list. To enable line numbering: 1. *Control-click* on any column header in List view 2. Select **Line # / Manual Sort** from the contextual menu 3. The column will appear showing sequential numbers for each event This is particularly useful when you need to count events, reference specific items by number, or manually reorder events within the list. --- # Calendar List (Left Panel) BusyCal displays a list of your calendars (along with optional mini month calendars) in the left sidebar. You can rearrange this list and use it to show, hide, and share calendars, among other things. ## Sidebar[​](#sidebar "Direct link to Sidebar") BusyCal displays a list of your calendars (along with optional mini month calendars) in the left sidebar. If the sidebar is not visible, you can display it by choosing View > Show Calendar List, pressing `⌘-Option-C`, or clicking the Hide/Show Calendar List button on the left side of the toolbar, next to the Close/Minimize/Zoom buttons. ![Hide / Show Calendar List Icon](https://downloads.busymac.com/resources/img/busycal-mac/cal_toggle_button.png) ![Left Calendar Source Panel](https://downloads.busymac.com/resources/img/busycal-mac/calendar_panel.png) ## Managing Calendar Visibility[​](#calendarvisibility "Direct link to Managing Calendar Visibility") The Calendar sidebar gives you full control over which calendars are displayed. You can quickly toggle between **showing none**, **only some**, or **all calendars** to keep your schedule focused and clutter-free. #### How to Show or Hide Calendars:[​](#how-to-show-or-hide-calendars "Direct link to How to Show or Hide Calendars:") 1. **Check / Uncheck Calendars** – Click the checkbox next to any calendar to show or hide its events. 2. **`CTRL+Click` (right-click) for More Options:** * **Show None** – Hides all calendars. * **Show All Calendars** – Displays events from every calendar. * **Show Only This Calendar** – `CTRL+Click` (right-click) any calendar and select this to hide all others instantly. This flexible approach makes it easy to switch views and focus on the events that matter most. Furthermore, you can create a [calendar set](/docs/busycal/70612-smart-filters.md#calendar-sets) to automatically select the calendars you wish to focus on. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/calendar_list_selection_web.webm) ## Permanently Hide or Unsubscribe from Calendars[​](#permanently-hide-calendars "Direct link to Permanently Hide or Unsubscribe from Calendars") If you want to completely remove a calendar from view in the left sidebar, you have two options: * **Hide the calendar permanently** – The calendar keeps syncing, but it leaves the sidebar and its events and alarms stop appearing. * **Unsubscribe from the calendar** – The calendar is removed entirely, events are discarded, and syncing is turned off. ### Hiding a Calendar Permanently[​](#hiding-a-calendar-permanently "Direct link to Hiding a Calendar Permanently") 1. **`Control + Click` (right-click)** on a calendar in the left panel. 2. Select **Hide Calendar** from the context menu. 3. Click **Hide** to confirm. The calendar continues syncing in the background. **Hide Calendar** is offered for regular calendars and task lists, including an iCloud Reminders list. It is not offered for Birthday and Anniversary calendars or for calendar subscriptions; [unsubscribe](#unsubscribe-calendar) from those instead. Calendar groups cannot be hidden either, though you can uncheck a group to hide all the calendars inside it. A hidden calendar stays in the sidebar while Show Hidden Calendars is on **Hide Calendar** marks the calendar as hidden. It leaves the sidebar only when **View > Show Hidden Calendars** is turned off, so this is the step to check if the calendar you just hid is still listed. **Show Hidden Calendars** is a checkable menu item. A checkmark beside it means hidden calendars are still being listed, and each one is marked as hidden: its checkbox is drawn in a dimmed style, and a crossed-out eye appears at the right edge of the row. Those markers confirm the calendar is already hidden and that only this menu setting is keeping it in view. Open the **View** menu and click **Show Hidden Calendars** to remove the checkmark. The hidden calendars then disappear from the sidebar. Alarms follow the same setting While hidden calendars are out of view, BusyCal does not fire alarms for them. Turning **Show Hidden Calendars** back on makes a hidden calendar's alarms eligible again, even though hiding it also cleared its checkbox: BusyCal deliberately keeps firing alarms for unchecked calendars so you don't miss anything. To silence one calendar's alarms whatever this setting is, use **Ignore alarms** in [Calendar Info](#calendar-info) instead. #### Unhiding a Calendar[​](#unhiding-a-calendar "Direct link to Unhiding a Calendar") 1. Open the **View** menu and turn on **Show Hidden Calendars**, so hidden calendars are listed again. 2. **`Control + Click`** the hidden calendar. Hovering its checkbox shows the tooltip "Hidden Calendar" if you need to confirm which one it is. 3. Select **Unhide** from the menu. 4. Click the calendar's checkbox to show its events again, since unhiding leaves it unchecked. 5. Turn **Show Hidden Calendars** back off to return the sidebar to its normal state. ### Unsubscribing from a Calendar[​](#unsubscribe-calendar "Direct link to Unsubscribing from a Calendar") If you no longer need a calendar, **unsubscribing** will remove its events from BusyCal and stop syncing. 1. **`Control + Click` (right-click)** on a calendar in the left panel and select **Unsubscribe**. * If the option isn't visible, **double-click** the calendar and click **Unsubscribe** in the Calendar Info dialog. 2. The calendar will be removed from BusyCal. #### Re-Subscribing to a Calendar[​](#re-subscribing-to-a-calendar "Direct link to Re-Subscribing to a Calendar") * Open **View Menu > Show Unsubscribed Calendars**. * Find the unsubscribed calendar and **click the faded checkbox** next to it. * The calendar will reappear and start syncing again. If you see calendars that are greyed out or have disabled context-menu options, see: [Calendars are greyed out](/docs/faqs/calendars-greyed-out-and-disabled.md). ## Accounts[​](#accounts "Direct link to Accounts") The Calendar List in the left sidebar displays a list of your calendars grouped by source: * **On My Mac** — Calendars stored locally on your Mac. * **iCloud, Google, Exchange, etc.** — Calendars hosted on a server such as iCloud, Google, Exchange, Fastmail, or other CalDAV Server. * **Other** — Displays [Birthdays and Anniversaries](/docs/busycal/70599-birthdays-and-anniversaries.md) from macOS Contacts or BusyContacts, plus read-only [calendar subscriptions](/docs/busycal/70601-subscribing-to-public-calendars.md) from a WebDAV server, like a holiday calendar. To show or hide any calendar, click its checkbox. To show or hide *all* calendars, hold down ⌘ while clicking any calendar's checkbox. ## Symbols[​](#symbols "Direct link to Symbols") Symbols may appear to the right of some calendar names: ![Publish Icon](https://downloads.busymac.com/resources/img/busycal-mac/cal_share_symbol.png) Calendars that you are sharing with others appear with a publish icon next to them that looks like a broadcast signal. ![Task Icon](https://downloads.busymac.com/resources/img/busycal-mac/cal_task_symbol.png) Calendars that are read-only will appear with a crossed-out pencil symbol. These can be holiday subscription calendars, shared calendars, or special built-in calendars such as the [Birthday & Anniversary calendars](/docs/busycal/70599-birthdays-and-anniversaries.md). ![Read-only Calendar](https://downloads.busymac.com/resources/img/busycal-mac/readonly-cal.png) Task calendars appear with a checkmark icon next to them (see [Calendar Types](#calendar-types) below). ## Calendar Types[​](#calendar-types "Direct link to Calendar Types") Calendars hosted on iCloud (and most CalDAV servers) are type-specific, meaning the calendar can contain either events or tasks, but never both. BusyCal indicates a task calendar by displaying a checkmark next to its name. In iCloud, you may see seemingly duplicate calendars with the same name - one with a checkmark and one without. This is because iCloud will create a calendar that can only hold events and one that can only hold tasks. This is expected and they're not in fact duplicate calendars. The Apple Calendar app won't show you these because Apple Calendar does not support displaying tasks alongside events - this is a BusyCal specific feature where you can manage both your calendar events and tasks within the same app. Instead, Apple offers two separate apps: Calendar and Reminders to manage events and tasks respectively. ![Task Calendars in Sidebar](https://downloads.busymac.com/resources/img/busycal-mac/calendar_types.png) ## Calendar Colors[​](#calendar-color "Direct link to Calendar Colors") To change the color of a calendar (and all its events), *Control-click* the calendar name in the sidebar and choosing a color from the Color submenu of the contextual menu. ![Calendar Color Menu](https://downloads.busymac.com/resources/img/busycal-mac/pick_cal_color.png) ### Prevent a Synced Account from Overriding Your Color[​](#ignore-calendar-color "Direct link to Prevent a Synced Account from Overriding Your Color") Some services sync calendar colors across devices. If your calendar color keeps reverting, open the **Calendar Info** dialog (double-click the calendar name) and enable **Ignore Calendar Color** (sometimes shown as **Ignore 'Calendar Colour'**). This keeps the calendar’s color local to your Mac instead of accepting the server-provided color during sync. See also: [Calendar colors keep reverting](/docs/faqs/calendar-colors-keep-reverting.md). ## New Calendar[​](#new-calendar "Direct link to New Calendar") To create a new calendar, choose `File > New Calendar > Location > Type`. The **Location** is where the calendar will be hosted (On My Mac, iCloud, Google, Exchange, etc.). note You cannot create a new calendar on Google from within BusyCal. You must create the new calendar on Google Calendar in your web browser; it will then appear in BusyCal on your next sync. The **Type** determines whether the calendar contains events or tasks. Most servers require separate calendars for events and tasks (see [Calendar Types](#calendar-types) for more information). ## Calendar Info[​](#calendar-info "Direct link to Calendar Info") To see and adjust calendar details, open the Calendar Info dialog by **double-clicking** a calendar name in the sidebar or **Control-clicking** a calendar and choosing Get Info from the contextual menu. ![CalDAV Calendar Info](https://downloads.busymac.com/resources/img/busycal-mac/cal_info_dialog.png) The Calendar Info dialog enables you to edit the following settings: * **Name** — The name of the calendar. * **Description** — A description for the calendar. * **Show upcoming events in Menu Bar** — When this box is checked (turned on by default), the BusyCal Menu App will display upcoming events from this calendar, such as upcoming conference calls or meetings. * **Show change notifications in Inbox** — When this box is checked, your BusyCal Inbox displays notifications for all events on this calendar that are added or changed by other people. If you want to avoid seeing change notifications for this calendar, uncheck the box. * **Show meeting notifications in Inbox** — When this box is checked, your BusyCal Inbox displays meeting invitations and related meeting notices for this calendar. Turn it off if you want to keep the calendar's events visible in BusyCal but handle its invitations in another app, such as Outlook, or if you do not want to see invitations sent to the owner of a shared calendar. This setting applies to each calendar. See [How can I hide meeting invitations from one calendar?](/docs/faqs/hide-meeting-invitations-from-calendar.md). * **Events affect availability** — Check this box if the events on this calendar affect your availability, for other CalDAV clients you are syncing with that support free/busy viewing. (This setting is always enabled on your primary Exchange calendar, and secondary Exchange calendars cannot be used for scheduling events in BusyCal.) * **Holiday calendar** — See [Holidays](/docs/busycal/70600-holidays.md). * **Ignore Alarms** — Check this box to ignore the event alarms on this calendar. The Alarms are removed only on this Mac, and are not removed from the server or from other clients. An icon with an alarm and a cross in the center will appear next to the calendar to indicate alarms have been disabled. * **Ignore Attachments** — Check this box to ignore the event attachments on this calendar. The Attachments are removed only on this Mac, and are not removed from the server or from other clients. * **Ignore Tasks** — Check this box to ignore tasks on this calendar. The tasks are removed only on this Mac, and are not removed from the server or from other clients. * **Sharing Options** — Share this calendar publicly or privately. (Most services that support calendar sharing let you do this from within BusyCal; Google is a notable exception.) See the following topics: * [Sharing Calendars with Others through iCloud](/docs/busycal/70630-using-busycal-with-icloud.md#sharing) * [Sharing Calendars with Others though Google](/docs/busycal/70636-using-busycal-with-google.md#sharing) * [Sharing Calendars with Others through Exchange](/docs/busycal/70642-using-busycal-with-exchange-office-365.md#sharing) * [Sharing Calendars with Others through CalDAV](/docs/busycal/70647-using-busycal-with-caldav.md#sharing) * **Unsubscribe** — Click the Unsubscribe button to unsubscribe from the calendar. The calendar is removed only from this Mac, and is not removed from the server or from other clients. ## Calendar Groups (Folders)[​](#calendar-groups "Direct link to Calendar Groups (Folders)") You can arrange calendars into groups (also known as folders), which enable you to show or hide multiple calendars at once. Grouped calendars must all exist on the same service (such as Local, iCloud, LAN, and CalDAV), but you can use [smart filters](/docs/busycal/70612-smart-filters.md) to create calendar sets that span different services. To create a group for calendars on any service, first select a calendar from that service. Then choose **File > New Calendar Group**, type a name for the calendar, and press Return. Drag calendars onto the group name to add them to the group; drag them out to remove them. To show or hide all the calendars in the group, select or deselect the group checkbox. You can rearrange calendar groups in the sidebar by dragging them, rename them by double-clicking them, or delete them by selecting them and pressing `⌘-Delete` or by *Control-clicking* them and choosing Delete from the contextual menu. ![Calendar Groups](https://downloads.busymac.com/resources/img/busycal-mac/left_cal_group.png) ## Ordering Events[​](#ordering-events "Direct link to Ordering Events") Events and banners (all-day events) in the calendar are grouped and displayed based on the order of calendars in the Left Calendar Source Panel. To change the order of events, simply **drag and rearrange the calendars** in the left panel. note A banner that spans several weeks or months cannot always stay in the same row for its whole span. BusyCal fills the space that is free on each day so there are no empty gaps between banners, so a long banner can appear below other banners on later days. This is normal. ## Ignoring Alarms[​](#ignoring-alarms "Direct link to Ignoring Alarms") By default, BusyCal will display alarms for all calendars, even when the calendar itself is unchecked in the sidebar. This important behavior ensures you don't miss important reminders when switching between [calendar sets](/docs/busycal/70612-smart-filters.md#calendar-sets). The **Ignore Alarms option**, however, overrides this behavior for specific calendars. BusyCal allows you to selectively ignore alarms from specific calendars while still displaying those calendars' events. ### How to Ignore Alarms from a Calendar:[​](#how-to-ignore-alarms-from-a-calendar "Direct link to How to Ignore Alarms from a Calendar:") 1. **Double-click** a calendar name in the sidebar, or **Control-click** a calendar and choose **Get Info** from the contextual menu. 2. In the Calendar Info dialog, check the **Ignore Alarms** option. 3. Click **OK** to save your changes. When a calendar's alarms are ignored, a special icon (alarm with a cross) will appear next to the calendar name in the sidebar, indicating that alarms are disabled for that calendar. This is especially useful for: * Secondary calendars that would create duplicate alarms * Calendars used for reference but not requiring alerts ### Re-enabling Calendar Alarms:[​](#re-enabling-calendar-alarms "Direct link to Re-enabling Calendar Alarms:") If you previously disabled alarms for a calendar and want to start receiving notifications again: 1. **Double-click** the calendar or **Control-click** and select **Get Info**. 2. Uncheck the **Ignore Alarms** checkbox. 3. Click **OK** to save your changes. The alarm icon with a cross will disappear, indicating that alarms are now enabled for this calendar. tip If your calendar alarms suddenly stopped working, check if you've accidentally enabled the **Ignore Alarms** option for that calendar. This is a common cause of missing notifications that's easy to fix by following the steps above. note When syncing with a CalDAV calendaring account such as iCloud or Google Calendar, alarms on shared calendars do not sync. This is because alarms are user-specific—each participant manages their own reminders independently. While the same alarm time might work for both users in some cases, users often have different preferences, travel times, or reside in different time zones. As a result, calendar systems treat alarms as private to each participant to avoid conflicts and ensure personal relevance. --- # Event Types BusyCal supports a variety of event types, including banners, tasks (also known as to dos), stickies, and journals. The following event types are available: ### Banner / All-Day Event[​](#banner "Direct link to Banner / All-Day Event") An all-day event that can span multiple days, appears above all timed events. To create a new banner, choose `File > New Banner`, press `⌘-B`, or *Control-click* on a day and choose New Banner from the contextual menu. ### Event[​](#event "Direct link to Event") An event with a start and end time. To create a new event, choose `File > New Event`, press `⌘-N`, double-click on a day, *Control-click* on a day and choose **New Event** from the contextual menu, or click and drag in the Day or Week view. ### Dated Task[​](#dated-task "Direct link to Dated Task") A task with a due date that appears in the calendar and/or Task List. To create a new task, choose `File > New Task`, press `⌘-K`, or *Control-click* on a day and choose **New Task** from the contextual menu. See [Tasks](/docs/busycal/70594-tasks.md) for more information. ### Timed Task[​](#timed-task "Direct link to Timed Task") A task with a due date and time that appears in the calendar and/or Task List. To create a new timed task, choose `File > New Timed Task`, press `⌘-Option-K`, or *Control-click* on a day and choose **New Timed Task** from the contextual menu. See [Tasks](/docs/busycal/70594-tasks.md) for more information. ### Undated Task[​](#undated-task "Direct link to Undated Task") A task with no due date that appears only in the Task List. To create a new undated task, choose `File > New Undated Task`, press `⌘-U`, or *Control-click* in the Task List sidebar and choose **New Undated Task** from the contextual menu. See [Tasks](/docs/busycal/70594-tasks.md) for more information. ### Sticky[​](#sticky "Direct link to Sticky") A floating yellow sticky note attached to a date. To create a new sticky choose `File > New Sticky`, or press `⌘-Y`. ### Journal[​](#journal "Direct link to Journal") A Journal event is similar to an all-day event. It occurs on a date, but has no start or end time, and does not occupy any time in your calendar. Journal events can be useful for recording information that occurred on a specific date, such as the details of a discussion, a list of accomplishments, or a diary entry. #### Convert an Event or Task into a Journal Entry[​](#convert-to-journal "Direct link to Convert an Event or Task into a Journal Entry") If you already created something as an event or task and later decide it should be a journal entry, you can convert it: 1. Select the event/task in the calendar. 2. `CTRL+Click` (right-click) to open the context menu. 3. Choose **Convert to Journal**. BusyCal creates a journal entry for the same date, which is useful for turning “notes about what happened” into a journal without needing to retype everything. ### Graphic[​](#graphic "Direct link to Graphic") A floating graphic attached to a date. Graphics may also be attached to events. To add graphics, drag them onto the calendar from the Graphics Panel (choose Window > Graphics Panel). See [Graphics](/docs/busycal/70598-graphics.md) for more information. ## Banner, Event, Task, and Journal[​](#banner-event-to-do-and-journal "Direct link to Banner, Event, Task, and Journal") This day has a banner, an event, a (dated) task, and a journal: ![Banner, Event, Task, Journal](https://downloads.busymac.com/resources/img/busycal-mac/day_event_types.png) ## Graphic[​](#graphic-example "Direct link to Graphic") This day has a graphic: ![Graphic](https://downloads.busymac.com/resources/img/busycal-mac/month_day_graphic.png) ## Sticky[​](#sticky-example "Direct link to Sticky") This day has a sticky: ![Sticky](https://downloads.busymac.com/resources/img/busycal-mac/sticky_month_view.png) Working with stickies: * You can drag a sticky by its title bar. * To delete a sticky, click in the title bar to select it, then press Delete. To minimize a sticky to the date header, click the “x” in its upper left corner. Hovering over a minimized sticky displays a magnifying glass, which expands the sticky to its full size when clicked. In general, Stickies are designed primarily as a decoration for the Month view and are not recommended in Day and Week view (unless minimized). ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") note Stickies, Journals, and Graphics in BusyCal sync between BusyCal clients through iCloud, but appear as all-day events (i.e., banners) in other clients. See [iCloud Limitations](/docs/busycal/70630-using-busycal-with-icloud.md#limitations) for more information. --- # Tasks BusyCal can manage all your tasks (also known as to dos or reminders). Tasks can be displayed in a Task List in the right sidebar and/or in the calendar on the date they are due. Tasks come in three flavors: * **Undated Tasks** — Tasks without a due date are displayed in the Task List only. * **Dated Tasks** — Tasks with a due date can be displayed in the calendar, in the Task List, or both. * **Timed Tasks** — Tasks with a due date and time can be displayed in the calendar, in the Task List, or both. ## Task List[​](#to-do-list "Direct link to Task List") To show the Task List, choose View > Show Task List, press `⌘-Option-T`, or click the Hide/Show Task List button on the right side of the toolbar and choose either Show Task List or Show Both from the pop-up menu. The Task List appears in the right sidebar. ![Task List](https://downloads.busymac.com/resources/img/busycal-mac/tasklist.png) The Task List can be sorted by Due Date, Priority, Title, Calendar, Tag, or Manually. To change the current sort order and other Task List settings, use the pop-up menu at the top of the Task List, or go to **BusyCal > Settings > Tasks**. Sorting by Calendar groups tasks by calendar, and the groups follow the order the calendars appear in the [Calendar List](/docs/busycal/70592-calendar-list.md) in the left sidebar. The following video demonstrates how to: * Mark a task as **starred** * Change a task's **priority** * Change task sorting [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/starring_tasks_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/starring_tasks_web_poster.png) ## Show Tasks in the Calendar[​](#show-to-dos-in-the-calendar "Direct link to Show Tasks in the Calendar") You can show dated tasks, timed tasks, and completed tasks in the calendar on the date they are due or completed. While **Show dated Tasks in calendar** is on, you can turn off **Include All-Day Tasks** to leave out the dated tasks that have no due time. If a task is not completed on its due date, it carries forward each day until completed (this behaviour can be changed from **Settings > Tasks** uncheck **Carry forward uncompleted Tasks**). (If dated and completed tasks don’t appear in your calendar, see [Task Settings](#to-do-preferences), just ahead.) ![Tasks in Calendar](https://downloads.busymac.com/resources/img/busycal-mac/task_on_cal.png) ## Task Sorting[​](#to-do-sorting "Direct link to Task Sorting") Timed tasks are sorted inline with calendar events (e.g. a timed task with a due time of 9:00 AM will appear sandwiched in between events at 8:00 AM and 10:00 AM). Dated tasks are grouped together below events. Tasks that occur at the same date or time are sorted by priority and title. Completed tasks are sorted by completion time. ### Sorting Manually[​](#sorting-manually "Direct link to Sorting Manually") The Task List supports manual sorting within each sorted section, giving you the flexibility to arrange tasks in your preferred order. If your tasks aren’t appearing in the expected sort order, it’s possible they were manually reordered at some point. To reset the manual order: * Select all tasks (click one task, then press **CMD+A**). * Control-click (right-click) any selected task and choose **Reset Manual Task Ordering…** from the context menu. ## Creating Tasks[​](#creating-to-dos "Direct link to Creating Tasks") * **Dated Tasks** — To create a new dated task, choose File > New Task, press `⌘-K`, or *Control-click* on a day and choose New Task from the contextual menu. A dated task appears in your calendar on the due date, with a checkbox in front of it. * **Timed Tasks** — To create a new timed task, choose File > New Timed Task, press `⌘-Option-K`, or *Control-click* on a day and choose New Timed Task from the contextual menu. A timed task appears in your calendar on the due date and time, with a checkbox in front of it. tip To create a timed task in Week view, hold down ⌘ while double-clicking in the calendar. * **Undated Tasks** — To create a new undated task, choose File > New Undated Task, press `⌘-U`, or *Control-click* in the Task List sidebar and choose New Undated Task from the contextual menu. You can also create tasks using [Quick Entry](/docs/busycal/70605-quick-entry.md) in the app or from the [BusyCal Menu](/docs/busycal/70606-busycal-menu.md) by preceding the text with a dash `-`, or the words `todo`, `remember to`, or `remind me to`. If a date or time is included, BusyCal creates a dated or timed task. Otherwise, an undated task is created. For example: ``` -Call Bob todo Call Bob tomorrow -Call Bob tomorrow at 10am remember to Call Bob next Tuesday -Call Bob Nov 7 remind me to pick up dry cleaning at 5pm ``` If you mark a task as completed by checking the “done” checkbox in the calendar or Info Panel (or pressing `⌘-/`), the completed task appears with a checkmark in front of it on the date that it was completed. ## Task Settings[​](#to-do-preferences "Direct link to Task Settings") To customize how tasks are created and displayed, choose **BusyCal > Settings > Tasks**. ![Task Settings](https://downloads.busymac.com/resources/img/busycal-mac/settings_tasks.png) The following options are available for customizing tasks: * **Default list for new Tasks** — The default calendar / task-list new tasks are created in. * **Default priority** — The default priority assigned to newly created tasks. * **Sort Task List by** — The sort order for the Task List. Sorting can also be changed directly from the Task Panel, by clicking on the sorting drop-down button. * **Show dated Tasks** — The date range for tasks displayed in the Task List. The default displays tasks due by next month. You can select a different range if you want to view fewer or more tasks. * **Show undated Tasks** — Whether to display undated tasks in Task List. * **Show completed Tasks** — Whether to display completed tasks in Task List. * **Duration in day & week view** — Default duration to use for tasks when a custom duration is not assigned. * **Show dated Tasks in calendar** — Whether to display dated tasks in the calendar on their due dates. * **Include All-Day Tasks** — Whether to include all-day tasks among them. On by default; turn it off and only the dated tasks that have a due time are shown. * **Show completed Tasks in calendar** — Whether to display completed tasks in the calendar on the dates they are completed. * **Carry forward uncompleted Tasks** — Whether to carry forward past due tasks and display them on the current date. Such Tasks appear with a small > arrow displayed in the middle of the checkbox in Month / Week / Day view. ## Cancelled Tasks[​](#cancelled-tasks "Direct link to Cancelled Tasks") In addition to the usual *Needs Action*, *In Progress*, and *Completed* states, BusyCal lets you mark a task as **Cancelled**. Cancelled tasks are filtered out of the Task List and the calendar by default, so you can retire work without permanently deleting it. To enable this workflow: 1. Open **BusyCal > Settings > Info Panel** and turn on the **Status** field for tasks. The Status control then appears in the Info Panel whenever a task is selected. 2. Select a task, open the [Info Panel](/docs/busycal/70595-info-panel.md), and set its **Status** to **Cancelled**. The task is immediately removed from the Task List and the calendar view. 3. To make cancelled tasks visible again — shown in strikethrough style alongside declined events — choose **View > Show Declined & Canceled Events**. The same toggle controls visibility for cancelled events and declined invitations, as described under [The BusyCal Window](/docs/busycal/70586-the-busycal-window.md#cv-view-menu). You can change the status back to *Needs Action*, *In Progress*, or *Completed* at any time to bring the task back into your normal views. tip You can also set a task's status from [Quick Entry](/docs/busycal/70605-quick-entry.md) using the `@status:cancelled` token (other supported values include `needsaction` and `inprogress`). See [Syncing Extended Task Properties](/docs/busycal/144591-syncing-extended-task-properties.md) for the full list. ## Repeating Tasks[​](#repeating-to-dos "Direct link to Repeating Tasks") You can create tasks that repeat based on either the due date (e.g., Pay Rent on the 1st of every month) or on the completion date of the previous task (e.g., Oil Change 3 months after completion of the last Oil Change). Please note - unlike a repeating event, repeating Tasks do not display future occurrences on the calendar. A new occurrence is created only *after* you mark a Task complete. To create a repeating task that repeats based on the due date (e.g., Pay Rent on the 1st of every month), select a repeat interval from the “repeat” pop-up menu on the Info Panel. ![Repeating Task](https://downloads.busymac.com/resources/img/busycal-mac/repeating_task_info.png) You can change the default regeneration / repeating style from under Settings > Tasks > Default Regeneration Style. See [Tasks Settings](/docs/busycal/70607-preferences.md#to-dos) for more information. Also see [Repeating Events](/docs/busycal/70596-repeating-events.md) for additional information on creating custom repeat intervals. Completed occurrences of a repeating task appear in the calendar, but only the next *uncompleted* occurrence of a repeating task appears. When you complete an occurrence of a repeating task, the next occurrence of the repeating task is created automatically. ![Completed Tasks](https://downloads.busymac.com/resources/img/busycal-mac/take_out_trash.png) For example, you could create a task on Thursday to *Take out trash* that repeats weekly. Only the next uncompleted occurrence of the task appears in the calendar. When you complete it (or delete it), the next occurrence of the task is created on the following Thursday. note When you mark a recurring task as completed, BusyCal sets the completed date as today (even if the event appears on an earlier date on your calendar) and then creates the next occurrence. Depending on your settings in **BusyCal > Settings > Tasks**, this may cause the task to disappear from your calendar on its earlier date, even if your intention was to indicate that you completed it on a date in the past. BusyCal’s default logic is based on the Change Oil model: if you plan to change your oil every month, and you skip a month or two, BusyCal ignores the repeats that would have occurred in the past and schedules the next occurrence forward from the date on which you mark the task as completed. You can change this behavior from Settings > Tasks > Default regeneration style. ## Converting Tasks to Events[​](#converting-to-dos-to-events "Direct link to Converting Tasks to Events") You can convert tasks to events by `⌘-dragging` them from the Task List to the calendar: * Hold down ⌘ while dragging a task from the Task List to the calendar in Month view to convert it to an event on that date, at the current time. * Hold down ⌘ while dragging a task from the Task List to the all-day portion of a day in Day or Week view to convert it to an all-day event. tip You can also drag an undated task to the calendar to set the due date, or drag it to a different date to change the due date. ## Converting Events to Tasks[​](#converting-events-to-todos "Direct link to Converting Events to Tasks") You can convert events to tasks by simply dragging them from the calendar and dropping them into the Task List while at least one Task list calendar has been checked in the left panel (note: you **should not** hold down the ⌘ key when doing this). ## iCloud and Reminders[​](#icloud-and-reminders "Direct link to iCloud and Reminders") Tasks in BusyCal sync with the Reminders app in macOS and iOS through iCloud. iCloud calendars are type-specific. Each iCloud calendar can contain either events or tasks, but not both. BusyCal indicates a task calendar by displaying a checkmark next to its name. The task calendars in BusyCal sync with the Reminder Lists in the Reminders app on macOS and iOS through iCloud. ![Task Calendars in Sidebar](https://downloads.busymac.com/resources/img/busycal-mac/calendar_types.png) ## Tasks with Location Alarms[​](#to-dos-with-location-alarms "Direct link to Tasks with Location Alarms") The Reminders app on iOS can display location alarms when arriving at or leaving a specified location. For example, you could create a task to “Pick up dry cleaning” that triggers when you leave the office. BusyCal supports location alarms that sync with the Reminders app, and you can even create and edit location alarms in BusyCal. To create a location alarm in BusyCal, create a task with a custom Alarm Type of Location, click Location, and select a contact or search for a location using the embedded Google Maps interface. ![Location Set](https://www.busymac.com/images/bcl3mac-location-alarm-info.png)![Location Alarm Type](https://www.busymac.com/images/bcl3mac-location-alarm-type.png) ![Location with Map](https://www.busymac.com/images/bcl3mac-location-alarm-map.png) Location alarms trigger on your iOS device each time you arrive at or leave a location until you complete the task or delete it. In addition, you can set a specific date and time to be reminded on both your Mac and iOS device, regardless of whether you reach the location. note BusyCal supports location alarms only on iCloud task calendars. --- # Info Panel The Info Panel displays the details of the selected event or task. The Info Panel may appear in any of three locations: in the righthand sidebar, as a floating window, or as a popover in the main calendar view. ### Info Panel in Sidebar[​](#info-panel-in-sidebar "Direct link to Info Panel in Sidebar") The Info Panel can appear in the righthand sidebar, where it’s always available when an event or task is selected. To display the Info Panel in the sidebar if it’s not currently visible, click the Hide/Show Task List button, choose View > Show/Hide Task List, or press `⌘-Option-I`. (The pop-up menu on the right side of the Hide/Show Task List button lets you select whether the right sidebar shows the Task List, the Info Panel, or both.) ![Hide or Show Task List](https://downloads.busymac.com/resources/img/busycal-mac/main_right_panel_button.png) ![Info Panel Embedded](https://downloads.busymac.com/resources/img/busycal-mac/right_panel_info_tasklist.png) ### Info Panel as Popover[​](#info-panel-as-popover "Direct link to Info Panel as Popover") Alternatively, the Info Panel can appear as a popover, which disappears as soon as you click outside it. * If the Info Panel in the righthand sidebar is hidden (see above), the popover appears when you select an event in the calendar or a task in the Task List and press `⌘-Return`, or double-click an event in the calendar or a task in the Task List. If “Open Info Panel for new events” is selected in **BusyCal > Settings > Info Panel**, the popover also appears when you create a new event or task. * If the Info Panel in the righthand sidebar is visible (see above), the popover never appears. ![Info Panel as popover](https://downloads.busymac.com/resources/img/busycal-mac/cal_popover.png) ### Info Panel as Floating Window[​](#info-panel-as-floating-window "Direct link to Info Panel as Floating Window") The Info Panel can also appear as a movable, resizable, floating window. To display the Info Panel as a floating window, first go to **BusyCal > Settings > Info Panel** and select the “Display Info Panel in floating window” checkbox. Then: * If the Info Panel in the righthand sidebar is hidden (see above), the floating window appears when you select an event in the calendar or a task in the Task List and press `⌘-Return`, or double-click an event in the calendar or a task in the Task List. If “Open Info Panel for new events” is selected in **BusyCal > Settings > Info Panel**, the floating window also appears when you create a new event or task. * If the Info Panel in the righthand sidebar is visible (see above), double-clicking an event or task opens it in a separate detached window — the same as choosing [Get Info in New Window](#get-info-in-new-window). This lets you keep the sidebar Info Panel in view while inspecting another event side by side. ![Info Panel floating window](https://downloads.busymac.com/resources/img/busycal-mac/info_map.png) tip If you select “Open Info Panel for new events” in **BusyCal > Settings > Info Panel** and the righthand sidebar is visible, then when you create a new event, the title field is selected in the Info Panel. If the righthand sidebar is not visible and you create a new event, the Info Panel popover or floating window appears, with its title field selected. ### Get Info in New Window[​](#get-info-in-new-window "Direct link to Get Info in New Window") You can *Control-click* any event and choose **Get Info in New Window** to open it in a separate window and keep it on screen while you continue working in BusyCal. This command is always available and is also available via **Edit > Get Info in New Window…**. ![Get Info in New Window](https://downloads.busymac.com/resources/img/busycal-mac/info-panel-new-window.png) ## Info Panel Settings[​](#info-panel-preferences "Direct link to Info Panel Settings") You can customize the Info Panel to show only the fields you want to see by going to [**BusyCal > Settings > Info Panel**](/docs/busycal/70607-preferences.md#info-panel). ![Info Panel Settings](https://downloads.busymac.com/resources/img/busycal-mac/settings_infopanel.png) The first two checkboxes affect the display of the Info Panel as a whole: * **Open Info Panel for new events** — If you select this checkbox and the righthand sidebar is visible, then when you create a new event, the title field is selected in the Info Panel. If **Open Info Panel for new events** is selected and the righthand sidebar is *not* visible when you create a new event, the Info Panel popover (or floating window, depending on the state of the next checkbox) appears, with its title field selected. * **Display Info Panel in floating window** — If you select this checkbox, BusyCal displays the Info Panel as a floating window rather than as a popover when the righthand sidebar is not visible. When the sidebar *is* visible, double-clicking an event opens it in a separate detached window so you can view multiple events side by side. To choose which fields to display, select from the following options: * **Location** — Displays a text field for entering location information. * **Location URL** — Displays a URL field for entering location URLs, such as a link to Google Maps. * **Favorite time zones** — Shows a Time Zone Conversion card for the favorite zones configured in BusyCal > Settings > Time Zones. This does not display either event time-zone field; enable Start time zone separately. * **Start time zone** — Displays a time zone menu for the event start time. See [Time Zones](/docs/busycal/70609-time-zones.md) for more information. * **End time zone** — Displays a separate menu when an event ends in a different zone, such as a flight. For ordinary events, the end uses the start zone. See [Time Zones](/docs/busycal/70609-time-zones.md) for more information. * **First occurrence** — Displays the first occurrence date of a repeating event and current sequence number. * **Travel time** — Displays a menu enabling you to see or specify the [travel time](/docs/busycal/70603-locations-maps-travel-time.md#travel-time) for that event. * **URL** — Displays a URL field for inserting links. * **Tags** — Displays a field for entering tags. See [Tags](/docs/busycal/70597-tags.md) for more information. * **Graphic** — Displays a field for attaching graphics. See [Graphics](/docs/busycal/70598-graphics.md) for more information. * **Attachments** — Displays a menu for attaching files. * **Attendees** — Displays a field for adding attendees. See [Meetings and Invitations](/docs/busycal/70615-meetings-and-invitations.md) for more information. * **Rooms** — Displays a picker for browsing and booking meeting rooms. Appears automatically for events on [Google Workspace](/docs/busycal/70636-using-busycal-with-google.md#rooms) and [Microsoft 365](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md#rooms) accounts that have room resources configured. Shows room names, buildings, capacity, and live availability for the event's time window. * **Contacts** — Displays a field for linking to contacts in [BusyContacts](/busycontacts.md). * **Privacy** — Displays a menu for choosing the privacy type for the event. When sharing a calendar with others through Exchange, Google, and some CalDAV Servers, events marked Private appear to other people with a title of “Private Event.” The event blocks your free time for scheduling purposes, but no other details are shared. The "Confidential" privacy option is available for some CalDAV servers, in which case the event is completely hidden on a shared calendar. **Note** that only timed-events can be made private. note This option is enabled only when syncing with a calendar server that supports this feature. It is not supported by iCloud. * **Busy** — Displays a checkbox to indicate whether an event affects your availability as [free or busy](/docs/busycal/70587-day-view.md#free-busy). * **Created time** — Displays the date and time the event was created. * **Last edit time** — Displays the date and time the event was last modified and the user account that last modified it. * **My alarms** — Private alarms that are stored locally and do not sync with other apps and services. * **My tags** — Private tags that are stored locally and do not sync with other apps and services. * **My URL** — Private URLs that are stored locally and do not sync with other apps and services. You can drag files, email messages, bookmarks, contacts, and other items to the my URL field to create links that open the source document. * **My notes** — Private notes that are stored locally and do not sync with other apps and services. Below is an example of the Info Panel with all fields shown. ![Info Panel Full](https://downloads.busymac.com/resources/img/busycal-mac/info_all_fields.png) ## Open Links[​](#open-links "Direct link to Open Links") Select one or more events or tasks in the calendar and choose **Edit > Open Links** (⇧⌘O) to open all links found in the selected items. BusyCal collects links from these sources, in order: 1. **URL field** — the event or task URL. 2. **Location URL field** — a URL stored in the location URL field. 3. **Conference join link** — a Zoom, Teams, Meet, or other conference link detected from the location text. 4. **Notes** — any URLs embedded in the notes body, including rich-text links with friendly display names. Duplicate links across these sources are opened only once. When multiple items are selected, links from each item are opened in the order they appear. Links open in the browser or app configured under **BusyCal > Settings > Advanced > Open conference calls in**. If no preference is set, BusyCal uses your system default browser. The menu item is disabled when no selected item contains an openable link. ## Notes Link Detection[​](#notes-link-detection "Direct link to Notes Link Detection") The Notes field automatically detects phone numbers, web addresses, and other data patterns and turns them into clickable links. This detection is powered by macOS and can be toggled through the **Edit > Substitutions** menu while the Notes field has focus. If text is being incorrectly detected — for example, a reference number turning into a phone link — you can turn off **Data Detectors** and/or **Smart Links** individually. See [How do I control automatic link and phone number detection in the Notes field?](/docs/faqs/notes-data-detectors-and-smart-links.md) for full details. ## Shortening URLs in Notes[​](#shorten-urls "Direct link to Shortening URLs in Notes") Long web addresses — tracking links, map URLs, document share links — can quickly clutter the Notes field. BusyCal can replace them with compact short links so your notes stay tidy and easy to read. To shorten the links in an item's notes: 1. Select the event or task whose notes you want to tidy up. 2. Choose **Edit > Notes > Shorten URLs**. BusyCal scans the Notes field, finds every web address, and swaps each long URL for a shortened link in place. The rest of your notes text is left untouched. You can also shorten just a few links instead of the whole field: while editing the Notes field, select the text containing the URLs, right-click, and choose **Shorten URLs** from the contextual menu. Only the web addresses inside your selection are shortened. If there are no web addresses in the notes (or your selection), BusyCal lets you know there was nothing to shorten. note Shorten URLs in Notes is a premium feature — included with a direct license, and available on the Mac App Store as part of a [subscription](/docs/faqs/120616-licensing-explained.md#masstore). ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") ### 🛠️ Field not Showing[​](#field-not-showing "Direct link to 🛠️ Field not Showing") If you enable a field in the **Info Panel** but it doesn’t appear, it's likely because the **event's calendar account** does not support that field. In such cases, BusyCal automatically hides unsupported fields to prevent confusion. tip BusyCal offers special `My Tags`, `My Notes` and `My Alarms` fields that can be enabled for any account. Use these when Tags or Alarms are natively not supported by the underlying account. The only downside is that these fields do not sync between devices and remain locally on your device. Some known fields and the services that do not support them: ### 🛠️ Feature Support Matrix[​](#field-matrix "Direct link to 🛠️ Feature Support Matrix") The table below indicates where a feature is **natively supported (✓)** or provides developers with the ability to sync this information between devices, and where it is **not supported (✗)** at all. | Feature | Reminders | iCloud (CalDAV) | Google Calendar (CalDAV) | Google Task | Todoist | Outlook / Exchange / Microsoft Todo | | ------------------ | --------- | --------------- | ------------------------ | ----------- | ------- | ----------------------------------- | | Task Priority | ✓ | ✓ | | ✗ | ✓ | ✓ | | Task Due Time | ✓ | ✓ | | ✗ | ✓ | ✗ | | Task Duration | ✗ | ✓ | | ✗ | ✓ | ✗ | | Task Starred | ✗ | ✓ | | ✗ | ✗ | ✗ | | Task Status | ✗ | ✓ | | ✗ | ✗ | ✓ | | Repeat | ✓ | ✓ | ✓ | ✗ | ✓ | ✓ | | Tags | ✗ | ✓ | ✓ | ✗ | ✓ | ✗ | | URLs | ✗ | ✓ | ✗ | ✗ | ✓ | ✗ | | End Time Zone | ✗ | ✓ | ✗ | ✗ | ✗ | ✓ | | Floating Time Zone | ✗ | ✓ | ✗ | ✗ | ✓ | ✗ | | Color | ✗ | ✓ | ✓ | ✗ | ✓ | ✗ | | Attachment | ✗ | ✓ | ✓ | ✗ | ✗ | ✗ | ## See Also[​](#see-also "Direct link to See Also") * [Getting Started with BusyCal](/docs/busycal/70585-getting-started-with-busycal-for-mac.md#info-panel) - Overview of Info Panel functionality * [Info Panel Settings](/docs/busycal/70607-preferences.md#info-panel) - Configure Info Panel display options * [Keyboard Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md) - Info Panel keyboard shortcuts * [Tasks](/docs/busycal/70594-tasks.md) - Learn about task-specific fields in the Info Panel * [Event Types](/docs/busycal/70593-event-types.md) - Different types of events you can create --- # Repeating Events Repeating events reoccur at regular intervals (such as every day, every week, or the second Thursday of every month). ## Creating Repeating Events[​](#creating-repeating-events "Direct link to Creating Repeating Events") BusyCal allows you to create powerful recurring events with flexible patterns to handle everything from simple daily tasks to complex meeting schedules. To create repeating events in BusyCal, click the "repeat" pop-up menu on the Info Panel and choose a repeat interval from the pop-up menu. ![Repeating Event menu](https://downloads.busymac.com/resources/img/busycal-mac/repeat_weekly_menu.png) ## Editing a Repeating Event[​](#editing-a-repeating-event "Direct link to Editing a Repeating Event") Repeating events require special handling when you need to make changes. BusyCal gives you options to edit either a single occurrence or the entire series of events. ### Editing a Single Instance vs. Entire Series[​](#edit-single-instance "Direct link to Editing a Single Instance vs. Entire Series") When you edit a repeating event, BusyCal will ask whether you want to: 1. **Edit This Occurrence** - Changes only the selected instance 2. **Edit All Occurrences** - Changes the entire repeating series ![Edit Single or Entire Series Dialog](https://downloads.busymac.com/resources/img/busycal-mac/repeating_task_info.png) ### Techniques for Modifying Repeating Events[​](#techniques-for-modifying-repeating-events "Direct link to Techniques for Modifying Repeating Events") #### To Edit a Single Occurrence:[​](#to-edit-a-single-occurrence "Direct link to To Edit a Single Occurrence:") 1. Double-click the specific occurrence you want to change 2. When prompted, select **Edit This Occurrence** 3. Make your changes to that instance only 4. The edited occurrence will now appear as an "exception" to the recurring pattern #### To Edit the Entire Series:[​](#to-edit-the-entire-series "Direct link to To Edit the Entire Series:") 1. Double-click any occurrence in the series 2. When prompted, select **Edit All Occurrences** 3. Any changes you make will apply to every instance of the repeating event ### Moving a Single Occurrence of a Recurring Event[​](#moving-a-single-occurrence-of-a-recurring-event "Direct link to Moving a Single Occurrence of a Recurring Event") In BusyCal, **a single occurrence of a recurring event cannot be moved to a different calendar**—only the entire series can be moved. #### **Why?**[​](#why "Direct link to why") Recurring events are treated as a single entity tied to the same calendar - this is how all calendaring apps work. Moving one occurrence would break that structure, so any changes to the calendar **apply to the whole series**. #### **What Can You Do Instead?**[​](#what-can-you-do-instead "Direct link to what-can-you-do-instead") If you need one instance of a recurring event on a different calendar: 1. **Duplicate the event** → Right-click the occurrence and select **Duplicate Event**. 2. **Move the duplicate** → Drag it to the desired calendar. 3. **Delete the original occurrence** → Right-click and choose **Delete This Occurrence**. This ensures your event stays on the correct calendar **without affecting the full series**. ## Custom Repeats[​](#custom-repeats "Direct link to Custom Repeats") In addition to the standard repeat intervals, you can create custom repeat intervals by choosing Custom and choosing a repeat frequency. ![Custom Repeat](https://downloads.busymac.com/resources/img/busycal-mac/repeat_custom.png) Here are some examples of custom repeat intervals. ### Repeat Every Other Day[​](#custom1 "Direct link to Repeat Every Other Day") ![Repeat every other day](https://downloads.busymac.com/resources/img/busycal-mac/repeat_every_2_days.png) ### Repeat Every Other Weekday[​](#custom2 "Direct link to Repeat Every Other Weekday") ![Repeat every other wednesday](https://downloads.busymac.com/resources/img/busycal-mac/repeat_every_other_wed.png) ### Repeat Every Other Week on Tuesday, Wednesday, Thursday and Friday[​](#custom3 "Direct link to Repeat Every Other Week on Tuesday, Wednesday, Thursday and Friday") ![Repeat every other week](https://downloads.busymac.com/resources/img/busycal-mac/repeat_weekly.png) ### Repeat Every Month on the 1st and 15th[​](#custom5 "Direct link to Repeat Every Month on the 1st and 15th") ![Repeat first and fifteenth](https://downloads.busymac.com/resources/img/busycal-mac/repeat_month_1and_15.png) ### Repeat Every Month on the Second Thursday[​](#custom6 "Direct link to Repeat Every Month on the Second Thursday") ![Repeat second Thursday](https://downloads.busymac.com/resources/img/busycal-mac/repeat_every_mont_2nd_thur.png) ### Repeat Every Month on the Last Friday[​](#custom7 "Direct link to Repeat Every Month on the Last Friday") ![Repeat Every Month on Last Friday](https://downloads.busymac.com/resources/img/busycal-mac/repeat_every_mont_last_fri.png) ### Repeat Every Month on the Last Day[​](#custom8 "Direct link to Repeat Every Month on the Last Day") ![Repeat Last Day](https://downloads.busymac.com/resources/img/busycal-mac/repeat_every_mont_last_day.png) ### Repeat Every 3 Months (Quarterly) on the 15th[​](#custom9 "Direct link to Repeat Every 3 Months (Quarterly) on the 15th") ![Repeat 3 months](https://downloads.busymac.com/resources/img/busycal-mac/repeat_every_3_month.png) ### Repeat Every Year on the 4th Thursday of November (Thanksgiving in the United States)[​](#custom10 "Direct link to Repeat Every Year on the 4th Thursday of November (Thanksgiving in the United States)") ![Repeat Thanksgiving](https://downloads.busymac.com/resources/img/busycal-mac/repeat_every_year_4th_thur.png) --- # Tags Tags are user-defined labels with which you can categorize and color events in BusyCal. You can also search and filter events in your calendar based on tags. ## Tag Types[​](#types "Direct link to Tag Types") Two different types of tags can be assigned to events in BusyCal: **Tags** and **My Tags**. They are essentially the same, i.e., you get to assign memorable keywords to events. You should use **My Tags** when you want them to remain local to your Mac and thus private. **My Tags** do not sync to other devices and are not visible to others on shared calendars or meeting events with other attendees. important Tags sync to all your devices running BusyCal. When using the [old-style Exchange Web Services (EWS)](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) account type, Tags will map directly to Categories displayed in Outlook. On newer MS Graph-type accounts, Tags no longer map to Categories - BusyCal will display a Categories drop-down in the Info Panel that syncs with Categories in Outlook. **Also See:** [Automatic Tagging](/docs/busycal/130480-automatic-tagging.md) ## Entering Tags[​](#entering-tags "Direct link to Entering Tags") To apply tags to events, type them in the Tags field. When adding tags to an event, the tags are auto-completed as you type, based on tags you have entered previously. tip Entering a hex color code in the tags field automatically turns it into a colored tag. ![Add Tags](https://downloads.busymac.com/resources/img/busycal-mac/info_tags.png) note To see the Tags field on the Info Panel, you must enable it in [Info Panel Preferences](/docs/busycal/70595-info-panel.md#info-panel-preferences). If the Tags field is missing entirely, see: [Info Panel fields missing](/docs/faqs/info-panel-fields-missing.md). You can also apply tags to an event by Control-clicking an event and choosing a tag from the contextual menu. ![Select a Tag](https://downloads.busymac.com/resources/img/busycal-mac/tags_context_menu_only.png) ## Tag History[​](#tag-history "Direct link to Tag History") BusyCal automatically remembers tags as you create them and adds them to the Tag History. Choose Edit > Edit Tags to open the Tag History dialog, where you can add, delete, rename, and colorize tags. ![Tag History Editor](https://downloads.busymac.com/resources/img/busycal-mac/tag_history.png) note Deleting or renaming a tag in the Tag History dialog does not affect any events that already have that tag applied. However, changing the color of a tag does affect all events with that tag. ## Tag Colors[​](#tag-colors "Direct link to Tag Colors") You can use tags to color events. For example, you can have an “Important” tag that is colored red, and a “Family” tag that is colored green. Normally, events appear in the same color as the [calendar](/docs/busycal/70592-calendar-list.md) they’re stored on. But you can override the event color by adding a colored tag to an event. If you add multiple colored tags to an event, the color of the first tag, sorted alphabetically, is applied. ## Event Colors[​](#event-colors "Direct link to Event Colors") Events and tasks can also be colored using **Color** in the Info Panel. For Google events you can edit, this picker selects the event's Google color. These color changes sync with Google Calendar. See [Google Custom Color Labels](#google-custom-color-labels) below for the expanded palette available in beta. For other calendar services, **Color** acts as a shortcut for assigning a colored BusyCal tag. You can switch between colors or enter a custom hex color, such as `#00FF00` for green. ![Color Pick](https://downloads.busymac.com/resources/img/busycal-mac/info_panel_color_pick.png) ## Tag Syncing[​](#tag-sync "Direct link to Tag Syncing") Tag history, along with the colors assigned to them, sync automatically with all your devices over iCloud since v2024.2.5. You can disable this behavior under Settings > Advanced. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") There are several scenarios where tags may not sync properly: #### CalDAV Server Limitations[​](#caldav-server-limitations "Direct link to CalDAV Server Limitations") Some CalDAV servers do not support syncing extended-properties (`X-PROPS`) or Tags (known as `CATEGORIES` in CalDAV speak) which means that if you were to assign tags to events, during sync the calendar server will remove these properties. One such CalDAV server is **Zoho** which seems to remove extended-properties and tags from events. #### Shared Calendars[​](#shared-calendars "Direct link to Shared Calendars") Tags may not sync properly on events in shared calendars, depending on the permissions and server configuration. #### Meeting Invitations[​](#meeting-invitations "Direct link to Meeting Invitations") When you send meeting invitations, tags are often stripped by the calendar server. For example, Google Calendar removes additional categories/tags from meeting invitations and doesn't expose them to invitees. This means attendees won't see any tags you've assigned to the meeting. For a quick overview and common causes, see: [Tags not syncing or missing](/docs/faqs/tags-not-syncing-or-missing.md). ### Google Custom Color Labels[​](#google-custom-color-labels "Direct link to Google Custom Color Labels") The beta supports Google's expanded event colors and the custom label names that Google provides. Choose an existing Google color label from **Color** in the Info Panel, or choose **None** to clear the event's Google color. Create, rename, recolor, or delete these labels in Google Calendar. BusyCal refreshes the available choices from Google. Google color labels are separate from BusyCal **Tags**, **My Tags**, and local **Color Labels**; editing Tag History does not change Google's labels. See [Google Event Colors](/docs/busycal/70636-using-busycal-with-google.md#google-event-colors) for syncing and refresh details. --- # Graphics BusyCal enables you to add graphics and Emoji icons to your calendar to highlight certain dates, such as holidays and special events. ![Add a Graphic](https://downloads.busymac.com/resources/img/busycal-mac/graphic_month.png) ## Graphics Panel[​](#graphics-panel "Direct link to Graphics Panel") In BusyCal, choose **Window menu > Graphics Panel** to display a floating window that displays images you can drag and drop onto your calendar. You can browse through the hundreds of emoji images built into macOS, or type a keyword to search for images on [IconFinder.com](https://www.iconfinder.com). You can even drag images into BusyCal from your desktop or from the web. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/using_graphic_panel_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/using_graphic_panel_web_poster.png) ## Dragging & Dropping Graphics[​](#dragging-dropping-graphics "Direct link to Dragging & Dropping Graphics") You can easily add graphics to your calendar using drag-and-drop functionality. Simply drag any image from your desktop, web browser, or the Graphics Panel directly onto your calendar. ## Attaching Graphics to a Date[​](#attaching-graphics-to-a-date "Direct link to Attaching Graphics to a Date") You can drag an image onto a date in the calendar to create a floating graphic attached to that date. ![Date with Graphic](https://downloads.busymac.com/resources/img/busycal-mac/graphic_month_day.png) ## Selecting a Graphic[​](#selecting-a-graphic "Direct link to Selecting a Graphic") To select a graphic, hold down Option and click the graphic. Handles appear that enable you to move and resize it, or you can delete it by pressing the Delete key. ![Date with selected Graphic](https://downloads.busymac.com/resources/img/busycal-mac/graphic_month_day_select.png) ## Minimizing a Graphic[​](#minimizing-a-graphic "Direct link to Minimizing a Graphic") To minimize a graphic, select it and click the `X` box. The graphic is minimized and displayed in the date header area. Clicking the minimized graphic maximizes it to its full size. ![Date with minimized Graphic](https://downloads.busymac.com/resources/img/busycal-mac/graphic_month_day_min.png) ## Deleting a Graphic[​](#deleting-a-graphic "Direct link to Deleting a Graphic") First, make sure a graphic has been un-minimized. While holding down the `Option` key, click on the graphic to select it. Now press the `back-space` key on the keyboard to delete it. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/deleting_graphic_web.webm) ## Attaching a Graphic to an Event[​](#attaching-a-graphic-to-an-event "Direct link to Attaching a Graphic to an Event") You can also drag a graphic onto an event. The graphic is attached to that event and appears in the date header (in Month view) or inline with the event (in Day or Week view). ![Graphic on event in Month view](https://downloads.busymac.com/resources/img/busycal-mac/graphic_event_month.png) ![Graphic on event in Day view](https://downloads.busymac.com/resources/img/busycal-mac/graphic_event.png) ## Opacity[​](#opacity "Direct link to Opacity") You can control the transparency of a graphic by dragging the opacity slider on the Info Panel. ![Graphic Opacity](https://downloads.busymac.com/resources/img/busycal-mac/graphic_month_day_opacity.png) ## Hiding Graphic Previews[​](#hidegraphics "Direct link to Hiding Graphic Previews") If your calendar includes unwanted graphics—such as company logos or images added by other users — you can **hide graphic previews** to keep your workspace clean and clutter-free. This is especially useful when working with shared calendars. To hide graphic previews for a specific calendar: 1. **Double-click** the calendar name in the left sidebar. 2. **Uncheck** the **Show Graphic Previews** option. 3. Click **OK** to save your changes. This setting is applied per calendar, giving you control over which calendars display graphics. A video demonstrating this can be seen below. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/hide_graphic_previews_web.webm) ## Limitations[​](#limitations "Direct link to Limitations") When syncing with iCloud, graphics are treated as all-day events with file attachments. The attachments sync between different BusyCal clients through iCloud and are displayed as graphics. However, they are displayed as all-day events in other calendar apps like Calendar for macOS and iOS. Also, iCloud limits file attachments to roughly 700k. So if you’re syncing with iCloud, be sure not to add graphics to your calendar larger than 700k, or they will not sync with iCloud. (Emoji and IconFinder images don’t count toward this limit, because they’re stored internally as URL pointers.) Google Calendar does not support file attachments, so you cannot add graphics to Google calendars. Reminders do not support attachments or graphics. --- # Birthdays and Anniversaries BusyCal can display the birthdays and anniversaries from macOS Contacts (or BusyContacts) in your calendar. To enable birthday and anniversary display from your contacts: 1. Go to **BusyCal > Settings > General** 2. Check the **Show Birthdays calendar** option to display contact birthdays 3. Check the **Show Anniversaries calendar** option to display contact anniversaries ![Birthdays and Anniversaries Settings](https://downloads.busymac.com/resources/img/busycal-mac/setting_enable_birthday.png) With these calendars enabled, a Birthdays calendar and an Anniversaries calendar appear under the Other heading in the [Calendar List](/docs/busycal/70592-calendar-list.md), and any contacts with birthdays or anniversaries in their Contacts records are displayed with special icons in the calendar. ### Add an Anniversary[​](#anniversary-labels "Direct link to Add an Anniversary") 1. Edit the person's contact in **Apple Contacts** or **BusyContacts**. 2. Add or select a date field and choose the built-in **anniversary** label from its label menu. 3. Enter the original date and save the contact. BusyCal repeats the anniversary every year. important Choose **anniversary** from the label menu. Custom labels such as **Wedding**, **Wedding Anniversary**, or **Other** are not included in BusyCal's Anniversaries calendar. For birthdays, use the contact's **birthday** field. If you use BusyContacts, also leave **show dates** checked on the contact. See [Show Dates in Calendar](/docs/busycontacts/47353-birthdays-and-anniversaries.md#show-dates) if that checkbox is missing. In **BusyCal > Settings > General**, set **Contacts from** to the app containing the date. Choose **BusyContacts** for dates entered there, or **Apple Contacts** for dates in Apple's Contacts app. ### Death Anniversaries[​](#death-anniversaries "Direct link to Death Anniversaries") For a death date, choose the built-in **death date** label in BusyContacts, or add a custom date labeled **Death Date** in Apple Contacts. You can then choose how BusyCal should respond to showing the birthday: * **Continue Showing Birthdays:** This option will always display the person's birthday. If a death date is detected, future birthdays will stop incrementing the person's age. * **Stop Showing Birthdays:** This option will stop displaying the person's birthday starting from the year of their death. * **Show Death Anniversaries:** This option will behave similarly to *Continue Showing Birthdays*, with the addition of displaying a yearly death anniversary event on the date of death. Death anniversary events use a leaf icon in the calendar. ### Multiple Anniversaries & Chinese Lunar Birthdays[​](#multiple-anniversaries--chinese-lunar-birthdays "Direct link to Multiple Anniversaries & Chinese Lunar Birthdays") With **Apple Contacts** as the source, BusyCal can display multiple dates with the built-in **anniversary** label for a single contact. With **BusyContacts** as the source, BusyCal uses one anniversary date per contact. Additionally, BusyCal supports **Chinese Lunar Birthdays**. If you have added a Chinese Lunar Birthday to a contact card in Apple Contacts, BusyCal will correctly calculate and display the corresponding Gregorian date for each year on the Birthdays calendar. ![Birthday on calendar](https://downloads.busymac.com/resources/img/busycal-mac/birthday_cal.png) ![Anniversary on calendar](https://downloads.busymac.com/resources/img/busycal-mac/anniv_cal.png) ## Info Panel[​](#info-panel "Direct link to Info Panel") If you view the Info Panel for a Birthday or Anniversary event, you’ll see some additional fields: * **first** — if you select First occurrence in the [Info Panel Settings](/docs/busycal/70595-info-panel.md#info-panel-preferences) you’ll see the actual birth date or anniversary date, followed by the current occurrence. * **alarm** — Enables you to add an alarm to the Birthday or Anniversary. Birthday and anniversary alarms are device-specific and do not sync to your other devices. You can set a default alarm for birthdays and anniversaries; see [Alarms](/docs/busycal/70604-alarms.md). * **Contact link** — If you’re using BusyContacts, a contact token appears that links to the contact in BusyContacts; double-click it to open the contact in BusyContacts. Otherwise a link appears in the “my URL” field; click that link to open the contact in macOS Contacts. ![Link to BusyContacts](https://downloads.busymac.com/resources/img/busycal-mac/kiwi_bday.png) The Birthdays calendar and Anniversaries calendar are read-only and cannot be edited in BusyCal. If you want to change or remove a birthdate or anniversary, you must make the change in Contacts or BusyContacts. The Birthdays and Anniversaries calendars appear only in BusyCal and do not sync to other services like iCloud and Google; however, the Calendar app on macOS and iOS has a similar option for displaying a Birthdays calendar. ## ⚠️ Troubleshooting[​](#troubleshoot "Direct link to ⚠️ Troubleshooting") ### 🛠️ Birthdays or Anniversaries not showing[​](#️-birthdays-or-anniversaries-not-showing "Direct link to 🛠️ Birthdays or Anniversaries not showing") First, check the contact's [date label](#anniversary-labels). For an anniversary, select the built-in **anniversary** label. If the contact is in BusyContacts, make sure **show dates** is checked on that card. Next, open **BusyCal > Settings > General** and check **Contacts from**. Choose the app containing the contact and its date. If you have BusyContacts installed but use Apple Contacts, choose **Apple Contacts** here. If you have chosen Apple Contacts as the source, you must give BusyCal access to Apple Contacts. Open **System Settings > Privacy & Security**, click **Contacts** in the right sidebar, and then allow BusyCal access. ![Privacy - Contacts](https://downloads.busymac.com/resources/img/busycal-mac/system_settings_contacts2.png) If the date is still missing after those checks, toggle these settings in **BusyCal > Settings > General** to refresh the calendars: * Uncheck **Show Birthdays calendar** and **Show Anniversaries** * Quit the app * Relaunch, open **BusyCal > Settings > General** and enable both settings again Wait for a moment for sync to complete. ### 🛠️ Birthday alarms not working[​](#birthday-alarms-not-working "Direct link to 🛠️ Birthday alarms not working") If alarms in general are not triggering for any event, please [see this instead](/docs/busycal/70606-busycal-menu.md#troubleshooting). If birthday events are syncing, alarms are otherwise triggering but you do not see any alarms for Birthdays or Anniversaries, check the following: 1. Select any list birthday or anniversary to open its details in the Info Panel. Confirm it shows an **alarm** set. ![Birthday Info Panel Alarm](https://downloads.busymac.com/resources/img/busycal-mac/birthday_alarm_info_panel.png) 2. If an alarm property is not set, open **BusyCal Settings > Alarms** and ensure at least one default alarm has been enabled and set. ![Birthday Alarm](https://downloads.busymac.com/resources/img/busycal-mac/birthday_default_alarm.png) 3. Once enabled, `CTRL+Click` (right-click) on the **Birthday** calendar in the left, calendar source panel and select **Refresh** ### 🛠️ Seeing Duplicate Birthdays[​](#duplicate-birthdays "Direct link to 🛠️ Seeing Duplicate Birthdays") If you're seeing the same birthday appearing multiple times, try these solutions: #### Clear Birthday Cache[​](#clear-birthday-cache "Direct link to Clear Birthday Cache") 1. Go to **BusyCal > Settings > General** 2. **Uncheck** "Show Birthdays calendar" 3. Quit BusyCal completely 4. Relaunch BusyCal 5. Re-enable "Show Birthdays calendar" in Settings This should cleanup any corrupted cached birthday data. #### Check for Duplicate Contacts[​](#check-for-duplicate-contacts "Direct link to Check for Duplicate Contacts") Duplicates often occur when contacts exist both locally and in iCloud: 1. Open **Contacts** (Apple's Contacts app) 2. Look for a gray "cards" attribute on contact cards 3. If it shows both "On My Mac" and "iCloud", the contact is duplicated 4. Delete duplicates from "All on My Mac" group, keeping only iCloud versions Identifying Duplicates In Apple Contacts, click "All on My Mac" in the sidebar. Delete any contacts there that also appear under "All iCloud" to eliminate duplicates. In case you're using [BusyContacts](/busycontacts.md), launch BusyContacts and follow the same steps. #### Check Google Contacts / Microsoft Outlook[​](#check-google-contacts--microsoft-outlook "Direct link to Check Google Contacts / Microsoft Outlook") Some calendaring services such as Google Calendar and Microsoft Outlook create and sync their own special **Birthday** calendar. If you're using Google Calendar, [see the steps in the next section](#google-birthdays). For Microsoft Outlook, look in the left panel within BusyCal and see if there's another `Birthday` calendar visible and syncing as a separate calendar under the listed account. If so: * Double-click on the calendar in the left panel * Click on **Unsubscribe** from the dialog window This will unsubscribe and remove the duplicate birthday events syncing from the online calendar. ### 🛠️ Seeing Unwanted Birthdays on Google Calendar[​](#google-birthdays "Direct link to 🛠️ Seeing Unwanted Birthdays on Google Calendar") If you're suddenly seeing a flood of birthdays and anniversaries after adding your Google Calendar to BusyCal, you're not alone. These birthdays may not even appear in [Google Calendar](https://calendar.google.com) itself though, and attempts to delete them from BusyCal result in a **Read-Only** error. This issue is caused by a recent change in Google Calendar. Previously, birthdays were displayed in a separate **Birthdays** calendar, but now Google automatically **copies read-only versions of birthdays to your primary calendar** when syncing with third-party apps. Developers have reported this behavior to Google, but it appears to be intentional: [Google Issue Tracker](https://issuetracker.google.com/issues/382843876) #### How to Fix Google Calendar Birthdays Showing in Primary Calendar[​](#how-to-fix-google-calendar-birthdays-showing-in-primary-calendar "Direct link to How to Fix Google Calendar Birthdays Showing in Primary Calendar") To disable this feature and to remove unwanted birthdays from your Google Calendar: 1. Log into [Google Calendar](https://calendar.google.com) in a browser. 2. Open **Settings**. 3. Click **Birthdays** under **Settings for my Calendars**. 4. Scroll down and uncheck the boxes next to any Google accounts listed. This will prevent Google from syncing birthdays to your primary calendar when using third-party apps like BusyCal. ##### Common Issues To Note[​](#common-issues-to-note "Direct link to Common Issues To Note") * **Read-Only Errors**: You cannot delete these birthdays directly in BusyCal because they're read-only * **Duplicate Birthdays**: You may see the same birthday multiple times if you have multiple calendars * **Hidden in Google Calendar Web**: Duplicated birthdays may not appear in Google Calendar (online). These birthdays are inserted into your primary calendar rather than a separate calendar. --- # Holidays BusyCal optionally displays holidays on your calendars, and can easily subscribe to public calendar servers to supply this information automatically. Discover how to show holidays in your calendar, subscribe to holiday calendars for your region, and customize their display to suit your preferences. ## How to Show Holidays in Your Calendar[​](#holiday-calendar "Direct link to How to Show Holidays in Your Calendar") BusyCal optionally displays all-day events on Holiday calendars in a special format at the bottom of the day cell in italicized text, rather than showing them as regular banners. This cleaner display helps distinguish holidays from your regular events. ![Holiday Calendar banner](https://downloads.busymac.com/resources/img/busycal-mac/holiday_as_normal.png) ![Holiday Calendar in Footer](https://downloads.busymac.com/resources/img/busycal-mac/holiday_as_holiday.png) To display holidays in this elegant style, simply double-click any calendar to open the Calendar Info dialog, and check the **Holiday calendar** checkbox. (See [Calendar Info](/docs/busycal/70592-calendar-list.md#calendar-info) for more details.) ![Holiday Calendar setting](https://downloads.busymac.com/resources/img/busycal-mac/holiday_info_dialog.png) When subscribing to a WebDAV calendar, such as “US Holidays,” BusyCal detects if the calendar is a holiday calendar by its title, and sets the Holiday calendar checkbox automatically. You can set the Holiday calendar checkbox on any calendar, such as a shared company holidays calendar. note Only two all-day events per day are displayed in the Holiday style. If there are more than two all-day events on a Holiday calendar, the additional all-day events are displayed in a style similar to birthdays (see [Birthdays and Anniversaries](/docs/busycal/70599-birthdays-and-anniversaries.md)). ## Turning Any Calendar Into a Holiday Calendar[​](#anycal-holiday "Direct link to Turning Any Calendar Into a Holiday Calendar") Any calendar can easily be transformed to display as a holiday calendar: * Double-click on the name of the calendar in the left calendar panel * Enable the **Holiday calendar** checkbox, then click **OK** [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/any_cal_holiday_web.webm) ## Observed Holidays[​](#observed-holidays "Direct link to Observed Holidays") An **observed** checkbox appears on the Info Panel for each holiday event. When you select this checkbox, the date number on the calendar is displayed in the same distinctive color used for weekends (red or gray) on the date of the holiday, making it easy to identify official holidays at a glance. (To customize this color, navigate to BusyCal > Settings > [Appearance](/docs/busycal/70607-preferences.md#appearance-preferences) and choose either `Black & Gray` or `Black & Red` from the **Day number color** pop-up menu.) ![Observed Holiday](https://downloads.busymac.com/resources/img/busycal-mac/observed_holiday.png) [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/observed_holiday_web.webm) ## Subscribe to the US Holidays Calendar[​](#subscribe-to-the-us-holidays-calendar "Direct link to Subscribe to the US Holidays Calendar") BusyMac provides three carefully curated variations of the US Holidays calendar, with or without festive images, that you can easily subscribe to in BusyCal. These are available in our [holiday calendars section](/webdav.md) as three distinct options: * **US Holidays** - Clean text-only display for a minimalist calendar view * **US Holidays - small graphics** - Includes subtle holiday icons for visual enhancement * **US Holidays - large graphics** - Features prominent holiday images for a festive calendar experience Standard US Holidays calendar presentation: ![US Holiday Normal](https://downloads.busymac.com/resources/img/busycal-mac/us_holiday_normal.png) US Holidays calendar enhanced with small decorative images: ![US Holiday Small](https://downloads.busymac.com/resources/img/busycal-mac/us_holiday_small.png) US Holidays calendar featuring large celebratory images: ![US Holiday Large](https://downloads.busymac.com/resources/img/busycal-mac/us_holiday_large.png) For additional public calendar options including international holidays, sports schedules, and more, see [Subscribing to Public Calendars](/docs/busycal/70601-subscribing-to-public-calendars.md). --- # Subscribing to Public Calendars BusyCal supports subscribing to read-only (WebDAV) public calendars like holidays and sports schedules. ## Adding Calendar Subscriptions[​](#adding-calendar-subscriptions "Direct link to Adding Calendar Subscriptions") You can easily subscribe to public calendars in BusyCal to display holidays, sports schedules, TV shows, academic calendars, and more. These subscriptions are read-only calendars that automatically update when the publisher makes changes. You can do this from **BusyCal File Menu > New Calendar Subscription...** option. You can usually subscribe to these calendars by clicking a link to a `.ics` file on a web page that then opens your default calendar app (e.g., BusyCal or the macOS Calendar app) and adds the calendar subscription. We provide a list of popular [Holidays and Sports calendars](/webdav.md) that you can browse by selecting Help > Find Calendar Subscriptions. ![Subscribe To Calendar Menu](https://downloads.busymac.com/resources/img/busycal-mac/subscribe_cal_menu.png) Or, if you know the URL of the WebDAV calendar you want to subscribe to, choose **File > New Calendar Subscription**, enter the URL, and click Subscribe. ![Subscribe To Calendar Dialog](https://downloads.busymac.com/resources/img/busycal-mac/subscribe_dialog.png) To sync public calendars with an iOS device, see [Syncing calendar subscriptions with an iOS device](/docs/busycal/70629-syncing-calendar-subscriptions-with-an-ios-device.md). You can also create your own read-only public calendars to share with others through iCloud or Google: * If the calendar is hosted on iCloud, you can share the calendar publicly as described in [Sharing Calendars with Others through iCloud](/docs/busycal/70630-using-busycal-with-icloud.md#sharing). * If the calendar is hosted on Google, you can share the calendar publicly as described in [Google Calendar Help](https://www.google.com/support/calendar/bin/answer.py?answer=37103). ## Unsubscribing a Calendar[​](#unsubscribing-a-calendar "Direct link to Unsubscribing a Calendar") In BusyCal, any calendar can be unsubscribed. Simply double click on the calendar name visible in the left panel, followed by the Unsubscribe button in the dialog presented. --- # Weather BusyCal can display a 7-day weather forecast and moon phases in your calendar. important BusyCal's weather data is a value-added service that we provide at no extra cost to our users, but it comes from a third-party provider that we pay for monthly. Over time, services like Weather Underground and Dark Sky have shut down, requiring us to switch providers. When this happens, older versions of BusyCal tied to a discontinued service will no longer display weather. To continue receiving weather updates, please ensure you’re using the latest version of BusyCal. BusyCal can display a 7-day weather forecast and moon phases times in your calendar. ## Weather Settings[​](#weather-preferences "Direct link to Weather Settings") To display the weather, choose BusyCal > Settings > Weather, select the “Show weather” checkbox, and then select “At current location” or manually enter the ZIP code or city code for your area. You can also choose Fahrenheit or Celsius from the “Temperature scale” pop-up menu. note To display weather at your current location, BusyCal requires access to Location Services. The first time you open BusyCal you should be presented with a dialog asking if you want to grant BusyCal permission to access Location Services. If you did not grant BusyCal access to Location Services at that time, you must do so manually, by going to **System Settings > Security & Privacy > Privacy > Location Services** and then selecting the checkbox next to BusyCal. ![Weather Settings](https://downloads.busymac.com/resources/img/busycal-mac/setting_weather.png) ## Weather Graphics[​](#weather-graphics "Direct link to Weather Graphics") You can display the weather graphics in three different formats: Small, Large, or Background; choose your desired size from the “Weather graphics” pop-up menu. When the size is set to Small or Large and you hover your pointer over the weather icon, an extended forecast is displayed. ### Weather Graphics: Small[​](#weather-graphics-small "Direct link to Weather Graphics: Small") ![Weather graphics small](https://downloads.busymac.com/resources/img/busycal-mac/weather_icon_small.png) ### Weather Graphics: Large[​](#weather-graphics-large "Direct link to Weather Graphics: Large") ![Weather graphics large](https://downloads.busymac.com/resources/img/busycal-mac/weather_icon_large.png) ### Weather Graphics: Background[​](#weather-graphics-background "Direct link to Weather Graphics: Background") ![Weather graphics background](https://downloads.busymac.com/resources/img/busycal-mac/weather_icon_bg.png) ## Weather Icons in Month View[​](#showing-weather "Direct link to Weather Icons in Month View") In Month view, weather icons appear differently than in Day or Week views. Month view displays a simplified weather icon along with the high/low temperatures for each day at the top of the day cell, allowing you to see the forecast at a glance across your calendar. ![Weather icons in Month view](https://downloads.busymac.com/resources/img/busycal-mac/weather_icons.png) The weather icons in Month view provide essential forecast information without taking up too much space. You can still hover over the weather icons in Month view to see additional forecast details. ### Customizing Weather Display in Month View[​](#customizing-weather-display-in-month-view "Direct link to Customizing Weather Display in Month View") To control how weather icons appear in your month view: 1. Go to **BusyCal > Settings > Weather** 2. Ensure **Show weather** is enabled 3. Choose your preferred **Weather graphics** size: * Small: Compact icons ideal for month view * Large: More detailed icons with temperature display * Background: Weather integrated into the day cell background When using Month view, the smaller weather icons work best to maximize space for events. If weather icons aren't appearing in month view, make sure your location services are enabled. ## Moon Phases[​](#moon-phases "Direct link to Moon Phases") To display moon phases, select the **Show moon phases** checkbox in **BusyCal Settings > Weather** Settings. ![Moon Phases](https://downloads.busymac.com/resources/img/busycal-mac/moon_phases.png) You can display the moon phases in three different formats: Realistic, Symbols, or Astrological; choose your desired format from the “Moon graphics” pop-up menu. ### Moon Graphics: Realistic[​](#moon-graphics-realistic "Direct link to Moon Graphics: Realistic") ![Moon realistic](https://downloads.busymac.com/resources/img/busycal-mac/moon_real.png) ### Moon Graphics: Symbols[​](#moon-graphics-symbols "Direct link to Moon Graphics: Symbols") ![Moon Symbols](https://downloads.busymac.com/resources/img/busycal-mac/moon_symb.png) ### Moon Graphics: Astrological[​](#moon-graphics-astrological "Direct link to Moon Graphics: Astrological") ![Moon Astrological](https://downloads.busymac.com/resources/img/busycal-mac/moon_astro.png) ## Sunrise and Sunset[​](#sunrise-and-sunset "Direct link to Sunrise and Sunset") The Day and Week views then display shaded areas on the top and bottom indicating the hours of darkness (sunrise and sunset) for your location. ![Sunrise & Sunset in Day View](https://downloads.busymac.com/resources/img/busycal-mac/sunrise_sunset.png) ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") If weather is not displaying in BusyCal, follow these steps to resolve the issue: ### 🛠️ Check Weather Settings[​](#system-settings "Direct link to 🛠️ Check Weather Settings") 1. Open **BusyCal Settings > Weather**. 2. Ensure **Show Weather** is enabled. 3. Try selecting **At current location** to automatically detect your location. ### 🛠️ Verify Location Services[​](#privacy "Direct link to 🛠️ Verify Location Services") If **At current location** is enabled but weather data is missing or incorrect, check and confirm that Location Access has not been revoked or disabled for BusyCal under System Settings. Without this setting enabled, weather will not show. 1. Open **System Settings > Privacy & Security > Location Services**. 2. Ensure **Location Services** is turned **on**. 3. Scroll down and verify that **BusyCal** has location access. ### 🛠️ Manually Enter a Location[​](#manual "Direct link to 🛠️ Manually Enter a Location") If the issue persists: 1. Open **BusyCal Settings > Weather**. 2. Select **At city/town** instead of **At current location**. 3. Enter your location manually. This should ensure accurate weather data is displayed in BusyCal. --- # Locations, Maps & Travel Time BusyCal's Info Panel automatically displays maps to events with addresses in their Location fields. In addition, BusyCal can calculate travel time to these destinations based on current traffic conditions and alert you when you must leave in order to arrive on time. ## Locations[​](#locations "Direct link to Locations") As you type into the location field, BusyCal displays potential matches in a pop-up menu. Selecting one of these matches ensures that you'll end up with a properly structured location that BusyCal can use to display maps and calculate travel time. ![Location Pop-up](https://downloads.busymac.com/resources/img/busycal-mac/loc_1.png) For events stored on Microsoft Exchange, the location field can be used for looking up Rooms. BusyCal also supports [What3Words](https://what3words.com) (W3W) locations: * Type in a W3W word into the Location field to convert it to a GPS coordinate, such as: `///plants.craft.organs` * A GPS-coordinate will appear as a suggestion, click on it to accept ![What3Words](https://downloads.busymac.com/resources/img/busycal-mac/loc_3.png) ## Maps[​](#maps "Direct link to Maps") When an event or task contains an address in the Location field, BusyCal's Info Panel displays a map of that location. Click the pin displayed in the map thumbnail and then on the "route" icon to open it in the macOS Maps app (where you can zoom in or out, get directions, change the view, and more). If you don't want to display a map in the Info Panel, you can turn it off in **BusyCal > Settings > Info Panel**. ![Map](https://downloads.busymac.com/resources/img/busycal-mac/loc_2.png) ## Travel Time[​](#travel-time "Direct link to Travel Time") BusyCal's Travel Time feature enables you to block out time in your calendar for travel time and to optionally display alarms at or before the time you must leave to arrive at an event on time—based on either current traffic conditions or an arbitrary amount of time you specify. You can configure BusyCal to automatically add travel time when a location is set for an event. To enable this feature, see [Advanced Settings > Locations](/docs/busycal/70607-preferences.md#locations) in Preferences. Before you can set the travel time for an event, the Travel Time field must be visible on the Info Panel. If it isn't already visible, enable it by choosing **BusyCal > Settings > Info Panel** and selecting **Travel Time**. You can specify a fixed travel time for any event by choosing it from the "travel time" pop-up menu on the Info Panel; to specify a time not shown on the menu, choose **Custom**. BusyCal then blocks off the specified travel time on your calendar. ![Map](https://downloads.busymac.com/resources/img/busycal-mac/loc_5.png) In addition to manually set travel times, BusyCal can compute driving, walking and mass transit travel time automatically, if the event has a structured location in its Location field (see [Locations](#locations)). To set the travel time for an event with a location, choose a time from the “travel time” pop-up menu. ![Map](https://downloads.busymac.com/resources/img/busycal-mac/loc_7.png) Your choices are: * ***(mode of transportation) x* minutes from *location*** — The calculated travel time to the event’s location from the expected starting location. BusyCal determines the starting location based on the location of any events on your calendar (or other currently visible calendars) up to three hours before the event you’re scheduling. If there are no such events, BusyCal uses your work address or home address on your [Me card](/docs/busycal/70615-meetings-and-invitations.md#me-card), depending on the time of day. The work address is used during work hours, based on your "Day starts at" and "Day ends at" settings in **BusyCal > Settings > General**. If you've chosen Sunrise and Sunset as your start and end of day, then 8:00 AM to 5:00 PM will be used for work hours. You can change the starting location by selecting **Other Starting Location** from the Travel Time popup menu, and choosing from one of the available options—**Current Location**, **Home**, **Work**, or **Other**. If your address cannot be determined, BusyCal uses your computer’s current location. Determining your computer’s location requires access to Location Services. note **Cycling / Bike** travel time is supported when a cycling route is available for the selected locations. If you don’t see a cycling option, it typically means the routing provider can’t calculate a cycling route for that origin/destination (for example due to region coverage, an imprecise/unstyled address, or a route that isn’t supported). Try picking a more specific structured address from the location suggestions, or test with a nearby landmark. * ***x* minutes/hours** — Choose a preset duration to specify how long you want to leave yourself to get to the event. Unlike driving and walking times, these values do not depend on your current location or traffic conditions. * **Custom** — Set a specific duration other than those already shown on the menu. ### Travel Time Alarms[​](#travel-time-alarms "Direct link to Travel Time Alarms") Once you’ve added travel time to an event, any alarms you set for that event will be relative to the start of the travel time. For example, if you have an event at 10:00 AM that includes 35 minutes of travel time, any alarms you set for that event will be relative to the start of travel time at 9:25 AM. ![Map](https://downloads.busymac.com/resources/img/busycal-mac/loc_8.png) Your alarm choices for an event with a specified travel time are: * **None** — No alarm appears. * **Time to Leave** — If you’ve set travel time and a structured location for an event, a Time to Leave option appears on the “alarm” pop-up menu. If you select this option, BusyCal monitors traffic conditions every 5 minutes and displays a time to leave alarm at the moment when you must leave to get to the event on time. This alarm is dynamic, based on current driving conditions, so if you set a Time to Leave alarm and heavy traffic before the event means it’ll take much longer to get there, the alarm appears that much earlier. Likewise, lighter traffic makes the alarm appear later. These dynamic Time to Leave alarms are preceded with “Time to leave” in the alarm window. Note that although Time to Leave alarms are automatically updated to reflect current driving conditions, the driving time displayed in the “travel time” pop-up menu on the Info Panel and in the Week View is not updated as driving conditions change. ![Alarm window with time to leave](https://www.busymac.com/images/bcl3mac-alarm-window-ttl.png) Time to Leave alarms are based on your mode of transportation (driving or walking). If you set a fixed travel time and don't set a mode of transportation, then a mode of driving will be assumed. The Time to Leave alarms are not dependent on the travel time you have set for an event. For example, if you set a fixed travel time of one hour, yet it will only take 30 minutes to drive to the location, the Time to Leave alarm is triggered 30 minutes before the start of the event. If you want to receive alarms at or before the start of travel time, choose one of the following alarm types instead of, or in addition to, a Time to Leave alarm. * ***At start of/x* minutes/hours/days before travel time** — An alarm appears this number of minutes, hours, or days *before* your selected travel time (to allow yourself time to get ready before leaving). This alarm does not vary with driving conditions, and will not change once set. * **Custom** — An alarm appears at whatever time you set. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") ### Duplicate "Time to Leave" Alerts[​](#duplicate-time-to-leave-alerts "Direct link to Duplicate \"Time to Leave\" Alerts") If you are receiving two notifications for "Time to Leave", it is likely that both **BusyCal** and the built-in **Apple Calendar** app are configured to alert you. Since both apps read from the same iCloud/Calendar database, they can both trigger alerts for the same event. To stop duplicate alerts, you can disable the feature in Apple Calendar: 1. Open the **Calendar** app on your Mac. 2. Go to **Calendar > Settings > Alerts**. 3. Uncheck **Show "Time to Leave" messages**. This will ensure you only receive the travel time alert from BusyCal. ### BusyCal Keeps Asking for Location Permission[​](#location-permission-loop "Direct link to BusyCal Keeps Asking for Location Permission") If macOS repeatedly prompts BusyCal for **"Allow BusyCal to use your location?"** every time the app launches — even after you've already granted permission — the stored privacy authorization for BusyCal has become stuck or inconsistent. Resetting it tells macOS to ask cleanly **once more**, and remember your choice from then on. 1. Quit **BusyCal**. 2. Open **Terminal** (Applications > Utilities > Terminal). 3. Paste the following command and press Return: ``` tccutil reset Location com.busymac.busycal3 ``` 4. Relaunch BusyCal. When macOS asks for location permission, click **Allow**. You can also reset location permission for **every** app at once with: ``` tccutil reset Location ``` …but the targeted command above is safer, since it only affects BusyCal. note The same approach works for the Time to Leave / travel-time features in particular, since they depend on macOS Location Services being available to BusyCal. --- # Alarms info BusyCal alarms are handled by the special `BusyCal Alarms & Menu` extension process that comes bundled with the app. If you're looking to trouble-shoot *alarms not working* related issues, please [see this instead.](/docs/busycal/70606-busycal-menu.md#troubleshooting) BusyCal has a flexible selection of alarms to remind you about scheduled events. Alarms can display an alert (with or without a sound, where supported), send an email message, or open a file or app. Alarms can also be set to appear on an iOS device when arriving at or leaving a specified location. An event can have one or more alarms, each of which can occur at, before, or after the event’s start time. ## Creating Alarms[​](#creating-alarms "Direct link to Creating Alarms") To add an alarm to an event, click the “alarm” pop-up menu on the Info Panel and choose one of the default intervals from the menu. ![Alarm 30 minutes before](https://www.busymac.com/images/bcl3mac-alarm-menu.png) Choose Custom to set a custom interval or time for the alarm, or to specify an alarm type other than the default Message alarm. ![Alarm menu - Custom](https://www.busymac.com/images/bcl3mac-alarm-menu-custom.png) ![Custom alarm type](https://www.busymac.com/images/bcl3mac-custom-alarm.png) You can add multiple alarms to an event (e.g., one at 15 minutes before and another at 5 minutes before) by clicking the + (plus) icon next to the “alarm” pop-up menu on the Info Panel. ## Alarm Types[​](#alarm-types "Direct link to Alarm Types") In addition to the standard Message alarm, the Custom dialog enables you to create an Email alarm, Open File alarm, or Location Alarm: * **Message Alarm** — The default alarm type displays an alert in the BusyCal Alarm window or in Notification Center, depending on which option you have set in Settings (see [Displaying Alarms](#displaying-alarms) below). * **Email Alarm** — Sends an email message to one of the email address listed on your [Me Card](/docs/busycal/70615-meetings-and-invitations.md#me-card). Note: Exchange accounts do not support email alarms. * **Open File Alarm** — Opens an application or file, or opens a URL in your web browser. Open File Alarms run only on the Mac where they are created and do not sync with other devices, for security reasons. **Note**: iCloud and Exchange do *not* support these type of alarms. * **Location Alarm** — iCloud only - Displays a geo-fenced alert on an iOS device when arriving at or leaving the todo's location (see [Tasks with Location Alarms](/docs/busycal/70594-tasks.md#to-dos-with-location-alarms)). Events do not support geo-fenced alarms. Exchange accounts currently only support **Message** alarms. ### Relative vs Fixed Alarms[​](#relative-vs-fixed-alarms "Direct link to Relative vs Fixed Alarms") When setting alarms, you can choose between two timing methods: * **Relative Alarms** — These alarms are set relative to the event's start time or task's due date (e.g., "15 minutes before", "1 hour after"). If you reschedule the event or task, the alarm automatically adjusts to maintain the same relative timing. For example, if you have a meeting at 2:00 PM with a "15 minutes before" alarm, and you move the meeting to 3:00 PM, the alarm will automatically update to 2:45 PM. * **Fixed/Absolute Alarms/Custom** — These alarms are set to trigger at a specific date and time regardless of when the event or task is scheduled. If you reschedule the event or task, the alarm time remains unchanged. For example, if you set an alarm for "January 15 at 9:00 AM", it will always trigger at that exact time even if you move the associated event. **Recommendation:** Relative alarms are generally preferred because they automatically adjust when you reschedule events or tasks, ensuring you always receive timely reminders. Fixed alarms are best reserved for specific situations where you need a reminder at an exact time regardless of schedule changes. You can configure default alarms for new events and tasks in **Settings > Alarms**. See [Alarms Preferences](/docs/busycal/70607-preferences.md#alarms-preferences) for more details. ## Displaying Alarms[​](#displaying-alarms "Direct link to Displaying Alarms") BusyCal can display alarms for events and tasks in the BusyCal Alarm window, or in the macOS Notification Center. The BusyCal Alarm window offers several advantages over Notification Center, including the ability to: * Move and resize the Alarm window. * Hide the window by clicking on the top left close button. To re-show the window, click on the BusyCal menu-app icon displayed in the top menu bar. * Snooze an alarm any number of minutes, hours, or days. * Snooze an alarm until *x* minutes before an event starts. * Snooze or dismiss multiple alarms at once. * See the color of the calendar that the event is stored on. * Navigate the Alarm window from the keyboard. If an event or a task item includes a location or text in the Notes field, that information (or a portion thereof) appears underneath the title of the event or task in the BusyCal Alarm window. A small blue-arrow will also appear against events with meeting links, address links or other URLs. Clicking on it will open the browser or the maps app where possible. ![BusyCal Alarm Window](https://downloads.busymac.com/resources/img/busycal-mac/bcl_alarm_windows.png) ### When Alarms Are Auto-Dismissed[​](#auto-dismiss "Direct link to When Alarms Are Auto-Dismissed") Once an alarm appears in the BusyCal Alarm window, BusyCal keeps it visible until it is either explicitly **acknowledged** (snoozed or dismissed) or the underlying event/task changes in a way that makes the alarm no longer relevant. Specifically, a shown alarm is removed automatically when the underlying event or task is: * **Deleted**. * **Rescheduled** to a new due date or due time (changing the event or task's own date/time). * **Marked completed** (for tasks). Changing only the **alarm time** (the alarm's offset or alert time) on an event or task that is already showing in the Alarm window will **not** auto-dismiss the existing alert — you'll need to dismiss it manually. This is intentional: during sync, alarms can be removed, recreated, or shifted in the background, and automatically dismissing already-shown alerts in those cases could cause people to miss them. Once an alert is on screen, BusyCal keeps it visible until you acknowledge it. Snoozes and shown alarms are persistent Snoozes can be set for **any length of time** — minutes, hours, days, or even weeks — and snoozed alarms, along with any alarms currently shown in the Alarm window, are saved to disk. They survive quitting and relaunching BusyCal, and even a full computer restart, so nothing is lost between sessions. ### Snoozing Alarms[​](#snoozing-alarms "Direct link to Snoozing Alarms") The Alarm window footer offers two ways to snooze an alarm: a **manual snooze**, which has been supported in BusyCal for years, and **snooze presets**, available from a small chevron next to the Snooze button. The same chevron is available next to the Dismiss button so you can jump straight to a common preset without typing a value first. Apply to all alarms at once Hold down the **Option** key and the **Snooze** and **Dismiss** buttons turn into **Snooze All** and **Dismiss All** — applying your choice to every alarm in the window in one click. You can also reach the same actions from the drop-down menus next to each button. #### Manual Snooze[​](#manual-snooze "Direct link to Manual Snooze") Enter a number in the snooze field and choose a unit (minutes, hours, days, or "minutes before start") from the adjacent pop-up. Pressing Return applies the value to every selected alarm. This behaves exactly as before — see [Keyboard Controls](#busycal-alarm-window-keyboard-controls) for the shortcuts that drive it from the keyboard. #### Snooze Presets[​](#snooze-presets "Direct link to Snooze Presets") Click the chevron next to **Snooze** (or **Dismiss**) to pick a preset. Presets are grouped into three sections: * **Relative to the event start** — snooze to a point anchored on the event's own start time, regardless of the current time: * *Start time* — fire again at the moment the event starts. * *5 / 10 / 15 minutes before start* — fire that many minutes ahead of the event's start. * **Relative to now** — fire a fixed interval from the moment you click: * *5, 10, 15, 30 minutes* * *1, 2, 4 hours* * *1, 2, 4 days* * *1, 2 weeks* * **Anchored to a calendar boundary** — fire at a named point on your calendar rather than a fixed interval: * *End of today* — midnight at the end of today, in your current time zone. * *End of working hours* — the **Day ends at** time you configured in [Settings → General](/docs/busycal/70607-preferences.md#general-preferences). If that time has already passed today, or today isn't a working day, BusyCal advances to the next configured working day. * *Tomorrow morning* — the start of your working hours (the **Day starts at** time in [Settings → General](/docs/busycal/70607-preferences.md#general-preferences)) on the next calendar day. This preset does not skip over weekends — it always lands on the day immediately after today, at your configured working-hours start. * *End of week* — just before the start of the next week, using the **Start week on** day you configured in [Settings → General](/docs/busycal/70607-preferences.md#general-preferences). * *Next week* — the **Day starts at** time on the first working day of next week. The "working hours", "working days", and "week start" referred to above are all driven by your [General Settings](/docs/busycal/70607-preferences.md#general-preferences) — specifically **Day starts at**, **Day ends at**, and **Work week**. Change those values and the corresponding presets follow, so "Tomorrow morning" always means the start of *your* day, and "End of working hours" always means the end of *your* working day on a day you actually work. Start-relative presets (*Start time*, *N minutes before start*) are only offered when a future occurrence start is available for the selected alarm. If the event has already begun, those entries are disabled for that alarm. ### Viewing Snoozed Alarms[​](#viewing-snoozed-alarms "Direct link to Viewing Snoozed Alarms") When you snooze an alarm, it doesn't just disappear; you can keep track of all your snoozed alarms directly in the Alarm window. A small snooze badge appears in the top-right corner of the title bar showing the number of currently snoozed alarms. Click the badge to toggle into snoozed view, where each entry shows the event name and how long until the alarm fires again. ![BusyCal Snoozed Alarms View](https://downloads.busymac.com/resources/img/busycal-mac/bcl_snoozed_alarms.png) From the snoozed view you can dismiss or re-snooze any alarm. Click the badge again to switch back to the active alarms list. tip If the Alarm window closes after snoozing your last active alarm, open the BusyCal Menu App and click the bell button in the bottom-right corner to bring it back and see your snoozed alarms. ![BusyCal Menu App — bell button to reopen the Alarm window](https://downloads.busymac.com/resources/img/busycal-mac/bcl_menu_listing.png) ## BusyCal Alarm Window Keyboard Controls[​](#busycal-alarm-window-keyboard-controls "Direct link to BusyCal Alarm Window Keyboard Controls") When BusyCal’s Alarm window is active, you can do the following with the keyboard: * Type a number to enter a snooze value. * Type “m” to choose “minutes” from the snooze interval pop-up menu. * Type “h” to choose “hours” from the snooze interval pop-up menu. * Type “d” to choose “days” from the snooze interval pop-up menu. * Type “b” to choose “minutes before start” from the snooze interval pop-up menu. * Double-click an alarm to show the event in BusyCal. * Select the checkbox to mark a task as completed. * Press Tab to toggle the selection between alarms and the snooze interval field. * Use the arrow keys to select an alarm in the list. * Shift-click or `⌘-click` multiple alarms to dismiss or snooze all of them. * Press Return to apply the default button (Snooze or Dismiss) to the selected alarm; or press `⌘-D` to dismiss it, or `⌘-S` to snooze it. * Press Shift or Option to change the buttons to Snooze All and Dismiss All. ![BusyCal Alarm Window — Minutes Before Start snooze option](https://downloads.busymac.com/resources/img/busycal-mac/alarm_mbs.png) ## Setting default Alarm and Snooze Intervals[​](#setting-default-alarm-and-snooze-intervals "Direct link to Setting default Alarm and Snooze Intervals") To add alarms automatically to new items you create in BusyCal, open **BusyCal > Settings > Alarms > Default Alarms**. Events and tasks have separate settings, with different defaults for items with and without a time. ![Alarm Settings](https://downloads.busymac.com/resources/img/busycal-mac/settings_alarms.png) Turn on the settings you want: * **Timed Events**: Add alarms relative to an event's start time, such as 5 minutes before. * **All-day Events**: Add alarms at a chosen time on the same day, or a number of days before or after the event's date. * **Timed Tasks**: Add alarms relative to a task's due time, such as 0 minutes before. * **Dated Tasks**: Add alarms for tasks with a due date but no due time. Choose a time on the same day, or a number of days before or after the due date. * **Birthdays & Anniversaries**: Choose a time on the same day, or a number of days before or after the date. To be alerted exactly when an event starts or a task is due, give the item a time and set its **Timed Events** or **Timed Tasks** default to **0 minutes before**. All-day events and dated tasks have no specific time, so their defaults use a clock time, such as 9:00 AM on the same day. Changing these defaults does not add alarms to all existing items. Choose alarm sounds separately under **Settings > Alarms > Alert Sounds**. See [Alarms settings](/docs/busycal/70607-preferences.md#alarms-preferences) for the available options. ### Alarms on Items Created in Other Apps[​](#alarms-on-synced-items "Direct link to Alarms on Items Created in Other Apps") When an event or task is created in another app, BusyCal syncs the alarm information that the calendar service supports. It does not apply its new-item defaults to every incoming item. Adding another alarm during sync could create duplicates when the other app or service also adds one. * **Google Calendar events**: Configure notifications in Google Calendar or on the event itself. For an alert at the event's start time, use a **Notification** set to **0 minutes before**. An **Email** reminder is sent by Google and does not open the BusyCal Alarm window. * **Google Tasks**: Google's **Event notifications** and **All-day event notifications** settings do not apply to tasks. Google does not share task due times or task alarms with BusyCal, so assigning them in Google's apps does not make them sync to BusyCal. See [Google Calendar limitations](/docs/faqs/google-calendar-limitations.md) for details and the options for syncing due times between BusyCal devices. For automatic alarms on new items, create them in BusyCal with the matching default above enabled. Read-only calendar subscriptions have a separate option, described below. ### Default Alarms for Read-Only Subscriptions[​](#default-alarms-for-subscription "Direct link to Default Alarms for Read-Only Subscriptions") BusyCal supports adding default alarms as **My Alarms**—alarms created locally on your Mac—for read-only WebDAV subscription calendars, such as holiday calendars. To enable this: 1. Double-click the calendar name in the Left Panel. 2. Check the **Add default alarms** option. These alarms remain local and do not sync to the server or other devices. ![Subscription Calendar Default Alarms Settings](https://downloads.busymac.com/resources/img/busycal-mac/default-webdav-alarms.png) ## Displaying Alarms in the BusyCal Alarm Window[​](#displaying-alarms-in-the-busycal-alarm-window "Direct link to Displaying Alarms in the BusyCal Alarm Window") To enable the BusyCal Alarm window, go to BusyCal > Settings > Alarms and make sure “Show alarms” is checked and “Use BusyCal Alarm window” is selected. ![Alarm Settings - BusyCal Alarms](https://www.busymac.com/images/bcl3mac-prefs-alarms-bottom-bc.png) You can then select the following options: * **Alarm window floats on top** — Keep the Alarm window above other windows when it is visible. * **Alarm window takes input focus** — Select this option if you want the Alarm window to take the keyboard focus, so you can snooze or dismiss an alarm from the keyboard without first having to click in the window with your pointer. * **Show in all desktop spaces** — Make the Alarm window available on every macOS Desktop/Space. This is useful if you use Mission Control, full-screen apps, or multiple monitors with separate Spaces because the Alarm window is no longer tied to only the Space where it first opened. It does not mirror separate alarm windows onto every physical monitor at the same time. * **Snooze button is default** — Select this option if you want Snooze to be the default button in the Alarm window so you can press Return on the keyboard after entering a snooze value without having to click the Snooze button with your pointer. Otherwise, pressing Return dismisses the alarm. * **Snooze value** — You can set a default snooze interval, including the option to snooze an alarm for *x* minutes before the start of the event. ## Displaying Alarms in Notification Center[​](#displaying-alarms-in-notification-center "Direct link to Displaying Alarms in Notification Center") To receive alarms in Notification Center, choose BusyCal > Settings > Alarms, check “Show alarms,” and select “Use Notification Center.” ![Alarm Settings - Notification Center](https://www.busymac.com/images/bcl3mac-prefs-alarms-bottom-nc.png) Then, go to **System Settings > Notifications**, select \*\*\*\*usyCal in the left sidebar, and select your alert style and other settings. Also do the same for **BusyCal Menu & Alarms**. The main *BusyCal* process is responsible for display Inbox related notifications, whereas **BusyCal Menu & Alarms** is responsible for triggering and displaying actual alarms. ## Disable macOS Calendar and Reminder Notifications[​](#disable-os-x-calendar-and-reminder-notifications "Direct link to Disable macOS Calendar and Reminder Notifications") macOS Calendar, Reminders, and BusyCal can each display alarms for your events and tasks. You should disable the alerts for macOS Calendar and Reminders to prevent receiving two alarms for every event—one displayed by macOS Calendar or Reminders and another displayed by BusyCal. You can disable alerts for macOS Calendar and Reminders, as follows: * Go to **System Settings > Notifications**. * Select Calendar in the left sidebar, and then change the alert style to None or Banners. * Select Reminders in the left sidebar, and then change the alert style to None or Banners. ![Notifications Settings - Calendar](https://www.busymac.com/images/bcl3mac-notifications-prefs-calendar.png) ## Disable Default Alarms in Calendar[​](#disable-default-alarms-in-calendar "Direct link to Disable Default Alarms in Calendar") macOS Calendar has a preference setting similar to BusyCal’s for setting default alarms for new events. Unfortunately, if you have that preference enabled, the Calendar app adds default alarms to all the events you create in BusyCal. Therefore, you should disable the default alarms setting in Calendar > Settings > Alerts, as shown below, to avoid extra alarms being attached to events you create in BusyCal. ![Calendar Settings - Alerts](https://www.busymac.com/images/bcl3mac-calendar-prefs-alerts.png) Google Calendar users Google Calendar also has its own per-calendar default notification setting on the server. If you're seeing unwanted alarms on Google Calendar events even after disabling defaults in BusyCal and Apple Calendar, you need to remove the default notification in Google Calendar's web settings as well. See [Why does Google Calendar keep adding alarms to my events?](/docs/faqs/google-calendar-adding-unwanted-default-alarms.md) for step-by-step instructions. ## Ignoring Alarms For Specific Calendars[​](#ignore-alarms-specific-calendar "Direct link to Ignoring Alarms For Specific Calendars") BusyCal allows you to ignore alarms from specific calendars. Please [read this for more information](/docs/busycal/70592-calendar-list.md#ignoring-alarms). ## Alarms on Shared Calendars[​](#alarms-shared-calendars "Direct link to Alarms on Shared Calendars") It’s important to note that when syncing with a CalDAV calendaring account such as iCloud or Google Calendar, alarms on shared calendars do **not** sync. This is because alarms are user-specific—each participant manages their own reminders independently. While the same alarm time might work for both users in some cases, people often have different preferences, travel times, or live in different time zones. As a result, calendar systems treat alarms as private to each participant to avoid conflicts and ensure they remain personally relevant. --- # Quick Entry You can create events and tasks in BusyCal using natural language via the Quick Entry feature. ## Quick Entry - Natural Language[​](#natural-language "Direct link to Quick Entry - Natural Language") BusyCal's Quick Entry feature allows you to rapidly create calendar events, tasks, and journal entries using everyday language instead of filling out forms. Type phrases like "Lunch with Sarah tomorrow at noon" or "Team meeting Tuesday 3pm at Conference Room" and BusyCal automatically interprets the date, time, location, and other details. * **BusyCal** — Click the + (plus) icon that appears in top left corner of the window, or press `⌘-Option-N`, to expose the Quick Entry field. * **BusyCal Menu** — Click the BusyCal menu bar icon, or press `⌘-Control-B`. Your cursor is placed in the Quick Entry field that appears on the top of the menu. A preview of the event details are displayed while you type as it recognizes the title, date and time, location and more. You can even add contacts or attendees, set an alarm, add a URL, or indicate the calendar to create the event on. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/quick_entry_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/quick_entry_web_poster.png) ## Creating Events[​](#creating-events "Direct link to Creating Events") BusyCal lets you use natural language to create new events and tasks via Quick Entry. Here are some examples: ``` Lunch with Joe next Tuesday Lunch with Joe next Tuesday at 12:00 Meeting with Joe Nov 7 at 3:00 Staff meeting Thursday at 2:00 Dentist at 2:00 Monday alarm 15m => adds an alarm 15 minutes before the event Dentist at 3:30 Monday alarm 15m, 10m, 5m => adds three alarms 15, 10 and 5 minutes before the event. Supported by BusyCal v2023.3.1+ Dentist at 2:00 Monday [45m] => Creates a 45-minute event (2:00 PM - 2:45 PM) Coffee at Jimmys 9:00 => adds Jimmys to the Location field ``` The keyword `allday` can be used to turn the event into an all-day event, even if a default start time is applied in settings. Time will automatically be omitted when `allday` is used. ``` Attend conference tomorrow allday ``` Events are added to the default event calendar specified in BusyCal > Settings > General > Default calendar for Events, unless you specify a different calendar (see [Setting the Calendar](#setting-the-calendar) below). ## Time Zones[​](#time-zones "Direct link to Time Zones") You can attach a time zone to an event simply by typing it inline. BusyCal recognises both common abbreviations (`PST`, `EST`, `GMT`, `BST`, `UTC`, etc.) and full IANA identifiers (`America/New_York`, `Asia/Tokyo`, `Europe/London`, …). The time zone is parsed out of the title, so it never ends up in the event name. With English Quick Entry, you can also use the six common U.S. zone names: `Eastern`, `Central`, `Mountain`, `Pacific`, `Alaska`, and `Hawaii`. Add `Time` if you prefer the full phrase. BusyCal maps these names to regional time zones and follows each region's daylight-saving rules automatically. For an exception such as most of Arizona, enter the specific IANA identifier, for example `America/Phoenix`. ``` Class April 19 at 1pm PST Meeting May 1 9am America/New_York Client call Monday at 9:45 Eastern Client call Monday at 9:45 Eastern Time Apple Earnings Call Tuesday 2pm PST! => trailing punctuation does not break parsing ``` A bare name is recognised at the end of the entry, before punctuation, or before another recognised clause such as `to`, `with`, `at`, or `in`. Use the full form, such as `Eastern Time`, if ordinary title text follows the zone. If your event has a **different start and end zone** — for example, a flight or a cross-zone call — write a zone after the start time, the end time, or both: ``` Flight April 18 9am EST to 11am PST Class April 19 at 1pm PST to 3pm EST Lecture April 19 at 1pm Pacific to 5pm Eastern Conference April 18 12pm PST to April 19 => end falls on the next day, in the same zone ``` A few finer points: * You can write the zone with or without a space — `9am PST` and `9amPST` both work. The space-less form is especially handy in Chinese, Japanese, and Korean inputs. * All-day events can still carry a zone, e.g. `do something tomorrow 9pm PST allday`. * Recurring events keep their zone on **every** occurrence — see [Recurrence end and date windows](#recurrence-end) for examples like `every Tuesday at 9am PST until February 3`. * Abbreviations and IANA identifiers are supported in all of BusyCal's localized builds (English, Canadian English, German, French, Italian, Spanish, Dutch, Japanese, Korean, and Simplified Chinese). The spoken U.S. names listed above are available with English Quick Entry. ## Creating Recurring Events[​](#creating-recurring-events "Direct link to Creating Recurring Events") Quick Entry can recognise a wide range of natural-language recurrence phrases and convert them into a repeating event automatically. The recurrence preview appears inline as you type, alongside the parsed title, date, and time. ### Simple repeats[​](#simple-repeats "Direct link to Simple repeats") ``` Yoga every day at 7am Standup every weekday at 9:30 Project sync every Tuesday at 10am Pay rent monthly Sam's birthday every year on 5/16 ``` Frequency keywords include `daily`, `weekly`, `monthly`, `yearly`, `biweekly` / `bi-weekly`, `bimonthly` / `bi-monthly`, and `quarterly`. You can also write the equivalent `every day`, `every week`, `every month`, `every year`, or `every weekday` / `every weekend`. ### Custom intervals[​](#custom-intervals "Direct link to Custom intervals") Use `every N ` for non-default intervals, or `every other` for every-second occurrences: ``` Water the plants every 3 days Team retro every 2 weeks on Friday at 4pm Inventory check every other Monday ``` ### Specific weekdays and ordinal patterns[​](#weekdays-and-ordinals "Direct link to Specific weekdays and ordinal patterns") ``` Soccer practice every Tuesday with John at 6pm Game night every Friday and Saturday at 8pm Team meeting at 9am on the second Tuesday of every month Board review at 10am on the last Thursday of each month ``` Ordinal words supported in the "Nth weekday of the month" form: `first`, `second`, `third`, `fourth`, `fifth`, and `last` (as well as `1st`, `2nd`, `3rd`, `4th`, `5th`). ### Recurrence end and date windows[​](#recurrence-end "Direct link to Recurrence end and date windows") Cap a series with `until`, `through`, `thru`, `till`, or `to`. To shift the start, use `from`, `starting`, `starting on`, `beginning`, or `beginning on`. Both can be combined to form an explicit date window: ``` Lunch every Tuesday until 2/5 Conference call every Saturday at 12pm PST from April 18 through June 20 Daily standup starting Monday at 9am ``` Time zones are preserved inside recurrence windows — `every Tuesday at 9am PST until February 3` keeps PST on every occurrence, not just the first one. ### Notes[​](#recurrence-notes "Direct link to Notes") * If you want a phrase like `every Tuesday` to appear in the **title** instead of being interpreted as a recurrence, wrap it in straight quotes: `"every Tuesday"`. * All the recurrence phrases above are also recognised in the localized BusyCal builds for **German, French, Italian, Spanish, Dutch, Japanese, Korean, Simplified Chinese, and Canadian English**. The phrasing follows each language's conventions — for example, `tous les mardis à 9h` in French or `毎週火曜日 9時` in Japanese. ## Creating Tasks[​](#creating-to-dos "Direct link to Creating Tasks") You can create tasks by preceding the text with a hyphen “-”, “todo”, “remember to” or “remind me to.” If a date or time is included, BusyCal creates a dated or timed task. Otherwise, it creates an undated task. For example: ``` -Call Bob ``` ``` todo Call Bob tomorrow ``` ``` -Call Bob tomorrow at 10am ``` ``` remember to Call Bob next Tuesday ``` ``` -Call Bob Nov 7 ``` ``` remind me to pick up dry cleaning at 5pm ``` You can set the priority for a task by appending exclamation points (!). One exclamation point = low priority, two = medium priority, and three = high priority. For example: **Low priority:** ``` -Call Bob! ``` **Medium priority:** ``` -Call Bob!! ``` **High priority:** ``` -Call Bob!!! ``` You can also set the duration (in minutes) for a task by appending a number within square brackets. This makes it easy to specify how long a task will take. Here are some examples: **Sets a task duration of 10 minutes, starting at 9pm** ``` -Submit draft tomorrow at 9pm [10m] ``` **Sets a task duration of 1 hour without specifying date or time** ``` -Team meeting [1h] ``` **Sets a task duration of 45 minutes** ``` -Client call [45m] ``` Tasks are added to the default task calendar specified in BusyCal > Settings > Tasks > Default calendar for Tasks, unless you specify a different calendar (see [Setting the Calendar](#setting-the-calendar) below). ## Adding Tags[​](#adding-tags "Direct link to Adding Tags") Availability Requires BusyCal 2026.4.2 or later. In Quick Entry and the BusyCal menu, put `#` before a tag name to assign it to the new event or task. BusyCal removes the hashtag from the title and saves the name in **Tags**. ``` -Process receipts #Imported due today Team meeting tomorrow at 3pm #work #planning ``` Separate multiple tags with spaces. Each tag can contain letters, numbers, underscores, or hyphens, such as `#follow-up`. Tag names in this syntax cannot contain spaces. Repeating a tag, even with different capitalization, adds it once. To keep a hashtag in the title, enclose it in straight quotes, for example `Discuss "#Imported" tomorrow`. The **Quick Add** action in Shortcuts accepts the same hashtag syntax. See [creating a task with a tag](/docs/busycal/siri-and-shortcuts.md#task-tags). ## Creating Journals[​](#creating-journals "Direct link to Creating Journals") You can create journal entries by preceding the text with a “>”, “memo”, “log” or “journal”. Journal entries default to the current date unless specified. Here are some examples: ``` >Museum visit ``` ``` memo Jimmy took his first steps today ``` ``` log Project launched with hiccups yesterday ``` Journal entries are added to the default journal calendar specified in settings, unless you specify a different calendar (see [Setting the Calendar](#setting-the-calendar) below). ## Adding a Location[​](#adding-a-location "Direct link to Adding a Location") If you enter a location preceded by the words `in`, `at` or `@`, the location will be underlined. If you click on the location, you will have the option to select a [structured location](/docs/busycal/70603-locations-maps-travel-time.md), which will insert the full address into the location field. Here are some examples: ``` Breakfast with Bob tomorrow at 8am at Streamliner ``` ``` Staff Meeting Wed 10am @ Conference Room ``` ``` Study Hall 3pm in Library ``` ## Adding a Contact or Attendee[​](#adding-a-contact-attendee "Direct link to Adding a Contact or Attendee") If you enter a person's name preceded by the words `call`, `contact`, `email`, `follow up with`, or `with`, the person's name will be underlined. If you click on the name, you will have the option to add that person as a Contact (if you're using [BusyContacts](/docs/busycontacts/47355-linking-contacts-with-events-in-busycal.md)) or an Attendee. Here are some examples: ``` -Call Bob -Follow up with Bob Lunch with Bob tomorrow at 1pm ``` ## Setting the Calendar[​](#setting-the-calendar "Direct link to Setting the Calendar") Optionally, you can specify which calendar to create an event or task on by including a slash (/) followed by the calendar name (e.g., ‘/work’) or a unique portion of the calendar name (e.g., ‘/w’). Here are some examples: **New event on Work calendar** ``` Lunch with Joe next Tuesday /work ``` **New event on Work calendar, if no other calendars start with “w”** ``` Lunch with Joe next Tuesday /w ``` **New task on Work calendar** ``` -Call Bob /work ``` **New task on Shopping calendar** ``` -Buy Toner /shop ``` Use calendar name abbreviations, such as `/pjt` to match **Project Titan**. Simply type a sequence of characters that appear in the name. ``` Team Review Meeting /pjt ``` ## Adding a URL[​](#adding-a-url "Direct link to Adding a URL") You can include an optional URLin the phrase surrounded by angle brackets (e.g., ``) to include a link to that URL. Here are some examples: ``` -Buy Toner Apple Earnings Conference Call Tuesday at 2pm ``` ## Editing Events and Tasks Created with Quick Entry[​](#editing-events-and-to-dos-created-with-quick-entry "Direct link to Editing Events and Tasks Created with Quick Entry") After you create an event with Quick Entry, the event is selected in BusyCal and the Info Panel is displayed, where you can make further changes to the event. --- # BusyCal Menu App BusyCal includes a **menu bar extension** app that lets you view and add locally stored events with a single click, even when BusyCal isn't running. If you can't find the menu icon, see [Can't See the Menu Icon?](#faq-cant-see-icon) below. This extension runs as a separate process called **`BusyCal Menu & Alarms`**, which, as the name suggests, also manages alarms and snooze options. While you can disable and remove the menu bar icon from **BusyCal Settings**, the process itself **cannot (and should not) be stopped**, as doing so would prevent BusyCal from triggering alarms. If you do not wish to see alarms and do not want BusyCal Menu App to run separately, uncheck the *Show alarms* setting as [described here](/docs/busycal/70607-preferences.md#alarms-preferences). The BusyCal Menu App displays a navigable mini month view, a scrolling list of upcoming events and tasks, the weather forecast for today and upcoming days, and a Quick Entry field for creating new events with natural language. You can detach it into a floating window, resize it both vertically and horizontally, and BusyCal remembers its last on-screen position and size. To display the menu, click its icon in the menu bar or press `⌘-Control-B`. (You can change that shortcut; see [Enabling the BusyCal Menu App](#enabling-the-busycal-menu), just ahead.) ![BusyCal Menu](https://downloads.busymac.com/resources/img/busycal-mac/menu_app_conf_call.png) ## Enabling the BusyCal Menu App[​](#enabling-the-busycal-menu "Direct link to Enabling the BusyCal Menu App") To display the BusyCal Menu App in your menu bar, go to **BusyCal menu > Settings > Menu** and select the **Show BusyCal Menu in menu bar** checkbox. This opens a background application that loads at login and continues running even when BusyCal has quit. ![Show BusyCal Menu preference](https://downloads.busymac.com/resources/img/busycal-mac/setting_enable_menu.png) You can also set an additional option: * **Set Menu Shortcut** — By default, you can press `⌘-Control-B` to display the BusyCal Menu App (as an alternative to clicking the menu bar icon). If you prefer to use a different keyboard shortcut (for example, if you've already assigned `⌘-Control-B` to something else), click Set Menu Shortcut, click in the field at the top of the dialog that appears, and press the key combination you want to use to open the BusyCal Menu App. Then click OK. ## Detaching (Tearing Out) the BusyCal Menu App[​](#detaching-the-busycal-menu "Direct link to Detaching (Tearing Out) the BusyCal Menu App") To keep the BusyCal Menu App visible while you work, detach (tear out) the menu into a separate floating window. Once detached, the BusyCal Menu App remains on screen until you close it, and BusyCal remembers its last on-screen position and size. To reattach the window, drag it back near the BusyCal Menu App icon in the menu bar. ## Using the BusyCal Menu App[​](#using-the-busycal-menu "Direct link to Using the BusyCal Menu App") With the BusyCal Menu App open, you can do the following: * Detach (tear out) the menu if you want to keep it open while working in other windows and apps. * Click the left or right arrow button to move across any number of months in either direction. * Scroll the list of daily events and tasks using your trackpad, Magic Mouse, or scroll wheel; the agenda supports infinite scrolling. * Click on a date in the mini month to scroll the list of events to that date. * Click or use the arrow keys to select an item and view its details. * If the item is a task, you can mark it as complete by clicking the done checkbox. * Double-click an event, or press Return with an event selected, to open the event in BusyCal. * Create new events / tasks using natural language in the [Quick Entry](/docs/busycal/70605-quick-entry.md) field at the top of the menu. * If you close the Alarm window, click the alarm button in the footer of the BusyCal Menu App window to reopen it. ## BusyCal Menu App Behavior[​](#menu-app-limitations "Direct link to BusyCal Menu App Behavior") The BusyCal Menu App is a **lightweight calendar extension** that resides in the menu bar and is optimized for quick access. ### Main App Interaction[​](#menu-app-needs-main-app "Direct link to Main App Interaction") BusyCal Menu App runs as its own background process (`BusyCal Menu & Alarms`) and refreshes its display from the same locally stored calendar data used by the main BusyCal app. You can continue browsing and interacting with that data after the main app quits. It does not sync with calendar services. Keep the main BusyCal app running for [account syncing](#faq-sync-without-main). ### Month Navigation and Agenda Range[​](#limited-event-range "Direct link to Month Navigation and Agenda Range") You can now navigate freely across any number of months, both backward and forward. The agenda list supports infinite scrolling. For full calendar access and advanced features, please use the main BusyCal app. ### Alarm Handling in the BusyCal Menu App[​](#launches-when-dismissing "Direct link to Alarm Handling in the BusyCal Menu App") Alarm snoozing and dismissal are handled by the BusyCal Menu App without launching the main BusyCal app. Snoozed alarms persist across app restarts, so you won't lose them if BusyCal or the Menu App is relaunched. You can view all currently snoozed alarms using the [snooze badge in the Alarm window](/docs/busycal/70604-alarms.md#viewing-snoozed-alarms). If you close the Alarm window, you can reopen it using the alarm button in the footer of the BusyCal Menu App window. ## Upcoming Events Display and Countdown in the BusyCal Menu App[​](#upcoming "Direct link to Upcoming Events Display and Countdown in the BusyCal Menu App") The BusyCal Menu App shows a real-time event countdown in your menu bar: * **Upcoming event countdown**: How much time until your next event starts * **Ongoing event progress**: How much time has elapsed during current events * **Event details**: Title, time, and location at a glance ![Upcoming Events Display](https://www.busymac.com/images/new/bcl-menubar-upcoming@2x.png) The countdown stays visible even when the main app is closed. ### Customizing the Upcoming Events Display[​](#customize-upcoming-events "Direct link to Customizing the Upcoming Events Display") To activate and customize this feature: 1. Ensure the BusyCal Menu App is enabled in your menu bar 2. Go to **BusyCal Settings > Menu** 3. Configure options like showing event countdown, event duration, and which events to display ### Excluding Specific Calendars from Upcoming Event Countdown[​](#exclude-calendars-upcoming "Direct link to Excluding Specific Calendars from Upcoming Event Countdown") The upcoming event countdown reflects whichever calendar set is selected in the main app. To **permanently exclude specific calendars** from the upcoming event list: 1. **Double-click** the calendar name in the left **Calendar List**. 2. **Uncheck** the option **Show upcoming events in menu bar**. 3. Click **OK**. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") The **BusyCal Menu & Alarms** extension process triggers and handles alarms in the background (also called the **Alarm Helper App**). macOS is responsible for keeping the main app connected to this extension app, even though the extension process comes bundled with the main app at install time. If changes made in Outlook, iCloud, or another service are missing, first make sure the main BusyCal app is running. The Menu app does not sync accounts on its own. See [Syncing with the Main App](#faq-sync-without-main). If the **BusyCal Menu App** is: * Not showing / refreshing your selected calendars or events, or appears blank * You get an alert such as `Uh-oh! Could not communicate with the Alarm app` * The menu bar app is not visible in the macOS Menu Bar, or * The app is not triggering any alarms * Not showing upcoming or ongoing event titles in the macOS menu bar Follow these steps to resolve the issue as it seems macOS is unable to pair the main app with its menu bar extension ([option 5 below](#reset-bg-tasks) normally always helps if you have followed through all the rest): ### 🔒 Ensuring BusyCal Has the Correct System Permissions[​](#-ensuring-busycal-has-the-correct-system-permissions "Direct link to 🔒 Ensuring BusyCal Has the Correct System Permissions") important To function properly, BusyCal requires the **Allow in the Background** system permissions under **System Settings > General > Login Items & Extensions** macOS Tahoe (26.0+) * Since macOS 26.0, menu bar apps can be hidden. Open System Settings > Menu Bar and make sure BusyCal is enabled. **Try toggling the switch by turning it off and back on**. * On macOS Tahoe, the BusyCal background permission may appear as a **Dock Tile** toggle (after clicking the **(i)** button next to BusyCal under **Allow in the Background**). Enable it, then quit and relaunch BusyCal. macOS Sequoia 15+? Versions of BusyCal that predate macOS 15 (any version of BusyCal below 2024.4.1) will not work on the latest version of macOS as the Alarm Helper App is not compatible. You must update your copy. macOS prompts for these permissions when the app is first launched. If you **accidentally clicked "Disallow"**, BusyCal will be unable to launch its alarm helper extension and alarms will fail to trigger. #### How to Check and Enable Permissions:[​](#how-to-check-and-enable-permissions "Direct link to How to Check and Enable Permissions:") 1. Open **System Settings** and navigate to **General > Login Items & Extensions**. 2. Scroll to the **Allow in the Background** section. 3. Find **BusyCal**. If there's a toggle switch next to it, enable it. If you see an **(i)** button instead, click it and enable **Dock Tile** (and **Allow in the Background**, if shown). 4. In case you do not see BusyCal listed, please drag `BusyCal.app` to the Trash from under Applications, and re-download the app - this will force macOS to refresh this list. Quit and relaunch BusyCal for the change to take effect, then test an event alarm. ### 🛠️ Where Is the Menu Icon? Troubleshooting Missing Menu Bar Icons[​](#faq-cant-see-icon "Direct link to 🛠️ Where Is the Menu Icon? Troubleshooting Missing Menu Bar Icons") macOS has limited space for menu bar icons—especially on laptops or models with a notch. If BusyCal's icon isn't showing or has disappeared, or upcoming event titles aren't visible, the icon may be hidden due to lack of space. #### Common Reasons the Menu Icon Might Not Be Visible:[​](#common-reasons-the-menu-icon-might-not-be-visible "Direct link to Common Reasons the Menu Icon Might Not Be Visible:") * **Menu bar is full**: Too many menu bar items competing for space * **MacBook with notch**: The notch in newer MacBooks can hide menu icons in the center area and can reduce the amount of space dedicated to app icons * **System settings**: Background Items permissions might be disabled * **Menu icon disabled**: The menu option might be turned off in BusyCal Settings * **Menu process not running**: The menu extension process might need to be restarted #### First Check: Is the Menu Icon Enabled?[​](#first-check-is-the-menu-icon-enabled "Direct link to First Check: Is the Menu Icon Enabled?") 1. Open **BusyCal** 2. Go to **BusyCal menu > Settings > Menu** 3. Ensure **Show BusyCal Menu in menu bar** is checked 4. Click **OK** and wait a moment for the icon to appear #### Fixing a Full Menu Bar:[​](#fixing-a-full-menu-bar "Direct link to Fixing a Full Menu Bar:") 1. Try quitting some other apps that display menu bar icons to free up space 2. Hold down the **Command (⌘)** key and **drag** the BusyCal icon (if visible but in an inconvenient location) closer to the clock 3. Consider using a menu bar manager app like [Bartender](https://www.macbartender.com/) if you have many menu bar icons #### MacBook Notch Issues:[​](#macbook-notch-issues "Direct link to MacBook Notch Issues:") If you have a newer MacBook with a display notch, the menu bar icons can disappear behind it. This is especially true if you have enabled the Menu Bar to **Show Upcoming Event** titles, the amount of space required to fit both the icon + the event title may be more than what's available. Try the following: 1. Hold **Command (⌘)** and drag any visible menu bar icons away from the center notch area 2. Position critical icons like BusyCal closer to the right side of the menu bar 3. Check Control Center (the icon next to your clock) to see if macOS has automatically hidden some menu extras there 4. Try reducing your display scale in System Settings > Displays to give the menu bar more space The notch on newer MacBooks can hide menu icons that sit near the center of the menu bar. ### 🛠️ Option 2. Force Restart the BusyCal Menu App[​](#️-option-2-force-restart-the-busycal-menu-app "Direct link to 🛠️ Option 2. Force Restart the BusyCal Menu App") 1. Open **Activity Monitor** (`Applications > Utilities > Activity Monitor.app`). 2. Search for **"BusyCal Menu"**—you should see only one instance running named `BusyCal Menu & Alarms`. 3. Select it and click the **Quit (X) button** in the toolbar. * The extension restarts automatically because macOS manages its lifecycle. Force-quitting simply makes macOS relaunch it and reconnect to the main app. 4. Relaunch **BusyCal**. 5. Open **BusyCal Settings > Menu**, uncheck **"Show BusyCal Menu in Menu Bar"**, and wait for about a minute. 6. Re-enable **"Show BusyCal Menu in Menu Bar"** and check if the issue is resolved. ### 🛠️ Option 3. Ensure There Are No Duplicate Copies of `BusyCal.app` Installed[​](#️-option-3-ensure-there-are-no-duplicate-copies-of-busycalapp-installed "Direct link to ️-option-3-ensure-there-are-no-duplicate-copies-of-busycalapp-installed") 1. Use **Spotlight Search** (`Cmd + Space`) and search for **"BusyCal.app"**. 2. Verify that **only one copy** exists in `/Applications/`. 3. If you find additional copies (e.g., in `Downloads` or another folder), delete them. * macOS may mistakenly launch the menu extension for an outdated or incorrect version if there are more than one copies of the app on disk. We have even witnessed macOS launch an archived copy from `Time Machine` so anything is possible. ### 🛠️ Option 4. Restart Your Mac[​](#️-option-4-restart-your-mac "Direct link to 🛠️ Option 4. Restart Your Mac") A reboot can often resolve communication issues between the main app and its menu bar extension, as macOS background services can occasionally get out of sync. ### 🛠️ Option 5. Reset macOS Background Tasks (Last Resort)[​](#reset-bg-tasks "Direct link to 🛠️ Option 5. Reset macOS Background Tasks (Last Resort)") If the issue persists, resetting macOS's link to the menu extension may help. Note that this resets background task management for *all* installed apps—you'll see the *Allow* / *Disallow* prompt again for other apps after the reset. That said, this is often the **only solution that works** when other steps fail. 1. Open **Terminal** (`Applications > Utilities > Terminal.app`). 2. Enter the following command and press **Return**: ``` sfltool resetbtm ``` 3. Restart your Mac and check if the BusyCal Menu App is now working correctly. Check by creating a test alarm that fires within the next couple of minutes. ## Frequently Asked Questions About BusyCal Menu App[​](#menu-faq "Direct link to Frequently Asked Questions About BusyCal Menu App") ### Why does BusyCal launch when dismissing alarms?[​](#faq-launches-when-dismissing "Direct link to Why does BusyCal launch when dismissing alarms?") Snoozing or dismissing alarms from the BusyCal Menu App is handled without launching the main BusyCal app. If BusyCal still launches when you dismiss or snooze alarms, update to the latest version and follow the troubleshooting steps above. ### Why can't BusyCal Menu App show more past events?[​](#faq-more-past-events "Direct link to Why can't BusyCal Menu App show more past events?") BusyCal Menu App supports unlimited month navigation and infinite agenda scrolling. If you still see a constrained range, restart the BusyCal Menu App and ensure you are on the latest release. ### Why doesn't the BusyCal Menu App stay in sync when the main app isn't running?[​](#faq-sync-without-main "Direct link to Why doesn't the BusyCal Menu App stay in sync when the main app isn't running?") The BusyCal Menu App refreshes its display from the same locally stored calendar data used by the main BusyCal app, but it does not sync with Outlook, iCloud, Google, or other calendar services. The main BusyCal app handles account syncing and must remain running for changes from those services to reach the Menu app and macOS widgets. Changes made in the Menu app also need the main app running to sync back to those services. There is no setting that enables account syncing in the Menu app alone. The macOS **Allow in the Background** permission lets the Menu & Alarms helper run; it does not enable account syncing after the main app quits. To keep syncing without keeping the main window open, leave BusyCal running and close its window with `Command-W` or the red close button. Do not quit BusyCal with `Command-Q`. --- # Settings BusyCal's Settings window offers numerous ways to configure its appearance and behavior to suit your needs. To display the Settings window, choose **BusyCal > Settings** (also known as "Preferences" on earlier macOS versions). Pick a section in the sidebar on the left to see its settings. Some sections divide their settings into tabs, shown across the top of the section. A search field sits at the top of the sidebar. Type part of a setting's name and BusyCal lists the settings that match, each with the section, tab and group it belongs to. Choose a result and BusyCal opens that section, switches to the right tab, and briefly highlights the setting. ## General[​](#general-preferences "Direct link to General") To customize the start of the week, number of days or weeks shown, day start and end times, and other settings, select **General**. ### Dock[​](#dock "Direct link to Dock") * **Dock badge count** — Choose what the number on the BusyCal Dock icon counts: **None**, **Today's Remaining Items**, **Tasks Due Today**, **Tasks Due Today + Overdue**, **All Overdue Tasks**, **Inbox Notifications** (the default) or **Current Day of Year**. Most counts are produced by BusyCal's alarms, so the label is dimmed while **Show alarms** is off in [Alarms](#alarms-preferences) settings; the menu still works. ### Views & Ranges[​](#views--ranges "Direct link to Views & Ranges") * **Start week on** — The first day displayed in the leftmost column of the Week/Month view. important This setting **only determines** which day appears first in the Week/Month view. It **does not** control how BusyCal pins to a specific day in Week View. If you want the week to always start on the same day regardless of the current weekday, set **Week view shows** (explained below) to **One Week** instead of a custom number of days. [Watch demo](/docs/busycal/70588-week-view.md#weekviewalignment) to understand the difference. * **Week view shows** — Controls how many days are displayed in the Week view. Choose **One week** or **Two weeks**, or any range from **2 days from today** up to **31 days from today**, plus **42 Days (6 Weeks) from today** and **90 Days (Quarter) from today**. The default is 7 days from today. * If **One week** or **Two weeks** is selected, the leftmost column always starts on the **Start week on** setting above. * If a custom range is selected, the leftmost column **begins with today**, allowing you to focus on upcoming days. These entries say so in the menu, for example **7 days from today**. * **Month view shows** — Controls how many weeks are displayed in the Month view. Choose **One month**, or from **1 week from today** to **12 weeks from today**. The default is 6 weeks from today. * If **One month** is selected, a traditional month view is shown with the **1st of the month** in the topmost row. * If a custom range is selected, the topmost row **starts with the current week** and shows *x* weeks forward, making it easier to focus on upcoming weeks. * **Start from current week** — Appears only when Month view shows six weeks, and is off by default. Turn it on to begin the six-week grid at the current week rather than at the start of the month. * **Day view shows** and **Week view shows** — Determine the number of hours shown at a time (the zoom level) in the Day view and the Week view. Each view has its own setting. tip While in Day/Week view, you can dynamically set the hours shown by holding down Option and scrolling with a mouse scroll wheel, two-finger swiping up or down on a trackpad, or one-finger swiping up or down on a Magic Mouse. * **Day starts at** — Shade the times before the start of day in Day view and Week View. * **Day ends at** — Shade the times after the end of day in Day view and Week View. * **Show Only Working Hours (Day Start – End)** — Limits visible time to your configured workday range. ### Work Week[​](#work-week "Direct link to Work Week") Click the weekday buttons to choose your working days. Days outside the work week appear shaded in the calendar. Once you have set your own work week, a **Reset** button appears to restore the days derived from your region. ### Defaults[​](#defaults "Direct link to Defaults") * **Default calendar for Events** — The default calendar for new events. * **Default calendar for Journals** — The default calendar for new journal entries. * **Default start time** — The default start time for new events. * **Default duration** — The default duration for new events, in minutes. ### Calendars[​](#calendars "Direct link to Calendars") * **Show Birthdays calendar** — See [Birthdays and Anniversaries](/docs/busycal/70585-getting-started-with-busycal-for-mac.md#birthdays-and-anniversaries). * **When death date is detected** — Choose whether to continue showing birthdays, stop showing birthdays, or show death anniversaries. * **Show Anniversaries calendar** — See [Birthdays and Anniversaries](/docs/busycal/70585-getting-started-with-busycal-for-mac.md#birthdays-and-anniversaries). * **Contacts from** — Choose contact source (Automatic, Apple Contacts, or BusyContacts). * **Show alternate calendar** — Display an alternate calendar system (for example Chinese, Hebrew, Islamic, Persian, Day of Year, or World Season Calendar). ## Menu[​](#menusettings "Direct link to Menu") These settings are for the [BusyCal Menu & Alarm](/docs/busycal/70606-busycal-menu.md) helper extension. The menu-bar app can run all the time in the background to display alarms as well as upcoming events from locally stored data. Account syncing requires the main BusyCal app to remain running, even if its window is closed. * **Show BusyCal Menu in menu bar** — See [BusyCal Menu & Alarm](/docs/busycal/70606-busycal-menu.md). The helper starts at login and keeps running after BusyCal quits. * **Open new event in BusyCal after creation** — Opens an event you create from the menu in the main BusyCal window. * **Set Menu Shortcut** — Set a keyboard shortcut to open BusyCal Menu. * **Menu icon shows** — Choose the menu-bar icon format (Date, Date & Weekday, Date & Month, or Current Calendar Week). * **in color** — Show the menu icon using color. * **Display style** — Choose mini-calendar event indicators (None, Banners, Dots, or Heat Map). * **Show upcoming conference call indicator** — Adds a conference-call indicator to the menu icon for an upcoming event that contains a conference call, such as Zoom, Google Meets or Teams. * **Emphasize in color** — Tints the conference-call indicator for visibility. The **Upcoming Items** group controls what the menu bar shows next to the icon: * **Show upcoming items in menu bar** — Turn on the upcoming item display. * **Events**, **Events with Conference Calls**, **Events with Attendees** and **To Dos** — Choose which kinds of item the menu bar considers. * **Starting within** — Limit which upcoming items are considered. * **Switch to upcoming event if starting within** — The current event is shown unless an event or task starts within the time you set here. * **Show ongoing events** — Include currently running events. * **Show all-day events if no upcoming events are found** — Fallback to all-day events when no timed event matches. * **Show event titles** — Include event titles in the menu bar text, up to the **Max Length** you set in characters. * **Countdown Style** — Choose countdown vs start-time display. Ongoing events switch to a count-up. * **in gray** — Display time text in gray. * **Hide menu bar events during Do Not Disturb** — Suppress menu-bar upcoming items while BusyCal Do Not Disturb is enabled. ## Accounts[​](#accounts "Direct link to Accounts") To add or modify calendar accounts (including iCloud, Google, Exchange, and other CalDAV accounts), select **Accounts**. Your accounts are listed on the left under **Active**, **Disabled** and **Added on Another Device**. Click `+` (plus) below the list to add an account, or select an account and click `-` (minus) to remove it. The third button adds a calendar subscription. An account under **Added on Another Device** came from another Mac through iCloud. Select it and click **Use Account** — you will need to sign in, because passwords are not synced between devices. A subscription offers **Use Subscription** instead. Selecting an account shows its settings on the right. Which tabs an account has depends on what its server supports: * **Account Information** — The account's description, login details, refresh interval and calendar defaults. * **Server Settings** — The server addresses BusyCal connects to. * **Delegates** — The accounts you can act on behalf of. * **Sharing** — The calendars other people have shared with you on this account. * **Automation** — Rules that tag events as they arrive. See [Automatic Tagging](/docs/busycal/130480-automatic-tagging.md). For information on adding and configuring various account types, refer to the following pages: * iCloud: [Syncing with iCloud](/docs/busycal/70630-using-busycal-with-icloud.md) * Google: [Syncing with Google Calendar](/docs/busycal/70636-using-busycal-with-google.md) * Exchange: [Syncing with Exchange](/docs/busycal/70642-using-busycal-with-exchange-office-365.md) (also covers syncing with Office 365, but note that only business and educational subscriptions to Office 365 include full Exchange support) * CalDAV: [Syncing with a CalDAV Server](/docs/busycal/70647-using-busycal-with-caldav.md) * BusyCal over LAN: [Sharing calendars on a LAN via Bonjour](/docs/busycal/70655-using-busycal-on-a-lan.md) These settings appear for every account: * **Enable this account** — Turn syncing off without removing the account. Its other settings become unavailable while it is off. Calendar subscriptions show **Enable calendar subscription** instead. * **Description** — The name shown for this account in Settings and the calendar list. * **Login details** — Depending on the service, an **Apple ID**, **Email**, **Yahoo ID** or **User Name**, and a **Password**. These are locked until you click **Modify details**, which becomes **Save** while you are editing. Beneath them, BusyCal shows the last sync result or any account error. The following settings appear only when the account in question supports them: * **Refresh calendars** — How often BusyCal checks the server for changes: **Push** where the server advertises it, or every **5**, **10**, **15** or **30 minutes**, **hour**, **day**, **week**, **month** or **year**. Apple Calendar, Reminders, Google, Exchange and Microsoft Graph accounts start on Push; iCloud, Yahoo, Fruux, FastMail, Todoist and generic CalDAV accounts start at 15 minutes. Your own edits are sent to the server immediately regardless. * **Meeting calendar** — Meeting invites sent by others will be added to this calendar by default. * **Meeting organizer email** — Certain accounts allow you to specify aliases or additional email addresses as part of your primary account, such as iCloud and Fastmail. In case you have several aliases available in your account, you can pick the email address you would like to send meeting invites as (i.e. meeting invites will be sent out with the selected email as the Organizer). * **Minimum supported TLS** — Some accounts will show this additional setting. TLS is a cryptographic protocol that provides end-to-end security of data sent between applications over the Internet. This is for advanced users. Setting this to *Automatic* is recommended, unless your server only supports a particular version of TLS, in which case you should set it to the minimum version it supports. The other choices are **v1.0**, **v1.1**, **v1.2** and **v1.3**. * **Hide tasks assigned to others** — Todoist only. Leaves out tasks assigned to someone else. * **Enable Microsoft Teams Integration** — Office 365 accounts using Exchange. Your Office 365 administrator may need to approve this. * **Add Google Meets to new meeting invites** — Google only. Requests a Meet link for meetings you create. * **Add meeting URL to event location** — Zoom, Webex and GoTo Meeting. Also copies the meeting link into the event's Location field. The **Delegates** tab lets you grant other people access to your calendars and set what each may do. The **Sharing** tab lists the calendars others have shared with you, and **Public Calendars…** browses your organization's public folders. ### Automation[​](#automation "Direct link to Automation") Tags can be automatically assigned to events as these are pulled during sync. See [Automatic Tagging](/docs/busycal/130480-automatic-tagging.md) for more information. ## To Dos[​](#to-dos "Direct link to To Dos") To customize how tasks are created and displayed, select **To Dos**. * **Enable Reminders** — Turn on to sync directly with the Reminders app. This has now become necessary if you have upgraded your Reminders app starting Catalina / iOS 13 as To-Do calendars no longer sync via your iCloud account like before. The following options are available for new tasks: * **Default calendar for To Dos** — The default calendar new tasks are created in. * **Default priority** — The priority new tasks are given: None, Low, Medium or High. The following settings affect the [Task List](/docs/busycal/70594-tasks.md#to-do-list) that appears in the right sidebar. * **Sort Task List by** — The sort order for the Task List. You can check the 'Group by Calendar' option to apply a secondary grouping to your ToDos by calendar. This way, all the *Home* Todos, for instance, will group together. The groups follow the order the calendars appear in the [Calendar List](/docs/busycal/70592-calendar-list.md). * **Show dated Tasks** — The date range for tasks displayed in the Task List. The default displays tasks due within the next month. You can select a different range if you want to view fewer or more tasks. * **Show undated Tasks** — Whether to display undated tasks in Task List. * **Show completed Tasks** — The date range for completed tasks displayed in the Task List. The default displays tasks completed today. You can select a different range if you want to view fewer or more completed tasks. Check **in lighter colors** to dim them. * **Duration in day & week view** — The amount of vertical space each To-Do occupies visually in the time line. * **Show date and time in Task List**, **Show location in Task List** and **Show notes in Task List** — Add these details to each row. * **Display indicators for contacts, locations, tags, etc., in the Task List** — Show small indicators on rows whose task carries those details. The following setting affects regeneration of [recurring Tasks](/docs/busycal/70594-tasks.md#repeating-to-dos) when marked done. This is a global setting that applies to all repeating tasks and cannot be applied separately to individual tasks (given this feature is not supported by iCloud / Google / Exchange etc). * **Default regeneration style** — Choose **Take out trash**, **Pay rent** (the default) or **Completion Date**. The `Take out trash` style ignores all *overdue* occurrences and sets the next occurrence to a future date based on the task's due date. For example, you have a to-do to "Take out trash" due daily. The last time you took out the trash was two days ago, before you went away for the weekend. If you take out trash today and mark this, now overdue, to-do as complete, the next occurrence will be set to "Tomorrow" since all of the trash has been taken out. The `Pay rent` style does not skip any overdue occurrence, and sets the next occurrence based on the task's due date. If there's an overdue weekly subscription you haven't paid for several weeks, marking it complete would set its due date to next week from the date it was last due. You would need to explicitly mark each occurrence as complete. Conversely, with the Pay rent option set, completing an overdue "Take out trash" to-do would have re-created a todo and set its due date to "Yesterday". Marking that complete would have moved it to "Today" and so on. The `Completion Date` style will simply set the next occurrence based on the completion date. So if the task was due on the 1st of Oct, set to repeat weekly and is completed on the 5th, the next occurrence will be 12th of Oct (5th + 7 days) instead of the 8th. BusyCal follows the **Pay rent** style by default, which is what most task management apps do. Apple Reminders follows the "Take out trash" style instead. This is a global setting that applies to all repeating tasks and cannot be set per task, because iCloud, Google, Exchange and similar services do not support it. The following settings affect Tasks that appear in the calendar: * **Show dated Tasks in calendar** — Whether to display dated tasks in the calendar on their due dates. * **Include All-Day Tasks** — Whether to include all-day tasks among them. On by default; turn it off and only the dated tasks that have a due time are shown. * **Show completed Tasks in calendar** — Whether to display completed tasks in the calendar. Use **on their** to place them on their due date or their completion date. When showing by completion date, Day and Week views draw them in the all-day section. * **Show completed undated Tasks in calendar** — Whether to display completed tasks that never had a date. * **Show due time for completed Tasks in the calendar** — Whether completed tasks show the time they were due. The following setting affects the display of tasks in both the Task List and calendar: * **Carry forward uncompleted To Dos** — Whether to carry forward past due tasks and display them on the current date. ## Alarms[​](#alarms-preferences "Direct link to Alarms") To adjust default settings for alarms and the behavior of the BusyCal Alarms window, select **Alarms**. This section is divided into three tabs: **General**, **Alert Sounds** and **Default Alarms**. ### General[​](#general "Direct link to General") * **Show alarms** — Whether BusyCal raises alarms at all. Switching off every item type below also switches this off. * **Notification Method** — Choose **Notification Center** or **BusyCal Alarms**. Compared with Notification Center alerts, the BusyCal alarm window offers persistent notifications, more functionality and deeper integration with the main app. When it is selected, the BusyCal Menu process runs in the background so you still get alerts when the main app is not running. * **Show alarms for Events**, **Show alarms for Tasks** and **Show alarms for Journals** — Choose which item types raise alarms. If you use the BusyCal alarm window, you can configure: * **Set Alarm Shortcut** — Set a keyboard shortcut that opens Alarm Window when alarms exist. * **Alarm window floats above all others** * **Alarm window takes input focus** — Select this option if you want the Alarm window to take the keyboard focus, so you can snooze or dismiss an alarm from the keyboard without first having to click in the window with your pointer. * **Shake window when a new alarm is added** * **Show event end times** * **Show calendar names** * **Mouse over alarm displays time elapsed** * **Display alarms in ascending order** * **Mark Task as Completed on Dismissal** * **Snooze button is default** — Select this option if you want Snooze to be the default button in the Alarm window so you can press Return on the keyboard after entering a snooze value without having to click the Snooze button with your pointer. Otherwise, pressing Return dismisses the alarm. * **Show in all desktop spaces** — Makes the BusyCal Alarm Window available on every macOS Desktop/Space, so alarms remain visible when you switch Spaces, use full-screen apps, or use multiple monitors with separate Spaces. This setting does not create a separate copy of the Alarm Window on every physical monitor; macOS still manages it as one window, but BusyCal allows it to appear across Spaces instead of being tied to only one desktop. * **Skip missed event alarms older than** — Turn this on, then choose **1 hour**, **2 hours** (the default), **4 hours**, **6 hours**, **10 hours** or **12 hours**. After waking from sleep or when Do Not Disturb ends, event and journal alarms older than that are silently skipped. Task alarms are not affected. Off by default, and it may not behave as expected if your Mac wakes periodically for network access. The **Snooze** group below it sets what the alarm window's Snooze button starts from: * **Default Snooze** — Turn this on to pre-fill the Snooze value, then set a number and a unit: **minutes** (the default), **hours**, **days**, **minutes before start** or **hours before start**. It starts at 5 minutes and is on by default. This is available only when the BusyCal Alarm Window is selected as the notification method. The **Invitations** group at the bottom of this tab has three settings: * **Show meeting invites in Notification Center**: Show invite notifications in macOS Notification Center. * **Show bookings in Notification Center**: Show each new booking and request from [BusyCal Bookings](/docs/bookings.md) in macOS Notification Center. It's on unless you turn it off. BusyCal's Inbox lists new bookings and requests either way. * **Add default alarm when accepting meeting invitations**: Any meeting invitation you accept automatically includes your default alarm. ### Alert Sounds[​](#alert-sounds "Direct link to Alert Sounds") * **Default Alarm Sound for New Tasks** and **Default Alarm Sound for New Events** — Choose the sound that plays when an alarm occurs. Tasks and events can use different sounds. * **Use for all alerts** — Applies the selected sound to alerts for all tasks and events, existing and new. This overrides any custom sound set on an individual event, which is useful when events arrive from a server carrying their own sound. ### Default Alarms[​](#default-alarms "Direct link to Default Alarms") Although you can manually set alarms for any event or task, you may want to add an alarm automatically to new items you create in BusyCal. These defaults do not add alarms to every item synced from another app. See [Alarms on items created in other apps](/docs/busycal/70604-alarms.md#alarms-on-synced-items) for the distinction between Google Calendar events and Google Tasks. There are five rows, one per kind of item, and each row holds **three independent alarm slots** so you can add up to three default alarms. Switch a slot on, then set it: for timed items enter a number and choose **minutes before**, **hours before**, **days before**, **minutes after**, **hours after** or **days after**; for all-day items set a time and choose **the same day**, **days before** or **days after**. * **Timed Events** — The first slot is on, at 5 minutes before. * **All-day Events** — The first slot is on, at 9:00 AM the same day. * **Timed Tasks**: The first slot is on, at the due time (0 minutes before). * **Dated Tasks** — All slots off. * **Birthdays & Anniversaries** — All slots off; the first is preset to 9:00 AM 7 days before. note Multiple alarms are not supported by some accounts, including Reminders, Exchange and Office 365. Local "My Alarms" will be added automatically. ## Info Panel[​](#info-panel "Direct link to Info Panel") To choose what the righthand sidebar shows, and to customize the Info Panel to display only the fields you want to see, select **Info Panel**. The settings at the top of the pane affect the display of the Info Panel as a whole: * **Show in To Do List** — What the righthand sidebar shows: **Tasks**, the **Info Panel**, or **Both**, which stacks the [Task List](/docs/busycal/70594-tasks.md#to-do-list) above the Info Panel. **Both** is the default. The same choice is available from **View > Show in To Do List** and from the pop-up menu beside the Hide/Show Task List button. * **Hide Info Panel when nothing is selected** — Keeps the Info Panel hidden while nothing is selected, so the Task List gets the full height of the sidebar. The Info Panel comes back as soon as you select an event or task. This setting is off by default and is available when the righthand sidebar is visible and set to **Both**. * **Animate showing and hiding** — Animates the Info Panel as it appears and disappears. It is on by default; turn it off to have the panel change without animation. * **Open Info Panel for new events** — If you select this checkbox and the right-hand sidebar is visible, then when you create a new event, the title field is selected in the Info Panel. If it is selected and the right-hand sidebar is *not* visible when you create a new event, the Info Panel popover (or floating window, depending on the state of the next checkbox) appears, with its title field selected. * **Display Info Panel in floating window** — If you select this checkbox, BusyCal displays the Info Panel as a floating window rather than as a popover when the righthand sidebar is not visible. When the sidebar *is* visible, double-clicking an event opens it in a separate detached window so you can view multiple events side by side. * **Use fuzzy matching for calendar picker** — When enabled, typing in the calendar picker field uses fuzzy matching, where characters can match with gaps in the calendar name (e.g., typing `oe` would match a calendar named "Br**o**k**e**n"). When disabled, only contiguous (exact substring) matches are used. This is enabled by default. Under **Show fields**, select the fields you want: * **Location** — Displays a text field for entering location information. * **Location URL** — Displays a URL field for entering location URLs, such as a link to Google Maps. * **Map** — Displays a map preview/field for mapped locations. * **Time to Event** — Displays time-remaining context for the event. * **Favorite time zones** — Shows a Time Zone Conversion card for the favorite zones configured in BusyCal > Settings > Time Zones. This does not display either event time-zone field; enable Start time zone separately. * **Start time zone** — Displays a time zone menu for the event start time. See [Time Zones](/docs/busycal/70609-time-zones.md) for more information. * **End time zone** — Displays a separate menu when an event ends in a different zone, such as a flight. For ordinary events, the end uses the start zone. See [Time Zones](/docs/busycal/70609-time-zones.md) for more information. * **Repeat** — Displays recurrence controls. * **First occurrence** — Displays the first occurrence date of a repeating event and current sequence number. * **Color** — Displays event color controls. * **Travel Time** — Displays a menu enabling you to see or specify the [travel time](/docs/busycal/70603-locations-maps-travel-time.md#travel-time) for that event. * **URL** — Displays a URL field for inserting links. * **Tags** — Displays a field for entering tags. See [Tags](/docs/busycal/70597-tags.md) for more information. * **Graphic** — Displays a field for attaching graphics. See [Graphics](/docs/busycal/70598-graphics.md) for more information. * **Attachments** — Displays a menu for attaching files. * **Attendees** — Displays a field for adding attendees. See [Meetings and Invitations](/docs/busycal/70615-meetings-and-invitations.md) for more information. * **Contacts** — Displays a field for linking to contacts in BusyContacts. * **Private** — Displays a checkbox to indicate that the event is Private. When sharing a calendar with others through Exchange, Google, and some CalDAV Servers, events marked Private appear to other people with a title of “Private Event.” The event blocks your free time for scheduling purposes, but no other details are shared. **Note** that only timed-events can be made private. note This checkbox is enabled only when syncing with a calendar server that supports this feature. It is not supported by iCloud. * **Busy** — Displays a checkbox to indicate whether an event affects your availability as free or busy. * **Task Duration** — Displays task duration controls. * **Task Status** — Displays task completion/status controls. * **Google Meets / Zoom / Webex by Cisco / GoTo Meeting / Microsoft Teams** — Displays conference-link fields (availability depends on account type and setup). * **Created time** — Displays the date and time the event was created. * **Last edit time** — Displays the date and time the event was last modified and the user account that last modified it. * **My alarms** — Private alarms that are stored locally and do not sync with other apps and services. * **My tags** — Private tags that are stored locally and do not sync with other apps and services. * **My URL** — Private URLs that are stored locally and do not sync with other apps and services. You can drag files, email messages, bookmarks, contacts, and other items to the my URL field to create links that open the source document. * **My notes** — Private notes that are stored locally and do not sync with other apps and services. Any field you leave unchecked stays hidden unless the event already has a value for it. You can also click the down-arrow button below the Info Panel at any time to expand and reveal hidden fields as needed. The Rooms picker is not listed here. It appears on its own for events on [Google Workspace](/docs/busycal/70636-using-busycal-with-google.md#rooms) and [Microsoft 365](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md#rooms) accounts with room resources configured by the organization's admin. ## Suggestions[​](#templates-suggestions "Direct link to Suggestions") BusyCal can suggest existing events and tasks as templates while you type a title for new items. Select **Suggestions** to configure: * **Search only in enabled calendars** * **Automatically show suggestions while typing in** — Info Panel, Month View, and Day & Week View * Which properties should be copied from a selected suggestion: * **Copy Calendar** * **Copy Start Time** * **Copy Start / End Duration** * **Copy Recurrence** * **Copy Alarms** * **Copy Locations** * **Copy URL** * **Copy Tags** * **Copy Attendees** * **Copy Contacts** * **Copy Graphics** * **Copy Notes** * **Copy My Notes** ## Appearance[​](#appearance-preferences "Direct link to Appearance") To customize the calendar date and event formatting, select **Appearance**. The section is divided into three tabs: **View**, **Mini Calendar** (the small calendar that displays below the left side panel), and **Fonts**. ### View[​](#view "Direct link to View") * **Date placement** — Controls where BusyCal places the date within day cells, either **Left Position** or **Right Position**. * **Day number color** — The color used for dates in Week/Month/Year view. If you choose Black & Gray or Black & Red, black is used for weekdays while gray or red is used for weekends and [holidays](/docs/busycal/70600-holidays.md). * **Banners** — Display style for Banners (all-day events): **Rectangular** or **Rounded**. * **Use true color for selected banners only** — Turn this setting off to see more vivid (true) colors for all-day banners, as well as multi-day timed events. * **Show multi-day events** — Display style for timed events (i.e. non-all day events), that start on one day and then end on another. For example, a conference call that starts at 9pm on Sunday and ends at 3am on Monday is a "multi-day event". Choose **Separated** to show them as separate events on each day, or **Combined** to show them as a single strip similar to all-day banners. * **when duration is more than** — When set to *Combined*, you can choose to ignore combining events that are shorter than the selected duration. * **in all-day section of day & week views** — Controls whether multi-day timed events also appear as a banner-style strip in the all-day section of Day and Week views, in addition to being drawn in the time grid. This applies in both *Combined* and *Separated* modes: * When set to *Separated*, leave this **unchecked** if you want a multi-day event (such as a vacation) to display as blocks down each day in the time grid only, with no duplicate banner across the top. * When set to *Combined*, uncheck it to keep the combined multi-day strip out of the all-day section. * **Event times** — The formatting for event times in the Month view. There are several different time formats to choose from. The menu is divided into two sections—one for displaying the event times on the left, and the other for displaying event times on the right. If you tend to have lots of events with long titles, you may want to choose a compact time format (such as 10a) and experiment with left or right justification. Turning [Word Wrap](/docs/busycal/70586-the-busycal-window.md#cv-view-menu) off can help fit more events in Month view too. * **in gray** — Displays event times in gray where applicable. tip Select “10:00 AM - 12:00 PM” or “10 AM - 12 PM” if you want to view both the start and end times for each event. * **Event text color** — Choose **Black**, **Calendar/Tag Color**, or **Calendar Color Only** to control how event titles are colored in calendar views. When event text is black, bullet characters appear next to event names in Month and List views with the color of the calendar or tag. * **Increase text contrast** — Improves text readability when using colored event text styles. * **Reduce the brightness of past events** — Dims past events so upcoming items stand out more clearly. * **Show week numbers** — Display week numbers in the calendar and mini months. * **Group entries by Calendar** — Events and Tasks can be grouped by calendar first before sorting these by their respective times. * **before sorting by time** — When grouping by calendar is enabled, this determines whether grouping is applied before time-based sorting. * **Allow events to overlap in Day & Week View** — When enabled, timed events can overlap in the Day/Week timeline. Turn this off to force a side-by-side column layout. * **Show Notes in Day and Week views** — Display notes for events in Day and Week views. * **Show Graphics on all days of a multi-day event** — Displays event graphics on each day spanned by a multi-day timed event. ### Mini Calendar[​](#mini-calendar "Direct link to Mini Calendar") The **Mini Calendar** tab controls how the small month grid in the sidebar behaves: * **Highlight visible range** * **Show events on mouse-over** * **Display style** — Choose **None**, **Banners**, **Dots**, or **Heat Map**. * **Increase heat map intensity for all-day busy events** — Available for Heat Map style. * **Show only busy events** — Available for Heat Map style. ### Fonts[​](#fonts "Direct link to Fonts") Fonts used within the calendar and other parts of the app can be adjusted on the **Fonts** tab. Each row offers the fonts you have recently chosen for it, plus **Restore Defaults** and **Other…** to open the font panel. * **Day number font** — The font face and size for dates and days of the week in Week/Month view. * **Default event font** — The font face and size for all events / tasks / journals in week / month view. * **Task list font** — The font face and size for tasks in the Task List in the right sidebar. * **Default sticky font** — The font face and size for all sticky notes. * **Calendar list font** — The font face and size used for displaying calendar names in the left side panel. * **Notes font** — The font face and size used for displaying notes for each event in the info panel. ## Accessibility[​](#accessibility "Direct link to Accessibility") Further appearance and readability settings are in the **Accessibility** section. * **Show all titles for the calendar view selector in the toolbar** — Expands view selector labels in the toolbar. * **Display account icons in calendar list** — Shows account/service icons in the left calendar list. * **Show month separators in Month view** — Display a more visible, thick outline to separate days between adjacent months. * **Show month name on every day in Month View** — Month view will display the month's abbreviated name on every day. * **Show month names when scrolling** — Displays month names while scrolling month grids. * **Use darker gridlines** — Gridlines in day, week and month views will appear in a darker color. * **Show 30 min grid lines in Day & Week views** — Adds additional timeline gridlines. * **Always highlight "Today" in calendar** — Make today's date stand out by displaying a highlight border around it. * **Always highlight "Today" in Week View** — Highlights today in the Week view timeline. * **Click & drag on calendar to create a new event** * **Snap to 1 minute when dragging in day & week views with Shift key** * **Auto-show events after calendar change** * **Begin editing event after duplicating on calendar** — Only applies with the pop-over style info editor. * **Show time difference tooltips when dragging** * **Show duration tooltips when resizing events** * **Disable timeline scroll zoom in Day & Week views** — Prevent accidental zooming when scrolling directly over the timeline bar. * **Overflowing days in Month View require Option key held-down to scroll** * **Reduce transition animations** ## Weather[​](#weather "Direct link to Weather") To adjust the display of weather, or moon phases on your calendar, select **Weather**. ### Weather[​](#weather "Direct link to Weather") * **Show weather** — Display forecasts for the next 7 days. On by default. * **Temperature scale** — **Fahrenheit** or **Celsius**. This starts out matching your region. * **Weather graphics** — **Small** (the default), **Large** or **Background**. With Small or Large, hovering the pointer over the weather icon shows an extended forecast. * **Show moon phases** — Display moon phases. On by default, and independent of Show weather. * **Moon graphics** — **Realistic**, **Symbols** (the default) or **Astrological**. **Powered by Weather** at the bottom of the section opens Apple's list of the underlying data providers. ### Location[​](#location "Direct link to Location") Choose **At current location** (the default) or **At city / town**. For a city, click **Find…**, type a name, click **Lookup** and pick a result. These options are unavailable while Show weather is off. note To display weather at your current location, BusyCal requires access to Location Services. The first time you open BusyCal you should be presented with a dialog asking if you want to grant BusyCal permission to access Location Services. If you did not grant BusyCal access to Location Services at that time, you must do so manually, by going to **System Settings > Security & Privacy > Privacy > Location Services** and then selecting the checkbox next to BusyCal. If Location Services are off, the Weather section shows an **Open System Settings…** button that takes you straight there. If BusyCal cannot work out where you are, or cannot fetch a forecast for the city you chose, it says so beneath the location options and keeps trying. ## Backups[​](#backup "Direct link to Backups") BusyCal automatically backs up your calendars every 24 hours and saves your last 10 backups. You can restore entire calendars and all its events or individual events / tasks. Please see [Backup & Restoring](/docs/busycal/70617-backing-up-and-restoring.md) for more information. Backup settings include: * **Automatically back up** — How often backups are made: **never**, **every hour**, **every 2 hours**, **every 4 hours**, **every 8 hours** or **every day** (the default). * **Backups to keep** — How many backups are kept: **5**, **10** (the default), **25**, **50** or **100**. * **Backup location** — Where backups are stored, by default the BusyCal Backups folder in your Documents folder. Click **Choose** to pick a different folder. * **Restore From Backup** — Choose a backup file, then pick which calendars to restore from it. Calendars whose original account is no longer available are restored as local copies, and you can choose to restore everything as On My Mac calendars instead. Restoring replaces the data in the calendars you selected and cannot be undone, so any changes made since that backup will be lost. ## Advanced[​](#advanced "Direct link to Advanced") A number of advanced calendar configuration options are found on the Advanced settings section. These settings allow you to customize BusyCal's behavior for meeting invitations, travel time, natural language processing, general sync options, and more. The Advanced settings are organized into four tabs: **Meetings**, **Locations**, **Sync & LAN**, and **Other**. ### Meetings[​](#meetings "Direct link to Meetings") The Meetings tab contains settings related to meeting invitations, conference calls, phone calls, and how BusyCal handles meeting-related notifications. * **Open conference calls in** — Choose which browser opens conference call links. The menu lists the browsers installed on your Mac, and the **System Default** entry names the one macOS currently uses. This setting appears only when you have more than the system default available. * **Open phone calls with** — Choose which app opens a phone number when you click one in BusyCal. Pick **System Default**, which names the app macOS currently uses, or any installed app that can place calls. This setting appears only when you have such an app installed. * **Show meeting invites from shared calendars in the Inbox** — Typically you don't want to see invites sent to people that are sharing their calendars with you, since these aren't explicitly addressed to you. Such meetings would still appear in the calendar - but not as a notification in the Inbox. However, if you're managing someone else's calendar for them (such as an assistant or a secretary), you would want to turn this option ON. This would route all invites, sent to people that have given you read and write permission on a shared calendar, to the [Inbox](/docs/busycal/70586-the-busycal-window.md) as notifications. * **Automatically send invites after delay** — After adding attendees to an event, BusyCal will automatically send the invite after a brief delay. Disabling this preference will require you to manually click the 'Send Invite' button each time. * **Remember recently invited contacts** — Keep track of contacts you've recently invited to meetings, making it easier to invite them again in the future. The options under **For meetings on local calendars and older CalDAV servers** apply to: * Local **On My Mac** calendars that are not connected to a cloud service. * Older or self-hosted CalDAV servers that lack the ability to send and receive meeting invitations. * **Automatically notify organizer/attendees of meeting changes** — Select this option to automatically notify attendees when you edit or delete a meeting they were invited to. If this option is deselected, an alert will be presented after editing a meeting asking if you'd like to notify attendees. * **Show outgoing meeting invitations in Mail** — If you select this checkbox, you can view outgoing meeting invitations in Mail before sending them. This may be useful for adding a personal note to the email or changing the mail account the invitation is being sent from. * **Meeting organizer email** — When you create a meeting in BusyCal, your default email address is used for the Organizer. You can change the default Organizer email by choosing one of your email addresses from this pop-up menu. You can select any of the email addresses on the [Me card](/docs/busycal/70615-meetings-and-invitations.md#me-card) in Contacts. If BusyCal cannot read your card, or the card has no email address, the pane says so instead of showing the menu. important For meetings created on iCloud, Google, or Outlook/Exchange calendars, invitations are sent **automatically** by the server during sync—not by your email client. These settings only apply to meetings created on local On My Mac calendars, where invitations are sent via your Mac's email client. If you're using an account like iCloud or Fastmail, which supports email aliases, you can modify the meeting organizer's email by going to **Accounts** settings, selecting the account, and updating the **Meeting organizer email** field. If you create a meeting on a local calendar, BusyCal sends meeting invitations from the default email account in Apple Mail. You can set the default account in Mail by choosing Mail > Settings > Composing, and choosing an account from the "Send new messages from" pop-up menu. BusyCal also supports several [third-party mail clients](/docs/faqs/71187-what-email-apps-is-busycal-compatible-with.md) that allow sending meeting invitations via AppleScript. ### Locations[​](#locations "Direct link to Locations") The Locations tab allows you to configure how BusyCal handles location information in events, including map integration and travel time calculations. * **Open maps in** — Choose whether BusyCal opens a location in **Apple Maps** or **Google Maps**. * **Default Origin for Travel Time** — Select the starting point that BusyCal uses by default when it calculates travel time to an event. The pop-up always includes: * **Current or Recent Location** — Starts from the location of the most recent event on your calendar up to three hours before the event you're scheduling. If no such event exists, BusyCal falls back to your Mac's current location. * **Current Location** — Always starts from your Mac's current location (requires Location Services — see [Why does BusyCal require access to Location Services?](/docs/faqs/77690-why-does-busycal-require-access-to-location-services.md)). * ***Label* (from Me Card)** — One entry per postal address found on your macOS **Me card** (Home, Work, or any custom label you've defined). These entries appear below a separator in the same pop-up. #### Adding addresses to the dropdown[​](#adding-addresses-to-the-dropdown "Direct link to Adding addresses to the dropdown") The entries listed as "*Label* (from Me Card)" are pulled directly from the **postal addresses on your system-wide Me contact**. BusyCal reads this from the unified Me contact in the system Contacts store, so you can edit it either in **Apple Contacts** or in **BusyContacts** — both write to the same underlying contact, and any change appears here the next time you open the dropdown. To add a new starting location to this dropdown: 1. Open **Apple Contacts** (or **BusyContacts**) and go to your **Me card** — in Apple Contacts choose **Card > Go to My Card**; in BusyContacts choose **File > Go to My Card**. If no Me card is set, select your own contact and choose **Card > Make This My Card** (Apple Contacts) or **Card > Make This My Card** / the equivalent action in BusyContacts. 2. Add a postal address to the Me card and give it a meaningful label (for example, **Home**, **Work**, **Office**, **Cabin**, etc.). Any address label you define — including custom labels — will show up in BusyCal's dropdown. 3. Save the contact. 4. Return to **BusyCal > Settings > Advanced > Locations** and open the **Default Origin for Travel Time** pop-up. Your new address appears at the bottom of the menu as "*Label* (from Me Card)". Select it to use it as the default starting location for travel-time calculations. tip BusyCal also uses the **Home** and **Work** addresses on your Me card for the **Other Starting Location > Home / Work** options shown in an event's Travel Time pop-up (see [Travel Time](/docs/busycal/70603-locations-maps-travel-time.md#travel-time)). Keeping these labels populated on your Me card is the simplest way to make per-event starting locations available everywhere in BusyCal. note BusyCal needs permission to read your Contacts data to see the Me card. If you don't see any "from Me Card" entries, check **System Settings > Privacy & Security > Contacts** and make sure BusyCal is allowed. * **Add Travel Time When Location Is Set** — Automatically adds travel time based on your preferred travel mode whenever a location is set for an event. Choose the mode — car, walking, cycling or transit — from the menu beside the switch. Availability may vary by destination and travel type, and this is supported only by calendars that allow travel time. * **Last travel time error** — Appears only after automatic travel-time insertion has failed. Click the warning symbol to read the last error. * **Show location suggestions in Info Panel** — Enables location suggestions while editing events. ### Sync & LAN[​](#sync--lan "Direct link to Sync & LAN") The Sync & LAN tab contains settings for syncing BusyCal data across your devices using iCloud and sharing calendars on your local network. * **Sync Settings** — General settings and preferences will sync across all your Macs using the same iCloud account. Please note that smart filters and related settings will not be synchronized. * **Sync Accounts** — Sync new accounts across all your devices using iCloud. Note: Credentials will not be synced. iCloud Drive must be enabled in System Settings. * **Sync Smart Filters & Calendar Sets** — Sync smart filters and calendar sets across all your macOS devices running BusyCal. iCloud Drive must be enabled in System Settings. * **Sync Extended Task Properties** — BusyCal will append additional task details such as priority, due time, and duration to notes only where these properties are not supported by the syncing service. This ensures these features are preserved and synced across devices using BusyCal. * **Sync Tag List** — Sync the Tags History across all your devices using iCloud. iCloud Drive must be enabled in System Settings. * **Enable Spotlight Search for Events** — Allow macOS Spotlight to search and index your calendar events for quick system-wide searching. #### LAN Sharing[​](#lan-sharing "Direct link to LAN Sharing") The LAN sharing settings apply to sharing calendars with other BusyCal users on a LAN (local area network): * **LAN sharing name** — The name your Mac uses for calendar sharing on your local network. * **Port** — The port used for calendar sharing. Choose between: * **Dynamic** — Let BusyCal automatically choose an available port * **Static** — Manually specify a port number for consistent network configuration For more information on LAN sharing, see [Sharing calendars and address books on a LAN via Bonjour](/docs/busycal/70655-using-busycal-on-a-lan.md). ### Other[​](#other "Direct link to Other") The Other tab contains miscellaneous advanced settings for editing, confirmation dialogs, and diagnostics. * **Use natural language processing for events created in Month view** — When this option is turned on, any time you create a new event in Month view, BusyCal can use NLP [Natural Language Processing](/docs/busycal/70605-quick-entry.md) to automatically extract and set the title of the event, its start/end times, as well as location. Available only with the embedded editor. Requires 'Open Info Panel for New Events' to be turned off in Info Panel settings. * **Detect HTML text in Notes** — Automatically detect and render HTML formatted text in event notes fields. * **Travel time in blocking events** — Decides how [cross-calendar blocking events](/docs/busycal/142884-cross-calendar-blocking-events.md) treat the travel time on the original event. Choose: * **Match original event times** — Blocking events use the same start and end times as the original event. Travel time is carried along for reference, but won't extend the time shown as busy on other calendars. * **Include travel time in all** — When the original event has travel time, every blocking event starts earlier so that travel time also appears as busy on the other calendar. * **Include travel time in "Show as Busy" only** — Blocking events that show as busy start earlier so that travel time also appears as busy. Blocking events that show full details keep the same times as the original event. * **Require confirmation for any changes to events** — Display confirmation dialogs for all event modifications. Turning it on covers both of the settings beneath it: * **Confirm changes to events on shared calendars** — Select this option to display a warning when you edit or delete an event on a shared calendar. * **Confirm when deleting events** — Show a confirmation dialog before permanently deleting any events. * **Automatic crash reporting** — Automatically send crash reports to help improve BusyCal's stability and performance. * **Share my usage statistics** — Help us improve BusyCal by allowing us to collect completely anonymous usage data, purely to identify features of the app that are underutilized or areas that need further improvement. This would aid us in making accurate, data-driven decisions for future product updates. ## Time Zones[​](#timezones "Direct link to Time Zones") * **Show time zone menu in toolbar** — Select this checkbox to enable BusyCal's [Time Zone](/docs/busycal/70609-time-zones.md) menu, which displays all the events in your calendar in a different time zone. This is useful when travelling. It changes only how BusyCal shows your events — your Mac's own clock and System Settings are left alone, so you can keep the Mac on local time while reading your calendar in your home time zone, or the reverse. * **Sort time zones by** — Choose between **GMT Offsets** (the default) and **Names**. * **Use long time zone names** — Select this checkbox to display a city name along with the time zone. * **Show second time zone in Day and Week views** — Select this checkbox to display a second time zone bar in day and week views, then choose the zone from the menu beside it. * **Show third time zone in Day and Week views** — Select this checkbox to display a third time zone bar. It stays unavailable until the second time zone is enabled. Each time zone menu lists your current zone, then the zones you have used recently along with your favorites. **Clear Menu** empties the recent list, and **Select Time Zone…** opens a picker to search for any other zone. * **Convert GMT times to Local timezone when syncing events** — This instructs BusyCal to convert any event with "GMT" set as its timezone to your local time when adding a new event for the first time. Normally, meeting invites or events on shared calendars are added in "GMT" by others as a matter of convenience, as it's easier to reason in GMT time. Such events will automatically get converted to your local date and time. If you would like to keep these in "GMT" time irrespective, uncheck this option. NOTE: The info panel will always show you the actual start / end times along with their respective original timezones, however the day / week / month views will automatically translate these times to your local timezone or one you've manually picked using the Timezone dropdown. * **Use Floating Time for New Events** — Select this checkbox to always use the `Floating Time Zone` for new events. See [Time Zone](/docs/busycal/70609-time-zones.md#option-3) for more information. * **Use Floating Time for New Tasks** — Select this checkbox to always use the `Floating Time Zone` for new tasks. See [Time Zone](/docs/busycal/70609-time-zones.md#option-3) for more information. The **Favorite Time Zones** list at the bottom holds the zones you use often. They stay visible in every time zone picker and can show conversions in the Info Panel when **Favorite time zones** is enabled in [Info Panel](#info-panel) settings. Use the `+` and `-` buttons to add and remove zones, and double-click a zone to rename it. ## Updates[​](#updates "Direct link to Updates") If you're on the direct version of the app, you will see an additional **Updates** section where you can choose how often BusyCal checks for updates. If you're on the Mac App Store or Setapp version, updates are handled through those stores and you will not see this section. * **Check for updates every** — **1 Day** (the default), **2 Days**, **3 Days**, **4 Days**, **7 Days**, **2 Weeks**, **3 Weeks** or **1 Month**. * **including beta** — If enabled, BusyCal will include beta releases when checking for updates. Off by default. This checkbox appears only for a registered, unexpired direct licence. Note: This preference may be ignored for important bug fixes or security patches. If you opt-in to beta, update checks may be performed more frequently. --- # Date and Time Format note The following applies to macOS 10.15 and below, it appears that Apple has replaced these options in newer macOS versions with simpler options available under **System Settings > General > Language & Region** BusyCal displays dates and times based on the format you have specified in **System Settings > Language & Text > Region**. ![Language & Region Settings](https://www.busymac.com/images/bcl3mac-languageregion-region.png) BusyCal should work with all standard regional formats but may not work well with custom date or time formats. If dates or times are not displaying correctly in BusyCal and you have created a custom date or time format, restoring the defaults should solve the problem. Here’s how: 1. Go to **System Settings > Language & Region > Advanced > Dates**. 2. Click the Restore Defaults button if it is available. ## 24-Hour Time[​](#24-hour-time "Direct link to 24-Hour Time") To display 24-hour time in a region where it is not the default (e.g., the United States), you’ll need to customize the time format in System Settings. To do so, open **System Settings > Language & Text** and select the 24-Hour Time checkbox. ![24-hour time preference](https://www.busymac.com/images/bcl3mac-languageregion-timeformat.png) --- # Time Zones Because you may move from one time zone to another, and may interact with others in other time zones, BusyCal offers flexible features for dealing with time zone differences. By default, BusyCal schedules a new timed event in the app's active time zone when you do not specify another zone. You can assign a different zone to an individual event either by including it in Quick Entry or by choosing it in the Info Panel. BusyCal stores the assigned zone and shows the corresponding local time when you view the calendar from another zone. For example, if you live in New York and your time zone settings in System Settings are set to US/Eastern time, when you create a “Dinner Meeting” at 6:00 PM, it is scheduled in your local time of 6:00 PM Eastern time. If you travel to California and change your time zone settings in System Settings to US/Pacific time, the “Dinner Meeting” appears in your calendar at 3:00 PM, because 6:00 PM Eastern time is 3:00 PM Pacific time. However when you select the event to edit it, the time will still say "6:00" with the time zone set to "Eastern Time". ### Creating an Event in Another Time Zone[​](#creating-event-another-time-zone "Direct link to Creating an Event in Another Time Zone") In [Quick Entry](/docs/busycal/70605-quick-entry.md#time-zones), type the zone after the time. English Quick Entry accepts `Eastern`, `Central`, `Mountain`, `Pacific`, `Alaska`, and `Hawaii`, with or without the word `Time`, as well as abbreviations and IANA identifiers. ``` Client meeting next Monday at 9:45 Eastern ``` You can then inspect or change the event's zone in the Info Panel by enabling **Start time zone** under **BusyCal > Settings > Info Panel**. Enable **End time zone** only when the event ends in a different zone, such as a flight. The following options control how events appear when your active time zone changes. They are separate from assigning a zone to an individual event: * [Option 1: Override Timezone in BusyCal](#option-1) * [Option 2: Disable automatic time zone switching in System Settings](#option-2) * [Option 3: Schedule events in Floating Time](#option-3) * [Option 4: Adjust events to Local Time Zone](#option-4) Each option is described below. ## Option 1: Override Timezone in BusyCal[​](#option-1 "Direct link to Option 1: Override Timezone in BusyCal") BusyCal provides a Time Zone menu that can be used to dynamically display all the events in your calendar in a different time zone and use this same time zone for all new events you create. This is useful when traveling between different time zones where you do not want to use the System Timezone for new events. It enables your Mac’s system clock to be set to a new time zone as you travel, while BusyCal continues to display events in your home time zone. To enable this override option, choose **BusyCal > Settings > Time Zones** and check **Show time zone menu in toolbar.** You can also check **Use long time zone names** to display a city name along with the time zone. This reveals a time zone pop-up menu in the upper-right corner of the main window above your calendar. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/override_timezone_web.webm) Assuming you live in New York (US/Eastern) and travel to California (US/Pacific), here’s an example workflow: * Turn on the Time Zone menu in BusyCal to override and to use a fixed timezone, as described above, and choose US/Eastern from the Time Zone menu. * While at home in New York, create events in your default local time (US/Eastern Time). * Travel to California and change your system time zone to US/Pacific time in System Settings > Date & Time > Time Zone (this may happen automatically). This may cause all the events in your calendar to shift by 3 hours. * In BusyCal, choose US/Eastern from the time zone menu to display all your calendar events in their originally scheduled local time. ### Enable iOS Calendar Time Zone Support[​](#enable-ios-calendar-time-zone-support "Direct link to Enable iOS Calendar Time Zone Support") The iOS built-in Calendar app (Apple Calendar) and BusyCal for iOS support time zones as well and work similarly to BusyCal for Mac. You must set your home time zone on your iOS device in Settings > Apps > Calendar > Time Zone Override (if you use Calendar) or in BusyCal > Settings > Time Zone Override (if you use BusyCal) to match the time zone in BusyCal for Mac. ![Time Zone Override in iOS](https://www.busymac.com/images/bcl3mac-ios-time-zone-override.png) ![Time Zone Override in BusyCal for iOS](https://www.busymac.com/images/bcl3mac-iosbc-time-zone-override.png) ## Option 2: Disable Automatic Time Zone Switching in System Settings[​](#option-2 "Direct link to Option 2: Disable Automatic Time Zone Switching in System Settings") Your time zone is set in System Settings > Date & Time > Time Zone. By default, your Mac sets its time zone automatically using Location Services. Therefore, when you travel, your time zone settings may change without being aware of it. If your time zone settings in System Settings change, all the events in your calendar shift to reflect the new time zone. For example, if your home time zone is US/Eastern time, and your time zone settings are changed to US/Pacific time, all the events in your calendar are displayed 3 hours earlier. You can avoid this time shifting by disabling the automatic Time Zone setting in System Settings, as follows: 1. Go to **System Settings > General > Date & Time > Time Zone**. 2. Deselect the **Set time zone automatically using current location** checkbox. 3. Enter your home location in the Closest City field. Now your Mac thinks it’s always in your home time zone and all the events in your calendar continue to display at their originally scheduled times. ### Disable iOS Automatic Time Zone Switching[​](#disable-ios-automatic-time-zone-switching "Direct link to Disable iOS Automatic Time Zone Switching") Your iOS device may automatically change your time zone when you travel, causing all the events in your calendar to shift. To avoid this you can turn off the automatic time zone setting on your iOS device in Settings > General > Date & Time. ## Option 3: Schedule Events in Floating Time[​](#option-3 "Direct link to Option 3: Schedule Events in Floating Time") As an alternative to scheduling events for a specific time zone, you can schedule events in Floating time. An event scheduled at 9:00 AM Floating time, appears at 9:00 AM in all time zones. This may be useful if you are located in New York (US/Eastern) and are sending a meeting invitation to a client in San Francisco (US/Pacific) for a face-to-face meeting. If you schedule the lunch at noon Eastern and email the invitation to your client in San Francisco, the lunch appointment appears at 9:00 AM on your client’s computer. However, if you schedule the appointment for noon Floating time, the event displays at noon regardless of what time zone you are in. Then, when you travel to San Francisco to meet with your client, you’ll both show up for lunch at noon, regardless of what time zone is set on each computer. On the other hand, if you’re scheduling a conference call with your client in San Francisco while you are in New York, you should not use Floating time. You’ll want each participant in the conference call to see the event in their local time zone, since a call scheduled for noon Eastern occurs at 9:00 AM Pacific. Warning Floating times are not supported by Exchange or Google Calendar. If you are syncing with Exchange or Google Calendar, you should not use Floating Time events because they may appear hours early or late. See [how to prevent and correct Floating Time differences with Google Calendar](/docs/faqs/google-calendar-limitations.md#floating-time-events). Floating times *are* supported by BusyCal for iOS. And, although the iOS built-in Calendar app (Apple Calendar) doesn’t enable you to create Floating Time events, it does let you view and edit such events created in BusyCal for Mac or iOS. ### Using Floating Time By Default[​](#usefloatingtime-default "Direct link to Using Floating Time By Default") To turn on Floating Time for new events: * Open **BusyCal Settings > Time Zones** * Enable **Use Floating Time for New Events**, and * Enable **Use Floating Time for New Tasks** New events you now create will automatically be assigned a floating time zone. Moving between time zones / countries / states will no longer affect the event's original start time. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/floating_events_web.webm) ## Displaying Time Zones on the Info Panel[​](#displaying-time-zones-on-the-info-panel "Direct link to Displaying Time Zones on the Info Panel") If you want to display or change the time zone for an event, you can choose BusyCal > Settings > Info Panel, and select the Start Time Zone and End Time Zone options. If you enable the Start Time Zone, a single “time zone” pop-up menu displays below the event end time. This is sufficient for events that begin and end in the same zone, such as a call scheduled for noon Eastern (9:00 AM Pacific). ![Time Zone on Info Panel](https://www.busymac.com/images/bcl3mac-info-panel-tz-start.png) If you enable the End Time Zone field, separate pop-up menus appear for the start and end time. This is useful if you are scheduling an event that spans time zones, like a cross-country flight that departs at 9:00 AM Pacific and arrives at 5:00 PM Eastern. ![Ending Time Zone on Info Panel](https://www.busymac.com/images/bcl3mac-info-panel-tz-start-end.png) ## Google Calendar Time Zones[​](#google-calendar-time-zones "Direct link to Google Calendar Time Zones") If you are syncing with Google Calendar and events are appearing in the wrong time zone (such as GMT), you may have a time zone setting misconfigured on Google. Log in to Google Calendar on the web, and verify that the global and per calendar time zones are correct. Here’s where to set the time zones on Google: * **Global setting:** Google Calendar > Settings > General > Your current time zone * **Per-calendar setting:** Google Calendar > Settings > Calendars > *calendar name* > Calendar Time Zone After that, new events you create should have the correct time zone set. Existing events may need to be edited for them to get their time zones updated. The easiest way to do that is to unsubscribe from the calendar by double-clicking it in the left sidebar to open the Calendar Info dialog, and clicking Unsubscribe. Then resubscribe to the calendar by checking it in the left sidebar. ## Favorite Time Zones[​](#favorite-time-zones "Direct link to Favorite Time Zones") BusyCal offers powerful support for managing multiple time zones, making scheduling across different regions effortless. You can **save favorite time zones** and assign them a friendly name, allowing you to think in terms of **people or places** instead of confusing GMT offsets. Need to coordinate with a colleague in *Tokyo* or a client in *New York*? Simply create a favorite time zone labeled **"Tokyo Office"** or **"NY Client"**, and let BusyCal show you friendly names in various places, such as drop-downs and time zone pickers. To add a set of frequently used time zones (a.k.a Favorite Time Zones), open **BusyCal > Settings > Time Zones**. ![Favorite Time Zones Settings for macOS](https://www.busymac.com/images/new/bcl-fav-tz-pref@2x.png) Click \[+] to add a time zone. Double-click on its title to give it a custom name. Any time zones you add here will show up in time zone pickers / popups across the app, and will optionally show a Time Zone Conversion card within the Info Panel. You can enable or disable this from under Settings > Info Panel > Favorite Time Zones ![Favorite Time Zones in Info Panel](https://www.busymac.com/images/new/bcl-fav-tz-ip@2x.png) 1. Is the hour-offset from your current time zone. A dark background means it's evening time at the location, and a light background means it's daytime. 2. Displays converted times 3. Mouse-over the time zone's name to see current time at the location 4. "Copy to clipboard" copies the schedule to your clipboard ## How To Create a Favorite Time Zone[​](#how-to-favorite-time-zone "Direct link to How To Create a Favorite Time Zone") [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/fav_timezones_web.webm) ## Option 4: Adjust Events to Local Time Zone[​](#option-4 "Direct link to Option 4: Adjust Events to Local Time Zone") If you didn’t use any of the previous options and now your events appear in the **original time zone** they were created in *(making them seem "wrong")*, you can quickly adjust them to your **local time zone**. ### How to Adjust Events to Your Local Time:[​](#how-to-adjust-events-to-your-local-time "Direct link to How to Adjust Events to Your Local Time:") 1. **Select all affected events** → *(CMD + click individually)*. 2. **Right-click (CTRL + Click) on one of the selected events**. 3. From the context menu, choose **Move To Time Zone → \[Your Current Time Zone]**. ### What Happens When You "Move To Time Zone"?[​](#what-happens-when-you-move-to-time-zone "Direct link to What Happens When You \"Move To Time Zone\"?") This action updates the event's time zone **while keeping its real-world time the same**. #### **Example:**[​](#example "Direct link to example") * A **2 PM event in New York (EST)** is moved to **Hong Kong time (HKT, +12h)**. * The event is now **set to 2 AM HKT**, but will **still appear as 2 PM EST** *(since it remains at the same absolute time)*. ### Alternative: "Set To Time Zone" (If You Want to Keep the Same Clock Time)[​](#alternative-set-to-time-zone-if-you-want-to-keep-the-same-clock-time "Direct link to Alternative: \"Set To Time Zone\" (If You Want to Keep the Same Clock Time)") BusyCal also offers a **Set To Time Zone** option in the same menu. This action updates the event's time zone **while keeping the original time the same** *(as if the event was scheduled in the new time zone)*. #### **Example:**[​](#example-1 "Direct link to example-1") * A **2 PM event in New York (EST)** is **set to Hong Kong time (HKT, +12h)**. * It will still **show as 2 PM**, but now in **Hong Kong time**, meaning it actually takes place at **2 AM EST**. ### Summary:[​](#summary "Direct link to Summary:") * **Move To Time Zone** → Keeps the real-world moment the same but updates how it's displayed in a new time zone. * **Set To Time Zone** → Keeps the event at the same clock time but shifts when it actually happens. Choose the option that best fits your needs! --- # Printing You can print your calendar by choosing File > Print. BusyCal prints whatever is currently displayed onscreen. If you are viewing your calendar in Month view and choose File > Print, the Month view is printed. Likewise for the Week view and other views. ![Printing Month View](https://downloads.busymac.com/resources/img/busycal-mac/print_month.png) ## Print Options[​](#print-options "Direct link to Print Options") There are three options available in the Print dialog. Choose `File > Print`, and then click Show Details, if necessary, to display the following options: * **Text size** — Select a Text size of Small, Medium or Large. * **Pages to print** — Enter the number of Months, Weeks, or Days to print. * **Print as Free/Busy Only** — Hides event details (such as titles, locations, and notes) and prints only free/busy time blocks. When this option is enabled, events (including all-day banners) that are not marked as busy are shown as **\[Free]**, while events marked as busy are shown as **\[Busy]**. ## Day/Week View[​](#day-week-view "Direct link to Day/Week View") If you are displaying the Day or Week view, the hours printed are the same as the hours shown on screen. * You can adjust the number of hours shown in the Day/Week view in BusyCal > Settings > General: Show *x* hours at a time. * You can also adjust the number or hours shown in the Day/Week view dynamically by zooming in/out by holding down the option-key while scrolling with a mouse scroll wheel, or holding down the option-key while two finger scrolling on a trackpad. ![Printing Week](https://downloads.busymac.com/resources/img/busycal-mac/print_week.png) ![Printing Day](https://downloads.busymac.com/resources/img/busycal-mac/print_day.png) ## Printing a Task List[​](#printing-a-task-list "Direct link to Printing a Task List") BusyCal lets you print your Task List in two ways: either alongside the Day View or on its own. To print just your task list, choose **File > Print Task List...** from the menu. This prints only your tasks, exactly as they appear in the Task panel. ![Printing Tasks Only](https://downloads.busymac.com/resources/img/busycal-mac/print_tasks.png) Another option for printing just tasks is to print the [List view](/docs/busycal/70591-list-view.md) and set up a [smart filter](/docs/busycal/70612-smart-filters.md) that displays only tasks. ## Year View[​](#printing-year "Direct link to Year View") Similar to other views, you can switch to the Year Planner view to print the entire year overview. ![Printing Year](https://downloads.busymac.com/resources/img/busycal-mac/print_year.png) ## Printing a Single Event[​](#printing-a-single-event "Direct link to Printing a Single Event") BusyCal does not offer the option to print a single event. As an alternative, you can copy/paste events into a text document for printing. In BusyCal, select an event and choose Edit > Copy (or press `⌘-C`). Then choose Edit > Paste (or press `⌘-V`) in a text document to paste the event details. You can also use this technique to select multiple events in BusyCal, copy them all to the clipboard simultaneously, and paste all of them into a text document in one step. ## Printing a Daily Agenda[​](#printing-a-daily-agenda "Direct link to Printing a Daily Agenda") If you want to print a daily agenda including event notes, you can customize [List view](/docs/busycal/70591-list-view.md) for this purpose. In List view, Control-click the column headers to show or hide various columns (including Notes), choose View > Word Wrap to show multi-line Notes, and choose Day from the date range pop-up menu at the top of the window to display events for a single day. ## Printing in Other Apps[​](#printing-in-other-apps "Direct link to Printing in Other Apps") Since BusyCal remains in sync with Apple Calendar and other apps and cloud services, you can always print your calendar using those other apps if they provide a print format that you require that is not offered in BusyCal. --- # Searching, Finding, and Filtering Events BusyCal provides two methods of searching for events: you can find all matching events throughout your entire calendar, or you can filter the current view to show only matching events within the current date range. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/filter_mode_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/filter_mode_web_poster.png) ## Searching for Events[​](#finding-events "Direct link to Searching for Events") To find all matching events, choose Edit > Find, press `⌘-F`, or click in the Search field. Enter your search criteria to find all events whose title, location, notes, or tags match the search criteria and display them in a list. You can then select items in the list by clicking on them or using the arrow keys on the keyboard to highlight those events in your calendar, with matching events outlined using a dotted highlight in all views, including List View. ![Search results for checked calendars](https://downloads.busymac.com/resources/img/busycal-mac/searchword.png) tip Double-click a search result to open it in a separate floating window that stays pinned on screen. This is useful for viewing multiple events side by side — you can double-click several results to open them each in their own window. For more on floating event windows, see [Get Info in a New Window](/docs/busycal/70595-info-panel.md#get-info-in-new-window). ### Include Search Results from All Calendars[​](#search-all-calendars "Direct link to Include Search Results from All Calendars") By default, search only looks through calendars that are currently checked in the source list. To also include unchecked calendars, click the small arrow next to the magnifying glass in the Search field and enable **Include Search Results from All Calendars**. ![Include Search Results from All Calendars option](https://downloads.busymac.com/resources/img/busycal-mac/include_all.png) When enabled, search results will include events from subscribed calendars that are unchecked in the source list, giving you a broader view across all your calendars. ![Search results including all calendars](https://downloads.busymac.com/resources/img/busycal-mac/search_all.png) ![Search highlight](https://downloads.busymac.com/resources/img/busycal-mac/search-highlights.png) ## Filtering Events[​](#filtering-events "Direct link to Filtering Events") To filter the current view to display only matching events, press `⌘-Option-F` or click in the Search field, click the small downward-pointing arrow next to the magnifying glass icon, and choose Filter from the pop-up menu; then type the text to search for. BusyCal searches for all events whose title, location, notes or tags match the search criteria and filters the current view to show only the matching events. ![](https://downloads.busymac.com/resources/img/busycal-mac/filter_mode.png) Only matching events in the current calendar date range are shown. You can then page or scroll backward or forward through the current view (Month, Week, Day) to see matching events in the past or future. You can also switch to List view and set a wider date range (like a year or a decade) to see more results. To create reusable filters, see [Smart Filters](/docs/busycal/70612-smart-filters.md). ## Filtering by Tags[​](#tags "Direct link to Filtering by Tags") BusyCal makes it easy to filter your calendar view using tags. When you [assign tags to events](/docs/busycal/70597-tags.md), you can quickly filter to show only events with specific tags: 1. Click in the Search field at the top right of the BusyCal window 2. Click the small arrow next to the magnifying glass and select **Filter** 3. Enter a hash symbol (#) followed by the tag name (e.g. `#work`, `#personal`, `#important`) This instantly filters your calendar view to show only events that have the specified tag. You can combine multiple tags by separating them with spaces (e.g. `#work #urgent`). ## Finding and Replacing Text[​](#find-and-replace "Direct link to Finding and Replacing Text") Searching and filtering locate events. To change them, use **Find and Replace**, which rewrites text across many events, tasks, and journal entries in a single pass. Choose **Edit > Find and Replace…** or press `⌥⇧⌘F` to open it. See [Find and Replace](/docs/busycal/find-and-replace.md) for the full details, including the live preview and Regular Expression mode. --- # Smart Filters Smart Filters in BusyCal offer exceptional customization for dynamic calendar sets and saved searches, all accessible with a single click. Whether you need to quickly toggle between work and personal schedules or filter events based on specific criteria, Smart Filters give you complete control. What are Calendar Sets? Calendar Sets allow you to save and quickly switch between different groups of calendars. BusyCal implements this through Smart Filters, which go beyond simple calendar grouping. Smart Filters can save not just your calendar selections (Calendar Sets), but also your view preferences, time zones, and complex event filtering criteria, providing unprecedented control over your calendar workflow. With Smart Filters, you can: * **Create Calendar Sets**: Instantly switch between predefined groups of calendars (Work, Personal, Family, etc.) * **Filter Events**: Show only events that match specific conditions, such as keywords, event types, or tags * **Save View Settings**: Remember custom layouts, including columns and sort order in [List View](/docs/busycal/70591-list-view.md) * **Switch Time Zones**: Save and recall different time zones for dynamic event display when traveling or working globally To create a Smart Filter, choose **Filter > New Smart Filter** (or press `⌘-Control-N`) and configure your preferred settings. Some examples follow. ## Calendar Sets[​](#calendar-sets "Direct link to Calendar Sets") **Calendar Sets** allow you to quickly switch between different groups of calendars with a single click. BusyCal implements Calendar Sets through Smart Filters, giving you powerful ways to organize and view your calendars. For instance, you might have one calendar set that includes all your work-related calendars, another for personal appointments, and a third for family activities. By selecting a particular Calendar Set, BusyCal will display only the calendars included in that set, helping you focus on the relevant events and tasks without the distraction of unrelated calendar entries. A calendar set can be created by enabling the **Remember calendar set (visible calendars)** option when setting up a new smart filter. This option then remembers and associates your currently "checked" calendars in the side panel with the new smart filter, effectively creating a saved "Calendar Set." By setting up various smart filters as calendar sets, you can conveniently switch between different groups of calendars with just one click. You can disable this option if you prefer to use the smart filter as a "saved search" that should always apply to the currently selected set of calendars. Popular Calendar Sets to Create Consider creating these common calendar sets for better organization: * **Work** - Only work calendars and task lists * **Personal** - Personal calendars, birthdays, and family events * **Focus** - Just your primary calendar for distraction-free planning * **Everything** - All calendars including subscriptions and shared calendars * **Planning** - Project calendars and deadline tracking [YouTube video player](https://www.youtube.com/embed/GZdboxYoho4?si=27wLtE99hYM43fe-) To create a new calendar set: 1. Select the calendars you want to show or hide by checking them in the left sidebar. 2. Choose Filter > New Smart Filter or press `⌘-Control-N`. 3. Select **Remember calendar set (visible calendars)**, give the filter a name, like “Work,” and click OK. ![New Smart Filter](https://downloads.busymac.com/resources/img/busycal-mac/new_smart_filter.png) The new calendar set (saved as a Smart Filter) is added to the Filter bar, and clicking it instantly switches to that calendar set. If the filter bar is not showing, you can enable it from the **View menu > Show Filter Bar** option (or press `⌘-Control-H`). ![Filter Bar](https://downloads.busymac.com/resources/img/busycal-mac/created_work_filter.png) The filter can also be applied by selecting its name from the Filter menu or by pressing its keyboard shortcut. The first smart filter listed is “Unfiltered” with a keyboard shortcut of `⌘-Control-1`. You can think of Unfiltered as the standard or default filter. The next smart filter (Work, in this example) corresponds to `⌘-Control-2`. ![Filter Menu](https://downloads.busymac.com/resources/img/busycal-mac/smart_filter_menu.png) ## Saving Changes to Calendar Sets[​](#saving-calendar-sets "Direct link to Saving Changes to Calendar Sets") If you show or hide additional calendars by checking them in the left calendar side panel, the Filter button in the toolbar displays a `*` (asterisk) next to its name, indicating that the current calendar set has been modified. Changes are discarded if not manually saved. Manual Save for Calendar Sets BusyCal requires manual saving of calendar set changes. This intentional design allows you to temporarily view additional calendars without permanently altering your carefully configured calendar sets. ![Smart Filter with Changes](https://downloads.busymac.com/resources/img/busycal-mac/smart_filter_modified.png) When your calendar selection has changed, such as after you uncheck a calendar momentarily: * To save the changes, choose **Filter menu > Save Changes**, press `⌘-Control-S`, or *Control-click* the button in the toolbar and choose Save Changes from the contextual menu. * To discard the changes, press `⌘-Control-2` (the Work filter’s keyboard shortcut), `⌘-Control-R` (for Revert), or *Control-click* the button in the toolbar and choose Revert to Saved from the contextual menu. You can also click on the same filter **Work** again to revert to previously saved settings. important BusyCal does not automatically save changes to the calendar set. This is an *incredibly powerful feature* as it allows you to temporarily uncheck / check a calendar only momentarily. Quitting and relaunching the app will revert to previously saved settings. The **Unfiltered** is a built-in, default calendar set. When you switch to a different smart filter, your current view settings and calendar selection is automatically saved against *Unfiltered*. This way, when you switch back to the built-in unfiltered view, your previous calendar selection and view settings are automatically restored. ## Content Matching[​](#content-matching "Direct link to Content Matching") You can create powerful smart filters to show events that match various conditions, such tasks that contain a certain string of text and that were modified in the last 7 days. ![Recent Tasks Smart Filter](https://downloads.busymac.com/resources/img/busycal-mac/smart_filter_recent_expo.png) To create a content-matching smart filter: 1. Choose **Filter menu > New Smart Filter** or press `⌘-Control-N`. 2. Select **Show events that match the following conditions:** and configure the settings shown above, then name the filter and click **OK**. 3. A button with the smart filter’s name appears on the Filter Bar. Clicking the button applies the filter and highlights it as selected. ![Recent Tasks Smart Filter](https://downloads.busymac.com/resources/img/busycal-mac/smart_filter_recent_expo_bar.png) You can create some pretty sophisticated smart filters for things like: * Due Date is in the next *x* days. * Priority is High. * Tag contains “Client X” * Modified in the last *x* days. * Location contains “Starbucks” * Event type is Meeting. * Meeting Status is Maybe. ### Nested Filters[​](#nestedfilters "Direct link to Nested Filters") You can create nested sub-conditions by holding down Option and clicking the ellipsis (…) button, and then choosing All, Any or None for the sub-conditions. ![Smart Filter with ellipsis button highlighted](https://downloads.busymac.com/resources/img/busycal-mac/smart_filter_complex.png) For example, you could create a smart filter that matches ALL event types that are tasks, ANY tags that contain client *x* or client *y*, and NONE that have a tag containing client *z*. ![Smart Filter advanced setup](https://downloads.busymac.com/resources/img/busycal-mac/smart_filter_complex_done.png) ## Remember View Settings[​](#view-settings "Direct link to Remember View Settings") You can customize the calendar views in BusyCal, like a [4-day Week](/docs/busycal/70588-week-view.md#customizedays), a [3-week Month](/docs/busycal/70589-month-view.md#customizeweeks), or a List view with a custom number of days and columns shown. ![Smart Filter for View Settings](https://downloads.busymac.com/resources/img/busycal-mac/smart_filter_remember_view.png) You can use smart filters for recalling these custom views with a single click, as follows: 1. Customize the current view (e.g., change the number of days or weeks shown in the Week or Month view, or the columns displayed in List view). 2. Choose Filter > New Smart Filter or press `⌘-Control-N`, select “Remember view settings & preferences,” name the filter, and click OK. 3. A button with the smart filter’s name appears on the Filter Bar, and clicking it displays the custom view. ## Remember Time Zone[​](#remember-time-zone "Direct link to Remember Time Zone") [Customize and override your current time zone](/docs/busycal/70609-time-zones.md#option-1) to dynamically display all events in a different time zone and apply it to new events you create. This is especially useful when traveling, allowing you to keep your calendar aligned without relying on the system time zone. If you frequently switch between time zones, you can enable **Remember time zone** within a **Smart Filter**. This lets you save and quickly toggle between preferred time zones and related view settings, streamlining your workflow and improving productivity. ![Smart Filter for View Settings](https://downloads.busymac.com/resources/img/busycal-mac/smart_filter_remember_tz.png) ## Using Combination Filters[​](#combination-filters "Direct link to Using Combination Filters") A smart filter can include any combination of calendar set, view settings, and conditions. For example, a smart filter could combine a set of calendars with a [6-week month view](/docs/busycal/70589-month-view.md#customizeweeks). For a more sophisticated example that uses tags as a condition, see [Time Tracking](/docs/busycal/70613-time-tracking.md). ## Smart Filter Use Cases & Ideas[​](#use-cases "Direct link to Smart Filter Use Cases & Ideas") Maximize productivity with these practical Smart Filter configurations: ### Work/Life Balance[​](#worklife-balance "Direct link to Work/Life Balance") * **Work Focus** - Show only work calendars + working hours toggle + week view * **Personal Time** - Personal calendars + hide work hours + month view * **Weekend Planning** - Personal/family calendars + 2-day week view (Sat-Sun) ### Project Management[​](#project-management "Direct link to Project Management") * **Active Projects** - Filter by project tags + list view sorted by due date * **Client Review** - Specific client tag + 90-day week view for quarterly overview * **Deadline Tracker** - Tasks due in next 7 days + priority sorting ### Time Zone Management[​](#time-zone-management "Direct link to Time Zone Management") * **Home Office** - Remember Local time zone + standard work calendar selection * **Travel Mode** - Remember Destination time zone + travel calendar selection + compact view * **Global Team** - Multiple time zones displayed + meeting calendars only ### Meeting Workflows[​](#meeting-workflows "Direct link to Meeting Workflows") * **Meeting Prep** - Today's meetings only + attendee info visible * **Availability Check** - Hide all-day events + show free/busy status * **Follow-up Tasks** - Events with "follow-up" tag from past week ### Planning Views[​](#planning-views "Direct link to Planning Views") * **Weekly Review** - 7-day view + all calendars + tasks visible * **Monthly Overview** - 6-week month + no event details + weather visible * **Quarter Planning** - 90-day view + project calendars + milestones tagged ## Calendar Set Syncing[​](#syncing "Direct link to Calendar Set Syncing") Smart Filters (including your Calendar Sets) automatically sync across all your macOS devices via iCloud. For iOS users, Calendar Sets sync **exclusively** between other iOS devices (and not macOS) due to deliberate and technical differences in their implementation. Creating Your First Calendar Set To create your first Calendar Set in BusyCal, simply set up a Smart Filter with **Remember calendar set (visible calendars)** enabled. This gives you instant access to different groupings of calendars - work, personal, family, or any custom combination you need. Smart Filters extend beyond simple calendar grouping with powerful filtering capabilities. This enables migrating to a new device easy. Simply install BusyCal on a new device and your existing smart filters should pull directly from iCloud. To disable Calendar Set syncing, open **Settings** > **Advanced** > **Sync & LAN**, then turn off **Sync Smart Filters & Calendar Sets**. --- # Time Tracking Using a combination of tags, smart filters, and List view, you can generate a custom view that displays the total amount of time spent on a project for calculating billable hours, etc. For example, to track the amount of time spent working on the *xyz* project each month, do the following: 1. Using the [Info Panel](/docs/busycal/70595-info-panel.md), add a [tag](/docs/busycal/70597-tags.md) to each of the events related to the *xyz* project. ![Time Tracking Tag](https://www.busymac.com/images/bcl3mac-tag-entry.png) 2. Select [List view](/docs/busycal/70591-list-view.md), choose a Month date range from the pop-up menu at the top, and then Control-click the column header area and add these columns: Duration, Total Duration, and Tags. 3. Create a [smart filter](/docs/busycal/70612-smart-filters.md) that remembers the current view settings and displays only events that contain the *xyz* tag. ![Smart Filter for Time Tracking](https://www.busymac.com/images/bcl3mac-smart-filter-time-tracking.png) Now, whenever you invoke this smart filter, it switches to List view, displaying only events that contain the *xyz* tag, with columns showing the Duration of each event and a running Total Duration for all events. ![Time Tracking display](https://www.busymac.com/images/bcl3mac-xyz-time-tracking.png) You can also show columns for Travel Time and Total Travel Time in the List View, if you want you want to track or bill your travel time separately. --- # Contacts You can drag contacts from BusyContacts or the macOS Contacts app into BusyCal to attach contacts to events or tasks. You can also drag a contact into BusyCal to create a meeting with that person, or to create a new task linked to that person. The behavior varies depending on whether you’re dragging from Contacts or BusyContacts. ## Creating a Meeting with a Contact from the Contacts App[​](#creating-a-meeting-with-a-contact-from-the-contacts-app "Direct link to Creating a Meeting with a Contact from the Contacts App") Drag a contact from Contacts into the calendar to create a new meeting on that date with that contact. ![Add a contact to a calendar](https://www.busymac.com/images/bcl3mac-drag-contact-event.png) The resulting meeting has the person’s name in the Attendees field as an attendee, and a Send Invitation button (as shown in the image above). ## Creating a Task with a Linked Contact from Contacts[​](#creating-a-to-do-with-a-linked-contact-from-contacts "Direct link to Creating a Task with a Linked Contact from Contacts") Drag a contact from Contacts into the Task List to create a new task that is linked to that contact. The contact’s name appears in the Title field, but you can type over it to change the title. A link to the contact in Contacts also appears in the “my URL” field. ![Add a contact to a task](https://www.busymac.com/images/bcl3mac-drag-contact-to-do.png) To create a dated task linked to a person in Contacts, start dragging the contact as above, but hold down Command while dropping it onto a date. The task’s due date is set to that date. ## Creating an Event Linked to a Contact from BusyContacts[​](#creating-an-event-linked-to-a-contact-from-busycontacts "Direct link to Creating an Event Linked to a Contact from BusyContacts") Drag a contact from BusyContacts into the calendar to create a new event linked to that contact. ![Drag a contact from BusyContacts to an event](https://www.busymac.com/images/bcl3mac-drag-busycontacts-event.png) The resulting event has a link to that person’s record in BusyCal in the Contacts field, but does not add the person as an invited attendee. To create a meeting with the person instead of a regular event, start dragging the contact as above, but hold down Option while dropping it onto a date. The event then lists the person as an attendee, with a Send Invitation button ## Creating a Task with a Linked Contact from BusyContacts[​](#creating-a-to-do-with-a-linked-contact-from-busycontacts "Direct link to Creating a Task with a Linked Contact from BusyContacts") Drag a contact from BusyContacts into the Task List to create a new task that is linked to that contact. The contact’s name appears in the Title field, but you can type over it to change the title. A link to the contact in BusyContacts also appears in the Contacts field. ![Add a BusyContacts contact to a task](https://www.busymac.com/images/bcl3mac-drag-busycontact-to-do.png) To create a dated task linked to a person in BusyContacts, start dragging the contact as above, but hold down Command while dropping it onto a date. The task’s due date is set to that date. ## Adding Contact Info from BusyContacts to an Event or Task[​](#adding-contact-info-from-busycontacts-to-an-event-or-to-do "Direct link to Adding Contact Info from BusyContacts to an Event or Task") In addition to linking a contact to an event or task, you can drag a contact from BusyContacts (though not from the macOS Contacts app) to insert the contact’s information into the Notes or Location field. ![Drag from BusyContacts to Event](https://www.busymac.com/images/bcl3mac-drag-busycontacts-to-notes.png) Your options are as follows: * To add a contact’s info to the Notes field of an existing event, drag the contact to the Notes field. * To add a contact’s address to the Location field of an existing event, drag the contact to the Location field. ## Adding a Link to a Contact in the URL Field[​](#adding-a-link-to-a-contact-in-the-url-field "Direct link to Adding a Link to a Contact in the URL Field") You can use AppleScript plus BusyCal’s [URL handler](/docs/busycal/70621-url-handler.md) to create new events and tasks that link to the Contact in the URL field. ## Creating Links to Files, Mail Messages, and URLs[​](#creating-links-to-files-mail-messages-and-urls "Direct link to Creating Links to Files, Mail Messages, and URLs") In addition to contacts, you can drag files, Mail messages, Safari URLs, and other items to an event’s Info Panel to create links to those items. --- # Managing Meeting and Invites BusyCal enables you to schedule meetings with others by adding attendees to an event and sending a meeting invitation. Whether you're organizing team meetings, sending out invites, or responding to calendar invitations, this guide walks you through managing meetings and invites in BusyCal. ## Sending Meeting Invitations[​](#sending-meeting-invitations "Direct link to Sending Meeting Invitations") When you create an event and add attendees to it, a Send Invitation button appears. Clicking this button sends a meeting invitation to the attendee. ![Send Invitation button](https://www.busymac.com/images/bcl3mac-send-invitation.png) important For meetings created on iCloud, Google, or Outlook/Exchange calendars, invitations are sent **automatically** by the server during sync — not by your email client. [Please see this for more information](/docs/busycal/70607-preferences.md#advanced) Take Note Entering yourself as an attendee or an email that exists under your **Me Card** is deemed invalid. BusyCal will automatically remove such entries to avoid errors during sync. ## Receiving and Responding to Meeting Invitations[​](#receiving-meeting-invitations "Direct link to Receiving and Responding to Meeting Invitations") When an attendee receives an invitation, BusyCal displays an Inbox notification in the upper-left corner of the window. Clicking on the inbox icon enables the attendee to respond to the meeting request (by clicking Accept, Decline, or Maybe), at which point a reply is sent to the meeting organizer with their status. The Inbox button in the toolbar shows how many items are waiting. If the toolbar shows no Inbox button, nothing is waiting in the Inbox. ![Receiving a meeting invitation](https://www.busymac.com/images/bcl3mac-meeting-invitation-received.png) note The Inbox also displays notifications of changes to shared calendars, depending on your settings. If you use [BusyCal Bookings](/docs/bookings.md), it also lists each change to your bookings and requests. See [Bookings in BusyCal's Inbox](/docs/bookings/bookings-and-requests.md#inbox). Clear All Notifications To clear all Inbox notifications at once, hold down the **Option** key while clicking the gray **X** on any notification. ### Choose Which Calendars Show Invitations in the Inbox[​](#choose-calendars-for-inbox "Direct link to Choose Which Calendars Show Invitations in the Inbox") You can keep events from all your calendar accounts visible in BusyCal while choosing which calendars contribute meeting invitations to the Inbox. For example, you can view a work Microsoft 365 calendar in BusyCal but handle its invitations in Outlook. The setting applies to each calendar, not the whole account. See [How can I hide meeting invitations from one calendar?](/docs/faqs/hide-meeting-invitations-from-calendar.md) for instructions for Mac, iPhone, and iPad, including what changes in BusyCal and what remains available through your calendar provider. Meetings with one or more attendees that haven't responded, or have responded with a busy / busy-tentative status, will appear with diagonal stripes in day and week view. On iCloud, Meeting Invitations will automatically get added to your preferred Meeting Calendar. You can change this setting under Preferences > Accounts > iCloud Account > Meeting Calendar. info Checkout the troubleshooting section for [common issues](/docs/faqs/meeting-invitation-faqs.md). ## Cancelling Meetings[​](#cancelling-meetings "Direct link to Cancelling Meetings") As an organizer, you can cancel the meeting at any time. To do this, simply select the meeting and hit Delete. This will send out a cancellation to all of the attendees. ## Me Card[​](#me-card "Direct link to Me Card") BusyCal requires you to have a default email address defined in your macOS Contacts or BusyContacts Me Card for sending and responding to meeting invitations. You can open your Me Card by opening Contacts and choosing Card > Go to My Card, or by opening BusyContacts and choosing File > Go to My Card. note BusyCal requires permission to access your Contacts Me Card, as without it you will not be able to respond to meeting invitations. ## Attendee[​](#attendee "Direct link to Attendee") When you receive a meeting invitation via email, BusyCal determines whether you are a valid attendee by comparing the attendee email address in the meeting invitation with the email addresses in your Contacts Me Card. If BusyCal finds a matching email address in your Me Card, it enables you to accept or decline the meeting request. ## Organizer[​](#organizer "Direct link to Organizer") The creator of a meeting is the Organizer. Only the meeting Organizer can edit a meeting; attendees have read-only access. BusyCal determines whether you are the meeting Organizer and have editing privileges by comparing the Organizer email address to the email addresses in your Contacts Me Card. When you create a meeting in BusyCal, your default email address is used for the Organizer. You can change the default Organizer email by choosing BusyCal > Settings > Advanced, and choosing one of your email addresses from the “Meeting organizer email” pop-up menu. You can select any of the email addresses in your Contacts Me Card. note This setting affects only meetings created on local calendars. When scheduling meetings on iCloud, Google Calendar, or Exchange, your account email address is used for the meeting Organizer. ![Confirm Changes preference](https://www.busymac.com/images/bcl3mac-prefs-advanced-shared.png) ## Mail Account[​](#mail-account "Direct link to Mail Account") If you create a meeting on a local calendar, BusyCal sends meeting invitations from the default mail account in Apple Mail. You can set the default account in Mail by choosing Mail > Preferences > Composing, and choosing an account from the “Send new messages from” pop-up menu. BusyCal also supports several [third-party mail clients](/docs/faqs/71187-what-email-apps-is-busycal-compatible-with.md) that allow sending meeting invitations via AppleScript. You can view outgoing meeting invitations in Mail before sending them. This may be useful for adding a personal note to the email or changing the mail account the invitation is being sent from. To configure this setting, open BusyCal > Settings > Advanced, and check the “Show outgoing meeting invitations in Mail” checkbox. note These settings only affect meetings created on local calendars. When scheduling meetings on iCloud, Google Calendar, or Exchange,the meeting invitation is delivered by the server and not your email client. ![ Send New Messages From setting](https://www.busymac.com/images/bcl3mac-mail-prefs-composing.png) ## iCloud Meetings[​](#icloud-meetings "Direct link to iCloud Meetings") When you create a meeting on an iCloud calendar: * **Organizer** — The meeting invitation is delivered by the iCloud server and not by your email client, and your Apple ID email address is used as the meeting Organizer. * **Attendee** — If an iCloud user sends you a meeting invitation using your iCloud email address (@icloud.com, @me.com, or @mac.com), the meeting invitation is intercepted by the iCloud server and delivered to you in one of two ways, based on your iCloud Calendar preferences. Log in to your calendar on icloud.com in your web browser, click the gear icon, choose Preferences from the pop-up menu, click Advanced, and select how you would like to receive meeting invitations from other iCloud users: * **In-app notifications** — iCloud delivers meeting invitations to your [BusyCal inbox](#receiving-meeting-invitations). * **Email to** — iCloud delivers meeting invitations to your email inbox. ![In-app notifications](https://www.busymac.com/images/bcl3mac-icloud-prefs-calendar.png) ## Google Meetings[​](#google-meetings "Direct link to Google Meetings") When you create a meeting on a Google calendar: * **Organizer** — The meeting invitation is delivered by the Google server and not by your email client, and your Google email address is used as the meeting Organizer. * **Attendee** — If a Google user sends you a meeting invitation using your Google email address, the meeting invitation is intercepted by the Google server and may be added to your calendar automatically, depending on your Google Calendar settings. Log in to your calendar on Google in your web browser, click the Gear icon, choose Settings from the pop-up menu, and select whether you want to Automatically add invitations to your calendar. * **Yes** — Invitations are automatically added to your Google primary calendar. You also receive the invitation via email, which you can ignore. * **No** — Invitations are not added to your calendar. You must manually add the invitation received via email to your calendar. ![Automatically add invitations to my calendar](https://www.busymac.com/images/bcl3mac-google-auto-add-invites.png) In both cases above, you still need to accept or decline the meeting invitation once it is added to your calendar. ## Google Meeting Limitations[​](#google-meeting-limitations "Direct link to Google Meeting Limitations") Please be aware of the following when creating meetings on a Google calendar: * For best results, you should create meetings on your *primary* Google calendar. This ensures that the meeting invitations are delivered to attendees by Google and that the attendee responses are properly received and processed by Google. * Attendees cannot add meeting invitations to secondary Google calendars. You can add and accept meeting invitations only on your primary Google calendar. * Meeting invitations are not delivered to attendees if you create the meeting in BusyCal on a secondary Google calendar. If you want to invite attendees to a meeting on a secondary Google calendar, you must create the meeting on Google Calendar in your web browser. * If an attendee receives a meeting invitation via email addressed to their non-Google email address and adds the meeting to their primary Google calendar, the attendee email address in the meeting reply is changed to their Google email address and the meeting reply is sent to the organizer from Google using the attendee’s Google email address. Since the attendee email address in the reply does not match the original attendee email address, the attendee’s status will probably not be recognized and updated by the organizer. ## RSVP with Comments[​](#exchange-meetings "Direct link to RSVP with Comments") RSVP / responding to meetings with a comment is only supported by Exchange / Office 365 or CalDAV servers that explicitly advertise support for private comments (i.e. [calendarserver-private-comments](https://github.com/apple/ccs-calendarserver/blob/master/doc/Extensions/caldav-privatecomments.txt)). When you receive an invite, you can click on the *Add a comment* field to type in a comment before selecting Accept / Maybe / Decline. ## Proposing New Meeting Times[​](#propose-meeting-times "Direct link to Proposing New Meeting Times") Starting with v2025.1.2, BusyCal lets you propose a new meeting time directly from the Info Panel. Click the **Propose New Time** button to reveal options for selecting a new start and end time, updating your RSVP status, and adding an optional comment. When you click **Propose**, BusyCal opens a new email in Mail with your proposed time details and a `.ics` file attached—ready to send to the event organizer. Once the organizer imports the proposal and accepts it, a new event update will be sent to you automatically. note BusyCal uses your default mail client to send proposals. If your mail client doesn’t support attachments (like Spark), BusyCal will automatically fall back to using Apple Mail. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") If you're experiencing issues with receiving or sending invitations, please take a look at [some common reasons for failure and their solutions](/docs/faqs/meeting-invitation-faqs.md). If you're seeing suspicious or unwanted events appearing on your calendar from unknown senders, see [How do I stop spam calendar invitations?](/docs/faqs/calendar-spam-invitations.md) for instructions on reporting and preventing calendar spam through your provider's web interface. --- # Free/Busy Availability Viewer When your calendar service supports it, BusyCal can show the free/busy status of the organizer and all attendees as you schedule a meeting. The **Availability Viewer** brings together traffic-light status indicators, a full-day timeline, hover tooltips, and an automatic next-available-time search — so you can pick a slot that works for everyone without leaving the event. This feature is supported by: * Exchange and Office 365 * Google Calendar * Fastmail * Fruux * macOS Calendar Server * Kerio * Zimbra This feature is **not** supported by: * iCloud * Yahoo * Communigate * Beehive ## Available Meeting Times[​](#available-meeting-times "Direct link to Available Meeting Times") To view attendee availability, add one or more attendees to an event on the Info Panel, then tab or click out of the Attendee field. If the calendar service supports free/busy lookup and you are the meeting organizer, a **Check Availability...** button appears — click it to open the Availability Viewer. You can also open it any time from **Window > Availability Panel** (`⇧⌘A`). ![Check Availability of Attendees](https://downloads.busymac.com/resources/img/busycal-mac/availability_traffic.png) ### Free / Busy Availability Indicators[​](#free--busy-availability-indicators "Direct link to Free / Busy Availability Indicators") For services that allow free/busy lookups, BusyCal displays a small traffic light next to each attendee's name. Its color reflects that attendee's availability for the **proposed meeting time**: * **Green** — Available. * **Yellow** — Tentative conflict, but no hard conflict. * **Red** — Unavailable: busy, out of office, or otherwise blocked. * **Gray** — Status is unknown, still loading, or could not be retrieved from the server. A larger summary traffic light appears at the top-left of the timeline, next to the proposed time. It reflects the **effective group availability** — i.e. the combined status across every attendee included in the decision (optional and muted attendees are excluded). Hover it for a one-line summary. important Free/busy indicators are shown only when BusyCal can request availability from the meeting service and you are the meeting organizer. ## Availability Viewer[​](#availability-panel "Direct link to Availability Viewer") [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/availability_viewer_web.webm) The Availability Viewer shows the organizer and each attendee as rows on a horizontal day timeline. The top-left summary displays the proposed meeting time together with the effective group availability. The timeline uses the following visual cues: * **Blue outlined block** — The proposed meeting time. * **Green dashed ribbon** — A slot where everyone included in the group decision is free, long enough to fit the meeting. * **Orange striped block or ribbon** — Tentative availability. * **Solid gray block** — Hard busy time. * **Gray striped block** — Out of office, working elsewhere, or outside-hours time reported by the server. * **Subtle shaded regions** — Time that falls outside your configured working hours (only visible in **All Day** mode). ![Check Availability of Attendees](https://downloads.busymac.com/resources/img/busycal-mac/availabilityv.png) At a glance, the Availability Viewer lets you: * See the **effective group availability** for the proposed time via the large traffic-light summary at the top-left. * Read each attendee's status at a glance from the traffic light next to their name. * Hover the compact **legend** in the upper-right corner to identify the organizer marker, proposed time, free, tentative, busy, and out-of-office / outside-hours blocks. * Hover any attendee row, timeline block, group ribbon, or the current-time marker for a contextual tooltip. When the server discloses event details, BusyCal includes the meeting title and location in the tooltip. * **Click or drag** in the timeline to move the proposed meeting time in 15-minute increments — the summary and traffic lights update live. * Click **Next Available Time** to jump to the next slot where every included attendee is free. While the search is running, the button changes to **Cancel Search** so you can stop it at any time. * Use the arrow buttons to step through days, or click the date label to jump back to today. * Toggle between **All Day** and **Work Hours** to control the visible time range. The footer shows the active working-hours range. * Watch the live **Now** marker when the selected day is today. * **Click an attendee row** to temporarily mute that attendee from group calculations. Muted rows stay visible but are dimmed. **Optional attendees** are likewise excluded from the effective group decision while remaining on the timeline for context. note After setting the time of a meeting in the Availability Viewer, click **Send Invitation** on the Info Panel to notify the attendees of the meeting. ## Setting Your Availability[​](#setting-your-availability "Direct link to Setting Your Availability") A user can indicate on a per-event basis whether the event shows them as Busy or Free by choosing a status from the “show as” pop-up menu in the Info Panel for that event (for Exchange calendars) or by checking the “busy” box in the Info Panel (for CalDAV calendars). Note that you cannot do this for events sent as invitations to you. You can only do this on events you create, so others can see you're free/busy at the time they wish to invite you. ![Availability menu](https://www.busymac.com/images/bcl3mac-show-as-menu.png) To display the “show as” pop-up menu or the “busy” checkbox in the Info Panel, choose BusyCal > Settings > Info Panel, and check the “Busy” checkbox. The “show as” pop-up menu (for Exchange calendars only) contains the following options that you can set on a per-event basis: * **Busy** — Indicates you are busy at that time. * **Free** — Indicates you are free at that time. * **Tentative** — Indicates you may be busy at that time. * **Out of Office** — Indicates you are away at that time. * **Working Elsewhere** — Indicates you are away at that time. ## Access Privileges[​](#access-privileges "Direct link to Access Privileges") In order for a meeting organizer to see the availability of an attendee, the attendee must share their calendar with the organizer and grant the organizer the necessary access privileges. Attendees can change access privileges by *Control-clicking* a calendar in the sidebar, choosing Get Info from the contextual menu, and choosing the desired option next to the organizer’s name: For Exchange calendars only, if the attendee grants the organizer “Availability” access to their calendar, the organizer can see the attendee’s free/busy time blocks in the Availability Viewer, but not event titles or locations. Also for Exchange calendars only, if the attendee grants the organizer “Availability, Title, Location” or higher (Read Only, Read & Create, Read & Write, or Delegate) access to their calendar, then the organizer can see disclosed event titles and locations in the Availability Viewer and its tooltips. For CalDAV calendars, if the attendee selects the checkbox next to the organizer’s name in the Allow Write column, the organizer can see the attendee's event titles and can make changes to the attendee’s calendar. Availability access can be granted only on your primary calendar. note When syncing with Exchange, only events on your primary calendar affect your availability. Events stored on secondary calendars do not affect your availability and do not appear in the Availability Viewer as blocking your free time. This limitation does not apply to CalDAV servers. --- # Backing Up and Restoring BusyCal automatically backs up your calendars every 24 hours and saves your last 10 backups. By default, BusyCal stores backups in the following directory: ``` ~/Library/Containers/com.busymac.busycal3/Data/Documents/BusyCal Backups ``` To view this location manually, open Finder, click on the Go menu (from the top menu bar) and then on "Go To Folder". Copy and paste the path above and hit "Go". ## Automatic Backups[​](#automatic-backups "Direct link to Automatic Backups") You can change the frequency, the number of backups to keep, and the location for the backup folder in `BusyCal > Settings > Backup`. Your options are: * **Automatically back up** — Controls how often backups are created. * **Backups to keep** — Controls how many backup archives are kept when deleting old copies. * **Backup location** — Controls the location where backups are stored. The default location is the BusyCal Backups folder in the Documents folder. ![](https://downloads.busymac.com/resources/img/busycal-mac/backup_setting.png) ## Restore[​](#restore "Direct link to Restore") If you need to restore your calendar from one of these backups, follow the steps below. ### Restoring an Entire Calendar[​](#restoring-an-entire-calendar "Direct link to Restoring an Entire Calendar") 1. Go to **File > Restore BusyCal**. 2. Select a backup file and click **Open**. 3. A list of your calendars will be displayed. Check the calendars you want to restore. 4. Click **Restore** to overwrite the current calendar contents with the backup. ![](https://downloads.busymac.com/resources/img/busycal-mac/restore_picker.png) note Any events created or edited after the backup date will be lost when restoring an entire calendar. Consider restoring specific events when possible. After clicking **Restore**, select the **Restore as a "On My Mac" calendar only** checkbox on the dialog presented next in order to restore it as a local *On My Mac* calendar. This allows you to then drag and drop individual events you would like to restore from the restored calendar back to the account you wish to restore these to. important When this option is unchecked, all events on the calendar you restore are replaced with the contents of the backup. Therefore, if you restore from a backup that was created yesterday, any events created on the calendar you are restoring since yesterday are lost. ### Restoring Specific Events[​](#restore_specific_events "Direct link to Restoring Specific Events") If you don’t want to overwrite your current calendar but need to recover specific events, follow these steps: 1. Go to **File > Restore From Backup**. 2. Select an older backup file and **double-click** to open. 3. Choose the calendar containing the events you wish to recover, click **Restore** and then check the **Restore as an 'On My Mac' Calendar** option. * This ensures the restored calendar remains local and does not override your cloud content. 4. Locate the missing event(s) in the restored calendar and **drag them to the desired calendar** to move them across. You can also copy these events and paste them manually to any other calendar. 5. Once you have restored the necessary event(s), **delete the 'On My Mac' calendar**. By following these steps, you can recover lost events while ensuring your existing data remains intact. The video below demonstrates these steps. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/restore_one_event_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/restore_one_delete_restore_omm.png) ## Backup and Restore Settings[​](#backup-settings "Direct link to Backup and Restore Settings") Nearly all settings in BusyCal automatically sync between Macs over iCloud. There is no need to back up and restore settings. If you have just purchased a new Mac, simply sign in with your iCloud account, [install BusyCal](/busycal) and your settings should automatically restore. You may, however, need to add your individual calendaring accounts (such as iCloud / Google / Outlook) to BusyCal in order to retrieve your calendars and events. --- # Exporting, Importing, and Merging Calendars BusyCal can export in `.ics` and `.csv` format, and supports importing calendars in `.ics` format. note If your events have rich text (formatted) notes, those notes are stored separately and will not appear when the exported ICS file is opened in another app. To include them, convert the notes to plain text first using **Format > Make Plain Text**. See [Rich text notes missing after export](/docs/faqs/rich-text-notes-not-showing-after-export.md) for details. ## Exporting Calendars to ICS[​](#exporting-calendars "Direct link to Exporting Calendars to ICS") BusyCal makes it easy to export your calendars to standard formats that can be used with other calendar applications or for backup purposes. Exporting to ICS format creates a standard calendar file that's compatible with virtually all calendar applications. BusyCal supports exporting calendars & events in two formats: * **Calendar File Format (`.ics`)** – The standard format for sharing calendar event data with others or importing into other calendar apps. * **Spreadsheet Format (`.csv`)** (new in v2025.1.1) – Ideal for analyzing events in spreadsheet applications like Excel, Numbers, or Google Sheets. This format provides a structured table of event details, allowing for sorting, filtering, and custom reporting. To export a calendar in `.ics` format: 1. Select the desired calendar from the left sidebar. 2. Choose **File > Export > Calendar File (.ics)**. 3. Select a location and click **Export**. ### Exporting as `.csv`[​](#export-csv "Direct link to export-csv") To export as a `.csv` file: 1. Choose **File > Export > Spreadsheet (.csv)**. 2. Select the calendars you want to export. 3. Click **Export** to save the file. #### **Additional Export Options**[​](#additional-export-options "Direct link to additional-export-options") * Enable **"Export "My" Private Fields"** to export properties that are local to this device and private to you, such as: * **My Notes** – Private notes attached to events. * **My Tags** – Custom event tags. * **My URL** – Any custom links associated with events. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/exporting_csv2_web.webm) ## How to Import ICS Files (iCal Files)[​](#importing-ics-files "Direct link to How to Import ICS Files (iCal Files)") BusyCal makes it easy to import events from standard ICS calendar files (the universal calendar format), allowing you to seamlessly add events from other calendar applications, downloaded calendar files, or backups. When importing an `.ics` file, you have two options: 1. Create a new calendar containing just the imported events 2. Add the events to an existing calendar already set up in BusyCal ### Option 1: Create a New Calendar from ICS File[​](#option-1-create-a-new-calendar-from-ics-file "Direct link to Option 1: Create a New Calendar from ICS File") To import an `.ics` file as a new standalone calendar in BusyCal: 1. Select **File > Import** from the menu bar 2. Navigate to and select the `.ics` file you want to import 3. If the **Import events into** section isn't visible at the bottom of the dialog, click **Options** to display it 4. Select the **New Calendar** option 5. Click **Import** to complete the process Your imported calendar will appear in the left sidebar with all events from the ICS file. ### Option 2: Import ICS into an Existing Calendar[​](#option-2-import-ics-into-an-existing-calendar "Direct link to Option 2: Import ICS into an Existing Calendar") To add events from an ICS file to a calendar you already have in BusyCal: 1. Select **File > Import** from the menu bar 2. Navigate to and select the `.ics` file you want to import 3. If the **Import events into** section isn't visible, click **Options** to display it 4. Select **Existing Calendar** and choose which calendar to add the events to 5. Click **Import** to complete the process ![Import ICS file into existing calendar](https://downloads.busymac.com/resources/img/busycal-mac/import_ics.png) ### Import ICS to Cloud-Based Calendar[​](#import-ics-to-cloud-based-calendar "Direct link to Import ICS to Cloud-Based Calendar") To import an ICS file to a cloud-based calendar (iCloud, Google, Exchange, etc.): 1. First create a new calendar on the server by choosing **File > New Calendar > Server** note For Google Calendar imports: You must create the new calendar in Google Calendar's web interface first. After creating it, return to BusyCal, choose **View > Refresh Calendars**, and then check the new calendar in the left sidebar to subscribe to it. 2. Now choose **File > Import** and select your `.ics` file 3. Click **Options** if the import options aren't visible 4. Select **Existing Calendar** and choose the cloud calendar you just created 5. Click **Import** to add the events to your cloud-based calendar ### Merging Calendars[​](#merging-calendars "Direct link to Merging Calendars") You can merge multiple calendars into a single calendar by exporting calendar A and importing it into calendar B. Here's how: 1. Export calendar A by selecting it in the left sidebar and choosing **File > Export > Calendar File (.ics)**, and save it to your desktop. Then delete calendar A from BusyCal by *Control-clicking* it and choosing Delete from the contextual menu. 2. Choose File > Import and select the file you exported in step 1. If the "Import events into" section does not appear at the bottom of the dialog, click Options to display it. Select Existing Calendar and choose calendar B. The events from calendar A are added to calendar B. tip After merging the calendars, you can remove any duplicate events by choosing Help > Find Duplicates. ## Export Calendar to PDF[​](#export-to-pdf "Direct link to Export Calendar to PDF") While BusyCal doesn't have a direct "Export to PDF" option, you can easily save your calendar as a PDF using the built-in printing function: 1. Set up your calendar view exactly as you want it to appear in the PDF (Day, Week, Month, or List view) 2. Choose **File > Print** (or press ⌘-P) 3. In the Print dialog, click the **PDF** button in the lower-left corner 4. Select **Save as PDF** from the dropdown menu 5. Choose a location to save your PDF file, give it a name, and click **Save** This creates a PDF document that preserves your current calendar view exactly as it appears on screen, ideal for sharing or archiving your calendar. ### PDF Export Options[​](#pdf-export-options "Direct link to PDF Export Options") When using "Save as PDF", you can customize what appears in your PDF export by: 1. Choosing your preferred view (Day, Week, Month, or List) before printing 2. Using the **Show Details** button in the Print dialog to access these options: * **Text size** - Choose Small, Medium or Large text * **Pages to print** - Specify how many Months, Weeks, or Days to include For optimal results when exporting a task list to PDF, use the [List view](/docs/busycal/70591-list-view.md) and set up a [smart filter](/docs/busycal/70612-smart-filters.md) that displays only tasks. --- # Resetting BusyCal If an error is displayed when launching BusyCal that the file couldn't be opened because it isn't in the correct format, your BusyCal database may be corrupted. You can solve this by resetting BusyCal. To reset BusyCal: 1. Hold down Option while opening BusyCal. 2. When the Startup Options dialog appears, select Reset BusyCal and click Continue. Resetting BusyCal disconnects from any cloud-based services, deletes your BusyCal database, and quits. ![Startup Options](https://www.busymac.com/images/bcl3mac-reset-dialog.png) 3. After resetting, reopen BusyCal. If you were syncing with a cloud-based service like iCloud or Google and those services do not automatically reappear, you can reconnect to them by choosing BusyCal > Settings > Accounts, and re-adding them. Any calendars that are hosted on iCloud or Google are preserved and reappear in BusyCal once you connect to the server. If you had any local calendars, those must be manually restored from one of BusyCal’s [automatic backups](/docs/busycal/70617-backing-up-and-restoring.md). ## Manual Reset[​](#manual-reset "Direct link to Manual Reset") If you're having difficulty launching the app and the above options won't display, you can delete the app's contents and reset it manually by following these steps: 1. Open Finder, click on the **Go** menu and select **Go to Folder**. Then paste the following as-is: ``` ~/Library/Containers/com.busymac.busycal3/Data/Library/Application Support/BusyCal ``` In the folder that opens, delete all files that begin with the name **BusyCal.bsql** (you may find multiple files with similar file extensions). 2. Next, launch BusyCal and open **Settings > Accounts** to be able to re-enter your accounts there. Note: If syncing with iCloud, you will have to re-enter your iCloud app-specific password for BusyCal. If you have forgotten your iCloud app-specific password, you can create a new one and use the new app-specific password instead. You can learn more about creating an app-specific password here: --- # Keyboard Shortcuts BusyCal offers a comprehensive set of keyboard shortcuts and hotkeys that let you efficiently navigate calendar views, create and edit events, and manage your schedule without reaching for your mouse. This complete reference lists all BusyCal keyboard commands. ## Complete BusyCal Keyboard Shortcuts Reference[​](#keyboard-shortcuts "Direct link to Complete BusyCal Keyboard Shortcuts Reference") BusyCal provides comprehensive keyboard shortcuts for navigating and managing your calendars efficiently. These shortcuts are organized by function below, including calendar navigation, event management, and view switching. The tables include specialized sections for Month View, Day & Week View, Calendar Shortcuts, and more. | Month View Navigation Shortcuts | | | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ⌘-→
⌘-← | Scroll forward one month
Scroll backward one month | | ⌘-Option-→
⌘-Option-← | Scroll forward one week
Scroll backward one week | | Vertical swipe or scroll | Scroll forward/backward by week | | Vertical Option-swipe or Option-scroll | Override day cell scrollling and force Month view scrolling | | Day & Week View Navigation Shortcuts | | | ⌘-→
⌘-← | Scroll forward one week
Scroll backward one week | | ⌘-Option-→
⌘-Option-← | Scroll forward one day
Scroll backward one day | | Horizontal swipe | Scroll forward/backward by day | | Vertical swipe or scroll | Scroll the all-day section or hourly grid | | Vertical option-swipe or option-scroll | Change the number hours shown in the hourly grid | | Option-click-and-drag | Drag an existing event to create a duplicate of | | ⌘-Option-click-and-drag | Create a new event in a time slot where events already exist | | ⌘-click-and-drag | Create a Timed Task in a time slot | | Calendar Shortcuts | | | Arrow keys | Select next/previous day in calendar | | ⌘-click any calendar’s checkbox | Select or deselect all the active calendars in the Calendar List | | Space bar | Select or deselect the active calendar in the Calendar List | | Control-click a calendar | Display a contextual menu for editing the selected calendar | | Double-click a calendar | Open Calendar Info dialog | | Double-click in calendar | Create a new event on selected date | | Event Shortcuts | | | Tab
Shift-Tab | Select the next/previous event or to do item in the main calendar view | | ⌘-E,
⌘-I, or
⌘-Return | Toggle the selection between the Info Panel and calendar view and commit your changes | | Double-click an event | Open Info Panel for the event | | Control-click an event | Display a contextual menu for editing the selected event(s) | | Option-click a graphic | Select the graphic | | Click title bar of a sticky, and then press Delete | Deletes the selected sticky | | Info Panel | | | Tab
Shift-Tab | Select the next/previous field on the Info Panel | | ↑
↓ | Increments start or end time by 1 minute | | Option-↑
Option-↓ | Increments start or end time by 15 minutes | | 10
10p
10.30
10.30p
10:30
10:30p
10→30
10→30p
10→30→p | You can move between the hour, minute, and AM/PM fields by typing a period (.), colon (:), or tab (→). You can skip the minute field entirely if the time starts on the hour by typing '10a' or '10p' in the hour field. | | ⌘-' | Enter a Date & Time stamp into the Notes field. | | BusyCal Menu Shortcuts | | | ⌘-comma | Open BusyCal Preferences | | ⌘-H | Hide the BusyCal application | | ⌘-Option-H | Hide all other applications | | ⌘-Q | Quit the BusyCal application | | File Menu Shortcuts | | | ⌘-Option-N | Create a new event using Quick Entry | | ⌘-N | Create a new event | | ⌘-K | Create a new dated task | | ⌘-Option-K | Create a new timed task | | ⌘-U | Create a new undated task | | ⌘-B | Create a new banner (all-day event) | | ⌘-J | Create a new journal | | ⌘-Y | Create a new sticky | | Shift-⌘-N | Create a new calendar group | | ⌘-W | Close the BusyCal window | | ⌘-P | Print calendar view | | Edit Menu Shortcuts | | | ⌘-Z | Undo your last action | | Shift-⌘-Z | Redo the action you just undid | | ⌘-X | Cut the selected text or event | | ⌘-C | Copy the selected text or event | | ⌘-V | Paste the cut or copied text or event | | ⌘-Shift-V | Paste copied text as a list of Tasks | | Option-Shift-⌘-V | Paste the cut or copied text and match the existing style | | ⌘-A | Select all text or all events in the current calendar | | ⌘-D | Duplicate the selected text or event | | ⌘-I | Show or hide the Info Panel for the selected calendar, event, or to do item | | ⌘-/ | Mark selected to do as Done or Not Done | | Shift-⌘-O | Open all links found in the selected event or task (URL, location URL, conference join link, and notes) | | ⌘-Option-F | Filter (go to Search field in Filter mode) | | ⌘-F | Find (go to Search field in Search mode) | | Option-Shift-⌘-F | Open Find and Replace | | VIew Menu Shortcuts | | | ⌘-1 | Switch to Day view | | ⌘-2 | Switch to Week view | | ⌘-3 | Switch to Month view | | ⌘-4 | Switch to Year view | | ⌘-5 | Switch to List view | | ⌘-Option-Plus | Increase number of days in Week view
Increase number weeks in Month view | | ⌘-Option-Minus | Decrease number of days in Week view
Decrease number of weeks in Month view | | ⌘-Option-0 | One month in Month view
One week in Week view | | ⌘-Option-1 | One week in Month view
Two weeks in Week view | | ⌘-Option-2 | Two weeks in Month view
Two Days in Week view | | ⌘-Option-3 | Three weeks in Month view
Three days in Week view | | ⌘-Option-4 | Four weeks in Month view
Four days in Week view | | ⌘-Option-5 | Five weeks in Month view
Five days in Week view | | ⌘-Option-6 | Six weeks in Month view
Six days in Week view | | ⌘-Option-7 | Seven weeks in Month view
Seven days in Week view | | ⌘-Option-8 | Eight weeks in Month view
Eight days in Week view | | ⌘-Option-9 | Nine weeks in Month view
Nine days in Week view | | ⌘-← | Previous page | | ⌘-Option-← | Previous column or row | | ⌘-→ | Next page | | ⌘-Option-→ | Next column or row | | ⌘-T | Show today’s date in the main calendar view | | Shift-⌘-T | Go to a specific date in the main calendar view | | ⌘-Control-H | Show or hide the Filter bar | | ⌘-Option-C | Show or hide the Calendar List | | ⌘-Option-M | Show or hide the mini months | | ⌘-Option-T | Show or hide the To Do List | | ⌘-Option-I | Show or hide the Info Panel | | Shift-⌘-W | Enable or disable word wrap in the calendar view | | Shift-⌘-H | Show rich text or plain text in the calendar view | | Shift-⌘-K | Show or hide weekends | | ⌘-R | Refresh calendars | | Format Menu Shortcuts | | | Shift-⌘-F | Show fonts | | Shift-⌘-B | Make selected text bold | | Shift-⌘-I | Make selected text italic | | Shift-⌘-U | Make selected text underline | | ⌘-Plus | Make selected text bigger | | ⌘-Minus | Make selected text smaller | | Shift-⌘-C | Show colors | | Shift-⌘-C | Copy style of selected text | | ⌘-Option-V | Paste the cut or copied text style | | Shift-⌘-P | Change style of the selected text to plain text | | Window Menu Shortcuts | | | ⌘-M | Minimize the BusyCal window to the Dock | | ⌘-Option-G | Show or hide the Graphics Panel | | ⌘-0 | Show the BusyCal window | | BusyCal Menu in Menu Bar | | | ------------------------ | ---------------------------------------------- | | ⌘-Control-B | Show or hide BusyCal Menu | | Escape | Hide BusyCal Menu | | Enter text | Create event in Quick Entry field | | Up/Down Arrow keys | Select previous/next event in the BusyCal Menu | | Tab | Show or hide event details | | Return | Open selected event in BusyCal | | Space | Mark selected to do as completed | | Alarm Window | | | ----------------------------- | --------------------------------------------------------------- | | Type a number | Enter a snooze value | | Type "m" | Select "minutes" from snooze interval pop-up menu | | Type "h" | Select "hours" from snooze interval pop-up menu | | Type "d" | Select "days" from snooze interval pop-up menu | | Type "b" | Select "minutes before" from snooze interval pop-up menu | | Tab | Toggle selection between Alarms and snooze interval field | | Arrow keys | Select Alarms in the list | | Shift-click or ⌘-click alarms | Select multiple alarms to dismiss or snooze them | | Return | Apply default button (Snooze or Dismiss) to selected Alarms | | ⌘-D | Dismiss selected alarm | | ⌘-S | Snooze selected alarm | | Shift | Change Snooze and Dismiss buttons to Snooze All and Dismiss All | ## Customizing Keyboard Shortcuts[​](#customizing-keyboard-shortcuts "Direct link to Customizing Keyboard Shortcuts") You can override the keyboard shortcuts for any app, including BusyCal, in System Preferences > Keyboard > Shortcuts. For example, if you wanted to change the keyboard shortcut for the File > New Event command from ⌘-N to Control-N, you would do this: 1. Go to System Preferences > Keyboard > Shortcuts. 2. Select App Shortcuts in the left sidebar. 3. Click the + (plus) button. 4. Choose BusyCal from the Application pop-up menu. 5. Enter New Event without the quotes in the Menu Title field. 6. Click in the Keyboard Shortcut field and press Control-N. 7. Click Add. Now, when you click the File menu in BusyCal you’ll see that the New Event menu command uses the new keyboard shortcut of Control-N. note When creating keyboard shortcuts, you must be careful not to create conflicts with any existing keyboard shortcuts. --- # URL Handler BusyCal supports URL handlers for creating new events and finding events in BusyCal. Through the use of BusyCal’s URL handlers you can interact with BusyCal from AppleScript or other apps that can open URLs. ## Creating Events in BusyCal[​](#creating-events-in-busycal "Direct link to Creating Events in BusyCal") You can create a new event in BusyCal using natural language by opening a percent-escaped URL in the following format: ``` busycalevent://new// ``` The URL takes 2 parameters. The first is the event description, the second is an optional parameter for notes. ``: The event description must contain an event title, date (today is assumed if no date), and a start time (an all-day event is assumed if no start time). In addition, you can include an optional calendar name preceded by a slash (e.g., /Work), and an optional final parameter containing a URL surrounded by angle brackets (e.g., ``). NOTE: All text must be URL encoded. ``: The text you would like to show in the notes section. Here are some example natural language phrases for creating events and the corresponding percent escaped URLs: ``` Baseball game tomorrow ``` \[busycalevent://new/Baseball%20game%20tomorrow]\(busycalevent://new/Baseball game tomorrow) ``` Staff meeting Thursday at 10am ``` \[busycalevent://new/Staff%20meeting%20Thursday%20at%2010am]\(busycalevent://new/Staff meeting Thursday at 10am) ``` Meeting with Joe June 7 at 3pm /Work ``` \[busycalevent://new/Meeting%20with%20Joe%20June%207%20at%203pm%20%2FWork]\(busycalevent://new/Meeting with Joe June 7 at 3pm /Work) note `/Work` must be encoded as `%2FWork`, preceded by a space (%20) ``` Meeting with Joe June 7 at 3pm /Work Some Notes ``` \[busycalevent://new/Meeting%20with%20Joe%20June%207%20at%203pm%20%2FWork/Some%20Notes]\(busycalevent://new/Meeting with Joe June 7 at 3pm /Work/Some Notes) note You must add a space `%20` after the title for the list name to be interpreted `/Work` (`%2FWork`) ``` Apple Earnings Conference Call Tuesday at 2pm ``` See [Quick Entry](/docs/busycal/70605-quick-entry.md) for more information on the natural language syntax for creating events in BusyCal. ## Creating Tasks in BusyCal[​](#creating-to-dos-in-busycal "Direct link to Creating Tasks in BusyCal") You can create a new task in BusyCal using natural language by opening a percent-escaped URL in the following format: ``` busycalevent://new/-/ ``` The URL takes 2 parameters. The first is the task description, the second is an optional parameter for notes. `-`: To create a task, precede the task description with a hyphen (-). You can provide a due date (an undated task is created if no date is provided), an optional priority via exclamation points (! = low, !! = medium, !!! = high), an optional calendar name preceded by a slash (e.g., /Work), and an optional final parameter containing a URL surrounded by angle brackets (e.g., ``). ``: New in v3.5.8+. The text you would like to show in the notes section. Here are some example natural language phrases for creating tasks and the corresponding percent-escaped URLs: ``` -Call Bob tomorrow ``` \[busycalevent://new/-Call%20Bob%20tomorrow]\(busycalevent://new/-Call Bob tomorrow) ``` -Pay Taxes April 15!!! /Personal ``` \[busycalevent://new/-Pay%20Taxes%20April%2015!!!%20%2FPersonal]\(busycalevent://new/-Pay Taxes April 15!!! /Personal) ``` -Buy Toner /Shopping ``` See [Quick Entry](/docs/busycal/70605-quick-entry.md) for more information on the natural language syntax for creating tasks in BusyCal. ## Selecting an Event in BusyCal[​](#selecting-an-event-in-busycal "Direct link to Selecting an Event in BusyCal") You can show an event in BusyCal by opening the `busycalevent://find/` URL, in the following format: ``` busycalevent://find///<DateTime> ``` OR ``` busycalevent://find/<Calendar>/<Title>/<Date> ``` The URL takes 2 or 3 parameters. The first is the calendar name, the second is the event title, and the third is the occurrence date of the event in “yyyy-MM-dd’T’HH:mm<!-- -->:ssZ<!-- -->” or “yyyy-MM-dd” format. The calendar name can be blank if you want to search all calendars. If you have multiple calendars by the same name, only the first one will be used. The occurrence date can be a date-time value. For date-only events such as all-day events or tasks, use 12:00:00+0000 or use the second date-only variant. If no date is given, the event is assumed to be an undated task. Here are some examples: ``` Find Undated Task: Buy Toner ``` \[busycalevent://find//Buy%20Toner]\(busycalevent://find//Buy Toner) ``` Find Task: Pay Taxes on April 15 2017 on Personal calendar ``` \[busycalevent://find/Personal/Pay%20Taxes/2017-04-15T12%3A00%3A00+0000]\(busycalevent://find/Personal/Pay Taxes/2017-04-15T12:00:00+0000) ``` Find Event: Meeting with Joe on June 7 2016 at 3:00 PM Pacific Time ``` \[busycalevent://find//Meeting%20with%20Joe/2016-06-07T15%3A00%3A00-0700]\(busycalevent://find//Meeting with Joe/2016-06-07T15:00:00-0700) ``` Find Event: Meeting with Joe on June 7 2016 ``` \[busycalevent://find//Meeting%20with%20Joe/2016-06-07]\(busycalevent://find//Meeting with Joe/2016-06-07) ## Selecting a Date in BusyCal[​](#selecting-a-date-in-busycal "Direct link to Selecting a Date in BusyCal") You can highlight a date in BusyCal by opening the `busycalevent://date/` URL, appended with the date in yyyy-MM-dd format: ``` busycalevent://date/2021-05-31 ``` [Click here to Try](busycalevent://date/2021-05-31) To go to the current date: ``` busycalevent://date/now ``` [Click here to Try](busycalevent://date/now) ## Selecting Calendar Set or Smart Filter in BusyCal[​](#select-cal-set-busycal "Direct link to Selecting Calendar Set or Smart Filter in BusyCal") You can launch BusyCal with a specific [Calendar Set or Smart Filter](/docs/busycal/70612-smart-filters.md) selected by using the following URL handler: ``` busycal://filter/<filter name> ``` Replace `<filter name>` with the exact name of the Smart Filter or Calendar Set (URL encoded if it contains spaces or special characters). ### Examples[​](#examples "Direct link to Examples") Select the "Home" calendar set: ``` busycal://filter/home ``` [Click here to Try](busycal://filter/home) Select the "Meetings" calendar set: ``` busycal://filter/meetings ``` [Click here to Try](busycal://filter/meetings) ## Opening Quick Entry[​](#quick-entry "Direct link to Opening Quick Entry") You can open BusyCal's Quick Entry field, ready for typing, using these URLs: To open Quick Entry for a new event: ``` busycal://newEvent ``` [Click here to Try](busycal://newEvent) To open Quick Entry for a new task: ``` busycal://newTask ``` [Click here to Try](busycal://newTask) ## Subscribing to a Calendar[​](#subscribing "Direct link to Subscribing to a Calendar") You can subscribe to a calendar feed by opening a `webcal://` URL. BusyCal will add it as a subscribed calendar: ``` webcal://example.com/calendar.ics ``` ## AppleScript Examples[​](#applescript-examples "Direct link to AppleScript Examples") BusyCal includes a full [AppleScript automation API](/docs/busycal/70624-applescript.md) for listing accounts and calendars, querying events and tasks, and creating, updating, or deleting items directly. The examples below show an older approach — using AppleScript to build URL handler calls — which can still be useful for quick-entry style automation. ### Display a Prompt to Create a New Event[​](#display-a-prompt-to-create-a-new-event "Direct link to Display a Prompt to Create a New Event") This example shows how to capture input and send it to BusyCal. ``` set myPrompt to display dialog "Create New Event in BusyCal" default answer "Movie at 7pm on Friday /Personal" set response to the text returned of myPrompt set quick_entry to encode(response)—see encode handler below tell application "BusyCal" activate open location "busycalevent://new/" & quick_entry end tell ``` [Download the BusyCal New Event script](https://www.busymac.com/download/busycal-new-event.scpt) ### Create New Event from Text on Clipboard[​](#create-new-event-from-text-on-clipboard "Direct link to Create New Event from Text on Clipboard") This example shows how to use text from the clipboard as input and send it to BusyCal. ``` set myText to (the clipboard as text) set myPrompt to display dialog "Create New Event in BusyCal" default answer myText set response to the text returned of myPrompt set quick_entry to encode(response)—see encode handler below open location "busycalevent://new/" & quick_entry tell application "BusyCal" activate open location "busycalevent://new/" & quick_entry end tell ``` [Download the BusyCal New Event from Clipboard script](https://www.busymac.com/download/busycal-new-event-from-clipboard.scpt) ### Create New event Linked to Current Safari Web Page[​](#create-new-event-linked-to-current-safari-web-page "Direct link to Create New event Linked to Current Safari Web Page") This example shows how to create an event that includes a link to the current Safari web page: ``` tell application "Safari" set theURL to URL of front document set theName to name of front document end tell set myPrompt to display dialog "Create New Event in BusyCal" default answer theName set response to the text returned of myPrompt set encoded_response to encode(response & " <" & theURL & ">")—see encode handler below tell application "BusyCal" activate open location "busycalevent://new/" & encoded_response end tell ``` [Download the BusyCal New Event from Safari script](https://downloads.busymac.com/busycal-new-event-from-safari-url.applescript) If you’re using Chrome, change the tell application “Safari” section in the script above to this: ``` tell application "Google Chrome" set theURL to URL of active tab of front window set theName to title of active tab of front window end tell ``` [Download the BusyCal New Event from Chrome script](https://downloads.busymac.com/busycal-new-event-from-chrome-url.applescript) ### Create New Event Linked to Selected Mail Message[​](#create-new-event-linked-to-selected-mail-message "Direct link to Create New Event Linked to Selected Mail Message") This example shows how to create an event that includes a link to the message selected in Mail. ``` tell application "Mail" set theSelectedMessages to selection set the selected_message to item 1 of the theSelectedMessages set message_id to the message id of the selected_message set message_subject to the subject of the selected_message end tell set myPrompt to display dialog "Create New Event in BusyCal" default answer message_subject set response to the text returned of myPrompt set quick_entry to my encode(response & " <message:%3C" & message_id & "%3E>") --see encode handler below tell application "BusyCal" activate open location "busycalevent://new/" & quick_entry end tell ``` [Download the BusyCal New Event from Mail script](https://downloads.busymac.com/busycal-new-event-from-mail-message.applescript) ### Create New Event Linked to Selected Note in Evernote[​](#create-new-event-linked-to-selected-note-in-evernote "Direct link to Create New Event Linked to Selected Note in Evernote") This example shows how to create an event that includes a link to the note selected in Evernote. ``` tell application "Evernote" set theSelectedNotes to selection set the selected_note to item 1 of the theSelectedNotes set note_link to the note link of the selected_note set note_title to the title of the selected_note end tell set myPrompt to display dialog "Create New Event in BusyCal" default answer note_title set response to the text returned of myPrompt set quick_entry to encode(response & " <" & note_link & ">")—see encode handler below tell application "BusyCal" activate open location "busycalevent://new/" & quick_entry end tell ``` [Download the BusyCal New Event from Evernote script](https://www.busymac.com/download/busycal-new-event-from-evernote.scpt) ### Create New Event Linked to Selected Contact[​](#create-new-event-linked-to-selected-contact "Direct link to Create New Event Linked to Selected Contact") This example shows how to create an event that includes a link to the person selected in Contacts. ``` tell application "Contacts" set theSelectedContacts to selection set the selected_contact to item 1 of the theSelectedContacts set contact_id to the id of the selected_contact set contact_name to the name of the selected_contact end tell set myPrompt to display dialog "Create New Event in BusyCal" default answer contact_name set response to the text returned of myPrompt set quick_entry to encode(response & " <addressbook://" & contact_id & ">")—see encode handler below tell application "BusyCal" activate open location "busycalevent://new/" & quick_entry end tell ``` [Download the BusyCal New Event from Contacts script](https://www.busymac.com/download/busycal-new-event-from-contact.scpt) ### Encode Handler[​](#encode-handler "Direct link to Encode Handler") This handler is used in each of the above scripts for encoding strings. We provide three different implementations, from most robust to simplest: #### Option 1: AppleScript-ObjC (Recommended - Most Robust)[​](#option-1-applescript-objc-recommended---most-robust "Direct link to Option 1: AppleScript-ObjC (Recommended - Most Robust)") This solution uses native macOS frameworks and has no external dependencies. It will work on all current and future versions of macOS: ``` use framework "Foundation" use scripting additions on encode(msg) -- Coerce the AppleScript string to an Objective-C NSString set sourceString to current application's NSString's stringWithString:msg -- Create a custom character set that excludes the forward slash set allowedChars to current application's NSCharacterSet's URLQueryAllowedCharacterSet()'s mutableCopy() allowedChars's removeCharactersInString:"/" -- Perform the percent encoding set encodedString to sourceString's stringByAddingPercentEncodingWithAllowedCharacters:allowedChars -- Coerce the result back to an AppleScript string return encodedString as text end encode ``` **Note:** If using this option, add the `use framework "Foundation"` and `use scripting additions` lines at the top of your script (outside any handlers). #### Option 2: JavaScript for Automation (JXA)[​](#option-2-javascript-for-automation-jxa "Direct link to Option 2: JavaScript for Automation (JXA)") This solution uses JavaScript for Automation, which is built into macOS: ``` on encode(msg) set jxa to " function run(argv) { return encodeURIComponent(argv[0]); } " return run script jxa with parameters {msg} language "JavaScript" end encode ``` #### Option 3: Python 3 (Legacy - May Break in Future macOS Versions)[​](#option-3-python-3-legacy---may-break-in-future-macos-versions "Direct link to Option 3: Python 3 (Legacy - May Break in Future macOS Versions)") This solution uses Python 3, which is currently available in macOS but may be removed in future versions: ``` on encode(msg) try -- The 'safe' parameter is set to empty to ensure '/' is also encoded return do shell script "/usr/bin/python3 -c 'import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1], safe=\"\"))' " & quoted form of msg on error -- Fallback if python3 is not available return msg end try end encode ``` **Important:** Apple has been deprecating scripting language runtimes like Python from macOS. We strongly recommend using Option 1 (AppleScript-ObjC) or Option 2 (JXA) for future-proof scripts. ## Xcode Sample Code[​](#xcode-sample-code "Direct link to Xcode Sample Code") If you are an app developer, you may find the following sample code useful for interacting with BusyCal. ### Finding the Default Calendar Application[​](#finding-the-default-calendar-application "Direct link to Finding the Default Calendar Application") Below is sample code to find the default calendar application and show an event in BusyCal. You can check the default calendar application like so: ``` + (NSString *)defaultICSHandlerBundleID { CFStringRef strRef = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, CFSTR("ics"), kUTTypeData); CFStringRef bundleID = LSCopyDefaultRoleHandlerForContentType(strRef, kLSRolesEditor); CFRelease(strRef); return [NSMakeCollectable(bundleID) autorelease]; } ``` If the bundle ID returned is “com.apple.ical” then Calendar is the default calendar application. If it is “com.busymac.busycal3” then BusyCal 3 is the default calendar application. ### URI Encoding a String[​](#uri-encoding-a-string "Direct link to URI Encoding a String") Below is a category on NSString for URI encoding a string: ``` @interface NSString (URIEncoding) - (NSString *)stringByURIEncoding; @end @implementation NSString (URIEncoding) - (NSString *)stringByURIEncoding { // same as -stringByAddingPercentEscapesUsingEncoding but escapes ‘/’ and ‘?’ const CFStringRef leaveUnescaped = NULL; const CFStringRef forceEscaped = CFSTR("!*'();:@&=+$,/?%#[]"); CFStringRef escapedStr = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef) self, leaveUnescaped, forceEscaped, kCFStringEncodingUTF8); return [NSMakeCollectable(escapedStr) autorelease]; } @end ``` ### Selecting an Event in BusyCal[​](#selecting-an-event-in-busycal "Direct link to Selecting an Event in BusyCal") All strings must be URI encoded with the -stringByURIEncoding method given above. ``` - (void)busycalShowEvent:(NSString *)eventTitle inCalendar:(NSString *)calendarName onDate:(NSDate *)occurrenceDate { NSString *occurrenceDateStr = @""; if (occurrenceDate != nil) { NSDateFormatter *formatter = [[NSDateFormatter new] autorelease]; [formatter setDateFormat:@"yyyy-MM-dd’T’HH:mm:ssZ"]; occurrenceDateStr = [formatter stringFromDate:occurrenceDate]; } NSString *url = [NSString stringWithFormat:@"busycalevent://find/%@/%@/%@", [calendarName stringByURIEncoding], [eventTitle stringByURIEncoding], [occurrenceDateStr stringByURIEncoding]]; [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]]; } ``` Here are some example URLs that you can paste into Safari for testing. Event: “Appliance Sale” on calendar “Store” at 2017-01-18 12:00 PM PST ``` busycalevent://find/Store/Appliance%20Sale/2017-01-18T12%3A00%3A00-0800 ``` Task: “My Task” on calendar “Test” at 2017-01-29 ``` busycalevent://find/Test/My%20To%20Do/2017-01-29T12%3A00%3A00-0000 ``` Undated Task: “Wash Car” on calendar “Chores” ``` busycalevent://find/Chores/Wash%20Car ``` ### Highlighting a Date in BusyCal[​](#highlighting-a-date-in-busycal "Direct link to Highlighting a Date in BusyCal") To highlight a date in BusyCal: ``` - (void)busycalShowDate:(NSDate *)date { NSString *dateStr = @""; if (date != nil) { NSDateFormatter *formatter = [[NSDateFormatter new] autorelease]; [formatter setDateFormat:@"yyyy-MM-dd"]; dateStr = [formatter stringFromDate:date]; } NSString *url = [NSString stringWithFormat:@"busycalevent://date/%@", [dateStr stringByURIEncoding]]; [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]]; } ``` Here is an example URL: ``` busycalevent://date/2017-05-31 ``` ### Forcing a Sync with All CalDAV Servers[​](#forcing-a-sync-with-all-caldav-servers "Direct link to Forcing a Sync with All CalDAV Servers") You can force BusyCal to perform a sync to ensure that it is in sync with the events in Calendar (or your app). To force a sync, pass one of the following URLs to BusyCal: Sync with all CalDAV servers (iCloud, Google Calendar, etc.): ``` busycalsync://caldav ``` Sync with all WebDAV servers: ``` busycalsync://webdav ``` ### Creating a New Event in BusyCal[​](#creating-a-new-event-in-busycal "Direct link to Creating a New Event in BusyCal") You can create a new event with a natural language string using the `busycalevent://new/` URL. It takes one parameter, which is a URI-encoded string. Like regular natural language strings entered into the Quick Event window in BusyCal, the URI-encoded string can contain an optional /calendar prefix or suffix, an optional “-” prefix to indicate a task, optional exclamation points (! = low, !! = medium, !!! = high) to indicate priority, and an optional URL in angle brackets (e.g., `<www.busymac.com>`). The string parameter must be URI-encoded with the -stringByURIEncoding method given above. ``` - (void)busycalCreateEvent:(NSString *)string url:(NSString *)urlParam inCalendar:(NSString *)calendarName { if (urlParam != nil) string = [string stringByAppendingFormat:@" <%@>", urlParam]; if (calendarName != nil) string = [string stringByAppendingFormat:@" /%@", calendarName]; NSString *url = [NSString stringWithFormat:@"busycalevent://new/%@", [string stringByURIEncoding]]; [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]]; } - (void)busycalCreateToDo:(NSString *)string priority:(NSInteger)priority url:(NSString *) urlParam inCalendar:(NSString *)calendarName { string = [@"-" stringByAppendingString:string]; while (priority-- > 0) string = [string stringByAppendingString:@"!"]; [self busycalCreateEvent:string url:urlParam inCalendar:calendarName]; } ``` Here are some example URLs that you can paste into Safari for testing. Event: “Lunch with Bob Tuesday at 1pm” on calendar “Work” with URL “apple.com” ``` busycalevent://new/Lunch%20with%20Bob%20Tuesday%20at%201pm%20%3Capple.com%3E%20%2FWork ``` Task: “Feed Fish” on calendar “Test” at 2016-06-29 with priority high ``` busycalevent://new/-Feed%20Fish%202016-06-29!!!%20%2FTest ``` Undated Task: “Wash Car” on calendar “Chores” ``` busycalevent://new/-Wash%20Car%20%2FChores ``` ### Calling a URL without Bringing BusyCal to the Foreground[​](#calling-a-url-without-bringing-busycal-to-the-foreground "Direct link to Calling a URL without Bringing BusyCal to the Foreground") To call the URL without bringing BusyCal to the foreground: ``` [[NSWorkspace sharedWorkspace] openURLs:[NSArray arrayWithObject:[NSURL URLWithString:urlString]] withAppBundleIdentifier:nil options:NSWorkspaceLaunchWithoutActivation | NSWorkspaceLaunchAsync additionalEventParamDescriptor:nil launchIdentifiers:NULL]; ``` ### Turning Do-Not-Disturb (DND) On and Off in BusyCal[​](#dnd "Direct link to Turning Do-Not-Disturb (DND) On and Off in BusyCal") Starting with v2022.3.2, you can turn DND on in BusyCal by opening the `busycaldnd://<minutes>` URL, replacing `<minutes>` with a number, e.g: ``` busycaldnd://15 ``` [Click here to Try](busycaldnd://15) To turn DND off, specify 0 as the number of minutes: ``` busycaldnd://0 ``` [Click here to Try](busycaldnd://0) ### Turning Settings On / Off[​](#settings "Direct link to Turning Settings On / Off") Starting with v2023.2.1, the following settings can be set via the terminal / using a script. #### Change the logging level[​](#change-the-logging-level "Direct link to Change the logging level") `busycalsetting://loglevel/<level>` URL, replacing `<level>` with a number, e.g: ``` Off = -2 Error = -1 Warn = 0 Info = 1 Detailed (Default) = 2 Verbose = 3 Low Level = 4 busycalsetting://loglevel/3 ``` [Click here to Try: Logging Level Detailed](busycalsetting://loglevel/2) #### Turn automatic crash reporting on / off[​](#turn-automatic-crash-reporting-on--off "Direct link to Turn automatic crash reporting on / off") `busycalsetting://crashreporting/<option>` URL, replacing `<option>` with a number, e.g: ``` Off = 0 On (Default) = 1 busycalsetting://crashreporting/1 ``` [Click here to Try: Turn reporting On](busycalsetting://crashreporting/1) --- # Archiving Old Events If you've accumulated a lot of data in your calendar over the years, it might be useful to remove old events to reduce the size of your calendar database, improve performance, and speed up syncing with a cloud service such as iCloud or Google. While BusyCal doesn't offer a direct "hide past events" feature (as hiding events can impact calendar integrity and search functionality), archiving provides an effective solution to achieve the same visual result while preserving your data. important Some services such as iCloud have fixed [quota limits](/docs/busycal/70630-using-busycal-with-icloud.md#quota-limitations) irrespective of how much storage you have purchased from them otherwise. Looking to archive old tasks instead? See [Archiving Old Tasks](/docs/busycal/archiving-old-tasks.md) for instructions on cleaning up completed tasks from Reminders and other task lists. ## How to Clean Up Your Calendar[​](#cleanup-calendar "Direct link to How to Clean Up Your Calendar") Maintaining a clean calendar is essential for optimal performance. If you're looking to hide past events from view, archiving is the recommended approach as it removes old events from your main calendar while keeping them accessible. Here are two approaches to clean up your calendar: 1. **Quick Archive Method** - For rapidly cleaning up your calendar and effectively hiding past events 2. **Selective Cleanup Method** - For more granular control of what you keep or remove ## Quick Summary[​](#quick-summary "Direct link to Quick Summary") A quick and easy way to archive calendars and hide past events from your daily view is to: * Use **File Menu > Export > Calendar File (.ics)** to save calendars to be exported as `.ics` * Next, use **File Menu > Import** to import these `.ics` files and create a new **On My Mac** calendar for them when prompted * Delete the original calendars when done * Uncheck the archived calendar in the sidebar to hide past events from view while keeping them accessible when needed This way you have essentially moved your entire calendar to an offline, on your device calendar and freed up space in your cloud account. By unchecking the archive calendar, you achieve the same effect as hiding past events without losing any data. ## Detailed Version[​](#detailed-version "Direct link to Detailed Version") With BusyCal's List view and Smart Filters you can quickly display a list of old events to archive or delete. Here's how: ### 1. Select the Calendars to Archive[​](#1-select-the-calendars-to-archive "Direct link to 1. Select the Calendars to Archive") ![Select Calendars](https://downloads.busymac.com/resources/img/busycal-mac/archive-sellist.png) In the left sidebar, check each of the calendars that contain events that you want to archive or delete. In addition, you must uncheck all the read-only calendars since you cannot delete events from a read-only calendar. These include: * Any shared calendars that are read-only (a crossed-out pencil icon appears next to the calendar name). * All calendars that appear under the Other heading (such as Birthdays, Anniversaries, subscriptions and Holiday calendars). ### 2. Display a Decade Date Range in List View[​](#2-display-a-decade-date-range-in-list-view "Direct link to 2. Display a Decade Date Range in List View") In List view, click the pop-up menu that appears next to the date navigation buttons on the right corner and set a date range of **Decade** (or 25 Years / 50 Years and so on). Then, use the single-arrow date navigation button to navigate a year at a time until the date range spans all the past events you want to archive or delete (e.g., 2007–2016). ![Drop Down](https://downloads.busymac.com/resources/img/busycal-mac/archivedateselection.png) ### 3. Create an Archive Smart Filter[​](#3-create-an-archive-smart-filter "Direct link to 3. Create an Archive Smart Filter") Create a smart filter that displays old events that match certain criteria, by choosing Filter > New Smart Filter and selecting the following options: ![Create Filter](https://downloads.busymac.com/resources/img/busycal-mac/archive-filter.png) This Smart Filter hides events that match the following criteria: * **start date is after the date mm/dd/yyyy** — Events with a start date after this date are hidden, so that only old events prior to this date are shown. Enter an end date for the events you want to archive (e.g., all events prior to 1/1/2012). * **is repeating** — Repeating events are hidden because deleting them would cause future repeating events to be deleted too. * **is meeting** — Meetings are hidden because deleting them would send out meeting cancellation or rejection notices to attendees and organizers. * **event type is undated to do** — Undated tasks are hidden; only events with dates are shown. Name the Smart Filter "Archive" and click OK to save the Smart Filter and invoke it. List view then displays only events that match the Smart Filter criteria. ### 4. View Old Events in List View and Prepare to Archive or Delete Them[​](#4-view-old-events-in-list-view-and-prepare-to-archive-or-delete-them "Direct link to 4. View Old Events in List View and Prepare to Archive or Delete Them") Once the Smart Filter is applied, use the navigation arrows to scroll a year at a time to make sure the date range spans all the past events you want to archive or delete (e.g., 2003-2012). At this point, you can either delete all the old events, or archive them by moving them to a local calendar. * If you want to delete the old events, go to step A. * If you want to archive the old events, skip to step B. note If you have a really huge calendar, you may want to display a date range of a year and perform the steps below for each year one at a time. #### A. Delete Old Events[​](#a-delete-old-events "Direct link to A. Delete Old Events") To delete all the old events that are currently being displayed, do the following: * Choose `Edit > Select All` (or press `⌘-A`) to select all the events in the list. * Press Delete to delete all the selected events. danger This permanently deletes all the selected events and cannot be undone! * Wait for BusyCal to finish syncing with your server (e.g., iCloud or Google) while it deletes the old events. Be patient, as it may take a while. #### B. Archive Old Events[​](#b-archive-old-events "Direct link to B. Archive Old Events") You can archive the old events by moving them to a local calendar, as follows: * Create a new local calendar by choosing `File > New Calendar > On My Mac`, and name it `Archive.` * Choose `Edit > Select All` (or press `⌘-A`) to select all the events in the list. * Control-click one of the events and choose Calendar > Archive from the contextual menu. This moves all the selected events to the new local Archive calendar. danger This permanently moves the events to the new local Archive calendar and cannot be undone! * Wait for BusyCal to finish syncing with your server (e.g., iCloud or Google) while it moves the events from the server and to the local calendar. Be patient, it may take a while. ![Move Selection](https://downloads.busymac.com/resources/img/busycal-mac/archive-menu.png) The events on the Archive calendar are now stored locally and are no longer syncing with the server, which should speed up syncing with the server. You can leave the local Archive calendar in BusyCal and simply uncheck it in the sidebar to hide past events from your regular calendar views. This effectively achieves the goal of hiding past events while keeping them available for reference when needed. Alternatively, you can export it for safekeeping and then delete it from BusyCal. If you want to export and delete it, here's how: * Select the Archive calendar in the left sidebar. * Choose **File > Export > Calendar File (.ics)** and save the Archive calendar as a .ics file to your Desktop. * After exporting the file, Control-click the Archive calendar in the left sidebar and choose Delete from the contextual menu. --- # Syncing BusyCal with an iOS Device BusyCal can sync with the built-in Calendar and Reminders apps on iPhone and iPad, as well as with the iOS version of BusyCal. This allows you to keep your calendars and tasks synchronized across all your devices. ## Using BusyCal on Multiple Devices[​](#multiple-devices "Direct link to Using BusyCal on Multiple Devices") For users who want to maintain the same calendar across multiple devices, BusyCal offers seamless synchronization between Mac, iPhone, and iPad. This ensures your schedule remains consistent no matter which device you're using. Key benefits of using BusyCal across multiple devices: * **Real-time updates**: Changes made on one device appear on all others * **Consistent experience**: Similar interface on Mac and iOS makes switching between devices intuitive * **Seamless workflows**: Start planning on your Mac and continue on your iPhone or iPad * **Offline access**: Access your calendar even when offline, with changes syncing when connection is restored ### Sync Requirements[​](#sync-requirements "Direct link to Sync Requirements") When using BusyCal on multiple devices, note these important points: * BusyCal can sync with an iOS device only through a server (e.g., iCloud, Google, Exchange, Fastmail, or CalDAV). * You cannot sync with an iOS device via iTunes. * Events in BusyCal sync with the built-in Calendar app on iOS (or with BusyCal for iOS). * Tasks in BusyCal sync with the built-in Reminders app on iOS (or with BusyCal for iOS). You can sync BusyCal with your iOS device through one or more of the following servers: * [Syncing BusyCal with an iOS device through iCloud](#icloud) * [Syncing BusyCal with an iOS device through Google](#google) * [Syncing BusyCal with an iOS device through Outlook](#outlook) * [Syncing BusyCal with an iOS device through Exchange](#exchange) * [Syncing BusyCal with an iOS device through CalDAV](#caldav) ## Syncing BusyCal with an iOS device through iCloud[​](#icloud "Direct link to Syncing BusyCal with an iOS device through iCloud") You can sync BusyCal with an iOS device through iCloud. After [configuring BusyCal to sync with your iCloud account](/docs/busycal/70630-using-busycal-with-icloud.md#syncing), you must configure your iOS device to sync with the same iCloud account. To sync Calendar and Reminders on your iOS device with iCloud: 1. On your Home screen, tap Settings. 2. Tap your Apple Account name > iCloud. 3. Turn on Calendars and Reminders. ## Syncing BusyCal with an iOS device through Google[​](#google "Direct link to Syncing BusyCal with an iOS device through Google") You can sync BusyCal with an iOS device through Google. note BusyCal syncs both events and Google Task Lists through Google. Google Task Lists have platform limits: only **title**, **due date**, and **notes** are synced by Google. Properties like **due time**, **recurrence**, **alarms**, and **priority** are not synced by Google and are available between BusyCal clients using [Extended Sync](/docs/busycal/144591-syncing-extended-task-properties.md). For full details, see [Using BusyCal with Google > Calendar Limitations](/docs/busycal/70636-using-busycal-with-google.md#calendar-limitations). ### Syncing Google Calendars with an iOS Device[​](#google-sync "Direct link to Syncing Google Calendars with an iOS Device") After [configuring BusyCal to sync with your Google account](/docs/busycal/70636-using-busycal-with-google.md#syncing), you must configure your iOS device to sync with the same Google account. To sync Calendar on your iOS device with Google: 1. On your Home screen, tap Settings. 2. Tap Apps > Calendar > Calendar Accounts > Add Account > Google. 3. Enter your Google account credentials and complete the sign-in flow. 4. Turn on Calendars, and then tap Save. ### Syncing Shared Google Calendars with an iOS Device[​](#google-shared "Direct link to Syncing Shared Google Calendars with an iOS Device") By default, shared calendars aren’t automatically synced with your iOS device. To sync shared calendars, go to the following URL, log in to your Google account, select the calendars you want to sync with your iOS device, and click Save. <https://www.google.com/calendar/iphoneselect> ## Syncing BusyCal with an iOS device through Outlook / Office 365[​](#outlook "Direct link to Syncing BusyCal with an iOS device through Outlook / Office 365") You can sync BusyCal with an iOS device through Office 365 / Outlook. After [configuring BusyCal to sync with your O365 account](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md), you must configure your iOS device to sync with the same O365 account. ## Syncing BusyCal with an iOS device through Exchange[​](#exchange "Direct link to Syncing BusyCal with an iOS device through Exchange") You can sync BusyCal with an iOS device through Exchange. After [configuring BusyCal to sync with your Exchange account](/docs/busycal/70642-using-busycal-with-exchange-office-365.md#syncing), you must configure your iOS device to sync with the same Exchange account. To sync your iOS device with Exchange: 1. On your Home screen, tap Settings. 2. Tap Apps > Calendar > Calendar Accounts > Add Account > Exchange. 3. Enter your Exchange email address and password, and then tap Next. 4. Turn on Calendars and Reminders, and then tap Save. ## Syncing BusyCal with an iOS device through CalDAV[​](#caldav "Direct link to Syncing BusyCal with an iOS device through CalDAV") You can sync BusyCal with an iOS device through a CalDAV Server. After [configuring BusyCal to sync with your CalDAV server](/docs/busycal/70647-using-busycal-with-caldav.md#syncing), you must configure your iOS device to sync with the same CalDAV Server. To sync the Calendar and Reminders apps on your iOS device with a CalDAV server: 1. On your Home screen, tap Settings. 2. Tap Apps > Calendar > Calendar Accounts > Add Account > Other > Add CalDAV Account. 3. Enter the CalDAV Server URL (e.g., myserver.com), username, and password, and then tap Next. 4. Turn on Calendars and Reminders, and then tap Save. ## Syncing BusyCal with an iOS device through Fastmail[​](#fastmail "Direct link to Syncing BusyCal with an iOS device through Fastmail") You can sync BusyCal with an iOS device through Fastmail. After configuring BusyCal to sync with your Fastmail account, you must configure your iOS device to sync with the same Fastmail account. To sync the Calendar and Reminders apps on your iOS device with Fastmail: 1. On your Home screen, tap Settings. 2. Tap Apps > Calendar > Calendar Accounts > Add Account > Other > Add CalDAV Account. 3. Enter the Fastmail Server URL, email address, and password, and then tap Next. 4. Turn on Calendars and Reminders, and then tap Save. ## Syncing BusyCal with an iOS device through Fruux[​](#fruux "Direct link to Syncing BusyCal with an iOS device through Fruux") important As per our knowledge, Fruux has stopped providing support to its customers for the last several years and is no longer actively supported. We would strongly recommend that you switch to a different service. You can sync BusyCal with an iOS device through Fruux. After [configuring BusyCal to sync with your Fruux account](/docs/busycal/70651-using-busycal-with-fruux.md#syncing), you must configure your iOS device to sync with the same Fruux account. To sync the Calendar and Reminders apps on your iOS device with Fruux: 1. On your Home screen, tap Settings. 2. Tap Apps > Calendar > Calendar Accounts > Add Account > Other > Add CalDAV Account. 3. Enter the Fruux Server URL (dav.fruux.com), email address, and password, and then tap Next. 4. Turn on Calendars and Reminders, and then tap Save. --- # AppleScript Support BusyCal includes an AppleScript automation API. You can list accounts and calendars, search events and tasks by date or keyword, check free/busy availability, and create, update, or delete items, all from a script. Changes made through the API stay in sync with the BusyCal UI and your calendar accounts. note BusyCal's AppleScript support is primarily data-oriented. You can read and write calendar data from scripts. The one exception is [`open item`](#openitem), which reveals a specific event or task in the BusyCal window. Requires **BusyCal version 2026.1.3** or later. tip If you use Claude Desktop, you can also control BusyCal through natural language using the [BusyCal MCP extension](/docs/busycal/70624-mcp.md). It uses the same automation engine under the hood. ## Getting Started[​](#getting-started "Direct link to Getting Started") Open **Script Editor** (in Applications > Utilities) and paste any of the [examples](#examples) below to try them out. All commands are called inside a `tell application "BusyCal"` block. Each command uses labeled parameters and returns a record or list of records. ``` tell application "BusyCal" set results to query events given searchText:"review", startDate:(current date), endDate:((current date) + (7 * days)), mode:"uiConsistent", fetchLimit:20 end tell ``` You can also search across multiple item types at once with `query items`: ``` tell application "BusyCal" set rangeStart to current date set rangeEnd to rangeStart + (3 * days) set results to query items given searchText:"review", startDate:rangeStart, endDate:rangeEnd, itemTypes:"event, task, journal", searchFields:"title", mode:"uiConsistent", fetchLimit:25 end tell ``` To check free/busy availability within your working hours: ``` tell application "BusyCal" set dayStart to current date set freeBusyDays to query availability given startDate:dayStart, endDate:(dayStart + (2 * days)), kind:"both", minimumDurationMinutes:30, respectWorkingHours:true end tell ``` To find your next 60-minute free slot: ``` tell application "BusyCal" set nextSlot to find next available given minimumDurationMinutes:60, respectWorkingHours:true end tell ``` You can also run scripts from **Terminal** using `osascript`: ``` osascript -e 'tell application "BusyCal" to list accounts' ``` For multi-line scripts, save the script to a file (e.g. `myscript.applescript`) and run: ``` osascript myscript.applescript ``` Parameter labels Parameter names are flexible: `startDate`, `start date`, and `start_date` all work. This guide uses camelCase (e.g. `startDate`) for consistency. ## Command Summary[​](#command-summary "Direct link to Command Summary") **Utility commands:** * [`get URL`](#get-url): open a BusyCal URL command **Read commands:** * [`list accounts`](#listaccounts): list calendar accounts * [`list calendars`](#listcalendars): list calendars, optionally filtered by account * [`list calendar sets`](#listcalendarsets) lists your saved Calendar Sets * [`query items`](#queryitems): search across events, tasks, journals, graphics, and stickies * [`query events`](#queryevents): search and filter events * [`query tasks`](#querytasks): search and filter tasks * [`query availability`](#queryavailability): get free/busy time slots for a date range * [`find next available`](#findnextavailable): find the next free time slot * [`selected items`](#selecteditems): return the items currently selected in the BusyCal main window **Navigation:** * [`open item`](#openitem): reveal an event or task in the BusyCal window **Reference:** * [`Task Duration`](#task-duration): set or clear a task's duration and read it from task records * [`Timezone Fields`](#timezone-fields): per-field timezone metadata on returned records **Write commands:** * [`create natural language item`](#createnaturallanguageitem) / `quick add item`: create an event, task, or journal using natural-language text * [`create event`](#createevent): create a new event * [`create task`](#createtask): create a new task * [`create task calendar`](#createtaskcalendar) creates a new task calendar * [`duplicate item`](#duplicateitem): duplicate an event or task, optionally to a different calendar * [`move item`](#moveitem) moves an event or task to another calendar * [`move event`](#moveevent): reschedule an event * [`reschedule event`](#rescheduleevent) changes an event's start, end, or all-day state * [`update event`](#updateevent): change an event's title, location, notes, URL, tags, reminders, or travel time * [`update task`](#updatetask): change a task's title, notes, URL, tags, reminders, or duration * [`defer task`](#defertask): change a task's due date * [`complete task`](#completetask): mark a task as complete * [`uncomplete task`](#uncompletetask) / `reopen task`: mark a completed task as not completed * [`delete event`](#deleteevent): delete an event * [`delete task`](#deletetask): delete a task ## Utility[​](#utility "Direct link to Utility") ### get URL[​](#get-url "Direct link to get URL") Opens a `busycal://...` URL, just like clicking a BusyCal link. | Argument | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------------------------------------ | | Direct parameter | String | Yes | The URL to open, for example `busycal://new` or other supported BusyCal URL actions. | ## Identity Fields[​](#identity-fields "Direct link to Identity Fields") Query and create commands return records with the following identity fields: | Field | Description | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------ | | `id` | Unique identifier for this occurrence. Use this value as `itemID` in update, move, defer, complete, uncomplete, and delete commands. | | `seriesUID` | Shared identifier across all occurrences of a recurring item. | | `occurrenceDate` | The date of this particular occurrence. | | `managedObjectURI` | Internal object reference. | note Because `id` and `isCompleted` are AppleScript reserved words, wrap them in pipes when reading from a record: `|id| of someRecord`, `|isCompleted| of someRecord`. ## Accounts and Calendars[​](#accounts-and-calendars "Direct link to Accounts and Calendars") ### list accounts[​](#listaccounts "Direct link to list accounts") Returns a list of account records. By default, BusyCal returns only accounts that are currently enabled. Set `includeDisabled:true` if you also want disabled accounts. | Argument | Type | Required | Description | | ----------------- | ------- | -------- | -------------------------------------------- | | `includeDisabled` | Boolean | No | Include disabled accounts. Default: `false`. | **Returned fields:** `id`, `title`, `serviceName`, `serviceType`, `isEnabled`, `isPendingAddition` ### list calendars[​](#listcalendars "Direct link to list calendars") Returns a list of calendar records, optionally filtered to a single account. By default, BusyCal only returns calendars whose owning account is currently enabled. Set `includeDisabledAccounts:true` if you also want calendars from disabled accounts. | Argument | Type | Required | Description | | ------------------------- | ------- | -------- | ------------------------------------------------------------ | | `accountID` | String | No | Limit results to calendars belonging to this account. | | `includeDisabledAccounts` | Boolean | No | Include calendars from disabled accounts. Default: `false`. | | `includeWebDAV` | Boolean | No | Include WebDAV subscription calendars. Default: `true`. | | `includeContactCalendars` | Boolean | No | Include birthday and anniversary calendars. Default: `true`. | | `includeHolidayCalendars` | Boolean | No | Include holiday calendars. Default: `true`. | **Returned fields:** `calendarID`, `accountID`, `title`, `isSubscribed`, `supportsEvents`, `supportsTasks`, `isDefaultForEvents`, `isDefaultForTasks`, `isWritable`, `color` ### list calendar sets[​](#listcalendarsets "Direct link to list calendar sets") Returns your saved Calendar Sets, with the built-in All Calendars set first and the rest in the order you arranged them. The command takes no arguments. **Returned fields:** `id`, `title`, `calendarIDs`, `sortOrder` The `calendarIDs` values match the `calendarID` values from [`list calendars`](#listcalendars), so you can use a set to narrow a later query to that set's calendars. See [List your Calendar Sets](#example-list-calendar-sets). On the Mac, a Calendar Set is a **Smart Filter** saved with its **Remember calendar set (visible calendars)** option turned on. Smart Filters saved without this option are not offered as Calendar Sets to Siri, Shortcuts, the Focus filter, AppleScript, or the Claude Desktop extension. See [Smart Filters](/docs/busycal/70612-smart-filters.md#calendar-sets). ## Querying Items[​](#querying "Direct link to Querying Items") ### query items[​](#queryitems "Direct link to query items") Searches across events, tasks, journals, graphics, and stickies in a single call. | Argument | Type | Required | Description | | -------------- | -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `searchText` | String | No | Text to search for. Omit or pass an empty string to list items by date only. | | `searchFields` | String | No | Comma-separated fields to search: `"title"`, `"notes"`, `"tags"`. When omitted, BusyCal searches all text fields. | | `calendarID` | String | No | Limit results to a specific calendar. Use the `calendarID` value from [`list calendars`](#listcalendars). | | `startDate` | Date or String | No | Start of date range. Returns items on or after this date. Accepts AppleScript dates or strings like `"2026-03-14"`, `"2026-03-14 15:30"`, or `"2026-03-14T15:30:00"`. | | `endDate` | Date or String | No | End of date range. If `startDate` is omitted, BusyCal uses the current time as the start. Day-only strings like `"2026-03-14"` include the full day. | | `itemTypes` | String | No | Comma-separated types to include: `"event"`, `"task"`, `"journal"`, `"graphic"`, `"sticky"`. When omitted, all types are returned. | | `mode` | String | No | `"uiConsistent"` (default) or `"rawExhaustive"`. See [Query Modes](#query-modes). | | `fetchLimit` | Number | No | Maximum number of results. Set a positive number to limit results, or `0` for unlimited. When both `searchText` and `endDate` are omitted, the default limit is 100. Other queries have no default cap. | **Returned fields:** `id`, `seriesUID`, `type`, `title`, `calendarID`, `occurrenceDate`, `managedObjectURI`, `startDate`, `endDate`, `dueDate`, `location`, `locationURL`, `url`, `tags`, `myTags`, `notes`, `alarms`, `travelTime`, `durationMinutes`, `isCompleted`, `priority`, `isStarred`, `isFloating`, `timeZoneIdentifier`, `occurrenceTimeZoneIdentifier`, `startTimeZoneIdentifier`, `endTimeZoneIdentifier`, `dueTimeZoneIdentifier` The `type` field tells you what kind of item each record is (e.g. `"event"`, `"task"`, `"journal"`). Fields like `dueDate`, `startDate`, `endDate`, `location`, `locationURL`, `url`, `tags`, `myTags`, `notes`, `travelTime`, and `isCompleted` are only present when they apply to that item type. `travelTime` is present on event records only (see [Travel Time](#travel-time)). `isFloating` tells you whether BusyCal currently treats the item as floating time. For fixed-time items, BusyCal returns per-field timezone identifiers. See [Timezone Fields](#timezone-fields). `durationMinutes` is present on task records only. It is `0` when the task has no custom duration. See [Task Duration](#task-duration) for availability and usage. ### query events[​](#queryevents "Direct link to query events") Returns a list of event records matching the given criteria. | Argument | Type | Required | Description | | -------------- | -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `searchText` | String | No | Text to search for. Omit or pass an empty string to list events by date only. | | `searchFields` | String | No | Comma-separated fields to search: `"title"`, `"notes"`, `"tags"`. When omitted, BusyCal searches all text fields. | | `calendarID` | String | No | Limit results to a specific calendar. | | `startDate` | Date or String | No | Start of date range. Returns events on or after this date. Accepts AppleScript dates or strings like `"2026-03-14"`. | | `endDate` | Date or String | No | End of date range. If `startDate` is omitted, BusyCal uses the current time as the start. Day-only strings include the full day. | | `mode` | String | No | `"uiConsistent"` (default) or `"rawExhaustive"`. See [Query Modes](#query-modes). | | `fetchLimit` | Number | No | Maximum number of results. Set a positive number to limit results, or `0` for unlimited. When both `searchText` and `endDate` are omitted, the default limit is 100. Other queries have no default cap. | **Returned fields:** `id`, `seriesUID`, `type`, `title`, `calendarID`, `occurrenceDate`, `managedObjectURI`, `startDate`, `endDate`, `location`, `locationURL`, `url`, `tags`, `myTags`, `notes`, `alarms`, `travelTime`, `isFloating`, `timeZoneIdentifier`, `occurrenceTimeZoneIdentifier`, `startTimeZoneIdentifier`, `endTimeZoneIdentifier` ### query tasks[​](#querytasks "Direct link to query tasks") Returns a list of task records matching the given criteria. Takes the same arguments as [`query events`](#queryevents). **Returned fields:** `id`, `seriesUID`, `type`, `title`, `calendarID`, `occurrenceDate`, `managedObjectURI`, `dueDate`, `location`, `locationURL`, `url`, `tags`, `myTags`, `notes`, `alarms`, `durationMinutes`, `isCompleted`, `priority`, `isStarred`, `isFloating`, `timeZoneIdentifier`, `occurrenceTimeZoneIdentifier`, `dueTimeZoneIdentifier` ## Availability[​](#availability "Direct link to Availability") These commands return free/busy time slots instead of individual items. They accept the same [date formats](#date-filtering) as the query commands. When `respectWorkingHours` is `true` (the default), results are limited to: * your configured working days * your `Day starts at` and `Day ends at` times (set in BusyCal > Settings > General) When `calendarIDs` is omitted, BusyCal checks availability across all accounts, using: * event-capable calendars only * holiday and WebDAV subscription calendars are excluded If you pass specific `calendarIDs`, BusyCal uses exactly those calendars, even if they are holiday or subscription calendars. ### query availability[​](#queryavailability "Direct link to query availability") Returns one record per day showing free and/or busy time slots. | Argument | Type | Required | Description | | ------------------------ | -------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `startDate` | Date or String | No | Start of the range. Defaults to today. Accepts AppleScript dates or strings like `"2026-03-14"` or `"2026-03-14T15:30:00"`. | | `endDate` | Date or String | No | End of the range. Defaults to the same day as `startDate`. Day-only strings like `"2026-03-14"` include the full day. | | `calendarIDs` | String | No | Comma-separated calendar identifiers from [`list calendars`](#listcalendars). When omitted, BusyCal uses its [default availability scope](#availability). | | `kind` | String | No | What to return: `"free"` (default), `"busy"`, or `"both"`. | | `minimumDurationMinutes` | Number | No | Only return free slots at least this many minutes long. Does not filter busy slots. | | `respectWorkingHours` | Boolean | No | When `true` (default), limits results to your configured working days and hours. | | `busyTypes` | String | No | Comma-separated states to treat as busy: `"busy"`, `"tentative"`, `"outOfOffice"`, `"workingElsewhere"`, `"unknown"`. When omitted, all non-free states count as busy. | | `mode` | String | No | `"uiConsistent"` (default) or `"rawExhaustive"`. See [Query Modes](#query-modes). | Each day record contains: | Field | Description | | -------------------- | ---------------------------------------------------------------------------------------------------- | | `date` | The start of this day. Interpret in the returned `timeZoneIdentifier`. | | `timeZoneIdentifier` | BusyCal's active timezone identifier. Use this to interpret all dates in the record. | | `windowStartDate` | Start of the working/available window for this day. | | `windowEndDate` | End of the working/available window for this day. | | `isWorkingDay` | `true` if this day is a configured working day. | | `busySpans` | List of busy time slots (each with `startDate`, `endDate`, `durationMinutes`, `timeZoneIdentifier`). | | `freeSpans` | List of free time slots (each with `startDate`, `endDate`, `durationMinutes`, `timeZoneIdentifier`). | Example: ``` tell application "BusyCal" set freeBusyDays to query availability given startDate:"2026-03-17", endDate:"2026-03-19", kind:"both", minimumDurationMinutes:30, respectWorkingHours:true end tell ``` ### find next available[​](#findnextavailable "Direct link to find next available") Finds the first free time slot that is long enough, or returns `missing value` if none exists in the range. | Argument | Type | Required | Description | | ------------------------ | -------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `startDate` | Date or String | No | Start searching from this time. Defaults to now. Accepts the same [date formats](#date-filtering) as [`query availability`](#queryavailability). | | `endDate` | Date or String | No | Stop searching at this time. When omitted, the search runs through the end of the seventh calendar day counted from the start day. Day-only strings like `"2026-03-14"` include the full day. | | `calendarIDs` | String | No | Comma-separated calendar identifiers from [`list calendars`](#listcalendars). When omitted, BusyCal uses its [default availability scope](#availability). | | `minimumDurationMinutes` | Number | No | Minimum length of the free slot in minutes. Default: `30`. | | `respectWorkingHours` | Boolean | No | When `true` (default), only looks within your configured working days and hours. | | `busyTypes` | String | No | Comma-separated states to treat as busy: `"busy"`, `"tentative"`, `"outOfOffice"`, `"workingElsewhere"`, `"unknown"`. When omitted, all non-free states count as busy. | | `mode` | String | No | `"uiConsistent"` (default) or `"rawExhaustive"`. See [Query Modes](#query-modes). | **Returned fields:** `startDate`, `endDate`, `durationMinutes`, `timeZoneIdentifier` Example: ``` tell application "BusyCal" set nextSlot to find next available given startDate:"2026-03-17 09:00", endDate:"2026-03-20 18:00", minimumDurationMinutes:60, respectWorkingHours:true end tell ``` ### Query Modes[​](#query-modes "Direct link to Query Modes") | Mode | Behavior | | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | `uiConsistent` | Returns items matching what you see in BusyCal - respects checked/unchecked calendars and visibility settings. This is the default. | | `rawExhaustive` | Returns all items regardless of visibility, including unchecked calendars, disabled accounts, hidden events, declined meetings, and canceled events. | ### Date Filtering[​](#date-filtering "Direct link to Date Filtering") All query and availability commands support flexible date ranges: * **Start date only**: query commands return items on or after that date. [`query availability`](#queryavailability) ends at the following midnight, and [`find next available`](#findnextavailable) searches through the end of the seventh calendar day counted from the start day. * **End date only**: query commands start at the current time, and so does [`find next available`](#findnextavailable). [`query availability`](#queryavailability) starts at the beginning of today. * **Both start and end**: returns only what falls within that window. You can pass native AppleScript dates or date strings in these formats: `"2026-03-14"`, `"2026-03-14 15:30"`, `"2026-03-14T15:30:00"`, `"2026-03-14 15:30:00"`, `"2026-03-14T15:30:00-05:00"`, `"2026-03-14T15:30:00Z"`, or `"2026-03-14 15:30:00 +0400"`. A day-only `endDate` like `"2026-03-14"` includes the entire day. For create, move, and defer commands, BusyCal interprets date strings this way: * Strings **without** a time zone (for example `"2026-03-17T14:00:00"`) are treated as local wall-clock times in BusyCal's active app time zone. If you have overridden the app's time zone in BusyCal, that override is used. Otherwise BusyCal uses your current local time zone. * Strings **with** `Z` or an explicit offset (for example `"2026-03-17T14:00:00+04:00"` or `"2026-03-17 14:00:00 +0400"`) are treated as fixed-time timestamps. BusyCal preserves that absolute instant instead of reinterpreting it as floating time. * Native AppleScript `date` values also preserve the exact instant AppleScript resolved before handing it to BusyCal. * For a single `create event` call, keep `startDate` and `endDate` in the same style. In other words, don't mix a native AppleScript `date` or explicit-offset timestamp with an unzoned local-time string in the same request. * Returned event and task records include `isFloating` and, for fixed-time items, per-field timezone identifiers so your script can tell which behavior BusyCal applied. See [Timezone Fields](#timezone-fields) for details. ## Relative Alarms[​](#relative-alarms "Direct link to Relative Alarms") BusyCal's automation commands support relative reminders via the `alarms` parameter: * **Create** commands (`create event`, `create task`): <!-- --> * omit `alarms` to keep BusyCal's normal default reminders * pass a list such as `{-60, -15}` to create exactly those reminders instead * **Update** commands (`update event`, `update task`): <!-- --> * omit `alarms` to leave reminders unchanged * pass `{}` to clear all reminders * pass a non-empty list such as `{-30}` to add those reminder offsets if they are not already present Values are signed relative minutes: * `-15`: 15 minutes before * `-1440`: 1 day before BusyCal continues to respect the capabilities of the underlying account. If a service cannot store a requested reminder remotely, BusyCal automatically falls back to a local reminder instead. ## Travel Time[​](#travel-time "Direct link to Travel Time") An event can carry a travel time, the number of minutes you need to get there before it starts. Both the `travelTime` argument and the `travelTime` field in returned records are whole minutes. Every event record includes `travelTime`, and the value is `0` when the event has no travel time. Task records do not include it. * `create event`: omit `travelTime` for no travel time, or pass a positive number of minutes. * `update event`: omit `travelTime` to leave it unchanged, pass `0` to remove it, or pass a positive number of minutes to set it. Negative values are rejected. For a recurring event, `scope` applies the same way it does to the other update fields. Travel time applies to timed events only. All-day events reject it, and so do events on Apple Calendar accounts, because that account type does not store travel time. In both cases the command returns an error and the event is left as it was. Setting travel time does not move the event's start time and does not change its reminders. Requires **BusyCal version 2026.3.2** or later. ``` tell application "BusyCal" set matches to query events given searchText:"Client call", startDate:(current date), fetchLimit:1 if (count of matches) > 0 then set firstMatch to item 1 of matches -- Give the event 30 minutes of travel time set updatedEvent to update event given itemID:(|id| of firstMatch), scope:"all", travelTime:30 log "Travel time: " & (travelTime of updatedEvent) -- 30 end if end tell ``` The starting location and the Time to Leave alert are set in BusyCal itself, not through AppleScript. See [Locations, Maps & Travel Time](/docs/busycal/70603-locations-maps-travel-time.md#travel-time) for how BusyCal calculates travel time. ## Task Duration[​](#task-duration "Direct link to Task Duration") Use `durationMinutes` with [`create task`](#createtask) or [`update task`](#updatetask) to set how long a task should take. Changing the duration does not change the task's due date or time. note Task duration through AppleScript is coming in the next BusyCal update. Earlier builds do not accept the `durationMinutes` argument or include it in task records. * On creation, omit `durationMinutes` to use BusyCal's normal default, or pass a positive whole number of minutes. * On update, omit it to keep the current duration. Pass `0` to remove the custom duration and use BusyCal's default display length. * Negative values and fractions are rejected. Setting `0` is also allowed on creation. Task records include `durationMinutes`, including `0` when no custom duration is set. Existing durations stored with seconds are rounded to the nearest minute when read. This applies to task records returned by queries, creation, updates, and selection. Event records do not include this task field; use the event's start and end times instead. The calendar account must support task durations, or [Sync Extended Task Properties](/docs/busycal/144591-syncing-extended-task-properties.md) must be enabled in BusyCal. Todoist tasks also need a due date and time. On a repeating task, changing the duration requires `scope:"one"`. This edits the recurring task itself and keeps its repeat rule. Omitting the scope defaults to `"all"`, which is rejected for this change. ``` set dueDateValue to (current date) + (1 * days) set hours of dueDateValue to 14 set minutes of dueDateValue to 0 set seconds of dueDateValue to 0 tell application "BusyCal" set createdTask to create task given title:"Prepare slides", dueDate:dueDateValue, durationMinutes:45 set taskID to |id| of createdTask -- Change the duration without moving the due time set changedTask to update task given itemID:taskID, scope:"one", durationMinutes:30 log "Duration: " & (|durationMinutes| of changedTask) -- 30 -- Use BusyCal's default task display length again set clearedTask to update task given itemID:taskID, scope:"one", durationMinutes:0 log "Custom duration: " & (|durationMinutes| of clearedTask) -- 0 end tell ``` ## Timezone Fields[​](#timezone-fields "Direct link to Timezone Fields") Returned records include timezone metadata so your script can tell whether BusyCal stored an item as floating time or as a fixed-time instant with a specific timezone. | Field | Present on | Description | | ------------------------------ | ---------- | -------------------------------------------------------------------------------------------------------- | | `isFloating` | All items | `true` when BusyCal treats the item as floating (local wall-clock) time. | | `occurrenceTimeZoneIdentifier` | All items | Timezone for the occurrence date, when stored. | | `startTimeZoneIdentifier` | Events | Timezone for the start date, when stored. | | `endTimeZoneIdentifier` | Events | Timezone for the end date, when stored. | | `dueTimeZoneIdentifier` | Tasks | Timezone for the due date, when stored. | | `timeZoneIdentifier` | All items | Compatibility alias. Older scripts may use this; new scripts should use the per-field identifiers above. | An event whose start and end are in different timezones (for example a flight departing in one timezone and arriving in another) will return different values for `startTimeZoneIdentifier` and `endTimeZoneIdentifier`. UTC timestamps return `"GMT"` as the timezone identifier. ## Creating Events and Tasks[​](#creating "Direct link to Creating Events and Tasks") ### create natural language item[​](#createnaturallanguageitem "Direct link to create natural language item") Creates an event, task, or journal by passing natural-language text through BusyCal's quick-entry parser, the same parser used by the Quick Entry window in BusyCal. Returns the created item record. You can call this command using either AppleScript name: * `create natural language item` * `quick add item` | Argument | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------------------------- | | `text` | String | Yes | Natural-language quick-entry text, such as `"Lunch with John tomorrow at 2pm"` or `"Finish report Friday"`. | | `itemType` | String | Yes | The type of item to create: `"event"`, `"task"`, or `"journal"`. | | `calendarID` | String | No | Target calendar. If omitted, BusyCal uses its default calendar for the requested item type. | | `notes` | String | No | Notes to attach to the item after parsing. | **Returned fields:** Same as the item's query result: `id`, `seriesUID`, `type`, `title`, `calendarID`, `occurrenceDate`, `managedObjectURI`, plus date, alarm, and timezone fields appropriate to the item type. ### create event[​](#createevent "Direct link to create event") Creates a new event and returns the created event record. | Argument | Type | Required | Description | | ------------------------- | --------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `title` | String | Yes | Event title. | | `startDate` | Date or String | Yes | Event start date and time. A date-only value like `"2026-04-14"` creates an all-day event. Accepts AppleScript dates or unzoned wall-clock strings. For string inputs in a specific named time zone, omit any embedded offset and pair the value with `startTimeZoneIdentifier`. | | `endDate` | Date or String | No | Event end date and time. If omitted, BusyCal uses a default duration. For all-day events, a date-only value is the inclusive final day, so `startDate:"2026-04-14"` with `endDate:"2026-04-19"` runs through April 19. Accepts AppleScript dates or unzoned wall-clock strings. For string inputs in a specific named time zone, omit any embedded offset and pair the value with `endTimeZoneIdentifier`. | | `startTimeZoneIdentifier` | String | No | IANA time zone identifier for the timed `startDate`, such as `"America/Los_Angeles"`. Omit to use BusyCal's current app time zone. | | `endTimeZoneIdentifier` | String | No | IANA time zone identifier for the timed `endDate`, such as `"America/New_York"`. Omit to use BusyCal's current app time zone. | | `calendarID` | String | No | Target calendar. If omitted, uses the default calendar. | | `allDay` | Boolean | No | Set to `true` for an all-day event. For all-day events, prefer date-only `startDate`/`endDate` values. | | `location` | String | No | Event location, such as `"Conference Room B"` or `"1 Apple Park Way, Cupertino, CA 95014"`. | | `alarms` | List of Numbers | No | Relative reminder minutes, such as `{-60, -15}`. Only include when reminders were explicitly requested. Omit to keep BusyCal's default reminders. | | `travelTime` | Integer | No | Minutes of travel time before the event starts. Omit for no travel time. Timed events only. See [Travel Time](#travel-time). | | `notes` | String | No | Event notes. | **Returned fields:** `id`, `seriesUID`, `calendarID`, `managedObjectURI`, `occurrenceDate`, `title`, `startDate`, `endDate`, `location`, `locationURL`, `url`, `tags`, `myTags`, `notes`, `alarms`, `travelTime`, `isFloating`, `timeZoneIdentifier`, `occurrenceTimeZoneIdentifier`, `startTimeZoneIdentifier`, `endTimeZoneIdentifier` ### create task[​](#createtask "Direct link to create task") Creates a new task and returns the created task record. | Argument | Type | Required | Description | | ----------------------- | --------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `title` | String | Yes | Task title. | | `dueDate` | Date or String | No | Due date and time. If omitted, creates an undated task. A date-only value like `"2026-04-14"` creates an all-day task due that day. Accepts AppleScript dates or unzoned wall-clock strings. For timed string inputs in a specific named time zone, omit any embedded offset and pair the value with `dueTimeZoneIdentifier`. | | `dueTimeZoneIdentifier` | String | No | IANA time zone identifier for the timed `dueDate`, such as `"America/Los_Angeles"`. Requires `dueDate`. Omit to use BusyCal's current app time zone. | | `calendarID` | String | No | Target calendar. If omitted, uses the default calendar. | | `priority` | String | No | Task priority: `"none"`, `"low"`, `"medium"`, or `"high"`. Omit to use BusyCal's default task priority. Use `"none"` to create the task with no priority. | | `isStarred` | Boolean | No | BusyCal starred status. Set to `true` to star the task or `false` to leave it unstarred. | | `durationMinutes` | Integer | No | Custom duration in whole minutes. Omit or use `0` for BusyCal's default display length. See [Task Duration](#task-duration) for account support and availability. | | `alarms` | List of Numbers | No | Relative reminder minutes, such as `{-1440, -60}`. Only include when reminders were explicitly requested. Omit to keep BusyCal's default reminders. Undated tasks cannot accept explicit alarms. | | `notes` | String | No | Task notes. | **Returned fields:** `id`, `seriesUID`, `calendarID`, `managedObjectURI`, `occurrenceDate`, `title`, `dueDate`, `location`, `locationURL`, `url`, `tags`, `myTags`, `notes`, `alarms`, `durationMinutes`, `isCompleted`, `priority`, `isStarred`, `isFloating`, `timeZoneIdentifier`, `occurrenceTimeZoneIdentifier`, `dueTimeZoneIdentifier` ### create task calendar[​](#createtaskcalendar "Direct link to create task calendar") Creates a new task calendar and returns its calendar record. Pass the name as either `name` or `title`; one of the two is required, and it must be 1 to 32 characters. There is no account argument. BusyCal creates the calendar on the remote account that owns your default task calendar, and refuses local accounts and accounts that cannot create calendars. | Argument | Type | Required | Description | | -------- | ------ | -------- | ------------------------------------------------------------------------------------ | | `name` | String | Yes | Name for the new task calendar, 1 to 32 characters. `title` is accepted as an alias. | **Returned fields:** `calendarID`, `accountID`, `title`, `isSubscribed`, `supportsEvents`, `supportsTasks`, `isDefaultForEvents`, `isDefaultForTasks`, `isWritable`, `color` See [Create a task calendar](#example-create-task-calendar). ## Duplicating[​](#duplicating "Direct link to Duplicating") ### duplicate item[​](#duplicateitem "Direct link to duplicate item") Duplicates an event or task using BusyCal's copy-and-paste edit pipeline. Returns the duplicated item record. Omit `calendarID` to duplicate onto the same calendar as the source item. For recurring items, the `scope` defaults to `"one"` (only the selected occurrence). [`move item`](#moveitem) uses the same default, and most other mutation commands default to `"all"`. | Argument | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------------- | | `itemID` | String | Yes | The item's [`id`](#identity-fields) from a query or create result. | | `calendarID` | String | No | Destination calendar. If omitted, duplicates onto the source calendar. | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"one"`. | **Returned fields:** Same as [`query items`](#queryitems): `id`, `seriesUID`, `type`, `title`, `calendarID`, `occurrenceDate`, `managedObjectURI`, plus date, location, URL, tag, alarm, travel time, task duration, and timezone fields appropriate to the item type. ## Selection[​](#selection "Direct link to Selection") ### selected items[​](#selecteditems "Direct link to selected items") Returns the events, tasks, or other items the user currently has selected in the BusyCal main window. Useful when you want to act on whatever the user is already looking at instead of re-running a query. This command takes no arguments. The result list preserves the order the BusyCal main window reports, typically top-to-bottom for list views and selection order for the calendar grid. If nothing is selected, the result is an empty list. Records use the same unified shape as [`query items`](#queryitems), so you can use the same field accessors (`title`, `type`, `calendarID`, etc.) and pass the resulting `id` straight into update, move, defer, complete, duplicate, or delete commands. **Returned fields:** Same as [`query items`](#queryitems): `id`, `seriesUID`, `type`, `title`, `calendarID`, `occurrenceDate`, `managedObjectURI`, plus date, location, URL, tag, alarm, travel time, task duration, and timezone fields appropriate to the item type. ``` tell application "BusyCal" set selectedRecords to selected items if (count of selectedRecords) is 0 then log "Nothing selected in BusyCal." else repeat with itemRecord in selectedRecords log (type of itemRecord) & ": " & (title of itemRecord) end repeat end if end tell ``` ## Navigation[​](#navigation "Direct link to Navigation") ### open item[​](#openitem "Direct link to open item") Reveals an event or task in the BusyCal window, selecting it and opening its Info Panel. Returns the revealed item record. | Argument | Type | Required | Description | | -------- | ------ | -------- | ------------------------------------------------------------------ | | `itemID` | String | Yes | The item's [`id`](#identity-fields) from a query or create result. | **Returned fields:** Same as the item's query result (`id`, `seriesUID`, `type`, `title`, `calendarID`, `occurrenceDate`, `managedObjectURI`, plus date and timezone fields appropriate to the item type). ## Updating and Moving[​](#updating "Direct link to Updating and Moving") ### move item[​](#moveitem "Direct link to move item") Moves an event or task to another calendar. Returns the moved item record. The destination calendar must be writable and must support the item's type. For recurring events, `scope` defaults to `"one"` (only the selected occurrence), unlike most commands which default to `"all"`. Tasks always move as a single item, because recurring tasks never detach. | Argument | Type | Required | Description | | ------------ | ------ | -------- | ----------------------------------------------------------------------------------------- | | `itemID` | String | Yes | The item's [`id`](#identity-fields) from a query or create result. | | `calendarID` | String | Yes | Destination calendar. Use the `calendarID` value from [`list calendars`](#listcalendars). | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"one"`. | **Returned fields:** Same as [`query items`](#queryitems). A moved occurrence can come back with a new `id`, so use the returned value for any further commands. See [Move an item to another calendar](#example-move-item). ### move event[​](#moveevent "Direct link to move event") Reschedules an event to a new date and time. The event's original duration is preserved. Returns the updated event record. | Argument | Type | Required | Description | | ------------------------- | -------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `itemID` | String | Yes | The event's [`id`](#identity-fields) from a query or create result. | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"all"`. | | `startDate` | Date or String | Yes | New start date and time. Accepts AppleScript dates or unzoned wall-clock strings. For string inputs in a specific named time zone, omit any embedded offset and pair the value with `startTimeZoneIdentifier`. | | `startTimeZoneIdentifier` | String | No | IANA time zone identifier for the timed `startDate`, such as `"America/Los_Angeles"`. Omit to use BusyCal's current app time zone. | **Returned fields:** `id`, `seriesUID`, `calendarID`, `managedObjectURI`, `occurrenceDate`, `title`, `startDate`, `endDate`, `location`, `locationURL`, `url`, `tags`, `myTags`, `notes`, `travelTime`, `isFloating`, `timeZoneIdentifier`, `occurrenceTimeZoneIdentifier`, `startTimeZoneIdentifier`, `endTimeZoneIdentifier` ### reschedule event[​](#rescheduleevent "Direct link to reschedule event") Changes an event's start, end, or all-day state in one call. Returns the updated event record. Send at least one of `startDate`, `endDate`, or `allDay`, and send every schedule field you want to change. Changing only the start also moves the end to preserve the duration, so supply an `endDate` when you want a particular length. Changing the all-day state applies BusyCal's normal conversion rules, including availability and default reminders. Use this when you need to change an event's length or turn it into an all-day event. Use [`move event`](#moveevent) when you only want to shift the start and keep the same duration. | Argument | Type | Required | Description | | ------------------------- | -------------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `itemID` | String | Yes | The event's [`id`](#identity-fields) from a query or create result. | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"all"`. | | `startDate` | Date or String | No | New start date and time. Accepts AppleScript dates or unzoned wall-clock strings. `startDate` and `endDate` must use the same style. | | `endDate` | Date or String | No | New end date and time. On an all-day event, a date-only value is the inclusive final day, so `"2026-04-19"` runs through April 19. An end before the start is rejected. | | `allDay` | Boolean | No | New all-day state. Turning an all-day event into a timed one without new times keeps the day and applies BusyCal's default duration and floating-time preference. | | `startTimeZoneIdentifier` | String | No | IANA time zone identifier for a timed `startDate`, such as `"America/Los_Angeles"`. Requires `startDate`, and is not accepted on all-day events. | | `endTimeZoneIdentifier` | String | No | IANA time zone identifier for a timed `endDate`, such as `"America/New_York"`. Requires `endDate`, and is not accepted on all-day events. | While the event stays timed, omitting the time zone identifiers keeps its stored time style, so a floating event stays floating and a fixed-zone event keeps its zones. Passing `startTimeZoneIdentifier` or `endTimeZoneIdentifier` replaces the stored zone for that end of the event. Changing between timed and all day uses BusyCal's normal date and time defaults instead. **Returned fields:** Same as [`move event`](#moveevent). For an occurrence that still belongs to the series, the result is the detached occurrence, the new future series, or the master, according to `scope`. An occurrence you already edited separately is rescheduled in place and returned as itself, whatever `scope` you pass. See [Reschedule an event](#example-reschedule-event). ### update event[​](#updateevent "Direct link to update event") Updates an event's title, location, notes, URL, tags, reminders, or travel time. Returns the updated event record. You must provide at least one field to change. | Argument | Type | Required | Description | | ------------- | --------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `itemID` | String | Yes | The event's `id`. | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"all"`. | | `title` | String | No | New title. | | `location` | String | No | New location. Pass an empty string to clear it. | | `notes` | String | No | New notes. Pass an empty string to clear it. | | `url` | String | No | New item URL. Pass an empty string to clear it. Omit to leave unchanged. | | `locationURL` | String | No | New location URL. Pass an empty string to clear it. Omit to leave unchanged. | | `tags` | String | No | Comma-separated shared tags. The list you pass replaces the item's shared tags, so include every tag you want to keep. Pass an empty string to clear all shared tags. Omit to leave unchanged. | | `myTags` | String | No | Comma-separated My Tags. Pass an empty string to clear all My Tags. Omit to leave unchanged. | | `alarms` | List of Numbers | No | Relative reminder minutes. Pass `{}` to clear all reminders, omit to leave them unchanged, or pass a non-empty list to add those reminder offsets. | | `travelTime` | Integer | No | New travel time in minutes before the event starts. Pass `0` to remove it. Omit to leave unchanged. Timed events only. See [Travel Time](#travel-time). | ### update task[​](#updatetask "Direct link to update task") Updates a task's title, notes, URL, tags, reminders, duration, priority, or BusyCal starred status. Returns the updated task record. You must provide at least one field to change. | Argument | Type | Required | Description | | ----------------- | --------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `itemID` | String | Yes | The task's `id`. | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"all"`. | | `title` | String | No | New title. | | `priority` | String | No | New priority: `"none"`, `"low"`, `"medium"`, or `"high"`. Use `"none"` to clear priority. Omit to leave unchanged. Repeating tasks require `scope:"one"`. | | `isStarred` | Boolean | No | Set to `true` to star the task or `false` to unstar it. Omit to leave unchanged. Repeating tasks require `scope:"one"`. | | `durationMinutes` | Integer | No | New duration in whole minutes. Omit to keep it; `0` clears the custom duration. Repeating tasks require `scope:"one"`. See [Task Duration](#task-duration) for account support and availability. | | `notes` | String | No | New notes. Pass an empty string to clear it. | | `url` | String | No | New item URL. Pass an empty string to clear it. Omit to leave unchanged. | | `locationURL` | String | No | New location URL. Pass an empty string to clear it. Omit to leave unchanged. | | `tags` | String | No | Comma-separated shared tags. The list you pass replaces the item's shared tags, so include every tag you want to keep. Pass an empty string to clear all shared tags. Omit to leave unchanged. | | `myTags` | String | No | Comma-separated My Tags. Pass an empty string to clear all My Tags. Omit to leave unchanged. | | `alarms` | List of Numbers | No | Relative reminder minutes. Pass `{}` to clear all reminders, omit to leave them unchanged, or pass a non-empty list to add those reminder offsets. | **Returned fields:** Same as [`create task`](#createtask), including `durationMinutes`. ### defer task[​](#defertask "Direct link to defer task") Changes a task's due date. Returns the updated task record. | Argument | Type | Required | Description | | ----------------------- | -------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `itemID` | String | Yes | The task's `id`. | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"all"`. | | `dueDate` | Date or String | No | New due date. Omit to make the task undated. Accepts AppleScript dates or unzoned wall-clock strings. For timed string inputs in a specific named time zone, omit any embedded offset and pair the value with `dueTimeZoneIdentifier`. | | `dueTimeZoneIdentifier` | String | No | IANA time zone identifier for the timed `dueDate`, such as `"America/Los_Angeles"`. Requires `dueDate`. Omit to use BusyCal's current app time zone. | **Returned fields:** `id`, `seriesUID`, `calendarID`, `managedObjectURI`, `occurrenceDate`, `title`, `dueDate`, `location`, `locationURL`, `url`, `tags`, `myTags`, `notes`, `durationMinutes`, `isCompleted`, `priority`, `isStarred`, `isFloating`, `timeZoneIdentifier`, `occurrenceTimeZoneIdentifier`, `dueTimeZoneIdentifier` ### complete task[​](#completetask "Direct link to complete task") Marks a task as complete. Returns the updated task record. | Argument | Type | Required | Description | | ------------- | ------ | -------- | -------------------------------------------------------- | | `itemID` | String | Yes | The task's `id`. | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"all"`. | | `completedAt` | Date | No | Completion timestamp. If omitted, uses the current time. | ### uncomplete task[​](#uncompletetask "Direct link to uncomplete task") Marks a completed task as not completed. Returns the updated task record. You can call this command using either AppleScript name: * `uncomplete task` * `reopen task` | Argument | Type | Required | Description | | -------- | ------ | -------- | -------------------------------------------------------- | | `itemID` | String | Yes | The task's `id`. | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"all"`. | ## Deleting[​](#deleting "Direct link to Deleting") ### delete event[​](#deleteevent "Direct link to delete event") Deletes an event. Returns a record with the deleted item's `id` and `deleted:true`. | Argument | Type | Required | Description | | -------- | ------ | -------- | -------------------------------------------------------- | | `itemID` | String | Yes | The event's `id`. | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"all"`. | ### delete task[​](#deletetask "Direct link to delete task") Deletes a task. Returns a record with the deleted item's `id` and `deleted:true`. | Argument | Type | Required | Description | | -------- | ------ | -------- | -------------------------------------------------------- | | `itemID` | String | Yes | The task's `id`. | | `scope` | String | No | [Recurrence scope](#recurrence-scope). Default: `"all"`. | ## Recurrence Scope[​](#recurrence-scope "Direct link to Recurrence Scope") Commands that modify or delete items accept a `scope` argument to control which occurrences are affected: | Scope | Meaning | | ---------- | ------------------------------------ | | `"one"` | This occurrence only. | | `"future"` | This and all future occurrences. | | `"all"` | All occurrences (the entire series). | Most mutation commands use `"all"` when you omit `scope`. [`duplicate item`](#duplicateitem) and [`move item`](#moveitem) use `"one"` instead, so check the command's scope rules before leaving the argument out. For non-recurring items, the scope is ignored - the single item is always affected. For a repeating task, changing duration, priority, or starred status requires `scope:"one"`, which edits the one stored recurring task. Set the scope explicitly, because omitting it defaults to `"all"` and is rejected for these changes. ## Examples[​](#examples "Direct link to Examples") ### List accounts and calendars[​](#example-list-accounts-and-calendars "Direct link to List accounts and calendars") ``` tell application "BusyCal" -- Get all enabled accounts set accounts to list accounts repeat with accountRecord in accounts set accountID to |id| of accountRecord set accountTitle to title of accountRecord -- Get calendars for this account set accountCalendars to list calendars given accountID:accountID log "Account: " & accountTitle & " (" & (count of accountCalendars) & " calendars)" repeat with cal in accountCalendars log " - " & title of cal & " (events: " & supportsEvents of cal & ", tasks: " & supportsTasks of cal & ")" end repeat end repeat end tell ``` ### Query events for the next 7 days[​](#example-query-events "Direct link to Query events for the next 7 days") ``` tell application "BusyCal" set today to current date set weekOut to today + (7 * days) -- Find events containing "review" in the next week set matches to query events given searchText:"review", startDate:today, endDate:weekOut, mode:"uiConsistent", fetchLimit:50 repeat with evt in matches log (title of evt) & " - " & (startDate of evt) & " to " & (endDate of evt) end repeat end tell ``` ### Query tasks for the next 14 days[​](#example-query-tasks "Direct link to Query tasks for the next 14 days") ``` tell application "BusyCal" set today to current date set twoWeeksOut to today + (14 * days) -- Find tasks containing "follow up" in the next two weeks set matches to query tasks given searchText:"follow up", startDate:today, endDate:twoWeeksOut, mode:"uiConsistent", fetchLimit:50 repeat with t in matches set status to "open" if |isCompleted| of t then set status to "done" log (title of t) & " - due: " & (dueDate of t) & " [" & status & "]" end repeat end tell ``` ### Create and move an event[​](#example-create-and-move-event "Direct link to Create and move an event") ``` -- Set up a start time: tomorrow at 10:00 AM set startDateValue to current date set startDateValue to startDateValue + (1 * days) set hours of startDateValue to 10 set minutes of startDateValue to 0 set seconds of startDateValue to 0 -- One hour duration set endDateValue to startDateValue + (60 * minutes) -- Where we want to move it: two days later set movedStart to startDateValue + (2 * days) tell application "BusyCal" -- Create the event set createdEvent to create event given title:"Team Standup", startDate:startDateValue, endDate:endDateValue, allDay:false, location:"Conference Room A", notes:"Weekly sync" -- Move it two days later (duration is preserved automatically) set movedEvent to move event given itemID:(|id| of createdEvent), scope:"all", startDate:movedStart log "Event moved to: " & (startDate of movedEvent) end tell ``` ### Create a cross-timezone event[​](#example-cross-timezone-event "Direct link to Create a cross-timezone event") ``` tell application "BusyCal" -- Create a flight departing San Francisco at 9 AM Pacific and arriving in New York at 5 PM Eastern set flightEvent to create event given title:"Flight SFO → JFK", startDate:"2026-04-14T09:00:00", startTimeZoneIdentifier:"America/Los_Angeles", endDate:"2026-04-14T17:00:00", endTimeZoneIdentifier:"America/New_York" log "Start TZ: " & (startTimeZoneIdentifier of flightEvent) -- America/Los_Angeles log "End TZ: " & (endTimeZoneIdentifier of flightEvent) -- America/New_York end tell ``` ### Duplicate an event to another calendar[​](#example-duplicate-event "Direct link to Duplicate an event to another calendar") ``` tell application "BusyCal" -- Find the event to duplicate set matches to query events given searchText:"Team Standup", startDate:(current date), endDate:((current date) + (7 * days)), fetchLimit:1 if (count of matches) > 0 then set sourceEvent to item 1 of matches -- Duplicate just this occurrence onto the "Personal" calendar set allCalendars to list calendars set personalCalID to missing value repeat with cal in allCalendars if title of cal is "Personal" and supportsEvents of cal then set personalCalID to calendarID of cal exit repeat end if end repeat if personalCalID is not missing value then set duplicated to duplicate item given itemID:(|id| of sourceEvent), calendarID:personalCalID, scope:"one" log "Duplicated: " & (title of duplicated) & " on calendar " & (calendarID of duplicated) end if end if end tell ``` ### Update an event[​](#example-update-event "Direct link to Update an event") ``` -- Create an event, then update its title, location, and tags set startDateValue to current date set startDateValue to startDateValue + (1 * days) set hours of startDateValue to 14 set minutes of startDateValue to 0 set seconds of startDateValue to 0 set endDateValue to startDateValue + (45 * minutes) tell application "BusyCal" set createdEvent to create event given title:"Planning Meeting", startDate:startDateValue, endDate:endDateValue -- Update the title, add a location, and set tags set updatedEvent to update event given itemID:(|id| of createdEvent), scope:"all", title:"Q2 Planning Meeting", location:"Conference Room B", tags:"work, planning", url:"https://example.com/q2-agenda" log "Updated: " & (title of updatedEvent) & " at " & (location of updatedEvent) end tell ``` ### Create, complete, and uncomplete a task[​](#example-create-complete-uncomplete-task "Direct link to Create, complete, and uncomplete a task") ``` -- Set a due date: two days from now at 5:00 PM set dueDateValue to current date set dueDateValue to dueDateValue + (2 * days) set hours of dueDateValue to 17 set minutes of dueDateValue to 0 set seconds of dueDateValue to 0 tell application "BusyCal" -- Create the task set createdTask to create task given title:"Review pull requests", dueDate:dueDateValue -- Mark it complete set completedTask to complete task given itemID:(|id| of createdTask), scope:"all", completedAt:(current date) log "Completed: " & |isCompleted| of completedTask -- true -- Mark as not completed set uncompletedTask to uncomplete task given itemID:(|id| of completedTask), scope:"all" log "Uncompleted: " & |isCompleted| of uncompletedTask -- false end tell ``` ### Update and defer a task[​](#example-update-and-defer-task "Direct link to Update and defer a task") ``` -- Due in 3 days set dueDateValue to current date set dueDateValue to dueDateValue + (3 * days) tell application "BusyCal" -- Create a high-priority starred task with notes set createdTask to create task given title:"Write release notes", dueDate:dueDateValue, priority:"high", isStarred:true, notes:"Draft for v2.5" -- Update the notes, clear priority, and unstar it set updatedTask to update task given itemID:(|id| of createdTask), scope:"all", priority:"none", isStarred:false, notes:"Draft for v2.5 - include migration steps" log "Priority: " & (|priority| of updatedTask) -- none log "Starred: " & (|isStarred| of updatedTask) -- false -- Push the due date back by 2 more days set deferredTask to defer task given itemID:(|id| of updatedTask), scope:"all", dueDate:(dueDateValue + (2 * days)) log "New due date: " & (dueDate of deferredTask) end tell ``` ### Create an event on a specific calendar[​](#example-create-on-specific-calendar "Direct link to Create an event on a specific calendar") ``` tell application "BusyCal" -- Find the "Work" calendar set allCalendars to list calendars set workCalID to missing value repeat with cal in allCalendars if title of cal is "Work" and supportsEvents of cal then set workCalID to calendarID of cal exit repeat end if end repeat if workCalID is missing value then log "No 'Work' calendar found." return end if -- Create an event on the Work calendar set startDateValue to current date set startDateValue to startDateValue + (1 * days) set hours of startDateValue to 9 set minutes of startDateValue to 0 set seconds of startDateValue to 0 set createdEvent to create event given title:"Client call", startDate:startDateValue, calendarID:workCalID log "Created on calendar: " & (calendarID of createdEvent) end tell ``` ### Delete an event[​](#example-delete-event "Direct link to Delete an event") ``` set startDateValue to current date set startDateValue to startDateValue + (1 * days) set hours of startDateValue to 16 set minutes of startDateValue to 0 set seconds of startDateValue to 0 set endDateValue to startDateValue + (30 * minutes) tell application "BusyCal" set createdEvent to create event given title:"Temporary event", startDate:startDateValue, endDate:endDateValue -- Delete the event (all occurrences) set deletedRecord to delete event given itemID:(|id| of createdEvent), scope:"all" log "Deleted event id: " & |id| of deletedRecord end tell ``` ### Delete a task[​](#example-delete-task "Direct link to Delete a task") ``` set dueDateValue to current date set dueDateValue to dueDateValue + (1 * days) tell application "BusyCal" set createdTask to create task given title:"Temporary task", dueDate:dueDateValue -- Delete the task set deletedRecord to delete task given itemID:(|id| of createdTask), scope:"all" log "Deleted task id: " & |id| of deletedRecord end tell ``` ### Work with recurring events[​](#example-recurring-events "Direct link to Work with recurring events") When you query recurring events, each occurrence is returned as a separate record with its own `id`. Use the `scope` parameter to control whether a change applies to one occurrence, this and future occurrences, or the entire series. ``` tell application "BusyCal" set today to current date set twoWeeksOut to today + (14 * days) -- Find all occurrences of "Daily Standup" in the next two weeks set standups to query events given searchText:"Daily Standup", startDate:today, endDate:twoWeeksOut -- Move only tomorrow's occurrence to 30 minutes later if (count of standups) > 1 then set tomorrow to item 2 of standups set originalStart to startDate of tomorrow set movedEvent to move event given itemID:(|id| of tomorrow), scope:"one", startDate:(originalStart + (30 * minutes)) log "Moved one occurrence to: " & (startDate of movedEvent) end if -- Update the title for all future occurrences starting from the third one if (count of standups) > 2 then set thirdOccurrence to item 3 of standups set updatedEvent to update event given itemID:(|id| of thirdOccurrence), scope:"future", title:"Morning Standup" log "Renamed future occurrences: " & (title of updatedEvent) end if end tell ``` ### Quick add with natural language[​](#example-quick-add "Direct link to Quick add with natural language") ``` tell application "BusyCal" -- Create an event using natural language set newEvent to create natural language item given text:"Lunch with Sarah tomorrow at 1pm", itemType:"event" log "Created event: " & (title of newEvent) & " at " & (startDate of newEvent) -- Create a task using natural language on a specific calendar set allCalendars to list calendars set workCalID to missing value repeat with cal in allCalendars if title of cal is "Work" and supportsTasks of cal then set workCalID to calendarID of cal exit repeat end if end repeat if workCalID is not missing value then set newTask to quick add item given text:"Finish expense report Friday", itemType:"task", calendarID:workCalID, notes:"Q1 expenses" log "Created task: " & (title of newTask) end if end tell ``` ### Open an item in BusyCal[​](#example-open-item "Direct link to Open an item in BusyCal") ``` tell application "BusyCal" -- Find the next event containing "standup" set matches to query events given searchText:"standup", startDate:(current date), fetchLimit:1 if (count of matches) > 0 then set firstMatch to item 1 of matches set revealed to open item given itemID:(|id| of firstMatch) log "Revealed: " & (title of revealed) end if end tell ``` ### Read the current BusyCal selection[​](#example-selected-items "Direct link to Read the current BusyCal selection") When your script needs to act on what the user already has selected in the BusyCal window, ask for the selection directly instead of re-running a query. The returned records share the same shape as [`query items`](#queryitems), so the `id` is ready to feed into any update, move, defer, or delete command. ``` tell application "BusyCal" set selectedRecords to selected items if (count of selectedRecords) is 0 then log "Nothing selected in BusyCal." return end if -- Replace the shared tags on every selected item with "reviewed", using its record id repeat with itemRecord in selectedRecords set itemKind to type of itemRecord set itemID to |id| of itemRecord if itemKind is "event" then update event given itemID:itemID, scope:"one", tags:"reviewed" else if itemKind is "task" then update task given itemID:itemID, scope:"one", tags:"reviewed" end if end repeat end tell ``` ### Find events by keyword and update them[​](#example-find-and-update "Direct link to Find events by keyword and update them") ``` tell application "BusyCal" set today to current date set monthOut to today + (30 * days) -- Find all events with "TBD" in the title set matches to query events given searchText:"TBD", startDate:today, endDate:monthOut repeat with evt in matches -- Add a location to each one update event given itemID:(|id| of evt), scope:"all", location:"Room 101" end repeat log "Updated " & (count of matches) & " events" end tell ``` ### Query mixed item types[​](#example-query-items "Direct link to Query mixed item types") ``` tell application "BusyCal" set rangeStart to current date set rangeEnd to rangeStart + (3 * days) set itemsFound to query items given searchText:"review", startDate:rangeStart, endDate:rangeEnd, itemTypes:"event, task, journal", searchFields:"title", mode:"uiConsistent", fetchLimit:25 repeat with itemRecord in itemsFound set itemType to type of itemRecord set itemTitle to title of itemRecord log "- " & itemType & ": " & itemTitle end repeat end tell ``` ### Check availability for the next 3 days[​](#example-query-availability "Direct link to Check availability for the next 3 days") ``` tell application "BusyCal" set today to current date set threeDaysOut to today + (3 * days) -- Get both free and busy slots, at least 30 minutes long, within working hours set days to query availability given startDate:today, endDate:threeDaysOut, kind:"both", minimumDurationMinutes:30, respectWorkingHours:true repeat with dayRecord in days log "Date: " & (date of dayRecord) & " (working day: " & (isWorkingDay of dayRecord) & ")" repeat with freeSlot in (freeSpans of dayRecord) log " Free: " & (startDate of freeSlot) & " to " & (endDate of freeSlot) & " (" & (durationMinutes of freeSlot) & " min)" end repeat repeat with busySlot in (busySpans of dayRecord) log " Busy: " & (startDate of busySlot) & " to " & (endDate of busySlot) & " (" & (durationMinutes of busySlot) & " min)" end repeat end repeat end tell ``` ### Find the next free slot[​](#example-find-next-available "Direct link to Find the next free slot") ``` tell application "BusyCal" -- Find the next 60-minute free slot within the next 5 working days set today to current date set fiveDaysOut to today + (5 * days) set nextSlot to find next available given startDate:today, endDate:fiveDaysOut, minimumDurationMinutes:60, respectWorkingHours:true if nextSlot is missing value then log "No 60-minute slot available in the next 5 days." else log "Next free slot: " & (startDate of nextSlot) & " to " & (endDate of nextSlot) & " (" & (durationMinutes of nextSlot) & " min)" end if end tell ``` ### Create an event with explicit timezones[​](#example-create-with-timezone "Direct link to Create an event with explicit timezones") When booking a flight or scheduling across timezones, you can pass ISO 8601 strings with explicit offsets. BusyCal preserves each timezone separately. ``` tell application "BusyCal" -- Flight departing Los Angeles (Pacific) at 9 AM, arriving New York (Eastern) at 5 PM set flight to create event given title:"Delta flight to New York", startDate:"2026-04-10T09:00:00-07:00", endDate:"2026-04-10T17:00:00-04:00", notes:"Seat 14A" -- Check the stored timezones log "Start TZ: " & (startTimeZoneIdentifier of flight) log "End TZ: " & (endTimeZoneIdentifier of flight) log "Floating: " & (isFloating of flight) end tell ``` ### Date range filtering[​](#example-date-filtering "Direct link to Date range filtering") ``` tell application "BusyCal" -- Start date only: all events from now onward set eventsAfterNow to query events given startDate:(current date), fetchLimit:20 -- End date only: tasks between now and 7 days out set tasksThroughWeek to query tasks given endDate:((current date) + (7 * days)), fetchLimit:20 -- Both start and end: events in a 3-day window set windowStart to current date set windowEnd to windowStart + (3 * days) set windowEvents to query events given startDate:windowStart, endDate:windowEnd, fetchLimit:20 -- You can also pass dates as strings set isoResults to query items given searchText:"launch", startDate:"2026-03-14T09:00:00", endDate:"2026-03-14T18:00:00", itemTypes:"event, journal", fetchLimit:20 end tell ``` ### List your Calendar Sets[​](#example-list-calendar-sets "Direct link to List your Calendar Sets") ``` tell application "BusyCal" set theSets to list calendar sets repeat with aSet in theSets log (title of aSet) & " contains " & (count of (calendarIDs of aSet)) & " calendars" end repeat end tell ``` ### Create a task calendar[​](#example-create-task-calendar "Direct link to Create a task calendar") ``` tell application "BusyCal" set newCalendar to create task calendar given name:"Home Projects" log "Created " & (title of newCalendar) & " on account " & (accountID of newCalendar) end tell ``` ### Move an item to another calendar[​](#example-move-item "Direct link to Move an item to another calendar") ``` tell application "BusyCal" -- Find the task to move set matches to query tasks given searchText:"Renew passport", startDate:(current date), endDate:((current date) + (30 * days)), fetchLimit:1 if (count of matches) > 0 then set targetTask to item 1 of matches -- Locate a task calendar named "Personal" set personalCalID to missing value repeat with cal in (list calendars) if title of cal is "Personal" and supportsTasks of cal then set personalCalID to calendarID of cal exit repeat end if end repeat if personalCalID is not missing value then set movedTask to move item given itemID:(|id| of targetTask), calendarID:personalCalID log "Moved to calendar " & (calendarID of movedTask) end if end if end tell ``` ### Reschedule an event[​](#example-reschedule-event "Direct link to Reschedule an event") ``` -- Turn a timed event into an all-day event that runs through April 19 tell application "BusyCal" set matches to query events given searchText:"Conference", startDate:(current date), endDate:((current date) + (60 * days)), fetchLimit:1 if (count of matches) > 0 then set theEvent to item 1 of matches set updatedEvent to reschedule event given itemID:(|id| of theEvent), scope:"one", startDate:"2026-04-16", endDate:"2026-04-19", allDay:true log "Now runs " & (startDate of updatedEvent) & " through " & (endDate of updatedEvent) end if end tell ``` ## Error Handling[​](#error-handling "Direct link to Error Handling") Commands report errors as standard AppleScript errors (error number `-10000`). Common errors include: * **Invalid arguments**: a required field is missing, the title is empty, `endDate` is before `startDate` when creating an event, or `move event` is called with an `endDate` argument. * **Item not found**: the `id` you passed does not match any existing item (it may have been deleted). * **Edit rejected**: the target calendar is read-only, the calendar doesn't support the item type, or BusyCal could not complete the change. * **Not ready**: BusyCal is still opening its database. Wait a moment and try again. You can catch these with a standard `try` block: ``` tell application "BusyCal" try set result to create event given title:"", startDate:(current date) on error errMsg log "Error: " & errMsg end try end tell ``` ## Tips[​](#notes-and-tips "Direct link to Tips") * Always use the [`id`](#identity-fields) returned from query or create commands as the `itemID` for update, move, and delete commands. Don't construct IDs yourself. * `id` and `isCompleted` are AppleScript reserved words, so wrap them in pipes when reading from a record: `|id| of someRecord`, `|isCompleted| of someRecord`. * Use the argument labels exactly as documented (e.g. `startDate`, `searchText`, `calendarID`, `itemID`). * Get the `calendarID` value from [`list calendars`](#listcalendars), then use it when creating items on a specific calendar or filtering queries. * For recurring items, set [`scope`](#recurrence-scope) to control which occurrences are affected. Most mutation commands use `"all"` when you omit it, but `duplicate item` and `move item` use `"one"`. * Use `mode:"rawExhaustive"` to include items from unchecked calendars, disabled accounts, and hidden events. The default `"uiConsistent"` mode only returns what's visible in BusyCal. See [Query Modes](#query-modes). * Before creating an event or task on a specific calendar, check `supportsEvents` or `supportsTasks` from [`list calendars`](#listcalendars). * Every create and update command returns the resulting record, so you can chain operations by reading the `id` from each result. * When both `searchText` and `endDate` are omitted, the default limit is 100 results. Other queries have no default cap. Pass `fetchLimit:0` if you want unlimited results. * Use `searchFields` to limit searches to specific fields like `"title"` or `"notes"` when you need more targeted matching. --- # Claude Desktop Extension BusyCal supports a [Claude Desktop](https://claude.ai/download) extension (built on [MCP](https://modelcontextprotocol.io/)) that lets Claude manage your calendars, search events and tasks, check your availability, find free time, and create or update calendar items, all through natural conversation. The extension connects to BusyCal through a local connection on your Mac. It does not need any extra permissions beyond what BusyCal already has. BusyCal needs to be running to handle requests. The extension launches it automatically if it is not already open. The extension shares the same automation engine as BusyCal's [AppleScript support](/docs/busycal/70624-applescript.md), so both get the same capabilities, including timezone-aware scheduling and availability queries. important Install **BusyCal version 2026.3.2** or later **and BusyCal extension version 1.2.1** or later in Claude Desktop. [Task duration](#task-duration) also requires the upcoming BusyCal update. See the [installation steps below](#install) to set up both. ## What You Can Do[​](#what-it-can-do "Direct link to What You Can Do") With BusyCal connected to Claude, you can: * **List calendars and accounts**: see which calendars you have, whether they support events or tasks, and which account they belong to. * **Search events and tasks**: find items by keyword, date range, calendar, or any combination. Task results include duration, priority, and BusyCal starred status, along with notes, URLs, and tags when present. * **Get a single item**: retrieve the full details of a specific event or task by its ID. * **Read what you have selected**: pull the events or tasks you currently have selected in the BusyCal window so Claude can act on them without re-searching. * **Check availability**: see your free and busy time for any date range, filtered by calendar or working hours. * **Find free time**: ask for the next open slot of a specific length within your working hours. * **Create events and tasks**: add items to any calendar, with support for all-day events, notes, named IANA timezone identifiers for cross-timezone scheduling, reminders, travel time on events, task duration, task priority, and starred tasks. * **Duplicate events and tasks**: copy an existing item, optionally onto a different calendar. * **Open items in BusyCal**: ask Claude to show you a specific event or task and BusyCal will reveal it in the window with the Info Panel open. * **Update, move, complete, and delete**: change existing items, reschedule events, adjust notes, URLs, tags, reminders, travel time on events, task duration, task priority, and starred status, mark tasks as done, or remove items. Changes Claude makes are saved into BusyCal normally and sync through the same calendar accounts you already use. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/ClaudeMCP_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/ClaudeMCP_web.webp) ## Requirements[​](#requirements "Direct link to Requirements") * [**BusyCal**](https://busymac.com/busycal) installed on your Mac. * [**Claude Desktop**](https://claude.ai/download) (macOS) with extension support. ## Installing the Extension[​](#install "Direct link to Installing the Extension") Use these steps to install or update the BusyCal extension manually. ### Step 1: Download the extension[​](#step-1-download-the-extension "Direct link to Step 1: Download the extension") Download **[busycal.1.2.1.mcpb](https://github.com/BeehiveInnovations/busycal-mcpb/releases)** to your Mac. <!-- --> ### Step 2: Enable sideloading in Claude Desktop[​](#step-2-enable-sideloading-in-claude-desktop "Direct link to Step 2: Enable sideloading in Claude Desktop") Open Claude Desktop and go to **Settings** > **Extensions** > **Advanced settings**, then click **Install Extension…**. Select the `.mcpb` file you downloaded. <!-- --> ### Step 3: Confirm the installation[​](#step-3-confirm-the-installation "Direct link to Step 3: Confirm the installation") You may see a message saying **"Installing will grant access to everything on your computer."** This is a standard warning that Claude Desktop shows for all sideloaded extensions. It does not mean BusyCal gains any new access to your system. BusyCal is a sandboxed macOS app. The extension can only read and write your BusyCal calendar data. It cannot access your files, other apps, or anything outside of BusyCal. Click **Install** to continue. <!-- --> ### Step 4: Start using it[​](#step-4-start-using-it "Direct link to Step 4: Start using it") Open a new chat in Claude Desktop and try: > "List my BusyCal calendars." If Claude shows your calendars, the extension is working and you are ready to go. <!-- --> ## Available Tools[​](#tools "Direct link to Available Tools") Extension version **1.2.1** gives Claude access to all **26 tools** listed below. Claude picks the right one based on what you ask. You do not need to remember tool names. Version 1.2.0 adds `get_item`, `list_calendar_sets`, `create_task_calendar`, `reschedule_event`, and `move_item` to the extension. These commands are already supported by BusyCal 2026.3.2, but are not exposed by extension version 1.1.0 or earlier. Version 1.2.1 adds the optional `durationMinutes` argument to `create_task` and `update_task`. See [Task Duration](#task-duration) for the required BusyCal update and examples. **Read-only**: browse and search your calendar data: | Tool | What it does | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `list_accounts` | List your calendar accounts. | | `list_calendars` | List calendars, optionally filtered by account. Can exclude subscription, holiday, or birthday calendars. | | `get_item` | Get a single item by its ID, including notes and, for events, [organizer and attendee details](#meeting-participants) when available. | | `selected_items` | Get the events, tasks, or other items currently selected in the BusyCal window. Returns the same fields as `query_items`. | | `query_items` | Search across events, tasks, journals, graphics, and stickies. | | `query_events` | Search events by keyword, date range, or calendar. | | `query_tasks` | Search tasks by keyword, date range, or calendar. | | `query_availability` | Show free and busy time slots for a date range. | | `find_next_available` | Find the next free slot of a given minimum length. | | `list_calendar_sets` | List your saved Calendar Sets, with the calendars each one contains. | On the Mac, a Calendar Set is a **Smart Filter** saved with its **Remember calendar set (visible calendars)** option turned on. Smart Filters saved without this option are not offered as Calendar Sets to Siri, Shortcuts, the Focus filter, AppleScript, or the Claude Desktop extension. See [Smart Filters](/docs/busycal/70612-smart-filters.md#calendar-sets). **Navigate**: reveal items in BusyCal: | Tool | What it does | | ----------- | ---------------------------------------------------- | | `open_item` | Open a specific event or task in the BusyCal window. | **Create**: add new items: | Tool | What it does | | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------- | | `create_event` | Create a new event, with optional location, reminders, travel time, and IANA time zone identifiers for cross-timezone scheduling. | | `create_task` | Create a new task, with optional due date, duration, reminders, priority, BusyCal starred status, and an IANA time zone identifier. | | `create_task_calendar` | Create a new task calendar on the account that owns your default task calendar. | | `create_natural_language_item` | Create an event, task, or journal from BusyCal Quick Entry text, with an explicit item type. | **Duplicate**: copy existing items: | Tool | What it does | | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | `duplicate_item` | Duplicate an event or task, optionally onto a different calendar. For recurring items, defaults to duplicating only the selected occurrence. | **Update**: change existing items: | Tool | What it does | | ------------------ | ------------------------------------------------------------------------------------------------------------------------- | | `move_event` | Reschedule an event to a new date or time, with optional IANA time zone identifier. | | `reschedule_event` | Change an event's start, end, or all-day state in one call. Defaults to the whole series. | | `move_item` | Move an event or task to a different calendar. For recurring events, defaults to the selected occurrence only. | | `update_event` | Change an event's title, location, notes, URL, location URL, tags, My Tags, reminders, or travel time. | | `update_task` | Change a task's title, notes, URL, location URL, tags, My Tags, reminders, duration, priority, or BusyCal starred status. | | `defer_task` | Change a task's due date, with optional IANA time zone identifier. | | `complete_task` | Mark a task as done. | | `uncomplete_task` | Reopen a completed task. | **Delete**: remove items: | Tool | What it does | | -------------- | ---------------- | | `delete_event` | Delete an event. | | `delete_task` | Delete a task. | ## Meeting Participants[​](#meeting-participants "Direct link to Meeting Participants") Ask Claude who is invited to a meeting, who organized it, or who has accepted: > **You:** Who is invited to tomorrow's Design Review, and who has accepted? Event results from `get_item`, `query_events`, `query_items`, and `selected_items` include organizer and attendee details when those details are saved with the event. An attendee record can include a name, email address, response status, and whether attendance is optional. Fields are omitted when the information is unavailable. ## Examples[​](#examples "Direct link to Examples") Here are some ways to use BusyCal with Claude. Try these in a Claude Desktop chat. ### Create a task from a conversation[​](#example-quick-task "Direct link to Create a task from a conversation") While chatting with Claude about work, you remember something you need to do: > **You:** I need to renew the team's software licenses before the end of the month. Add that as a task in BusyCal due March 28. Claude creates a task with the title and due date on your default task calendar. <!-- --> ### Set task priority and starred status[​](#example-task-priority "Direct link to Set task priority and starred status") Priority and starred status are separate, so you can change either one without changing the other: > **You:** Create a high-priority task called "Submit renewal forms" due Friday and star it. > **You:** Remove the priority from that task, but leave it starred. Claude uses `high` for the first request and `none` for the second. Task results always include both `priority` and `isStarred`, so Claude can confirm the saved state. ### Find free time and schedule a meeting[​](#example-find-time "Direct link to Find free time and schedule a meeting") You want to schedule a 45-minute design review but you are not sure when you are free: > **You:** Check my Work calendar for the next 3 days and find a free 45-minute slot during working hours. Then create a "Design Review" event in that slot. Claude will: 1. Look up your `Work` calendar. 2. Check your availability for the next 3 days, using your BusyCal working hours. 3. Find the first 45-minute opening. 4. Create the event in that slot on your `Work` calendar. <!-- --> ### Book a flight across timezones[​](#example-flight "Direct link to Book a flight across timezones") BusyCal can store different IANA timezones on the `start` and `end` of the same event, which is useful for travel: > **You:** Create an event on my Travel calendar called "Flight to New York". Departs San Francisco at 9 AM Pacific on April 10 and arrives at 5 PM Eastern the same day. Claude creates the event with named timezone identifiers (`America/Los_Angeles` for departure, `America/New_York` for arrival). In BusyCal, the start shows in Pacific time and the arrival in Eastern time, using proper named timezones rather than raw UTC offsets. <!-- --> ### Add a location when creating an event[​](#example-location "Direct link to Add a location when creating an event") BusyCal can store either a simple `location` string or a richer structured location when Claude has enough detail: > **You:** Create a "Picnic with Sarah" event for Saturday at noon at Hyde Park, London. Claude can create the event with plain location text, or with a structured `location` object when it has an address or coordinates available. When Claude has richer venue data, the `create_event` tool can pass a `location` object like: ``` { "title": "Hyde Park", "address": "Hyde Park, London W2 2UH, UK", "latitude": 51.5087, "longitude": -0.1636 } ``` ### Set a custom reminder[​](#example-reminders "Direct link to Set a custom reminder") By default, BusyCal adds your usual reminders when Claude creates an event. If you want something different, just say so: > **You:** Create a "Design Review" event tomorrow at 2 PM and remind me 15 minutes before. You can also change reminders on events you have already created: > **You:** Update that event to remind me 30 minutes before instead. ### Open an item in BusyCal[​](#example-open-item "Direct link to Open an item in BusyCal") If Claude mentions an event or task and you want to see it in BusyCal, just ask: > **You:** Show me that Design Review event in BusyCal. Claude uses `open_item` to reveal the event in the BusyCal window with the Info Panel open, so you can review or edit it directly. ### Act on what you have selected[​](#example-selected-items "Direct link to Act on what you have selected") If you already have an event or task selected in BusyCal, Claude can pick it up directly without you needing to describe it again: > **You:** Move what I have selected to next Tuesday at 10 AM. > **You:** Add a 15-minute reminder to the task I have selected and add a note saying "bring Q1 numbers". Claude reads the current BusyCal selection with `selected_items`, then routes the change through the appropriate update, move, or defer tool. ### Plan your day[​](#example-morning-planning "Direct link to Plan your day") Start your morning by asking Claude for an overview: > **You:** What does my day look like? Show me today's events and tasks. Claude gives you a summary. Then follow up naturally: > **You:** Move the 2 PM "Team Sync" to 3 PM. > **You:** Mark "Send invoice" as complete. > **You:** Add a task to "Prepare slide deck for Friday demo" due Thursday at noon. Claude remembers context from earlier in the conversation, so you do not need to repeat calendar names or item details. <!-- --> ### Duplicate an event to another calendar[​](#example-duplicate "Direct link to Duplicate an event to another calendar") You have a recurring standup on your Work calendar and want a copy on your Personal calendar: > **You:** Duplicate next Monday's "Team Standup" to my Personal calendar. Claude uses `duplicate_item` to copy just that occurrence onto the target calendar. ### Plan a trip[​](#example-plan-trip "Direct link to Plan a trip") Let Claude suggest activities and add them to your calendar: > **You:** I'm visiting Canberra from April 14 to 19. Create an all-day event on my Travel calendar for the trip. Then check what days I'm free on that calendar and suggest the most popular things to do there, and add each one as a task on a day I'm available. Claude creates the trip event, checks your availability on those dates, picks the top attractions in Canberra, and spreads them across your free days as tasks. You end up with a ready-made itinerary on your `Travel` calendar without having to look anything up yourself. <!-- --> ### Create a task calendar[​](#example-create-task-calendar "Direct link to Create a task calendar") You want a separate list for a new project: > **You:** Create a BusyCal task list called "Home Projects", then add a task to it to book the electrician for next Tuesday. Claude uses `create_task_calendar` for the list, then `create_task` on it. The list is created on the account that owns your default task calendar. Local accounts, and accounts that cannot create calendars, are refused, and Claude reports that instead of creating anything. ### Move an item to another calendar[​](#example-move-item "Direct link to Move an item to another calendar") Something landed on the wrong calendar: > **You:** Move my "Dentist" appointment on Thursday to my Personal calendar. Claude uses `move_item` with the destination calendar. For a repeating event it moves only that occurrence unless you ask for the whole series, and an occurrence you already edited separately moves in place whatever scope you ask for. Tasks always move as a single item. ### Reschedule an event[​](#example-reschedule-event "Direct link to Reschedule an event") Changing an event's length or turning it into an all-day event takes one request: > **You:** Change my "Design Review" on Thursday to run from 10 AM to 11:30 AM. > **You:** Make my "Conference" event all-day through April 19. Claude uses `reschedule_event`. Changing only the start also moves the end to keep the same duration, so give an end time when you want a particular length, and turning an event into an all-day event applies BusyCal's normal conversion rules, including availability and default reminders. While the event stays timed it keeps its stored time zones unless you name new ones. Unlike `move_item`, this tool applies to the whole series by default, so say "just this one" when you mean a single occurrence, and an occurrence you already edited separately is rescheduled in place whatever scope you ask for. ### Work with a Calendar Set[​](#example-calendar-sets "Direct link to Work with a Calendar Set") Calendar Sets let you talk about a group of calendars by name: > **You:** What is in my Work calendar set? Show me next week's events on just those calendars. Claude uses `list_calendar_sets` to read the set, then queries only the calendars it contains. ## Date and Time[​](#date-and-time "Direct link to Date and Time") Claude handles dates and times based on how you phrase your request. BusyCal applies these rules: * **Date only**: saying just a date like `April 14` without a time creates an all-day event or task. For multi-day events, the end date is the last day of the event, so `April 14 to April 19` runs through April 19. * **Plain times** like `tomorrow at 2 PM` or `March 20 at 10 AM` are treated as local times in your current BusyCal timezone. * **Named timezones**: when you mention a timezone like `9 AM Pacific` or `5 PM Eastern`, Claude uses the correct IANA timezone identifier (e.g., `America/Los_Angeles`, `America/New_York`). BusyCal stores the named timezone on the event, so it displays as "Pacific Time" or "Eastern Time" rather than a raw UTC offset. * **Cross-timezone events** are fully supported. For example, a flight departing at `9 AM Pacific` and arriving at `5 PM Eastern` stores each named timezone separately on the start and end of the event. For the full date format reference, see [Date Filtering](/docs/busycal/70624-applescript.md#date-filtering) in the AppleScript documentation. ## Reminders[​](#reminders "Direct link to Reminders") When Claude creates an event or task, BusyCal applies your normal default reminder settings, the same ones you have configured in BusyCal's preferences. You do not need to say anything about reminders for this to happen. If you want a specific reminder instead, just ask: > "Create a meeting tomorrow at 2 PM and remind me 15 minutes before." > "Remind me 1 day before and 1 hour before." You can also change reminders on existing items: > "Update that event to remind me 30 minutes before instead." > "Remove the reminders from my Team Sync event." If a calendar account does not support reminders natively, BusyCal automatically falls back to a local reminder on your Mac so you still get notified. ## Travel Time[​](#travel-time "Direct link to Travel Time") An event can carry a travel time, the number of minutes you need to get there before it starts. Claude reads and writes it as `travelTime`, a whole number of minutes. Every event record includes `travelTime`, and the value is `0` when the event has no travel time. Tasks do not have this field. You can set travel time when Claude creates an event, or add it to an event you already have: > "Create a Client Meeting event tomorrow at 2 PM with 30 minutes of travel time." > "Add 45 minutes of travel time to my 10 AM dentist appointment." > "Remove the travel time from that event." On an update, leaving travel time out of the request keeps the current value, and setting it to `0` removes it. For a recurring event, travel time follows the same `scope` rules as the other fields you can update. Travel time does not move the event's start time and does not change its reminders. It applies to timed events only, so all-day events cannot have it, and events on Apple Calendar accounts cannot store it. In both cases Claude reports the error and nothing is changed. Claude sets the number of minutes only. The starting location and the Time to Leave alert are set in BusyCal itself. See [Locations, Maps & Travel Time](/docs/busycal/70603-locations-maps-travel-time.md#travel-time) for how BusyCal calculates travel time. Travel time through the extension requires **BusyCal 2026.3.2** or later and extension version **1.1.0** or later. ## Task Duration[​](#task-duration "Direct link to Task Duration") Set how long a task should take without changing its due date or time. note Task duration through automation is coming in the next BusyCal update and requires extension version **1.2.1** or later. Both the BusyCal app and the extension need to support it. For example, ask Claude: * "Create a task called Prepare slides for tomorrow at 2 PM, with a duration of 45 minutes." * "Change that task's duration to 30 minutes." * "Remove that task's custom duration." Claude uses `durationMinutes` in whole minutes. For example, `durationMinutes: 45` sets a 45-minute duration. Omitting it when creating a task uses BusyCal's normal default. Omitting it when updating a task keeps the current duration. Setting it to `0` removes the custom duration, so BusyCal uses its default display length. Negative values and fractions are rejected. Task results include `durationMinutes`, with `0` meaning no custom duration. Existing durations stored with seconds are rounded to the nearest minute when read. Event tools use start and end times and do not expose this task field. The calendar account must support task durations, or [Sync Extended Task Properties](/docs/busycal/144591-syncing-extended-task-properties.md) must be enabled in BusyCal. Todoist tasks also need a due date and time. Changing the duration of a repeating task requires `scope: one`. This edits the recurring task itself and keeps its repeat rule. The default scope, `all`, is rejected for this change. ## Task Priority and Starred Status[​](#task-priority-and-starred "Direct link to Task Priority and Starred Status") Tasks expose two independent fields: * `priority` is one of `none`, `low`, `medium`, or `high`. * `isStarred` is `true` or `false` and matches BusyCal's starred task state. When creating a task, omit `priority` to use the default priority configured in BusyCal. Send `none` when you explicitly want no priority. Omit `isStarred` to use the normal unstarred default. When updating a task, omit either field to leave it unchanged. Send `priority: none` to clear the priority, and send `isStarred: false` to unstar the task. For a repeating task, changing priority or starred status requires `scope: one`, which edits the one stored recurring task. Set the scope explicitly, because omitting it defaults to `all` and is rejected for these changes. ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") important Install BusyCal in `/Applications` or in your own `~/Applications` folder. The Setapp location, `/Applications/Setapp`, is also supported. The MCP connection cannot find BusyCal anywhere else on disk. **Claude says BusyCal is not available** Make sure BusyCal is installed. The extension launches BusyCal automatically if it is not running, but it needs to be installed first. **Claude cannot find a calendar or item** Ask Claude to list your calendars first, then refer to the calendar by name. Claude will match it to the correct calendar internally. **Availability does not match your work schedule** Check that your working hours are set correctly in BusyCal > Settings > General (`Day starts at`, `Day ends at`, and working days). The extension uses these settings when checking availability. **The extension does not appear in Claude Desktop** Try double-clicking the `busycal.mcpb` file again. Make sure you are running a version of [Claude Desktop](https://claude.ai/download) that supports extensions. **Some documented tools or task options are missing** Install extension version **1.2.1** or later using the [steps above](#install), then quit and reopen Claude Desktop and start a new chat. Check **BusyCal > About BusyCal** to confirm that BusyCal itself is version **2026.3.2** or later. [Task duration](#task-duration) also requires the upcoming BusyCal update. **Claude creates items on the wrong calendar** Tell Claude which calendar to use by name, for example "on my Work calendar". If you do not specify, BusyCal uses its default calendar. **Claude reports "automation socket isn't available"** This error means the extension cannot connect to BusyCal's local automation service. First, confirm you are running **BusyCal 2026.1.3** or later (check **BusyCal > About BusyCal**). If you are already on the correct version and still see this error, re-download and reinstall both BusyCal and the extension: * **Direct purchase**: download and re-install the latest version from [here](https://www.busymac.com/busycal/). * **Setapp**: quit BusyCal, then delete and re-download BusyCal from the Setapp store. * **Mac App Store**: delete the app and re-download it from the App Store. Deleting the app will not delete your data as long as you don't use a 3rd party Cleaner tool. After reinstalling BusyCal, re-install the extension in Claude Desktop (see [Step 2](#install) above), quit and reopen Claude Desktop, then try again in a new chat. --- # Raycast Extension BusyCal's [Raycast](https://www.raycast.com/) extension brings your calendars, events, and tasks into Raycast so you can create, search, and manage calendar items without leaving the keyboard. The extension connects to BusyCal through the same local automation engine used by [AppleScript](/docs/busycal/70624-applescript.md) and the [Claude Desktop extension](/docs/busycal/70624-mcp.md). All data stays on your Mac — nothing is sent to external servers. note The Raycast extension requires **BusyCal version 2026.1.3** or later. ![BusyCal commands in Raycast](https://downloads.busymac.com/resources/img/busycal-mac/raycast.png) ## Requirements[​](#requirements "Direct link to Requirements") * [**BusyCal**](https://busymac.com/busycal) installed on your Mac. * [**Raycast**](https://www.raycast.com/) installed on your Mac. The first time you use a BusyCal command, macOS will ask you to grant Raycast permission to control BusyCal via Automation. Click **OK** to allow it. ## Installing the Extension[​](#install "Direct link to Installing the Extension") Install the extension from its [Raycast Store page](https://www.raycast.com/beehive/busycal), or search for **"BusyCal"** in the Raycast Store. ## Commands[​](#commands "Direct link to Commands") ### Search Items[​](#search-items "Direct link to Search Items") Search your local events and tasks by keyword. Select a result to jump to it in BusyCal. Open Raycast and type **"Search Items"**, then enter your search term. ### Upcoming Items[​](#upcoming-items "Direct link to Upcoming Items") Browse your upcoming events and tasks in a list. The number of days to look ahead is configurable in the extension preferences (default: 7 days). Open Raycast and type **"Upcoming Items"**. ### Create Event[​](#add-event "Direct link to Create Event") Create a new event using a structured form with fields for title, start and end dates, calendar, location, and notes. Open Raycast and type **"Create Event"**. ### Create Task[​](#add-task "Direct link to Create Task") Create a new task using a structured form with fields for title, optional due date, calendar, and notes. Open Raycast and type **"Create Task"**. ### Quick Add Event[​](#quick-add-event "Direct link to Quick Add Event") Create an event using natural language — type the event details in a single line and press Enter. Raycast returns immediately so you can keep working. Open Raycast and type **"Quick Add Event"**, then enter something like: > `Lunch with Sam tomorrow at 1pm /Work` Use `/CalendarName` at the end to specify which calendar to use. ### Quick Add Task[​](#quick-add-task "Direct link to Quick Add Task") Create a task using natural language — same quick entry style as events. Open Raycast and type **"Quick Add Task"**, then enter something like: > `Finish expense report Friday /Personal` ### Find Next Available Time[​](#find-next-available "Direct link to Find Next Available Time") Find the next free time slot in your schedule. You can copy the slot, open it in BusyCal, or create an event directly in that slot. Open Raycast and type **"Find Next Available Time"**. ## Preferences[​](#preferences "Direct link to Preferences") You can configure the extension in Raycast's extension settings (**Raycast > Settings > Extensions > BusyCal**): | Preference | Description | Default | | -------------------------------- | -------------------------------------------------------------------------------------- | ---------- | | **Hide Raycast after quick add** | Dismiss Raycast immediately after a quick add command. | On | | **Upcoming horizon** | How many days to look ahead in the Upcoming view. | 7 days | | **Include tasks in upcoming** | Show tasks alongside events in the Upcoming view. | On | | **Minimum slot duration** | Minimum free slot length for Find Next Available Time (15, 30, 45, 60, or 90 minutes). | 30 minutes | | **Respect working hours** | Only find free time within your configured working hours. | On | Working hours are configured in **BusyCal > Settings > General** (`Day starts at`, `Day ends at`, and working days). The extension uses these settings when checking availability. --- # Syncing Calendar Subscriptions with an iOS Device If you subscribe to a WebDAV calendar in BusyCal on your Mac, you can sync that subscription to your iPhone or iPad to avoid having to subscribe again. You can subscribe to read-only WebDAV calendars in BusyCal, like holidays and sports schedules. See [Subscribing to Public Calendars](/docs/busycal/70601-subscribing-to-public-calendars.md). Once you have subscribed to a WebDAV calendar in BusyCal, you can sync the calendar to your iOS device through iCloud. WebDAV calendars do not appear on icloud.com, but they will appear in BusyCal and on your iOS device. To sync a WebDAV calendar subscription between your Mac and iOS device through iCloud: 1. Control-click the subscribed calendar and choose Get Info from the contextual menu. ![Get Info menu command](https://www.busymac.com/images/bcl3mac-sidebar-subscription-get-info.png) 2. Change the location from On My Mac to your iCloud account and click OK. ![Internet Calendar Info](https://www.busymac.com/images/bcl3mac-us-holidays.png) 3. The WebDAV calendar subscription appears on the iPhone after it syncs with iCloud. ![iOS Calendars list](https://www.busymac.com/images/bcl3mac-ios-calendar-list.png) If you are not syncing with iCloud, you can add WebDAV subscriptions directly on your iOS device with BusyCal for iOS in Settings > Accounts. See [Subscribing to Public Calendars](/docs/busycalios/70664-subscribing-to-public-calendars.md). --- # Using BusyCal with iCloud iCloud is Apple's free online service, which includes calendar syncing among its many features. BusyCal can connect to iCloud Calendar directly for syncing calendars across your devices and sharing them with others. This guide covers everything you need to know about using BusyCal with iCloud, from initial setup to troubleshooting common issues, including when iCloud sync is failing or not working properly. For complete details on setting up and using BusyCal with iCloud, see the following sections: * [Syncing with iCloud](#syncing) * [Sharing Calendars with Others through iCloud](#sharing) * [Hosting Calendars on iCloud](#hosting) * [iCloud Limitations](#limitations) * [Troubleshooting iCloud Sync Issues & Failures](#icloudtroubleshooting) ## Setting Up and Syncing BusyCal with iCloud[​](#syncing "Direct link to Setting Up and Syncing BusyCal with iCloud") important Apple requires *all third-party* apps to connect to iCloud using a special **app-specific password**, which protects your real password. Before adding your iCloud account to BusyCal, you must first generate an app-specific password (explained below). This extra step ensures security while allowing BusyCal to sync with your iCloud data. [Learn how to generate an app-specific password](https://support.apple.com/HT204397). BusyCal can use iCloud to sync calendar data across all your devices. note BusyCal supports multiple iCloud accounts of the same type. Add each Apple ID as a separate iCloud account in **BusyCal > Settings > Accounts** if you need to view calendars from more than one iCloud account side by side. To sync BusyCal with iCloud, do the following: 1. **First and foremost**, navigate to <https://support.apple.com/HT204397> using your browser and follow instructions on generating an app-specific password for your iCloud account (see [demo video below](#app-specific-password)). If you have already performed this step for some other app in the past or for another device running BusyCal, you may re-use the same password on this device. App-specific passwords can be re-used multiple times in several apps, if desired. After you have generated an app-specific password, save it some place secure in order to re-use it on another device running BusyCal. When unsure, generate a new one and copy / paste it somewhere secure. Best Practices Over the years we've gathered some best practices: * If you have a `@mac.com` email address, replace it with `@icloud.com` instead when using with BusyCal ([learn why](/docs/faqs/mac-domain-icloud-sync.md)) * iCloud allows one to generate aliases for their primary iCloud email addresses. When using it with BusyCal, you must only use your primary iCloud email address to login, aliases do not work. * Your device *must* be configured to **Set time and date automatically** under **System Settings > General > Date & Time** otherwise the password will superficially fail to work without an obvious reason. 2. Next, open **BusyCal Menu > Settings > Accounts** 3. Click the `+` (plus) icon, near the bottom left corner of the settings dialog, to add a new account. 4. Choose **iCloud** from the Server Type pop-up menu, then enter your Apple ID / iCloud Email Address. 5. Enter the app-specific password generated in `step 1` above and click **OK**. ![New iCloud Account](https://downloads.busymac.com/resources/img/busycal-mac/icloud_setup.png) #### Generating App-Specific Password[​](#app-specific-password "Direct link to Generating App-Specific Password") The following video demonstrates how to generate and use an app-specific password for iCloud. 1. Log into your iCloud account: <https://account.apple.com/> 2. Generate an app specific password 3. Copy the password and use in BusyCal iOS. Preferably, save this password securely for future use. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/icloud_app_specific_web.webm) note On iCloud, Meeting Invitations that you received from others will automatically get added to your preferred *Meeting Calendar*. You can change this setting under **BusyCal Setting > Accounts > iCloud Account > Meeting Calendar**. ## Sharing Calendars with Others through iCloud[​](#sharing "Direct link to Sharing Calendars with Others through iCloud") Please log into your account on [www.icloud.com](https://www.icloud.com) and setup sharing of calendars there. BusyCal will then pull these changes during the next sync. Once each user has configured BusyCal to sync with their personal iCloud account, your shared calendars will be accessible to you like any other calendar, provided these have been setup on [www.icloud.com](https://www.icloud.com). ### Shared Calendar Messages[​](#shared-calendar-messages "Direct link to Shared Calendar Messages") When using shared calendars, there are two options you may want to enable, for keeping track of changes to events on shared calendars: * First, in BusyCal > Settings > Advanced > Other, select **Confirm changes to events on shared calendars** if you want to display a warning when you edit or delete an event on a shared calendar. * Second, in the Calendar Info dialog for any given calendar (which you can display by double-clicking the calendar name in the calendar side panel), select **Show change notifications in Inbox** to display a badge on the app icon and a message in the Inbox when events are added or changed by others, or deselect it to avoid seeing badges and Inbox notifications for that calendar. ![Enable Change Notifications](https://downloads.busymac.com/resources/img/busycal-mac/change_notification.png) * Open **BusyCal > Settings > General** and select **Inbox Notifications** under **Dock badge count**, if desired. ![Inbox Change Notification Badge Icon](https://downloads.busymac.com/resources/img/busycal-mac/setting_badge_icon_inbox.png) ## Hosting Calendars on iCloud[​](#hosting "Direct link to Hosting Calendars on iCloud") ### How iCloud Syncing Works[​](#how-icloud-syncing-works "Direct link to How iCloud Syncing Works") iCloud functions as a CalDAV server that syncs with client apps. BusyCal (for both macOS and iOS) and the built-in Calendar app on macOS and iOS are CalDAV clients that sync with iCloud. This means any data you enter into the built-in Calendar app on macOS or iOS will sync to BusyCal through iCloud, and vice versa. As long as you have all client apps configured to sync with the same iCloud account, all your calendar data remain in sync. ### Calendars Must Be Hosted on iCloud[​](#calendars-must-be-hosted-on-icloud "Direct link to Calendars Must Be Hosted on iCloud") Calendars must be stored in your iCloud account to sync through iCloud. Adding an iCloud account to BusyCal does not copy calendars from **On My Mac**, Fruux, Google, or other accounts into it. You can move a local calendar to iCloud, [copy a calendar from another service](#copy-from-another-service), or [import its contents into an existing iCloud calendar](#merge-with-a-calendar-on-icloud). ### Move a Calendar to iCloud[​](#move-a-calendar-to-icloud "Direct link to Move a Calendar to iCloud") In BusyCal for Mac, **Move to iCloud** is available only for local calendars under **On My Mac**. It does not appear when you Control-click a calendar under Fruux, Google, Exchange, or another account. For those calendars, use the [export and import steps below](#copy-from-another-service). To move a local calendar such as **Work**: 1. [Add iCloud directly to BusyCal](#syncing), make sure the account is enabled in **BusyCal > Settings > Accounts**, and let it appear in the left sidebar. 2. Under **On My Mac**, Control-click the individual **Work** calendar and choose **Move to iCloud** for the destination account. The command shows the destination account in brackets. 3. Confirm the move. BusyCal moves the local calendar's contents into new calendars under iCloud and removes the local calendar. note **Move to iCloud** removes organizer and attendee details from events. Export a copy before moving a calendar if you need to keep those details. If the command is missing, see [Why is “Move to iCloud” missing?](/docs/faqs/move-to-icloud-missing.md). iCloud stores tasks separately from events and journals. If **Work** contains both, BusyCal creates an event calendar named **Work** and a task calendar named **Work - To Do**. Journals go with the events and remain journals in BusyCal. The task calendar has a checkmark next to its name, as shown below for **DIY**. ![Task Calendars](https://downloads.busymac.com/resources/img/busycal-mac/left_panel_task_checkmark.png) Checking both calendars in the sidebar lets BusyCal display their items together. You can save that selection as a [Smart Filter (calendar set)](/docs/busycal/70612-smart-filters.md#calendar-sets) named **Work** for quick access. They remain separate calendars; the filter does not combine them into one calendar containing all three item types. ### Copy a Calendar from Fruux or Another Service to iCloud[​](#copy-from-another-service "Direct link to Copy a Calendar from Fruux or Another Service to iCloud") Use BusyCal for Mac to export the source calendar, import a local copy, and move that copy to iCloud. Start with one calendar and keep the original calendar and exported file until you have checked the results on your devices. 1. Let BusyCal finish syncing the source account, then select the calendar under **Fruux** or the other account in the left sidebar. 2. Choose **File > Export > Calendar File (.ics)**. In the export dialog, select **Export "My" Private Fields** to include My Notes, My Tags, My URL, and private alarms in the exported copy, then save the file. 3. Choose **File > Import** and select that file. Click **Options** if the import choices are hidden. In **Import events into**, choose **New Calendar**, then click **Import**. This creates a local copy under **On My Mac**. 4. Control-click that local copy and follow [Move a Calendar to iCloud](#move-a-calendar-to-icloud) above. 5. After syncing, check the copied events, journals, and tasks on the devices you use. You can uncheck the original calendar in BusyCal's sidebar while comparing the copies. The imported calendar is a separate copy. Later edits to the original Fruux calendar do not update the iCloud copy. See [Exporting, Importing, and Merging Calendars](/docs/busycal/70618-exporting-importing-and-merging-calendars.md) for more about the file options. ### Merge with a Calendar on iCloud[​](#merge-with-a-calendar-on-icloud "Direct link to Merge with a Calendar on iCloud") For this example, let's say you have a local calendar called "Work" that you want to merge with an existing calendar on iCloud called **Company**. Here's how to do it: 1. Export the **Work** calendar by selecting it in the left sidebar and choosing **File menu > Export > Calendar File (.ics)**. Enable **Export "My" Private Fields** if you want those fields in the copy, and save it to your desktop. Keep the original calendar and exported file until you have checked the imported data. ![File Export](https://downloads.busymac.com/resources/img/busycal-mac/export_calendar_menu.png) 2. Choose **File menu > Import** and select the file you exported in `step 1`. If the **Import events into** section does not appear at the bottom of the dialog, click Options to display it. Select **Existing Calendar**, and choose the **Company** calendar (which is hosted on iCloud). BusyCal adds the events from the **Work** calendar to the **Company** calendar on iCloud. ![File Import](https://downloads.busymac.com/resources/img/busycal-mac/import_work_ics.png) After the import has synced and you have checked the results, you can remove the original **Work** calendar if you no longer need it. note An iCloud calendar that supports only events rejects tasks during import. To import the tasks from a mixed calendar, import the file again into a separate calendar that supports tasks. iCloud CalDAV task calendars and upgraded Apple Reminders lists are separate. If you want the tasks in Apple Reminders, use a list under BusyCal's [Reminders account](/docs/busycal/114450-using-busycal-with-reminders.md) as the import destination. tip After merging the calendars, you can remove duplicate events by choosing **Help > Find Duplicates**. ## Why Doesn't BusyCal Sync Directly with Apple Calendar?[​](#connect-apple-calendar "Direct link to Why Doesn't BusyCal Sync Directly with Apple Calendar?") BusyCal offers direct iCloud syncing via the open [**CalDAV**](https://en.wikipedia.org/wiki/CalDAV) protocol, allowing full access to all features. While it also supports connecting to Apple Calendar without needing to connect to iCloud, this method comes with significant limitations. Apple Calendar restricts third-party apps from accessing many advanced scheduling features when syncing this way, leading to a reduced experience. We've outlined these limitations in [more detail here](/docs/faqs/apple-calendar-read-only.md). ## Why is Push Sync Not Supported?[​](#push-sync "Direct link to Why is Push Sync Not Supported?") The **Push Sync** option in **BusyCal Settings > Accounts > iCloud > Refresh Calendars** is intentionally disabled because iCloud does not allow third-party apps to subscribe to push updates. Instead, you can select a periodic sync interval, such as **Every 5 minutes**. That said, BusyCal intelligently syncs in the background at various times to keep your calendar up to date. The lack of a push sync option should not impact your overall experience. ## iCloud Limitations[​](#limitations "Direct link to iCloud Limitations") iCloud places certain limits on calendar data. ### Quota Limitations[​](#quota-limitations "Direct link to Quota Limitations") Irrespective of how much you're paying iCloud for online storage, iCloud places fixed limits on the amount of data that can be stored within the Calendar app. For instance, you may have a **2 TB** storage option but will still have the following limits applied. These limits also apply to the built-in Apple Calendar app: * Total number of calendars, events, and reminders: 50,000\* * Maximum combined number of calendars and reminder lists you can have: 100\* * Maximum size of all calendar and reminder data (not including attachments): 1GB\* * Maximum number of characters in a reminder title: 1,000\* * Maximum size of a calendar event including attachments: 20MB * Maximum number of attachments per event: 20 * Maximum number of attendees you can invite to an event: 300 * Maximum number of people with whom you can share a private calendar: 100 * If you have upgraded your iCloud reminders on a device running iOS 13, iPadOS, or macOS Catalina or later, these limits on reminders do not apply. Learn more about the Reminders upgrade process. For more information, see [iCloud: Limits for Contacts, Calendars and Reminders](https://support.apple.com/en-us/HT202158). #### Solution[​](#solution "Direct link to Solution") One thing that could help is to archive old events. We have instructions on [how to archive old events here](/docs/busycal/70622-archiving-old-events.md). ### Calendar Limitations[​](#calendar-limitations "Direct link to Calendar Limitations") BusyCal syncs all its data types (events, tasks, journals, graphics, stickies, attachments, tags, etc.) with iCloud. If you are syncing multiple Macs running BusyCal with the same iCloud account, all these data types should sync seamlessly. However, there are some limitations to be aware of when syncing these data types with other apps (such as Calendar for macOS or iOS) through iCloud: * Stickies, Journals, and Graphics in BusyCal sync between BusyCal clients through iCloud, but appear as all-day events in Calendar and other clients. * Tags applied to events in BusyCal sync with other copies of BusyCal through iCloud, but do not appear in Calendar or other clients. * Tasks stored in BusyCal's **Reminders** account sync with the Reminders app. Tasks stored in iCloud CalDAV calendars remain [separate from upgraded Reminders lists](/docs/faqs/112990-reminders-in-ios-13-and-macos-catalina-drops-support-for-caldav.md). ## ⚠️ Troubleshooting iCloud Sync Issues & Failures[​](#icloudtroubleshooting "Direct link to ⚠️ Troubleshooting iCloud Sync Issues & Failures") If your iCloud sync is failing, your calendar is not updating, or iCloud fails to connect (sometimes with cryptic error codes like `-1012`), it may be due to an incorrect or expired **app-specific password**. This can happen for various reasons, especially if you recently reset your main iCloud password—doing so automatically revokes all existing app-specific passwords. The most reliable **solution** is to remove your iCloud account from BusyCal and set it up again by following [these steps](#syncing). Please check tips under the **Best Practices** section as it could be due to one of the things mentioned in that section. #### To remove and re-add your account:[​](#to-remove-and-re-add-your-account "Direct link to To remove and re-add your account:") 1. Open **BusyCal Settings > Accounts**. 2. Select your iCloud account and click `[-]` to delete it. 3. Click `[+]` to add a new account and follow [these steps](#syncing). ### 🛠️ Duplicate Tasks Appearing[​](#️-duplicate-tasks-appearing "Direct link to 🛠️ Duplicate Tasks Appearing") Apple migrated tasks from iCloud Calendars to the dedicated **Reminders** app as part of an upgrade, [explained here](/docs/faqs/112990-reminders-in-ios-13-and-macos-catalina-drops-support-for-caldav.md). This upgrade is triggered when launching the **Reminders** app and tapping the **Upgrade** button. If you did **not** complete the upgrade, your task lists may appear in two places: 1. **Reminders app** 2. **iCloud CalDAV server** Since both still reside on iCloud, adding **both** Reminders and your iCloud account to BusyCal will result in duplicate tasks, as BusyCal will fetch the same data from both sources. To remove duplicates, follow these steps: 1. Open **BusyCal Settings > Accounts**. 2. Select **Reminders** from the list. 3. Click the `[-]` button to delete the **Reminders** account. This ensures that tasks sync **only** from your iCloud account, preventing duplicates. --- # Using BusyCal with Google Google Calendar is a free service for Google users that lets you sync and share calendars. BusyCal can connect to Google Calendar, using it to sync calendars across your devices and share them with others. ## Syncing with Google Calendar[​](#syncing "Direct link to Syncing with Google Calendar") BusyCal offers seamless Google Calendar sync capabilities, allowing you to synchronize your events, tasks, and calendars across all your devices through Google's powerful cloud service. note BusyCal supports multiple Google accounts of the same type. Add each Google account separately in **BusyCal > Settings > Accounts** to view calendars from multiple Google accounts side by side. To sync BusyCal with Google Calendar, do the following: important Before you proceed, please note that Google authentication will fail if your system time is incorrect. Open **System Settings > General > Date & Time** and ensure **Set time and date automatically** is checked. 1. Choose BusyCal > Settings > Accounts. 2. Click the `[+]` (plus) icon to add a new account, from the lower left part of the dialog. 3. Choose Google from the Server Type pop-up menu, enter your Google email address, and click **OK**. ![New Google Account](https://downloads.busymac.com/resources/img/busycal-mac/google_account_add.png) 4. In the window that appears, enter your Google email address and click Next to sign-in, you'll be presented with the following greeting once you do. Click **Continue**. ![Google Login](https://downloads.busymac.com/resources/img/busycal-mac/google_account_signin.png) 5. Next, you'll be presented with a long list of permissions. You **must** click **Select all** on this screen and then click **Continue**. Unchecking any option will break the authentication flow and BusyCal will not be able to perform sync. To act as a calendar replacement, BusyCal requires all of these permissions to allow you to manage your calendar events, meetings and related scheduling tasks. Critical You must grant ALL permissions when prompted by Google. Unchecking any permission will prevent BusyCal from syncing properly with your Google Calendar. These are all required permissions, needed for the various calendaring functions to work correctly. ![Google Permissions](https://downloads.busymac.com/resources/img/busycal-mac/google_account_permissions.png) 6. Finally, you should see a confirmation screen once authentication has completed. You may close the browser tab at this point. ![Google Permissions](https://downloads.busymac.com/resources/img/busycal-mac/google_account_complete.png) BusyCal should begin syncing with Google Calendar. ## Syncing with iCloud and Google Calendar[​](#icloud-google "Direct link to Syncing with iCloud and Google Calendar") BusyCal can sync with both iCloud and Google Calendar. But you cannot sync iCloud calendars with Google Calendar or vice versa. Instead, you can host some calendars on iCloud and some on Google, and configure BusyCal and your iOS devices to sync with both services. Note the following: * If you want to [share calendars with other iCloud users](/docs/busycal/70630-using-busycal-with-icloud.md#sharing), you must [host the calendars on iCloud](/docs/busycal/70630-using-busycal-with-icloud.md#hosting). * If you want to [share calendars with other Google users](#sharing), you must [host the calendars on Google](#hosting). * If you want to sync an iOS device with iCloud or Google, see [Syncing BusyCal with an iOS Device](/docs/busycal/70623-syncing-busycal-with-an-ios-device.md). ## Sharing Calendars with Others through Google[​](#sharing "Direct link to Sharing Calendars with Others through Google") BusyCal enables you to share calendars with other Google users. Once each user has configured BusyCal to sync with their personal Google account, you can share calendars with each other through Google. When a calendar is shared through Google, events can be edited by any user and changes sync between them. ### Share a Calendar with Other Google Users[​](#share-a-calendar-with-other-google-users "Direct link to Share a Calendar with Other Google Users") For example, Fred syncs to his personal Google Calendar account, and Mary syncs to her personal Google Calendar account. Then Fred shares a calendar with Mary using the Google Calendar sharing interface, so that the calendar shows up on Mary’s Google Calendar. Once there, it syncs to Mary’s Mac. Mary can make changes to that calendar on her Mac and those changes sync back to Fred’s Mac through Google Calendar. ### Google Calendar Sharing[​](#google-calendar-sharing "Direct link to Google Calendar Sharing") In this example, we start out with Fred and Mary each syncing BusyCal with their personal Google Calendar accounts, but they are not yet sharing calendars with each other. Fred can share his calendar on [Google Calendar](https://calendar.google.com) with Mary by logging into Google Calendar on the web and clicking the three vertical dots next to the calendar name and then **Settings & Sharing**. Fred then enters Mary’s Google Calendar account ID in the **Shared with** section by clicking on **Add people and groups**, and sets the Permission Settings (`Make changes and manage sharing`, `Make changes to events`, `See all event details`, or `See only free/busy time`) for the calendar. Once Fred has shared his calendar with Mary, it shows up on Mary’s Google Calendar, and from there it automatically syncs to BusyCal on Mary’s Mac. Now Fred and Mary can both make changes to Fred’s shared calendar in BusyCal and the changes sync back and forth through Google. This process can be repeated with other calendars that Fred or Mary want to share with each other or with other Google Calendar users. ### Share a Google Calendar with Everyone[​](#share-a-google-calendar-with-everyone "Direct link to Share a Google Calendar with Everyone") You can also share a Google calendar as a read-only public calendar, available to anyone who uses an app or web service that accepts webcal URLs. For instructions, see [Create & manage a public Google calendar](https://support.google.com/calendar/answer/37083?hl=en\&ref_topic=3417970). ### Shared Calendar Messages[​](#shared-calendar-messages "Direct link to Shared Calendar Messages") When sharing calendars with others, there are two options you may want to enable, for keeping track of changes to events on shared calendars: * First, in BusyCal > Settings > Advanced > Other, select **Confirm changes to events on shared calendars** if you want to display a warning when you edit or delete an event on a shared calendar. * Second, in the Calendar Info dialog for any given calendar (which you can display by double-clicking the calendar name in the calendar side panel), select **Show change notifications in Inbox** to display a badge on the app icon and a message in the Inbox when events are added or changed by others, or deselect it to avoid seeing badges and Inbox notifications for that calendar. ![Enable Change Notifications](https://downloads.busymac.com/resources/img/busycal-mac/change_notification.png) * Open **BusyCal > Settings > General** and select **Inbox Notifications** under **Dock badge count**, if desired. ![Inbox Change Notification Badge Icon](https://downloads.busymac.com/resources/img/busycal-mac/setting_badge_icon_inbox.png) ## Hosting calendars on Google[​](#hosting "Direct link to Hosting calendars on Google") Google Calendar provides CalDAV access for calendar sync. BusyCal and the built-in Calendar app on macOS and iOS can sync Google calendars through CalDAV. BusyCal syncs Google Task Lists directly using Google Tasks APIs (not CalDAV Tasks). Calendars hosted on Google can sync between BusyCal and other apps connected to the same Google account. Each app displays the Google features it supports. See [Google Event Colors](#google-event-colors) for details about color syncing. ### Calendars Must Be Hosted on Google Calendar[​](#calendars-must-be-hosted-on-google-calendar "Direct link to Calendars Must Be Hosted on Google Calendar") All calendars you want to sync between your Macs, iOS devices, and other users must be hosted on Google Calendar. You cannot sync calendars from other sources (On My Mac, iCloud, Exchange, etc.) to Google. If you have any existing calendars hosted elsewhere that you want to host on Google Calendar, you can move them to Google Calendar or merge them with an existing calendar in Google Calendar, as follows. ### Merge with a Calendar on Google Calendar[​](#merge-with-a-calendar-on-google-calendar "Direct link to Merge with a Calendar on Google Calendar") For this example, let’s say you have a local calendar called “Work” that you want to merge with an existing calendar on Google called **Company**. Here’s how to do it: 1. Export the **Work** calendar by selecting it in the left sidebar and choosing **File menu > Export > Calendar File (.ics)**, and save it to your desktop. Then *delete* the **Work** calendar from BusyCal by *control-clicking* on it and choosing **Delete** from the contextual menu. ![File Export](https://downloads.busymac.com/resources/img/busycal-mac/export_calendar_menu.png) 2. Choose **File menu > Import** and select the file you exported in `step 1`. If the **Import events into** section does not appear at the bottom of the dialog, click Options to display it. Select **Existing Calendar**, and choose the **Company** calendar (which is hosted on Google). BusyCal adds the events from the **Work** calendar to the **Company** calendar on Google. ![File Import](https://downloads.busymac.com/resources/img/busycal-mac/import_work_ics.png) tip After merging the calendars, you can remove duplicate events by choosing Help > Find Duplicates. ### Move a Calendar to Google[​](#move-a-calendar-to-google "Direct link to Move a Calendar to Google") For this example, let’s say you have a local calendar hosted on your Mac called “Work” that you want to host on Google. Here’s how you can move it to Google: 1. Export the Work calendar by selecting it in the left sidebar and choosing File > Export > Calendar File (.ics), and save it to your desktop. Then delete the Work calendar from BusyCal by Control-clicking on it and choosing Delete. 2. Login to Google Calendar on the web, click the “Create” link below “My calendars” and create a new calendar called “Work.” 3. In BusyCal, choose **View menu > Refresh Calendars**, and then subscribe to the new Work calendar on Google by checking it in the left sidebar. 4. Choose **File menu > Import**, and select the file you exported in step 1. On the bottom of the import dialog, select the option to Import events into Existing Calendar, and choose the Work calendar (which is hosted on Google). This will add the events from the old Work calendar to the new Work calendar on Google. ## Meeting Rooms[​](#rooms "Direct link to Meeting Rooms") If your Google Workspace account has conference rooms or other bookable resources configured by your organization's admin, BusyCal can show them directly in the Info Panel when editing an event. ![Workspace Rooms](https://downloads.busymac.com/resources/img/busycal-mac/roomgoogle.png) A **Rooms** picker appears in the Info Panel for events on supported Google Workspace accounts. From here you can: * **Browse available rooms** — Rooms are grouped by building. Each room shows its name, floor, and seating capacity. * **See live availability** — BusyCal checks room availability for the event's time window so you can tell at a glance which rooms are free. * **Add or remove rooms** — Click the popup to select a room. Selected rooms are automatically added as resource attendees on the event. You can select multiple rooms if needed. note This feature requires a Google Workspace account whose admin has provisioned calendar resources. It is not available on personal Gmail accounts. If your account has rooms configured but the tile does not appear, try removing and re-adding the account in **BusyCal > Settings > Accounts** to grant any updated permission scopes. tip You can still add any resource as an attendee by typing its resource email address in the Attendees field, as described in the [Google resources FAQ](/docs/faqs/98771-how-do-i-add-google-resources-as-locations-in-busycal.md). The room picker simply makes this easier for rooms that your organization has set up. Room names in the Location field When rooms are added to a Google event, Google may automatically copy the room names into the event's Location field. This means you might see the same room information appear both in the Rooms picker and in the Location field — this is normal behavior from Google, not a duplication by BusyCal. You can clear the Location field if you prefer, though Google may repopulate it the next time the event is updated through Google Calendar or other Google services. If you find the Location field redundant when using rooms, you can hide it entirely from [**BusyCal > Settings > Info Panel**](/docs/busycal/70607-preferences.md#info-panel). ## Google Meets Conference Calls[​](#googlemeets "Direct link to Google Meets Conference Calls") You can add one-click Google Meets meetings to events / invitations. Simply open BusyCal Settings > Info Panel and make sure you have checked the **Google Meets** option. You should now see a *Add Meeting* button appear in the Info Panel when editing events. Clicking on this button will automatically create a conference call (using Google Meets) and add it to the event. ## Google Event Colors[​](#google-event-colors "Direct link to Google Event Colors") Beta availability Support for Google's expanded event palette and custom color labels is currently being tested in beta. Earlier BusyCal versions support Google's standard event colors. BusyCal displays the event colors and label names that Google provides for each calendar. For an event you can edit, choose a color from **Color** in the **Info Panel**. Choose **None** to clear the event's Google color. If Google does not provide a name, BusyCal shows a localized color description. These display names do not rename Google's labels. Event color changes sync between BusyCal and Google Calendar in both directions. Existing Google color assignments are preserved, although a shade may update to match Google's current color definition. Create, rename, recolor, or delete Google color labels in Google Calendar. BusyCal lets you choose an existing label for an event; it does not edit Google's label definitions. Available labels depend on the event's Google calendar. tip Label names and palette changes are refreshed periodically. After changing them in Google Calendar, choose **View > Refresh Calendars** in BusyCal to check for updates immediately. Google color labels are separate from BusyCal **Tags**, **My Tags**, and local **Color Labels**. A BusyCal Color Label or colored tag can still affect the event's appearance after its Google color is cleared. Those BusyCal features do not create or rename Google color labels. See [Tags and event colors](/docs/busycal/70597-tags.md#event-colors). ## Google Limitations[​](#limitations "Direct link to Google Limitations") Google places certain limits on calendar data, which may affect how you use BusyCal or which service you choose for syncing calendars. The following limitations exist when syncing BusyCal with Google Calendar. ### Calendar Limitations[​](#calendar-limitations "Direct link to Calendar Limitations") * Syncing Google Task Lists is supported; however, only the following task properties sync with Google: **title**, **due date**, and **notes**. Unfortunately, Google does not allow third-party apps to sync additional properties such as **due times**, **recurrence**, **alarms**, or **priorities**. * BusyCal, however, lets you set **due times, durations, and other properties**, and these will sync across your devices running BusyCal via our [Extended Sync](/docs/busycal/144591-syncing-extended-task-properties.md) implementation. * Keep in mind that these **extended properties will not appear in Google Calendar** itself due to its current limitations. * Separate timezones cannot be set for start / end dates from BusyCal. Use Google Calendar to enable this per event manually. * Graphics are not supported. * URLs do not sync by Google Calendar so this field is hidden within BusyCal. * Attachments are not supported. * Journals and Stickies sync between BusyCal clients through Google, but they do not appear on Google Calendar in a web browser. * You cannot create new calendars from within BusyCal. You must create calendars on Google. * Floating Time events are not supported and may appear hours early or late in Google Calendar. See [how to prevent and correct Floating Time differences](/docs/faqs/google-calendar-limitations.md#floating-time-events). * Google event colors and label names sync as described in [Google Event Colors](#google-event-colors). Create or change the label definitions in Google Calendar; BusyCal's Tags and local Color Labels are separate. For protocol details, see [Google Calendar CalDAV guide](https://developers.google.com/calendar/caldav/v2/guide) and [Google Tasks API reference](https://developers.google.com/workspace/tasks/reference/rest/v1/tasks). ### Alarm Limitations[​](#alarms "Direct link to Alarm Limitations") * Email alarms are delivered by Google and not by BusyCal. This prevents duplicate email alarms from being delivered by both Google and BusyCal. Be aware, however, that Calendar on macOS delivers email alarms if it is syncing with your Google account, which will result in duplicate email alarms. * SMS alarms are not supported. * Sound alarms are not supported. Google replaces sound alarms (when created using BusyCal) with message-only alarms. ### Meeting Event Limitations[​](#meetings "Direct link to Meeting Event Limitations") * For best results, you should create meetings on your primary Google calendar. This will ensure that the meeting invitations are delivered to attendees by Google and that the attendee responses are properly received and processed by Google. * Attendees cannot add meeting invitations to secondary Google calendars. You can add and accept meeting invitations only on your primary Google calendar. * Meeting invitations will not be delivered to attendees if you create the meeting in BusyCal on a secondary Google calendar. If you want to invite attendees to a meeting on a secondary Google calendar, you must create the meeting on Google Calendar in your web browser. * If an attendee receives a meeting invitation via email addressed to their non-Google email address and adds the meeting to their Google primary calendar, the attendee email address in the meeting reply is changed to their Google email address and the meeting reply is sent to the organizer from Google using the attendee’s Google email address. Since the attendee email address in the reply does not match the original attendee email address, the attendee’s status will probably not be recognized and updated by the organizer. We have listed some [trouble-shooting tips here](/docs/faqs/meeting-invitation-faqs.md). ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") If your Google Calendar account won't sync or connect to BusyCal, there are several common causes and solutions to resolve these synchronization issues. ### 🛠️ Verify System Date & Time Settings[​](#️-verify-system-date--time-settings "Direct link to 🛠️ Verify System Date & Time Settings") Google Calendar authentication will fail if your system's date and time don't match the actual current time. This is a security requirement that prevents connection issues: 1. Open **System Settings > General > Date & Time** 2. Ensure **Set time and date automatically** is enabled 3. If the setting is already enabled, try disabling and re-enabling it to force a time sync 4. Restart BusyCal and attempt to reconnect your Google account ### 🛠️ Check Firewall and Network Security Settings[​](#️-check-firewall-and-network-security-settings "Direct link to 🛠️ Check Firewall and Network Security Settings") Network blocking utilities and firewall applications can prevent BusyCal from communicating with Google Calendar servers. Verify that network access is not being restricted: **macOS Built-in Firewall:** 1. Open **System Settings > Security & Privacy > Firewall** 2. Click **Firewall Options...** to view application-specific settings 3. Ensure BusyCal shows **"Allow incoming connections"** in the list 4. If BusyCal is not listed or shows as blocked, add it or change the setting to allow connections **Third-Party Network Blocking Utilities:** If you're using any network blocking or firewall applications, they may be preventing BusyCal's network communication. Common applications include: * **Little Snitch** * **Objective-See LuLu** * **TripMode** * **Hands Off** * **Vallum** * **Radio Silence** * **Norton Security** * **Data Cever** * **NetBarrier** **To resolve network blocking issues:** 1. Check your firewall application's rules and logs for blocked BusyCal connections 2. Configure the application to allow BusyCal's outgoing communications 3. Ensure BusyCal is permitted to connect to Google's servers (\*.google.com, \*.googleapis.com) 4. Temporarily disable the firewall application to test if it resolves the sync issue 5. Add explicit allow rules for BusyCal if the test confirms the application is blocking connections **Network and VPN Issues:** * Temporarily disable VPN connections during Google authentication * If using corporate networks, verify that CalDAV traffic (port 443/HTTPS) is not blocked * Test from a different network (mobile hotspot) to rule out network-specific restrictions ### 🛠️ Fix Missing or Insufficient Permissions[​](#️-fix-missing-or-insufficient-permissions "Direct link to 🛠️ Fix Missing or Insufficient Permissions") Google Calendar sync failures often occur when BusyCal doesn't have the required permissions to access your calendar data. BusyCal needs full read/write access to function as a complete calendar replacement. **To resolve permission issues:** 1. **Remove the existing account:** * Open **BusyCal > Settings > Accounts** * Select your Google account in the left sidebar * Click the minus **\[-]** button at the bottom to remove the account 2. **Re-add the account with correct permissions:** * Click the plus **\[+]** button to add a new account * Select **Google** from the server type menu * Enter your Google email address and follow the authentication flow 3. **Grant all required permissions:** * When Google's permission screen appears, **you must select "Select all"** * Do not uncheck any permissions, as this will break the sync functionality * Click **Continue** to complete the authentication Critical You must grant ALL permissions when prompted by Google. Unchecking any permission will prevent BusyCal from syncing properly with your Google Calendar. These are all required permissions, needed for the various calendaring functions to work correctly. ### 🛠️ Clear Stale Keychain Items[​](#️-clear-stale-keychain-items "Direct link to 🛠️ Clear Stale Keychain Items") If the above steps don't resolve the issue with connectivity, the problem may be caused by stale OAuth keychain items or browser cache. Follow these steps to clear stored authentication data: **Browser and System Restart:** 1. Restart your Mac to clear any cached authentication data 2. If using Firefox or another browser besides Chrome/Safari, temporarily switch to Chrome as your default browser 3. Quit and relaunch your web browser **Clear Google Account Connections:** 1. Visit [Google Account Connections](https://myaccount.google.com/connections) 2. Remove BusyCal from the list if it appears there 3. For Google Workspace accounts, visit [Google Admin Console](https://admin.google.com/ac/owl/list?tab=apps) and set BusyCal access to "Trusted" **Remove Stored Keychain Items:** 1. Open **Keychain Access** (found in Applications > Utilities) 2. Select **All Items** under Category and ensure **Login** is selected under Keychains 3. Type "BusyCal" in the search field 4. Find all items that start with "BusyCal - Google..." 5. Select all matching items and press Delete to remove them 6. Quit Keychain Access **Re-authenticate with Google:** 1. Launch BusyCal and select **View > Refresh Calendars** (or press Command-R) 2. When prompted, click **Authorize via Web Browser** 3. Log into your Google account in the browser and click **Allow** 4. If syncing multiple Google accounts, ensure you're authorizing the correct account tip After clearing keychain items, BusyCal will rebuild the authentication tokens automatically during the next connection attempt. ### Additional Troubleshooting Steps[​](#additional-troubleshooting-steps "Direct link to Additional Troubleshooting Steps") **For Google Workspace (GSuite) accounts:** * Contact your administrator to ensure third-party apps are not blocked * Verify BusyCal is allowed in Google Workspace app access controls and calendar/task scopes are not restricted by policy **For persistent connection issues:** * Clear your browser cache and cookies for Google services * Try authenticating using a different web browser * Temporarily disable VPN or proxy connections during setup * Ensure your internet connection is stable during the authentication process **If sync continues to fail:** * Check Google's service status at [status.google.com](https://status.google.com) * Wait 15-30 minutes and try reconnecting, as Google may temporarily rate-limit connections * Consider using the PKG installer version of BusyCal if downloaded from a DMG file --- # Using BusyCal with Exchange / Office 365 Microsoft Exchange servers provide a number of online services, among which is syncing and sharing calendars. BusyCal can connect to Exchange servers, using them to sync calendars across your devices and share them with others. important The following applies to **legacy Microsoft Office 365 accounts** via Exchange Web Services (EWS). BusyCal now supports Microsoft's newest sync method: [Microsoft Graph](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md). For details on using BusyCal with Exchange, see the following: * [Syncing with Exchange](#syncing) * [Sharing Calendars with Others through Exchange](#sharing) * [Hosting Calendars on Exchange](#hosting) * [Resources](#resources) * [Microsoft Teams Conference Calls](#teams) * [Exchange Limitations](#limitations) ## Syncing with Exchange[​](#syncing "Direct link to Syncing with Exchange") BusyCal can use Exchange servers to sync calendar data across your devices. note BusyCal supports multiple Exchange accounts of the same type. Add each Exchange or legacy Office 365 account separately in **BusyCal > Settings > Accounts** if you need to view calendars from more than one Exchange system. To sync BusyCal with Exchange, do the following: 1. Choose BusyCal > Settings > Accounts. 2. Click the + (plus) icon to add a new account. 3. Choose Exchange (or Office 365) from the Server Type pop-up menu, enter your Exchange email address and password, and click OK. 4. The autodiscovery process begins and you may be prompted to enter additional login info. Once the process is complete, BusyCal syncs with Exchange. ![Exchange Account](https://www.busymac.com/images/bcl3mac-prefs-accounts-exchange.png) ## Sharing Calendars with Others through Exchange[​](#sharing "Direct link to Sharing Calendars with Others through Exchange") BusyCal enables you to share calendars with other Exchange users. Once each user has configured BusyCal to sync with their personal Exchange account, you can share calendars with each other through Exchange. When a calendar is shared through Exchange, events can be edited by any user and changes sync between them. Calendar sharing involves two steps. First, the host must share calendars with one or more users. Second, the client must subscribe to the shared calendars from the host. ### Share a Calendar with Other Exchange Users[​](#share-a-calendar-with-other-exchange-users "Direct link to Share a Calendar with Other Exchange Users") You can share a calendar through Exchange with other Exchange users in your organization, as follows: 1. *Control-click* the calendar in the left sidebar and choose Get Info from the contextual menu. ![Exchange calendar > Get Info](https://www.busymac.com/images/bcl3mac-sidebar-menu-get-info-exchange.png) 2. Click the plus (+) button and then enter the Exchange email address of the person you want to share the calendar with. ![Exchange Calendar Info](https://www.busymac.com/images/bcl3mac-exchange-calendar-info.png) 3. Choose the access privileges you want to grant them. ![Exchange Access Privileges](https://www.busymac.com/images/bcl3mac-exchange-access-menu.png) Choices are: * **Availability** — User can view your Free/Busy time in the [Availability Viewer](/docs/busycal/70616-free-busy-availability-viewer.md) but cannot view the details of the events. This option is available only for your primary calendar. * **Availability, Title, Location** — User can view your event titles and locations in the [Availability Viewer](/docs/busycal/70616-free-busy-availability-viewer.md). This option is available only for your primary calendar. * **Read Only** — User can view existing events but cannot create or edit them. * **Read & Create** — User can view existing events and create new ones, but cannot edit existing ones. * **Read & Write** — User can view, edit, and create events. * **Delegate** — Same as Read & Write, plus user may create and respond to email meeting requests on your behalf. For more information on meeting invites when using Exchange, see [Exchange Delegates](/docs/faqs/71181-why-does-a-red-badge-appear-on-the-busycal-icon.md#exchangeusers). 4. Click OK. An icon appears next to the calendar in the left sidebar indicating that it is shared. 5. The person you shared with will need to add the shared calendar as described next. note To share a secondary calendar with someone, you must also share your primary calendar with them, with at least Availability access. Once you’ve granted someone Availability access or higher to your primary calendar, you can share secondary calendars with them. ### Subscribe to Shared Calendars[​](#subscribe-to-shared-calendars "Direct link to Subscribe to Shared Calendars") BusyCal supports subscribing to secondary calendars shared to you by other Exchange users. When someone shares a calendar with you, they are usually presented with four options: * Can view when I'm busy * Can view titles and locations * Can view all details * Can edit In order for BusyCal to be able to see these shared calendars, they must give you one of the last two available options. *Can view all details* will give you **read-only** access to their calendar, while *Can edit* will give you **read / write** access. If someone has shared calendars with you through Exchange, you must configure your Exchange account preferences to show the shared calendars, as follows: 1. Choose BusyCal > Settings > Accounts, select your Exchange account in the list on the left, click the Sharing tab, click the plus (+) button, and enter the Exchange email address of the user who is sharing calendars with you. ![Exchange Sharing](https://www.busymac.com/images/bcl3mac-prefs-accounts-exchange-sharing.png) 2. The shared calendars then show up in the left sidebar, where you can subscribe to them by selecting their checkboxes. ![Exchange calendars in sidebar](https://www.busymac.com/images/bcl3mac-sidebar-shared.png) ### Public Calendars[​](#public-calendars "Direct link to Public Calendars") Exchange supports public calendars that can be shared with all users in an organization. Public calendars are created by your network administrator. To subscribe to a public calendar: 1. Choose BusyCal > Settings > Accounts, select your Exchange account in the list on the left, click the Sharing tab, and then click Public Calendars ![Exchange Public Calendars](https://www.busymac.com/images/bcl3mac-prefs-accounts-exchange-sharing-public.png) 2. In the browser that appears, navigate to the public folder that contains the calendar you want to subscribe to. Select it and click Subscribe. ![Public Calendars browser](https://www.busymac.com/images/bcl3mac-prefs-accounts-exchange-sharing-subscribe.png) 3. The public calendar appears in the left sidebar. ![Public calendar in sidebar](https://www.busymac.com/images/bcl3mac-sidebar-public-calendar.png) If you want to unsubscribe from a public calendar, *Control-click* it in the left sidebar and choose Unsubscribe from the contextual menu. ### Notifications of Changes to Shared Calendars[​](#notifications-of-changes-to-shared-calendars "Direct link to Notifications of Changes to Shared Calendars") When sharing calendars with others, there are two options you may want to enable, for keeping track of changes to events on shared calendars: * First, in BusyCal > Settings > Advanced, select “Confirm changes to events on shared calendars” if you want to display a warning when you edit or delete an event on a shared calendar. ![Confirm changes to events on shared calendars](https://www.busymac.com/images/bcl3mac-prefs-advanced-shared.png) ![Alert for shared calendars](https://www.busymac.com/images/bcl3mac-confirm-deletion.png) * Second, in the Calendar Info dialog for any given calendar (which you can display by double-clicking the calendar name in the Calendar List), select “Show change notifications in Inbox” to display a badge on the app icon and a message in the Inbox when events are added or changed by others, or deselect it to avoid seeing badges and Inbox notifications for that calendar. ![Show notifications in Inbox](https://www.busymac.com/images/bcl3mac-caldav-info-top.png) ![Badged icon](https://www.busymac.com/images/bcl3mac-dock-icon-badged.png) Meeting invitations use a separate per-calendar setting. If you want to keep Exchange events visible in BusyCal but handle their invitations in Outlook, see [How can I hide meeting invitations from one calendar?](/docs/faqs/hide-meeting-invitations-from-calendar.md). ![Inbox with three invitations](https://www.busymac.com/images/bcl3mac-inbox-items.png) Click OK to dismiss each message in the Inbox. Or, hold down Option and OK changes to OK All, enabling you to dismiss all messages with a single click. ## Hosting Calendars on Exchange[​](#hosting "Direct link to Hosting Calendars on Exchange") Exchange is a server that hosts your calendars and syncs them with client apps. BusyCal, Outlook, and the built-in Calendar app on macOS and iOS are all client apps that sync with Exchange. This means any data you enter into one client app syncs to all other client apps through Exchange. As long as you have all client apps configured to sync with the same Exchange account, all your calendar and contact data remain in sync. ## Resources on Exchange[​](#resources "Direct link to Resources on Exchange") Conference Rooms / Printers and other resources on an Exchange server can be added to events in BusyCal as an attendee. Simply typing in the name of the resource will auto-complete the resource name for you. You can then click on the "Available Meeting Times" option to open the Availability Viewer. ### Calendars Must Be Hosted on Exchange[​](#calendars-must-be-hosted-on-exchange "Direct link to Calendars Must Be Hosted on Exchange") All calendars you want to sync between your Macs, iOS devices, and other users must be hosted on Exchange. You cannot sync calendars from other sources (On My Mac, iCloud, Google, etc.) to Exchange. If you have any calendars hosted elsewhere that you want to host on Exchange, you can move them to Exchange or merge them with an existing calendar on Exchange. ### Merge with a Calendar on Exchange[​](#merge-with-a-calendar-on-exchange "Direct link to Merge with a Calendar on Exchange") For this example, let’s say you have a local calendar called “Work” that you want to merge with an existing calendar on Exchange called “Fred.” Here’s how to do it: 1. Export the Work calendar by selecting it in the left sidebar and choosing **File > Export > Calendar File (.ics)**, and save it to your desktop. Then delete the Work calendar from BusyCal by *Control-clicking* on it and choosing Delete from the contextual menu. ![File Menu](https://www.busymac.com/images/bcl3mac-file-menu-export.png) 2. Choose File > Import and select the file you exported in step 1. If the “Import events into” section does not appear at the bottom of the dialog, click Options to display it. Select Existing Calendar and choose the Fred calendar (which is hosted on Exchange). BusyCal adds the events from the Work calendar to the Fred calendar on Exchange. ![Import into existing](https://www.busymac.com/images/bcl3mac-import-options.png) note If there are any to dos stored in the calendar you exported in step 1, repeat this process and import them into a to do calendar in step 2. tip After merging the calendars, you can remove duplicate events by choosing Help > Find Duplicates. ### Move a Calendar to Exchange[​](#move-a-calendar-to-exchange "Direct link to Move a Calendar to Exchange") For this example, let’s say you have a local calendar hosted on your Mac called “Home” that you want to host on Exchange. Here’s how you can move it to Exchange: 1. Select the local Home calendar in the left sidebar, choose `File > Export > Calendar File (.ics)`, and save it to your desktop. After successfully exporting the Home calendar, delete it from BusyCal by *Control-clicking* it in the left sidebar and choosing Delete from the contextual menu. 2. Choose `File > New Calendar > Exchange > Event Calendar` to create a new calendar hosted on Exchange and name it “Home.” 3. Choose `File > Import` and select the file you exported in step 1 to import it. If the “Import events into” section does not appear at the bottom of the dialog, click Options to display it. Select Existing Calendar and choose the Home calendar (which is now hosted on Exchange). BusyCal adds the events from the old Home calendar to the the new Home calendar on Exchange. note If there are any to dos stored in the calendar you exported in step 1, repeat this process and create a new to do Calendar in step 2. ## Microsoft Teams Conference Calls[​](#teams "Direct link to Microsoft Teams Conference Calls") With version 2023.1.3 and above, you can add one-click Teams meetings to events / invitations. Simply open BusyCal Settings > Info Panel and make sure you have checked the **Microsoft Teams** option. You should now see a *Add Meeting* button appear in the Info Panel when editing events. Clicking on this button will automatically create a conference call (using Teams) and add it to the event. Note: This option will only be visible for Office 365 accounts that have not disabled Teams in the Office 365 Portal for the specific calendar. This option will also only appear for Enterprise Office 365 accounts. If you have added this account in BusyCal as an *Exchange* account type, instead of an Office 365 account, this option will not be available. First, make sure you have have enabled Microsoft Teams Integration for your account. Open BusyCal Settings > Accounts > Select your Office 365 account from the list and check the option. ![Enable Integration](https://www.busymac.com/images/bcl-teams-enable.png) NOTE: This may not work for certain enterprise accounts where your administrator has not given your account access for 3rd party Teams integration. You may need to reach out to the O365 admin for consent / approval. Next, still in Settings, click on the Info Panel toolbar option and scroll down to enable **Microsoft Teams**. This ensures that the option is visible at all times when editing events. Even when this is not enabled, you can always expand the Info Panel to show all hidden fields. ![Enable Teams](https://www.busymac.com/images/bcl-teams-prefs.png) You should now be able to add Teams meetings to events that belong to your Office 365 account. Please note that if the option does not show up in the Info Panel, the calendar you're adding events to does not explicitly support / allow conference calls. This option is only available for calendars you own under an O365 account. ![Add Teams meeting](https://www.busymac.com/images/bcl-teams-add-meeting.png) After clicking on the *Add Meeting* button, a meeting is automatically added for you during the next time the app performs syncs. ![Join Teams meeting](https://www.busymac.com/images/bcl-teams-join.png) ## Exchange Limitations[​](#limitations "Direct link to Exchange Limitations") Exchange places a number of limits on calendar data, which restrict the range of options you can use in BusyCal. ### Due Times not supported for Tasks[​](#exchange-due-times "Direct link to Due Times not supported for Tasks") Exchange and Office 365 (also known as Microsoft To Dos) do not support due times. You can only assign due dates to tasks. ### Exchange Server Versions Supported[​](#exchange-server-versions-supported "Direct link to Exchange Server Versions Supported") BusyCal supports Exchange 2007 SP3 and later, but BusyMac recommends Exchange 2013, which is more reliable than older versions. ### Outlook.com Accounts[​](#outlook-com "Direct link to Outlook.com Accounts") To connect to Outlook.com accounts, you must either select "Outlook" from the new Account settings or Exchange. Selecting *Office 365* as the account type will not work as this option is only available for enterprise Office 365 accounts. [See this article for more information](/docs/faqs/104475-unable-to-connect-to-an-office-365-outlook-account.md). ### Push[​](#push "Direct link to Push") Push is not supported in Exchange 2007. Push is supported only in Exchange 2010 or later. ### Sharing Secondary Calendars[​](#sharing-secondary-calendars "Direct link to Sharing Secondary Calendars") To [share a secondary calendar](/docs/busycal/70642-using-busycal-with-exchange-office-365.md#sharing) with someone, you must also share your primary calendar with them, with at least Availability access. Once you’ve granted someone Availability access or higher to your primary calendar, you can share secondary calendars with them. ### Free/Busy Availability Viewer[​](#free-busy-availability-viewer "Direct link to Free/Busy Availability Viewer") Only events on your primary calendar affect your availability. Events stored on secondary calendars do not affect your availability and do not appear in the [Availability Viewer](/docs/busycal/70616-free-busy-availability-viewer.md) as blocking your free time. ### Floating Times[​](#floating-times "Direct link to Floating Times") [Floating Times](/docs/busycal/70609-time-zones.md#option-3) are not supported by Exchange. If you create an event in floating time in BusyCal, it appears in GMT time in other apps. ### Alarms[​](#alarms "Direct link to Alarms") * Exchange allows only one alarm per event. * Exchange does not allow Alarms to trigger after an event starts. If you create an alarm that triggers after the start of an event, it is converted to an “At start” alarm after syncing with Exchange. ### Repeating Events[​](#repeating-events "Direct link to Repeating Events") * If you create a repeating event with a recurrence rule that is illegal on Exchange, it is modified during syncing to be compatible with Exchange and your local copy is updated to match Exchange. * Exchange doesn’t allow detached events (or alarms) to overlap the next/previous occurrence of the event. ### WebDAV Subscriptions[​](#webdav-subscriptions "Direct link to WebDAV Subscriptions") iCloud enables you to [sync WebDAV Subscriptions between your Mac and iOS device](/docs/busycal/70629-syncing-calendar-subscriptions-with-an-ios-device.md) by setting the Location of the feed to iCloud. Exchange does not support this feature. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") For Exchange Online, Microsoft already removed **Basic Authentication for EWS** (rollout started on **October 1, 2022**, with enforcement completed in early **2023**). If your app depended on EWS Basic Auth, it would have stopped working then. EWS with Modern Auth (OAuth) remains available for now, but Microsoft has announced a phased EWS retirement for Exchange Online: initial blocking starts on **October 1, 2026**, with full shutdown on **April 1, 2027**. #### Solution: Switch to Microsoft Graph[​](#solution-switch-to-microsoft-graph "Direct link to Solution: Switch to Microsoft Graph") If you're connecting to Microsoft 365 / Outlook.com, the recommended fix is to delete the account and reconnect it as a [Microsoft Graph account](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md). **To switch to Microsoft Graph:** 1. Remove your existing Exchange account from BusyCal 2. Add a new account and select **Office 365 (Microsoft Graph)** from the Account drop-down list 3. Follow the [Microsoft Graph setup guide](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) --- # Using BusyCal with CalDAV CalDAV is an industry standard for calendar servers. BusyCal can connect to CalDAV servers, using them to sync calendars across your devices and share them with others. For details on using BusyCal with CalDAV, see the following: * [Syncing with a CalDAV Server](#syncing) * [Sharing Calendars with Others through CalDAV](#sharing) * [Hosting Calendars on a CalDAV Server](#hosting) ## Syncing with a CalDAV Server[​](#syncing "Direct link to Syncing with a CalDAV Server") To sync BusyCal with a CalDAV server, do the following: 1. Choose BusyCal > Settings > Accounts. 2. Click the plus (+) button to add a new account. 3. Choose CalDAV from the Server Type pop-up menu, and then enter your user name, password, and server address and click OK. For the server address, enter the domain (e.g., myserver.com), and BusyCal attempts to figure out the full path to your account. 4. BusyCal begins syncing with the server and your calendars will appear in the left sidebar. ![New CalDAV Account](https://downloads.busymac.com/resources/img/busycal-mac/custom_caldav_add.png) ## Sharing Calendars with Others through CalDAV[​](#sharing "Direct link to Sharing Calendars with Others through CalDAV") BusyCal enables you to share calendars with other users who are syncing with the same CalDAV server. Once each user has configured BusyCal to sync with their personal account on the CalDAV server, you can share calendars with each other. When a calendar is shared, events can be edited by any user, and changes sync between them. ### Share a Calendar with Other CalDAV Users[​](#share-a-calendar-with-other-caldav-users "Direct link to Share a Calendar with Other CalDAV Users") To share a calendar with other CalDAV users: 1. *Control-click* the calendar in the left sidebar and choose **Get Info** from the contextual menu, or simply double-click on the calendar name. 2. Enable the **Share calendar** checkbox, and then enter the email address of the person you want to share the calendar with. Check “Allow Write” if you want them to have read-write access to your calendar; otherwise, deselect it to give them read-only access. ![CalDAV Share Calendar Info](https://downloads.busymac.com/resources/img/busycal-mac/caldav_share_calendar.png) 3. Click OK. BusyCal begins syncing with the server and an icon appears next to the calendar name indicating that it is shared. 4. The person you shared the calendar with will receive an invitation to share your calendar. Once they accept the invitation, the shared calendar appears on their computer. ### Shared Calendar Messages[​](#shared-calendar-messages "Direct link to Shared Calendar Messages") When sharing calendars with others, there are two options you may want to enable, for keeping track of changes to events on shared calendars: * First, in BusyCal > Settings > Advanced > Other, select **Confirm changes to events on shared calendars** if you want to display a warning when you edit or delete an event on a shared calendar. * Second, in the Calendar Info dialog for any given calendar (which you can display by double-clicking the calendar name in the calendar side panel), select **Show change notifications in Inbox** to display a badge on the app icon and a message in the Inbox when events are added or changed by others, or deselect it to avoid seeing badges and Inbox notifications for that calendar. ![Enable Change Notifications](https://downloads.busymac.com/resources/img/busycal-mac/change_notification.png) * Open **BusyCal > Settings > General** and select **Inbox Notifications** under **Dock badge count**, if desired. ![Inbox Change Notification Badge Icon](https://downloads.busymac.com/resources/img/busycal-mac/setting_badge_icon_inbox.png) ## Hosting Calendars on a CalDAV Server[​](#hosting "Direct link to Hosting Calendars on a CalDAV Server") If you want to sync calendars between a macOS and iOS device or share calendars with others without having to rely on a cloud syncing service like iCloud or Google, you can host your own CalDAV server on your local area network. BusyCal (for both Mac and iOS) and the built-in Calendar app on macOS and iOS are all client apps that sync with CalDAV servers. This means any data you enter into one client app will sync to all other client apps through the server. As long as you have all client apps configured to sync with the same server, all your calendar data remains in sync. ### Calendars Must Be Hosted on Server[​](#calendars-must-be-hosted-on-server "Direct link to Calendars Must Be Hosted on Server") All calendars you want to sync between your Macs, iOS devices, and other users, must be hosted on the CalDAV server. You cannot sync calendars from other sources (On My Mac, iCloud, Google, Exchange, etc.) to the server. If you have any existing calendars hosted elsewhere that you want to host on the server, you can move them to the server or merge them with an existing calendar on the server by following the instructions for [Exporting, Importing and Merging Calendars](/docs/busycal/70618-exporting-importing-and-merging-calendars.md). ### Other CalDAV Servers[​](#other-caldav-servers "Direct link to Other CalDAV Servers") You may want to consider third-party servers such as Kerio or Zimbra. Both support CalDAV and are fully compatible with BusyCal. * [Kerio Connect](https://www.kerio.com/products/kerio-connect) * [Zimbra Collaboration](https://www.zimbra.com/products/zimbra-collaboration/features) There are also many service providers that provide Kerio and Zimbra hosting, including: * [GetSync’d Hosted Kerio](https://www.getsyncd.com/index.php) * [zMailCloud - Zimbra hosting](https://zmailcloud.com) ## Delegates[​](#delegates "Direct link to Delegates") For CalDAV servers that support delegation, you will see a **Delegates** option appear under account settings (BusyCal > Settings > Accounts > Selected account). Here, you can edit and add email addresses of other users on the same CalDAV server that you would like to give access to. --- # Using BusyCal with Fruux Fruux is a popular third-party CalDAV server. As such, you can connect to it with BusyCal for calendar syncing and sharing. BusyCal can connect to Fruux, using it to sync calendars across your devices and share them with others. important As of July 2020, Fruux servers have introduced a bug where it would either return malformed responses to requests or would fail to process requests of a certain size. This bug has not been fixed (last checked Jan 2022) and affects everyone. Fruux customer care has not responded to complaints. Unfortunately we would not recommend using Fruux. Instead please explore many of the other popular services out there: iCloud / Google / Fastmail and so on To transfer calendars to iCloud, follow [Copy a Calendar from Fruux to iCloud](/docs/busycal/70630-using-busycal-with-icloud.md#copy-from-another-service). The guide explains how to make a local copy first, why **Move to iCloud** is absent on Fruux calendars, and how events, journals, and tasks are organized after the move. For details on using BusyCal with Fruux, see the following: * [Syncing with Fruux](#syncing) * [Sharing Calendars wth Others through Fruux](#sharing) * [Hosting Calendars on Fruux](#hosting) ## Syncing with Fruux[​](#syncing "Direct link to Syncing with Fruux") BusyCal can use Fruux to sync calendar data across your devices. To sync BusyCal with Fruux, do the following: 1. Choose BusyCal > Settings > Accounts. 2. Click the + (plus) button to add a new account. 3. Choose Fruux from the Server Type pop-up menu, enter your Fruux email address and password, and click OK. ![Add Fruux account](https://www.busymac.com/images/bcl3mac-connect-fruux.png) ## Sharing Calendars wth Others through Fruux[​](#sharing "Direct link to Sharing Calendars wth Others through Fruux") BusyCal enables you to share calendars with other Fruux users. Once each user has configured BusyCal to sync with their personal Fruux account, you can then share calendars with each other through Fruux. When a calendar is shared through Fruux, events can be edited by any user and changes sync between them. ### Share a Calendar with Other Fruux Users[​](#share-a-calendar-with-other-fruux-users "Direct link to Share a Calendar with Other Fruux Users") To share a calendar with other Fruux users: 1. Control-click the calendar in the left sidebar and choose Get Info from the contextual menu. ![Get Info](https://www.busymac.com/images/bcl3mac-sidebar-menu-get-info.png) 2. Select the Share calendar checkbox. 3. Enter the Fruux email address of the person you want to share the calendar with. Select “Allow Write” if you want them to have read-write access, or deselect it to give them read-only access. ![Share a Fruux calendar](https://www.busymac.com/images/bcl3mac-caldav-calendar-info.png) 4. Click OK. BusyCal begins syncing with Fruux and an icon appears next to the calendar name indicating that it is shared. 5. The person(s) you shared with will receive a notification from Fruux inviting them to add the shared calendar. If they accept, the shared calendar appears in the left sidebar. ### Shared Calendar Messages[​](#shared-calendar-messages "Direct link to Shared Calendar Messages") When sharing calendars with others, there are two options you may want to enable, for keeping track of changes to events on shared calendars: * First, in BusyCal > Settings > Advanced, select “Confirm changes to events on shared calendars” if you want to display a warning when you edit or delete an event on a shared calendar. ![Shared calendar notifications](https://www.busymac.com/images/bcl3mac-prefs-advanced-shared.png) ![Shared Calendar change alert](https://www.busymac.com/images/bcl3mac-confirm-deletion.png) * Second, in the Calendar Info dialog for any given calendar (which you can display by double-clicking the calendar name in the Calendar List), select “Show change notifications in Inbox” to display a badge on the app icon and a message in the Inbox when events are added or changed by others, or deselect it to avoid seeing badges and Inbox notifications for that calendar. ![Notifications pref for shared calendar](https://www.busymac.com/images/bcl3mac-caldav-info-top.png) ![Dock icon badged](https://www.busymac.com/images/bcl3mac-dock-icon-badged.png) ![Inbox showing invitations](https://www.busymac.com/images/bcl3mac-inbox-items.png) Click OK to dismiss each message in the Inbox. Or, hold down Option and OK changes to OK All, enabling you to dismiss all messages with a single click. ## Hosting Calendars on Fruux[​](#hosting "Direct link to Hosting Calendars on Fruux") Fruux is a CalDAV server that hosts your calendars and syncs them with client apps. BusyCal and the built-in Calendar app on macOS and iOS are all client apps that sync with Fruux. This means any data you enter into one client app will sync to all other client apps through Fruux. As long as you have all client apps configured to sync with the same Fruux account, all your calendar and contact data remain in sync. ### Calendars Must Be Hosted on Fruux[​](#calendars-must-be-hosted-on-fruux "Direct link to Calendars Must Be Hosted on Fruux") All calendars you want to sync between your Macs, iOS devices, and other users, must be hosted on Fruux. You cannot sync calendars from other sources (On My Mac, iCloud, Google, Exchange, etc.) to Fruux. If you have any existing calendars hosted elsewhere that you want to host on Fruux, you can move them to Fruux or merge them with an existing calendar on Fruux. ### Merge with a Calendar on Fruux[​](#merge-with-a-calendar-on-fruux "Direct link to Merge with a Calendar on Fruux") For this example, let’s say you have a local calendar called “Work” that you want to merge with an existing calendar on Fruux called “Fred.” Here’s how to do it: 1. Export the Work calendar by selecting it in the left sidebar and choosing **File > Export > Calendar File (.ics)**, and save it to your desktop. Then delete the Work calendar from BusyCal by Control-clicking on it and choosing Delete. ![Export on File Menu](https://www.busymac.com/images/bcl3mac-file-menu-export.png) 2. Choose File > Import, and select the file you exported in step 1. On the bottom of the import dialog, select the option to Import events into Existing Calendar, and choose the Fred calendar (which is hosted on Fruux). This will add the events from the Work calendar to the Fred calendar on Fruux. ![Import events into Existing Calendar](https://www.busymac.com/images/bcl3mac-import-options.png) tip After merging the calendars, you can remove duplicate events by choosing Help > Find Duplicates. ### Move a Calendar to Fruux[​](#move-a-calendar-to-fruux "Direct link to Move a Calendar to Fruux") For this example, let’s say you have a local calendar hosted on your Mac called Home that you want to host on Fruux. Here’s how you can move it to Fruux: 1. Select the local Home calendar in the left sidebar, choose **File > Export > Calendar File (.ics)**, and save it to your desktop. After successfully exporting the Home calendar, delete it from BusyCal by Control-clicking it in the left sidebar and choosing Delete from the contextual menu. 2. Choose File > New Calendar > Fruux to create a new calendar hosted on Fruux and name it “Home.” 3. Choose File > Import and select the file you exported in step 1 to import it. If the “Import events into” section does not appear at the bottom of the dialog, click Options to display it. Select Existing Calendar and choose the Home calendar (which is now hosted on Fruux). BusyCal adds the events from the old Home calendar to the new Home calendar on Fruux. --- # LAN Calendar Sharing BusyCal allows you to share calendars peer-to-peer with other BusyCal users on your local area network using Bonjour zero-configuration networking. The BusyCal peer-to-peer sharing model allows users to publish local calendars on their LAN that other BusyCal users can subscribe to without requiring a server or cloud-based service such as iCloud, Google, or Exchange. In effect, this lets you view and share offline calendars between two or more macs. note This peer-to-peer method of sharing is supported only by BusyCal, and is not supported by the Calendar app for iOS, BusyCal for iOS, or other clients. If you want to sync calendars with an iOS device, or share calendars with users who are not running BusyCal, you should use a cloud syncing service such as iCloud, Google, or Exchange. ## Publishing Calendars[​](#publishing-calendars "Direct link to Publishing Calendars") To publish a calendar or address book on your LAN, Control-click the calendar and select Publish to LAN. ![Publish to LAN](https://www.busymac.com/images/bcl3mac-lan-publish-to-lan.png) An icon appears next to the calendar name indicating that it is being published. ![Published calendar in sidebar](https://www.busymac.com/images/bcl3mac-lan-published.png) ### Publish Options[​](#publish-options "Direct link to Publish Options") To set access privileges for the published calendar, double-click it to open the Info dialog. The Publish Options section enables you to specify the access privileges for a calendar book by setting a combination of read-only and read-write passwords. When a user subscribes to a calendar they will be granted the appropriate privileges based on the password they enter. ![Local Calendar Info](https://www.busymac.com/images/bcl3mac-lan-calendar-info.png) There are four possible combinations of access privileges, as follows: * **Everyone can read and write** — Leave both passwords blank to allow everyone full read-write access to your calendar without requiring a password. * **Everyone can read; write protected** — Leave the read-only password blank and enter a read-write password to allow everyone read access, while requiring a password for read-write access. * **Read and write protected** — Enter a password in both fields to require a password to read or edit your calendar. Use a different password for each so subscribers will be granted the appropriate privileges based on the password they enter (either a read-only password or read-write password). * **Read protected; no write access** — Enter a read-only password and leave the read-write password blank to require a password for reading, while prohibiting write access. Once a calendar is being published on the LAN, other BusyCal users on the LAN can subscribe to it. ## Subscribing to Calendars[​](#subscribing-to-calendars "Direct link to Subscribing to Calendars") If a BusyCal user on your network is publishing calendars, the calendars will automatically appear in your source list in gray. You may subscribe to a calendar by selecting its checkbox, at which point its color changes from gray to some other color, and the calendar is synced to your Mac. ![LAN calendars unsubscribed](https://www.busymac.com/images/bcl3mac-lan-unsubscribed.png)![LAN calendars subscribed](https://www.busymac.com/images/bcl3mac-lan-subscribed.png) If the calendar is password protected, you’ll be prompted to enter a password for read-only or read-write access. If you have write privileges, you may edit events or contacts on that calendar, and those changes are synchronized with the host that is publishing the calendar. ### Subscribe Options[​](#subscribe-options "Direct link to Subscribe Options") When you subscribe to a calendar, all events, tasks, alarms, and attachments are synced with your Mac. If you like, you can remove tasks, alarms and/or attachments by double-clicking the calendar to open the Info dialog and selecting the appropriate Remove checkboxes. ![LAN Calendar Info](https://www.busymac.com/images/bcl3mac-subscribed-lan.png) ### Unsubscribe[​](#unsubscribe "Direct link to Unsubscribe") Once you've subscribed to a calendar, you can toggle the display of that calendar by selecting its checkbox. Even when a subscribed calendar is not being displayed, it remains in sync with the host. If you want to unsubscribe, you can Control-click the calendar and choose Unsubscribe from the contextual menu. ![Unsubscribe from LAN calendar](https://www.busymac.com/images/bcl3mac-lan-unsubscribe.png) ## Publishing Calendars on a Dedicated Server[​](#publishing-calendars-on-a-dedicated-server "Direct link to Publishing Calendars on a Dedicated Server") The publisher of a calendar is the host, and the subscriber is the client. There is only one host for each calendar, but there can be multiple clients. You may want to consolidate all the calendars you want to share on your network and publish them from a single host computer or dedicated server. ### Publishing Calendars on a Central Host[​](#publishing-calendars-on-a-central-host "Direct link to Publishing Calendars on a Central Host") To publish all calendars from a central host, you'll need to transfer the calendars you want to share to the host computer. 6. On each client, export the calendars you want to move to the host by selecting the calendar and choosing File > Export > Calendar File (.ics). After successfully exporting each calendar, delete it on the client by Control-clicking it and choosing Delete from the contextual menu. Then transfer the exported calendar files to the host computer (via email or file sharing). 7. On the host, double-click the calendar files to import them. Then publish the calendars on the LAN. 8. On each client, subscribe to the calendars being published by the host. ## Shared Calendar Messages[​](#shared-calendar-messages "Direct link to Shared Calendar Messages") When sharing calendars with others, there are two options you may want to enable, for keeping track of changes to events on shared calendars: First, in BusyCal > Settings > Advanced, select “Confirm changes to events on shared calendars” if you want to display a warning when you edit or delete an event on a shared calendar. ![Confirm shared calendar changes](https://www.busymac.com/images/bcl3mac-prefs-advanced-shared.png) ![Event is on shared calendar](https://www.busymac.com/images/bcl3mac-confirm-deletion.png) Second, in the Calendar Info dialog for any given calendar (which you can display by double-clicking the calendar name in the Calendar List), select “Show change notifications in Inbox” to display a badge on the app icon and a message in the Inbox when events are added or changed by others, or deselect it to avoid seeing badges and Inbox notifications for that calendar. ![Calendar Info - show notifications](https://www.busymac.com/images/bcl3mac-caldav-info-top.png) ![Dock icon + badge](https://www.busymac.com/images/bcl3mac-dock-icon-badged.png) ![Inbox has invitations](https://www.busymac.com/images/bcl3mac-inbox-items.png) Click OK to dismiss each message in the Inbox. Or, hold down Option and OK changes to OK All, enabling you to dismiss all messages with a single click. --- # Sharing Calendars BusyCal enables you to share calendars with other users for collaborative teamwork and family scheduling. ## Calendar Sharing Options[​](#calendar-sharing-options "Direct link to Calendar Sharing Options") BusyCal provides multiple ways to create collaborative calendars with customizable permissions. You can share calendars with family members, colleagues, or other collaborators using various services. You can share calendars with others using one or more of the following methods: * [Sharing Calendars with others through iCloud](/docs/busycal/70630-using-busycal-with-icloud.md#sharing) * [Sharing Calendars with others through Google](/docs/busycal/70636-using-busycal-with-google.md#sharing) * [Sharing Calendars with others through Exchange](/docs/busycal/70642-using-busycal-with-exchange-office-365.md#sharing) * [Sharing Calendars with others through CalDAV](/docs/busycal/70647-using-busycal-with-caldav.md#sharing) * [Sharing Calendars with others through Fruux](/docs/busycal/70651-using-busycal-with-fruux.md#sharing) * [Sharing Calendars with others on a LAN](/docs/busycal/70655-using-busycal-on-a-lan.md) ## Calendar Sharing Permissions[​](#sharing-permissions "Direct link to Calendar Sharing Permissions") When sharing calendars, you can typically set different permission levels: * **View Only** - Recipients can see events but cannot make changes * **View and Edit** - Recipients can see and modify events * **Full Access** - Recipients can see, modify, and manage sharing settings The exact permission options vary depending on which sharing service you use. --- # Archiving Old Tasks If you've accumulated a large number of completed tasks over the years — especially in Apple's Reminders — archiving or deleting old tasks can significantly improve sync performance and speed up BusyCal. Large task lists with hundreds or thousands of old completed items are a common cause of slow or stuck Reminders sync. important Apple's Reminders has [system limits](https://support.apple.com/103188) on the number of items it can store. If you're experiencing slow or stuck Reminders sync, trimming old completed tasks is one of the most effective things you can do. See [Reminders Sync Slow or Stuck](/docs/busycal/114450-using-busycal-with-reminders.md#sync-slow-or-stuck) for more troubleshooting steps. ## Quick Summary[​](#quick-summary "Direct link to Quick Summary") A quick way to archive old completed tasks: 1. Use a **Smart Filter** in List View to display only old completed tasks (see below). 2. Select all and **move them to an On My Mac calendar** to archive them locally. 3. **Delete them from the original task list** to free up space on the server. 4. Uncheck the archive calendar in the sidebar to hide archived tasks from your daily view. This moves your old tasks to a local, offline calendar and frees up space in your cloud account (iCloud, Google, etc.), which in turn improves sync speed. ## Detailed Steps[​](#detailed-steps "Direct link to Detailed Steps") ### 1. Switch to List View[​](#1-switch-to-list-view "Direct link to 1. Switch to List View") Click the **List View** button in the toolbar, or choose **View > List**. List View makes it easy to see, sort, and bulk-select tasks. ### 2. Select the Task Calendars to Archive[​](#2-select-the-task-calendars-to-archive "Direct link to 2. Select the Task Calendars to Archive") In the left sidebar, check only the task calendars / Reminders lists that contain the old tasks you want to archive. Uncheck everything else so you're only looking at the relevant tasks. ### 3. Create an Archive Smart Filter for Tasks[​](#3-create-an-archive-smart-filter-for-tasks "Direct link to 3. Create an Archive Smart Filter for Tasks") Create a Smart Filter that displays only old completed tasks: 1. Choose **Filter > New Smart Filter** (or press `⌘-Control-N`). 2. Select **Show events that match the following conditions**. 3. Add the following conditions: <!-- --> * **event type** *is* **task** — Show only tasks, not events. * **is completed** — Show only completed tasks. * **due date** *is before the date* **\[your cutoff date]** — For example, `01/01/2025` to show all tasks completed before this year. Adjust the date to suit your needs. 4. Name the Smart Filter **"Archive Old Tasks"** and click **OK**. The Smart Filter is applied and List View now displays only completed tasks older than your cutoff date. ### 4. Set a Wide Date Range[​](#4-set-a-wide-date-range "Direct link to 4. Set a Wide Date Range") In List View, click the date range pop-up next to the date navigation controls, and set it to **Decade** (or a suitably wide range). Use the navigation arrows to scroll until you can see all the old tasks you want to archive. ![Drop Down](https://downloads.busymac.com/resources/img/busycal-mac/archivedateselection.png) ### 5. Archive or Delete the Old Tasks[​](#5-archive-or-delete-the-old-tasks "Direct link to 5. Archive or Delete the Old Tasks") #### Option A: Archive to a Local Calendar[​](#option-a-archive-to-a-local-calendar "Direct link to Option A: Archive to a Local Calendar") If you want to keep the tasks for reference but remove them from your cloud account: 1. Create a new local calendar: choose **File > New Calendar > On My Mac** and name it **"Archived Tasks"**. 2. Press `⌘-A` to select all the tasks shown in the filtered list. 3. Control-click one of the selected tasks and choose **Calendar > Archived Tasks** from the contextual menu. This moves all selected tasks to the local calendar. danger This permanently moves the tasks off the server. Wait for BusyCal to finish syncing — this may take a while for large lists. 4. Once moved, uncheck the **Archived Tasks** calendar in the sidebar to hide them from your daily view. They remain searchable and accessible whenever you need them. #### Option B: Delete Old Tasks[​](#option-b-delete-old-tasks "Direct link to Option B: Delete Old Tasks") If you don't need to keep the old tasks at all: 1. Press `⌘-A` to select all the tasks shown in the filtered list. 2. Press **Delete** to remove them. danger This permanently deletes the selected tasks and cannot be undone! 3. Wait for BusyCal to finish syncing the deletions with your server. ### 6. Clean Up[​](#6-clean-up "Direct link to 6. Clean Up") After archiving or deleting, you can remove the **"Archive Old Tasks"** Smart Filter if you no longer need it, or keep it for periodic maintenance. Choose **Filter > Edit Smart Filters** to manage your filters. tip Consider making this a regular habit — once or twice a year, run through the steps above to keep your task lists lean. This is especially important for Reminders users, where large lists can cause sync to slow down or stall. ## Exporting Archived Tasks[​](#exporting-archived-tasks "Direct link to Exporting Archived Tasks") If you've archived tasks to a local **On My Mac** calendar and want to back them up externally: 1. Select the **Archived Tasks** calendar in the left sidebar. 2. Choose **File > Export > Calendar File (.ics)** and save the file. 3. After exporting, you can optionally delete the local calendar if you no longer need it in BusyCal. ## Related Docs[​](#related-docs "Direct link to Related Docs") * [Archiving Old Events](/docs/busycal/70622-archiving-old-events.md) * [Smart Filters](/docs/busycal/70612-smart-filters.md) * [Using BusyCal with Reminders](/docs/busycal/114450-using-busycal-with-reminders.md) * [List View](/docs/busycal/70591-list-view.md) --- # Getting Started with Bookings Start on a Mac with [access to Bookings](/docs/bookings.md#requirements) and an email account you can open. These steps take you through signing in, choosing your calendars and sharing your first booking page. You can then [use Bookings on your iPhone, iPad and other Macs](#other-devices). ## Step 1: Turn On Bookings in BusyCal[​](#sign-in "Direct link to Step 1: Turn On Bookings in BusyCal") Sign in with your email address to turn on Bookings. There's no password; BusyCal emails you a six-digit code. 1. Choose **BusyCal > Settings**, then select **Bookings** in the sidebar. 2. Click **Sign In…**. 3. Enter your email address. 4. The first time you sign in on a Mac, read the [Bookings Terms](/bookings-terms.md) and the [Privacy Notice](/bookings-privacy.md), which are linked below the checkbox. If you agree to them, select the checkbox. 5. Click **Continue**. BusyCal emails you a code. 6. Enter the code, then click **Sign In**. BusyCal sends nothing to Bookings until you agree to the terms and click **Continue**. The code expires after 10 minutes. Its expiry time appears in the sign-in window. * If the email doesn't arrive, check your junk mail folder. When the countdown next to **Send New Code** ends, you can click it to get a new code. * To sign in with a different address, click **Use a Different Email**. ## Step 2: Add Your Name[​](#profile "Direct link to Step 2: Add Your Name") Your profile needs a name and username before you can turn on a booking page. Bookings suggests a username from your email address, so you usually only need to add your name. 1. Click **Edit Profile…**. 2. Enter your **Name**. People see it on your profile page and your booking pages. 3. Check your **Username** and the profile link below it, such as `busybook.me/jane`. 4. Click **Save**. To add a photo, click **Choose Photo…** in the same sheet. You can change your name, username and photo later, in BusyCal or in your dashboard. See [Your Profile and Appearance](/docs/bookings/profile-and-appearance.md). When you have a username, BusyCal shows your profile link below your name, with **Copy Link** and **Open in Browser**. ## Step 3: Choose the Calendars to Check for Free Times[​](#busy-calendars "Direct link to Step 3: Choose the Calendars to Check for Free Times") Under **Free Times**, choose which calendars should block booking times. **Calendars to check** shows the current selection, such as **All calendars** or **3 of 5 calendars**. BusyCal shares their busy times with Bookings, without event details. You can include On My Mac calendars too. They don't need a calendar account, though BusyCal needs an internet connection to share their busy times with Bookings. To leave a calendar out, such as a shared family calendar: 1. Click **Choose Calendars…**. 2. Uncheck the calendars whose events shouldn't stop people from booking. 3. Click **Save**. Calendar subscriptions, such as a webcal link, start unchecked. To have one count as busy, check it in the same sheet. BusyCal updates your busy times automatically while it runs. To send an update now, click **Sync Free Times Now** under **Calendars to check**. The button shows **Syncing Free Times…** until it finishes. See [Busy Calendars](/docs/bookings/availability-and-busy-calendars.md#busy-calendars). ## Step 4: Open Your Dashboard[​](#dashboard "Direct link to Step 4: Open Your Dashboard") You create booking pages in your dashboard on the web. 1. In **BusyCal > Settings > Bookings**, click **Open Dashboard** below your profile link. 2. Enter the same email address that you use in BusyCal, then click **Email Me a Sign-In Link**. 3. In the email, click the link, then click **Sign In** in your browser. Or type the six-digit code from the email in your browser, then click **Sign In**. The link and code are single-use and expire after 10 minutes. Your browser stays signed in until you sign out or leave the dashboard unused for 90 days. While you're signed in, **Open Dashboard** takes you straight there. See [Signing In to Your Dashboard](/docs/bookings/account-security-and-privacy.md#dashboard-sign-in). ## Step 5: Create Your First Booking Page[​](#first-page "Direct link to Step 5: Create Your First Booking Page") 1. In your dashboard, click **Booking pages**, then click **New Booking Page**. 2. Under **Basics**, enter a **Title**, such as "Intro call". The **Link** follows the title until you type your own link. 3. Under **Who can book**, choose **Link only** or **On your profile**. 4. Under **Calendar**, choose where to save the meetings in **Add bookings to**. The default is the first calendar in the menu with an account that's turned on in BusyCal. 5. Under **Availability**, check **Duration** and **Weekly hours**. A new booking page offers 30-minute meetings, Monday to Friday, from 9:00 AM to 5:00 PM, in your time zone. 6. Click **Create Booking Page** at the bottom of the window. ![The New booking page editor on Basics, with the title Portfolio review, its link following the title, the Who can book choices and Create Booking Page at the bottom](https://downloads.busymac.com/resources/img/bookings/page-editor-basics-2026-10-20.png) The booking page's summary opens, with its link at the top. [Booking Pages](/docs/bookings/booking-pages.md) describes every setting. The **Add bookings to** menu lists calendars that support events and that you can edit, in accounts such as iCloud, Google or Microsoft 365. Each booking page can use a different calendar. On My Mac calendars On My Mac calendars can't receive bookings because they have no account to send invitations. Choose an iCloud, Google or other account calendar instead. You can still include On My Mac calendars when [checking for conflicts](#busy-calendars). ## Step 6: Share Your Link[​](#share "Direct link to Step 6: Share Your Link") * **Share one meeting type:** Copy its link from the page summary or its card in **Booking pages**. You can also click **Open** and copy the address from your browser. * **Let people choose a meeting type:** Share your profile link. It lists the pages set to **On your profile**. Click **Copy Link** in **BusyCal > Settings > Bookings**, or copy it from **Your links** on the dashboard's **Overview**. Click **Preview** on a page's card to try the form without making a booking. Keep BusyCal running on your Mac. BusyCal shares your busy times and adds each booking to your calendar. Your iPhone, iPad and other Macs do this too, as described below. ## Using Bookings on Your Other Devices[​](#other-devices "Direct link to Using Bookings on Your Other Devices") After you sign in on one Mac, BusyCal uses iCloud to set up Bookings on your other devices. Devices using the same iCloud account need no separate sign-in. Each device can: * Share updates from your chosen busy calendars. The calendar selection applies to all your devices. * Add new bookings to your calendar, which then syncs through the calendar account. * Show booking and request updates in its Inbox. BusyCal receives updates through push notifications and checks regularly as well, normally every 30 minutes. Without push notifications, it checks about every 15 minutes. On iPhone and iPad, these updates depend on BusyCal being open or iOS allowing background refresh. On a Mac, leave BusyCal running. A Mac that uses a different iCloud account can use Bookings too. Open **BusyCal > Settings > Bookings** on that Mac, and sign in with the same email address. The **Devices** group in **BusyCal > Settings > Bookings** on your Mac lists your other devices that use Bookings. See [Devices That Use Bookings](/docs/bookings/account-security-and-privacy.md#devices). --- # Date Picker important Available in **BusyCal version 2026.2.1** or later BusyCal's date picker goes far beyond a traditional calendar picker. Instead of clicking through months to find the right date, you can simply type what you mean — like `tomorrow morning`, `next fri`, or `w19` — and BusyCal instantly suggests matching dates for you to choose from. The date picker appears in the **starts** and **ends** fields of the [Info Panel](/docs/busycal/70595-info-panel.md). Just click a date field and start typing. As you type, a dropdown of smart suggestions appears, ranked by relevance. Select a suggestion to apply it. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/dp_video_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/dp_video_poster.webp) ## Selecting a Suggestion[​](#selecting "Direct link to Selecting a Suggestion") As you type, a dropdown of suggestions appears. There are three ways to confirm your choice: * **Click** a suggestion to apply it immediately. * **Arrow-key and Return** — use the Up/Down arrow keys to highlight a suggestion, then press **Return** to apply it. * **Tab out** — pressing **Tab** moves focus to the next field. If your input matches exactly one suggestion, that suggestion is applied automatically. If there are multiple suggestions (for example, typing `11` could mean the 11th of this month, 11:00 AM, or in 11 days), tabbing out leaves the field unchanged so you can go back and pick the one you intended. As a general rule, if the dropdown is showing a single suggestion or you've highlighted the one you want, pressing Return is the most reliable way to confirm it. ## Using the Calendar Picker[​](#calendar-widget "Direct link to Using the Calendar Picker") The date field is flexible — you can either click to pick a date visually from the calendar picker, or start typing to enter any date using natural language. Clicking the date field reveals a mini calendar picker. The widget highlights the event's current date and lets you navigate between months. Quick buttons for **Today** and **Tomorrow** are available at the bottom. Non-working days (such as weekends) are shaded based on your Working Days setting in **BusyCal > Settings > General**. If you have week numbers enabled in your app settings, they also appear along the left edge of the calendar picker. The calendar picker also supports keyboard navigation. Press the **Down Arrow** key first to enter the calendar grid, then use the **Left** and **Right Arrow** keys to move between days. (Pressing Left/Right without first pressing Down moves the cursor within the text field instead.) ![Date picker calendar picker](https://downloads.busymac.com/resources/img/busycal-mac/dp_calendar.png) ## Relative Dates[​](#relative-dates "Direct link to Relative Dates") One of the fastest ways to set a date is by typing a relative expression. BusyCal understands a wide range of natural language terms: * **today** — Sets the date to today. * **tomorrow** — Sets the date to tomorrow. * **yesterday** — Sets the date to yesterday. * **day after tomorrow** — Two days from now. * **day before yesterday** — Two days ago. * **tom mor** (tomorrow morning) — Combines a relative day with a time of day. BusyCal suggests tomorrow at 9:00 AM. ![Typing tom mor suggests Tomorrow at 9:00 AM](https://downloads.busymac.com/resources/img/busycal-mac/dp_tommorrow_morning.png) You can also use time-of-day keywords in combination with a day: **morning** (9:00 AM), **afternoon** (1:00 PM), **evening** (7:00 PM), **night** (9:00 PM), **noon** (12:00 PM), and **midnight** (12:00 AM). For broader jumps, you can type **this month**, **next month**, **this year**, or **next year** to jump to the start of that period. ## Day Names[​](#day-names "Direct link to Day Names") Type a day name — or just the first few letters — to jump to that day. BusyCal shows upcoming occurrences so you can pick the right one. * **sun** — Shows the next few upcoming Sundays. * **this thur** — Shows this Thursday (even if it's in the past for the current week). * **next fri** — Shows the next Friday and a few more after it. ![Typing this thur suggests this Thursday](https://downloads.busymac.com/resources/img/busycal-mac/dp_weekday.png) ![Typing sun shows upcoming Sundays](https://downloads.busymac.com/resources/img/busycal-mac/dp_upcoming_sundays.png) ![Typing next fri shows upcoming Fridays](https://downloads.busymac.com/resources/img/busycal-mac/dp_next_fri.png) ## Month and Date Combinations[​](#month-date "Direct link to Month and Date Combinations") Type a month name (or abbreviation) with an optional day number to jump to a specific date. BusyCal shows multiple years of matches so you can pick the one you need. * **april 19** — Suggests April 19 of the current year, next year, and beyond. * **dec fri** — Shows all Fridays in December. * **sun jun** — Shows all Sundays in June. ![Typing april 19 suggests upcoming April 19 dates](https://downloads.busymac.com/resources/img/busycal-mac/dp_fixed_date.png) ### Month-Weekday Combinations[​](#month-weekday "Direct link to Month-Weekday Combinations") Type a weekday and a month — like `fri jun` or `dec fri` — and BusyCal instantly lists all occurrences of that weekday within the month. This is a quick way to find the right date when you know the day of the week but not the exact number. You can optionally add a year (e.g., `fri jun 2027`) to narrow the results to a specific year. ![Typing dec fri shows all Fridays in December](https://downloads.busymac.com/resources/img/busycal-mac/dp_december_fridays.png) ![Typing sun jun shows all Sundays in June](https://downloads.busymac.com/resources/img/busycal-mac/dp_all_sun_june.png) ## Plain Numbers[​](#plain-numbers "Direct link to Plain Numbers") Typing a plain number is surprisingly versatile. BusyCal interprets it in multiple ways and shows all possibilities: * As a **time** — e.g., `18` suggests 6:00 PM today and tomorrow. * As a **day of the month** — e.g., `18` suggests the 18th of the current or next month. * As a **relative offset** — e.g., `18` suggests "in 18 days." ![Typing 18 shows multiple interpretations](https://downloads.busymac.com/resources/img/busycal-mac/dp_number.png) ### Compact Date Shortcuts[​](#compact-dates "Direct link to Compact Date Shortcuts") You can combine numbers with a month letter for quick date entry. The letter acts as a month abbreviation (e.g., `d` for December, `j` for January) and can go before or after the number: * **18d** — December 18. * **d25** — December 25. * **18d 2028** — December 18, 2028. ![Typing 18d 2028 suggests December 18, 2028](https://downloads.busymac.com/resources/img/busycal-mac/dp_18d.png) ## Week Numbers[​](#week-numbers "Direct link to Week Numbers") If you work with ISO week numbers, you can type `w` followed by a number to jump directly to the start of that week. * **w19** — Jumps to the Monday of week 19. * **w52** — Jumps to the Monday of week 52. ![Typing w19 suggests the start of week 19](https://downloads.busymac.com/resources/img/busycal-mac/dp_week19.png) ![Typing w52 suggests the start of week 52](https://downloads.busymac.com/resources/img/busycal-mac/dp_week52.png) tip Localized week number prefixes are also supported, such as **KW** (German), **S** (French/Spanish), **sem** (Portuguese), and others. ## Time Input[​](#time-input "Direct link to Time Input") The date picker also works in the **time field**. You can type a time in several formats and BusyCal will suggest the matching time. ### Scrollable Time List[​](#scrollable-time-list "Direct link to Scrollable Time List") Clicking the time field shows a scrollable list of times in 15-minute increments, with the current time highlighted. You can scroll to quickly pick a time. ![Scrollable time picker](https://downloads.busymac.com/resources/img/busycal-mac/dp_time.png) ### Typing a Time[​](#typing-a-time "Direct link to Typing a Time") You can also type a time directly. BusyCal understands multiple formats: * **742** — Suggests 7:42 AM and 7:42 PM. * **2pm** — Suggests 2:00 PM on upcoming days. * **9p45** — Suggests 9:45 PM (AM/PM markers can appear in the middle). * **14:30** — Suggests 2:30 PM using 24-hour format. * **1630** — Suggests 4:30 PM (24-hour compact format, no colon needed). * **21** — Suggests 9:00 PM. ![Typing 742 suggests 7:42 AM and 7:42 PM](https://downloads.busymac.com/resources/img/busycal-mac/dp_timeampm.png) ### Combined Date and Time[​](#combined-date-and-time "Direct link to Combined Date and Time") You can type a date and time together in the date field for quick entry: * **2pm** — Suggests tomorrow at 2:00 PM (or the next upcoming day at that time). * **2nd april 8:30a** — April 2 at 8:30 AM. * **wed 8:30a** — Next Wednesday at 8:30 AM. * **tomorrow 3pm** — Tomorrow at 3:00 PM. * **next fri 14:30** — Next Friday at 2:30 PM. * **april 19 2pm** — April 19 at 2:00 PM. * **tomorrow 1630** — Tomorrow at 4:30 PM. ![Typing 2pm suggests upcoming days at 2:00 PM](https://downloads.busymac.com/resources/img/busycal-mac/dp_2pm_upcoming.png) ### End Time Suggestions[​](#end-time-suggestions "Direct link to End Time Suggestions") The end time field is equally smart. When you type a time there, BusyCal shows the resulting event duration alongside each suggestion, making it easy to set the right end time. ![End time suggestions show event duration](https://downloads.busymac.com/resources/img/busycal-mac/dp_endtime.png) ## Additional Supported Formats[​](#additional-formats "Direct link to Additional Supported Formats") Beyond the examples shown above, BusyCal's date picker supports many more input patterns: * **Relative offsets** — `in 3 days`, `in 2 weeks`, `in 2w`, `3 weeks ago`, `next month` * **Offsets with time** — `in 3 days 9am`, `next week evening` * **Exact dates** — `12/25/2026`, `12-25-26`, `2026/12/25` (respects your system's date format — M/D or D/M) * **Compact no-space input** — `19jan800` (January 19 at 8:00 AM), `jan19` (January 19) * **Period intents** — `weekend`, `eod` (end of day), `eow` (end of week), `eom` (end of month) * **Ordinals** — `7th` (suggests future occurrences of the 7th of each month) * **Now** — Sets the date and time to right now tip You don't need to type full words. BusyCal matches on partial input — typing just `t` shows **Today**, **Tomorrow**, **Tuesday**, and **Thursday** (all days starting with T), and typing `tom` narrows it down to **Tomorrow**. ## See Also[​](#see-also "Direct link to See Also") * [Info Panel](/docs/busycal/70595-info-panel.md) - Where the date picker fields are located * [Quick Entry](/docs/busycal/70605-quick-entry.md) - Create events quickly using natural language * [Quick Edits](/docs/busycal/142890-quick-edits.md) - Edit events directly in the calendar view * [Time Zones](/docs/busycal/70609-time-zones.md) - Working with multiple time zones * [Date and Time Format](/docs/busycal/70608-date-and-time-format.md) - Configure how dates and times are displayed --- # Mapping Event Locations ## Map of All Events - Location Visualization[​](#map-of-all-events---location-visualization "Direct link to Map of All Events - Location Visualization") note This feature requires macOS 11 (Big Sur) or above The **Event Location Map** in BusyCal allows you to visualize all locations from your calendar events on an interactive map. This provides an intuitive way to explore, search, and navigate your scheduled locations, making it easy to view past meeting spots, or find upcoming event destinations at a glance. ![Map of all event locations](https://downloads.busymac.com/resources/img/busycal-mac/event_map.png) important BusyCal displays locations from your selected calendars. To appear on the map, a location must be a valid address. If coordinates aren't already assigned, BusyCal will attempt to generate them. However, some location names or addresses may not be recognized, preventing them from being pinned on the map. ### Complete Map of Events with Locations[​](#complete-map-of-events-with-locations "Direct link to Complete Map of Events with Locations") The Event Map feature creates a comprehensive map of all events that contain location information. This visual representation helps you: * See the geographic distribution of your schedule * Plan travel between different event locations * Identify clusters of events in specific areas * Review past event locations and upcoming meeting destinations ### Key Features[​](#key-features "Direct link to Key Features") * **See all event locations on a map** – Automatically displays pins for events with location details. * **Search for specific locations** – Quickly find events based on their location names. * **Navigate and zoom** – Pan and zoom across your event locations for better visualization. * **Find events linked to locations** – Click on a pin to view associated events. * **Filter by calendar** – Focus on specific events by selecting individual calendars or [calendar sets](/docs/busycal/70612-smart-filters.md) in the main calendar window. ### How to Use the Map View[​](#how-to-use-the-map-view "Direct link to How to Use the Map View") 1. Open **Show Events on Map** from the **View menu**. 2. BusyCal will gather all event locations and display them as pins on the map. 3. Click on a pin to see all events scheduled for this location. 4. Use the search bar to filter on specific locations in the list. 5. Zoom and pan to explore locations across different areas. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/events_on_map_web.webm) When a location address cannot be mapped to a coordinate, a pin with a slash will appear next to its name. --- # Suggestions as Templates BusyCal can suggest existing events and tasks as *templates* while you're creating a new event or editing an existing one. ![Suggestions](https://downloads.busymac.com/resources/img/busycal-mac/suggest_info_panel.png) Simply begin typing to see a list of matching past and future events. Click on a suggestion or use the arrow keys to navigate and press Return to select it as a template. When selected, properties from the template event will be copied over. Notes will only be replaced if the current event has no notes. Other properties such as title, time of day, alarms, and attendees will be replaced directly. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/suggestions_week_web.webm) By default, all subscribed calendars are searched for suggestions, whether enabled or not, except for holiday calendars. Suggestions automatically appear as you type in the Info Panel, Month View, Week View, and Day View. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/suggestions_info_web.webm) ### Customization[​](#customization "Direct link to Customization") Open **Preferences > Suggestions** to select which properties should be included when applying a template. ![Suggestions Preferences](https://downloads.busymac.com/resources/img/busycal-mac/setting_suggestions.png) You can also enable **Search only in enabled calendars** if searching through all calendars produces too many results. This allows you to switch between [Calendar Sets / Smart Filters](/docs/busycal/70612-smart-filters.md) and create events using suggestions from only the currently enabled calendars. ## See Also[​](#see-also "Direct link to See Also") * [Day View](/docs/busycal/70587-day-view.md) - Detailed daily calendar display * [Week View](/docs/busycal/70588-week-view.md) - Weekly calendar overview * [Smart Filters](/docs/busycal/70612-smart-filters.md) - Save custom Month View configurations --- # Find and Replace **Find and Replace** searches many events, tasks, and journal entries at once and rewrites their text in a single pass. Use it when a meeting moves to a new conference room, a client changes its company name, or the same typo appears across dozens of items. To open it, choose **Edit > Find and Replace…** or press `⌥⇧⌘F`. It opens in its own floating window that stays on top of your calendar, so you can keep working while it is open. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-mac/videos/findandreplace_web.webm) ![](https://downloads.busymac.com/resources/img/busycal-mac/videos/findandreplace_web_poster.png) ## How Find and Replace Works[​](#find-and-replace-basics "Direct link to How Find and Replace Works") 1. Type the text you want to find in the **Find** field. 2. Press Return (or click **Find**). BusyCal lists every matching item with the matched text highlighted. 3. Type the new text in the **Replace** field. As you type, the results list shows a live preview of the change. See [Previewing Replacements as You Type](#find-and-replace-preview). 4. Click **Replace** to update the selected item, or **Replace All** to update every item in the list. Each result row shows the item's icon in its calendar's color, the title, the date, and an excerpt of any matching notes, location, or URL text, so you can confirm a match before changing it. Recurring items are marked with a ↻ loop badge. Double-click a result to jump to that item in your calendar and select it. tip The search re-runs automatically as you adjust the find text, the filters, or the date range, as long as the inputs stay valid. If you clear the find text, or turn off every field or every kind of item, the results clear. Fill the inputs back in and click **Find** to run the search again. ## Narrowing What You Search[​](#find-and-replace-filters "Direct link to Narrowing What You Search") The controls above the results list decide what Find and Replace looks through. Tightening them is the best way to make sure a Replace All only touches the items you intend. * **Mode** is the pop-up next to the Find field. It controls how your text is matched: **Contains** (anywhere in the field), **Whole Word**, **Starts With**, **Ends With**, or **Regular Expression**. * **Aa** turns on Match Case, which requires an exact upper and lower case match. * **In** chooses between **Selected Calendars** (the calendars currently checked in your source list) and **All Calendars** (all writable calendars, including unchecked ones). * **Between** sets the start and end dates of the range to search. Only items inside this range are included, which keeps a broad rename from reaching far into the past or future. * **Include** chooses which kinds of items to search: **Events**, **Tasks**, **Journals**, and **Undated tasks**. A separate **Completed tasks** checkbox includes or skips tasks you have already finished. * **Match** chooses which fields to search within each item: **Title**, **Notes**, **Location**, and **URL**. Unchecking everything except **Location**, for example, updates a meeting room across many events without touching titles or notes. ## Previewing Replacements as You Type[​](#find-and-replace-preview "Direct link to Previewing Replacements as You Type") Find and Replace shows you what your edit will look like before you commit to it. While the **Replace** field has focus and contains text, every row in the results list swaps its highlighted matches for your replacement text, shown in the accent color and underlined. The preview updates with every keystroke, so you can catch a doubled word, the wrong capitalization, or a missing space before changing a single item. The preview does not show everything a replacement will touch. A row shows the title itself, shortened to fit on one line when it is long, but for **Notes**, **Location**, and **URL** it shows one excerpt around the first match in that field. Replacing still changes every match in the field, including matches outside the excerpt. When an item may contain the find text more than once, narrow the **Match** checkboxes to the field you care about, or double-click the row to open the item and read it in full. To leave the preview and see the original highlighted matches again, click back in the **Find** field or anywhere outside the **Replace** field. tip The preview is purely visual and never modifies your data. Use it freely to try different replacement text until the results read the way you want. ## Regular Expression Mode[​](#regular-expressions "Direct link to Regular Expression Mode") The first four modes match plain text. **Regular Expression** matches a pattern instead, which lets you find text that varies from item to item and reuse parts of what you found in the replacement. Reach for it when the change follows a rule rather than a fixed string: reordering names, reformatting dates, or wrapping something in brackets. Choose **Regular Expression** from the **Mode** pop-up. The **Find** field is then read as a pattern rather than as literal text, using standard ICU regular expression syntax. Both fields switch to a monospaced font, and autocorrect, spell checking, and smart quote and dash substitution are turned off while you type, so macOS cannot rewrite the characters in your pattern. The placeholders read **Pattern to find** and **Replacement text with $1, $2**. A few details are worth knowing before you write a pattern: * **Aa** still applies. With Match Case off, the pattern matches case-insensitively. * `^` and `$` anchor to the start and end of the whole field value, such as an entire title or the entire notes text, not to individual lines. For the same reason, `.` does not match across a line break. * Matches that are empty, meaning zero characters long, are ignored. ### Reusing Part of a Match[​](#regex-capture-groups "Direct link to Reusing Part of a Match") Put parentheses around the part of the pattern you want to keep. Those groups are numbered from left to right, and you insert one into the **Replace** field with a dollar sign and its number. Non-capturing groups and lookarounds, written `(?:...)` and `(?=...)`, are not numbered, while a named group written `(?<name>...)` is numbered along with the rest. | Token | Inserts | | ------------------ | ----------------------------------------- | | `$1` through `$99` | The text captured by that numbered group. | | `$&` or `$0` | The entire match. | | `$$` | A literal dollar sign. | Three rules cover the remaining cases: * A group number that does not exist in the pattern, or a group that did not take part in the match, inserts nothing. * A two-digit reference falls back to the one-digit group when the two-digit group does not exist. With a pattern that has one group, `$12` means group 1 followed by a literal `2`. * Any other sequence starting with `$` stays literal. In the other four modes, `$` never has a special meaning. The live preview expands backreferences per match, so each row shows its actual final text rather than the `$1` template. Check the preview before replacing. ### When a Pattern Is Not Valid[​](#regex-validation "Direct link to When a Pattern Is Not Valid") While the pattern is valid, a hint under the **Replace** row reads: Use ( ) to capture part of a match, then $1 and $2 in the replacement. While the pattern is not valid, the **Find** field gets a red outline, the same slot under the **Replace** row shows the error reported by the regular expression compiler next to a warning glyph, the status bar reads **Invalid pattern**, and the **Find** button is disabled. No alert appears, you can keep typing, and the error clears as soon as the pattern compiles. ### Examples[​](#regex-examples "Direct link to Examples") Each example shows one item's text before the change, the pattern to type in **Find**, the text to type in **Replace**, and the result. **Reorder a name from Last, First to First Last.** `^(.*): `takes the text ahead of the colon, `([^,]+)` takes the last name, and `(.+)$` takes the rest of the title, so the replacement can put the two names back in the other order. * Before: `Interview: O'Connor, Mary` * Find: `^(.*): ([^,]+), (.+)$` * Replace: `$1: $3 $2` * Result: `Interview: Mary O'Connor` Anchoring the pattern to the whole title matters here. An unanchored pattern such as `(\w+), (\w+)` would rewrite every other comma pair in the same field as well, and it would break a name that contains an apostrophe or a space. **Reformat an ISO date in notes.** `\d{4}` matches four digits and `\d{2}` matches two, so the three groups hold the year, month, and day. * Before: `Contract ends 2026-08-27` * Find: `(\d{4})-(\d{2})-(\d{2})` * Replace: `$3.$2.$1` * Result: `Contract ends 27.08.2026` **Swap the two sides of a quantity in notes.** `^(.*) `takes everything up to the last space, `([^ ]+)×` takes the part before the multiplication sign, and `(.*)$` takes the rest. * Before: `broccoli 1.5×340` * Find: `^(.*) ([^ ]+)×(.*)$` * Replace: `$1 $3×$2` * Result: `broccoli 340×1.5` **Wrap a match in brackets.** `$&` stands for whatever the pattern matched, so you do not have to repeat the text in the replacement. * Before: `Standup with Priya` * Find: `Priya` * Replace: `[$&]` * Result: `Standup with [Priya]` **Add a currency symbol to a number.** `$$` produces the literal dollar sign, and `$1` follows it with the digits that were matched. * Before: `Deposit 20 due` * Find: `Deposit (\d+)` * Replace: `Deposit $$$1` * Result: `Deposit $20 due` Keeping the surrounding word in the pattern anchors the match to the number you mean. A bare `(\d+)` would match every run of digits in the field, so a date in the same notes would pick up a dollar sign too. ## Replacing Matches[​](#find-and-replace-replacing "Direct link to Replacing Matches") Once the preview looks right, there are two ways to apply the change: * **Replace** updates the currently selected row. The row then drops out of the list and the selection moves to the next match, so you can step through items one at a time. * **Replace All** updates every item currently in the list. Both buttons replace every match in every enabled field of the items they process. **Replace** narrows the operation to one item, not to one match, so an item whose notes contain the find text three times has all three rewritten in one step. Replaced items animate out of the list, and the status bar keeps a running tally of how many items matched, how many were replaced, and how many were skipped or failed. The whole operation is registered as a single **Find and Replace** entry in the Edit menu, so `⌘-Z` undoes the entire batch at once. For a recurring item, Find and Replace edits the series itself and never detaches the occurrence you happened to select, so the change applies to the whole series. It does not overwrite an occurrence you had already edited separately. A separately edited occurrence is its own item, though, so if its text matches your search it appears as its own row in the results and is changed like any other item when you replace it. ## What Find and Replace Will and Won't Change[​](#find-and-replace-scope "Direct link to What Find and Replace Will and Won't Change") Find and Replace only searches and edits calendars you can write to. Read-only calendars, subscribed calendars, view-only shared calendars, and holiday calendars are excluded entirely and are never modified. The **?** help button at the bottom of the window is a reminder of this. A few other things to keep in mind: * In **Contains**, **Whole Word**, **Starts With**, and **Ends With** modes, the replacement text must be different from the find text. **Regular Expression** mode does not apply that rule, since a replacement template can look identical to the pattern and still produce different text. In that mode, any item whose replacement would leave its text unchanged is counted as skipped rather than replaced. * In every mode, the **Replace** buttons stay disabled until a search has run and returned at least one result. * The **Replace** field must contain at least one character. Find and Replace cannot delete matched text by replacing it with nothing. * If something changes in the background after you searched, each item is re-checked at the moment it is replaced. It must still exist, must still be on a calendar you can write to, must still be allowed by the **Completed tasks** setting, and must still contain a match in an enabled field that the replacement would actually change. An item that fails one of those checks is counted as skipped rather than edited. The **Between** range and the **In** calendar choice are applied when the search runs, not again at replace time. * Closing the window clears the search text and results, but keeps its size and position for next time. ## See Also[​](#see-also "Direct link to See Also") * [Searching, Finding, and Filtering Events](/docs/busycal/70611-searching-finding-and-filtering-events.md) - Locate events without changing them * [Smart Filters](/docs/busycal/70612-smart-filters.md) - Save reusable searches and calendar sets * [Quick Edits](/docs/busycal/142890-quick-edits.md) - Batch editing options in the Edit menu * [Keyboard Shortcuts](/docs/busycal/70620-keyboard-shortcuts.md) - The full shortcut reference --- # Meeting Accounts A meeting account is an account that BusyCal uses to create a video call for an event or a booking. BusyCal can create Zoom, Webex, Google Meet and Microsoft Teams calls. The service you choose decides which account creates the call. ## Which Account Creates the Call[​](#which-account "Direct link to Which Account Creates the Call") There are two kinds of meeting accounts. Zoom and Webex are separate accounts that you link in BusyCal. They do not depend on your calendars, so they can create a call for an event on any calendar that you can edit. Google Meet and Microsoft Teams calls come from the account of the event's calendar. For an event on a Google calendar, BusyCal creates a Google Meet call with that calendar's Google account. For an event on a Microsoft 365 calendar signed in with Microsoft, BusyCal creates a Teams call with that calendar's Microsoft account. Another account of yours cannot create these calls for a calendar in a different account. For example, an event on an iCloud calendar cannot have a Google Meet call, even if you also have a Google account in BusyCal. ## Setting Up Zoom and Webex[​](#set-up-zoom-webex "Direct link to Setting Up Zoom and Webex") To link a Zoom or Webex account: 1. Choose **BusyCal > Settings**, then select **Accounts** in the sidebar. 2. Click `+` (plus) below the list of accounts. 3. Choose **Zoom** or **Webex** from the **Server Type** pop-up menu, then click **OK**. 4. Sign in to your Zoom or Webex account in your web browser, and allow BusyCal to access it. To add a call to an event, select the event and click **Add Zoom call...** or **Add Webex call...** in the Info Panel. tip If the button is not there, turn on **Zoom** or **Webex by Cisco** under **Show fields** in **Info Panel** settings. You can also click the arrow at the bottom of the Info Panel to show all fields. To also put the call link in the event's location, select the account in **Accounts** settings and turn on **Add meeting URL to event location**. For more about Zoom calls, see [Using BusyCal with Zoom](/docs/busycal/119897-using-busycal-with-zoom.md). ## Setting Up Google Meet[​](#set-up-google-meet "Direct link to Setting Up Google Meet") Google Meet calls come from your Google account, so there is no separate account to link. 1. Add your Google account in **Accounts** settings, if it isn't there. See [Syncing with Google Calendar](/docs/busycal/70636-using-busycal-with-google.md#syncing). 2. Select an event on a calendar of that account. 3. Click **Add Meets call...** in the Info Panel. BusyCal shows **Add Meets call...** only on calendars where Google allows Google Meet calls. To add a Google Meet call each time you invite people to an event, select the Google account in **Accounts** settings and turn on **Add Google Meets to new meeting invites**. ## Setting Up Microsoft Teams[​](#set-up-teams "Direct link to Setting Up Microsoft Teams") Teams calls come from your Microsoft account, so there is no separate account to link. 1. Add your Microsoft 365 account in **Accounts** settings, if it isn't there. Choose **Office 365** under **Microsoft Graph** in the **Server Type** pop-up menu. See [Using BusyCal with Office 365 (Microsoft Graph)](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md#syncing). 2. Select an event on a calendar of that account. 3. Click **Add Teams call...** in the Info Panel. If you added the account with **Office 365** under **Legacy: Exchange Web Services**, select it in **Accounts** settings and turn on **Enable Microsoft Teams Integration** first. Your Office 365 administrator may need to approve this. Whether a Microsoft calendar can create Teams calls depends on its account. Teams calls work only on calendars that you own, and your organization can turn them off. ## Video Calls on Booking Pages[​](#bookings "Direct link to Video Calls on Booking Pages") A booking page in [BusyCal Bookings](/docs/bookings.md) can offer a video call as a location. Each booking then gets its own call, which BusyCal creates with your meeting account. For the other kinds of location, see [Locations and Video Calls](/docs/bookings/locations-and-video-calls.md). ### Choosing a Service[​](#choosing-a-service "Direct link to Choosing a Service") When you add a **Video Call** location to a page, you choose a service from a list. The list shows only the services that the page's calendar can use: * Zoom and Webex, if you linked them in BusyCal. * Google Meet, if the page adds bookings to a Google calendar. * Microsoft Teams, if the page adds bookings to a Microsoft calendar whose account can create Teams calls. * Skype, if the page adds bookings to a Microsoft calendar whose account creates Skype calls instead of Teams calls. While the page has no calendar, the list shows only Zoom and Webex. The page needs a calendar before it can take bookings. You choose this calendar in your dashboard, in the booking page's **Add bookings to** setting. ### What Happens After Someone Books[​](#after-booking "Direct link to What Happens After Someone Books") 1. The person who booked gets their confirmation right away. It does not wait for the call. On a page where you approve each request, they get it after you approve. 2. BusyCal adds the booking to your calendar. 3. BusyCal creates the call with the meeting account for that service. The call also appears in the event in your calendar. 4. When the call is ready, the person gets an updated invitation with the call link. If the call is not ready when BusyCal Bookings sends the confirmation, the confirmation tells the person that the call link will come by email. ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") ### The Service I Expect Is Not Offered[​](#service-not-offered "Direct link to The Service I Expect Is Not Offered") If Zoom or Webex is missing, link the account as described in [Setting Up Zoom and Webex](#set-up-zoom-webex). If the account is already there, select it in **Accounts** settings and check that **Enable this account** is on. If Google Meet, Microsoft Teams or Skype is missing, check which calendar the page adds bookings to. Google Meet needs a Google calendar. Teams and Skype need a Microsoft calendar whose account can create those calls. Your other Google or Microsoft accounts cannot create these calls for that calendar. If no service is offered at all, link a Zoom or Webex account, or have the page add bookings to a calendar that offers calls. BusyCal tells BusyCal Bookings which services you can use. After you link an account or change a calendar, make sure that BusyCal is open on a device that uses Bookings. Booking pages offer only Zoom, Webex, Google Meet, Microsoft Teams and Skype. A GoTo Meeting account works for events in BusyCal, but not for bookings. ### A Booking Has No Call Link[​](#no-call-link "Direct link to A Booking Has No Call Link") BusyCal creates each call on the device that adds the booking to your calendar. Open BusyCal on your devices that use Bookings. Check the meeting account. Zoom and Webex need a linked account with **Enable this account** on. Google Meet, Teams and Skype need a booking calendar in an account that can create those calls. BusyCal Bookings keeps the booking in your dashboard until its call link is ready. Before the meeting starts, you can add a link yourself there. Open the booking in your BusyCal Bookings dashboard and click **Add Call Link…**. The person gets an updated invitation with that link. To open the dashboard, click **Open Dashboard** in **Bookings** settings. If you use Zoom and use Bookings on more than one device, see [Zoom on more than one device](/docs/bookings/locations-and-video-calls.md#call-link). --- # Siri and Shortcuts BusyCal works with Siri and the **Shortcuts** app on your Mac. You can create events and tasks, search your calendars, check your availability, change what BusyCal is showing, and switch Calendar Sets automatically when a Focus turns on. Open BusyCal first and finish setting up your calendars. After setup, actions that read or change calendar data can run without opening BusyCal. Siri or Shortcuts may ask you to unlock your device or allow access before continuing. The actions that change what you are looking at, such as opening a date or a view, bring BusyCal forward. On the Mac, a Calendar Set is a **Smart Filter** saved with its **Remember calendar set (visible calendars)** option turned on. Smart Filters saved without this option are not offered as Calendar Sets to Siri, Shortcuts, the Focus filter, AppleScript, or the Claude Desktop extension. See [Smart Filters](/docs/busycal/70612-smart-filters.md#calendar-sets). ## Requirements[​](#requirements "Direct link to Requirements") The standard Siri phrases and Shortcuts actions below require **macOS 15 or later**. Open **Shortcuts** and search for BusyCal to check the actions available in your installed version. **Siri AI** support described in this guide is for the upcoming BusyCal release. It requires **macOS 27 or later**, a compatible Apple Intelligence device, and Siri AI enabled in a supported language and region. Installing the operating system alone does not enable it. See [Apple's Siri AI availability information](https://www.apple.com/newsroom/2026/06/apple-introduces-siri-ai-a-profoundly-more-capable-and-personal-assistant/) and [Asking Siri directly](#macos-27). ## Talking to Siri[​](#siri "Direct link to Talking to Siri") BusyCal supplies its own spoken phrases for ten common actions, so you can use them without building a shortcut first. Say "Hey Siri" followed by one of these, and Siri asks for whatever detail it still needs. **Quick Add** takes whatever you say and runs it through [Quick Entry](/docs/busycal/70605-quick-entry.md), so a phrase like "lunch with Sam tomorrow at 1" becomes a complete event: * "Quick add with BusyCal" * "Quick add to BusyCal" * "Add this to BusyCal" * "Put this on my calendar in BusyCal" **New Event** creates an event from a title, a start, and an end: * "Create an event in BusyCal" * "New event in BusyCal" * "Add an event to BusyCal" * "Schedule an event in BusyCal" **New Task** creates a task on a task calendar: * "Create a task in BusyCal" * "New task in BusyCal" * "Add a task to BusyCal" * "Make a new task in BusyCal" **What's Coming Up** shows your events and tasks for the week: * "What's coming up in BusyCal" * "Show my schedule in BusyCal" * "Show upcoming items in BusyCal" * "Show my week in BusyCal" **Today** shows the same list for today only: * "Show my day in BusyCal" * "What's on today in BusyCal" * "Show today's schedule in BusyCal" * "What do I have today in BusyCal" **When Am I Free** finds the next open slot within a date range. Siri asks when to start and stop looking if you have not supplied those dates. The default minimum slot is 30 minutes: * "When am I free in BusyCal" * "Find free time in BusyCal" * "Show my free time in BusyCal" * "Find an open time in BusyCal" **Find Events** searches your events: * "Find an event in BusyCal" * "Find events in BusyCal" * "Search my events in BusyCal" * "Look up an event in BusyCal" **Find Tasks** searches your tasks: * "Find a task in BusyCal" * "Find tasks in BusyCal" * "Search my tasks in BusyCal" * "Show my tasks in BusyCal" **Complete Task** marks a task complete, asking which one you mean: * "Complete a task in BusyCal" * "Mark a task done in BusyCal" * "Check off a task in BusyCal" * "Finish a task in BusyCal" **Show Calendar Set** brings BusyCal forward on a saved Calendar Set: * "Show a calendar set in BusyCal" * "Switch calendar sets in BusyCal" * "Use a calendar set in BusyCal" * "Change my calendar set in BusyCal" Siri reads the result back to you: how many events or tasks matched, up to three of them by name with their dates, and your next free slot when you ask about availability. A shortcut still receives the whole list. When Siri asks you to pick a task, the list includes overdue and undated tasks, and each row shows whether the task is open or complete along with its due date. Any shortcut you build yourself can also be run by voice. Give it a short name and say "Hey Siri" followed by that name. ## Shortcuts Actions[​](#actions "Direct link to Shortcuts Actions") Open the **Shortcuts** app, create a new shortcut, and search for "BusyCal" to see the actions below. Actions that take an event or a task accept one passed in from an earlier action, so you can chain a search into a change. **Find and read** your calendar data: | Action | What it does | Key parameters | | ---------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Find Events** | Finds events by date range, text, or Calendar Set. | **Search Text**, **Start Date**, **End Date**, **Calendar**, **Calendar Set**, **Limit** | | **Find Tasks** | Finds tasks by due date, text, or Calendar Set. | **Search Text**, **Start Date**, **End Date**, **Calendar**, **Calendar Set**, **Completed**, **Limit** | | **Get Upcoming Items** | Shows the events and tasks coming up next, with a summary you can see in the Shortcuts result. | **Upcoming Range**, **Number of Days**, **Calendar Set**, **Include Tasks** | | **Get Availability** | Returns free or busy time in a date range. | **Start Date**, **End Date**, **Calendars**, **Free or Busy**, **Minimum Duration in Minutes**, **Respect Working Hours** | | **When Am I Free** | Finds the next available time within the dates you supply. | **Start Date**, **End Date**, **Minimum Duration in Minutes**, **Calendars**, **Respect Working Hours** | **Upcoming Range** offers Today, Tomorrow, This Week, and Custom Number of Days, which uses the **Number of Days** you set. Searches follow BusyCal's calendar visibility settings. Set **Calendar** or **Calendar Set** to narrow the results further. Date filters in **Find Events** use the event's start date; **Find Tasks** uses the task's due date. An event that began before the search period may be omitted even if it is still running. Leave the date filters empty when you want to include tasks without a due date. **Find Events** and **Find Tasks** return up to 50 items by default. Increase **Limit** (up to 500), or narrow the dates and calendars, when you need more specific results. **Create** events and tasks: | Action | What it does | Key parameters | | ---------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Quick Add** | Creates an event, task, or journal entry from the text you type. | **Text**, **Item Type**, **Calendar** | | **Create Event** | Creates an event with the dates and details you choose. | **Title**, **Start Date**, **End Date**, **All Day**, **Start Time Zone**, **End Time Zone**, **Calendar**, **Location**, **Alarms in Minutes**, **Travel Time in Minutes**, **Notes**, **URL**, **Tags**, **Show As** | | **Create Task** | Creates a task with the date and details you choose. | **Title**, **Due Date**, **All Day**, **Due Time Zone**, **Calendar**, **Location**, **Alarms in Minutes**, **Notes**, **URL**, **Tags**, **Priority**, **Starred** | **Alarms in Minutes** counts from the start time, or from a task's due date. Use -15 for fifteen minutes before, or 0 for the exact time. You can set up to four. **Change** existing items: | Action | What it does | Key parameters | | --------------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Update Event** | Changes the details you choose on an event. | **Event**, **Repeating Events**, **Title**, **Location**, **Notes**, **URL**, **Location URL**, **Travel Time in Minutes**, **Tags**, **Alarms in Minutes** | | **Update Task** | Changes the details you choose on a task. | **Task**, **Title**, **Notes**, **URL**, **Location URL**, **Tags**, **Alarms in Minutes**, **Priority**, **Starred** | | **Move Event** | Moves an event to a new start date, keeping its duration. | **Event**, **Start Date**, **Start Time Zone**, **Repeating Events** | | **Defer Task** | Gives a task a new due date, or clears its due date. | **Task**, **Due Date**, **All Day**, **Due Time Zone** | | **Complete Task** | Marks a task complete. | **Task**, **Completion Date** | | **Reopen Task** | Reopens a task you already completed. | **Task** | | **Duplicate Calendar Item** | Duplicates an event or task. | **Calendar Item**, **Repeating Events**, **Calendar** | | **Delete Events** | Deletes the events you pass in. | **Events**, **Repeating Events** | | **Delete Tasks** | Deletes the tasks you pass in. | **Tasks** | **Open** BusyCal at a particular place: | Action | What it does | Key parameters | | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | | **Change Calendar View** | Opens List, Day, Week, or Month view. Choosing **Tasks** shows the [Task List panel](/docs/busycal/70594-tasks.md) alongside the current calendar view. | **Calendar View** | | **Change to Date** | Opens a date in BusyCal. | **Date** | | **Show Calendar Set** | Shows a saved Calendar Set. | **Calendar Set** | | **Open Calendar Item** | Opens an event or task in BusyCal. | **Calendar Item** | **Update Event**, **Move Event**, **Duplicate Calendar Item**, and **Delete Events** take a **Repeating Events** choice of **This Event**, **This and Future Events**, or **All Events**, and all four default to **This Event**. Choose the scope before running the action. Task changes apply to the selected task. ## Building Custom Shortcuts[​](#custom-shortcuts "Direct link to Building Custom Shortcuts") Combine BusyCal actions with Shortcuts actions to make a routine you can run again. Give the shortcut a short, distinct name to run it with Siri. ### Capture an event from text[​](#quick-add-example "Direct link to Capture an event from text") 1. Add **Quick Add** to a new shortcut. 2. Enter `Lunch with Sam tomorrow at 1 pm for 1 hour` in **Text**, or pass in text from an earlier action. 3. Leave **Item Type** set to **Event** and choose a **Calendar** if needed. 4. Run the shortcut to create the event. Choose **Task** or **Journal** to create those item types instead. See [Quick Entry](/docs/busycal/70605-quick-entry.md) for supported date, time, and calendar syntax. ### Create a task with a tag[​](#task-tags "Direct link to Create a task with a tag") Availability Tagging during creation with **Quick Add**, **Create Task**, and **Create Event** requires BusyCal 2026.4.2 or later. To create a task from text, add **Quick Add**, set **Item Type** to **Task**, and enter `Process receipts #Imported due today` in **Text**. The task is named `Process receipts`, is due today, and has the `Imported` tag. See [Adding Tags](/docs/busycal/70605-quick-entry.md#adding-tags) for more examples. With **Create Task**, expand the action's options and enter `Imported` in **Tags**, without `#`. Set the title and due date in their separate fields. In earlier versions, use **Create Task** followed by **Update Task**. Pass the task returned by **Create Task** into **Update Task**, set **Tags** to `Imported`, and leave the other fields unset. ### Choose an event and move it[​](#choose-and-move "Direct link to Choose an event and move it") Build a shortcut that lets you select the event before changing it: 1. Add BusyCal's **Find Events** action. Set **Search Text** to a title such as `dentist`, and set **Start Date** and **End Date** to the period you want to search. 2. Add **Choose from List** and pass it the events found by **Find Events**. Leave multiple selection off so you choose one event. 3. Add BusyCal's **Move Event**. Set **Event** to the chosen item and **Start Date** to the new date and time, or choose **Ask Each Time**. 4. For a repeating event, set **Repeating Events** to **This Event**, **This and Future Events**, or **All Events**. 5. Run the shortcut, select the event, and supply its new start time. BusyCal keeps its duration. ### Find time for an appointment[​](#find-free-time "Direct link to Find time for an appointment") 1. Add **When Am I Free**. 2. Set **Start Date** and **End Date**, for example tomorrow from 9 am to 5 pm. 3. Set **Minimum Duration in Minutes** to `45` and choose the **Calendars** that should count as busy. 4. Turn on **Respect Working Hours** if the search should stay within your configured working hours. 5. Run the shortcut to see the next matching slot. If there is no suitable slot, extend the date range or reduce the duration. ## Switching Calendar Sets with a Focus[​](#focus-filter "Direct link to Switching Calendar Sets with a Focus") A Focus filter switches BusyCal to a chosen [Calendar Set](/docs/busycal/70612-smart-filters.md) for as long as that Focus is on. 1. Open **System Settings** > **Focus**. 2. Select a Focus, such as Work or Personal. 3. Under **Focus Filters**, click **Add Filter** and choose **BusyCal**. 4. Choose the **Calendar Set** you want while that Focus is on, then click **Add**. The switch happens in place. BusyCal is not brought to the front, and no window opens. When the Focus ends, BusyCal returns to the Calendar Set you had selected before it started. Choosing a set from the toolbar while a Focus is on changes only the current view, so your own selection comes back when the Focus turns off. ## Asking Siri Directly[​](#macos-27 "Direct link to Asking Siri Directly") With [Siri AI available on your device](#requirements) and a BusyCal version that supports it, you can ask for calendar changes in your own words without building a shortcut first. Include BusyCal in your request so Siri knows which app to use. These examples describe supported tasks, rather than fixed phrases. Siri may ask you to identify an item, supply a missing detail, or confirm a change. | To do this | Try asking | | ---------------------- | ---------------------------------------------------------------------- | | Create an event | "In BusyCal, add lunch with Sam tomorrow from 1 to 2 pm." | | Reschedule an event | "In BusyCal, move my dentist appointment to Thursday at 10 am." | | Change event details | "In BusyCal, change the location of lunch with Sam to Riverside Café." | | Create a task | "In BusyCal, add a task to renew my passport, due next Friday." | | Complete a task | "In BusyCal, mark the groceries task as complete." | | Remove an event | "In BusyCal, delete my dentist appointment on Thursday." | | Create a task calendar | "In BusyCal, create a task calendar called Home Projects." | For schedule summaries and free-time searches, you can also use the [standard Siri phrases](#siri). They remain useful on devices without Siri AI. ### Ask about your schedule[​](#ask-about-your-schedule "Direct link to Ask about your schedule") Ask for events on a particular day or during part of the day: * "What’s on my calendar in BusyCal this afternoon?" * "What events do I have in BusyCal this evening?" * "What am I doing next Tuesday in BusyCal?" Siri interprets the dates and times in your request. For a precise window, include the hours: "What events do I have in BusyCal today between noon and 6 pm?" You can narrow the request by naming a calendar, such as "What’s on my Work calendar in BusyCal next Tuesday?" ### Choose a calendar[​](#choose-a-calendar "Direct link to Choose a calendar") Name an existing calendar when you want to choose where an item is added: * "Create lunch tomorrow from 1 to 2 pm in my Work calendar in BusyCal." * "Add Buy milk to my Shopping list in BusyCal, due tomorrow." Choose a calendar you can edit. Tasks need a calendar that supports tasks. Siri may ask you to choose if more than one calendar matches the name. A [Calendar Set](/docs/busycal/70612-smart-filters.md#calendar-sets) controls which calendars you view. Choose an individual calendar when adding an event or task. If you do not name a task calendar, BusyCal uses its normal task-calendar selection, usually your configured default. For Siri AI event creation, Siri must choose a calendar before adding the event. BusyCal offers your default first in its suggestions, but Siri may still ask which calendar you want. You can change your preferred event and task calendars in [**Settings**](/docs/busycal/70607-preferences.md). ### Change the item you are viewing[​](#change-the-item-you-are-viewing "Direct link to Change the item you are viewing") Select one saved event in the calendar, task list, or search results, or show it in the **Info Panel**. Then ask, "In BusyCal, move this event to tomorrow at 2 pm." Listen to Siri's response and answer any question about which event or date you mean. Select one saved task or show it in the **Info Panel** to try, "In BusyCal, mark this task as complete." BusyCal supplies one current item for these requests. It does not supply every visible row or a numbered list of events on screen. If Siri cannot identify the item, use its title and date instead. See [Spotlight and the item on screen](#spotlight). ### Change a repeating event[​](#change-a-repeating-event "Direct link to Change a repeating event") Start with the occurrence you want to change. For example, ask, "In BusyCal, move only tomorrow's team meeting to 11 am." A change applies to that occurrence unless you request a wider scope. To change more than one occurrence, specify "this and future events" or "all events." Check the scope when Siri asks for clarification. An occurrence already edited separately is rescheduled on its own, even when you ask to move the whole series. ### Dates, reminders, and task calendars[​](#dates-reminders-and-task-calendars "Direct link to Dates, reminders, and task calendars") When creating an event, give both a start and an end time if you want a specific duration, or say "all-day" for an event without a time. Rescheduling a timed event preserves its time zones unless the request changes them. Changing between timed and all-day events uses BusyCal's normal date and time defaults. Siri's reminder actions work with BusyCal tasks. You can create, edit, complete, reopen, and delete tasks. Creating a task calendar uses the account that owns your default task calendar, and that account must support creating task calendars. Siri cannot add or change attendees, attach images to tasks, create location-based task alerts, or create sections within task calendars. Use BusyCal's own controls for supported details that Siri cannot change. ## Works with AppleScript and the Claude Desktop Extension[​](#automation "Direct link to Works with AppleScript and the Claude Desktop Extension") Siri and Shortcuts share BusyCal's automation engine with two other surfaces on the Mac. [AppleScript](/docs/busycal/70624-applescript.md) covers the same read and write commands from a script, including `create task calendar`, `move item`, `reschedule event`, and `list calendar sets`, and the [Claude Desktop extension](/docs/busycal/70624-mcp.md) exposes them to Claude as tools. ## Spotlight and the Item on Screen[​](#spotlight "Direct link to Spotlight and the Item on Screen") BusyCal events and tasks that appear in Spotlight open directly in BusyCal when selected. On systems that support it, BusyCal identifies the saved item you are viewing for Siri. This can be one selected event or task in the calendar, task list, or search results, or the item shown in a visible **Info Panel**, including a floating or detached panel. Requests that change it in your own words need the [Siri AI requirements](#requirements) described above. Save a new item before referring to it as "this event" or "this task." Items without usable event dates cannot be used for Siri AI calendar-event changes. If Siri cannot resolve an onscreen request, name the event and date, or use **Find Events** or **Find Tasks** in Shortcuts. Spotlight results for events come from **Enable Spotlight Search for Events** in [Settings > Advanced](/docs/busycal/70607-preferences.md#advanced). --- # Using BusyCal with Reminders Reminders is available as an app on iOS and macOS, which can include lists of reminders. BusyCal can connect to Reminders directly for syncing these lists their container reminders. This feature is only available in BusyCal iOS 3.5.2 and above. important Please go through the considerations and limitations listed below to understand what is and isn't supported. ## Prerequisites[​](#prerequisites "Direct link to Prerequisites") If you own a mac or iOS that has already been upgraded to macOS Catalina or iOS 13, you may already have upgraded Reminders app to its new storage format. If so, you will need to ensure that **all your devices** are on macOS 10.15 (Catalina) or above, or iOS 13.0 or above, as upgraded Reminders from macOS 10.15+ (Catalina) or iOS 13+ are not visible on macOS 10.14 or below. BusyCal on any device below Catalina or iOS 13 will only see old, non-upgraded Reminders lists and tasks that will not sync with iCloud or other devices with more recent OS versions. ## Syncing with Reminders[​](#syncing "Direct link to Syncing with Reminders") To sync BusyCal with Reminders, do the following: 1. Open BusyCal > Settings and tap on Accounts. 2. Tap on "Add Account..." 3. Tap "Connect" next to "Reminders" ![Syncing With Reminders](https://www.busymac.com/images/ios-reminder-account.png) ## Important Considerations[​](#considerations "Direct link to Important Considerations") ### Reminders app: Not Upgraded[​](#notupgraded "Direct link to Reminders app: Not Upgraded") If you have *not* yet upgraded your Reminders app to the new storage format offered by iOS 13 and macOS Catalina, you may see duplicate calendars and tasks in BusyCal; one copy may be syncing from your iCloud account (if added to BusyCal), and one copy would appear to be syncing from the Reminders app. In this case, we would advise that you *ONLY* rely on the calendars syncing via your iCloud account and do *NOT* sync with Reminders separately. ### Reminders app: Upgraded[​](#upgraded "Direct link to Reminders app: Upgraded") If you *have* already upgraded the Reminders app in iOS 13 / macOS Catalina, you may notice that changes you make in Reminders directly, or using the new Reminders Sync method in BusyCal, do not sync back to changes you made to Reminders in your iCloud account. This is important to understand ([and discussed here](/docs/faqs/112990-reminders-in-ios-13-and-macos-catalina-drops-support-for-caldav.md)): Reminders app no longer syncs to iCloud's CalDAV servers, and instead stores data into a special location inaccessible by the iCloud CalDAV server. The side-effect is that you may see duplicated lists or tasks appear in both Reminders and under your iCloud (CalDAV account) in BusyCal, but changes will *not* sync between the two. These are two separate accounts, with two separate copies of unrelated data. Thus, this new syncing method is *only* useful if you have already upgraded Reminders to the new storage format, and plan to use the lists in Reminders to sync data between multiple-devices. Enabling Reminders support in BusyCal will allow you to manage you lists and to-dos without requiring you to switch between apps. You should **stop** ✋ using the To-Do calendars syncing via your iCloud account. ## Reminders Limitations[​](#limitations "Direct link to Reminders Limitations") BusyCal attempts to sync all the information retrieved from Reminders, however the sync mechanism currently offered by the OS is somewhat limited to what it can and cannot sync. These limitations and caveats have been listed below. * BusyCal syncs all incomplete tasks, but only the completed tasks from the last 12 months. This keeps syncing fast and avoids the errors, duplicates, and hangs Reminders can run into with very large task histories. Older completed tasks remain untouched and can still be seen in the Reminders app. * New features in Reminders (such as indented sub-tasks, folders, "flagging" a task) are unavailable to 3rd party developer apps * Sub-tasks added to Reminders app will not be visible in BusyCal (not available to 3rd party apps) * These properties are not available for Tasks: Attachments, Graphics, Locations, Location URLs, Tags, URLs, Private Flag. * Multiple alarms are not supported. * Assigning a "URL" to a To Do will not sync across multiple devices running BusyCal as Reminders does not support syncing 3rd party app meta-data. * The BusyCal Apple Watch app shows Reminders tasks only when they have a due date. A due time is needed only for timed Watch complications. See [BusyCal for Apple Watch](/docs/busycalios/apple-watch.md#task-display-rules). ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") ### 🛠️ Reminders Sync Slow or Stuck[​](#sync-slow-or-stuck "Direct link to 🛠️ Reminders Sync Slow or Stuck") BusyCal reads directly from Apple's Reminders database on your device. It does not have its own sync engine for tasks — it simply reflects whatever Reminders currently has on that device. This means that if Reminders itself is not syncing properly between your devices, BusyCal will show the same stale or missing data. **Once Reminders is syncing reliably between your devices, BusyCal will automatically pick up the changes.** important When diagnosing task sync issues, **remove BusyCal from the equation entirely** and focus solely on getting Apple's Reminders to sync between your devices first. There is no point testing further in BusyCal until Reminders itself is working. #### Step 1: Test Reminders sync without BusyCal[​](#step-1-test-reminders-sync-without-busycal "Direct link to Step 1: Test Reminders sync without BusyCal") 1. Open the **Reminders** app on both your iPhone/iPad and Mac. 2. Create a **test task** on one device. 3. Check whether it appears in Reminders on the other device within a minute or two. #### Step 2: If Reminders is not syncing[​](#step-2-if-reminders-is-not-syncing "Direct link to Step 2: If Reminders is not syncing") If the test task does *not* appear in Reminders on both devices, the problem is with Apple's Reminders sync, not BusyCal. Try the following: * **Restart both devices** — this often clears a stuck Reminders sync. * **Launch Reminders and keep it open** — Apple's sync can stall when the Reminders app isn't running. Open it and give it a moment to finish syncing with iCloud. * **Trim large or old lists** — If you have very large Reminders lists or hundreds of old completed tasks, this can slow down or stall sync. Apple's Reminders has [system limits](https://support.apple.com/103188) on the number of items. Some users have found that deleting old completed tasks and keeping lists shorter resolves persistent sync issues. See [Archiving Old Tasks](/docs/busycal/archiving-old-tasks.md) for step-by-step instructions on Mac. * **Relaunch Reminders** — Force-quit and reopen Reminders to kick-start a fresh sync. * If Reminders still won't sync between devices, **contact [Apple Support](https://support.apple.com/)** for help with iCloud Reminders — this is outside BusyCal's control. #### Step 3: If Reminders is syncing, test BusyCal[​](#step-3-if-reminders-is-syncing-test-busycal "Direct link to Step 3: If Reminders is syncing, test BusyCal") Once you've confirmed that Reminders syncs correctly between your devices, test in BusyCal: 1. Open BusyCal and go to **Settings > Accounts > Reminders**. 2. Tap **Sync Now** and keep BusyCal in the foreground until the spinner stops. 3. Check whether the test task now appears. tip Apple's Reminders sync can occasionally be slow, appear stuck, or lag behind — especially with large task lists containing hundreds or thousands of items. This is entirely outside BusyCal's control. As a general best practice, **open the Reminders app first** and give it a moment to finish syncing with iCloud before opening BusyCal. On iOS, also keep BusyCal in the foreground while syncing, as iOS may throttle background activity. If your tasks do eventually appear, the sync is working correctly, just slowly. ### 🛠️ Changes not Syncing[​](#️-changes-not-syncing "Direct link to 🛠️ Changes not Syncing") If you feel changes made in Reminders are not syncing with BusyCal, or changes made in BusyCal do not appear in Reminders or iCloud on another device, you most likely have a mismatch of operating system versions and its data. Normally, this would happen when you are running BusyCal on a version of macOS below Catalina, and you're comparing the data you see with another device running a more recent version of the OS, such as macOS Catalina or iOS 13. Usually, if you see a list with a ⚠️ symbol in its name, or an otherwise empty list with a task titled *"Where are my reminders"*, you have already upgraded Reminders on one of your machines to its new storage format. This storage format is not compatible with older versions of the OS, nor does it sync via CalDAV to 3rd party clients. Data stored in Reminders is now only accessible by a device running a more recent version of the OS (macOS 10.15+, or iOS 13+). Here are a few things you can try: * Ensure all of your devices are on the latest version of the OS. If any mac is on or below 10.14, or an iOS device is on or below 12.0, you should upgrade these to the latest OS version. * On macOS, open Reminders.app. What do you see? If the lists and tasks present there are exactly the same as those found in BusyCal after an initial sync, then we know BusyCal isn't the culprit - it's simply seeing what Reminders is seeing. * On iOS, open Reminders.app. What do you see? If there's a mismatch with what you see in your macOS Reminders app, then we know the two aren't syncing and one of these may have been upgraded to the new storage format. Again, the only way out would be to ensure you're on the latest version of the OS. ### 🛠️ Task Appearing at the Wrong Date in Reminders vs. BusyCal[​](#️-task-appearing-at-the-wrong-date-in-reminders-vs-busycal "Direct link to 🛠️ Task Appearing at the Wrong Date in Reminders vs. BusyCal") Reminders has a known issue where it displays alarm information as the task's effective due date and time instead of the actual due date. This happens with both absolute alarms (specific date and time) and relative alarms (such as "2 days before due time"). When any alarm is present, Reminders hides the actual due date and time, showing the alarm's calculated date and time as the source of truth instead. This causes confusion when viewing the same task in third-party apps like BusyCal, which treats due dates and alarm dates as separate properties. To fix this discrepancy, inspect the task in BusyCal and remove any assigned alarms. This should resolve the date mismatch between the two apps. ### 🛠️ Calendars not Showing[​](#️-calendars-not-showing "Direct link to 🛠️ Calendars not Showing") BusyCal will show you whatever the Reminders app shows you. Open the Reminders.app to confirm if it's missing calendars as well. If it is, then you have not yet added all the accounts you're expecting to see calendars from. Open BusyCal iOS Settings > Accounts and make sure you have all your accounts listed. Tap on each of the accounts and ensure you have enabled Reminders (as this is a per-account setting). ### 🛠️ Tasks Disappearing Intermittently[​](#tasks-disappearing "Direct link to 🛠️ Tasks Disappearing Intermittently") If your tasks in BusyCal **vanish suddenly** and then **reappear after a while**, you're encountering a known issue with **Reminders.app**. This bug causes Reminders to **incorrectly report all tasks as deleted** when BusyCal attempts to sync, leading BusyCal to remove them temporarily—only for them to show up again moments later. #### Workarounds:[​](#workarounds "Direct link to Workarounds:") 1. **Open Reminders.app first** – Before launching BusyCal, ensure your tasks are visible in Reminders. 2. **Periodically open Reminders.app** – Doing so can help prevent this issue from occurring. 3. **Consider switching task services** – If this issue persists, switching to a more reliable task-syncing service like **Todoist** allows BusyCal to sync directly without interference. ### 🛠️ Sub-tasks and Checklists Not Syncing[​](#subtasks "Direct link to 🛠️ Sub-tasks and Checklists Not Syncing") Apple provides developers with an API called [`EventKit`](https://developer.apple.com/documentation/eventkit) to access calendar and reminders data. This is how apps like BusyCal can read and write to Reminders. However, **EventKit is extremely limited** and does **not** provide any way to: ❌ Access sub-tasks or checklists ❌ Support advanced task features beyond basic properties (title, date, time, alarms, notes etc) Since Apple **does not expose sub-tasks** through EventKit, there is no workaround until Apple expands its API to allow full syncing of checklists. ### 🛠️ BusyCal Only Syncs When Reminders.app is Running[​](#launch-reminders "Direct link to 🛠️ BusyCal Only Syncs When Reminders.app is Running") Due to a long-standing bug in Apple's Reminders system, syncing with BusyCal (or any third-party app) only works reliably **when the Reminders app is actively running**. This is a known issue that affects a few users for unknown reasons. Try the following steps to reset Reminders syncing: 1. Open **System Settings > \[your Apple Account] > iCloud**, turn off **Reminders**, and click **Done**. 2. Restart your Mac. 3. Go back to the same settings and **turn Reminders back on**. 4. Launch **Reminders.app** and wait for it to fully sync. 5. In BusyCal, go to **Tasks > Preferences** and uncheck **Enable Reminders**. 6. Quit and relaunch BusyCal, then re-enable **Enable Reminders**. If syncing still fails, your best option is to **contact Apple iCloud support** and report that **Reminders is not syncing with third-party apps**. --- # Using BusyCal with Zoom Zoom is a market leading online video conferencing solution. BusyCal can connect to your Zoom account and enable you to add video / audio conferencing calls to existing meetings or new events with just a click. ## Adding your Zoom account[​](#settingup "Direct link to Adding your Zoom account") To sync BusyCal with Zoom, do the following: note BusyCal supports connecting one Zoom account per device. If you authorize the same Zoom account in BusyCal on another device, Zoom invalidates the previous authorization and you will be prompted to reauthorize. 1. Open BusyCal > Settings from the main screen 2. Tap on Accounts > Add Account... to add a new account. 3. Tap **Connect** next to Zoom in the list ## Adding Zoom meetings to events[​](#creating "Direct link to Adding Zoom meetings to events") You can add a Zoom meeting to an existing event as well as a new event. Meetings cannot be added to Tasks, however. Once your Zoom account has been setup successfully, select any event to see a new option in the Edit Screen, labelled "Add meeting...". Tap on this button once to create a new Zoom meeting. You will see the button show "Pending..." briefly while it connects to Zoom to setup the meeting. Upon success, BusyCal will embed the meeting link within the notes section of the event. Currently there is no way to customize individual meeting settings. Meeting settings are obtained directly from your Zoom account, including the timezone for the meetings or your meeting password requirements. Zoom will automatically add a password to your meeting if that has been setup in your Zoom account; BusyCal will simply request Zoom to create a meeting with your preferred settings. Whatever preferences and defaults you may have set, BusyCal will use those when creating or updating the meeting. ## Updating Zoom meetings[​](#updating "Direct link to Updating Zoom meetings") Every time you make a change to an event with a Zoom meeting, BusyCal automatically refreshes the meeting with new dates, topic or agenda. You do not have to perform any manual steps separately. Having said that, BusyCal will not poll Zoom for updates. If you were to delete or modify the meeting manually using Zoom's website, these changes will not automatically reflect within BusyCal, unless you were to make a change to the event within BusyCal itself. ## Recurring Meetings[​](#recurring "Direct link to Recurring Meetings") Zoom offers a limited number of options when it comes to setting up a recurring meeting. Any time you add a meeting to a recurring event within BusyCal, an attempt is made to create a Zoom meeting based on this pattern. However this is not always possible given the limitations. This is especially true for detached events. For this reason, any time you detach a repeating event (i.e. alter its date to effectively create an exception to the original recurring pattern), BusyCal leaves the meeting link within the notes untouched, but in addition allows you to optionally replace it with a new meeting (by clicking "Add Meeting.."). This of course makes sense, given the meeting date and time has now changed. Zoom, however, will continue to remind you of the meeting on the "wrong date", since it does not register such exceptions. You will need to ignore reminders coming from the Zoom app for those dates for now unfortunately, as there is no way around this limitation. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") ### 🛠️ I keep getting re-authorization requests[​](#reauth "Direct link to 🛠️ I keep getting re-authorization requests") Zoom unfortunately does [not support users authenticating their Zoom account in multiple devices](/docs/faqs/122644-zoom-account-keeps-requesting-to-be-reauthorized.md) at the same time, without requiring them to re-authenticate after a day. They invalidate all your other devices the moment you log into and authorize one device. Zoom developer support has explained this here: <https://devforum.zoom.us/t/anything-that-would-cause-all-refresh-tokens-for-a-user-level-app-to-go-bad/24186/2> The only thing you can do for now is to use either different accounts on each device, or use Zoom on only one device running BusyCal. Please leave feedback with Zoom so that they may reconsider. ### 🛠️ I only see "Pending..."[​](#pending "Direct link to 🛠️ I only see \"Pending...\"") When you tap on "Create Meeting", it may take some time for the zoom meeting link to create, depending on other tasks BusyCal may be busy performing. At times it may be necessary for an ongoing sync to end before BusyCal is able to send a request to Zoom. Try clicking on *Refresh Calendars* from the View menu (CMD+R) to see if that helps. ### 🛠️ I cannot see zoom meeting links in event notes[​](#no-links "Direct link to 🛠️ I cannot see zoom meeting links in event notes") This has been explained in the [Add Zoom Meetings](#creating) section above, that meeting links are hidden from notes for security reasons. These links however are always sent to the invitees and will *always* be visible to them. This is a BusyCal only feature, to prevent accidental removal / modifications etc. ### 🛠️ Meetings are not assigning a password[​](#no-pass "Direct link to 🛠️ Meetings are not assigning a password") You need to log into [zoom.us](https://zoom.us), click on Settings and then ensure you have enabled *Require passcode* for scheduled meetings. BusyCal will generate a random password for the meeting, based on the minimum password requirements set on your account. ### 🛠️ I see a *Add meeting* option for an event that already contains a Zoom Meeting[​](#add-meeting "Direct link to add-meeting") Zoom meetings can only later be removed from the same machine used to add the meeting. If the event in question already has a *Join Zoom* link visible near the event's title, but you see *Add meeting* button next to "zoom call:", this may suggest that the meeting was created on a different machine. This is not a bug and this does not affect the meeting in question. This simply means that the Zoom meeting related meta-data was saved on a different machine that cannot, due to technical limitations, sync over to your other machines. ### 🛠️ I see an error[​](#error "Direct link to 🛠️ I see an error") Please [contact us](/docs.md#technical-support) so we can go through the logs to identify the issue. ### 1. Removing Zoom from BusyCal[​](#1-removing-zoom-from-busycal "Direct link to 1. Removing Zoom from BusyCal") You can remove your Zoom account from BusyCal at any time. Simply open Settings > Accounts, select Zoom in the list panel and then Remove Account. Existing meetings and links within event notes will not be removed. This is so that you remain in control of managing your Zoom meetings once the account has been removed. In case you add your account back into BusyCal, you can resume managing it directly from within the app. You can also disable Zoom temporarily to take it offline for whatever reason. Open Settings > Accounts, select Zoom and uncheck "Enable this account". When you do this, you will no longer be able to manage your meetings from BusyCal, and any pending updates waiting to be sent to Zoom will be deferred indefinitely until the account is re-enabled. ### 2. Uninstalling and Deauthorizing BusyCal from Zoom[​](#2-uninstalling-and-deauthorizing-busycal-from-zoom "Direct link to 2. Uninstalling and Deauthorizing BusyCal from Zoom") 1. Login to your Zoom account and navigate to the Zoom App Marketplace. 2. Click *Manage* > *Installed Apps* or search for BusyCal. 3. Click on the *BusyCal* app listing. 4. Click *Uninstall* This will deauthorize the app from accessing Zoom. --- # Calendar Sets With Calendar Sets, you can manage different collections of calendars to be able to quickly switch between them, such as a different collection of Work related calendars and a different one for Personal. Tap on the Calendar Set button next to Settings from the top toolbar options. This will present you with a list of Calendar Sets you have created. Upon first launch, BusyCal will create an initial set by the name "My Calendar Set" automatically for you. Tap on **Manage Sets…** and then tap on **New Calendar Set** to create a new set. ## Overriding Default Calendars[​](#ios-set-override "Direct link to Overriding Default Calendars") Under app settings, you can assign a default Calendar to be used for creating new Events / Tasks. However, it may make more sense to use a different set of default calendars when a particular Calendar Set has been activated. You can override the default calendars by editing the Calendar Set and tapping **Event Calendar** under the Override Default Calendars section. ## Preferred View[​](#ios-set-preferred-view "Direct link to Preferred View") A Calendar Set can switch BusyCal to a particular view each time the set becomes active. 1. Open **Settings** in BusyCal. 2. Tap **Calendar Sets**, then tap the set. 3. Tap **Preferred View** and choose **List**, **Day**, **Week**, **Month**, **Year** or **Tasks**. Leave it on **None** to stay in the current view. You can choose **Year** as a Preferred View on iPad only. On iPhone, Year View appears only in landscape, so iPhone doesn't offer it here. If you choose Year on iPad, the set keeps that choice when it syncs to your iPhone. There, BusyCal switches to Year View when the set becomes active in landscape, and to Month in portrait. ## Siri and Shortcuts[​](#ios-set-siri "Direct link to Siri and Shortcuts") To switch sets by voice, say "Hey Siri", then "Show a calendar set in BusyCal", and pick the set you want. You can also add BusyCal's **Show Calendar Set** action to a shortcut, choose the set there, and give the shortcut a short name. Either way, BusyCal opens on that set. To switch sets automatically, add a BusyCal Focus filter instead. It applies a set for as long as a Focus is on, and brings back your usual set when the Focus ends. If you choose another set yourself while the Focus is on, that becomes the selection kept afterwards. See [Siri and Shortcuts](/docs/busycalios/140000-shortcuts.md#focus-filter) for both. ## Widgets & Apple Watch[​](#ios-set-widgets-watch "Direct link to Widgets & Apple Watch") BusyCal uses a dedicated Calendar Set for **widgets** and the **Apple Watch** app. This is a single, app-wide choice: the Calendar Set you pick here determines which calendars appear in **every** BusyCal widget on your Home Screen and Lock Screen, as well as inside the BusyCal watch app. If your widgets or watch data look incomplete, make sure the right Calendar Set is selected. To choose the Calendar Set for Widgets & Watch: 1. Open **Settings** in BusyCal. 2. Tap **Calendar Sets**. 3. Tap **Widgets & Watch**. 4. Select the Calendar Set you want widgets and the watch app to use. If you want widgets to show everything, create a Calendar Set that includes all calendars, then select it here. For details about the Watch views, complications, task display rules, and refresh steps, see [BusyCal for Apple Watch](/docs/busycalios/apple-watch.md). note At this time, the Widgets & Watch Calendar Set applies globally across all BusyCal widgets, so you cannot configure two instances of the same widget to each show a different Calendar Set. Per-widget Calendar Set selection is something we’d like to support in a future update. ## Calendar Set Syncing[​](#syncing "Direct link to Calendar Set Syncing") As of BusyCal v5.3, Calendar Sets now automatically sync across all your iOS devices. For macOS users, Calendar Sets (also known as Smart Filters) will sync exclusively between macOS devices. To disable Calendar Set syncing, go to Settings > Advanced > Sync Calendar Sets and toggle the feature off. --- # URL Handler BusyCal iOS supports URL handlers for creating new events and performing a few other tasks. ## Creating Events in BusyCal[​](#creating-events-in-busycal "Direct link to Creating Events in BusyCal") You can create a new event in BusyCal using natural language by opening a percent-escaped URL in the following format. This will launch BusyCal and present you with the edit screen to allow you to add more details as needed: ``` busycal://new/<event description>/<notes>/<autosave> ``` The URL takes up to 3 parameters: 1. `<event description>`: The event description must contain an event title, date (today is assumed if no date), and a start time (an all-day event is assumed if no start time). In addition, you can include an optional calendar name preceded by a slash (e.g., /Work), and an optional final parameter containing a URL surrounded by angle brackets (e.g., `<www.apple.com>`). NOTE: All text must be URL encoded. 2. `<notes>`: The text you would like to show in the notes section. 3. `<autosave>`: Optional boolean parameter (`true` or `1`) that, when provided, automatically saves the event without requiring user interaction. When omitted, BusyCal will launch the event editor for manual editing. Here are some example natural language phrases for creating events and the corresponding **percent escaped URLs**: ``` Baseball game tomorrow busycal://new/Baseball%20game%20tomorrow ``` [Try it out](busycal://new/Baseball%20game%20tomorrow) ``` Staff meeting Thursday at 10am busycal://new/Staff%20meeting%20Thursday%20at%2010am ``` [Try it out](busycal://new/Staff%20meeting%20Thursday%20at%2010am) ``` Meeting with Joe June 7 at 3pm /Work busycal://new/Meeting%20with%20Joe%20June%207%20at%203pm%20%2FWork ``` [Try it out](busycal://new/Meeting%20with%20Joe%20June%207%20at%203pm%20%2FWork) important `/Work` must be encoded as `%2FWork`, preceded by a space `%20` ``` Meeting with Joe June 7 at 3pm /Work Some Notes busycal://new/Meeting%20with%20Joe%20June%207%20at%203pm%20%2FWork/Some%20Notes ``` [Try it out](busycal://new/Meeting%20with%20Joe%20June%207%20at%203pm%20%2FWork/Some%20Notes) important You must add a space `%20` after the title for the list name to be interpreted `/Work` (`%2FWork`) ### Creating Events with Auto-Save[​](#creating-events-with-auto-save "Direct link to Creating Events with Auto-Save") These examples will automatically create and save the event without requiring user interaction: ``` Baseball game tomorrow busycal://new/Baseball%20game%20tomorrow//true ``` [Try it out](busycal://new/Baseball%20game%20tomorrow//true) ``` Project review 3pm /Work busycal://new/Project%20review%203pm%20%2FWork//1 ``` [Try it out](busycal://new/Project%20review%203pm%20%2FWork//1) See [Quick Entry](/docs/busycal/70605-quick-entry.md) for more information on the natural language syntax for creating events in BusyCal. ## Creating Tasks in BusyCal[​](#creating-to-dos-in-busycal "Direct link to Creating Tasks in BusyCal") You can create a new task in BusyCal using natural language by opening a percent-escaped URL in the following format: ``` busycal://new/-<task description>/<notes>/<autosave> ``` The URL takes up to 3 parameters: 1. `-<task description>`: To create a task, precede the task description with a hyphen (-). You can provide a due date (an undated task is created if no date is provided), an optional priority via exclamation points (`!` = low, `!!` = medium, `!!!` = high), an optional calendar name preceded by a slash (e.g., `/Work`), and an optional final parameter containing a URL surrounded by angle brackets (e.g., `<www.apple.com>`). 2. `<notes>`: The text you would like to show in the notes section. 3. `<autosave>`: Optional boolean parameter (`true` or `1`) that, when provided, automatically saves the event without requiring user interaction. When omitted, BusyCal will launch the event editor for manual editing. Here are some example natural language phrases for creating tasks and the corresponding percent-escaped URLs: ``` -Call Bob tomorrow busycal://new/-Call%20Bob%20tomorrow ``` [Try it out](busycal://new/-Call%20Bob%20tomorrow) ``` -Pay Taxes April 15!!! /Personal busycal://new/-Pay%20Taxes%20April%2015!!!%20%2FPersonal ``` [Try it out](busycal://new/-Pay%20Taxes%20April%2015!!!%20%2FPersonal) ``` -Buy Toner /Shopping <www.amazon.com> busycal://new/-Buy%20Toner%20%2FShopping%20%3Cwww.amazon.com%3E/true ``` [Try it out](busycal://new/-Buy%20Toner%20%2FShopping%20%3Cwww.amazon.com%3E/true) See [Quick Entry](/docs/busycal/70605-quick-entry.md) for more information on the natural language syntax for creating tasks in BusyCal. ## Selecting a Date in BusyCal[​](#selecting-a-date-in-busycal "Direct link to Selecting a Date in BusyCal") You can highlight a date in BusyCal by opening the `busycal://date/` URL, appended with the date in yyyy-MM-dd format: ``` busycal://date/2021-05-31 ``` [Try it out](busycal://date/2021-05-31) To go to the current date: ``` busycal://date/now ``` [Try it out](busycal://date/now) ### Opening BusyCal[​](#launch "Direct link to Opening BusyCal") The following can be used to open BusyCal and switch to a specific view: To open List view: ``` busycal://launch/list ``` [Try it out](busycal://launch/list) To open Day view: ``` busycal://launch/day ``` [Try it out](busycal://launch/day) To open Week view: ``` busycal://launch/week ``` [Try it out](busycal://launch/week) To open Month view: ``` busycal://launch/month ``` [Try it out](busycal://launch/month) To open Tasks view: ``` busycal://launch/tasks ``` [Try it out](busycal://launch/tasks) --- # Siri and Shortcuts BusyCal works with Siri and the **Shortcuts** app on iPhone and iPad. You can create events and tasks, search your calendars, check your availability, open BusyCal at a particular date or view, and switch Calendar Sets automatically when a Focus turns on. Open BusyCal first and finish setting up your calendars. After setup, actions that read or change calendar data can run without opening BusyCal. Siri or Shortcuts may ask you to unlock your device or allow access before continuing. The actions that change what you are looking at, such as opening a date or a view, open BusyCal. ## Requirements[​](#requirements "Direct link to Requirements") The standard Siri phrases and Shortcuts actions below require **iOS 18 or iPadOS 18 or later**. Open **Shortcuts** and search for BusyCal to check the actions available in your installed version. **Siri AI** support described in this guide is for the upcoming BusyCal release. It requires **iOS and iPadOS 27 or later**, a compatible Apple Intelligence device, and Siri AI enabled in a supported language and region. Installing the operating system alone does not enable it. See [Apple's Siri AI availability information](https://www.apple.com/newsroom/2026/06/apple-introduces-siri-ai-a-profoundly-more-capable-and-personal-assistant/) and [Asking Siri directly](#ios-27). important Calendars in a protected Calendar Set stay hidden from Siri and Shortcuts, even while BusyCal itself is unlocked, because they never inherit the authentication you did in the app. If **Protected Calendar Sets** is set to **All**, Siri and Shortcuts see no calendars at all. See [Settings](/docs/busycalios/70670-settings.md#security) to change which sets are protected. ## Talking to Siri[​](#siri-integration "Direct link to Talking to Siri") BusyCal supplies its own spoken phrases for ten common actions, so you can use them without building a shortcut first. Say "Hey Siri" followed by one of these, and Siri asks for whatever detail it still needs. **Quick Add** takes whatever you say and runs it through [Natural Language](/docs/busycalios/70669-natural-language.md) entry, so a phrase like "lunch with Sam tomorrow at 1" becomes a complete event: * "Quick add with BusyCal" * "Quick add to BusyCal" * "Add this to BusyCal" * "Put this on my calendar in BusyCal" **New Event** creates an event from a title, a start, and an end: * "Create an event in BusyCal" * "New event in BusyCal" * "Add an event to BusyCal" * "Schedule an event in BusyCal" **New Task** creates a task on a task calendar: * "Create a task in BusyCal" * "New task in BusyCal" * "Add a task to BusyCal" * "Make a new task in BusyCal" **What's Coming Up** shows your events and tasks for the week: * "What's coming up in BusyCal" * "Show my schedule in BusyCal" * "Show upcoming items in BusyCal" * "Show my week in BusyCal" **Today** shows the same list for today only: * "Show my day in BusyCal" * "What's on today in BusyCal" * "Show today's schedule in BusyCal" * "What do I have today in BusyCal" **When Am I Free** finds the next open slot within a date range. Siri asks when to start and stop looking if you have not supplied those dates. The default minimum slot is 30 minutes: * "When am I free in BusyCal" * "Find free time in BusyCal" * "Show my free time in BusyCal" * "Find an open time in BusyCal" **Find Events** searches your events: * "Find an event in BusyCal" * "Find events in BusyCal" * "Search my events in BusyCal" * "Look up an event in BusyCal" **Find Tasks** searches your tasks: * "Find a task in BusyCal" * "Find tasks in BusyCal" * "Search my tasks in BusyCal" * "Show my tasks in BusyCal" **Complete Task** marks a task complete, asking which one you mean: * "Complete a task in BusyCal" * "Mark a task done in BusyCal" * "Check off a task in BusyCal" * "Finish a task in BusyCal" **Show Calendar Set** opens BusyCal on a saved Calendar Set: * "Show a calendar set in BusyCal" * "Switch calendar sets in BusyCal" * "Use a calendar set in BusyCal" * "Change my calendar set in BusyCal" Siri reads the result back to you: how many events or tasks matched, up to three of them by name with their dates, and your next free slot when you ask about availability. A shortcut still receives the whole list. When Siri asks you to pick a task, the list includes overdue and undated tasks, and each row shows whether the task is open or complete along with its due date. Any shortcut you build yourself can also be run by voice. Give it a short name and say "Hey Siri" followed by that name. ## Available Shortcut Actions[​](#available-shortcut-actions "Direct link to Available Shortcut Actions") Open the **Shortcuts** app, tap **+** to create a shortcut, and search for "BusyCal" to see the actions below. Actions that take an event or a task accept one passed in from an earlier action, so you can chain a search into a change. **Find and read** your calendar data: | Action | What it does | Key parameters | | ---------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Find Events** | Finds events by date range, text, or Calendar Set. | **Search Text**, **Start Date**, **End Date**, **Calendar**, **Calendar Set**, **Limit** | | **Find Tasks** | Finds tasks by due date, text, or Calendar Set. | **Search Text**, **Start Date**, **End Date**, **Calendar**, **Calendar Set**, **Completed**, **Limit** | | **Get Upcoming Items** | Shows the events and tasks coming up next, with a summary you can see in the Shortcuts result. | **Upcoming Range**, **Number of Days**, **Calendar Set**, **Include Tasks** | | **Get Availability** | Returns free or busy time in a date range. | **Start Date**, **End Date**, **Calendars**, **Free or Busy**, **Minimum Duration in Minutes**, **Respect Working Hours** | | **When Am I Free** | Finds the next available time within the dates you supply. | **Start Date**, **End Date**, **Minimum Duration in Minutes**, **Calendars**, **Respect Working Hours** | Searches follow BusyCal's calendar visibility settings. Set **Calendar** or **Calendar Set** to narrow the results further. Date filters in **Find Events** use the event's start date; **Find Tasks** uses the task's due date. An event that began before the search period may be omitted even if it is still running. Leave the date filters empty when you want to include tasks without a due date. **Find Events** and **Find Tasks** return up to 50 items by default. Increase **Limit** (up to 500), or narrow the dates and calendars, when you need more specific results. **Create** events and tasks: | Action | What it does | Key parameters | | ---------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Quick Add** | Creates an event, task, or journal entry from the text you type. | **Text**, **Item Type**, **Calendar** | | **Create Event** | Creates an event with the dates and details you choose. | **Title**, **Start Date**, **End Date**, **All Day**, **Start Time Zone**, **End Time Zone**, **Calendar**, **Location**, **Alarms in Minutes**, **Travel Time in Minutes**, **Notes**, **URL**, **Tags**, **Show As** | | **Create Task** | Creates a task with the date and details you choose. | **Title**, **Due Date**, **All Day**, **Due Time Zone**, **Calendar**, **Location**, **Alarms in Minutes**, **Notes**, **URL**, **Tags**, **Priority**, **Starred** | **Alarms in Minutes** counts from the start time, or from a task's due date. Use -15 for fifteen minutes before, or 0 for the exact time. You can set up to four. **Change** existing items: | Action | What it does | Key parameters | | --------------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Update Event** | Changes the details you choose on an event. | **Event**, **Repeating Events**, **Title**, **Location**, **Notes**, **URL**, **Location URL**, **Travel Time in Minutes**, **Tags**, **Alarms in Minutes** | | **Update Task** | Changes the details you choose on a task. | **Task**, **Title**, **Notes**, **URL**, **Location URL**, **Tags**, **Alarms in Minutes**, **Priority**, **Starred** | | **Move Event** | Moves an event to a new start date, keeping its duration. | **Event**, **Start Date**, **Start Time Zone**, **Repeating Events** | | **Defer Task** | Gives a task a new due date, or clears its due date. | **Task**, **Due Date**, **All Day**, **Due Time Zone** | | **Complete Task** | Marks a task complete. | **Task**, **Completion Date** | | **Reopen Task** | Reopens a task you already completed. | **Task** | | **Duplicate Calendar Item** | Duplicates an event or task. | **Calendar Item**, **Repeating Events**, **Calendar** | | **Delete Events** | Deletes the events you pass in. | **Events**, **Repeating Events** | | **Delete Tasks** | Deletes the tasks you pass in. | **Tasks** | **Open** BusyCal at a particular place: | Action | What it does | Key parameters | | ------------------------ | ---------------------------------------------------------------- | ----------------- | | **Change Calendar View** | Opens a BusyCal calendar view: List, Day, Week, Month, or Tasks. | **Calendar View** | | **Change to Date** | Opens a date in BusyCal. | **Date** | | **Show Calendar Set** | Shows a saved Calendar Set. | **Calendar Set** | | **Open Calendar Item** | Opens an event or task in BusyCal. | **Calendar Item** | **Update Event**, **Move Event**, **Duplicate Calendar Item**, and **Delete Events** take a **Repeating Events** choice of **This Event**, **This and Future Events**, or **All Events**, and all four default to **This Event**. Choose the scope before running the action. Task changes apply to the selected task. Three more actions open BusyCal. **Create New Event** and **Create New Task** also power BusyCal's Control Center controls: | Action | What it does | Key parameters | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------- | | **Create New Event** | Opens BusyCal on the new event screen. Needs iOS 18 or later. | None | | **Create New Task** | Opens BusyCal on the new task screen. Needs iOS 18 or later. | None | | **Launch App** | Opens BusyCal. Its **Target** lists one value, New Event. To open the new event screen, use **Create New Event**. Needs iOS 16 or later. | Target | ## Quick Add[​](#create-new-event "Direct link to Quick Add") The **Quick Add** action creates an event, task, or journal entry from a line of free text. ### How to use it[​](#how-to-use "Direct link to How to use it") 1. Open the **Shortcuts** app and tap **+** to create a shortcut. 2. Search for "BusyCal" and add **Quick Add**. 3. Type your text into the **Text** field, or pass it in from an earlier action. 4. Set **Item Type** to Task or Journal to create one of those instead of an event. ### Natural language examples[​](#natural-language-examples "Direct link to Natural language examples") The action understands phrases like: * `Lunch with Sarah tomorrow at noon` * `Team meeting Thursday at 3pm for 1 hour` * `Doctor appointment June 15 at 9am /Personal` Use `/` followed by a calendar name to choose the calendar. See [Natural Language](/docs/busycalios/70669-natural-language.md) for the full syntax. ### Add tags from text[​](#quick-add-tags "Direct link to Add tags from text") Availability Requires BusyCal 2026.4.2 or later. Set **Item Type** to **Task** and enter `Process receipts #Imported due today` in **Text**. The task is named `Process receipts`, is due today, and has the `Imported` tag. For an event, use **Event** and text such as `Team meeting tomorrow at 3pm #work`. Separate tags with spaces. Tag names can contain letters, numbers, underscores, or hyphens, but no spaces. Enclose a hashtag in straight quotes to keep it in the title, for example `Discuss "#Imported" tomorrow`. ## Create Task[​](#create-new-task "Direct link to Create Task") The **Create Task** action builds a task from separate fields rather than free text, so a shortcut can set the due date, time zone, task calendar, tags, alarms, **Priority**, and **Starred** on its own. Leave **Calendar** empty to use your default task calendar. Enter tag names in **Tags** without `#`. Saving tags during creation with **Create Task** and **Create Event** requires BusyCal 2026.4.2 or later. In earlier versions, follow **Create Task** with **Update Task**, pass it the created task, and set **Tags** there. Leave the other update fields unset. ## Change to Date[​](#change-to-date "Direct link to Change to Date") The **Change to Date** action opens BusyCal on the date you pass in. ### How to use it[​](#how-to-use-1 "Direct link to How to use it") 1. Add the **Change to Date** action to your shortcut. 2. Pick a date in the action, or pass one in from an earlier action. 3. Running the shortcut opens BusyCal on that date. ## Change Calendar View[​](#launch-app "Direct link to Change Calendar View") The **Change Calendar View** action opens BusyCal in the view you choose. ### Available views[​](#available-views "Direct link to Available views") * **List** opens the list view. * **Day** opens Day view. * **Week** opens Week view. * **Month** opens Month view. * **Tasks** opens the task view. ## Get Upcoming Items[​](#show-agenda "Direct link to Get Upcoming Items") The **Get Upcoming Items** action returns your events and tasks for Today, Tomorrow, This Week, or Custom Number of Days, and shows them as a summary in the Shortcuts result without opening BusyCal. Choose Custom Number of Days to use the **Number of Days** you set. Set **Include Tasks** to off for events only, or pick a **Calendar Set** to narrow it. ## Set a Calendar Set with a Focus[​](#focus-filter "Direct link to Set a Calendar Set with a Focus") A Focus filter switches BusyCal to a chosen [Calendar Set](/docs/busycalios/131439-calendar-sets.md) for as long as that Focus is on. ### How to use it[​](#how-to-use-2 "Direct link to How to use it") 1. Open **Settings** > **Focus**. 2. Select or create a Focus, such as Work, Personal, or Sleep. 3. Scroll down to **Focus Filters** and tap **Add Filter**. 4. Select **BusyCal**. 5. Choose the **Calendar Set** you want while that Focus is on, then tap **Add**. The switch happens in place, without opening BusyCal. When the Focus ends, BusyCal returns to your usual Calendar Set. If you choose another set yourself while the Focus is on, that becomes the selection kept afterwards. ### Example uses[​](#example-use-cases "Direct link to Example uses") * A Work Focus that shows only your work calendars during office hours. * A Personal Focus that hides work calendars in the evening and at weekends. * A Sleep Focus that shows only the calendars you want to see first thing. tip Create Calendar Sets by tapping the Calendar Set button in the toolbar and then **Manage Sets…**. See [Calendar Sets](/docs/busycalios/131439-calendar-sets.md) for more. ## Asking Siri Directly[​](#ios-27 "Direct link to Asking Siri Directly") With [Siri AI available on your device](#requirements) and a BusyCal version that supports it, you can ask for calendar changes in your own words without building a shortcut first. Include BusyCal in your request so Siri knows which app to use. These examples describe supported tasks, rather than fixed phrases. Siri may ask you to identify an item, supply a missing detail, or confirm a change. | To do this | Try asking | | ---------------------- | ---------------------------------------------------------------------- | | Create an event | "In BusyCal, add lunch with Sam tomorrow from 1 to 2 pm." | | Reschedule an event | "In BusyCal, move my dentist appointment to Thursday at 10 am." | | Change event details | "In BusyCal, change the location of lunch with Sam to Riverside Café." | | Create a task | "In BusyCal, add a task to renew my passport, due next Friday." | | Complete a task | "In BusyCal, mark the groceries task as complete." | | Remove an event | "In BusyCal, delete my dentist appointment on Thursday." | | Create a task calendar | "In BusyCal, create a task calendar called Home Projects." | For schedule summaries and free-time searches, you can also use the [standard Siri phrases](#siri-integration). They remain useful on devices without Siri AI. ### Ask about your schedule[​](#ask-about-your-schedule "Direct link to Ask about your schedule") Ask for events on a particular day or during part of the day: * "What’s on my calendar in BusyCal this afternoon?" * "What events do I have in BusyCal this evening?" * "What am I doing next Tuesday in BusyCal?" Siri interprets the dates and times in your request. For a precise window, include the hours: "What events do I have in BusyCal today between noon and 6 pm?" You can narrow the request by naming a calendar, such as "What’s on my Work calendar in BusyCal next Tuesday?" ### Choose a calendar[​](#choose-a-calendar "Direct link to Choose a calendar") Name an existing calendar when you want to choose where an item is added: * "Create lunch tomorrow from 1 to 2 pm in my Work calendar in BusyCal." * "Add Buy milk to my Shopping list in BusyCal, due tomorrow." Choose a calendar you can edit. Tasks need a calendar that supports tasks. Siri may ask you to choose if more than one calendar matches the name. A [Calendar Set](/docs/busycalios/131439-calendar-sets.md) controls which calendars you view. Choose an individual calendar when adding an event or task. If you do not name a task calendar, BusyCal uses its normal task-calendar selection, usually your configured default. For Siri AI event creation, Siri must choose a calendar before adding the event. BusyCal offers your default first in its suggestions, but Siri may still ask which calendar you want. You can change your preferred event and task calendars in [**Settings**](/docs/busycalios/70670-settings.md). ### Change the item you are viewing[​](#change-the-item-you-are-viewing "Direct link to Change the item you are viewing") Open a saved event in BusyCal so its details are on screen. Then ask, "In BusyCal, move this event to tomorrow at 2 pm." Listen to Siri's response and answer any question about which event or date you mean. Open a saved task and keep its details on screen to try, "In BusyCal, mark this task as complete." BusyCal supplies one current item for these requests. It does not supply every visible row or a numbered list of events on screen. If Siri cannot identify the item, use its title and date instead. See [Spotlight and the item on screen](#spotlight). ### Change a repeating event[​](#change-a-repeating-event "Direct link to Change a repeating event") Start with the occurrence you want to change. For example, ask, "In BusyCal, move only tomorrow's team meeting to 11 am." A change applies to that occurrence unless you request a wider scope. To change more than one occurrence, specify "this and future events" or "all events." Check the scope when Siri asks for clarification. An occurrence already edited separately is rescheduled on its own, even when you ask to move the whole series. ### Dates, reminders, and task calendars[​](#dates-reminders-and-task-calendars "Direct link to Dates, reminders, and task calendars") When creating an event, give both a start and an end time if you want a specific duration, or say "all-day" for an event without a time. Rescheduling a timed event preserves its time zones unless the request changes them. Changing between timed and all-day events uses BusyCal's normal date and time defaults. Siri's reminder actions work with BusyCal tasks. You can create, edit, complete, reopen, and delete tasks. Creating a task calendar uses the account that owns your default task calendar, and that account must support creating task calendars. Siri cannot add or change attendees, attach images to tasks, create location-based task alerts, or create sections within task calendars. Use BusyCal's own controls for supported details that Siri cannot change. ## Building Custom Shortcuts[​](#building-custom-shortcuts "Direct link to Building Custom Shortcuts") BusyCal actions combine with other apps and system actions. A few starting points: ### Morning briefing[​](#morning-briefing "Direct link to Morning briefing") Add **Get Upcoming Items** and set **Upcoming Range** to **Today**. Run it to see a summary of today's events and tasks. Turn off **Include Tasks** for an events-only briefing, or choose a **Calendar Set** to limit the results. ### Capture from the clipboard[​](#quick-event-from-clipboard "Direct link to Capture from the clipboard") Add **Get Clipboard**, then add **Quick Add** and use the clipboard result as **Text**. Copy a line such as `Lunch with Sarah tomorrow at noon` and run the shortcut to save it. Set **Item Type** and **Calendar** in the action when you want a particular destination. ### Weekly review[​](#weekly-review "Direct link to Weekly review") Add **Change to Date** and set **Date** to next Monday. Follow it with **Change Calendar View** set to **Week**. Running the shortcut opens BusyCal at that date in Week view. ### Choose an event and move it[​](#choose-and-move "Direct link to Choose an event and move it") Build a shortcut that lets you select the event before changing it: 1. Add BusyCal's **Find Events** action. Set **Search Text** to a title such as `dentist`, and set **Start Date** and **End Date** to the period you want to search. 2. Add **Choose from List** and pass it the events found by **Find Events**. Leave multiple selection off so you choose one event. 3. Add BusyCal's **Move Event**. Set **Event** to the chosen item and **Start Date** to the new date and time, or choose **Ask Each Time**. 4. For a repeating event, set **Repeating Events** to **This Event**, **This and Future Events**, or **All Events**. 5. Run the shortcut, select the event, and supply its new start time. BusyCal keeps its duration. ### Find time for an appointment[​](#find-free-time "Direct link to Find time for an appointment") 1. Add **When Am I Free**. 2. Set **Start Date** and **End Date**, for example tomorrow from 9 am to 5 pm. 3. Set **Minimum Duration in Minutes** to `45` and choose the **Calendars** that should count as busy. 4. Turn on **Respect Working Hours** if the search should stay within your configured working hours. 5. Run the shortcut to see the next matching slot. If there is no suitable slot, extend the date range or reduce the duration. ### Clear completed tasks[​](#clear-the-week "Direct link to Clear completed tasks") Use **Find Tasks** with a due-date range and **Completed** turned on. Add **Choose from List** so you can select the tasks to remove, then pass your selection into **Delete Tasks**. Check the selection before continuing: this deletes tasks rather than merely hiding completed ones. ## Spotlight and the Item on Screen[​](#spotlight "Direct link to Spotlight and the Item on Screen") BusyCal events and tasks that appear in Spotlight open directly in BusyCal when selected. On systems that support it, BusyCal identifies the saved item you are viewing for Siri. Open the event or task's details to make it the current item. Requests that change it in your own words need the [Siri AI requirements](#requirements) described above. Save a new item before referring to it as "this event" or "this task." Items without usable event dates cannot be used for Siri AI calendar-event changes. If Siri cannot resolve an onscreen request, name the event and date, or use **Find Events** or **Find Tasks** in Shortcuts. --- # Using BusyCal with Apple Calendar BusyCal now supports direct syncing with Apple Calendar in **read-only** mode for those instances where adding your account directly to BusyCal is not feasible. This capability is present in BusyCal 4.5.8 or higher. ✋ IMPORTANT This feature is not recommended for regular use. It is intended as a workaround for users who are unable to add their work or enterprise accounts directly to BusyCal. Be advised that using this feature introduces significant restrictions, such as read-only access to events and no ability to respond to meeting invites. ## How to Sync with Apple Calendar[​](#syncing "Direct link to How to Sync with Apple Calendar") Follow these steps to enable synchronization between BusyCal and Apple Calendar: 1. Tap on the Settings button 2. Tap **Accounts**, then tap **Add Account…** at the top of the screen 3. Tap "Connect" next to "Apple Calendar" and tap "Done" ### Why Not Use Apple’s EventKit or Built-in SDKs?[​](#why-not-use-built-in-sdks "Direct link to Why Not Use Apple’s EventKit or Built-in SDKs?") Apple provides developers with an API called [`EventKit`](https://developer.apple.com/documentation/eventkit) to access calendar data. However, **EventKit is extremely limited** and does not support many of BusyCal’s advanced features, such as: * ✅ Scheduling meetings, managing attendees and related steps * ✅ Custom durations * ✅ Attachments & conference call integration * ✅ Custom alarms * ✅ Time-blocking across calendars * ✅ Smart Filters & Saved Searches * ✅ Travel time and time-to-leave alerts * ✅ Tags, custom metadata, and private fields * ✅ Custom views, weather, and location-based features * And much, much, **much** more. Far too many to list here. Using EventKit would severely limit the flexibility and functionality that makes BusyCal unique. It's like building **a full-featured web browser like Chrome** instead of just wrapping around Apple’s WebKit view—power and customization matter! --- # Event Text Style BusyCal supports various text display styles. The following event text styles are available under **Settings > Event Text Style**: * **Plain** — Timed events appear as plain black labels over a white background with a colored dot next to them. All-day event banners are displayed as colored capsules. In both cases, the color is derived from either assigned [colored tags](/docs/busycalios/70662-tags.md) or the calendar's color. * **Calendar / Tag Color** — Timed events are shown as colored labels without a preceding dot (to maximize the visibility of more titles). All-day event banners are displayed as colored capsules. In both cases, the color is derived from either assigned [colored tags](/docs/busycalios/70662-tags.md) or the calendar's color. * **Calendar Color Only** — Events are displayed in the same manner as in *Calendar / Tag Color*, but tag colors are ignored. The color is solely taken from their calendars. --- # Cross-calendar blocking events BusyCal for iOS lets you create **time-blocking events** that mirror an event's busy time from one of your calendars onto another — even when the destination calendar lives on a different account. This is useful when you want to keep a personal calendar from leaking event details onto a shared work calendar (or vice-versa) while still letting colleagues see when you are unavailable. Whenever you update the original event's date, time, or details, the corresponding blocking event is updated automatically to stay in lockstep with it. ## Block on Another Calendar[​](#blocking-events "Direct link to Block on Another Calendar") To block time on another calendar based on an existing event: 1. **Long-press** an event in any calendar view to open its context menu. 2. Tap **Block on Calendar** and choose a destination calendar from the submenu. 3. Choose how the blocking event should appear: <!-- --> * **Show as Busy & Remove All Details** — copies just the date and time onto the destination calendar with `[Busy]` as the title. No notes, location, URL, or other details are copied. Recommended when the destination is a shared calendar where privacy matters. * **Include details** — copies the original event's title, notes, and location across so the destination shows the same context as the source. tip When you choose **Show as Busy & Remove All Details**, the destination event is **stripped** of everything except the date and time. Anyone you share that calendar with sees only that you are busy at that time — not what for. important Once a blocking event has been created, BusyCal keeps it in sync with the original. Avoid editing the blocker directly — your changes will be overwritten the next time the original event is updated. ## Automatic Time Blocking with Rules[​](#automatic-rules "Direct link to Automatic Time Blocking with Rules") In addition to manual blocking, BusyCal supports **automatic time-blocking rules** — for example, mirroring every weekday meeting on a *Family* calendar onto a *Work* calendar so colleagues never double-book you, without you having to remember to block each event by hand. Rules can currently only be created and edited on the Mac, through the Calendar Info dialog's **Automation** tab. They are not visible anywhere in BusyCal on iPhone — but rules you set up on the Mac do **sync to iPhone automatically over iCloud and remain active there**: any event you add or edit on iPhone that matches the rule triggers the same blocker, exactly as it would on the Mac. The resulting blocker then syncs back to your Mac (and any other devices) like any other event. For full details on how rules work — destination selection, working-schedule windows, custom day/time ranges, the three-rule-per-calendar limit, and the cross-device evaluation model — see [**Automatic Time Blocking with Rules**](/docs/busycal/142884-cross-calendar-blocking-events.md#automatic-rules) on the BusyCal for Mac page. ## Hiding Blocking Events from View[​](#hiding-blocking-events "Direct link to Hiding Blocking Events from View") When both the source and the destination calendars are visible in BusyCal, the same time slot will show two boxes — the original and the blocker. To declutter the view, turn on **Settings > Show in Calendar > Combine Identical Events**. BusyCal then displays only the most appropriate copy (typically the original) and hides the blocker. The blocker is still present on the other calendar, so your availability remains visible to anyone you share that calendar with. ## Unblocking an Event[​](#unblocking-events "Direct link to Unblocking an Event") To remove a blocker, long-press the **original** event, tap **Block on Calendar**, and select the same destination calendar — this toggles the blocker off. Alternatively, long-press the blocking event itself and delete it directly. ## Travel Time in Blocking Events[​](#travel-time "Direct link to Travel Time in Blocking Events") If the original event has [travel time](/docs/busycalios/70666-maps-travel-time.md) set, BusyCal can extend the blocking event's start time so the travel period also appears as busy on the destination calendar — useful when you want colleagues to see you're unavailable during your commute, not just during the meeting itself. You control this from **Settings > Advanced > Travel time in blocking events**: | Option | Behavior | | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | | **Match original event times** | Blocking events use the same start and end as the original. Travel time is not reflected on the destination calendar. | | **Include travel time in all** | Every blocking event starts earlier by the original event's travel duration so travel time also appears as busy. *(Default.)* | | **Include travel time in "Show as Busy" only** | Only blockers created with the **Show as Busy** option start earlier. Blockers that include full details keep the original event's times. | This setting is shared between your Mac and iPhone, so changing it on one device updates the other. --- # Widgets BusyCal includes a set of widgets you can add to your Home Screen (and on supported iOS versions, your Lock Screen). Widgets are designed for quick “at a glance” viewing of your schedule and tasks. note Widget appearance (Light/Dark/Automatic) is controlled by the system. Widgets follow your iPhone/iPad appearance and cannot be forced to a different mode from within BusyCal. ## Widget Sizes[​](#widget-sizes "Direct link to Widget Sizes") Widget sizes vary by widget and device: * **Small / Medium / Large** — standard Home Screen widget sizes * **Extra Large** (iPad, where supported) — shows more content in the same widget type Not all widgets support all sizes. ## Common Widget Options[​](#common-widget-options "Direct link to Common Widget Options") Depending on the widget you choose, you may be able to configure options such as: * Show **events**, **tasks**, or both * Show **weather** (where applicable) * Calendar display style (for example: **heat map** vs **dots**) * Heat map behavior (for example: color days based on **busy** time only) * Highlight **weekends** / **current week**, show **week numbers** * Font size and title wrapping ## Choose Calendars for Widgets & Apple Watch[​](#widget-calendar-sets "Direct link to Choose Calendars for Widgets & Apple Watch") Widgets (and the BusyCal Apple Watch app) use the Calendar Set you choose under **Settings > Calendar Sets > Widgets & Watch**. This is a single, app-wide choice — the selected Calendar Set determines which calendars appear in **every** BusyCal widget on your Home Screen and Lock Screen, as well as inside the BusyCal watch app. To change it: 1. Open **Settings** in BusyCal. 2. Tap **Calendar Sets**. 3. Tap **Widgets & Watch**. 4. Select the Calendar Set you want widgets and the watch app to use. If widgets look empty, make sure the chosen Calendar Set includes the calendars that contain your events and tasks. note The Widgets & Watch Calendar Set applies to all BusyCal widgets as a group. It isn’t currently possible to configure two instances of the same widget to each show a different Calendar Set. Per-widget Calendar Set selection is something we’d like to support in a future update. ## Troubleshooting Widgets[​](#widget-troubleshooting "Direct link to Troubleshooting Widgets") If a widget looks blank or is missing events: * Open BusyCal once to refresh widget data. * Confirm the correct Calendar Set is selected under **Settings > Calendar Sets > Widgets & Watch**. * Remove and re-add the widget to force a refresh. For Watch setup, views, complications, and task limits, see [BusyCal for Apple Watch](/docs/busycalios/apple-watch.md). You can also check [Calendar Sets](/docs/busycalios/131439-calendar-sets.md#ios-set-widgets-watch). ## Home Screen Widgets[​](#home-screen-widgets "Direct link to Home Screen Widgets") ### Upcoming Widgets[​](#upcoming-widgets "Direct link to Upcoming Widgets") These focus on “what’s next” and near-term schedule details. * **Current & Upcoming** (Small) — shows today’s date (and optional weather), what’s happening right now (or that you’re free), plus your next upcoming item. * **Up Next** (Small, Medium) — shows a compact list of upcoming items starting with your next event or task (with an optional date/weather header). * **Up Next + Calendar** (Medium) — shows “Up Next” alongside a compact month calendar grid for added context. * **Events List** (Medium, Large) — shows today’s date (and optional weather) plus a list of upcoming items. This widget also shows “banners” (such as birthdays and holidays). The Large size includes a calendar grid above the list. * **Agenda** (Large, and on iPad: Extra Large) — an agenda-style list of upcoming days, grouped by date, including events, tasks, and banners. * **Two Days** (Medium, Large) — shows today and tomorrow together. ### Calendar Grid Widgets[​](#calendar-grid-widgets "Direct link to Calendar Grid Widgets") These show your schedule in a more “calendar-like” grid. * **Calendar** (Small, Medium) — a month calendar grid. The Small size shows one month; the Medium size shows two months (current and next). Activity can be shown as dots or a heat map. * **Three Days** (Medium, Large) — a compact multi-day grid view. * **This Week** (Medium, Large) — a week-at-a-glance grid. * **Two Weeks** (Medium, Large) — a two-week grid for a wider planning horizon. * **Three Weeks** (Large) — a three-week grid for longer-range planning. ### Task Widgets[​](#task-widgets "Direct link to Task Widgets") * **Tasks** (Small, Medium, Large) — a task-focused widget that shows upcoming (incomplete) tasks. On supported iOS versions, it includes an interactive completion button so you can quickly mark tasks complete without opening the app. ### Today Widget[​](#today-widget "Direct link to Today Widget") * **Today** (Small) — shows today’s date and can optionally offer a quick “new event” or “new task” action. ## Lock Screen Widgets (iOS)[​](#lock-screen-widgets-ios "Direct link to Lock Screen Widgets (iOS)") On supported iOS versions, BusyCal also provides Lock Screen widgets in compact sizes: * **Up Next** (Rectangular, Inline) — shows your next event or task. * **Current & Upcoming** (Rectangular, Inline) — shows what’s happening now and what’s next. * **This Week** (Rectangular) — a compact “today + 6 days” heat map; you can optionally show/hide dates. * **Remaining Items** (Circular) — shows how many events/tasks remain today. * **Today** (Circular) — shows today’s date. * **Countdown** (Rectangular) — shows a countdown until your next timed event, switching to “current” when an event is active. ## Control Center Widgets (iOS 18+)[​](#control-center-widgets-ios-18 "Direct link to Control Center Widgets (iOS 18+)") On iOS 18 and later, BusyCal provides Control Center widgets: * **New Event** — launches BusyCal to create a new event. * **New Task** — launches BusyCal to create a new task. --- # Getting Started with BusyCal for iOS This tutorial provides instructions for getting started with BusyCal for iOS and an overview of its features. This tutorial provides instructions for getting started with BusyCal for iOS and an overview of its features. ## Introduction[​](#introduction "Direct link to Introduction") BusyCal is a calendar and task manager for iOS that can be used as an alternative to the built-in iOS Calendar and Reminders apps. BusyCal's unique and powerful features include customizable calendar views, integrated tasks that display in the calendar and carry forward until completed, support for weather and moon phases, and much, much more. ## Welcome[​](#welcome "Direct link to Welcome") When you open BusyCal for the first time, you’re presented with the Welcome screen. ![Welcome Screen](https://downloads.busymac.com/resources/img/busycal-ios/screenshot-welcome.png) After you tap **Get Started**, you’ll see a series of alerts in which BusyCal requests permission to access Calendars, Reminders, Contacts, Location, and Notifications. (Not all permission alerts appear on all devices.) Tap Allow or OK for each one. ![Welcome Screen - Allow Notifications](https://downloads.busymac.com/resources/img/busycal-ios/screenshot-welcome-allow-notif.png) ![Welcome Screen - Allow Contacts](https://downloads.busymac.com/resources/img/busycal-ios/screenshot-welcome-allow-contacts.png) ![Welcome Screen - Allow Location](https://downloads.busymac.com/resources/img/busycal-ios/screenshot-welcome-allow-location.png) ## Syncing with a Cloud Service[​](#syncing-with-a-cloud-service "Direct link to Syncing with a Cloud Service") After you grant BusyCal permission to use the various types of iOS data, the app prompts you to add a cloud-based calendar account. ![Add Account](https://downloads.busymac.com/resources/img/busycal-ios/screenshot-welcome-accounts.png) BusyCal can sync with many calendar servers, including [iCloud directly](/docs/busycalios/70675-using-busycal-with-icloud.md), [Google](/docs/busycalios/70676-using-busycal-with-google.md), Outlook, Office 365, Exchange, and others. To set up an account, tap the **Connect** button next to an account type, enter your credentials, and tap **Add**. You can set up additional accounts by tapping **Add Another Account**; you can also skip that step for now and add more accounts later. For more information, see the help pages on syncing BusyCal for iOS with [iCloud](/docs/busycalios/70675-using-busycal-with-icloud.md), [Google Calendar](/docs/busycalios/70676-using-busycal-with-google.md), [Office 365 / Outlook](/docs/busycalios/using-busycalios-with-office-365-microsoft-graph.md), [Exchange](/docs/busycalios/70677-using-busycal-with-exchange.md), [CalDAV](/docs/busycalios/70678-using-busycal-with-caldav.md), and [Todoist](/docs/busycalios/70679-using-busycal-with-todoist.md). ## Syncing with BusyCal Mac[​](#syncing-with-a-mac "Direct link to Syncing with BusyCal Mac") BusyCal can sync with the built-in Calendar and Reminders apps on macOS, as well as with the macOS version of BusyCal, but only through a cloud-based service (iCloud, Exchange, Google, or a CalDAV server). When you add an account to BusyCal iOS, such as [iCloud](/docs/busycalios/70675-using-busycal-with-icloud.md) and then do the same in [BusyCal on macOS](/docs/busycal/70630-using-busycal-with-icloud.md), you automatically begin syncing the same calendars and events between the two devices. tip Ensure you have added the same accounts to all your devices When you launch BusyCal for the first time, **Settings > Accounts** will automatically display any accounts you previously added on another device (such as your Mac). This happens seamlessly via iCloud—no manual setup required. Simply select the account and tap **Use This Account** to activate it. 🔒 **Your credentials are never stored in the cloud or synced automatically.** For security reasons, you must re-enter your login details when prompted the first time BusyCal attempts to sync. For more information, see [Syncing BusyCal for iOS with a Mac](/docs/busycalios/70674-syncing-busycal-for-ios-with-a-mac.md). ## Calendars[​](#calendars "Direct link to Calendars") After you have finished adding your accounts, BusyCal will begin syncing and displaying your events / tasks in the calendar. By default, all events from all your calendars will show under a newly created Calendar Set named **My Calendar Set**. You can customize the calendars you wish to see by customizing calendar sets. [Learning more here](/docs/busycalios/131439-calendar-sets.md). ![Calendar Set Menu](https://downloads.busymac.com/resources/img/busycal-ios/calendarset-menu.png) ![Calendar Set Manage](https://downloads.busymac.com/resources/img/busycal-ios/calendarset-manage.png) ![Calendar Set Edit](https://downloads.busymac.com/resources/img/busycal-ios/calendarset-work.png) When editing a Calendar Set, calendars are grouped by source: * **iCloud, Google, Outlook, Exchange, etc.** — Calendars hosted on a server such as iCloud, Google, Exchange, Fastmail, or other CalDAV Server. * **Other** — Displays birthdays and anniversaries from the iOS Contacts app, plus read-only calendar subscriptions from a WebDAV server, like a holiday calendar. Calendars with checkmarks are visible in BusyCal. To hide or show a calendar, tap its name. To hide or show all calendars in a given account, tap **Show All *account-name*** (for example, “Show All iCloud”). To hide or show all calendars in all accounts, tap **Hide All Calendars** or **Show All Calendars** at the top of the screen. To change a calendar’s details, tap the **(i)** icon to the right of its name in the calendar list. ![Edit Calendar](https://downloads.busymac.com/resources/img/busycal-ios/edit-calendar.png) In the Edit Calendar view that appears, you can: * Rename the calendar * Tap a color to change the color of the calendar (and all its events) * Turn Alarms on or off for this calendar * Turn Notify Of Changes on or off for this calendar; if on, BusyCal displays an alert when items on the calendar are added or changed by someone else * Enable or disable syncing for the calendar, using the Enable Calendar switch See [Calendar Sets](/docs/busycalios/131439-calendar-sets.md) for more details. ## Views[​](#views "Direct link to Views") BusyCal provides several views for displaying your calendar: [Day view](/docs/busycalios/70657-calendar-views.md#ios-cv-day-view), [Week view](/docs/busycalios/70657-calendar-views.md#ios-cv-week-view), [Month view](/docs/busycalios/70657-calendar-views.md#ios-cv-month-view), [Year view](/docs/busycalios/70657-calendar-views.md#ios-cv-year-view), and [List view](/docs/busycalios/70657-calendar-views.md#ios-cv-list-view). Tap a view name at the bottom of the screen to change the view. On iPad, all views are always available. On iPhone, the Year View tab appears when the device is in landscape orientation. ![Navigation Bar](https://downloads.busymac.com/resources/img/busycal-ios/bottomnavbar.png) In any view, tap an event to see its details. In Month view, since the display of individual events might be quite small, you can tap a day to see an accordion with all that day’s individual events; tap an event within this accordion to see its details. ![Expanded Day](https://downloads.busymac.com/resources/img/busycal-ios/month_expand_today.png) ### Scrolling Views[​](#scrolling-views "Direct link to Scrolling Views") You can scroll the view in BusyCal by swiping, just as in any other iOS app. Regardless of where you scroll, you can instantly return the view to the current day, week, or month (or, if already in the current time period, highlight today’s date) by tapping the calendar icon in the lower-left corner of the screen showing today’s date. ![Go To Today](https://downloads.busymac.com/resources/img/busycal-ios/today_button.png) #### Day View[​](#day-view "Direct link to Day View") * To view to earlier or later times in the current day, swipe up or down. * To scroll backward or forward one day at a time, swipe left or right. #### Week View[​](#week-view "Direct link to Week View") * To view to earlier or later times of day, swipe up or down. * To scroll backward or forward to earlier or later days, swipe left or right. #### Month View[​](#month-view "Direct link to Month View") * To scroll backward or forward one week at a time, swipe up or down. ### Customizing the Number of Days per Week and Weeks per Month[​](#customizing-the-number-of-days-per-week-and-weeks-per-month "Direct link to Customizing the Number of Days per Week and Weeks per Month") You can change the number of days shown in Week view (from 2–7 days) by pinching or spreading two fingers, or by tapping **Settings > View Preferences > Days in Week View** and then tapping one of the available options. You can choose a different number of days per week for Portrait and Landscape view—for example, you may want to show a full 7 days on an iPhone when it’s held in Landscape orientation, but only 2 days when held in Portrait orientation. ![Days in Week View](https://downloads.busymac.com/resources/img/busycal-ios/setting-days-week-view.png) ![Week view, iPhone, landscape](https://downloads.busymac.com/resources/img/busycal-ios/day_landscape_5.png) Likewise, you can change the number of weeks to show in Month view (from 2–8 weeks) by pinching or spreading two fingers, or by tapping **Settings > View Preferences > Weeks in Month View**<br /><!-- -->and then tapping one of the available options. You can choose a different number of weeks per month for Portrait and Landscape view—for example, you may want to show a full 5 weeks on an iPad when it’s held in Portrait orientation, but only 3 weeks when held in Landscape orientation. ![Weeks in Month View](https://downloads.busymac.com/resources/img/busycal-ios/setting-weeks-month.png) ![Month view, iPad, portrait](https://downloads.busymac.com/resources/img/busycal-ios/ipad_portrait.png) ![Month view, iPad, landscape](https://downloads.busymac.com/resources/img/busycal-ios/ipad_land.png) ## Weather and Moon Phases[​](#weather-and-moon-phases "Direct link to Weather and Moon Phases") While we’re on the subject of customizing the appearance of your calendar, you may have noticed the 7-day weather forecast and moon phases that appear in the calendar. To enable or disable these settings, tap **Settings > Show in Calendar > Weather** or **Settings > Show in Calendar > Moon Phases**, respectively. ![Weather and Moons](https://downloads.busymac.com/resources/img/busycal-ios/weather_icons.png) For more information, see [Weather](/docs/busycalios/70665-weather.md). ## Events[​](#events "Direct link to Events") BusyCal supports the following event types: * **Banner** — An all-day event that can span multiple days. * **Event** — An event with a start and end time. * **Dated Task** — A task with a due date that appears in the calendar and/or Task List. See [Tasks](/docs/busycalios/70659-tasks.md) for more information. * **Timed Task** — A task with a due date and time that appears in the calendar and/or Task List. See [Tasks](/docs/busycalios/70659-tasks.md) for more information. * **Undated Task** — A task with no due date that appears only in the Task List. See [Tasks](/docs/busycalios/70659-tasks.md) for more information. note BusyCal for Mac supports additional event types, including stickies, journals, and graphics. If you add any such events in BusyCal for Mac, they appear in BusyCal for iOS after syncing. Stickies and journals appear as all-day events on your iOS device. To create a new event, tap the + (plus) icon in the upper-right corner of BusyCal’s calendar (or Task List) view. Then tap Event (if it’s not already selected), and fill in the details. You can edit event details in the Event Details view (described just ahead). For more information, see [Event Types](/docs/busycalios/70658-event-types.md). ## Event Details View[​](#event-details-view "Direct link to Event Details View") BusyCal includes an Event Details view for viewing and editing details of events and tasks, which appears when you create a new event or task, or when you tap an existing event or task. To make changes to the event or task, tap Edit in the upper-right corner of the screen; doing so reveals controls for setting additional details. Tap Done to record your changes. (You can change the priority, calendar, or alarms of an event or task without first tapping Edit.) ![Event Details basic](https://downloads.busymac.com/resources/img/busycal-ios/detail_screen.png) The Event Details view is customizable. You can choose to show just the basics, or add additional fields like tags or a URL. For more information, see [Event Details](/docs/busycalios/70660-event-details.md). ## Tasks[​](#to-dos "Direct link to Tasks") In BusyCal, tasks are integrated into your calendar. Tasks can be displayed in the calendar on the date they are due or displayed in the Task List. Tasks come in three flavors—dated, timed, and undated. Dated tasks have a due date and can be displayed in the calendar; timed tasks also have an associated time. Undated tasks do not have a due date or time and can be displayed only in the Task List. ### Tasks in the Calendar[​](#tasks-in-the-calendar "Direct link to Tasks in the Calendar") Regardless of your Task List settings, dated tasks and completed tasks appear in the calendar on the date they are due or completed. If a task is not completed on its due date, it carries forward each day until completed. While **Dated Tasks** is on in Settings, turning off **Include All-Day Tasks** leaves out the dated tasks that have no due time. ![Calendar with Dated Tasks](https://downloads.busymac.com/resources/img/busycal-ios/tasks_in_cal_portrait.png) ### Task List[​](#task-list "Direct link to Task List") To show the Task List, tap Task at the bottom of BusyCal’s main screen. ![Task List](https://downloads.busymac.com/resources/img/busycal-ios/task_list.png) The Task List can be sorted by Due Date, Priority, Title, Calendar, Tag, or Manually. To change the sort order, tap the current sort order at the top of the screen (such as “By Due Date”), tap Sort By, and then tap the new sort criterion. ![Task List Sort Options](https://downloads.busymac.com/resources/img/busycal-ios/task_list_sorting.png) ### Task Calendars[​](#task-calendars "Direct link to Task Calendars") BusyCal calendars are type-specific. A calendar can contain either events or tasks, but not both. BusyCal indicates a task calendar by displaying “(Task Calendar)” next to its name in the Calendars list (in **Settings > Calendar Sets**). ## Creating Tasks[​](#creating-to-dos "Direct link to Creating Tasks") To create a new task, tap the + (plus) icon in the bottom-right corner of BusyCal’s calendar (or Task List) view. Then tap Task, and fill in the details. To make it a dated task, turn on Due Date and fill in the date; for a timed task, also turn on Due Time and fill in the time. (To create a repeating task, tap Repeat in the Event Details view followed by an interval: None, Daily, Weekly, Monthly, or Yearly.) Then tap Done. ![Task being created](https://downloads.busymac.com/resources/img/busycal-ios/new_task.png) If you mark a task as completed by tapping the “done” checkbox in the calendar, Task List, or Event Details view, the completed Task appears with a checkmark in front of it on the date that it was completed. For more information, see [Tasks](/docs/busycalios/70659-tasks.md). ## Alarms[​](#alarms "Direct link to Alarms") BusyCal can display alarms for events and tasks using iOS Notifications. Or, if you prefer—and you sync the same calendars in both apps—you can leave BusyCal’s alarms turned off and rely instead on notifications from the iOS Calendars app. But note that either app can display alarms only for the calendars it’s configured to sync. To have BusyCal generate alarms: 1. In BusyCal, go to **Settings > App Icon & Alerts**. 2. Turn on **Event Alarms** and **Task Alarms**. 3. In the main iOS System Settings app, go to Notifications > BusyCal. Turn on all desired options (likely all of them) and tap Banners (the default) or Alerts for the alert style when your iOS device is unlocked. 4. Still in the main iOS System Settings app, go to Notifications > Calendar and turn off Allow Notifications. Repeat with Notifications settings for Reminders. note If you turn off notifications for Reminders, you can still receive location-based alerts in BusyCal, but you must go to Settings > Privacy > Location Services > BusyCal and tap Always (not just While Using the App). ![App Icon and Alerts Settings](https://www.busymac.com/images/bcl3ios-settings-app-icon.png) ![Notifications Settings for BusyCal](https://www.busymac.com/images/bcl3ios-notifications-busycal.png) To have the iOS Calendars and Reminders apps generate alarms: 1. In BusyCal, go to Settings > App Icon & Alerts. 2. Turn off Event Alarms and Task Alarms. 3. In the main iOS System Settings app, go to Notifications > BusyCal. Turn off Allow Notifications. 4. Still in the main iOS System Settings app, go to Notifications > Calendar and turn on Allow Notifications, along with all the specific notification types you want. Repeat with Notifications settings for Reminders. note If you have notifications enabled for BusyCal as well as Calendars and/or Reminders, you’ll see two alarms for each event or task. So it’s best to choose one or the other. ### Creating an Alarm[​](#creating-an-alarm "Direct link to Creating an Alarm") To demonstrate the Alarm function, let’s create a new event and attach an alarm to it. To create a new event, tap the + (plus) icon in the upper-right corner of BusyCal’s calendar (or Task List) view and tap Event (if it’s not already selected). Then, in the Event Details view, set the event start time for approximately two minutes from now, and set the alarm to “At start”. Then wait a minute or two for the alarm to appear. When it does, you can tap Close to dismiss the alarm, snooze it by tapping Snooze 5 Minutes, Snooze 15 Minutes, or Snooze 1 Hour, or open it in BusyCal by tapping Open. For more information, see [Alarms](/docs/busycalios/70667-alarms.md). ## Birthdays and Anniversaries[​](#birthdays-and-anniversaries "Direct link to Birthdays and Anniversaries") BusyCal can display the birthdays and anniversaries from the iOS Contacts app in your calendar. Go to **Settings > Show in Calendar**, and turn on **Birthdays** and/or **Anniversaries**. With these calendars enabled, a Birthdays calendar and an Anniversaries calendar appear under the Other heading in the Calendar List, and any contacts with birthdays or anniversaries in their Contacts records are displayed with special icons in the calendar. For more information, see [Birthdays and Anniversaries](/docs/busycalios/70663-birthdays-and-anniversaries.md). ## Holidays[​](#holidays "Direct link to Holidays") BusyCal supports subscribing to read-only (WebDAV) public calendars like holidays and sports schedules. All-day events on public calendars appear as banners in BusyCal, just like other all-day events. To subscribe to a public calendar: 1. Go to **Settings > Accounts**. 2. Tap **Add Account**. 3. Tap the **Connect** button next to **WebDAV**. 4. Type or paste the URL for the public calendar in the Calendar URL field. 5. Optionally, tap Refresh to change how often the calendar refreshes, and/or turn off Enable Alarms for this calendar. 6. Tap **Add**. BusyMac provides links to popular public calendars here: [Holiday and Sports Calendar Subscriptions](/webdav.md). Note that you must copy the URL and paste it into BusyCal; if you simply tap a link on your iOS device, the calendar will be added to Calendar, not to BusyCal. For more information, see [Subscribing to Public Calendars](/docs/busycalios/70664-subscribing-to-public-calendars.md). ## More[​](#more "Direct link to More") That concludes the overview of BusyCal. But there’s more. Check out some of these other great features: * [Calendar Views](/docs/busycalios/70657-calendar-views.md) * [Finding Events](/docs/busycalios/70672-finding-events.md) * [Tags](/docs/busycalios/70662-tags.md) * [Maps & Travel Time](/docs/busycalios/70666-maps-travel-time.md) * [Meetings and Invitations](/docs/busycalios/70673-meetings-and-invitations.md) --- # Calendar Views BusyCal provides several views for displaying your calendar: List View, Day view, Week view, Month view, Year view, and Task List. Tap a view name at the bottom of the screen to change the view. On iPad, all views are always available. On iPhone, the Year View tab appears only in landscape orientation. ![Navigation Bar](https://downloads.busymac.com/resources/img/busycal-ios/bottomnavbar.png) In any view, you can scroll to earlier or later time periods by swiping. To return to a view that shows the current day, tap the calendar icon in the lower-left corner of the screen with today’s date, or tap twice on any of the view tabs. On an iPhone, the toolbar appears only in portrait orientation. Tap an event on the calendar to see its details (see [Event Details](/docs/busycalios/70660-event-details.md)). ## Day View[​](#ios-cv-day-view "Direct link to Day View") Day view displays a single day of your calendar. ![Day View](https://downloads.busymac.com/resources/img/busycal-ios/day_view_portrait.png) While in Day view, you can scroll backward or forward one day at a time by swiping left or right. You can also zoom in or out on your day by pinching. ## Week View[​](#ios-cv-week-view "Direct link to Week View") Week view displays one week of your calendar by default (with the option to redefine “week” as any period from 2–7 days). ![Day View](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-week-land.png) While in Week view, you can scroll backward or forward by swiping left or right. You can adjust the number of days shown by pinching horizontally, and the number of hours shown by pinching vertically. You can also change the default number of days shown per week in Settings > View Settings > Days in Week View. ## Month View[​](#ios-cv-month-view "Direct link to Month View") Month view displays one month of your calendar by default (with the option to redefine “month” as any period from 2–8 weeks). ![Month View](https://downloads.busymac.com/resources/img/busycal-ios/bcl-month-land.png) While in Month view, you can scroll backward or forward by swiping down or up. You can adjust the number of weeks shown by pinching vertically. You can also change the number of weeks shown per month in Settings > View Settings > Weeks in Month View. Since the display of individual events in this view might be quite small, you can tap a day to display an accordion with all that day’s individual events; tap an event in the accordion to see its details. ![Month View Expanded](https://downloads.busymac.com/resources/img/busycal-ios/month_expand_today.png) Pinch to zoom-in or out of the month view in order to show more or fewer number of weeks per month. Tap on the month-view navigation button at the bottom of the screen a second time to scroll back to **Today**. Tap on any day to reveal an expanded **List View**. note Holiday calendars use a special Month view layout: their all-day events appear italicized and pinned to the bottom of the day cell, rather than as regular all-day banners. This is why a subscribed holiday calendar (like Google's "Holidays in United States") shows its title in the lower portion of the date box, and why the Date and Time alignment settings don't move it. To display such a calendar's events like normal all-day events, turn off **Show as holiday calendar** in its [calendar details](/docs/busycalios/70670-settings.md#calendar-details). [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-ios/videos/month_view_web.webm) ## List View[​](#ios-cv-list-view "Direct link to List View") List view displays all your events in a scrolling list format. ![List View](https://downloads.busymac.com/resources/img/busycal-ios/list_view.png) note Unlike the List view in the Mac version of BusyCal, List view in BusyCal for iOS is not customizable, with the sole exception that you can turn "Show Notes in List View" on or off in Settings > View Settings. When this is turned on, any text in the Notes field appears underneath the title of the event or task in the list. ## Year View[​](#ios-cv-year-view "Direct link to Year View") Year View provides a year-at-a-glance overview of your calendar in a planner-style layout, with each month displayed as a horizontal row. This makes it easy to scan patterns, spot busy periods, and plan ahead across the entire year. On iPad, Year View is always available as a tab. On iPhone, rotate your device to landscape orientation to reveal the Year View tab. To line up the days of the week down the year, tap the ⋯ menu at the top of Year View and turn on **Align Weekdays Across Months**. Each month then shifts to start under its own day of the week, so weekends form stripes you can follow from January to December and any weekday is easy to spot at a glance. Each row still shows only that month’s days, so the left and right edges are uneven. This option is off by default, works with both display styles, and follows your start-of-week setting. ### Display Styles[​](#year-display-styles "Direct link to Display Styles") Year View supports two display styles, which you can switch between using the menu button: * **Banners** — Shows multi-day events as colored bars spanning across their dates, making it easy to see what's booked at a glance. * **Heatmap** — Shades each day based on how busy it is, using a color gradient from light (fewer events) to dark (more events). This is great for spotting busy vs. quiet periods across the year. ### Visual Indicators[​](#year-indicators "Direct link to Visual Indicators") Year View displays special icons for Birthdays, Anniversaries, and Journal entries so they stand out even in this compact view. Tasks are shown with status indicators (completed, in-progress, or overdue), and regular timed events appear as small colored dots matching their calendar color. ### Navigation[​](#year-navigation "Direct link to Navigation") Scroll vertically to move through the months. Tap any day to expand an agenda drawer below that month showing all of that day's events. Tap the day again to close it. Tap a month label on the left side to jump directly to Month View for that month. Long-press on a day to create a new event. ### Highlights[​](#year-highlights "Direct link to Highlights") Year View can display a Highlights section showing top statistics for the year, such as: * Total event and task counts * Most active month and day * Top calendars and tags * Meeting statistics and response breakdowns * Task completion rates * Time distribution showing your busiest hours On iPad, the Highlights appear as an inline drawer at the bottom of the Year View. On iPhone, Highlights appear as a modal sheet overlay. --- # Event Types note Some images in our online documentation may appear outdated as BusyContacts continues to evolve over time. However, the core functionality mentioned in the documentation still applies. BusyCal supports a variety of event types, including events, banners and tasks. The following event types are available: * **Banner** — An all-day event that can span multiple days. * **Event** — An event with a start and end time. * **Dated Task** — A task with a due date that appears in the calendar and/or Task List. See [Tasks](/docs/busycalios/70659-tasks.md) for more information. * **Timed Task** — A task with a due date and time that appears in the calendar and/or Task List. See [Tasks](/docs/busycalios/70659-tasks.md) for more information. * **Undated Task** — A task with no due date that appears only in the Task List. See [Tasks](/docs/busycalios/70659-tasks.md) for more information. note BusyCal for Mac supports additional event types, including stickies, journals, and graphics. If you add any such events in BusyCal for Mac, they appear in BusyCal for iOS after syncing. Stickies and journals appear as all-day events on your iOS device. ## Banner, Event, and Task[​](#banner-event-and-to-do "Direct link to Banner, Event, and Task") This day has a banner, an event, and a (dated) task. ![Banner, event, task](https://www.busymac.com/images/bcl3ios-day-with-3-events-day-view.png) --- # Managing Tasks in BusyCal iOS BusyCal for iOS can manage all your tasks (also known as to dos or reminders) on your iPhone and iPad. Tasks can be displayed in a Task List and/or in the calendar on the date they are due. Tasks come in three flavors: * **Dated Tasks** — Tasks with a due date are displayed in the calendar and optionally on the Task List. While the **Dated Tasks** setting is on, turning off **Include All-Day Tasks** leaves out the ones that have no due time. * **Timed Task** — Tasks with a due date and time can be displayed in the calendar and optionally on the Task List. * **Undated Tasks** — Tasks without a due date are displayed in the Task List only, although you can hide them there if you prefer. On Apple Watch, BusyCal shows dated and timed tasks but not undated tasks. See [BusyCal for Apple Watch](/docs/busycalios/apple-watch.md#task-display-rules) for details. ## Task List[​](#to-do-list "Direct link to Task List") To show the Task List, tap Task at the bottom of BusyCal's main screen. ![Task List](https://downloads.busymac.com/resources/img/busycal-ios/task_list.png) ### Sorting and Filtering Tasks[​](#sorting-and-filtering-tasks "Direct link to Sorting and Filtering Tasks") The Task List can be sorted by Due Date, Priority, Title, Calendar, Tag, or Manually. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-ios/videos/task-list_web.webm) To change the sort order, tap the current sort order at the top of the screen (such as "By Due Date"), tap Sort By, and then tap the new sort criterion. When you sort by Calendar, tasks are grouped by calendar and the groups follow the calendar order you set in [Settings > Accounts](/docs/busycalios/70670-settings.md#reorder-calendars). Drag the calendars there to change where a group falls, or tap Sort Alphabetically on that screen to put them in name order. You can also drag the accounts themselves into a different order, and make either change from a saved calendar set by tapping Edit. ![Task List Sort Options](https://downloads.busymac.com/resources/img/busycal-ios/task_list_sorting.png) You can also set the following options there to filter the Task List: * **Show Items Due** — Tap this followed by the the due date range you want to appear on the list: Hide Dated Tasks; or By Today, By Tomorrow, By Next Week, By Next Month, or By Next Year. * **Show Completed** — Tap this followed by how far back you want completed tasks to appear on the list, based on the date items were marked as completed: None, Today, Since Yesterday, Since Last Week, Since Last Month, or Since Last Year. * **Show Items With No Due Date** — Turn this on or off to show or hide undated tasks. ## Tasks in the Calendar[​](#to-dos-in-the-calendar "Direct link to Tasks in the Calendar") Regardless of your Task List settings, dated tasks and completed tasks can optionally appear in the calendar on the date they are due or completed. If a task is not completed on its due date, it carries forward each day until completed. To control whether tasks appear in the calendar, go to Settings > Show Tasks in Calendar and select the settings you prefer. While **Dated Tasks** is on there, turning off **Include All-Day Tasks** leaves out the dated tasks that have no due time. ![Calendar with Dated Tasks](https://downloads.busymac.com/resources/img/busycal-ios/tasks_in_cal_portrait.png) ## Creating Tasks[​](#creating-to-dos "Direct link to Creating Tasks") To create a new task, tap the + (plus) icon in the upper-right corner of BusyCal's calendar (or Task List) view. Then tap Task, and fill in the details. To make it a dated task, turn on Due Date and fill in the date; for a timed task, also turn on Due Time and fill in the time. Then tap Done. ![Task being created](https://downloads.busymac.com/resources/img/busycal-ios/new_task.png) If you have turned on Settings > New Event Defaults > Create with Natural Language, you can also create tasks using [Natural Language](/docs/busycalios/70669-natural-language.md). If a date is included, BusyCal creates a dated task with a due date. Otherwise, an undated task with no due date is created. For example: ``` Call Bob ``` ``` Call Bob tomorrow ``` ``` Call Bob next Tuesday ``` ``` Call Bob Nov 7 ``` ``` Buy Milk ``` ![Task in Natural Language](https://downloads.busymac.com/resources/img/busycal-ios/nlp_task.png) ### Marking Tasks as Completed[​](#marking-tasks-as-completed "Direct link to Marking Tasks as Completed") If you mark a task as completed by tapping the "done" checkbox in the calendar, Task List, or Event Details view, the completed task appears with a checkmark in front of it on the date that it was completed. You can control whether completed tasks are shown in your lists by using the filtering options in the Task List view. ## Deleting Tasks[​](#deleting-to-dos "Direct link to Deleting Tasks") To delete a task while in List view or viewing the Task List, swipe leftward on the task, and then tap Delete. In other views, tap the task to display its Event Details, and then tap Delete Task; tap Delete again to confirm. ## Task Settings[​](#ios-to-do-settings "Direct link to Task Settings") To customize how tasks are created and displayed, go to Settings > New Event Defaults > New Task Defaults. The following options are available for customizing tasks: * **Default Calendar** — The default calendar new tasks are created in. * **Default Priority** — The default priority (None, Low, Medium, or High) for new tasks. * **Default Due Date** — Whether new tasks are, by default, Undated or Dated (due on Same Day, Next Day, In 2–6 Days, or In 1 Week). * **Default Due Time** — If a default due date has been set above, you may also set a default due time. ## Repeating Tasks[​](#repeating-to-dos "Direct link to Repeating Tasks") You can create tasks that repeat based on the due date (e.g., Pay Rent on the 1st of every month). note BusyCal for Mac can also create tasks that repeat based on the completion date of the previous task (e.g., Oil Change 3 months after completion of the last Oil Change). Although you can't create these types of repeats in BusyCal for iOS, any such tasks created in BusyCal for Mac sync to your iOS device and display on the proper date. To create a repeating task, tap Repeat in the Event Details view followed by an interval: None, Daily, Weekly, Monthly, or Yearly. Then, if you want to set the end point for the task, tap End Repeat followed by Never (never end), On Date followed by the date on which you want it to end, or After followed by the number of times you want the task to repeat. ![Task with repeat and end](https://downloads.busymac.com/resources/img/busycal-ios/repeating_task.png) Repeating tasks work differently from repeating events. The calendar shows every occurrence of a repeating event, but only the next uncompleted occurrence of a repeating task. When you mark that occurrence as completed, BusyCal creates the next one. For example, a daily task due today appears only on today's date, and tomorrow's occurrence appears after you complete today's. ## iCloud and Reminders[​](#icloud-and-reminders "Direct link to iCloud and Reminders") Tasks in BusyCal sync with the Reminders app in iOS and macOS through iCloud. iCloud calendars are type-specific. Each iCloud calendar can contain either events or tasks, but not both. BusyCal indicates a task calendar by displaying "(Task Calendar)" next to its name. The task calendars in BusyCal sync with the Reminder Lists in the Reminders app on iOS and macOS through iCloud. note BusyCal syncs tasks with Google Task Lists. Google Task Lists have platform limits: only **title**, **due date**, and **notes** are synced by Google. Properties like **due time**, **recurrence**, **alarms**, and **priority** are not synced by Google and are available between BusyCal clients using [Extended Sync](/docs/busycal/144591-syncing-extended-task-properties.md). For full details, see [Using BusyCal with Google](/docs/busycalios/70676-using-busycal-with-google.md#calendar-limitations). ## Tasks with Location Alarms[​](#ios-to-dos-with-location-alarms "Direct link to Tasks with Location Alarms") The Reminders app on an iOS device with a cellular radio (all iPhones and some iPads) can display location alarms when arriving at or leaving a specified location. For example, you could create a task to "Pick up dry cleaning" that triggers when you leave the office. Although you can create location alarms in BusyCal for Mac or in the Reminders app for iOS or macOS, you can't do so within BusyCal for iOS. However, BusyCal does sync and display any such alarms you created elsewhere. note BusyCal supports location alarms only on iCloud task calendars. --- # Event Details The Event Details view displays the details of the selected event or task. The Event Details view appears when you create a new event or task, or when you tap an existing event or task in your calendar. To change event details after initially creating an event or task, tap Edit in the upper-right corner of the screen; doing so reveals controls for setting additional details. Tap Done to record your changes. (You can change the priority, calendar, or alarms of an event or to do without first tapping Edit.) ![Event Details basic](https://downloads.busymac.com/resources/img/busycal-ios/detail_screen.png) ## Event Details Settings[​](#ios-event-details-settings "Direct link to Event Details Settings") The Event Details view can be customized to show only the fields you want to see from **Settings > View Preferences > Event Details**. ![Event Details](https://downloads.busymac.com/resources/img/busycal-ios/settings_event_details.png) To choose which fields to display, go to **Settings > View Preferences > Event Details** and select from the following options: * **Show Location** — Displays a text field for entering location information. * **Show Location URL** — Displays a URL field for entering location URLs, such as a link to Google Maps. * **Show Favorite Time Zones** — Adds shortcuts to the time-zone picker. This does not display the Start Time Zone field; enable that field separately. * **Show Start time zone** — Displays a time zone menu for the event start time. See [Time Zones](/docs/busycalios/70671-date-and-time-options.md#ios-time-zones) for more information. * **Show End time zone** — Displays a separate menu when an event ends in a different zone, such as a flight. For ordinary events, the end uses the start zone. See [Time Zones](/docs/busycalios/70671-date-and-time-options.md#ios-time-zones) for more information. * **Show Travel Time** — Displays a menu enabling you to see or specify the travel time to that event. See [Travel Time](/docs/busycalios/70666-maps-travel-time.md#ios-travel-time) for more information. * **Show First Occurrence** — Displays the first occurrence date of a repeating event and current sequence number. * **Show Attendees** — Displays a field for adding attendees. See [Meetings and Invitations](/docs/busycalios/70673-meetings-and-invitations.md) for more information. * **Show Tags** — Displays a field for entering tags. See [Tags](/docs/busycalios/70662-tags.md) for more information. * **Show URL** — Displays a URL field for inserting links. * **Show Private** — Displays a switch to indicate that the event is Private. When sharing a calendar with others through Exchange, Google, and some CalDAV Servers, events marked Private appear to other people with a title of “Private Event.” The event blocks your free time for scheduling purposes, but no other details are shared. **Note** that only timed-events can be made private note This switch is enabled only when syncing with a calendar server that supports this feature. It is not supported by iCloud. * **Show Busy** — Displays a switch to indicate whether an event affects your availability as free or busy. note Compact natural-language entry hides the individual time-zone menus. Type the zone inline, tap **Show Details**, or use the full event editor to choose it from a menu. * **Show Created Time** — Displays the date and time the event was created. * **Show Edited Time** — Displays the date and time the event was last modified and the user or device that last modified it. * **Show Map** — For events with specific locations (generally, an address or city name), displays a map of the location at the bottom of the Event Details view. and more. Below is an example of the Event Details view (in Edit mode, on an iPad) with all fields enabled. (Some fields display only as needed—for example, End Repeat appears only when a repeat is set, and Map appears only when a structured location is entered in the Location field.) ![Event Details](https://downloads.busymac.com/resources/img/busycal-ios/event_details_all_1.png) ![Event Details](https://downloads.busymac.com/resources/img/busycal-ios/event_details_all_2.png) --- # Repeating Events and Tasks Repeating events and tasks reoccur at regular intervals (such as every day, every week, or every month). To make an event or task repeat, tap Repeat in its Event Details view and then tap a repeat interval: None, Daily, Weekly, Monthly, or Yearly. ![Repeat Options](https://www.busymac.com/images/bcl3ios-repeat-options.png) note Unlike the Mac version of BusyCal, the iOS version does not support custom repeats. However, custom repeats set on your Mac do sync correctly to BusyCal for iOS. Repeating tasks work differently from repeating events. The calendar shows every occurrence of a repeating event, but only the next uncompleted occurrence of a repeating task. The next occurrence appears after you complete the current one. For more about repeating tasks, see [Repeating Tasks](/docs/busycalios/70659-tasks.md#repeating-to-dos). --- # Tags Tags are user-defined labels that allow you to categorize events and tasks in BusyCal. You can also use tags to search for specific events within your calendar. note During the initial sync, categories from Exchange are synchronized as tags. ## Entering Tags[​](#entering-tags "Direct link to Entering Tags") To apply tags to events, tap **Add Tags** in the Event Details view. Type a tag, tap Return (or select a previously entered tag), and repeat as desired to add more tags. Tap Done. ![Tags](https://www.busymac.com/images/bcl3ios-tags.png) note The *Add Tags* option is only visible when creating new events or to-dos if you have enabled it in [Event Details Settings](/docs/busycalios/70660-event-details.md#ios-event-details-settings). If you do not see the Tags option, go to **Settings > Event Details** and ensure the **Show Tags** switch is enabled. If the switch is on and you still cannot add tags, it is likely because the remote service does not support tags natively, leading BusyCal to hide the option. ## Tag History[​](#tag-history "Direct link to Tag History") BusyCal automatically stores tags as you create them and adds them to your Tag History. Navigate to Settings > Advanced > Manage Tag History, where you can add, delete, rename, and colorize tags. note Deleting or renaming a tag in the Tag History dialog does not affect any events that already have that tag. The tags are only removed from the Tag History. However, changing the color of a tag will affect all events with that tag. ## Event Colors[​](#event-colors "Direct link to Event Colors") Events and tasks can also be colored using **Color** in Event Details. To show this field, enable **Show Color** under **Settings > View Preferences > Event Details**. For Google events you can edit, this picker selects the event's Google color. These color changes sync with Google Calendar. The beta also supports Google's expanded palette and custom label names. Choose **None** to clear the event's Google color. Create, rename, recolor, or delete Google color labels in Google Calendar. They are separate from BusyCal **Tags** and local **Color Labels**; editing BusyCal's Tag History does not change Google's labels. See [Google Event Colors](/docs/busycalios/70676-using-busycal-with-google.md#google-event-colors) for syncing and refresh details. For other calendar services, **Color** acts as a shortcut for assigning a colored BusyCal tag. You can switch between colors or enter a custom hex color, such as `#FF0000` for red. ## Tag Syncing[​](#tag-sync "Direct link to Tag Syncing") Tag history, including the colors assigned to them, automatically syncs across all your devices via iCloud. You can disable this feature under Settings > Advanced > Manage Tag History. --- # Birthdays and Anniversaries in BusyCal for iOS BusyCal can display the birthdays and anniversaries from the iOS Contacts app in your calendar. Go to **Settings > Show in Calendar** and turn on “Birthdays” and/or “Anniversaries” switches. With these settings enabled, a Birthdays calendar and an Anniversaries calendar appear under the Other heading in the [Calendar List](/docs/busycalios/70670-settings.md#ios-calendars-prefs), and any contacts with birthdays or anniversaries in their Contacts records are displayed as all-day events in the calendar. ## Add an Anniversary[​](#anniversary-labels "Direct link to Add an Anniversary") 1. Edit the person's contact in the iOS **Contacts** app. 2. Add or select a date field and choose the built-in **anniversary** label from its label menu. 3. Enter the original date and save the contact. BusyCal repeats the anniversary every year. important Choose **anniversary** from the label menu. Custom labels such as **Wedding**, **Wedding Anniversary**, or **Other** are not included in BusyCal's Anniversaries calendar. For birthdays, use the contact's **birthday** field. The Birthdays calendar and Anniversaries calendar are read-only and cannot be edited in BusyCal. If you want to change or remove a birthdate or anniversary, you must make the change in Contacts. The Birthdays and Anniversaries calendars appear only in BusyCal and do not sync to other services like iCloud and Google; however, the Calendar app in iOS and macOS has a similar option for displaying a Birthdays calendar. ## Setting up Birthday & Anniversary Alarms[​](#birthday-alarms "Direct link to Setting up Birthday & Anniversary Alarms") To receive notifications for upcoming birthdays and anniversaries, you can set default alarms that will automatically be applied to all birthday and anniversary events: 1. Open BusyCal Settings from the top left corner 2. Tap **New Event Defaults** > **Alarm Defaults** 3. Tap **For Birthdays & Anniversaries** You can configure up to 3 different alarms with various timing options (such as on the day of, 1 day before, 1 week before, etc.). Once configured, birthday and anniversary events will automatically alert you at your chosen times. note If the alarm times do not appear on existing birthday events after making these changes, try turning off Birthdays and Anniversaries under **Settings > Show in Calendar > Birthdays**, then turn them back on to refresh the calendar data. ## ⚠️ Troubleshooting iOS Birthday and Anniversary Issues[​](#troubleshoot "Direct link to ⚠️ Troubleshooting iOS Birthday and Anniversary Issues") important BusyCal requires access to the Apple Contacts app for displaying Birthdays and Anniversaries on your iPhone or iPad. Please open iOS System **Settings > Privacy & Security > Contacts**, tap **BusyCal** and give it **Full Access**. Without this permission, BusyCal will not be able to fetch birthdays or anniversaries from your contacts. Rest assured your privacy and data is protected, [learn more.](/privacy.md). ### iPhone or iPad Birthdays Not Showing[​](#birthdays-not-showing "Direct link to iPhone or iPad Birthdays Not Showing") If you're having issues with birthdays or anniversaries not appearing in your BusyCal iOS calendar, try the following steps: 1. **Check Contacts Permission** * Open iOS Settings app * Navigate to Privacy & Security > Contacts * Make sure BusyCal is listed and has permission * If denied, toggle it on and restart BusyCal 2. **Check the Contact's Date Label** * Open the contact in the iOS **Contacts** app * For an anniversary, choose the built-in **anniversary** label from the date's label menu * For a birthday, use the **birthday** field * Save the contact after making changes 3. **Force Reset Birthday Calendar** * Open BusyCal Settings > Show In Calendar * Uncheck **Birthdays** and **Anniversaries** * Close Settings and wait a moment * Now repeat the process and re-enable the settings * Close settings and wait for sync to complete 4. **Restart Your Device** * Sometimes a simple device restart can resolve sync issues * After restarting, open BusyCal and check if birthdays appear If you're still experiencing issues after trying these steps, check if birthdays appear in the native iOS Calendar app. If they show there but not in BusyCal, please [contact our support team](/docs.md) for further assistance. --- # Subscribing to Public Calendars BusyCal supports subscribing to read-only (WebDAV) public calendars like holidays and sports schedules. To subscribe to a public calendar: 1. Go to Settings > Accounts. 2. Tap Add Account. 3. Tap the Connect button next to WebDAV. 4. Type or paste the URL for the public calendar in the Calendar URL field (see below). 5. Optionally, tap Refresh to change how often the calendar refreshes, and/or turn off Enable Alarms for this calendar. 6. Tap Add. BusyMac provides a US Holidays calendar, with or without images, that you can subscribe to by pasting one of these URLs in the Calendar URL field in step 4: * <webcal://www.busymac.com/download/us-holidays.ics> * <webcal://www.busymac.com/download/us-holidays-small-icons.ics> * <webcal://www.busymac.com/download/us-holidays-big-icons.ics> We also provide links to popular public calendars here: [Holiday and Sports Calendar Subscriptions](/webdav.md). Note that you must copy the URL and paste it into BusyCal; if you simply tap a link on your iOS device, the calendar will be added to Calendar, not to BusyCal. --- # Weather BusyCal can display a 7-day weather forecast and moon phases in your calendar. ## Weather Settings[​](#weather-preferences "Direct link to Weather Settings") To display the weather, go to Settings > Show in Calendar and turn on Show Weather. Weather appears in List, Day, and Month views only. ![Weather and Moons](https://downloads.busymac.com/resources/img/busycal-ios/weather_icons.png) ## Moon Phases[​](#moon-phases "Direct link to Moon Phases") To display moon phases, go to **Settings > Show in Calendar** and turn on **Moon Phases**. --- # Maps & Travel Time BusyCal's Event Details view automatically displays maps to events with addresses in their Location fields. In addition, BusyCal can calculate travel time to these destinations and alert you when it’s time to leave in order to arrive on time. ## Maps[​](#maps "Direct link to Maps") When an event or to do contains an address in the Location field, BusyCal’s Event Details view displays a map of that location. Tap the map thumbnail to open it in the iOS Maps app (where you can zoom in or out, get directions, change the view, and more). If you don’t want to display maps in Event Details, you can turn them off in Settings > Event Details. ![Event With Map](https://downloads.busymac.com/resources/img/busycal-ios/travel_time_edit.png) ## Travel Time[​](#ios-travel-time "Direct link to Travel Time") BusyCal’s Travel Time feature enables you to display an alarm at or before the time you must leave to arrive at an event on time—based on either current traffic conditions or an arbitrary amount of time you specify. Before you can set the travel time for an event, the Travel Time field must be visible in the Event Details view. If it isn’t already visible, enable it by going to Settings > Event Details and selecting Travel Time. In addition, in order for BusyCal to compute driving or walking time automatically, the event must have a structured location in its Location field. In general, this means a complete street address or a city name. tip When you start typing a location in the Location field, BusyCal displays potential matches in a list. Selecting one of these matches ensures that you’ll end up with a properly structured location that BusyCal can use to determine travel time. To set the travel time for an event with a location, tap Travel Time in its Event Details view, tap Starting Location and enter or select the location you’ll be leaving from, and then tap one of the travel time options. note By default, the Starting Location uses your current location, provided you have granted BusyCal access to Location Services (in the main iOS System Settings app, tap Privacy > Location Services > BusyCal, and tap Always or While Using the App). ![Edit Travel Time](https://downloads.busymac.com/resources/img/busycal-ios/edit_travel_time.png) Your choices are: * **Driving time: *x* minutes/hours** — The current driving time from your chosen location to the event’s location. * **Walking time: *x* minutes/hours** — The current walking time from your chosen location to the event’s location. * ***x* minutes/hours** — Choose a preset duration to specify how long you want to leave yourself to get to the event. Unlike driving and walking times, these values do not depend on your current location or traffic conditions. Setting the travel time for an event, by itself, does not also set an alarm. To set the alarm based on travel time, tap Alarm followed by: * **None** — No alarm appears. * **At start of travel** — An alarm appears when you must leave to get to the event on time, *based on the travel time you set*. Note that this alarm is *not* dynamic, so changes in driving conditions don’t affect when it appears. * ***x* minutes/hours/days before travel time** — An alarm appears this number of minutes, hours, or days *before* your selected travel time (to allow yourself time to get ready before leaving). --- # Alarms BusyCal has a flexible selection of alarms to remind you about scheduled events. An event can have one or more alarms, each of which can occur at or before the event’s start time. ## Creating Alarms[​](#creating-alarms "Direct link to Creating Alarms") To add an alarm to an event, to to its Event Details view, make sure you’re in Edit mode, and tap Alarm followed by the desired alarm interval—None, At start, or *x* minutes/hours/days before the event; or, if you’ve set a travel time, At start of travel, or x minutes/hours/days before travel. ![Alarm Options](https://www.busymac.com/images/bcl3ios-alarm-options.png) Once you’ve added an alarm, another Alarm entry appears in the Event Details view, so you can repeat the process to add one or more additional alarms. ## Setting Default Alarm Intervals[​](#setting-default-alarm-intervals "Direct link to Setting Default Alarm Intervals") BusyCal enables you set different default alarms intervals for new timed events, all-day events, timed tasks, and dated tasks. To do this, go to Settings > New Event Defaults > Alarm Defaults. ![Default Alarms settings](https://www.busymac.com/images/bcl3ios-settings-alarm-defaults.png) Then tap any of the following: * **For Timed Events** — Tap the time at which you want default alarms for timed events to occur (such as “At start,” “5 minutes before,” or “1 hour before”), or tap None to have no default alarm for timed events. * **For All Day Events** — Tap the option for when you want default alarms for all-day events to occur: “On same day (9:00 AM),” ”1 day before (9:00 AM)”, “2 days before (9:00 AM),” or “1 week before.” Or tap None to have no default alarm for all-day events. * **For Timed Tasks** — Tap the time at which you want default alarms for timed tasks to occur (such as “At start,” “5 minutes before,” or “1 hour before”), or tap None to have no default alarm for timed tasks. * **For Dated Tasks** — Tap the option for when you want default alarms for dated tasks to occur: “On same day (9:00 AM),” ”1 day before (9:00 AM)”, “2 days before (9:00 AM),” or “1 week before.” Or tap None to have no default alarm for dated tasks. ## Enable BusyCal Notifications[​](#enable-busycal-notifications "Direct link to Enable BusyCal Notifications") BusyCal can display alarms for events and tasks using iOS Notifications. To have BusyCal generate alarms: 1. In BusyCal, go to Settings > App Icon & Alerts. 2. Turn on Event Alarms and Task Alarms. 3. In the main iOS System Settings app, go to Notifications > BusyCal. Turn on all desired options (likely all of them) and tap Banners (the default) or Alerts for the alert style when your iOS device is unlocked. ## Disable Calendar and Reminders Notifications[​](#ios-disable-calendar-and-reminders-notifications "Direct link to Disable Calendar and Reminders Notifications") If you’ve enabled BusyCal Notifications, you should disable Notifications for Calendar and Reminders, to avoid receiving duplicate alerts. To disable alarms in Calendar and Reminders: 1. In the main iOS System Settings app, go to Notifications > Calendar and turn off Allow Notifications. 2. In the main iOS System Settings app, go to Notifications > Reminders and turn off Allow Notifications. note If you turn off notifications for Reminders, you can still receive location-based alerts in BusyCal, but you must go to the main iOS System Settings app and tap Privacy > Location Services > BusyCal and tap Always (not just While Using the App). ![App Icon & Alerts](https://www.busymac.com/images/bcl3ios-settings-app-icon.png) ![Notifications Settings - BusyCal](https://www.busymac.com/images/bcl3ios-notifications-busycal.png) --- # Natural Language You can create events and tasks in BusyCal using natural language—simply type the details and BusyCal interprets them automatically. To enable natural language processing, go to Settings > New Event Defaults and turn on Create with Natural Language. Once you've done this, the Title field for new events and tasks is replaced with a field that accepts freeform input. ## Creating Events[​](#creating-events "Direct link to Creating Events") You can create events with or without dates and times. Here are some examples: ``` Lunch with Joe next Tuesday ``` ``` Lunch with Joe next Tuesday at 12:00 ``` ``` Meeting with Joe Nov 7 at 3:00 ``` ``` Staff meeting Thursday at 2:00 ``` Adds an alarm 15 minutes before the event: ``` Dentist at 2:00 Monday alarm 15m ``` Adds `Jimmys` to the Location field: ``` Coffee at Jimmys 9:00 ``` The keyword `allday` can be used to turn the event into an all-day event, even if a default start time is applied in settings. Time will automatically be omitted when `allday` is used. ``` Attend conference tomorrow allday ``` Events are added to the default event calendar specified in Settings > New Event Defaults > Default Calendar, unless you specify a different calendar (see [Setting the Calendar](#ios-setting-the-calendar) below). ## Time Zones[​](#time-zones "Direct link to Time Zones") You can attach a time zone to an event simply by typing it inline. BusyCal recognises both common abbreviations (`PST`, `EST`, `GMT`, `BST`, `UTC`, etc.) and full IANA identifiers (`America/New_York`, `Asia/Tokyo`, `Europe/London`, …). The time zone is parsed out of the title, so it never ends up in the event name. With English natural-language entry, you can also use the six common U.S. zone names: `Eastern`, `Central`, `Mountain`, `Pacific`, `Alaska`, and `Hawaii`. Add `Time` if you prefer the full phrase. BusyCal maps these names to regional time zones and follows each region's daylight-saving rules automatically. For an exception such as most of Arizona, enter the specific IANA identifier, for example `America/Phoenix`. ``` Client call Monday at 9:45 Eastern ``` ``` Client call Monday at 9:45 Eastern Time ``` A bare name is recognised at the end of the entry, before punctuation, or before another recognised clause such as `to`, `with`, `at`, or `in`. Use the full form, such as `Eastern Time`, if ordinary title text follows the zone. ``` Class April 19 at 1pm PST ``` ``` Meeting May 1 9am America/New_York ``` Trailing punctuation does not break parsing: ``` Apple Earnings Call Tuesday 2pm PST! ``` If your event has a **different start and end zone** — for example, a flight or a cross-zone call — write a zone after the start time, the end time, or both: ``` Flight April 18 9am EST to 11am PST ``` ``` Class April 19 at 1pm PST to 3pm EST ``` ``` Lecture April 19 at 1pm Pacific to 5pm Eastern ``` End on the next day, in the same zone: ``` Conference April 18 12pm PST to April 19 ``` A few finer points: * You can write the zone with or without a space — `9am PST` and `9amPST` both work. The space-less form is especially handy in Chinese, Japanese, and Korean inputs. * All-day events can still carry a zone, e.g. `do something tomorrow 9pm PST allday`. * Recurring events keep their zone on **every** occurrence — see [Recurrence end and date windows](#recurrence-end) for examples like `every Tuesday at 9am PST until February 3`. * Abbreviations and IANA identifiers are supported in all of BusyCal's localized builds (English, Canadian English, German, French, Italian, Spanish, Dutch, Japanese, Korean, and Simplified Chinese). The spoken U.S. names listed above are available with English natural-language entry. ## Creating Recurring Events[​](#creating-recurring-events "Direct link to Creating Recurring Events") BusyCal for iOS recognises a wide range of natural-language recurrence phrases and converts them into a repeating event automatically. The recurrence preview appears inline as you type, alongside the parsed title, date, and time. ### Simple repeats[​](#simple-repeats "Direct link to Simple repeats") ``` Yoga every day at 7am ``` ``` Standup every weekday at 9:30 ``` ``` Project sync every Tuesday at 10am ``` ``` Pay rent monthly ``` ``` Sam's birthday every year on 5/16 ``` Frequency keywords include `daily`, `weekly`, `monthly`, `yearly`, `biweekly` / `bi-weekly`, `bimonthly` / `bi-monthly`, and `quarterly`. You can also write the equivalent `every day`, `every week`, `every month`, `every year`, or `every weekday` / `every weekend`. ### Custom intervals[​](#custom-intervals "Direct link to Custom intervals") Use `every N <unit>` for non-default intervals, or `every other` for every-second occurrences: ``` Water the plants every 3 days ``` ``` Team retro every 2 weeks on Friday at 4pm ``` ``` Inventory check every other Monday ``` ### Specific weekdays and ordinal patterns[​](#weekdays-and-ordinals "Direct link to Specific weekdays and ordinal patterns") ``` Soccer practice every Tuesday with John at 6pm ``` ``` Game night every Friday and Saturday at 8pm ``` ``` Team meeting at 9am on the second Tuesday of every month ``` ``` Board review at 10am on the last Thursday of each month ``` Ordinal words supported in the "Nth weekday of the month" form: `first`, `second`, `third`, `fourth`, `fifth`, and `last` (as well as `1st`, `2nd`, `3rd`, `4th`, `5th`). ### Recurrence end and date windows[​](#recurrence-end "Direct link to Recurrence end and date windows") Cap a series with `until`, `through`, `thru`, `till`, or `to`. To shift the start, use `from`, `starting`, `starting on`, `beginning`, or `beginning on`. Both can be combined to form an explicit date window: ``` Lunch every Tuesday until 2/5 ``` ``` Conference call every Saturday at 12pm PST from April 18 through June 20 ``` ``` Daily standup starting Monday at 9am ``` Time zones are preserved inside recurrence windows — `every Tuesday at 9am PST until February 3` keeps PST on every occurrence, not just the first one. ### Notes[​](#recurrence-notes "Direct link to Notes") * If you want a phrase like `every Tuesday` to appear in the **title** instead of being interpreted as a recurrence, wrap it in straight quotes: `"every Tuesday"`. * All the recurrence phrases above are also recognised in the localized BusyCal builds for **German, French, Italian, Spanish, Dutch, Japanese, Korean, Simplified Chinese, and Canadian English**. The phrasing follows each language's conventions — for example, `tous les mardis à 9h` in French or `毎週火曜日 9時` in Japanese. ## Creating Tasks[​](#creating-to-dos "Direct link to Creating Tasks") You can create tasks with or without dates and times. If no date or time is included, BusyCal creates an undated task with no due date. For example: ``` Call Bob ``` ``` Call Bob tomorrow ``` ``` Call Bob next Tuesday ``` ``` Call Bob Nov 7 ``` ``` Buy Toner ``` Tasks are added to the default task calendar configured in Settings > New Task Defaults > Default Calendar, unless you specify a different calendar (see [Setting the Calendar](#ios-setting-the-calendar) below). ## Creating Journals[​](#creating-journals "Direct link to Creating Journals") You can create journal entries by preceding the text with a ">", "memo", "log" or "journal". Journal entries default to the current date unless specified. Here are some examples: ``` >Museum visit ``` ``` memo Jimmy took his first steps today ``` ``` log Project launched with hiccups yesterday ``` Journal entries are added to the default journal calendar specified in settings, unless you specify a different calendar (see [Setting the Calendar](#ios-setting-the-calendar) below). ## Setting the Calendar[​](#ios-setting-the-calendar "Direct link to Setting the Calendar") Optionally, you can specify which calendar to create an event or task on by including a slash `/` followed by the calendar name (e.g., `/work`) or a unique portion of the calendar name (e.g., `/w`). Here are some examples: ``` Lunch with Joe next Tuesday /work` new event on Work calendar ``` New event on Work calendar, if no other calendars start with "w": ``` Lunch with Joe next Tuesday /w ``` ``` Call Bob /work new task on Work calendar ``` New task on Shopping calendar: ``` Buy Toner /shop ``` Use calendar name abbreviations, such as `/pjt` to match **Project Titan**. Simply type a sequence of characters that appear in the name. ``` Team Review Meeting /pjt ``` ## Adding a URL[​](#adding-a-url "Direct link to Adding a URL") You can add an optional URL at the end of the phrase surrounded by angle brackets (e.g., `<www.apple.com>`) to include a link to that URL. Here are some examples: ``` Buy Toner <www.amazon.com> ``` ``` Apple Earnings Conference Call Tuesday at 2pm <investor.apple.com> ``` ## Adding an Attendee[​](#adding-an-attendee "Direct link to Adding an Attendee") If you enter the name of someone you are meeting with (e.g., "Meeting with Joe"), the person's name will be underlined. Tap the name to display a list of matches from Contacts; tap one or more of the matching names to add those people to the event as attendees. ## Adding a Location[​](#adding-a-location "Direct link to Adding a Location") If you enter a location (e.g "Coffee at Starbucks"), the location will be underlined. Tapping the location will display a list of matches from Location Services where you can further refine your search and select an item to set a structured location. --- # Settings BusyCal's Settings screen lets you configure the app's appearance and behavior. To open it, tap the gear icon in the upper-left corner. ## Sync Now[​](#sync-now "Direct link to Sync Now") Tap **Sync Now** to sync all accounts immediately. The row shows progress while syncing, and beneath it BusyCal reports when the last sync finished. If an account is failing, the row says how many accounts are affected — tap the account in [Accounts](#accounts) to see the error. ## Calendar Sets[​](#ios-calendars-prefs "Direct link to Calendar Sets") A Calendar Set is a saved selection of calendars you can switch between, such as one set for work and another for personal. See [Calendar Sets](/docs/busycalios/131439-calendar-sets.md) for how to use them day to day. * **New Calendar Set** — Create a set. * **Your saved sets** — Each row shows the set name and how many calendars it contains, with a lock if the set is protected. Tap a set to edit it. When you have more than one set, an **Edit** button appears so you can drag the sets into a different order. Swipe a set left to delete it; the last remaining set cannot be deleted. Opening a protected set asks for Face ID or Touch ID first. * **Widgets & Watch** — Choose which calendars your widgets and the Apple Watch app show. Leave it on **Selected Calendar Set** to follow whichever set is active in BusyCal, or pick a specific set to pin them to it. See [Widgets & Apple Watch](/docs/busycalios/131439-calendar-sets.md#ios-set-widgets-watch). ### Creating and Editing a Calendar Set[​](#edit-calendar-set "Direct link to Creating and Editing a Calendar Set") A new set has **Cancel** and **Done**; **Done** becomes available once you have given the set a unique name and chosen at least one calendar. Changes to an existing set are saved as you make them. * **Name** — The name of the set. * **Override Default Calendars** — Set the calendar new items go to while this set is active: **Event Calendar**, **Task Calendar** and **Journal Calendar**. Each picker lists only the visible, writable calendars in the set that can hold that type of item, grouped by account. Tap **None** to clear an override and fall back to the app-wide default from [New Event Defaults](#ios-new-event-defaults). * **Preferred View**: Switch to a view whenever this set becomes active: **None** (the default, meaning stay where you are), **List**, **Day**, **Week**, **Month**, **Year** (iPad only) or **Tasks**. iPhone doesn't offer Year because Year View appears there only in landscape. See [Preferred View](/docs/busycalios/131439-calendar-sets.md#ios-set-preferred-view). * **Require Face ID** / **Require Touch ID** — Hide this set's events when you are viewing All Calendars until you authenticate. Changing this setting requires Face ID or Touch ID. * **Visible Calendars** — Tap **Show All Calendars** to add every calendar to the set, or **Hide All Calendars** to remove them all. Below that, calendars are grouped by account, and each account has its own Show All / Hide All row and can be collapsed. Tap a calendar to include or exclude it, and tap the "i" icon beside it to open [Calendar Details](#calendar-details). Tapping a calendar that isn't syncing asks whether to enable it first. When you open a saved set, an **Edit** button appears at the top of the screen. Tap it to drag calendars into a different order, sort an account's calendars by name, or move a whole account up or down with the arrows on its heading. This is the order used everywhere in BusyCal, so the change applies to your other sets too. See [Reordering Accounts and Calendars](#reorder-calendars). ### Calendar Types[​](#ios-calendar-types "Direct link to Calendar Types") Calendars hosted on iCloud (and most CalDAV servers) are type-specific—each calendar contains either events or tasks, but not both. BusyCal indicates a task calendar by displaying "(Task Calendar)" next to its name. Event calendars sync with the Calendar app, and task calendars sync with the Reminders app. ### Calendar Details[​](#calendar-details "Direct link to Calendar Details") To change a calendar's details, tap the "i" icon to the right of its name in a calendar list. The same screen opens from Calendar Sets and from an account's [Calendars](#account-calendars) list. Changes take effect as you make them. * **Name** — Type a new name for the calendar. This renames it in BusyCal only. * **Sync Attachments** — Download attachments on this calendar's events. Appears only for calendars that can hold attachments. * **Show graphic previews** — Show event graphics for this calendar. On by default. * **Alarms** — Turn this calendar's alarms on or off. On by default. * **Notify Of Changes** — Show changes other people make to this calendar in your Inbox. * **Notify Of Meetings** — Show meeting notifications from this calendar in your Inbox. * **Enable Calendar** — Turn syncing for this calendar on or off. Appears for CalDAV, Exchange, Microsoft 365 and Apple Calendar calendars. * **Show as holiday calendar** — Show this calendar's all-day events italicized and pinned to the bottom of the day cell in Month view, instead of as regular all-day banners. Subscribed holiday calendars (such as Google's "Holidays in United States") have this turned on automatically, which is why their titles appear in the lower portion of the date box rather than following the usual Date and Time alignment settings. Turn it off to display that calendar's events like normal all-day events. Appears only for calendars that can hold events or journals. * **Sync Calendar Color** — Keep the color the server supplies. Turn it off to keep your own color even when the server changes its own. Appears only for accounts that supply a color. * **Color** — Choose from Cayenne, Red, Strawberry, Pink, Orange, Salmon, Yellow, Green, Teal, Asparagus, Mocha, Blue, Midnight, Orchid, Purple, Grape, Bubblegum, Plum, Steel and Black, or tap **Custom** to pick any color. The last row removes the calendar, and which one you see depends on how you got the calendar: * **Delete Calendar** — Deletes the calendar and everything on it. This cannot be undone. * **Stop Sharing** — Removes a calendar someone shared with you. To get it back, ask the owner to share it again. * **Unsubscribe** — Removes a subscribed calendar, either from this device alone or from every device on the account, as the confirmation explains. Calendars are created from the account's own calendar list. See [Account Calendars](#account-calendars). ## Accounts[​](#accounts "Direct link to Accounts") To add or modify calendar accounts, tap **Accounts**. Your accounts are grouped under **Active**, **Disabled** and **Added on Another Device**, and the heading above them reports the current sync status. Tap **Edit** to drag the accounts in the Active list into a different order; see [Reordering Accounts and Calendars](#reorder-calendars). **Sync Now** at the bottom syncs every account. ### Adding an Account[​](#add-account "Direct link to Adding an Account") 1. Tap **Add Account…**. It is the first row at the top of the Accounts screen. 2. On the Add Account screen, find the service you want and tap the **Connect** button on the right side of its row. Tapping the row itself does nothing; only **Connect** starts the setup. 3. Follow the steps for that service, described below. The services are grouped like this: * **iCloud, Google, Fastmail, Yahoo, Fruux** — The common providers. **iCloud China** also appears if your device is set to a China time zone. * **Microsoft Graph** — **Office 365** and **Personal Outlook**. This is the current way to connect a Microsoft account. * **Exchange Web Services** — **Office 365**, for older servers that need the legacy protocol. * **Apple Calendar** — Read-only access to the calendars already set up in the iOS Calendar app. **Reminders** and **Todoist** are here too. Apple Calendar and Reminders disappear from the list once you have added them. * **CalDAV, Exchange, WebDAV** — For servers that aren't listed above. * **Meetings** — **GoTo**, **Webex** and **Zoom**, for detecting meeting links. What happens after you tap **Connect** depends on the service: * **Todoist, GoTo, Webex and Zoom** take you straight to the service to sign in. * **Google, Office 365 and Personal Outlook** ask for your email address. Tap **Add**, then follow the prompts to sign in on the service's own page. Allow everything it asks for; if the permissions screen shows checkboxes, turn on all of them. * **Every other service** shows a form for your sign-in details. Fill it in and tap **Add**. If something required is missing, BusyCal tells you which field it needs. Once the account is added, it appears under **Active** on the Accounts screen and BusyCal begins syncing. If BusyCal instead says you are already connected to that service with the same login, the account already exists on this device; look for it under **Disabled** or **Added on Another Device**. note iCloud needs an app-specific password of 16 to 19 characters — your normal iCloud password will not work. See [Using BusyCal with iCloud](/docs/busycalios/70675-using-busycal-with-icloud.md). ### Account Settings[​](#account-settings "Direct link to Account Settings") Tap an account to see its settings. Tap **Edit** to change the login fields, then **Save** or **Cancel**. Which rows appear depends on the service: * **Enable Account** — Turn syncing off for this account without removing it. Its calendars stay in the list but stop updating. * **Title** — The name shown for this account in BusyCal. * **Apple ID / Email / Yahoo ID / User Name**, and **Password** — The sign-in details. * **Server Address**, **Calendar URL**, **Internal Server** and **External Server** — Server locations for CalDAV, WebDAV and Exchange accounts. Leave the Exchange server fields empty to discover them automatically. * **Enable Microsoft Teams Integration** — Detect Teams meetings on this account. Your Office 365 administrator may need to approve this. * **Manage Sharing** — Calendars other people have shared with you, and the delegates you have granted access to. See [Sharing and Delegates](#manage-sharing). * **Public Folders** — Browse an Exchange or Office 365 public folder tree and subscribe to the calendars in it. Folders that are read-only or inaccessible are marked as such. * **Calendars** — Every calendar on the account. See [Account Calendars](#account-calendars). * **Meeting Organizer Email** — Choose which of your account's email aliases is used as the organizer when you send invitations. The list comes from the aliases your provider reports; add new ones in your provider's own settings. * **Refresh** — How often BusyCal checks for changes: **Push** (where the service supports it), or every **5 minutes**, **15 minutes**, **30 minutes**, **hour**, **day**, **week** or **year**. Your own edits are sent immediately regardless of this setting. * **Enable Alarms** — Allow alarms from a WebDAV subscription. * **Sync Now** — Sync this account only. * **Delete Account** — Removes the account's calendars from this device. They stay on the server and on your other devices. An account added on another device appears with a **Use Account** button — tap it and sign in, since passwords are not synced between devices. **Remove Account** discards it on this device instead. ### Sharing and Delegates[​](#manage-sharing "Direct link to Sharing and Delegates") Type at least three characters in the **Add Delegate** field to search your organization's directory, then choose a person to give them access. Each existing delegate shows their current access; tap one to change it to **Read Only**, **Read & Write** or **No Access**. Swipe a delegate left and tap **Remove** to revoke access. ### Account Types[​](#account-types "Direct link to Account Types") For information on adding and configuring various account types: * **iCloud** — [Using BusyCal with iCloud](/docs/busycalios/70675-using-busycal-with-icloud.md) * **Google** — [Using BusyCal with Google Calendar](/docs/busycalios/70676-using-busycal-with-google.md) * **Outlook / Office 365** — [Using BusyCal with Outlook / Office 365](/docs/busycalios/using-busycalios-with-office-365-microsoft-graph.md) * **Exchange (EWS)** — [Using BusyCal with Exchange](/docs/busycalios/70677-using-busycal-with-exchange.md) * **CalDAV** — [Using BusyCal with a CalDAV Server](/docs/busycalios/70678-using-busycal-with-caldav.md) * **Todoist** — [Using BusyCal with Todoist](/docs/busycalios/70679-using-busycal-with-todoist.md) ### Account Calendars[​](#account-calendars "Direct link to Account Calendars") Tap an account, then tap **Calendars** to see every calendar in that account. From this screen you can reorder the calendars, sort them by name, open a calendar's details, and — on accounts that support it — add or delete calendars. Calendars you are syncing show a checkmark. Tap a calendar's "i" icon to open its [details](#calendar-details). Tapping a calendar you are not syncing offers to enable it. If the account itself is disabled, the rows are dimmed and cannot be changed. **Creating a calendar.** On accounts that support it, **New Event Calendar** and **New Task Calendar** appear at the bottom of the screen. Tap one, give the calendar a name of up to 32 characters, pick a color, and tap **Done**. Google accounts are the exception: Google does not allow new calendars over the sync protocol BusyCal uses, so BusyCal offers to open Google Calendar in your browser instead. Create the calendar there and it appears in BusyCal at the next sync. Accounts that do not support creation show no such rows. **Deleting a calendar.** Swipe a calendar left, or tap **Edit** and use the delete control. Deleting is available for calendars you own on iCloud, other CalDAV servers, and Exchange. Calendars that BusyCal cannot delete — shared and subscribed calendars, family calendars, and calendars on Google, Todoist, Microsoft 365, WebDAV, and the Apple Calendar accounts — offer no delete control. ### Reordering Accounts and Calendars[​](#reorder-calendars "Direct link to Reordering Accounts and Calendars") Your accounts, and the calendars inside each one, appear in an order you choose. BusyCal keeps a single order and follows it everywhere, and you can change it from either the Accounts screen or a saved calendar set. **Reordering accounts.** To change the order of the accounts themselves: 1. Open **Settings**. 2. Tap **Accounts**. 3. Tap **Edit**, then drag the accounts in the **Active** list into the order you want. An account's position decides where all of its calendars appear in relation to the calendars of your other accounts. **Reordering the calendars in an account.** To change the order within a single account: 1. Open **Settings**. 2. Tap **Accounts**. 3. Select the account containing the calendars. 4. Tap **Calendars**. 5. Tap **Edit**, then drag the calendars into the order you want. Tap **Sort Alphabetically** at the top of the same screen to put the account's calendars in name order instead. These steps cover one account, so repeat them for each account whose calendars you want to reorder. The **Edit** button appears only when the account has more than one calendar. **Rearranging from a calendar set.** You can make the same changes without leaving a saved set. Tap **Calendar Sets**, tap the set, then tap **Edit**. From there, drag a calendar to move it within its account, tap an account's **Sort Alphabetically** row to put that account's calendars in name order, or tap the arrows on an account's heading to move the whole account up or down. You are changing the order the rest of the app uses, not an order that belongs to that one set, so your other sets follow the change as well. The screen for creating a new set offers no rearranging, and neither does the combined **Other** group. The order sets where each calendar appears in the calendar lists and calendar pickers throughout the app, including Calendar Sets and the default-calendar menus in New Event Defaults. In Day, Week and Month views it also orders all-day events that fall on the same day, and it breaks ties between items that are otherwise equal. When the Task List is sorted by Calendar, the calendar groups follow this order too. See [Sorting and Filtering Tasks](/docs/busycalios/70659-tasks.md#sorting-and-filtering-tasks). note The account and calendar order is stored on your device. It is not sent to your calendar server, so it does not carry over to BusyCal for Mac, to Google Calendar, or to your other devices. Set the order on each device where you want it. ## Show in Calendar[​](#show-in-calendar "Direct link to Show in Calendar") Controls which types of information are visible in your calendar. * **Show Tasks in Calendar** — Task display in the calendar. See [Show Tasks in Calendar](#show-tasks-in-calendar). * **Show Birthdays Calendar** — Shows birthdays from the iOS Contacts app. Off by default. See [Birthdays and Anniversaries](/docs/busycalios/70663-birthdays-and-anniversaries.md). <!-- --> * **When death date is detected** — **Continue Showing Birthdays** (the default), **Stop Showing Birthdays** from the year of death, or **Show Death Anniversaries**. Appears when Show Birthdays Calendar is on. * **Show Anniversaries Calendar** — Shows anniversaries from the iOS Contacts app. Off by default. * **Show Weather** — Displays weather forecasts at your location for the next 7 days. On by default. Requires permission to use your location; if BusyCal cannot get your location or the latest forecast, it says so beneath the setting. See [Weather](/docs/busycalios/70665-weather.md). <!-- --> * **Use Celsius** — Show temperatures in Celsius rather than Fahrenheit. Appears when Show Weather is on, and starts out matching your region. * **Show Moons** — Displays moon phase graphics. On by default. * **Show Declined Events** — Displays events you were invited to but declined. * **Show Hidden Events** — Shows events you have manually hidden using the context menu (long-tap on event). * **Combine Identical Events** — Merges duplicate events that appear on two or more calendars. * **Show Week Numbers** — Displays week numbers in Day, Week, and Month views. * **Show Alternate Calendar** — Show a second calendar system alongside the dates. Turn it on, then choose **Chinese** (the default), **Hebrew**, **Islamic**, **Japanese**, **Persian**, **Day of Year** or **World Season Calendar**. ### Show Tasks in Calendar[​](#show-tasks-in-calendar "Direct link to Show Tasks in Calendar") * **Dated Tasks** — Show dated tasks in the calendar on their due dates. On by default. <!-- --> * **Include All-Day Tasks** — Include all-day tasks among the dated tasks shown. Turn it off and only the dated tasks that have a due time appear. On by default, and appears when Dated Tasks is on. * **Carry Forward Uncompleted** — Carry forward past-due tasks and display them on the current date. On by default. * **Completed Tasks** — Show completed tasks in the calendar. On by default. * **Completed Undated Tasks** — Show completed tasks that never had a date. On by default. * **Completed Tasks in Calendar** — Place completed tasks **On Due Date** (the default) or **On Completed Date**. When showing by completion date, Day and Week views show these in the all-day section. * **Task Duration in Day & Week** — How much vertical space a task occupies in Day and Week views: **15 minutes**, **30 minutes** (the default), **45 minutes** or **1 hour**. ## View Preferences[​](#ios-view-preferences "Direct link to View Preferences") Controls how calendars and events appear on your screen. ### Appearance[​](#appearance "Direct link to Appearance") * **Appearance** — Choose **Automatic** (the default, following the system), **Always Dark**, or **Always Light**. * **Event Text Style** — Choose **Plain** (default text color), **Calendar/Tag Color** (the default — text colored by calendar or tag), or **Calendar Color Only** (text colored by calendar, ignoring tags). See [Event Text Style](/docs/busycalios/142141-event-text-style.md). <!-- --> * **Increase text contrast** — Boosts saturation of colored event text for readability in Light mode. On by default, and appears when Event Text Style is not Plain. * **Text Size** — Set the text size for **List View Text**, **Day/Week View Text**, **Month View Text** and **Tasks View Text** separately. Each offers **Extra Large**, **Large**, **Medium**, **Small** and **Extra Small**. Most start at Medium; Month View Text starts at Small on iPhone and Medium on iPad. * **Shade Weekends** — Shades weekends gray on your calendar. On by default. * **Dim Past Events** — Dims events that have already occurred. On by default. * **Dim Pending Invites** — Displays meeting invites you haven't responded to in gray. On by default. ### Calendar Configuration[​](#calendar-config "Direct link to Calendar Configuration") * **Working Days** — Set your day and week: <!-- --> * **Day starts at** — **Sunrise** (the default) or any hour from Midnight to Noon. * **Day ends at** — **Sunset** (the default) or any hour from Noon to Midnight. * **Work Week** — Tap the days you work. Days outside the work week are shaded. This starts out matching your region, and at least one day must stay selected. * **Start Week On** — The first day displayed in the leftmost column of the Week/Month view. Monday by default. * **Date alignment** — Align date numbers to the **Right** (the default) or **Left** in calendar cells. ### Event Details[​](#event-details "Direct link to Event Details") Choose which fields appear in the Event Details view for events and tasks. * **Show Time To Event** — Displays a countdown to the event start time. * **Show Location** — Text field for entering location information. * **Show Location URL** — URL field for entering location URLs. * **Show Time Shortcuts** — Shows time shortcut buttons when creating or editing events. * **Show Favorite Time Zones** — Adds shortcuts to the time-zone picker. This does not display the Start Time Zone field; enable that field separately. * **Show Start Time Zone** — Time zone menu for the event start time. See [Time Zones](/docs/busycalios/70671-date-and-time-options.md#ios-time-zones). <!-- --> * **Show End Time Zone** — Time zone menu for the event end time (appears when Start Time Zone is enabled). * **Show Travel Time** — Menu for viewing or specifying travel time. See [Maps & Travel Time](/docs/busycalios/70666-maps-travel-time.md). * **Show Task Duration** — Displays a duration field for tasks. * **Show First Occurrence** — Displays the first occurrence date and sequence number of a repeating event. * **Show Attendees** — Field for adding attendees. See [Meetings and Invitations](/docs/busycalios/70673-meetings-and-invitations.md). * **Show Contacts** — Field for linking to contacts. * **Show Tags** — Field for entering tags. See [Tags](/docs/busycalios/70662-tags.md). * **Show Labels** — Displays event labels. * **Show Color** — Displays an event color picker. * **Show URL** — URL field for inserting links. * **Show Private** — Toggle to mark the event as Private. When sharing a calendar through Exchange, Google, or some CalDAV servers, private events appear to others as "Private Event." Only timed events can be made private. Not supported by iCloud. * **Show Busy** — Toggle to mark the event as busy or free. * **Show Created Time** — The date and time the event was created. * **Show Edited Time** — The date and time the event was last modified. * **Show Map** — For events with structured locations, shows a map at the bottom of the details view. * **Video Calls** — Turn detection on or off for each service. All are on by default: <!-- --> * **Zoom** — Requires a Zoom account in BusyCal. * **Google Meet** — Requires a Google Calendar account. * **WebEx** — Requires a Webex account. * **GoTo** — Requires a GoTo Meeting account. * **MS Teams** — Available only for events on primary Office 365 calendars. ### Week View[​](#week-view "Direct link to Week View") * **Time in Week View** — Show **None**, **Duration** (for example "1h"), or **Start-End Time** (the default). * **Days in Week View** — Set **# of Days (Portrait)** and **# of Days (Landscape)** separately. iPhone offers 2 to 7 days, iPad 2 to 14. Portrait starts at 3 days and landscape at 5. * **Align Week View to Today** — Week view starts from today. On by default. Turn it off to follow the Start Week On setting instead, as long as today is visible. * **Notes in Day & Week View** — Show event notes in Day and Week views. On by default. ### Month View[​](#month-view "Direct link to Month View") * **Time alignment in Month View** — Align event times to the **Right** (the default) or **Left**. * **Time in Month View** — Show **None**, **Start Time** (the default), or **Start-End Time**. On iPhone, times appear in landscape only. <!-- --> * **Time In Month View (Portrait)** — Also show times in portrait. iPhone only, and appears when Time in Month View is not None. * **Weeks in Month View** — Set **# of Weeks (Portrait)** and **# of Weeks (Landscape)** separately, from 2 to 8 weeks. Portrait starts at 4 weeks and landscape at 3. * **Align Month View to Current Week** — Month view starts from the current week. On by default. Turn it off to start from the first day of the month. * **Notes in Month View** — Show event notes in Month view. On by default. ### List View[​](#list-view "Direct link to List View") * **Empty Days in List View** — Show days with no events in List view. On by default. * **Notes in List View** — Show event notes beneath event titles in List view. On by default. ### Task Display[​](#task-display "Direct link to Task Display") * **Dim Completed Tasks** — Dims completed tasks in the calendar and task list. On by default. * **Friendly Dates in Task List** — Shows relative dates (for example "Tomorrow") for dated tasks. On by default. Turn it off to show absolute dates. ### Multi-Day Events[​](#multi-day "Direct link to Multi-Day Events") * **Combined Multi-Day Events** — Combines a multi-day event into a single block in Day and Week views. On by default. <!-- --> * **Multi-Day Event Duration** — How long an event must run before it is combined, from 30 minutes to 22 hours. 21 hours by default. Appears when Combined Multi-Day Events is on. ## App Icon & Alerts[​](#app-icon-alerts "Direct link to App Icon & Alerts") Controls BusyCal's app icon badge and alarm behavior. * **Meeting Invitations** — Show meeting invitations in the Notification Center. On by default. * **Badge Icon** — Choose what the number on BusyCal's app icon counts: **None**, **Today's Remaining Items** (the default), **Today's Tasks**, **Today's Tasks + Overdue**, **All Overdue Tasks**, **Inbox Notifications**, **Current Date**, **Current Week**, or **Current Day of Year**. * **Event Alarms**, **Task Alarms** and **Journal Alarms** — Each opens its own screen with the same three settings, so events, tasks and journal entries can sound different: <!-- --> * **Show Alarms** — Whether this kind of item raises alarms at all. On by default. * **Vibrate Only** — Vibrate instead of playing a sound. Off by default. * **Alarm Sound** — **System Default** (the default), Chime, Attention, Question, Deep Space, Welcome, Doors, Woodlands, Tinkle, Victory, Finish, Bicycle, Don't Forget, Knock Knock, Level Up, Marimba, Surprise, It's Time, Reminder, Reward, or Soft Chime. ## New Event Defaults[​](#ios-new-event-defaults "Direct link to New Event Defaults") Default settings for new events, tasks, and journals. * **Add Button Creates** — Choose what a tap on the Add button makes: **Automatic** (the default), **Event** or **Task**. Automatic usually creates a task while the Tasks tab is open and an event everywhere else. This setting applies to a tap only; what a long press offers is set by **Long-Press Menu Options** under [Accessibility](#accessibility). * **Create with Natural Language** — Replaces the Title field with a freeform text field where you can type event details in natural language (e.g. "Lunch with Joe next Tuesday" or "Dentist at 2:00 Monday alarm 15m"). BusyCal interprets your entry and creates the event. note When Create with Natural Language is enabled, compact entry hides individual time-zone menus. You can type a zone inline, tap **Show Details**, or use the full event editor. * **New Event Defaults**: * **Default Calendar** — The calendar new events go to, listed by account. A Calendar Set's own [override](#edit-calendar-set) takes precedence over this while that set is active. * **All Day** — Create new events as all-day events. Off by default. * **Default Start Time** — The start time for new timed events. 9:00 AM by default, and hidden while All Day is on. * **Default Duration (minutes)** — The length of new timed events. 60 by default. * **New Task Defaults**: * **Default Calendar** — The calendar new tasks go to. * **Default Priority** — **None** (the default), **Low**, **Medium** or **High**. * **Default Due Date** — **Undated** (the default), **Same Day**, **Next Day**, **In 2 Days** through **In 6 Days**, or **In 1 Week**. * **Default Due Time** — Give new dated tasks a due time as well as a date, then pick the time. 9:00 AM by default. Appears once Default Due Date is not Undated. * **New Journal Defaults**: * **Default Calendar** — The calendar new journal entries go to. * **Alarm Defaults** — Set up to three default alarms for each kind of item. Tap a kind to open its screen, where **Alarm 1**, **Alarm 2** and **Alarm 3** can each be switched on and set individually. * **For Timed Events** — 5 minutes before by default. * **For All Day Events** — On the same day at 9:00 AM by default. * **For Timed Tasks** — At start by default. * **For Dated Tasks** — None by default. * **For Birthdays & Anniversaries** — None by default. * **Apply when accepting invites** — Add your default alarms to meeting invitations you accept. On by default. Each alarm offers **Vibrate Only** and a list of timings. For timed events and tasks these run from **At start** through **5 minutes before** up to **1 week before**; for all-day events, dated tasks and birthdays they are **On same day**, **1 day before**, **2 days before** and **1 week before**, each at a time you set. Choose **Custom** to build any other timing from a number, a unit (minutes, hours, days, weeks — or days, weeks, months for all-day items) and **before** or **after**. Tap **Done** to keep an alarm; going back discards it. * **Time Shortcuts** — The four times offered as suggestions when you create a timed event or task. 9:00 AM, 11:00 AM, 1:00 PM and 5:00 PM by default; tap any of them to change it. * **Use Floating Time for New Events** — New events keep the same local time wherever you are, so a 1 PM event is at 1 PM in every time zone. Off by default. * **Use Floating Time for New Tasks** — The same for new tasks. Off by default. note Some services do not support floating time. On those accounts, events fall back to your current time zone. ## Time Zone[​](#time-zone "Direct link to Time Zone") Time zone settings for your calendar. * **Time Zone Override** — Show your calendar in a specific time zone instead of the device's own. Turn on **Time Zone Override**, then choose the **Time Zone**. Turning the override off returns you to the device time zone. See [Time Zones](/docs/busycalios/70671-date-and-time-options.md#ios-time-zones). * **Show Second Time Zone** — Adds a second time ruler beside the first in Day and Week views. Off by default. <!-- --> * **Second Time Zone** — Which zone that ruler shows. Appears when Show Second Time Zone is on. * **Show Third Time Zone** — Adds a third ruler. Appears when Show Second Time Zone is on. * **Third Time Zone** — Which zone the third ruler shows. Turning a ruler off keeps its zone for next time. * **Favorite Time Zones** — Time zones you use often. They stay visible in every time zone picker and can show conversions in Event Details when **Show Favorite Time Zones** is on. Tap **Add Time Zone** and search for a city to add one, tap a saved zone to give it your own name, and use **Edit** or swipe left to remove one. When choosing any time zone, search for a city by name. Zones you have used recently appear under **Recent**, and **UTC** is always available under **Special**. ## Accessibility[​](#accessibility "Direct link to Accessibility") Settings to customize interaction and display for ease of use. * **Always Highlight Today** — Always show a highlight ring around today's date. Off by default. * **Long-Press Menu Options** — Choose which items you can create by long-pressing the Add button or a date or time in the calendar: **New Event** and **New Task** are offered by default, and **New Journal** can be added. At least one must stay selected, and if you leave only one, a long-press creates that item straight away. * **Context Menus in Day / Week View** — Long-press an event to open its context menu in Day and Week views. Off by default. * **Show Join Button in Calendar** — Show the meeting join button on events in Day and Week views. On by default. * **Month Name on Every Day** — Display the month name on every day cell, not just the first day of each month. Off by default. * **Show Month Names when Scrolling** — Display a floating month name while scrolling through months. On by default. * **Separators in Month View** — Show grid separators between days in Month view. On by default. ## Advanced[​](#advanced "Direct link to Advanced") Additional settings for customizing BusyCal's behavior. * **Manage Tag History** — Your list of tags. See [Manage Tag History](#manage-tag-history). * **Open Locations in** — Which map app opens when you tap an event location: **Apple Maps** (the default), **Google Maps**, **Waze**, **City Mapper** or **TomTom Go**. Apps you don't have installed are not listed. * **Open Links in** — Which browser opens when you tap a URL: **Safari** (the default), **Chrome**, **Firefox**, **Brave**, **Dolphin**, **Opera** or **Edge**. Apps you don't have installed are not listed. * **Open Phone Calls in** — Which app places a call when you tap a phone number: **System Default** (the default), **FaceTime Audio**, **FaceTime**, **WhatsApp**, **Google Voice** or **Zoom**. Apps you don't have installed are not listed. * **Log Level for Support** — How much detail diagnostic logs capture: **Warn**, **Info**, **Detailed** (the default), **Verbose** or **Low Level**. Change this only if BusyMac support asks you to. * **Detect HTML text in Notes** — Converts HTML-formatted text in event notes to plain text for display. On by default. * **Confirm Event Deletion** — Ask for confirmation before deleting an event from a calendar view. On by default. Deleting from within Event Details always asks. * **Travel time in blocking events** — Controls whether [time-blocking events](/docs/busycalios/142884-cross-calendar-blocking-events.md) extend their start time by the original event's travel duration so colleagues see you as unavailable during your commute: * **Match original event times** — Blocking events use the same start and end as the original. Travel time is not reflected on the destination calendar. * **Include travel time in all** *(Default)* — Every blocking event starts earlier by the original event's travel duration so travel time also appears as busy. * **Include travel time in "Show as Busy" only** — Only blockers created with the **Show as Busy** option start earlier. Blockers that include full details keep the original event's times. This setting is shared with BusyCal for Mac via iCloud. * **Sync Accounts** — Sync new accounts across your devices using iCloud. On by default. Passwords are not synced, and iCloud Drive must be turned on in the Settings app. * **Sync Calendar Sets** — Sync your calendar sets across your iOS devices. On by default. iCloud Drive must be turned on. ### Manage Tag History[​](#manage-tag-history "Direct link to Manage Tag History") The Tag History holds tags you have used before and tags found on events during sync. If you have none, the screen says **No Tags**. * **New Tag** — Create a tag. Give it a name, and turn on **Use Color** to pick a color for it. * **Your tags** — Tap a tag to rename it or change its color. Swipe left to remove it from the history; this does not remove the tag from events that already carry it. * **Sync Tag List** — Sync your tag list across your devices over iCloud. On by default. Requires iCloud Drive. See [Tags](/docs/busycalios/70662-tags.md) for how tags work. ## Export as CSV[​](#export-as-csv "Direct link to Export as CSV") Export one or more calendars to a CSV spreadsheet file that you can save to Files, AirDrop, email, or open in Excel, Numbers, or Google Sheets. Calendars are listed by account. Tap the ones you want, or use **Select All** and **Deselect All**, then tap **Export** and choose where to send the file. **Export** stays dimmed until you have selected at least one calendar. Every event on the chosen calendars is exported — there are no date range or field options. See [Export Calendars as CSV](/docs/busycalios/export-as-csv.md) for what the file contains. ## Security[​](#security "Direct link to Security") Biometric lock settings. This section appears only on devices with Face ID or Touch ID, and changing these settings requires authentication. * **Require Face ID / Touch ID** — How soon authentication is required after you leave BusyCal: **Immediately** (the default), or after **15 seconds**, **30 seconds**, **1 minute**, **3 minutes**, **5 minutes** or **10 minutes**. * **Protected Calendar Sets** — Which calendar sets are locked. Turn on **All** to require authentication when the app opens, with no events shown until it succeeds, or leave All off and choose individual sets below. None are protected by default. Events from a locked set stay hidden while you view All Calendars until you unlock that set. * **Allow widgets access** — Let widgets and the Watch app show events from protected calendar sets without authentication. On by default. ## Help[​](#help "Direct link to Help") * **Email Diagnostic Logs** — Send diagnostic logs to BusyMac support. You can send your email **With Logs** or **Without Logs**, or choose **Share Logs** to send them another way. Logs may contain your private calendar data; BusyMac support keeps them confidential and uses them only for troubleshooting. * **Subscribe to Mailing List** — Subscribe to the BusyMac mailing list for news and offers. Your email is filled in from one of your accounts where possible, and you can unsubscribe at any time. * **User Guide** — Open this online help. * **Write a Review** — Open the App Store to write a review. Not shown for Setapp subscribers. ## About[​](#about "Direct link to About") Shows the BusyCal version and build number, links to [www.BusyMac.com](http://www.BusyMac.com) and @BusyMac, the Apple Weather attribution, and the copyright notice. On iPhone, About is the last row of the Help section rather than a section of its own. --- # Date and Time Options BusyCal displays dates and times based on what you have specified in the main iOS System Settings app in General > Date & Time. ## 24-Hour Time[​](#ios-24-hour-time "Direct link to 24-Hour Time") To display 24-hour time in a region where it is not the default (e.g., the United States), open the main iOS System Settings app, tap General > Date & Time, and turn 24-Hour Time on. ![24-hour time](https://www.busymac.com/images/bcl3ios-24-hour-time.png) ## Time Zones[​](#ios-time-zones "Direct link to Time Zones") By default, BusyCal schedules a new timed event in the app's active time zone when you do not specify another zone. You can assign a different zone to an individual event either by including it in natural-language entry or by choosing it in the event editor. BusyCal stores the assigned zone and shows the corresponding local time when you view the calendar from another zone. For example, if you live in New York and your time zone settings in Settings > General > Date & Time are set to US/Eastern time, when you create a “Dinner Meeting” at 6:00 PM, it is scheduled in your local time of 6:00 PM Eastern time. If you travel to California and change your time zone settings in Settings > General > Date & Time to US/Pacific time, the “Dinner Meeting” appears in your calendar at 3:00 PM, because 6:00 PM Eastern time is 3:00 PM Pacific time. ### Creating an Event in Another Time Zone[​](#ios-creating-event-another-time-zone "Direct link to Creating an Event in Another Time Zone") When creating an event with natural language, type the zone after its time. BusyCal recognises abbreviations and IANA identifiers, plus the common U.S. names `Eastern`, `Central`, `Mountain`, `Pacific`, `Alaska`, and `Hawaii` in English. You can also add the word `Time`. ``` Client meeting next Monday at 9:45 Eastern ``` See [Natural Language Input](/docs/busycalios/70669-natural-language.md#time-zones) for more examples, including events with different start and end zones. To choose a zone from a menu: 1. Open **Settings > View Preferences > Event Details** and enable **Show Start Time Zone**. 2. Create or edit the event in the full event editor, then tap **Start Time Zone** and select the zone. Compact natural-language entry hides the individual time-zone menus. You can type the zone inline or tap **Show Details** to open the full editor. Enable **Show End Time Zone** only when an event ends in a different zone, such as a flight. **Favorite Time Zones** adds shortcuts to the picker; it does not display the Start Time Zone field by itself. The following options control how events appear when your device's active time zone changes. They are separate from assigning a zone to an individual event: * [Option 1: Enable Time Zone Override in BusyCal](#ios-option-1) * [Option 2: Disable Automatic Time Zone Switching in Settings](#ios-option-2) * [Option 3: Schedule Events In Floating Time](#ios-option-3) Each option is described below. ### Option 1: Enable Time Zone Override in BusyCal[​](#ios-option-1 "Direct link to Option 1: Enable Time Zone Override in BusyCal") BusyCal gives you the option to dynamically display all the events in your calendar in a different time zone from the one configured in the main iOS System Settings app. This is useful when traveling between different time zones. It enables your iOS device’s system clock to be set to a new time zone, while BusyCal continues to display events in your home time zone. To force BusyCal to use a specific time zone regardless of your location, open BusyCal, turn on Settings > Time Zone Override, and select a time zone. (If you also use BusyCal for Mac, this should match the time zone you use there.) note This setting is independent of the similar feature the iOS Calendar app uses, which is configured in iOS Settings > Apps > Calendar > Time Zone Override. ![Time Zone Override in BusyCal for iOS](https://www.busymac.com/images/bcl3ios-time-zone-override.png) ### Option 2: Disable Automatic Time Zone Switching in Settings[​](#ios-option-2 "Direct link to Option 2: Disable Automatic Time Zone Switching in Settings") Your time zone is set in the main iOS System Settings app > General > Date & Time. By default, your iOS device sets its time zone automatically using Location Services. Therefore, when you travel, your time zone settings may change without being aware of it. If your time zone settings in Settings change, all the events in your calendar shift to reflect the new time zone. For example, if your home time zone is US/Eastern time, and your time zone settings are changed to US/Pacific time, all the events in your calendar are displayed 3 hours earlier. You can avoid this time shifting by disabling the automatic Time Zone setting in Settings, as follows: 1. In the main iOS System Settings app, go to General > Date & Time. 2. Turn off “Set Automatically.” 3. Tap Time Zone. 4. Enter a city in your current time zone, and then tap the matching city in the list below. ### Option 3: Schedule Events in Floating Time[​](#ios-option-3 "Direct link to Option 3: Schedule Events in Floating Time") As an alternative to scheduling events for a specific time zone, you can schedule events in Floating time in BusyCal. An event scheduled at 9:00 AM Floating time appears at 9:00 AM in all time zones. To do this, first turn on **Show Start Time Zone** in **Settings > View Preferences > Event Details**. Then open the full event editor, tap **Start Time Zone**, and choose **Floating**. If compact natural-language entry is visible, tap **Show Details** or turn off **Create with Natural Language** in **Settings > New Event Defaults**. Using Floating time may be useful if, for example, you are located in New York (US/Eastern) and are sending a meeting invitation to a client in San Francisco (US/Pacific) for a face-to-face meeting. If you schedule the lunch at noon Eastern and email the invitation to your client in San Francisco, the lunch appointment appears at 9:00 AM on your client’s device. However, if you schedule the appointment for noon Floating time, the event displays at noon regardless of what time zone you are in. Then, when you travel to San Francisco to meet with your client, you’ll both show up for lunch at noon, regardless of what time zone is set on each device. On the other hand, if you’re scheduling a conference call with your client in San Francisco while you are in New York, you should not use Floating time. You’ll want each participant in the conference call to see the event in their local time zone, since a call scheduled for noon Eastern occurs at 9:00 AM Pacific. Warning Floating times are not supported by Exchange or Google Calendar. If you are syncing with Exchange or Google Calendar, you should not use Floating Time events because they may appear hours early or late. See [how to prevent and correct Floating Time differences with Google Calendar](/docs/faqs/google-calendar-limitations.md#floating-time-events). Although the iOS Calendar app doesn’t enable you to create Floating Time events, it does let you view and edit such events created in BusyCal for Mac or iOS. ### Displaying Time Zones in the Event Details View[​](#displaying-time-zones-in-the-event-details-view "Direct link to Displaying Time Zones in the Event Details View") If you want to display or change the time zone for an event, open **Settings > View Preferences > Event Details** and turn on **Show Start Time Zone** and, when needed, **Show End Time Zone**. For a new event, the end uses the start zone unless **Show End Time Zone** is enabled. Enable the end-zone field for events that start and end in different zones, such as flights. Compact natural-language entry hides these menus, but you can still type a zone inline or tap **Show Details** to use the full editor. ### Google Calendar Time Zones[​](#google-calendar-time-zones "Direct link to Google Calendar Time Zones") If you are syncing with Google Calendar and events are appearing in the wrong time zone (such as GMT), you may have a time zone setting misconfigured on Google. Log in to Google Calendar on the web, and verify that the global and per calendar time zones are correct. Here’s where to set the time zones on Google: * **Global setting:** Google Calendar > Settings > General > Your current time zone * **Per-calendar setting:** Google Calendar > Settings > Calendars > *calendar name* > Calendar Time Zone After that, new events you create should have the correct time zone set. Existing events may need to be edited for them to get their time zones updated. --- # Finding Events BusyCal makes it easy to find all matching events throughout your entire calendar. To find all matching events, tap the magnifying glass icon at the top of the screen to display the Search field. Begin typing to find all events whose title, location, notes, or tags match the search term and display them in a list. You can then tap any item in the list to display its Event Details view. ![Search Result](https://downloads.busymac.com/resources/img/busycal-ios/search_result.png) --- # Meetings and Invitations BusyCal enables you to schedule meetings with others by adding attendees to an event and sending a meeting invitation. ## Sending Meeting Invitations[​](#sending-meeting-invitations "Direct link to Sending Meeting Invitations") When you create or edit an event, you can add an attendee by tapping Add Attendee, typing the person’s email address (or a portion of the name or address, if the attendee is in Contacts, after which you can tap the person’s name in the list that appears), and tapping Done. (To enter additional attendees before tapping Done, tap the + (plus) icon; to enter them after tapping done, tap Add Attendee again.) Once you’ve done this, the Done link in the upper-right corner changes to Send. Tapping Send saves the event and sends a meeting invitation to the attendee. ![Add Attendees](https://www.busymac.com/images/bcl3ios-add-attendees.png) ![Attendees Added](https://www.busymac.com/images/bcl3ios-attendees-highlighted.png) Take Note Entering yourself as an attendee or an email that exists under your **Me Card** is deemed invalid. BusyCal will automatically remove such entries to avoid errors during sync. ## Attendee[​](#attendee "Direct link to Attendee") When you receive a meeting invitation via email, BusyCal determines whether you are a valid attendee by comparing the attendee email address in the meeting invitation with the email addresses in your Contacts Me Card. If BusyCal finds a matching email address in your Me Card, it enables you to accept or decline the meeting request. ## Receiving Meeting Invitations[​](#ios-receiving-meeting-invitations "Direct link to Receiving Meeting Invitations") When an attendee receives an invitation, BusyCal displays an Inbox notification at the top of the screen. An attendee using BusyCal can tap the Inbox (next to the gear icon) to display invitations and other notifications. If you use [BusyCal Bookings](/docs/bookings.md), the Inbox also lists each change to your bookings and requests, with the Bookings icon. See [Bookings in BusyCal's Inbox](/docs/bookings/bookings-and-requests.md#inbox). ![Header with Inbox icon](https://www.busymac.com/images/bcl3ios-inbox-header.png) To respond to the meeting request, the attendee can tap Accept, Decline, or Maybe, at which point a reply is sent to the meeting organizer with their status. ![Inbox with meeting invitation](https://www.busymac.com/images/bcl3ios-meeting-invitation.png) ## Cancelling Meetings[​](#cancelling-meetings "Direct link to Cancelling Meetings") As an organizer, you can cancel the meeting at any time. To do this, simply select the meeting and hit Delete. This will send out a cancellation to all of the attendees. ## iCloud Meetings[​](#icloud-meetings "Direct link to iCloud Meetings") When you create a meeting on an iCloud calendar: * **Organizer** — Your Apple ID email address is used as the meeting Organizer. This means anyone you send a meeting invitation to through iCloud receives the meeting request from iCloud with your Apple ID email address as the Organizer. * **Attendee** — If an iCloud user sends you a meeting invitation using your iCloud email address (@icloud.com, @me.com, or @mac.com), the meeting invitation is intercepted by the iCloud server and delivered to you in one of two ways, based on your iCloud Calendar preferences. Log in to your calendar on icloud.com in a web browser on your Mac or PC (unfortunately, you can’t do it directly from an iOS device), tap the gear icon, choose Preferences from the pop-up menu, tap Advanced, and select how you would like to receive meeting invitations from other iCloud users: * **In-app notifications** — iCloud delivers meeting invitations to your [BusyCal inbox](#ios-receiving-meeting-invitations). * **Email to** — iCloud delivers meeting invitations to your email inbox. ![iCloud Calendar Prefs](https://www.busymac.com/images/bcl3mac-icloud-prefs-calendar.png) ## Google Meetings[​](#google-meetings "Direct link to Google Meetings") When you create a meeting on a Google calendar: * **Organizer** — Your Google email address is used as the meeting Organizer. This means anyone you send a meeting invitation to through Google receives the meeting request from Google with your Google email address as the Organizer. * **Attendee** — If a Google user sends you a meeting invitation using your Google email address, the meeting invitation is intercepted by the Google server and may be added to your calendar automatically, depending on your Google Calendar settings. Log in to your calendar on Google in your web browser on a Mac or PC, tap the Gear icon, choose Settings from the pop-up menu, and select whether you want to Automatically add invitations to your calendar. * **Yes** — Invitations are automatically added to your Google primary calendar. You also receive the invitation via email, which you can ignore. * **No** — Invitations are not added to your calendar. You must manually add the invitation received via email to your calendar. ![Automatically add invitations to my calendar](https://www.busymac.com/images/bcl3mac-google-auto-add-invites.png) In both cases above, you still need to accept or decline the meeting invitation once it is added to your calendar. ## Google Meeting Limitations[​](#google-meeting-limitations "Direct link to Google Meeting Limitations") Please be aware of the following when creating meetings on a Google calendar: * For best results, you should create meetings on your *primary* Google calendar. This ensures that the meeting invitations are delivered to attendees by Google and that the attendee responses are properly received and processed by Google. * Attendees cannot add meeting invitations to secondary Google calendars. You can add and accept meeting invitations only on your primary Google calendar. * Meeting invitations are note delivered to attendees if you create the meeting in BusyCal on a secondary Google calendar. If you want to invite attendees to a meeting on a secondary Google calendar, you must create the meeting on Google Calendar in your web browser. * If an attendee receives a meeting invitation via email addressed to their non-Google email address and adds the meeting to their primary Google calendar, the attendee email address in the meeting reply is changed to their Google email address and the meeting reply is sent to the organizer from Google using the attendee’s Google email address. Since the attendee email address in the reply does not match the original attendee email address, the attendee’s status will probably not be recognized and updated by the organizer. ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") If you're experiencing issues with receiving or sending invitations, please take a look at [some common reasons for failure and their solutions](/docs/faqs/meeting-invitation-faqs.md). --- # Syncing BusyCal for iOS with a Mac BusyCal iOS supports syncing with all the different types of cloud accounts just as its macOS counterpart, [BusyCal for macOS](/busycal/). In order to keep BusyCal iOS in-sync with BusyCal macOS, all you need to do is add the same cloud accounts on both devices. Normally you would begin by adding your iCloud account to both BusyCal iOS and BusyCal macOS, and from there on both apps will sync via iCloud automatically in the background. tip Ensure you have added the same accounts to all your devices for automatic, background sync between devices. When you launch BusyCal iOS for the first time, after the initial welcome screen, the accounts screen will automatically display all the accounts you previously added on another device (such as your Mac). This happens seamlessly via iCloud — no manual setup required. Simply select the account and tap **Use Account** to activate it. You do this at any time later as well by opening **BusyCal iOS Settings > Accounts** where it will list you all your accounts. 🔒 **Your credentials are never stored in the cloud or synced automatically.** For security reasons, you must re-enter your login details when prompted the first time BusyCal attempts to sync. If you do not see an account listed automatically, you can add your account manually instead. See the following articles for each type of account BusyCal supports. * [Syncing BusyCal with macOS through iCloud](/docs/busycalios/70675-using-busycal-with-icloud.md) * [Syncing BusyCal with macOS through Google](/docs/busycalios/70676-using-busycal-with-google.md) * [Syncing BusyCal with macOS through Office 365](/docs/busycalios/using-busycalios-with-office-365-microsoft-graph.md) * [Syncing BusyCal with macOS through Exchange](/docs/busycalios/70677-using-busycal-with-exchange.md) * [Syncing BusyCal with macOS through CalDAV](/docs/busycalios/70678-using-busycal-with-caldav.md) * Tasks in BusyCal iOS sync with the built-in Reminders app or other services such as [Todoist](/docs/busycalios/70679-using-busycal-with-todoist.md) and Fastmail. If you have the same accounts set up on the Mac, tasks will sync between iOS and macOS through those services. note BusyCal macOS supports direct syncing over LAN / Wifi with other copies of BusyCal running on the mac. This is **not supported between iOS and macOS**. Instead you must sync via one of your cloud accounts, such as iCloud or Google. --- # Using BusyCal iOS with iCloud iCloud is Apple's free online service for iOS devices, which includes calendar syncing among its many features. BusyCal for iOS can connect to iCloud Calendar directly for syncing calendars across your iPhone and iPad devices and sharing them with others. For details on using BusyCal with iCloud, see the following: * [Syncing with iCloud](#ios-syncing-with-icloud) * [Hosting Calendars on iCloud](#ios-hosting-calendars-on-icloud) * [iCloud Limitations](#ios-icloud-limitations) * [Troubleshooting iCloud](#icloudtroubleshooting) ## Syncing with iCloud[​](#ios-syncing-with-icloud "Direct link to Syncing with iCloud") important Apple requires *all third-party* apps to connect to iCloud using a special **app-specific password**, which protects your real password. Before adding your iCloud account to BusyCal, you must first generate an app-specific password (explained below). This extra step ensures security while allowing BusyCal to sync with your iCloud data. [Learn how to generate an app-specific password](https://support.apple.com/HT204397). BusyCal can use iCloud to sync calendar data across all your devices. note BusyCal supports multiple iCloud accounts of the same type. Add each Apple ID as a separate iCloud account in **Settings > Accounts** if you need to view calendars from more than one iCloud account side by side. To sync BusyCal with iCloud, do the following: 1. **First and foremost**, navigate to <https://support.apple.com/HT204397> using your browser and follow instructions on generating an app-specific password for your iCloud account (see [demo video below](#app-specific-password)). If you have already performed this step for some other app in the past or for another device running BusyCal, you may re-use the same password on this device. App-specific passwords can be re-used multiple times in several apps, if desired. After you have generated an app-specific password, save it some place secure in order to re-use it on another device running BusyCal. When unsure, generate a new one and copy / paste it somewhere secure. Best Practices Over the years we've gathered some best practices: * If you have a `@mac.com` email address, replace it with `@icloud.com` instead when using with BusyCal ([learn why](/docs/faqs/mac-domain-icloud-sync.md)) * iCloud allows one to generate aliases for their primary iCloud email addresses. When using it with BusyCal, you must only use your primary iCloud email address to login, aliases do not work. * Your device *must* be configured to **Set time and date automatically** under **System Settings > General > Date & Time** otherwise the password will superficially fail to work without an obvious reason. 2. Next, open **BusyCal > Settings > Accounts** 3. Tap **Add Account…**, the first row at the top of the Accounts screen. 4. Tap the **Connect** button on the right side of the **iCloud** row 5. Enter your iCloud email address and the app-specific password generated in `step 1` above and click **OK**. ![Add Account](https://downloads.busymac.com/resources/img/busycal-ios/screenshot-welcome-accounts.png) #### Generating App-Specific Password[​](#app-specific-password "Direct link to Generating App-Specific Password") The following video demonstrates how to generate and use an app-specific password for iCloud. 1. Log into your iCloud account: <https://account.apple.com/> 2. Generate an app specific password 3. Copy the password and use in BusyCal iOS. Preferably, save this password securely for future use. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycal-ios/videos/icloud_app_specific_pass_web.webm) ## Hosting Calendars on iCloud[​](#ios-hosting-calendars-on-icloud "Direct link to Hosting Calendars on iCloud") iCloud functions as a CalDAV server that hosts your calendars and syncs them with client apps. BusyCal (for both iOS and Mac) and the built-in Calendar app on iOS and macOS are CalDAV clients that sync with iCloud. This means any data you create on an iCloud calendar using the built-in Calendar app on iOS or macOS will sync to BusyCal through iCloud, and vice versa. As long as you are hosting all your calendars on iCloud and have all client apps configured to sync with the same iCloud account, all your calendar data will remain in sync. ### Calendars Must Be Hosted on iCloud[​](#calendars-must-be-hosted-on-icloud "Direct link to Calendars Must Be Hosted on iCloud") All calendars you want to sync between your iOS devices, Macs, and other users must be hosted on iCloud. You cannot sync calendars from other sources (Google, Exchange, etc.) to iCloud. ## Connecting to iCloud with an App-Specific Password[​](#ios-connecting-to-icloud-with-an-app-specific-password "Direct link to Connecting to iCloud with an App-Specific Password") Apple requires all third-party apps that sync with iCloud (like BusyCal) to use app-specific passwords. An app-specific password is essentially a custom password that is different than your standard iCloud password. Only Apple's apps (Mail, Calendar and Contacts) can use your standard iCloud password. All other apps must use an app-specific password to connect with your iCloud account. Please read these [instructions for setting up an iCloud App-Specific password for BusyCal](/docs/faqs/71150-unable-to-log-into-icloud-i-m-seeing-password-incorrect-prompts.md). ## Sharing Calendars with Others through iCloud[​](#ios-sharing-calendars-with-others-through-icloud "Direct link to Sharing Calendars with Others through iCloud") iCloud enables you to share calendars with other iCloud users. Once each user has configured BusyCal to sync with their personal iCloud account, you can share calendars with each other through iCloud. When a calendar is shared through iCloud, events can be edited by any user and changes sync between them. However, you cannot set up a shared calendar within BusyCal for iOS; you must do this in BusyCal for Mac, on the iCloud website, or in the Calendar app on iOS or macOS. For details, see [Sharing Calendars with Others through iCloud](/docs/busycal/70630-using-busycal-with-icloud.md#sharing) in the BusyCal for Mac help. ### Notifications of Changes to Shared Calendars[​](#notifications-of-changes-to-shared-calendars "Direct link to Notifications of Changes to Shared Calendars") When sharing calendars with others, you can choose whether changes to that calendar made by other people appear in your Inbox. To do so, go to Settings > Calendars and tap the "i" icon next to the calendar name. Then turn Notify Of Changes on or off. ![Notifications](https://www.busymac.com/images/bcl3ios-edit-calendar-notifications.png) Tap the Inbox (next to the gear icon) to display your notifications. ![Header](https://www.busymac.com/images/bcl3ios-inbox-header.png) Tap OK to dismiss each message in the Inbox. Or, tap Clear All to dismiss all messages with a single tap. ![Inbox](https://www.busymac.com/images/bcl3ios-inbox.png) ## iCloud Limitations[​](#ios-icloud-limitations "Direct link to iCloud Limitations") iCloud places certain limits on calendar data. ### Quota Limitations[​](#ios-quota-limitations "Direct link to Quota Limitations") iCloud limits the amount of data you can sync with BusyCal, as follows: Calendars and Reminders * Total number of calendars, events, and reminders: 50,000\* * Maximum combined number of calendars and reminder lists you can have: 100\* * Maximum size of all calendar and reminder data (not including attachments): 1GB\* * Maximum number of characters in a reminder title: 1,000\* * Maximum size of a calendar event including attachments: 20MB * Maximum number of attachments per event: 20 * Maximum number of attendees you can invite to an event: 300 * Maximum number of people with whom you can share a private calendar: 100 \*If you have upgraded your iCloud reminders on a device running iOS 13, iPadOS, or macOS Catalina or later, these limits on reminders do not apply. Learn more about the Reminders upgrade process. For more information, see [iCloud: Limits for Contacts, Calendars and Reminders](https://support.apple.com/en-us/HT202158). ### Calendar Limitations[​](#calendar-limitations "Direct link to Calendar Limitations") BusyCal syncs all its data types (events, tasks, tags, etc.) with iCloud. If you are syncing BusyCal on multiple devices with the same iCloud account, all these data types should sync seamlessly. However, there are some limitations to be aware of when syncing these data types with other apps (such as Calendar for iOS or macOS) through iCloud: * Tags applied to events in BusyCal sync with other copies of BusyCal through iCloud, but do not appear in Calendar or other clients. * Tasks in BusyCal sync with the Reminders app on iOS and macOS through iCloud. They do not appear in Calendar for iOS or macOS. ## ⚠️ Troubleshooting[​](#icloudtroubleshooting "Direct link to ⚠️ Troubleshooting") ### Account not Syncing[​](#account-not-syncing "Direct link to Account not Syncing") If iCloud fails to connect or displays cryptic error codes like `-1012`, it may be due to an incorrect or expired **app-specific password**. This can happen for various reasons, especially if you recently reset your main iCloud password—doing so automatically revokes all existing app-specific passwords. The most reliable **solution** is to remove your iCloud account from BusyCal and set it up again by following [these steps](#ios-syncing-with-icloud). Please check tips under the **Best Practices** section as it could be due to one of the things mentioned in that section. #### To remove and re-add your account:[​](#remove-readd "Direct link to To remove and re-add your account:") 1. Open **BusyCal Settings > Accounts**. 2. Select your iCloud account and tap `Delete Account` to remove it. 3. Tap `Add Account` in the **Accounts** screen to add a new account and follow [these steps](#ios-syncing-with-icloud). ### 🛠️ Duplicate Tasks Appearing[​](#️-duplicate-tasks-appearing "Direct link to 🛠️ Duplicate Tasks Appearing") Apple migrated tasks from iCloud Calendars to the dedicated **Reminders** app as part of an upgrade, [explained here](/docs/faqs/112990-reminders-in-ios-13-and-macos-catalina-drops-support-for-caldav.md). This upgrade is triggered when launching the **Reminders** app and tapping the **Upgrade** button. If you did **not** complete the upgrade, your task lists may appear in two places: 1. **Reminders app** 2. **iCloud CalDAV server** Since both still reside on iCloud, adding **both** Reminders and your iCloud account to BusyCal will result in duplicate tasks, as BusyCal will fetch the same data from both sources. To remove duplicates, follow these steps: 1. Open **BusyCal Settings > Accounts**. 2. Select **Reminders** from the list. 3. Tap the delete button to delete the **Reminders** account. This ensures that tasks sync **only** from your iCloud account, preventing duplicates. --- # Using BusyCal iOS with Google Calendar Google Calendar is a free service for Google users that lets you sync and share calendars. BusyCal for iOS can connect to Google Calendar, using it to sync calendars across your iPhone and iPad devices. ## Syncing with Google Calendar[​](#ios-syncing-with-google-calendar "Direct link to Syncing with Google Calendar") BusyCal can use Google Calendar to sync calendar data across your iOS devices. note BusyCal supports multiple Google accounts of the same type. Add each Google account separately in **Settings > Accounts** to view calendars from multiple Google accounts side by side. ### How Google Syncing Works[​](#how-google-syncing-works "Direct link to How Google Syncing Works") Google Calendar provides CalDAV access for calendar sync. BusyCal (for both iOS and Mac) and the built-in Calendar app on iOS and macOS are CalDAV clients that sync with Google. BusyCal syncs Google Task Lists directly using Google Tasks APIs (not CalDAV Tasks). Calendars hosted on Google can sync between BusyCal and other apps connected to the same Google account. Each app displays the Google features it supports. See [Google Event Colors](#google-event-colors) for details about color syncing. note BusyCal also syncs with Google Tasks directly. However Google Tasks do have some limitations when it comes to syncing with third-party apps, as not all details sync back and forth. [Learn more here](#calendar-limitations). ### Connecting to Google[​](#connecting-to-google "Direct link to Connecting to Google") To add your Google account to BusyCal for iOS: 1. Open BusyCal and tap the gear icon in the upper-left corner to open **Settings**. 2. Tap **Accounts**. 3. Tap **Add Account…**. It is the first row at the top of the Accounts screen. 4. On the Add Account screen, find the **Google** row and tap the **Connect** button on its right side. Tapping the row itself does nothing; only the **Connect** button starts the setup. 5. Enter your Google email address and tap **Add** in the upper-right corner. 6. BusyCal asks for permission to use google.com to sign in. Tap **Continue**. 7. Sign in to Google. Choose your account or enter your Google email address and password. If your account uses two-step verification, complete that step too. 8. On Google's permissions screen, allow everything BusyCal asks for. If the screen shows checkboxes, scroll down and turn on every one of them (or tap **Select all**), then tap **Continue**. Your Google account now appears under **Active** on the Accounts screen and BusyCal begins syncing. note If BusyCal shows a message saying you are already connected to Google with that email address, the account has already been added on this device. Look for it under **Disabled** or **Added on Another Device** on the Accounts screen and tap it to enable it or use it, rather than adding it again. ## Syncing with iCloud and Google Calendar[​](#ios-syncing-with-icloud-and-google-calendar "Direct link to Syncing with iCloud and Google Calendar") BusyCal can sync with both iCloud and Google Calendar. But you cannot sync iCloud calendars with Google Calendar or vice versa. Instead, you can host some calendars on iCloud and some on Google, and configure BusyCal to sync with both services. * If you want to [share calendars with other iCloud users](/docs/busycalios/70675-using-busycal-with-icloud.md#ios-sharing-calendars-with-others-through-icloud), you must [host the calendars on iCloud](/docs/busycalios/70675-using-busycal-with-icloud.md#ios-hosting-calendars-on-icloud). * If you want to [share calendars with other Google users](#ios-sharing-calendars-with-others-through-google), you must [host the calendars on Google](#ios-hosting-calendars-on-google). * If you want to sync a Mac with iCloud or Google, see [Syncing BusyCal for iOS with a Mac](/docs/busycalios/70674-syncing-busycal-for-ios-with-a-mac.md). ## Hosting Calendars on Google[​](#ios-hosting-calendars-on-google "Direct link to Hosting Calendars on Google") Google Calendar provides CalDAV access for calendar sync. BusyCal and the built-in Calendar app on iOS and macOS sync Google calendars through CalDAV. BusyCal syncs Google Task Lists directly using Google Tasks APIs (not CalDAV Tasks). Calendars hosted on Google can sync between BusyCal and other apps connected to the same Google account. Each app displays the Google features it supports. ### Calendars Must Be Hosted on Google Calendar[​](#ios-calendars-must-be-hosted-on-google-calendar "Direct link to Calendars Must Be Hosted on Google Calendar") All calendars you want to sync between your iOS devices, Macs, and other users must be hosted on Google Calendar. You cannot sync calendars from other sources (iCloud, Exchange, etc.) to Google. ## Sharing Calendars with Others through Google[​](#ios-sharing-calendars-with-others-through-google "Direct link to Sharing Calendars with Others through Google") Google Calendar enables you to share calendars with other Google users. Once each user has configured BusyCal to sync with their personal Google account, you can share calendars with each other through Google. When a calendar is shared through Google, events can be edited by any user and changes sync between them. However, you cannot set up a shared calendar within BusyCal for iOS; you must set this up using BusyCal for Mac (or another Google Calendar client). For details, see [Sharing Calendars with Others through Google](/docs/busycal/70636-using-busycal-with-google.md#sharing) in the BusyCal for Mac help. ### Notifications of Changes to Shared Calendars[​](#notifications-of-changes-to-shared-calendars "Direct link to Notifications of Changes to Shared Calendars") When sharing calendars with others, you can choose whether changes to that calendar made by other people appear in your Inbox. To do so, go to Settings > Calendars and tap the "i" icon next to the calendar name. Then turn Notify Of Changes on or off. ![Notifications Settings](https://www.busymac.com/images/bcl3ios-edit-calendar-notifications.png) Tap the Inbox (next to the gear icon) to display your notifications. ![Header showing Inbox](https://www.busymac.com/images/bcl3ios-inbox-header.png) Tap OK to dismiss each message in the Inbox. Or, tap Clear All to dismiss all messages with a single tap. ![Inbox Contents](https://www.busymac.com/images/bcl3ios-inbox.png) ## Google Event Colors[​](#google-event-colors "Direct link to Google Event Colors") Beta availability Support for Google's expanded event palette and custom color labels is currently being tested in beta. Earlier BusyCal versions support Google's standard event colors. BusyCal displays the event colors and label names that Google provides for each calendar. For an event you can edit, tap **Color** in Event Details and choose a color. Choose **None** to clear the event's Google color. If the field is hidden, enable **Show Color** under **Settings > View Preferences > Event Details**. If Google does not provide a name, BusyCal shows a localized color description. These display names do not rename Google's labels. Event color changes sync between BusyCal and Google Calendar in both directions. Existing Google color assignments are preserved, although a shade may update to match Google's current color definition. Create, rename, recolor, or delete Google color labels in Google Calendar. BusyCal lets you choose an existing label for an event; it does not edit Google's label definitions. Available labels depend on the event's Google calendar. tip Label names and palette changes are refreshed periodically. After changing them in Google Calendar, open **Settings** in BusyCal and tap **Sync Now** to check for updates immediately. Google color labels are separate from BusyCal **Tags** and local **Color Labels**. A BusyCal Color Label or colored tag can still affect the event's appearance after its Google color is cleared. Those BusyCal features do not create or rename Google color labels. See [Tags and event colors](/docs/busycalios/70662-tags.md#event-colors). ## Google Limitations[​](#limitations "Direct link to Google Limitations") Google places certain limits on calendar data, which may affect how you use BusyCal or which service you choose for syncing calendars. The following limitations exist when syncing BusyCal with Google Calendar. ### Calendar Limitations[​](#calendar-limitations "Direct link to Calendar Limitations") * Syncing Google Task Lists is supported; however, only the following task properties sync with Google: **title**, **due date**, and **notes**. Unfortunately, Google does not allow third-party apps to sync additional properties such as **due times**, **recurrence**, **alarms**, or **priorities**. * BusyCal, however, lets you set **due times, durations, and other properties**, and these will sync across your devices running BusyCal via our [Extended Sync](/docs/busycal/144591-syncing-extended-task-properties.md) implementation. * Keep in mind that these **extended properties will not appear in Google Calendar** itself due to its current limitations. * Separate timezones cannot be set for start / end dates from BusyCal. Use Google Calendar to enable this per event manually. * Graphics are not supported. * URLs do not sync by Google Calendar so this field is hidden within BusyCal. * Attachments are not supported. * Journals and Stickies sync between BusyCal clients through Google, but they do not appear on Google Calendar in a web browser. * You cannot create new calendars from within BusyCal. You must create calendars on Google. * Floating Time events are not supported and may appear hours early or late in Google Calendar. See [how to prevent and correct Floating Time differences](/docs/faqs/google-calendar-limitations.md#floating-time-events). * Google event colors and label names sync as described in [Google Event Colors](#google-event-colors). Create or change the label definitions in Google Calendar; BusyCal's Tags and local Color Labels are separate. For protocol details, see [Google Calendar CalDAV guide](https://developers.google.com/calendar/caldav/v2/guide) and [Google Tasks API reference](https://developers.google.com/workspace/tasks/reference/rest/v1/tasks). ### Alarms[​](#alarms "Direct link to Alarms") * Email alarms are delivered by Google and not by BusyCal. This prevents duplicate email alarms from being delivered by both Google and BusyCal. * SMS alarms are not supported. ### Meetings[​](#meetings "Direct link to Meetings") * For best results, you should create meetings on your primary Google calendar. This will ensure that the meeting invitations are delivered to attendees by Google and that the attendee responses are properly received and processed by Google. * Attendees cannot add meeting invitations to secondary Google calendars. You can add and accept meeting invitations only on your primary Google calendar. * Meeting invitations will not be delivered to attendees if you create the meeting in BusyCal on a secondary Google calendar. If you want to invite attendees to a meeting on a secondary Google calendar, you must create the meeting on Google Calendar in your web browser. * If an attendee receives a meeting invitation via email addressed to their non-Google email address and adds the meeting to their Google primary calendar, the attendee email address in the meeting reply is changed to their Google email address and the meeting reply is sent to the organizer from Google using the attendee's Google email address. Since the attendee email address in the reply does not match the original attendee email address, the attendee's status will probably not be recognized and updated by the organizer. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") If your Google Calendar account won't sync or connect to BusyCal for iOS, there are several common causes and solutions to resolve these synchronization issues. ### Verify System Date & Time Settings[​](#verify-system-date--time-settings "Direct link to Verify System Date & Time Settings") Google Calendar authentication will fail if your device's date and time don't match the actual current time. This is a security requirement that prevents connection issues: 1. Open **Settings > General > Date & Time** on your iOS device 2. Ensure **Set Automatically** is enabled 3. If the setting is already enabled, try disabling and re-enabling it to force a time sync 4. Close and reopen BusyCal, then attempt to reconnect your Google account ### Fix Missing or Insufficient Permissions[​](#fix-missing-or-insufficient-permissions "Direct link to Fix Missing or Insufficient Permissions") Google Calendar sync failures often occur when BusyCal doesn't have the required permissions to access your calendar data. BusyCal needs full read/write access to function as a complete calendar replacement. **To resolve permission issues:** 1. **Remove the existing account:** * Open **BusyCal > Settings > Accounts** * Tap your Google account in the list * Tap **Delete Account** and confirm the removal 2. **Re-add the account with correct permissions:** * Tap **Add Account…** at the top of the Accounts screen * Tap the **Connect** button on the right side of the **Google** row * Enter your Google email address, tap **Add**, then tap **Continue** and sign in to Google 3. **Grant all required permissions:** * When Google's permissions screen appears, turn on every checkbox it shows, or tap **Select all** * Do not leave any permission unchecked, as this will break the sync functionality * Tap **Continue** to finish signing in important **Critical:** You must grant ALL permissions when prompted by Google. Unchecking any permission will prevent BusyCal from syncing properly with your Google Calendar. ### Additional Troubleshooting Steps[​](#additional-troubleshooting-steps "Direct link to Additional Troubleshooting Steps") **For Google Workspace (GSuite) accounts:** * Contact your administrator to ensure third-party apps are not blocked * Verify BusyCal is allowed in Google Workspace app access controls and calendar/task scopes are not restricted by policy **For persistent connection issues:** * Clear Safari cache: **Settings > Safari > Clear History and Website Data** * Try using a different network connection (switch from Wi-Fi to cellular or vice versa) * Ensure your internet connection is stable during the authentication process * Restart your iOS device and try reconnecting **If sync continues to fail:** * Check Google's service status at [status.google.com](https://status.google.com) * Wait 15-30 minutes and try reconnecting, as Google may temporarily rate-limit connections * Try removing and reinstalling BusyCal for iOS if the issue persists * Ensure you're running the latest version of BusyCal from the App Store --- # Using BusyCal with Exchange Microsoft Exchange servers provide a number of online services, among which is syncing and sharing calendars. BusyCal can connect to Exchange servers, using them to sync calendars across your devices and share them with others. ## Syncing with Exchange[​](#ios-syncing-with-exchange "Direct link to Syncing with Exchange") BusyCal can use Exchange servers to sync calendar data across your devices. note BusyCal supports multiple Exchange accounts of the same type. Add each Exchange account separately in **Settings > Accounts** if you need to view calendars from more than one Exchange system. ### How Exchange Syncing Works[​](#how-exchange-syncing-works "Direct link to How Exchange Syncing Works") Exchange is a server that syncs with client apps. BusyCal (for both iOS and Mac) and the built-in Calendar app on iOS and macOS are clients that sync with Exchange. This means any data you enter into the built-in Calendar app on iOS or macOS will sync to BusyCal through Exchange, and vice versa. As long as you have all client apps configured to sync with the same Exchange account, all your calendar and contact data remain in sync. ### Connecting to Exchange[​](#connecting-to-exchange "Direct link to Connecting to Exchange") To sync BusyCal with Exchange, do the following: 1. Go to Settings > Accounts. 2. Tap Add Account. 3. Tap the Connect button next to Office 365 or Exchange. 4. Enter your email address and password and tap Add. 5. The autodiscovery process begins and you may be prompted to enter additional login info. Once the process is complete, BusyCal syncs with Exchange. ![Connect with Exchange](https://www.busymac.com/images/bcl3ios-add-account-list-exchange.png) ## Hosting Calendars on Exchange[​](#ios-hosting-calendars-on-exchange "Direct link to Hosting Calendars on Exchange") Exchange is a server that hosts your calendars and syncs them with client apps. BusyCal, Outlook, and the built-in Calendar app on iOS and macOS are all client apps that sync with Exchange. This means any data you enter into one client app syncs to all other client apps through Exchange. As long as you have all client apps configured to sync with the same Exchange account, all your calendar and contact data remain in sync. ### Calendars Must Be Hosted on Exchange[​](#calendars-must-be-hosted-on-exchange "Direct link to Calendars Must Be Hosted on Exchange") All calendars you want to sync between your iOS devices, Macs, and other users must be hosted on Exchange. You cannot sync calendars from other sources (iCloud, Google, etc.) to Exchange. ## Sharing Calendars with Others through Exchange[​](#ios-sharing-calendars-with-others-through-exchange "Direct link to Sharing Calendars with Others through Exchange") Exchange enables you to share calendars with other Exchange users. Once each user has configured BusyCal to sync with their personal Exchange account, you can share calendars with each other through Exchange. When a calendar is shared through Exchange, events can be edited by any user and changes sync between them. You can share a calendar through Exchange with other Exchange users in your organization, but you must set this up using BusyCal for Mac (or another Exchange client); you can’t enable sharing in BusyCal for iOS. For details, see [Sharing Calendars with Others through Exchange](/docs/busycal/70642-using-busycal-with-exchange-office-365.md#sharing) in the BusyCal for Mac help. ## Subscribe to Shared Calendars[​](#subscribe-to-shared-calendars "Direct link to Subscribe to Shared Calendars") BusyCal supports subscribing to secondary calendars shared to you by other Exchange users. When someone shares a calendar with you, they are usually presented with four options: * Can view when I'm busy * Can view titles and locations * Can view all details * Can edit In order for BusyCal to be able to see these shared calendars, they must give you one of the last two available options. *Can view all details* will give you **read-only** access to their calendar, while *Can edit* will give you **read / write** access. If someone has shared calendars with you through Exchange, you must configure your Exchange account settings to show the shared calendars, as follows: 1. Tap on Settings in BusyCal, then on Accounts. Tap on your Exchange / Office 365 account. 2. Tap on **Manage Delegates** (or **Manage Sharing**) 3. Enter the Exchange email address of the user who is sharing calendars with you. If found, the user name will be listed. Tap on the search result to add the delegate. 4. Now tap Back until you are on the main Settings screen again. Tap **Sync Now** 5. Allow sync to complete in order to fetch an updated list of calendars. Next, tap on **Calendars**. 6. Scroll down to your Exchange account and tap on the shared calendars to subscribe to them. ### Public Calendars[​](#public-calendars "Direct link to Public Calendars") Exchange supports public calendars that can be shared with all users in an organization. Public calendars are created by your network administrator. To subscribe to a public calendar: 1. Tap on Settings in BusyCal, then on Accounts. Tap on your Exchange / Office 365 account. 2. Tap on **Public Folders**. Allow it to refresh. 3. Tap on the folder you wish to subscribe to. Close settings when done. If you want to unsubscribe from a public calendar, repeat the process and tap on the already subscribed calendar to unsubscribe. ### Notifications of Changes to Shared Calendars[​](#notifications-of-changes-to-shared-calendars "Direct link to Notifications of Changes to Shared Calendars") When sharing calendars with others, you can choose whether changes to that calendar made by other people appear in your Inbox. To do so, go to Settings > Calendars and tap the “i” icon next to the calendar name. Then turn Notify Of Changes on or off. ![Settings - Notifications](https://www.busymac.com/images/bcl3ios-edit-calendar-notifications.png) Tap the Inbox (next to the gear icon) to display your notifications. ![Header with Inbox](https://www.busymac.com/images/bcl3ios-inbox-header.png) Tap OK to dismiss each message in the Inbox. Or, tap Clear All to dismiss all messages with a single tap. ![Inbox Notification](https://www.busymac.com/images/bcl3ios-inbox.png) ## Exchange Limitations[​](#ios-exchange-limitations "Direct link to Exchange Limitations") Exchange places a number of limits on calendar data, which restrict the range of options you can use in BusyCal. ### Exchange Server Versions Supported[​](#exchange-server-versions-supported "Direct link to Exchange Server Versions Supported") BusyCal supports Exchange 2007 SP3 and later, but BusyMac recommends Exchange 2013, which is more reliable than older versions. ### Outlook.com and Personal Accounts[​](#outlookcom-and-personal-accounts "Direct link to Outlook.com and Personal Accounts") This legacy Exchange/EWS connection type does not support outlook.com or Microsoft 365 personal/home accounts. For those accounts, use **Office 365 (Microsoft Graph)** instead. ### Push[​](#push "Direct link to Push") Push is not supported in Exchange 2007. Push is supported only in Exchange 2010 or later. ### Sharing Secondary Calendars[​](#sharing-secondary-calendars "Direct link to Sharing Secondary Calendars") To share a secondary calendar with someone, you must also share your primary calendar with them, with at least Availability access. Once you’ve granted someone Availability access or higher to your primary calendar, you can share secondary calendars with them. ### Free/Busy Availability Viewer[​](#freebusy-availability-viewer "Direct link to Free/Busy Availability Viewer") Only events on your primary calendar affect your availability. Events stored on secondary calendars do not affect your availability and do not appear in the [Availability Viewer](/docs/busycal/70616-free-busy-availability-viewer.md) as blocking your free time. ### Alarms[​](#alarms "Direct link to Alarms") * Exchange allows only one alarm per event. * Exchange does not allow Alarms to trigger after an event starts. If you create an alarm that triggers after the start of an event, it is converted to an “At start” alarm after syncing with Exchange. ### Repeating Events[​](#repeating-events "Direct link to Repeating Events") * If you create a repeating event with a recurrence rule that is illegal on Exchange, it is modified during syncing to be compatible with Exchange and your local copy is updated to match Exchange. * Exchange doesn’t allow detached events (or alarms) to overlap the next/previous occurrence of the event. ### WebDAV Subscriptions[​](#webdav-subscriptions "Direct link to WebDAV Subscriptions") iCloud enables you to [sync WebDAV Subscriptions between your Mac and iOS device](/docs/busycal/70629-syncing-calendar-subscriptions-with-an-ios-device.md) by setting the Location of the feed to iCloud. Exchange does not support this feature. --- # Using BusyCal iOS with CalDAV CalDAV is an industry standard for calendar servers. BusyCal for iOS can connect to CalDAV servers, using them to sync calendars across your iPhone and iPad devices. ## Syncing with a CalDAV Server[​](#ios-syncing-with-a-caldav-server "Direct link to Syncing with a CalDAV Server") BusyCal can use CalDAV to sync calendar data across your iOS devices. ### How CalDAV Syncing Works[​](#how-caldav-syncing-works "Direct link to How CalDAV Syncing Works") BusyCal (for both iOS and Mac) and the built-in Calendar app on iOS and macOS are CalDAV clients that sync with a CalDAV server. This means any data you enter into the built-in Calendar app on iOS or macOS will sync to BusyCal through the server, and vice versa. As long as you have all client apps configured to sync with the same server, all your calendar data remain in sync. ### Connect to a CalDAV Server[​](#connect-to-a-caldav-server "Direct link to Connect to a CalDAV Server") To sync BusyCal with a CalDAV server, do the following: 1. Go to Settings > Accounts. 2. Tap Add Account. 3. Tap the Connect button next to CalDAV. 4. Enter your username and password, and the server address, and tap Add. ![Connect with CalDAV](https://www.busymac.com/images/bcl3ios-add-account-list-caldav.png) ## Hosting Calendars on a CalDAV Server[​](#ios-hosting-calendars-on-a-caldav-server "Direct link to Hosting Calendars on a CalDAV Server") If you want to sync calendars between an iOS device and a Mac or share calendars with others without having to rely on a cloud syncing service like iCloud or Google, you can host your own CalDAV server on your local area network. BusyCal (for both iOS and Mac) and the built-in Calendar app on iOS and macOS are all client apps that sync with CalDAV servers. This means any data you enter into one client app will sync to all other client apps through the server. As long as you have all client apps configured to sync with the same server, all your calendar data remains in sync. ### Calendars Must Be Hosted on Server[​](#calendars-must-be-hosted-on-server "Direct link to Calendars Must Be Hosted on Server") All calendars you want to sync between your iOS devices, Macs, and other users, must be hosted on the CalDAV server. You cannot sync calendars from other sources (iCloud, Google, Exchange, etc.) to the server. ### Self-Hosted CalDAV[​](#self-hosted-caldav "Direct link to Self-Hosted CalDAV") If you prefer not to use a cloud service, you can run a self-hosted CalDAV server on your own infrastructure. ### Other CalDAV Servers[​](#other-caldav-servers "Direct link to Other CalDAV Servers") You may want to consider third-party servers such as Kerio or Zimbra. Both support CalDAV and are fully compatible with BusyCal. * [Kerio Connect](https://www.kerio.com/products/kerio-connect) * [Zimbra Collaboration](https://www.zimbra.com/products/zimbra-collaboration/features) There are also many service providers that provide Kerio and Zimbra hosting, including: * [GetSync'd Hosted Kerio](https://www.getsyncd.com/index.php) * [zMailCloud - Zimbra hosting](https://zmailcloud.com) BusyCal enables you to share calendars with other users who are syncing with the same CalDAV server. Once each user has configured BusyCal to sync with their personal account on the CalDAV server, you can share calendars with each other. When a calendar is shared, events can be edited by any user, and changes sync between them. You can share a calendar through CalDAV with other CalDAV users in your organization, but you must set this up using BusyCal for Mac (or another CalDAV client); you can't enable sharing in BusyCal for iOS. For details, see Sharing Calendars with Others through CalDAV in the BusyCal for Mac help. Notifications of Changes to Shared Calendars When sharing calendars with others, you can choose whether changes to that calendar made by other people appear in your Inbox. To do so, go to Settings > Calendars and tap the "i" icon next to the calendar name. Then turn Notify Of Changes on or off. ![Calendar Settings - Notifications](https://www.busymac.com/images/bcl3ios-edit-calendar-notifications.png) Tap the Inbox (next to the gear icon) to display your notifications. ![One item in Inbox](https://www.busymac.com/images/bcl3ios-inbox-header.png) Tap OK to dismiss each message in the Inbox. Or, tap Clear All to dismiss all messages with a single tap. ![Notification in Inbox](https://www.busymac.com/images/bcl3ios-inbox.png) --- # Using BusyCal iOS with Todoist [Todoist](https://www.todoist.com) is a popular task management service by Doist. BusyCal for iOS can connect to Todoist so you can manage your task lists and tasks alongside your calendar events. Changes made in BusyCal will sync to Todoist (and vice versa). ## Syncing with Todoist[​](#syncing "Direct link to Syncing with Todoist") To sync BusyCal for iOS with Todoist, do the following: note BusyCal currently supports a single Todoist account. You can add one Todoist account to BusyCal at a time. 1. Open **BusyCal > Settings > Accounts**. 2. Tap **Add Account**. 3. Tap **Connect** next to **Todoist**. 4. Sign in to Todoist and approve BusyCal when prompted. BusyCal begins syncing your Todoist projects and tasks. ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") ### Update BusyCal first if Todoist sync reports errors[​](#update-busycal-first "Direct link to Update BusyCal first if Todoist sync reports errors") If Todoist sync shows errors such as **Failed to get content**, API errors, connectivity errors, metadata errors, or a red exclamation point next to the Todoist account, make sure you are running the very latest version of BusyCal before trying deeper troubleshooting. Todoist has changed and retired parts of its APIs over time. Older BusyCal builds may no longer be able to communicate with Todoist reliably, even if they worked previously. In some cases, BusyCal versions from only a few months ago may not work with Todoist's current APIs. To update BusyCal for iOS: 1. Open the **App Store**. 2. Search for **BusyCal**. 3. Install the latest update if one is available. 4. Force-quit and reopen BusyCal. 5. Try syncing Todoist again. ### Todoist login shows a blank screen[​](#todoist-blank-login "Direct link to Todoist login shows a blank screen") BusyCal for iOS connects to Todoist using a web sign-in flow. If the Todoist login step shows a blank screen, try the following: 1. Make sure **Safari** is set as your default browser in iOS/iPadOS. (See Apple’s instructions: <https://support.apple.com/en-us/104975>) 2. Open **Safari** and sign in at <https://todoist.com> to confirm the login page loads normally, then sign out. 3. Go back to BusyCal and try connecting again: **BusyCal > Settings > Accounts > Add Account > Connect** (next to **Todoist**). 4. If it still shows a blank screen, temporarily disable anything that can filter or rewrite web traffic, then try again: <!-- --> * **VPN** apps * **DNS / web filters** (for example: NextDNS-style profiles) * **Ad blockers / content blockers** (Safari extensions) * **iCloud Private Relay** (if enabled) 5. Try on a different network (switch Wi‑Fi networks, or try cellular data). 6. Force-quit BusyCal, reopen it, and try again. If needed, restart the iPhone/iPad and retry. 7. Check iOS restrictions and Safari settings that can break web sign-in: <!-- --> * **Screen Time / Content & Privacy Restrictions** (or a work/school **MDM** profile) * **Settings app > Safari**: JavaScript enabled, and not blocking all cookies 8. As a last resort, clear Safari website data and retry (this will sign you out of websites): **Settings app > Safari > Clear History and Website Data**. If it still comes up blank, please contact support and include: * Your iOS/iPadOS version and BusyCal version (**BusyCal > Settings > About**) * Whether Todoist login works normally in Safari on the same device * Whether you were using a VPN / Private Relay / content blocker when the issue occurred * Whether Screen Time / MDM restrictions are enabled on the device * A screenshot of the blank screen * BusyCal logs (go to **BusyCal > Settings > Help > Email Support** and include logs) Quota Limits Todoist enforces request limits. BusyCal’s Todoist sync happens in multiple steps (for example: checking for changes, then syncing lists, labels, reminders, and tasks). Some actions can trigger extra checks/updates (including handling completed tasks), so making lots of changes in a short time can use up your quota quickly. If sync pauses due to Todoist quota limits, you’ll need to wait a bit and let it resume. For current limits, see Todoist’s “Request Limits / Rate Limiting” documentation: <https://developer.todoist.com/sync/v9/> ## Known Limitations[​](#limitations "Direct link to Known Limitations") BusyCal attempts to sync all the information retrieved from Todoist, including projects (calendars in BusyCal), task dates, notes, URL, reminders, labels, and more. However, the following limitations apply: * Labels can currently only be created and managed from your Todoist account. These changes automatically sync with BusyCal. * Some properties are not available: Attachments, Graphics, Locations, Location URLs, Private Flag. * Location based reminders sync from Todoist → BusyCal, however you cannot currently create one from within BusyCal. * Assigning "My Alarm", "My Notes", "My Tag" or "Contact" to a Task will not sync across multiple devices running BusyCal as Todoist does not support syncing 3rd party app meta-data. * Rich-text notes will not sync across multiple devices running BusyCal. * Snoozing or dismissing alarms on one device does not sync the snooze / dismissal across other devices running BusyCal. Note that any limits that apply to your Todoist subscription plan also apply from within BusyCal. For instance, non-premium features such as adding a reminder to a task will not be available on a free account. --- # BusyCal for Apple Watch BusyCal for Apple Watch is a companion to BusyCal on your paired iPhone. It gives you a focused view of your current and near-term schedule without requiring you to take out your phone. The iPhone app sends the Watch app its calendars, preferences, events, and tasks. The Watch keeps the last data it received, but changes and fresh data still need a connection to the paired iPhone. ## Install and Set Up BusyCal[​](#install-and-set-up-busycal "Direct link to Install and Set Up BusyCal") Apple Watch may install BusyCal automatically when you install BusyCal on the paired iPhone. If it does not: 1. Open Apple's **Watch** app on your iPhone. 2. Tap **My Watch**. 3. Scroll to **Available Apps**. 4. Tap **Install** next to BusyCal. Apple also explains how to [download apps on Apple Watch](https://support.apple.com/109023). After installing BusyCal: 1. Open BusyCal on your iPhone. 2. Go to **Settings > Calendar Sets > Widgets & Watch**. 3. Choose the Calendar Set that contains the calendars and task lists you want on the Watch. 4. Open BusyCal on the Watch and allow a moment for the first update. ## What You Can See[​](#what-you-can-see "Direct link to What You Can See") Swipe between four views in the Watch app: * **Calendar** — A compact month calendar. You can show activity as dots or a heat map, then tap a date to see its items. * **Today** — Today's events, all-day items, and dated tasks, including overdue tasks that still need attention. * **Up Next** — A list of upcoming events that you can group by date, calendar, or title. * **Tasks** — Your incomplete dated tasks, with grouping by date, calendar, priority, or title. Tap an event or task to see details such as its date, time, calendar, location, repeat rule, attendees, and notes. Where the calendar allows it, you can also: * Create a basic event or task. * Mark a task done or undone. * Change a task's priority or starred status. * Accept, decline, or tentatively accept an invitation. ## Add BusyCal Complications[​](#add-busycal-complications "Direct link to Add BusyCal Complications") BusyCal provides several complications for supported watch faces: * **Today** * **Date** and **Date & Weekday** * **Up Next** * **Current & Upcoming** * **Countdown** * **Next Event Time** * **Weeks**, which shows a three-week heat map The choices and shapes available depend on your watchOS version and the complication slots supported by the watch face. To add one from the Watch: 1. Touch and hold the watch face, then tap **Edit**. 2. Swipe to the complications screen. 3. Tap a complication slot. 4. Turn the Digital Crown until you find the BusyCal option you want. 5. Press the Digital Crown to save. See Apple's guide to [adding complications to a watch face](https://support.apple.com/guide/watch/add-complications-to-the-watch-face-apd8d0b9c582/watchos) for more options. ## Task Display Rules[​](#task-display-rules "Direct link to Task Display Rules") The Watch handles tasks from BusyCal task calendars and Apple Reminders lists in the same way. You do not need to convert a Reminders list into another type of calendar. important A task must have a **due date** to appear in the BusyCal Watch app. Undated tasks remain available in BusyCal's Task List on iPhone and iPad, but they are not sent to the Watch. A due time is not required for the main **Tasks** list. A date-only task can appear there. However, complications that show what is happening now or next use timed items, so a task needs both a due date and a due time to appear in those complications. When you create a task on the Watch, turn on **Due Date** if you want the task to remain visible there. ## Other Limits[​](#other-limits "Direct link to Other Limits") * The Watch app focuses on current and near-term items. Use BusyCal on iPhone or iPad for older history and dates farther into the future. * Long notes may be shortened on the Watch. * Read-only calendars can be viewed, but their items cannot be changed. * Some task options, such as due times and priorities, depend on what the selected task service supports. * Changes made on the Watch may wait until the paired iPhone is reachable. ## If Items Are Missing or Out of Date[​](#if-items-are-missing-or-out-of-date "Direct link to If Items Are Missing or Out of Date") 1. Confirm the correct Calendar Set is selected under **BusyCal > Settings > Calendar Sets > Widgets & Watch** on the iPhone. 2. Make sure that set includes the specific event calendars and task lists you want. 3. If a task is missing, check that it has a due date. For a timed complication, also check that it has a due time. 4. Open BusyCal on the iPhone once, then open BusyCal on the Watch again. 5. Keep the iPhone and Watch connected while they update. For more help, see [Widgets or Apple Watch show missing events](/docs/faqs/widgets-or-watch-missing-events.md) and [Calendar Sets](/docs/busycalios/131439-calendar-sets.md#ios-set-widgets-watch). --- # Export Calendars as CSV BusyCal for iOS can export events from one or more calendars to a **CSV spreadsheet file**. The exported file is ideal for analyzing events in apps like Excel, Numbers, or Google Sheets — you can sort, filter, and build custom reports from a structured table of event details. ## Exporting as CSV[​](#export-csv "Direct link to Exporting as CSV") 1. Open **Settings** by tapping the gear icon in the upper-left corner. 2. Tap **Export as CSV**. 3. Choose one or more calendars to include by tapping them — selected calendars show a checkmark. 4. Tap the **Export** button. 5. The iOS share sheet appears so you can save the `.csv` file to **Files**, **AirDrop** it to another device, email it, or send it to any other app that accepts files. ## What's in the Exported File[​](#whats-in-the-exported-file "Direct link to What's in the Exported File") Each row in the CSV represents a single event occurrence, and columns cover the core event fields — title, start date/time, end date/time, location, notes, URL, calendar name, and more — in a format that's easy to open in any spreadsheet application. ## Importing Events on iOS[​](#importing-events-on-ios "Direct link to Importing Events on iOS") BusyCal for iOS focuses on exporting to CSV; to import an `.ics` calendar file or merge calendars, use [BusyCal for Mac](/docs/busycal/70618-exporting-importing-and-merging-calendars.md#importing-ics-files). Events imported on the Mac will sync back to your iPhone automatically through the same account. --- # Using BusyCal for iOS with Office 365 (Microsoft Graph) In our continuous effort to enhance BusyCal for iOS's connectivity and feature set, we have transitioned our syncing mechanism for Office 365 (Microsoft 365) accounts to utilize Microsoft Graph API, Microsoft's latest sync offering. This guide explains how to use BusyCal for iOS with Office 365 through Microsoft Graph. ## iOS Office 365 Microsoft Graph Integration[​](#ios-office-365-graph "Direct link to iOS Office 365 Microsoft Graph Integration") **Why the Change?** Microsoft Graph represents the next generation in Microsoft's cloud services, offering broader capabilities and better security than its predecessor, Exchange Web Services (EWS). Microsoft has announced a phased Exchange Online EWS retirement: initial blocking starts on **October 1, 2026**, with full shutdown on **April 1, 2027**. By adopting Microsoft Graph, BusyCal for iOS ensures continued compatibility with Office 365 and Outlook. **What's Different?** While the core functionality of syncing calendars, events and tasks remains the same, Microsoft Graph enables enhanced performance and compatibility with Outlook and its newest offerings, such as receiving updates from Microsoft Bookings and creating one-click conference calls with Microsoft Teams, features that are otherwise not available via EWS. For more details, please explore the following: * [Personal Outlook](#personal) * [Syncing Calendars and Tasks](#syncing) * [Flagged Emails Appearing as Tasks](#flagged-emails) * [Resources](#resources) * [Microsoft Teams Integration](#teams) * [Shared Calendars](#sharedcalendars) * [Understanding Microsoft Graph Limitations](#limitations) * [Troubleshooting](#troubleshooting) ## Personal Outlook[​](#personal "Direct link to Personal Outlook") When it comes to personal Outlook accounts, including those on `outlook.com`, `hotmail.com`, and similar non-enterprise services, the integration process is slightly distinct. Microsoft has phased out basic authentication methods (such as passwords) for these accounts in favor of more secure authentication protocols. This change aims to enhance security for personal users by reducing the reliance on passwords, which are vulnerable to various security threats. As a result, BusyCal's connection to personal Outlook accounts leverages modern authentication techniques, ensuring a secure and streamlined experience for managing your calendars and tasks. This adjustment ensures that personal Outlook accounts benefit from the same robust Microsoft Graph connectivity as enterprise accounts. ## Setting up Office 365 with iOS and Microsoft Graph[​](#syncing "Direct link to Setting up Office 365 with iOS and Microsoft Graph") To sync BusyCal for iOS with your Office 365 account via Microsoft Graph, follow these steps: note BusyCal for iOS supports multiple Microsoft Graph accounts of the same type. You can add more than one Office 365 or Outlook account, including accounts from separate organizations, and view them side by side in BusyCal. 1. Open **BusyCal > Settings > Accounts**. 2. Tap **Add Account** to add a new account. 3. Tap **Connect** next to Office 365 (under the Microsoft Graph label) from the list of options, enter your email address, then tap **Add** 4. Follow any additional prompts to complete the setup. Once configured, BusyCal will begin syncing with your Office 365 account via Microsoft Graph. important In case you're prompted to provide Admin Consent during the authentication process, you would need to reach out to your Office 365 admin and ask them to grant BusyCal permission to connect to your account. We have detailed instructions on how to [grant BusyCal access using the Azure Portal](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md). ## Flagged Emails Appearing as Tasks[​](#flagged-emails "Direct link to Flagged Emails Appearing as Tasks") Microsoft may include a **Flagged Emails** task list when you connect your account. Older flagged emails that are still incomplete can then appear as overdue tasks in BusyCal, including after switching from an older Exchange connection. See [Why are old Outlook emails appearing as tasks in BusyCal?](/docs/faqs/outlook-flagged-emails-appearing-as-tasks.md) to hide this list without changing your Outlook messages or flags. ## Resources[​](#resources "Direct link to Resources") Conference Rooms / Printers and other resources on a Microsoft Graph / Exchange server can be added to events in BusyCal as an **attendee**. Simply typing in the name of the resource will auto-complete the resource name for you. ## Microsoft Teams Conference Calls[​](#teams "Direct link to Microsoft Teams Conference Calls") You can add one-tap Teams meetings to events / invitations. Simply open **BusyCal Settings > View Preferences > Event Details** and make sure you have enabled the **Microsoft Teams** option to show. You should now see a *Add Meeting* button appear in the Event Details screen when editing / adding new events. Tapping on this button will automatically create a conference call (using Teams) and add it to the event. Please be aware that this functionality is contingent on specific account settings. It is available for Enterprise Office 365 accounts that have not restricted Teams access via the Office 365 Portal. Additionally, the visibility of this feature depends on the absence of administrative restrictions on your calendar. For those using Personal Outlook accounts, look for the *Add Skype* call option instead, allowing for easy incorporation of Skype calls into your events. ## Shared Calendars[​](#sharedcalendars "Direct link to Shared Calendars") important Some secondary calendars created a long time ago on Exchange (and still visible via EWS) will not be available via Microsoft Graph. Overall however, you should see the same calendars in BusyCal that you do in Outlook, for instance. If there are some shared calendars not syncing through, you may need to separately configure these in BusyCal: * Open BusyCal Settings, click on the **Accounts** tab * Select the account from the list, then on the **Manage Sharing** * Enter the email address of the person that has *shared their calendars with you* in the **Add delegate** field * Go back to main Settings and tap **Sync Now** Shared calendars should now appear in the calendar list for this account, which you can manage under Calendar Set settings. In some situations, you may see duplicate calendars in the list for the same user that has shared their calendars with you. This is because the server is syncing these normally as well as separately via the sharing setting. The only workaround is to [edit the calendar](/docs/busycalios/70656-getting-started-with-busycal-for-ios.md#calendars) and toggle off the **Enable Calendar** option. This way you will only see a single shared calendar. In case you're still unable to see certain calendars shared with you, please note that Microsoft Servers treat calendars shared via Outlook differently than those shared from the Exchange Portal. ## Group Calendars[​](#groupcalendars "Direct link to Group Calendars") BusyCal supports Microsoft Group Calendars out of the box—no additional setup needed. Any groups you're a member of will automatically appear in the calendar list, typically as a calendar named **"Calendar"**. > **Note:** You may need to remove and re-add your Microsoft account in BusyCal to re-authenticate and grant the additional permission scopes required to access Group information. In case this requires admin-approval, follow our step-by-step guide to [grant BusyCal access using the Azure Portal](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md). important Microsoft 365 Group calendars in Graph can be read and written with delegated permissions (for example, `Group.ReadWrite.All`). In BusyCal, availability depends on the permissions granted to the signed-in user and any tenant policy restrictions. ## Microsoft Graph Limitations[​](#limitations "Direct link to Microsoft Graph Limitations") While the Microsoft Graph API represents Microsoft's latest offerings, it continues to evolve. It offers significant improvements over Exchange Web Services (EWS) across several fronts, including better security, more flexibility, and broader feature support. However, the transition towards fully adopting Microsoft Graph in place of EWS is still underway and you may find a few differences. The most glaring worth mentioning: #### Categories[​](#categories "Direct link to Categories") Outlook categories sync with BusyCal on Office 365 accounts. If a category is added, recolored, or removed somewhere else — in Outlook on the web, for example — the change reaches BusyCal within a few minutes. Open Settings and tap **Sync Now** to pick it up right away. Microsoft keeps one category list per mailbox, shared by Mail, Calendar, Contacts, and Tasks. A category created by any app on the account appears in every app's category picker, including tags you create in BusyContacts, which sync as categories on that same shared list. This is how Microsoft designed categories to work, so there is no way to keep separate lists per app. Removing a category from the list in Outlook removes it everywhere, though items that carried it keep working normally. BusyCal shows category colors from Microsoft's official category palette — the same colors classic Outlook for Windows uses. The new Outlook and Outlook on the web display softened, pastel versions of those colors, so a category's exact shade can look a little different between BusyCal and the web. It is the same underlying color. A category with no color assigned appears without a color, and its events simply keep their calendar's color. #### Possibly slow, initial sync[​](#slow-initial-sync "Direct link to Possibly slow, initial sync") An initial sync can take several hours, and a large calendar with thousands of events may need to run overnight. BusyCal retrieves full event details from Microsoft Graph in batches of up to 20. Microsoft may split the initial event list into many pages or temporarily slow requests, so BusyCal can continue to show **Syncing** while data is still arriving. Events are not guaranteed to arrive in date order, so your calendar may look incomplete until the first sync finishes. See [Why is the first Microsoft Graph sync taking so long?](/docs/faqs/microsoft-graph-initial-sync-taking-a-long-time.md) for steps to help the sync complete and ways to reduce a large calendar history. #### Due Times for Tasks[​](#exchange-due-times "Direct link to Due Times for Tasks") BusyCal's Microsoft task sync reliably round-trips due dates. For due-time workflows, BusyCal preserves additional task metadata using [Extended Sync](/docs/busycal/144591-syncing-extended-task-properties.md) between BusyCal clients. #### Sharing Secondary Calendars Limitations[​](#sharing-secondary-calendars "Direct link to Sharing Secondary Calendars Limitations") To share a secondary calendar with someone (in Outlook), you must also share your primary calendar with them, with at least Availability access. Once you’ve granted someone Availability access or higher to your primary calendar, you can share secondary calendars with them. #### Floating Times Unavailable[​](#floating-times "Direct link to Floating Times Unavailable") [Floating Times](/docs/busycal/70609-time-zones.md#option-3) are not supported by Exchange. If you create an event in floating time in BusyCal, it appears in GMT time in other apps. #### Alarm Limitations[​](#alarms "Direct link to Alarm Limitations") * Exchange allows only one alarm per event. * Exchange does not allow Alarms to trigger after an event's start time. If you create an alarm that triggers after the start of an event, it is converted to an “At start” alarm after syncing with Exchange. #### Repeating Event Limitations[​](#repeating-events "Direct link to Repeating Event Limitations") * If you create a repeating event with a recurrence rule that is illegal on Exchange, it is modified during syncing to be compatible with Exchange and your local copy is updated to match Exchange. * Exchange doesn’t allow detached events (or alarms) to overlap the next/previous occurrence of the event. * Exchange doesn’t allow "undoing" the cancellation or deletion of particular occurrences. If you delete an occurrence in BusyCal and perform undo, Exchange will revert the change during sync. #### Attachments Limitations[​](#attachments "Direct link to Attachments Limitations") * Attachments are currently only supported for Events. Support for attachments for Tasks is coming soon. #### Public Calendars / Folders Unavailable[​](#public "Direct link to Public Calendars / Folders Unavailable") * There does not seem to be a way to explore and subscribe to public calendars / folders at the moment. ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") If you are unable to connect to your account or you're being prompted for *Admin Consent*, you need to reach out to your Office 365 admin and ask them to grant BusyCal permission to connect to your account. We have detailed instructions on how to [grant BusyCal access using the Azure Portal](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md). --- # Using BusyCal iOS with Calendar Subscriptions (WebDAV) BusyCal for iOS supports subscribing to read-only WebDAV calendar feeds, such as holidays, sports schedules, and other `.ics` calendars published online. WebDAV calendar subscriptions are **read-only** — you can view the events they contain, but you cannot edit, move, or delete them. They are refreshed periodically to pick up any changes made by the calendar publisher. ## Adding a WebDAV Calendar Subscription[​](#adding-a-webdav-subscription "Direct link to Adding a WebDAV Calendar Subscription") To subscribe to a WebDAV calendar on your iPhone or iPad: 1. Go to **Settings > Accounts**. 2. Tap **Add Account**. 3. Tap the **Connect** button next to **WebDAV**. 4. Enter or paste the calendar URL (an `.ics` or `webcal://` link) in the **Calendar URL** field. 5. Optionally, tap **Refresh** to change how often the calendar refreshes, and/or turn off **Enable Alarms** for this calendar. 6. Tap **Add**. ![Connect with WebDAV](https://www.busymac.com/images/bcl3ios-add-account-list-caldav.png) ## Finding Calendar Subscriptions[​](#finding-subscriptions "Direct link to Finding Calendar Subscriptions") BusyMac provides a US Holidays calendar that you can subscribe to by pasting one of these URLs in the Calendar URL field: * `webcal://www.busymac.com/download/us-holidays.ics` * `webcal://www.busymac.com/download/us-holidays-small-icons.ics` * `webcal://www.busymac.com/download/us-holidays-big-icons.ics` We also provide links to popular holiday and sports calendar subscriptions here: [Holiday and Sports Calendar Subscriptions](/webdav.md). note You must **copy** the URL and paste it into BusyCal. If you simply tap a link on your iOS device, the calendar may be added to Apple Calendar instead of BusyCal. ## Syncing WebDAV Subscriptions from a Mac[​](#syncing-from-mac "Direct link to Syncing WebDAV Subscriptions from a Mac") If you have already subscribed to a WebDAV calendar in BusyCal on your Mac, you can sync that subscription to your iPhone or iPad through iCloud — without having to subscribe again on each device. To do this, change the calendar's location from **On My Mac** to your **iCloud** account in BusyCal for Mac: 1. Control-click the subscribed calendar in the sidebar and choose **Get Info**. 2. Change the location from **On My Mac** to your iCloud account and click **OK**. 3. The subscription will appear on your iOS device after it syncs with iCloud. For detailed steps, see [Syncing Calendar Subscriptions with an iOS Device](/docs/busycal/70629-syncing-calendar-subscriptions-with-an-ios-device.md). ## Managing a WebDAV Subscription[​](#managing-subscriptions "Direct link to Managing a WebDAV Subscription") To view or modify a WebDAV subscription you have already added: 1. Go to **Settings > Accounts**. 2. Tap the WebDAV subscription in the list. 3. From here you can change the refresh interval, toggle alarms, or remove the subscription. ## Common Questions[​](#common-questions "Direct link to Common Questions") **Can I edit events in a WebDAV subscription?** No. WebDAV subscriptions are read-only. To create or edit events, use a read-write calendar account such as iCloud, Google, or CalDAV. **What is the difference between WebDAV and CalDAV?** A **WebDAV** subscription is a read-only calendar feed (an `.ics` file hosted online). A **CalDAV** account is a full read-write calendar server where you can create, edit, and delete events. See [Using BusyCal with CalDAV](/docs/busycalios/70678-using-busycal-with-caldav.md) for more information. **My WebDAV subscription is not updating.** Try adjusting the refresh interval in the subscription settings. Some calendar publishers update their feeds infrequently, so changes may take time to appear. --- # Using BusyContacts with Office 365 (Microsoft Graph) BusyContacts now supports syncing with Office 365 and Outlook.com accounts using Microsoft Graph API, Microsoft's modern cloud service platform. ## Setting up Personal Outlook Accounts[​](#personal "Direct link to Setting up Personal Outlook Accounts") For personal accounts (outlook.com, hotmail.com, live.com): 1. Open **BusyContacts > Settings > Accounts** 2. Click the **+** (plus) icon to add a new account 3. Select **Office 365 (Microsoft Graph)** from the Server Type menu 4. Enter your email address and click **OK** 5. Follow the authentication prompts in your web browser 6. Once authenticated, BusyContacts will begin syncing your contacts ## Setting up Enterprise Office 365 Accounts[​](#enterprise "Direct link to Setting up Enterprise Office 365 Accounts") For work or school Office 365 accounts: 1. Open **BusyContacts > Settings > Accounts** 2. Click the **+** (plus) icon to add a new account 3. Select **Office 365 (Microsoft Graph)** from the Server Type menu 4. Enter your work email address and click **OK** 5. Authenticate with your organization's login page Admin Consent Required If you see an "Admin Consent Required" message during setup, your IT administrator needs to grant BusyContacts permission to access your organization's contacts. Share our [admin consent guide](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md) with your IT team. ## Microsoft Contact Limits[​](#contact-limits "Direct link to Microsoft Contact Limits") Microsoft limits how many phone numbers and postal addresses a contact can store. These limits also apply to contacts imported or copied from another address book. | Field | Maximum per contact | | ------------------------------------------------------------------------ | ------------------- | | Home, Work, Mobile, and Other phone numbers | Two of each type | | Assistant, Home Fax, Work Fax, Other Fax, Pager, and Radio phone numbers | One of each type | | Home, Work, and Other postal addresses | One of each type | Custom labels do not create extra room on Microsoft's server. Several labels can map to the same Microsoft type. For example, **callback**, **text**, and **tty** phone numbers count toward the **Other** phone limit; **car** numbers count toward **Mobile**. The upcoming update also correctly counts **iPhone** numbers as Mobile, including imported mobile numbers labeled Home or Work. An upcoming BusyContacts update will send only the first values that fit each limit, in their order on the contact card. It will leave the local fields unchanged when sending, but Microsoft will store only the supported values. A later update from Outlook or a fresh download of the contact can replace the local card with that reduced server copy. Keep a [vCard export](/docs/busycontacts/56820-exporting-and-importing-contacts.md#export-vcard) of any extra information you need to retain. ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") ### Too Many Phone Numbers or Addresses[​](#too-many-fields "Direct link to Too Many Phone Numbers or Addresses") If the alert says “The following cards could not be stored to the server” and mentions too many entries, Microsoft has rejected the listed contacts because they exceed a field limit. **OtherTelephone** means an Other phone number; **postalAddresses** means a postal address. In the current release, **iPhone** and some imported mobile labels can be sent as fax types by mistake. If an alert mentions **OtherFax**, **HomeFax**, or **BusinessFax** for mobile numbers, change their labels to the built-in **mobile** label. This mapping is also corrected in the upcoming update. To fix this in the current release: 1. Export the affected cards before editing them using **File > Export > Selected Cards**. 2. Open each listed contact in its Microsoft address book and click **Edit**. 3. Keep no more than the number of entries shown in the table above. Change a label only when another built-in label accurately describes that phone number or address. Save extra details in the contact's notes or another address book before removing the extra fields. 4. Save the changes, then choose **View > Refresh** (`⌘R`). Renaming several fields with different custom labels may still leave them all counted as **Other**. Edit the labels and values on the affected cards; clearing saved label choices does not change those cards. ### Contacts Not Syncing[​](#contacts-not-syncing "Direct link to Contacts Not Syncing") If some contacts aren't appearing: 1. Ensure you're signed in with the correct account 2. Check that contact syncing is enabled in your Office 365 settings 3. Try refreshing: **View > Refresh** or `⌘R` ### Authentication Issues[​](#authentication-issues "Direct link to Authentication Issues") If you're having trouble signing in: 1. Clear your browser cookies for login.microsoftonline.com 2. Try using a different browser for authentication 3. Ensure your Office 365 account has contact access enabled ## Migration from Exchange (EWS)[​](#migration "Direct link to Migration from Exchange (EWS)") Before removing an Exchange (EWS) account, export any information that has not synced. Then switch to Microsoft Graph: 1. Remove the old Exchange account from BusyContacts 2. Add a new Office 365 (Microsoft Graph) account 3. Your contacts will sync with the new connection 4. Check that the downloaded contacts contain the fields you need. Microsoft's [contact limits](#contact-limits) still apply. Future-Proof Your Setup Microsoft has deprecated Exchange Web Services (EWS). Switching to Microsoft Graph ensures continued access to your Office 365 contacts. --- # Getting Started with BusyContacts This tutorial provides instructions for getting started with BusyContacts and an overview of its features. ![BusyContacts](https://downloads.busymac.com/resources/img/busycontacts/hero.png) ## Introduction[​](#intro "Direct link to Introduction") BusyContacts is a replacement for the built-in Contacts app on macOS, designed to make creating, finding, and managing contacts faster and more efficient. BusyContacts brings to contact management the same power and flexibility that BusyCal users have enjoyed with their calendars. What's more, BusyContacts and BusyCal integrate seamlessly together to become the ultimate contact and calendar solution on the Mac. BusyContacts syncs with the built-in Contacts app on macOS via iCloud (CalDAV) and by extension to all your iOS devices. BusyContacts supports all the leading cloud services (iCloud, Google, Office 365, Exchange, etc.). ## Getting Started[​](#assistant "Direct link to Getting Started") After downloading and launching BusyContacts, you will be presented with a **Settings Dialog** where you can add your first account. This initial setup ensures BusyContacts can sync with your preferred service. Unlike the built-in Contacts app, BusyContacts does not sync directly with Apple Contacts. Instead, it connects to a **CardDAV or Exchange service** of your choice, such as iCloud, Google, Microsoft Office, and others, providing additional features and flexibility. ## Syncing with iCloud, Exchange, and Google[​](#sync-server "Direct link to Syncing with iCloud, Exchange, and Google") BusyContacts supports various services, including **iCloud, Office 365, Exchange, Google, Fastmail, Fruux, Kerio, Zimbra,** and more. You can add or remove accounts anytime by going to **BusyContacts > Settings > Accounts**. For more details, see [Syncing with a Server](/docs/busycontacts/49373-syncing-with-a-server.md). ## Syncing with macOS Contacts[​](#sync-osx-contacts "Direct link to Syncing with macOS Contacts") BusyContacts can sync with the built-in Contacts app on macOS through a cloud-based service (iCloud, Exchange, Fruux, Google, or a CardDAV server). If macOS Contacts is already syncing with a cloud-based service, it should automatically sync with BusyContacts once you've configured BusyContacts to sync with the same account as described above. BusyContacts will not sync local "On My Mac" contacts with macOS Contacts. ## Syncing with an iPhone[​](#sync-iphone "Direct link to Syncing with an iPhone") BusyContacts runs only on the Mac but it can sync with the built-in Contacts app on iOS through a cloud-based service (such as iCloud). If you were previously syncing macOS Contacts and iOS Contacts through a cloud-based service, your iPhone should automatically sync with BusyContacts once you've configured BusyContacts to sync with the same account. BusyContacts will only sync contacts with an iOS device through a cloud-based service. BusyContacts will not sync local "On My Mac" contacts with the iPhone. However, it will sync with your iPhone via iCloud. [See how to sync with iCloud](/docs/busycal/70630-using-busycal-with-icloud.md) for more information. ## Address Books[​](#addressbooks "Direct link to Address Books") The Source List displays your Address Books grouped by server. This is the panel on the left side of the main window. You may change the color of an address book (and the color of all of its contacts) by control-clicking on it and choosing a color, or double-clicking on it to open the Address Book Info dialog. ![Source List](https://downloads.busymac.com/resources/img/busycontacts/source-list.png) ## Tag List[​](#tag-list "Direct link to Tag List") The Tag List appears in the left sidebar. Selecting a tag in the Tag List will filter the view to show only contacts that are assigned to that tag. ![Tag List](https://downloads.busymac.com/resources/img/busycontacts/tag-list.png) * Tags in BusyContacts map to Groups in Apple Contacts and iCloud. * Tags in BusyContacts map to Categories in Outlook and Exchange. * Tags in BusyContacts do NOT map to Groups on Google Contacts. (Note: Tags in BusyContacts appear as Contacts on Google Contacts, which is a side effect of syncing Tags in BusyContacts with Groups in Apple Contacts.) For more info, see [Tags](/docs/busycontacts/47214-tags-groups.md). ## Views[​](#views "Direct link to Views") BusyContacts can display your contacts in two formats: Card View and List View. ![Navigation Buttons](https://downloads.busymac.com/resources/img/busycontacts/view-switcher.png) The Card View lists your contacts in a single column on the left with each card displaying a photo, name and subtitle (company, title, city or email domain). A **quick-jump index bar** on the right edge lets you fast-scroll to any letter of the alphabet with a single click. ![List View](https://downloads.busymac.com/resources/img/busycontacts/cardview.png) The List View displays your contacts in a table with customizable columns and sort order. ![List View](https://downloads.busymac.com/resources/img/busycontacts/davelist.png) For more info, see [Card View and List View](/docs/busycontacts/47352-card-view-and-list-view.md) ## Info Panel[​](#info-panel "Direct link to Info Panel") The info panel displays the details of the selected contact. The toolbar below the panel includes a **Copy Details** button to quickly copy the contact's key information to the clipboard, and a **Pin** button to toggle the contact's pinned state. ![Info Panel](https://downloads.busymac.com/resources/img/busycontacts/infopaneldave.png) While viewing a contact, if you hover the pointer over a field, a link will appear enabling you to perform the default action for that field when clicked (e.g. dialing the phone number or generating an email). ![Mouse Over Phone](https://downloads.busymac.com/resources/img/busycontacts/infolinks.png) If you click on a field label, you will see the other actions that can be performed for that particular field type. ![Click Label Options](https://downloads.busymac.com/resources/img/busycontacts/click-label.png) If you have multiple values of the same type (e.g. work phone and mobile phone), you can set one of them as the Primary field by clicking on the field label and choosing \*\*Make Primary((. The primary field for each type is displayed first. So, in the example above, setting the mobile phone as Primary, will move it to the top of the list of phone numbers. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycontacts/videos/bct-make-primary-label_web.webm) For more info, see [Info Panel](/docs/busycontacts/47351-info-panel.md). ## Creating and Editing Contacts[​](#create-edit "Direct link to Creating and Editing Contacts") You can create new contacts in BusyContacts via Quick Entry or manually: Click the Plus (+) button in the toolbar to open the Quick Entry dialog where you can enter some free-form contact data and press return. BusyContacts will parse the data, enter it into the appropriate fields, and put you into Edit mode where you can further edit the information. ![Quick Add](https://downloads.busymac.com/resources/img/busycontacts/quick-add-dialog.png) Or, select **File menu > New Contact** (or type Command-N) to create a new blank contact card and go into Edit mode. You can then tab through the fields and enter your data. ![New Contact Edit](https://downloads.busymac.com/resources/img/busycontacts/infoedit.png) As you type, a list of matching entries will be displayed and the text will auto-complete as you type. For example, typing "app" in the Company field will auto-fill "Apple". ![Autocomplete](https://downloads.busymac.com/resources/img/busycontacts/appleinfoedit.png) While editing a contact, if you need to enter a field that is not showing by default, click the **Add Field** popup menu on the bottom of the info panel and choose a field to add. If you want to show the field by default, you can add it in [Info Panel Preference](/docs/busycontacts/49554-preferences.md#info-panel). ### Address Auto-fill[​](#address-auto-fill "Direct link to Address Auto-fill") You can also speed up address entry by pasting a full address into the Street field, and BusyContacts will automatically parse it and fill in the City, State, Postal Code, and Country fields. Similarly, entering a postal code can auto-fill the City and State. These features can be enabled in [General Settings](/docs/busycontacts/49554-preferences.md#general). For more details, see [Address Auto-fill](/docs/busycontacts/47351-info-panel.md#address-auto-fill). For more info, see [Creating and Editing Contacts](/docs/busycontacts/47351-info-panel.md#create-edit) ## Action menu[​](#action "Direct link to Action menu") The Action menu appears on the bottom right corner of the Info Panel. It allows you to perform several actions for the selected contact, including sending an email or instant message, initiating an audio or video chat via FaceTime or Skype, creating a new linked event in BusyCal, or sending your vCard to the contact via Mail or Messages. ![Autocomplete](https://downloads.busymac.com/resources/img/busycontacts/info_more.png) ## Contextual menu[​](#contextual "Direct link to Contextual menu") You can `CTRL+Click` (right-click) on one or more contacts to display a contextual menu with the following functions: ![Context Menu](https://downloads.busymac.com/resources/img/busycontacts/cardview_context.png) Some notable options: * **Get Info** — Opens a floating info panel for the selected contacts. * **Edit Card** — Switches to Edit mode. * **Link or Merge Contacts** — Allows you to [Link or Merge](/docs/busycontacts/47349-linking-and-merging-cards.md) the seleted contacts. * **Address Book** — Allows you to move the contact(s) to a different [Address Book](/docs/busycontacts/47211-address-books.md). * **Tags** — Allows you apply [Tags](/docs/busycontacts/47214-tags-groups.md) to the selected contacts. * **Pin** — Allows you to [Pin](/docs/busycontacts/56829-special-fields.md#pin) or unpin the selected contacts. Pinned contacts appear at the top of the contact list. * **New Event/Meeting/To Do/Journal** — Allows you to create a new event in [BusyCal](/docs/busycontacts/47355-linking-contacts-with-events-in-busycal.md) that is linked to the selected contact(s). * **Send Separate Emails** — Creates a separate email addressed to each of the selected contacts. * **Send Blind Email** — Creates a single email addressed to all of the selected contacts as blind carbon copies. * **Send Email** — Creates a single email addressed to all of the selected contacts. ## Activity List[​](#activitylist "Direct link to Activity List") The **Activity List** provides a chronological view of activities associated with a selected contact, allowing you to browse related calendar events, social feeds, and email activity from one place. To show or hide the Activity List, go to **View > Show/Hide Activity List**. For more info and full setup instructions, see [Activity List](/docs/busycontacts/47350-activity-list.md). ![Activity List](https://downloads.busymac.com/resources/img/busycontacts/activity-listing.png) ## Activity Categories[​](#activity-categories "Direct link to Activity Categories") * **Calendar Events** – Displays events from [BusyCal](/busycal/) that include the selected contact as a participant or a [linked contact](/docs/busycontacts/47355-linking-contacts-with-events-in-busycal.md#activity-list). * **Mail** – Displays emails associated with the selected contact (Apple Mail). * **Twitter (X)** – Shows the user’s **X (formerly Twitter) feed** via [nitter.net](https://nitter.net/), as direct access is no longer available. * **Bluesky** – Displays the user’s [Bluesky](https://bsky.app/) feed. * **Mastodon** – Shows the user’s [Mastodon](https://mastodon.social/) feed. * **Instagram** – Displays the user’s [Instagram](https://www.instagram.com/) feed via [pixwox.com](https://pixwox.com), as Instagram restricts direct feed access. * **TikTok** – Shows the user’s [TikTok](https://www.tiktok.com/) feed. * **YouTube** – Displays the user’s [YouTube](https://www.youtube.com/) feed. * **Reddit** – Shows the user’s [Reddit](https://www.reddit.com/) feed. ![Activity categories](https://downloads.busymac.com/resources/img/busycontacts/activity-dropdown.png) ## Mail activity (Apple Mail)[​](#mail-activity-apple-mail "Direct link to Mail activity (Apple Mail)") BusyContacts can show Mail activity using an Apple Mail extension called **BusyContacts Mail Assistant** (macOS 12+). To enable it: 1. In BusyContacts, enable capture in **Settings > Integrations > Mail**. 2. In Apple Mail, enable **BusyContacts Mail Assistant** in **Mail > Settings/Preferences > Extensions**. 3. View or send an email in Apple Mail, then switch back to BusyContacts. ![Mail activity](https://downloads.busymac.com/resources/img/busycontacts/activity-mail.png) ![Mail Extension](https://downloads.busymac.com/resources/img/busycontacts/activity-mail-extension.png) ## Adding Social Profiles[​](#adding-social-profiles "Direct link to Adding Social Profiles") The **Activity List** displays social network feeds when available for the selected contact. To add a new social profile, follow these steps: 1. Select a contact and click **Edit**. 2. Click **Add Field**. 3. Choose **Social Network**. 4. Click the **Social** label in the new field and select the appropriate platform. 5. Enter the username or profile URL, then click **Done**. The selected social profile will now appear in the Activity List if supported. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycontacts/videos/bct-add-social-fields_web.webm) ## Business Card Reader[​](#business-card-reader "Direct link to Business Card Reader") BusyContacts features a powerful Business Card Reader that uses on-device OCR and natural language processing to instantly convert business cards, screenshots, and email signatures into contacts. Simply drag and drop an image or use **File > New Contact from Image** to get started. ![Business Card Reader](https://downloads.busymac.com/resources/img/busycontacts/business-card-reader.png) For more info, see [Business Card Reader](/docs/busycontacts/business-card-reader.md). ## QR Code Generation[​](#qr-codes "Direct link to QR Code Generation") BusyContacts includes a built-in QR code generator that creates scannable codes from your contact information, making it easy to share vCard data with others. You can also import QR coded vCards by dragging QR code images directly onto the BusyContacts icon in the Dock or by using the **File > New Contact from Image** option. ![QR Code Generator](https://downloads.busymac.com/resources/img/busycontacts/qr_code.png) For more info, see [QR Code Generation](/docs/busycontacts/qr-code-generation.md). ## Linking Contacts with Events in BusyCal[​](#linked-events "Direct link to Linking Contacts with Events in BusyCal") The Activity List displays a list of Calendar Events for the selected contact. Only BusyCal events that include the selected contact as either a meeting participant or linked contact will be shown. * **Meeting participants** appear in the Attendees field of a calendar event in BusyCal. * **Linked contacts** appear in the Contacts field of a calendar event in BusyCal. ![attendee/contacts](https://www.busymac.com/images/bct-attendees-contacts.png) To create a new linked event in BusyContacts, select File > New Linked Event (or type Command-Option-E). ![New Linked Event](https://downloads.busymac.com/resources/img/busycontacts/newevent.png) Or you can control-click on a contact and choose New Event from the contextual menu. ![New Linked Event](https://downloads.busymac.com/resources/img/busycontacts/neweventcontext.png) That will launch BusyCal and create a new event with the contact added to the Contacts field. You may edit the event details in BusyCal. ![event](https://www.busymac.com/images/bct-event.png) You can also link a contact to an event directly in BusyCal by entering the contact name in the contacts field. BusyCal will auto-complete the entry based on the matching records in BusyContacts. ![auto-complete](https://www.busymac.com/images/bct-linked-event-auto-complete.png) For more info, see [Linking Contacts with Events in BusyCal](/docs/busycontacts/47355-linking-contacts-with-events-in-busycal.md). ## Birthdays and Anniversaries[​](#birthdays "Direct link to Birthdays and Anniversaries") BusyContacts can surface contacts with upcoming dates (birthdays, anniversaries, death anniversaries, and any other dates recorded on a contact) directly at the top of your contact list. Enable **Group Upcoming Events** in **Settings > Views** to see who has a special date coming up without leaving the app. You can also display birthdays and anniversaries in BusyCal. Use the contact's **birthday** field for birthdays and choose the built-in **anniversary** label from the date's label menu for anniversaries. Custom labels such as **Wedding** are not included in BusyCal's Anniversaries calendar. In **BusyCal > Settings > General**, set **Contacts from** to **BusyContacts** and enable **Show Birthdays calendar** and/or **Show Anniversaries calendar**. ![Birthday](https://www.busymac.com/images/bday.png) ![Anniversary](https://www.busymac.com/images/anniv.png) You can hide unwanted Birthdays from your calendar by unchecking the Show Dates checkbox that appears below the date fields on any contact that has date fields. You must enable the Show Dates in Calendar field in Settings > Info Panel, or add that field to a specific card using the [add field](/docs/busycontacts/47351-info-panel.md#add-field) popup. Note that this setting is stored locally and does not sync between devices. ![Show Dates](https://downloads.busymac.com/resources/img/busycontacts/infoshowdates.png) For more info, see [Birthdays and Anniversaries](/docs/busycontacts/47353-birthdays-and-anniversaries.md). ## Linking and Merging Cards[​](#linking-merging "Direct link to Linking and Merging Cards") If you are syncing with multiple services, you are likely to have duplicate cards for many of your contacts (e.g. each contact may have duplicate cards on iCloud, Google and Twitter). To solve this, BusyContacts allows you to link related cards to each other and combine them into a single virtual card. BusyContacts automatically links related cards that share common traits, such as the same name or email address. And you can manually link cards as well. Linked cards from multiple sources can be viewed as a single virtual card when in Combined mode by selecting **View > Combine Linked Cards**. ![Combine Linked Cards](https://downloads.busymac.com/resources/img/busycontacts/combincards.png) For example, when in non-combined mode, two cards appear for *Dave The Minion*, one on iCloud and another on Google. ![Non-Combined](https://downloads.busymac.com/resources/img/busycontacts/withoutcombined.png) When in Combined Mode, the three linked cards are merged into a single virtual card that displays all of the combined info from each of the individual cards. ![Combined](https://downloads.busymac.com/resources/img/busycontacts/combinedcardslinks.png) When cards are linked to each other, the Info Panel displays links to each of the individual cards. If you click on one of these links, the individual card will open in a separate window where you can view and edit the information specific to that individual card. ![Linked Info Panels](https://downloads.busymac.com/resources/img/busycontacts/combinedallshow.png) BusyContacts automatically links related cards that share common traits, such as the same name or email address. But you can manually link cards as well by selecting the cards you want to link (by shift-clicking or command-clicking them), then choose Link Cards from the Edit menu (or control-click and choose Link Cards from the contextual menu). ![Linking Cards](https://downloads.busymac.com/resources/img/busycontacts/combiningcards.png) Linking cards does not alter any data. When in Combined mode, it displays a virtual card that combines the data from each of the individual cards. For more info, see [Linking and Merging Cards](/docs/busycontacts/47349-linking-and-merging-cards.md). ## Sharing Address Books[​](#sharing "Direct link to Sharing Address Books") BusyContacts enables you to share address books with other BusyContacts users. Address book sharing is supported by Fruux, Exchange, Kerio, Zimbra, macOS Server, and over the LAN. It is not supported by iCloud or Google, but you can work around it on these services by [syncing with multiple accounts](/docs/busycontacts/48244-sharing-contacts.md). Following is a brief description of each of the services that support Address Book sharing with BusyContacts: * **Fruux** — [Fruux](https://fruux.com) is a CalDAV and CardDAV hosting service and is the only CardDAV service that supports address book sharing with BusyContacts and iOS Contacts. * **Exchange** — Exchange supports address book sharing with BusyContacts and Outlook. You can run your own Exchange server or use a hosted service like Office 365, Rackspace, GoDaddy and others. * **Kerio** — Kerio supports address book sharing with BusyContacts when syncing via the Exchange EWS protocol. You can run your own Kerio server or use a hosted service like [GetSync'd Hosted Kerio](https://www.getsyncd.com/index.php). * **Zimbra** — Zimbra server 8.5 and later supports address book sharing with BusyContacts when syncing via the Exchange EWS protocol. * **LAN** — you can share address books over the LAN peer-to-peer with other BusyContacts users, without requiring a server. The main limitation to this approach is that you can only share local address books, which cannot be synced with an iPhone. For more info, see [Sharing Address Books](/docs/busycontacts/48244-sharing-contacts.md). ## Smart Filters[​](#smart-filters "Direct link to Smart Filters") Smart Filters are a powerful tool for filtering contacts and customizing the [List View](/docs/busycontacts/47352-card-view-and-list-view.md#list). Smart Filters are displayed on the Filter toolbar where they can be applied with a single click. You can create smart filters to: * Show contacts that match certain conditions. * Display a set of address books. * Apply view settings, such as the columns displayed and sort order in the List View. You can create Smart Filters to show contacts that match certain criteria, such as a company name, a recent modification date, or a birthday in the next 30 days. For example, to create a smart filter for all contacts that work at Apple, select New Smart Filter from the Filter menu, and enter the settings shown below. ![Company Cards](https://downloads.busymac.com/resources/img/busycontacts/applesmart.png) A button will appear on the Filter Bar, and clicking it will apply the filter. You'll note that the filter button appears in blue, which indicates that it is only showing events that match certain conditions. ![Filter](https://downloads.busymac.com/resources/img/busycontacts/smartfilterbar.png) To create a smart filter, click on the **Filter Menu > New Smart Filter** menu item, then enter the settings shown below. ![Create Filter](https://downloads.busymac.com/resources/img/busycontacts/createsmart.png) And you can create multiple List View formats (e.g. a view that displays and sorts by the company column, and another view that shows [custom fields](/docs/busycontacts/49714-custom-field-types-and-labels.md#custom)) and save them as Smart Filters so you can instantly display them with a single-click. ![Create Filter](https://downloads.busymac.com/resources/img/busycontacts/sortbycomp.png) * Switch to List View and [customize](/docs/busycontacts/49554-preferences.md#views) the number of columns shown and the sort order. * Select New Smart Filter from the Filter menu, click "Remember view settings & preferences", name the filter and click OK. * A button will appear on the Filter Bar, and clicking it will display the custom view. ![Create Filter](https://downloads.busymac.com/resources/img/busycontacts/sortbycompbar.png) For more info, see [Smart Filters](/docs/busycontacts/50099-smart-filters.md). --- # Keyboard Shortcuts BusyContacts Keyboard Shortcuts <br /> | Keyboard Shortcuts | | | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `⌘-F` | Selects the Search Field. | | Escape | Clears and exits the search field. | | Up/Down Arrow keys | Selects the prev/next contact in Card or List View | | Tab<br />Shift-Tab | Move the selection between the different sections of the window - Search Field, Source List, Tag List, Contact List, Info Panel, Activities Search, Activity List. | | `⌘-click` an address book checkbox | Checks or unchecks all the Address Books in the Source list | | Control-click an address book | Display a contextual menu for editing the selected address book | | Double-click an address book | Open address book Info dialog | | Double-click a contact | Open floating info panel for the contact | | Option-drag a contact to an address book | Create a copy of the contact on destination address book | | Control-click a contact | Display a contextual menu for editing the selected contact(s) | | Tab<br />Shift-Tab | Select the next/previous field in the info panel | | `⌘-click` | Disables hover links in Info Panel for text selection | | Option-click | Hold option key while clicking a related field or linked card in Info Panel to open the card in same window, rather than floating window | | Control-click an activity | Control-click on an item in the Activity List to display a contextual menu of options | | Space bar | Select an item in the Activity List and press space bar to display a Quick Look Preview | | BusyContacts Menu | | | `⌘-comma` | Open BusyContacts preferences | | `⌘-H` | Hide the BusyContacts application | | `Option-⌘-H` | Hide all other applications | | `⌘-Q` | Quit the BusyContacts application | | File Menu | | | `Option-⌘-N` | Create a new contact via Quick Entry | | `⌘-N` | Create a new contact in Info Panel | | `Option-⌘-E` | Create a new linked Event in BusyCal | | `Option-⌘-M` | Create a new linked Meeting in BusyCal | | `⌘-K` | Create a new linked To Do in BusyCal | | `⌘-J` | Create a new linked Journal in BusyCal | | `⌘-T` | Create a new Tag | | `Option-⌘-T` | Create a new Tag and apply it to the selected cards | | `Shift-⌘-N` | Create a new address book group | | `Option-Shift-⌘-M` | Send separate emails to each of the selected contacts | | `Shift-⌘-B` | Send a blind carbon copy email to the selected contacts | | `Shift-⌘-M` | Send a single email to the selected contacts | | `⌘-W` | Close the BusyContacts window | | `⌘-P` | Print Envelopes and Mailing Labels | | Edit Menu | | | `⌘-Z` | Undo your last action | | `Shift-⌘-Z` | Redo your last action | | `⌘-X` | Cut the selected text or card | | `⌘-C` | Copy the selected text or card | | `⌘-V` | Paste the text or card on the clipboard | | `Option-Shift-⌘-V` | Paste the text on the clipboard as rich text | | `⌘-A` | Select all cards currently being displayed | | `⌘-D` | Duplicate the selected card | | `⌘-I` | Opens the selected card(s) in a floating info window | | `⌘-E` or<br />`⌘-Return` | Toggles the info panel between edit and browse modes | | `⌘-/` | Mark selected card as flagged | | ⌘-' | Enter a Date & Time stamp into the Notes field | | `Control-⌘-Space` | Open the Emoji and Special Characters panel | | View Menu | | | `⌘-1` | Display Card view | | `⌘-2` | Display List view | | `⌘-Plus`<br />`⌘-Minus` | Increase/decrease the text size in the selected section (source list, list view, or info panel) | | `Control-⌘-H` | Show or Hide the Filter Bar | | `Option-⌘-C` | Show or Hide the Soure List | | `Option-⌘-T` | Show or Hide the Tag List | | `Option-⌘-A` | Show or Hide the Activity List | | `Option-⌘-L` | Enable or disable Combine Linked Cards mode | | `⌘-R` | Refresh address books | | `Control-⌘-F` | Enter full screen mode | | Filter Menu | | | `Control-⌘-N` | Create new smart filter | | `Control-⌘-E` | Edit selected smart filter | | `Control-⌘-S` | Save changes to selected smart filter | | `Control-⌘-R` | Revert changes and restore previous smart filter settings | | `Control-⌘-D` | Delete selected smart filter | | `Control-⌘-0` | Select Unfiltered smart filter | | `Control-⌘-1` through 9 | Select custom smart filters | | Window Menu | | | `⌘-M` | Minimize the BusyContacts window in the Dock | | `⌘-0` | Show the BusyContacts window | ## Customizing keyboard shortcuts[​](#custom "Direct link to Customizing keyboard shortcuts") You can override the keyboard shortcuts for any app, including BusyContacts, in System Preferences > Keyboard > Shortcuts. For example, if you wanted to change the shortcut key for the New Contact menu item on the File menu from `⌘-N` to Control-N, you would do this: * Open System Preferences > Keyboard > Shortcuts. * Click on App Shortcuts in the left sidebar. * Click the + button. * Choose BusyContacts from the Application menu. * Enter "New Contact" without the quotes in the Menu Title field. * Type Control-N in the Keyboard Shortcut field. * Click Add. Now, when you click on the File menu in BusyContacts you'll see that the New Contact menu command uses the new keyboard shortcut of Control-N. Note: When creating keyboard shortcuts you must be careful not to create conflicts with any existing keyboard shortcuts. --- # Address Books BusyContacts supports multiple address books and syncs with multiple services. ## Address Book Source List[​](#source-list "Direct link to Address Book Source List") The Source List displays your Address Books grouped by server. ![Source Panel](https://downloads.busymac.com/resources/img/busycontacts/sourcepanel.png) * **On My Mac** — Address Books stored locally on your Mac. * **iCloud** — Address Book hosted on iCloud. * **Google** — Address Book hosted on Google. * **Exchange** — Address Books hosted on Exchange. * **CardDAV** — Address Books hosted on other CardDAV servers (e.g. Fruux, macOS Server, Kerio, Zimbra, etc.). ## Privileges[​](#privileges "Direct link to Privileges") * ![Read-only icon](https://www.busymac.com/images/read-only-icon.png) Read-only address books will display a read-only icon next to them that looks like a pencil with a slash through it. * ![Shared icon](https://www.busymac.com/images/publish-icon2.png) Address books that you are sharing with others will appear with a publish icon next to them that looks like a broadcast signal. For more info, see [Sharing Address Books](/docs/busycontacts/48244-sharing-contacts.md) ## Showing and Hiding Address Books[​](#visibility "Direct link to Showing and Hiding Address Books") The checkbox next to an address book controls whether its contacts appear in the list. Uncheck it to keep the address book in place and syncing while its contacts stay out of view. **`Control + Click`** (right-click) an address book for quicker ways to change what is shown: * **Show Only This Address Book** — Hides the contacts from every other address book. * **Show All Address Books** — Shows contacts from all of them again. * **Show None** — Clears every checkbox. note BusyContacts has no equivalent of BusyCal's **Hide Calendar** command. An address book cannot be taken out of the source list while you remain subscribed to it: unchecking it hides its contacts, and [unsubscribing](#unsubscribe) removes it from the list. ## Unsubscribing from an Address Book[​](#unsubscribe "Direct link to Unsubscribing from an Address Book") Unsubscribing takes an address book out of the source list and stops syncing it. 1. **`Control + Click`** (right-click) the address book in the source list. 2. Choose the removal command offered for it. The wording depends on the type of address book: **Unsubscribe** for a subscribed address book, **Stop Sharing** for one shared with you over CardDAV, and **Delete** for a local or owned address book. For a remote CardDAV, Exchange, or LAN address book you can also double-click it and click **Unsubscribe** in the Address Book Info dialog. ### Bringing an Unsubscribed Address Book Back[​](#bringing-an-unsubscribed-address-book-back "Direct link to Bringing an Unsubscribed Address Book Back") 1. Open the **View** menu and choose **Show Unsubscribed Address Books**. 2. Find the address book and click its faded checkbox to subscribe to it again. 3. Open the **View** menu and choose **Hide Unsubscribed Address Books** to tidy up the list. An unsubscribed address book stays listed while this setting is on This menu item flips between **Show Unsubscribed Address Books** and **Hide Unsubscribed Address Books** to show you the current state. If it reads **Hide Unsubscribed Address Books**, unsubscribed address books are still being listed, and one you just unsubscribed from stays visible until you choose that command. ## Address Book Colors[​](#colors "Direct link to Address Book Colors") You may change the color of an address book (and the color of all of its contacts) by control-clicking on it and choosing a color, or double-clicking on it to open the Address Book Info dialog. Note: You can also colorize [Tags](/docs/busycontacts/47214-tags-groups.md). ![Source Panel](https://downloads.busymac.com/resources/img/busycontacts/sourcechangecolor.png) ## Expanding and Collapsing Accounts[​](#show-hide "Direct link to Expanding and Collapsing Accounts") You can expand or collapse an Account in the source list by hovering to the right of the Account name and clicking Show or Hide link. ![Source Panel](https://downloads.busymac.com/resources/img/busycontacts/sourceexpand.png) ## Creating Address Books[​](#create "Direct link to Creating Address Books") Some servers (iCloud and Google) allow only one address book, while others (Exchange, Fruux, and Zimbra) allow multiple address books. If you're using a server that supports multiple address books, you can create an address book by selecting File > New Address Book. ![Source Panel](https://downloads.busymac.com/resources/img/busycontacts/newaddressbook.png) ### Creating an "On My Mac" Address Book[​](#creating-an-on-my-mac-address-book "Direct link to Creating an \"On My Mac\" Address Book") You can also create local address books that are stored only on your Mac by selecting "On My Mac" as the location when creating a new address book. These local address books will not sync with any online service or other devices. **Use cases for "On My Mac" address books:** * **Archiving contacts**: Keep a permanent backup of contacts you no longer actively use but want to preserve * **Privacy-sensitive contacts**: Store personal or confidential contacts that you don't want stored on cloud services * **Temporary projects**: Maintain contacts for short-term projects without cluttering your main synced address books * **Testing and organization**: Create test contacts or reorganize contacts before moving them to a synced address book * **Offline access**: Ensure certain contacts are always available even without internet connectivity Once the address book is created, you can rename it, colorize it, and optionally nest it in an Address Book Group (see next). ## Address Book Groups[​](#groups "Direct link to Address Book Groups") If you have multiple address books on a server, you can arrange them into nested Group folders by selecting File > New Address Book Group. ![Source Panel](https://downloads.busymac.com/resources/img/busycontacts/newaddgroup.png) Once a Group is created, you drag address books into the Group folder and re-order them. You can then expand/collapse a Group by clicking on the triangle icon next to its name, or show/hide all address books within the group by clicking its checkbox. ![Source Panel](https://downloads.busymac.com/resources/img/busycontacts/sourceaddgroup.png) In the example above, there are two groups, John and Fred, with address books nested below them. note Address Book Groups in BusyContacts are for grouping address books into a nested folder. They are not the same as the Groups in macOS Contacts, which map to Tags in BusyContacts. For more info, see [Tags](/docs/busycontacts/47214-tags-groups.md). --- # Tags (Groups) ## Using Tags with Different Account Types[​](#using-tags-with-different-account-types "Direct link to Using Tags with Different Account Types") You can use Tags in BusyContacts to categorize and filter your contacts. However, an important consideration when syncing with different account types is that Tags behave differently depending on the service. #### iCloud (Apple Contacts)[​](#icloud-apple-contacts "Direct link to iCloud (Apple Contacts)") * Tags in BusyContacts map to **Groups** in Apple Contacts and iCloud. #### Exchange / Outlook[​](#exchange--outlook "Direct link to Exchange / Outlook") * Tags in BusyContacts map to **Categories** in Outlook and Exchange. ### Google Contacts[​](#google-contacts "Direct link to Google Contacts") * Tags in BusyContacts do **not** map to Groups in Google Contacts. * Labels assigned to contacts in Google Contacts do **not** sync back as Tags in BusyContacts. This is because BusyContacts uses **CardDAV**, an open standard for contact syncing, which does not support Google's proprietary label system. note When syncing with Google Contacts, Tags in BusyContacts appear as individual contacts. This is a side effect of syncing Tags through Apple’s Groups system. As a result, you may see a higher contact count in Google Contacts, reflecting both your contacts and your Tags from BusyContacts. For more details, see [Tags in BusyContacts are appearing as records in Google Contacts](/docs/faqs/98773-tags-in-busycontacts-are-appearing-as-records-in-google-contacts.md). ## Tag List[​](#list "Direct link to Tag List") The Tag List appears in the left sidebar. You can show or hide it by selecting View > Show/Hide Tag List. Selecting a tag in the Tag List will filter the view to show only contacts that are assigned to that tag. ![Tag List](https://downloads.busymac.com/resources/img/busycontacts/tag-list.png) You can sort the Tag List by Name or Count, and show or hide the tag counts, in BusyContacts > Settings > General. ![General](https://downloads.busymac.com/resources/img/busycontacts/setting_general.png) ## Tag Colors[​](#colors "Direct link to Tag Colors") You can color tags by control-clicking on them in the Tag List and choosing a color from the Color submenu. ![Change Tag Color](https://downloads.busymac.com/resources/img/busycontacts/change-tag-color.png) By default, contacts appear in the same color as the [Address Book](/docs/busycontacts/47211-address-books.md) they are stored on. But Tag colors take precedence over Address Book colors. So, if you colorize a Tag, any contacts assigned to that Tag will be displayed in the Tag color rather than the Address Book color. For example, lets say your iCloud Address Book color is blue, so all of your contacts on iCloud appear in blue. If you create an 'urgent' Tag and color it red, any contacts assigned to the 'urgent' tag to will appear in red instead of blue, because Tag colors take precedence over Address Book colors. If you add multiple colored Tags to a contact, the color of the first Tag sorted alphabetically will take precedence. So, if you have a 'family' tag colored green and an 'urgent' tag colored red, a contact assigned to both tags will appear in green, because 'family' is sorted before 'urgent' alphabetically. Note: Tag colors are Mac specific. If you have an iMac and a MacBook Pro both running BusyContacts, the Tag colors you set on your iMac will not sync to your MacBook Pro. The Tags themselves will sync, but the colors of the Tags must be configured separately on each Mac. ## Creating and adding Tags to Contacts[​](#adding "Direct link to Creating and adding Tags to Contacts") You can create tags and assign tags to contacts in the following ways: * Select File > **New Tag** (or control-click in the Tag List and choose New Tag). A new tag will appear in the Tag List, which you can then rename and color. Note: If you create a new Tag and do not assign any contacts to it, the Tag will automatically be deleted on the next sync with the server. ![Edit Tag](https://downloads.busymac.com/resources/img/busycontacts/bct-tag-panel-edit.png) * Select File > **New Tag From Selection**. A new tag will appear in the Tag List, and the selected contacts will be assigned to it. You may then rename and color the tag. ![Tag List](https://www.busymac.com/images/bct-new-tag.png) * Add a tag to the selected contact in the **Tag field** the Info Panel. While typing, an auto-complete menu will appear for matching existing tags. If the tag you enter is unique and does not match any existing tags, a new tag will be created. ![Edit Tag](https://downloads.busymac.com/resources/img/busycontacts/bct-tags-edit.png) * **Drag-n-drop** one or more contacts onto a Tag on the Tag List. * **Drag a Tag** from the Tag List and drop it directly onto the Info Panel to add it to the currently viewed contact. * **Control-click** on one or more contacts to display the contextual menu, and choose a Tag from the Tags menu. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycontacts/videos/bct-assign-tags_web.webm) ## Sending Emails to Tagged Contacts[​](#email "Direct link to Sending Emails to Tagged Contacts") You can send email to a group of tagged contacts, by control-clicking on the Tag and choosing one of the following options: * **Send Separate Emails** — Creates a separate email addressed to each of the tagged contacts. * **Send Blind Email** — Creates a single email addressed to all of the tagged contacts as blind carbon copies. * **Send Email** — Creates a single email addressed to all of the tagged contacts. ![Tag Email](https://downloads.busymac.com/resources/img/busycontacts/tagemail.png) Note: When sending emails, the [primary](/docs/busycontacts/47351-info-panel.md#primary) email address for each contact will be used. ## Smart Filters for Tags[​](#smart-groups "Direct link to Smart Filters for Tags") To show contacts that match one or more tags, or other conditions, create a [Smart Filter](/docs/busycontacts/50099-smart-filters.md): 1. Choose **Filter > New Smart Filter**. 2. Add a "Tag is" condition for each tag. To show contacts that have any one of several tags, set the first condition to "any of the following are true". 3. Name the Smart Filter and click OK. The Smart Filter appears as a button on the Filter Bar, not in the Tag List. Click it to show the matching contacts. The results update as your contacts and tags change. Smart Filters stay in BusyContacts on this Mac. They do not sync as Groups to Apple Contacts, and they do not sync to other Macs. See [Multiple conditions](/docs/busycontacts/50099-smart-filters.md#multiple) for examples that combine tags. ## Deleting Tags[​](#deleting "Direct link to Deleting Tags") * You can remove a Tag from an individual contact by clicking on the Tag token in the Info Panel and pressing the Delete key. * You can delete a Tag from all contacts it is associated with by control-clicking on the Tag in the Tag List and choosing Delete. ![Delete Tag](https://downloads.busymac.com/resources/img/busycontacts/deletetag.png) ## Empty Tags[​](#empty "Direct link to Empty Tags") * If you create a Tag in BusyContacts that does not have any contacts associated with it, the Tag will appear in the Tag List but it will not be synced with Apple Contacts. Only Tags that have contacts associated with them are synced with Apple Contacts. * If you create a Group in Apple Contacts that does not have any contacts associated with it, the Group will not appear in the BusyContacts Tag List, and the Group will be deleted from Apple Contacts after a sync with BusyContacts. ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") Some CardDAV servers do not support syncing grouped contacts and instead natively support syncing tags as `CATEGORIES` which means that if you were to assign tags to contacts, during sync the server will be unable to accept the change as there's no way to store these tagged contacts as special **Grouped vCards**. One such CardDAV server is **Kerio** which does not seem to support these. For such accounts, open `BusyContacts > Settings`, select the account and **uncheck** the **Map Tags to Groups** option and try again. ![Change Tag Color](https://downloads.busymac.com/resources/img/busycontacts/map-tags-to-groups.png) --- # Linking and Merging Cards If you are syncing with multiple services, you are likely to have duplicate cards for many of your contacts. For example, if you are syncing with Twitter, a card for each of your Twitter connections will sync to BusyContacts. Those Twitter cards will appear in addition to any cards you may have already created on your primary address book (e.g. iCloud, Google or Exchange). To solve this, BusyContacts allows you to link related cards to each other and combine them into a single virtual card. This lets you view combined information without physically merging the individual cards. BusyContacts automatically links related cards that share common traits, such as the same name or email address. And you can manually link cards as well. ## Combining Linked Cards[​](#combined-cards "Direct link to Combining Linked Cards") Linked cards from multiple sources can be viewed as a single virtual card when in Combined mode by selecting View > Combine Linked Cards. ![Combine Linked Cards](https://downloads.busymac.com/resources/img/busycontacts/combincards.png) ### Individual cards[​](#individual-cards "Direct link to Individual cards") For example, when in non-combined mode, separate cards appear for the same contact, one on iCloud and another on Google. ![Non-Combined](https://downloads.busymac.com/resources/img/busycontacts/withoutcombined.png) ### Combined card[​](#combined-card "Direct link to Combined card") When in Combined Mode, the linked cards are merged into a single virtual card that displays all of the combined info from each of the individual cards. ![Combined](https://downloads.busymac.com/resources/img/busycontacts/combinedcardslinks.png) ## Linked Cards[​](#linked-cards "Direct link to Linked Cards") When cards are linked to each other, the Info Panel displays links to each of the individual cards. ![Linked Info Panels](https://downloads.busymac.com/resources/img/busycontacts/combinedallshow.png) If you click on one of these links, the individual card will open in a separate window where you can view and edit the information specific to that individual card. Or, option-click on a link to open it in the main window instead of a floating window (you must be in non-combined mode for this to work). ## Copying Fields from one card to another[​](#copy "Direct link to Copying Fields from one card to another") If a combined card has conflicting data from its different sources, you can copy a value from one card to all linked cards. For example, if a photo is updated on a Twitter card, or a job title is updated on a Google card, you can copy the value from that individual card to all linked cards. Here's how you would copy the photo from Facebook to all linked cards. 1. Open the individual Facebook card in a separate window by clicking its link, as described above. 2. Click the Edit button. 3. Click on the popup that appears to the left of the Photo and choose Copy Photo to Linked Cards. The photo will be copied to all linked cards that are writable (e.g. iCloud, Google or Exchange). ![copy to cards](https://www.busymac.com/images/bct-copy-to-linked-cards.png) ## Linking Cards[​](#linking "Direct link to Linking Cards") BusyContacts automatically links related cards that share common traits, such as the same name or email address. This automatic linking happens as a background process that continuously monitors your contacts across all address books. When BusyContacts detects two or more cards that appear to contain duplicate information (such as matching names, email addresses, or phone numbers), it will automatically link them together. This automatic linking works both across different address books (e.g., a contact on iCloud and the same contact on Google) and within the same address book (e.g., two duplicate entries on iCloud). The automatic linking process helps you maintain a clean, organized contact list without manual intervention, while preserving the original data on each service. You can also manually link cards that BusyContacts hasn't automatically linked, or cards you you manually unlinked at some point. Select the cards you want to link (by shift-clicking or command-clicking them), then choose Link Cards from the Edit menu (or control-click and choose Link Cards from the contextual menu). ![Linking Cards](https://downloads.busymac.com/resources/img/busycontacts/combiningcards.png) Linking cards does not alter any data. When in Combined mode, it displays a virtual card that combines the data from each of the individual cards. However, if you edit / modify the details of such a linked card, these changes are then propagated to each of the cards. For example, changing notes on a linked card, where one exists on iCloud and one on Google, would merge and save a the same note in both cards on their respective servers (iCloud & Google in this case). ### Unlinking Cards[​](#unlinking-cards "Direct link to Unlinking Cards") If you need to unlink cards that have been linked together, there are a few ways to do this: 1. **Using the Edit menu**: Select the linked card and choose Unlink Cards from the Edit menu (or control-click and choose Unlink Cards from the contextual menu). 2. **Using the Context Menu**: Control+Click on the linked card and select Unlink Cards. ![link cards](https://www.busymac.com/images/bct-unlink-cards.png) 3. You can also unlink a card in Edit mode by clicking the minus (-) button that appears next to the card's address book name. ![link cards](https://www.busymac.com/images/bct-edit-unlink.png) Unlinking cards separates them back into individual cards without losing any data. After unlinking, the cards will no longer appear as a combined virtual card when in Combined mode. ### Disabling Auto-Linking of Cards[​](#disable-auto-linking "Direct link to Disabling Auto-Linking of Cards") To disable automatic linking of contacts, go to [Settings > Advanced](/docs/busycontacts/49554-preferences.md#advanced) and uncheck **Automatically link identical contacts in the background**. This is particularly useful when you intentionally maintain separate contact cards for the same person, for example, keeping personal and business contacts separate, managing contacts for different departments or projects, or when temporarily duplicating contacts during reorganization of your address books. ## Merging Cards[​](#merging "Direct link to Merging Cards") You can merge duplicate cards that are on the same address book (e.g. two cards for Fred Chaffee on iCloud) into a single card by selecting multiple cards, then choosing Merge Cards from the Edit menu (or control-click and choose Merge Cards from the contextual menu). ![merge cards](https://www.busymac.com/images/bct-merge-cards2.png) Note: The Merge command will only appear on the menu when you have two (or more) cards selected that are on the same address book. When merging cards, a union of the data will be written to one card and the other card will be deleted. ## Merging and Linking Cards[​](#merging-linking "Direct link to Merging and Linking Cards") If you have multiple cards on different address books (e.g., iCloud, Facebook, Twitter and LinkedIn), you can simultaneously link them and copy a union of the data to the writable card (iCloud). To do so, select the cards, then choose Merge and Link Cards from the Edit menu (or control-click and choose Merge and Link Cards from the contextual menu). ![merge and link cards](https://www.busymac.com/images/bct-merge-and-link-cards.png) When selecting Merge and Link Cards, the following takes place: * The unique data from all selected cards is combined into a union. * The unioned data is written to the writable card (e.g. iCloud, but not Facebook). If there are multiple writable cards (e.g. iCloud and Google) the merged data will be written to each of them. * The cards are linked. Merging and Linking is a convenient way to copy the data from read-only cards (Facebook) to writable cards (iCloud). And you can perform a Merge and Link on cards that have already been linked (e.g. to update a writable card with data from a read-only card). --- # Activity List ## Activity List for Contacts[​](#activity-list-contacts "Direct link to Activity List for Contacts") The **Activity List** provides a chronological view of activities associated with a selected contact, allowing you to track interactions, browse social media feeds, and view calendar events from one central location. To show or hide the Activity List, go to **View > Show/Hide Activity List**. ## Activity Categories[​](#activity-categories "Direct link to Activity Categories") * **Calendar Events** – Displays events from [BusyCal](/busycal/) that include the selected contact as a participant or a [linked contact](/docs/busycontacts/47355-linking-contacts-with-events-in-busycal.md#activity-list). * **Mail** – Displays emails associated with the selected contact (Apple Mail). * **Messages (iMessage)** – BusyContacts can open Messages for a contact, but it does not currently show your Messages.app history inside the Activity List. See [BusyContacts is not showing iMessage / Messages activity](/docs/faqs/busycontacts-imessage-activity-not-showing.md). * **Bluesky** – Displays the user’s [Bluesky](https://bsky.app/) feed. * **Dribbble** – Displays the user’s [Dribbble](https://www.dribbble.com/) feed. * **Facebook** – Displays the user’s [Facebook](https://www.facebook.com/) feed. * **Github** – Displays the user’s [Github](https://www.github.com/) feed. * **Instagram** – Displays the user’s [Instagram](https://www.instagram.com/) feed. * **LinkedIn** – Shows the user’s [LinkedIn](https://www.linkedin.com/) feed. * **Mastodon** – Shows the user’s [Mastodon](https://mastodon.social/) feed. * **Pinterest** – Shows the user’s [Pinterest](https://www.pinterest.com/) feed. * **Reddit** – Shows the user’s [Reddit](https://www.reddit.com/) feed. * **TikTok** – Shows the user’s [TikTok](https://www.tiktok.com/) feed. * **Twitter (X)** – Shows the user’s **X (formerly Twitter) feed** via [nitter.net](https://nitter.net/), as direct access is no longer available. * **YouTube** – Displays the user’s [YouTube](https://www.youtube.com/) feed. tip Most social networks (including Instagram, Facebook, LinkedIn, Pinterest, TikTok, and others) no longer permit anonymous access to their feeds. When an embedded page loads you will be prompted to **Sign In** with your own account. Sign in once per network and BusyContacts will display the feed inside the embedded browser using that session. Your credentials stay with the service and are not stored by BusyContacts. ![Activity List](https://downloads.busymac.com/resources/img/busycontacts/activity-listing.png) ## Adding Mail[​](#adding-mail "Direct link to Adding Mail") BusyContacts can show emails in the Activity List using a MailKit-based Apple Mail extension called **BusyContacts Mail Assistant** (macOS 12+). Important - Please note * BusyContacts captures mail as it becomes available to the Apple Mail extension (mail you view manually, and mail you send; new incoming mail is retrieved as best effort). * Apple Mail extensions **cannot** automatically import your entire mail history (and by extension, cannot search your entire mail history) * To capture older messages, open them in Apple Mail (each message is captured as you access it). * BusyContacts captures only emails that match a BusyContacts contact (it does not import everything). * Captured emails are stored on this Mac only (they don't sync between Macs). ### Enable Mail activity[​](#enable-mail-activity "Direct link to Enable Mail activity") 1. Show the Activity List and enable the Mail categories from the Activity menu (Inbox & Saved, Sent, Trash). ![Activity menu with Mail categories](https://downloads.busymac.com/resources/img/busycontacts/activity-dropdown.png) 2. In BusyContacts, enable capture in **Settings > Integrations > Mail**. 3. In Apple Mail, enable the extension: <!-- --> * macOS 13+: **Mail > Settings > Extensions** * macOS 12: **Mail > Preferences > Extensions** * Enable **BusyContacts Mail Assistant**, then quit and relaunch Mail if it doesn't appear immediately. ![Enable BusyContacts Mail Assistant in Apple Mail](https://downloads.busymac.com/resources/img/busycontacts/activity-mail-extension.png) 4. In Apple Mail, view or send an email to/from the contact, then switch back to BusyContacts. ![Mail activity in Activity List](https://downloads.busymac.com/resources/img/busycontacts/activity-mail.png) S/MIME compatibility **BusyContacts Mail Assistant** and Apple Mail's built-in **S/MIME encryption** cannot currently be used at the same time. To capture Mail activity, enable Mail Assistant. To use S/MIME, disable Mail Assistant under **Mail > Settings > Extensions**, then quit and reopen Mail. New Mail activity will not be captured while the extension is disabled. See [Mail Assistant and S/MIME](/docs/faqs/busycontacts-mail-assistant-smime-conflict.md) for details. ### Open a message[​](#open-a-message "Direct link to Open a message") Double-click an email to open it in Apple Mail, or control-click and choose **Show in Mail**. ![Show in Mail](https://downloads.busymac.com/resources/img/busycontacts/activity-mail-show.png) ## Adding Social Profiles[​](#adding-social-profiles "Direct link to Adding Social Profiles") The **Activity List** displays social network feeds when available for the selected contact. To add a new social profile, follow these steps: 1. Select a contact and click **Edit**. 2. Click **Add Field**. 3. Choose **Social Network**. 4. Click the **Social** label in the new field and select the appropriate platform. 5. Enter the username or profile URL, then click **Done**. The selected social profile will now appear in the Activity List if supported. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycontacts/videos/bct-add-social-fields_web.webm) ## Filtering Activities[​](#filter "Direct link to Filtering Activities") By default, all activities are shown. If you wish to hide some activity types to reduce clutter, click on the Activity Menu and uncheck the item types to exclude. ![Activity List Filter](https://downloads.busymac.com/resources/img/busycontacts/activity-picker.png) You can temporarily also show or hide a section by clicking the section header. ## Interacting with items in the Activity List[​](#interacting "Direct link to Interacting with items in the Activity List") You can perform the following actions in the Activity List: * Double-click on an item to open it. * Hover over an item to see more info in a tooltip. * Select an item and press the space bar to preview it in Quick Look. * Control-click on an item to display a contextual menu for that item or section. * Click a Task's checkbox to complete/uncomplete it. * Click Show More to show 10 more items (Option-Click or Command-Click to show 100 more). ## Searching the Activity List[​](#search "Direct link to Searching the Activity List") You can search the Activity List to show only activities that match a text string. This only applies to Calendar Events. ## Legacy: Apple Mail plug-in (no longer supported)[​](#spotlightnew "Direct link to Legacy: Apple Mail plug-in (no longer supported)") caution The legacy Apple Mail plug-in is no longer supported. The last BusyContacts release to include it was **BusyContacts 2025.4.4**. If you're on macOS 12+, use the Mail extension instead (see [Adding Mail](#adding-mail)). By default, macOS 10.15 Catalina and above have disabled access to mail for 3rd party apps. BusyContacts has added support for fetching mail activity via an Apple Mail Plugin for supported macOS versions (10.15 to Ventura). This currently only works for Apple Mail and does not support 3rd party mail clients. Since it uses undocumented APIs, Apple may one day break this functionality altogether in future versions of macOS. If you use some other mail client such as Outlook, you may wish to checkout [MailMate as explained here](/docs/faqs/112805-activity-list-is-not-showing-emails-in-busycontacts-on-macos-catalina.md). In order to make this work, please follow these instructions: * Make sure you have **BusyContacts 2025.4.4 or earlier** (the legacy plug-in is not available in newer versions). * Once installed, launch BusyContacts Settings, click on General. From there, click on "Install Apple Mail Plug-in". This will launch the Mail Plugin installer. After the plugin has been installed, you must separately enable the plugin under Apple Mail. Here's how: * Launch Apple Mail and select Settings… from the Mail menu * Select the General tab ![Mail Settings](https://www.busymac.com/images/bct-pref-mailplugin.png) * Click the Manage Plug-ins… button (if you cannot see this button, please scroll down to the Troubleshooting section). * Make sure that the BusyContactsMailPlugin checkbox is ticked ![Mail Settings](https://www.busymac.com/images/bct-pref-mailplugin-list.png) * Click on Allow access when prompted ![Mail Settings](https://www.busymac.com/images/bct-pref-mailplugin-allow.png) * Quit and relaunch Apple Mail * Quit and relaunch BusyContacts The first time you relaunch Apple Mail, you may be presented with a prompt requesting permission to access the Mail folder. This is required for the plugin to work. Please click Allow and then OK on the Open Dialog. Mail activity should now be visible for the selected contact. ### Uninstalling the Mail Plugin[​](#uninstallplugin "Direct link to Uninstalling the Mail Plugin") If you wish to later uninstall the plugin for whatever reason, you will need to perform the following steps: * Open BusyContacts > Settings. Click on "Updates". * Click on "Uninstall Apple Mail Plug-in". This will launch an uninstaller to uninstall the plugin. * Quit and relaunch Apple Mail ### Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") For mail to appear in the activity list, the BusyContacts Mail plug-in needs to be installed and activated and Apple Mail needs to be **running** in the foreground. After you install the BusyContacts Mail Plugin, you must quit and relaunch Apple Mail for it to be able to refresh its plugin list. #### Manage Plug-ins button missing from Apple Mail[​](#missingbutton "Direct link to Manage Plug-ins button missing from Apple Mail") In order to activate the BusyContact's mail plugin, you need to open Apple Mail > Settings > General and enable it from the menu that appears after you click "Manage Plug-ins...". This button may not appear at times. To fix this: * Quit Mail * Open Terminal.app and type the following two commands one after another (hitting return after each): **sudo -u root defaults write "/Library/Preferences/com.apple.mail" EnableBundles -bool true** **defaults write com.apple.mail EnableBundles -bool true** * Relaunch mail and check Settings > General again. The "Manage Plugins" button should appear near the bottom of the window. * Click on the Manage Plugins button, make sure "BusyContacts Mail Plugin" is checked, allow access when prompted and relaunch mail. #### Mail Plugin not visible in Manage Plugins list[​](#pluginlistempty "Direct link to Mail Plugin not visible in Manage Plugins list") If you cannot see the plugin listed under Mail > Settings > General > Manage Plugins, then this may mean Mail's data vault is locked up. The symptoms of the locked up data vault are: * New plug-ins do not appear in the list * Mail keeps running old versions from the vault even after you install a newer one Please follow instructions given in the following section for your version of macOS, as the same apply when the data vault has locked up. #### Mail hung at launch[​](#mailhung "Direct link to Mail hung at launch") Mail may take a good few minutes at times to relaunch after installing a new plugin. A reboot may help. If all fails, you may wish to delete the plugin from under `/Library/Mail/Bundles`, allow Mail to launch again and then re-install the plugin. #### Mail Plugin Incompatible Error[​](#incompatibleplugin "Direct link to Mail Plugin Incompatible Error") If you see a message such as **BusyContacts Mail Plugin is not compatible...** (this can happen if Apple changes something during a system upgrade), the plug-in is de-activated and will cease to work. **Solution**: Please check that you have the current version of BusyContacts (v1.6 and above). Try re-installing the Mail plugin from BusyContacts > Settings > General > "Uninstall Apple Mail Plugin", and then "Install Apple Mail Plugin". Should Mail still report a compatibility issue, it is probably running an older copy of the plug-in rather than using the freshly installed one. Please read on. BusyContacts installs the `BusyContactsMailPlugin.mailbundle` in /Library/Mail/Bundles for all users. This is also where Mail takes you when you ask it to show the plug-in in Finder. Next, Apple Mail should copy the plugin to its Data Vault folder. This is how Mail checks if plug-ins have been updated: it compares the installed version to the one in the DataVault. When it detects a difference it again asks for your permission to run the new version. Sometimes the Data Vault can lock up. When that happens, you can no longer enable or disable installed plug-ins. Mail will keep running the plug-ins it has in the vault and ignore plug-ins and updates installed in `/Library/Mail/Bundles` To fix this, the following should help. *Warning*: Diagnosing and fixing this is a complex process. #### macOS 11.0 Big Sur[​](#macos-110-big-sur "Direct link to macOS 11.0 Big Sur") The main plugin installs in this location: /System/Volumes/Data/MailBundles/Library/Mail/Bundles/BusyContactsMailPlugin.mailbundle Try copying this bundle into the following location on disk, replacing **USERNAME** with your username: \~/Library/Application Support/Mail/Plug-ins/Bundles/Users/USERNAME/Library/Mail/Bundles/BusyContactsMailPlugin.mailbundle If that fails, note that on macOS Big Sur, the Data Vault is at `~/Library/Application Support/Mail/Plug-ins/Bundles` within your home folder. Try deleting that folder. * Quit the Apple Mail application * In Finder, hold the Option/Alt key as you click the Go menu * Select Library from the Go menu * From your Library folder navigate to \~/Library/Application Support/Mail/Plug-ins/ * Remove the \~/Library/Application Support/Mail/Plug-ins/Bundles folder (\*) * You may also find that on your mac it's installed under. You should remove its contents as well: \~/Library/Application Support/Mail/Plug-ins/Bundles/Library/Mail/Bundles/ * Open Apple Mail * In Mail > Settings > General > Manage Plug-ins… enable the plug-ins you want to use (\*) Should macOS not let you delete the folder, you will need to temporarily turn off System Integrity Protection (SIP) so that you get permission to delete the protected Bundles folder. * You may want to print these instructions or open them on a second device * Click on the Apple menu and choose Restart… * Hold down the Command and R keys so that your Mac will reboot in Recovery Mode * From the Utilities menu at the top of the screen, choose Terminal * Type (without the quotes): "csrutil disable" * and press Return. This command turns off SIP * Click on the Apple menu and choose Restart… * Drag the \~/Library/Application Support/Mail/Plug-ins/Bundles folder to the Trash * Repeat steps 2. - 7. typing "csrutil enable" instead to turn SIP back on #### macOS 10.15 Catalina[​](#macos-1015-catalina "Direct link to macOS 10.15 Catalina") The Mail application should be able to reset its DataVaults folder: * Quit the Apple Mail application * Open the Terminal app from the /Applications/Utilities folder * Paste in this command (without the quotes): "defaults delete com.apple.mail EnableBundles" * and press Return * Open the Apple Mail application and quit it again * Paste in this command (without the quotes): "defaults write com.apple.mail EnableBundles -bool YES" * and press Return * Open the Apple Mail application * In Mail > Settings > General > Manage Plug-ins… enable the plug-ins you want to use If asking Mail to reset the folder DOES NOT work, you need to delete the DataVaults folder manually. Mail will recreate it once you enable a new plug-in. You will need to temporarily turn off System Integrity Protection (SIP) so that you get permission to delete the protected DataVaults folder. * You may want to print these instructions or open them on a second device * Click on the Apple menu and choose Restart… * Hold down the Command and R keys so that your Mac will reboot in Recovery Mode * From the Utilities menu at the top of the screen, choose Terminal * Type (without the quotes): "csrutil disable" * and press Return. This command turns off SIP * Click on the Apple menu and choose Restart… * In Finder, hold the Option/Alt key as you click the Go menu * Select Library from the Go menu * From your Library folder navigate to \~/Library/Containers/com.apple.mail/Data * Drag the \~/Library/Containers/com.apple.mail/Data/DataVaults/ folder to the Trash * Open the Apple Mail application * In Mail > Settings > General > Manage Plug-ins… enable the plug-ins you want to use * Repeat steps 2. - 7. typing "csrutil enable" instead to turn SIP back on --- # Info Panel The BusyContacts info panel displays the details of the selected contact. ![Info Panel](https://downloads.busymac.com/resources/img/busycontacts/infopaneldave.png) ## Toolbar Buttons[​](#toolbar "Direct link to Toolbar Buttons") The Info Panel toolbar (located below the panel) includes several quick-action buttons: * **Copy Details** — Copies the contact's name, company, and primary address, email, and phone to the clipboard. See [Copying Contact Info](/docs/busycontacts/49709-copying-contact-info.md) for more details. * **Pin** — Toggles the [Pin](/docs/busycontacts/56829-special-fields.md#pin) state of the contact. Pinned contacts appear at the top of the contact list. * **Edit** — Switches to Edit mode. * **Action** — Opens the [Action menu](/docs/busycontacts/49708-action-menu-and-contextual-menu.md#action) for sharing and other contact actions. ## Photo Layout & Size Zoom[​](#photo "Direct link to Photo Layout & Size Zoom") Under Settings > Info Panel > Card Layout, you can choose between a `Side by Side` and `Stacked` layout. ### Side by Side:[​](#side-by-side "Direct link to Side by Side:") ![Profile](https://downloads.busymac.com/resources/img/busycontacts/infosidebyside.png) ### Stacked:[​](#stacked "Direct link to Stacked:") ![Profile](https://downloads.busymac.com/resources/img/busycontacts/infostacked.png) Clicking on the contact photo in the Info Panel cycles through three sizes (**Small**, **Medium**, and **Large**) with a smooth animation. You can set the default photo size in [Info Panel Settings](/docs/busycontacts/49554-preferences.md#info-panel). ## Hover Links[​](#hover-links "Direct link to Hover Links") While viewing a contact, if you hover the pointer over a field, a link will appear enabling you to perform the default action for that field when clicked. ![Mouse Over Phone](https://downloads.busymac.com/resources/img/busycontacts/infolinks.png) These are the default actions performed when clicking the following field types: * **Phone** — dials the contact via [iPhone, Skype or third-party dialer](/docs/busycontacts/56728-phone-dialing.md). * **Email** — creates a new email message addressed to the contact. * **IM Address** — creates an instant message addressed to the contact. * **Mailing Address** — opens Apple Maps and displays the address. * **Birthday or Date** — opens the date in BusyCal. * **Twitter** — creates a tweet addressed to the contact. * **Facebook/LinkedIn** — opens the contact's profile page. Note: You can disable the hover links (e.g. to select the text and copy it to the clipboard) by holding down the Command-key while hovering over a field. ## Popup menus[​](#popup-menus "Direct link to Popup menus") Different actions can be performed on each field type. The default action is performed when using the hover links discussed above. If you click on a field label, you will see the other actions that can be performed for that particular field type. Below are the commands available when clicking the label popups for the phone, email, and address fields. ![Mouse Over](https://downloads.busymac.com/resources/img/busycontacts/infocalloptions.png) ![Mouse Over](https://downloads.busymac.com/resources/img/busycontacts/infoemailoptions.png) ![Mouse Over](https://downloads.busymac.com/resources/img/busycontacts/infoaddressoptions.png) ## Primary fields[​](#primary "Direct link to Primary fields") If you have multiple fields of the same type (e.g. work email and home email, or work phone and mobile phone), you can set one of them as the Primary field. To do so, click on the field label and choose Make Primary. ![Make Primary](https://downloads.busymac.com/resources/img/busycontacts/infomakeprim.png) The primary field for each type is displayed first. So, in the example above, setting the mobile phone as Primary, will move it to the top of the list of phone numbers. ![Made Primary](https://downloads.busymac.com/resources/img/busycontacts/infomakeprim.png) The primary fields are used when selecting [Copy Contact](/docs/busycontacts/49709-copying-contact-info.md), printing envelopes and mailing labels, or performing a command using the [Action Menu](/docs/busycontacts/49708-action-menu-and-contextual-menu.md#action) or [Contextual Menu](/docs/busycontacts/49708-action-menu-and-contextual-menu.md#contextual). ## Creating and Editing Contacts[​](#create-edit "Direct link to Creating and Editing Contacts") You can create new contacts in BusyContacts via Quick Entry or manually: **Quick Entry** Click the Plus (+) button in the toolbar to open the Quick Entry dialog where you can enter some free-form contact data and press return. BusyContacts will parse the data, enter it into the appropriate fields, and put you into Edit mode where you can further edit the information. ![Quick Add](https://downloads.busymac.com/resources/img/busycontacts/quick-add-dialog.png) **New Contact** Select File > New Contact (or type Command-N) to creat a new blank contact card and go into Edit mode. You can then tab through the fields and enter your data. ![New Contact Edit](https://downloads.busymac.com/resources/img/busycontacts/infoedit.png) ## Auto-complete[​](#auto-complete "Direct link to Auto-complete") If Auto-complete is enabled in [Settings](/docs/busycontacts/49554-preferences.md#general), a list of matching entries will be displayed and the text will auto-complete as you type. For example, typing "app" in the Company field will auto-fill "Apple". Auto-complete suggestions are fast and non-interrupting, appearing in the background without pausing your typing. ![Auto Complete](https://downloads.busymac.com/resources/img/busycontacts/appleinfoedit.png) To cancel an auto-complete suggestion, press the escape key. ## Auto-cap[​](#auto-cap "Direct link to Auto-cap") If Auto-cap is enabled in [Settings](/docs/busycontacts/49554-preferences.md#general), the text you type in a field will be automatically capitlized when you press the Tab key. ![auto-cap](https://www.busymac.com/images/bct-auto-cap.png) ## Notes Link Detection[​](#notes-link-detection "Direct link to Notes Link Detection") The Notes field automatically detects phone numbers, web addresses, and other data patterns and turns them into clickable links. This detection is powered by macOS and can be toggled through the **Edit > Substitutions** menu while the Notes field has focus. If text is being incorrectly detected (for example, a reference number turning into a phone link), you can turn off **Data Detectors** and/or **Smart Links** individually. See [How do I control automatic link and phone number detection in the Notes field?](/docs/faqs/notes-data-detectors-and-smart-links.md) for full details. ## Add Field[​](#add-field "Direct link to Add Field") While editing a contact, if you need to enter a field that is not showing by default, click the add field popup menu on the bottom of the info panel and choose a field to add. If you wish to add the field to all cards as a default field, you may do so in [Info Panel Settings](/docs/busycontacts/49554-preferences.md#info-panel). ## Address Format[​](#address-format "Direct link to Address Format") By default, addresses use the Address Format you've set in [General Settings](/docs/busycontacts/49554-preferences.md#general). You can override that default on a single address so each contact can use the format of their own country. To set a custom format for an individual address: 1. Select the contact and click **Edit**. 2. Click the **label** next to the address (for example, "home" or "work"). 3. Choose **Set Address Format** and select the country you want. Choosing a country exposes the address fields that are specific to that country. For example, if your default Address Format is United States and you need to enter a German address, click the address label, choose Set Address Format, and select Germany. ![Set Address Format](https://downloads.busymac.com/resources/img/busycontacts/infochangeaddformat.png) ## Address Auto-fill[​](#address-auto-fill "Direct link to Address Auto-fill") BusyContacts can speed up address entry by automatically filling in address fields for you. There are two auto-fill features, both of which can be enabled in [General Settings](/docs/busycontacts/49554-preferences.md#general). ### Auto-fill Address from Street Field[​](#auto-fill-street "Direct link to Auto-fill Address from Street Field") When this option is enabled, you can type or paste a full address into the Street field and BusyContacts will automatically parse it and fill in the City, State, Postal Code, and Country fields for you. This is especially useful when copying an address from an email, a website, or another app. Just paste the entire address into the Street field, press Tab, and BusyContacts will do the rest. The auto-fill only applies when the other address fields (City, State, Postal Code) are blank, so it won't overwrite any data you've already entered. A brief activity indicator appears in the toolbar while the address is being parsed. ### Automatic Postcode Lookups[​](#auto-postcode "Direct link to Automatic Postcode Lookups") When this option is enabled, entering a postal code (ZIP code) will automatically fill in the City and State fields based on the code you entered. This is useful when you know someone's postal code but not their exact city or state. Simply type the postal code, press Tab, and BusyContacts will look up the corresponding city and state. note The lookup is country-aware, so it uses the address format you've selected to query the correct postal code database. Like the street auto-fill, it only fills in fields that are currently blank. --- # Card View and List View BusyContacts can display your contacts in two formats: Card View and List View. ![Navigation Buttons](https://downloads.busymac.com/resources/img/busycontacts/view-switcher.png) ## Card View[​](#card "Direct link to Card View") The Card View lists your contacts in a single column on the left with each card displaying a photo, name and subtitle (company, title, city or email domain). ![Card View](https://downloads.busymac.com/resources/img/busycontacts/cardview.png) * You can control how Names are displayed in the Card View (e.g., "Tim Cook" or "Cook Tim") in [General Settings](/docs/busycontacts/49554-preferences.md#general). This setting also applies to the List View. * You can control the sort order of the Card View (Last/First, First/Last, Address Book or Tag), in [View Settings](#view-prefs). ### Quick-Jump Index Bar[​](#index-bar "Direct link to Quick-Jump Index Bar") The Card View includes a quick-jump index bar on the right edge of the contact list. Click or drag along the index to fast-scroll directly to a letter of the alphabet, saving you from manually scrolling through large contact lists. ## List View[​](#list "Direct link to List View") The List View displays your contacts in a table with customizable columns and sort order. ![List View](https://downloads.busymac.com/resources/img/busycontacts/davelist.png) In the List View, you can: * Show or Hide columns by control-clicking on the column header. * Sort a column by clicking the column header. Click again to reverse sort. * Move a column by dragging the column header. * Resize a column by dragging the right edge of the column header. ## View Settings[​](#view-prefs "Direct link to View Settings") You can customize the Card View and List View in View Settings by selecting BusyContacts > Settings > Views. * **Sort Card View by** — Controls how contacts are sorted in the Card View (Last First, First Last, Address Book, or Tag). Note: You can control how the names are displayed (Last First or First Last) in the [General Settings](/docs/busycontacts/49554-preferences.md#general) tab. * **Use phonetic names when available** — Uses phonetic names for sorting when phonetic name fields exist on a contact. * **Group pinned contacts** — Keeps pinned contacts grouped together at the top of the list. * **Group Upcoming Events** — Promotes contacts with upcoming dates to the top of the list. Use the dropdown to set the look-ahead window and the sub-checkboxes to choose which date types (Birthdays, Anniversaries, Death Anniversaries, Other Dates) are included. See [Upcoming Events](/docs/busycontacts/47353-birthdays-and-anniversaries.md#upcoming-events). * **Show contact photos in list** — Shows contact photos in List View. * **Use address book color for names** — Shows names using each address book's color (when available). * **Show notes indicator in list** — Shows an indicator in List View when a contact has Notes. * **List View Font** — Controls the font and size of the List View columns. * **List View Columns** — Controls which columns are displayed in List View. You can also choose which columns to display by control-clicking on the column headers in List View. * **Sort List View by** — Controls the sorting of the List View. You can sort up to four levels deep in ascending or descending order. You can also choose which columns to sort by by clicking on the column headers in List View. * **Sort Name Column by** — Controls how the Name column is sorted in the List View (Last First or First Last). Note: You can control how the names are displayed (Last First or First Last) in the [General Settings](/docs/busycontacts/49554-preferences.md#general) tab. * **List View Custom Columns** — You can display up to 10 [Custom Fields](/docs/busycontacts/49714-custom-field-types-and-labels.md#custom) in the List View by entering the Custom field labels and checking them. ![Settings](https://downloads.busymac.com/resources/img/busycontacts/setting_views.png) --- # Birthdays and Anniversaries BusyContacts can group contacts with upcoming dates at the top of your contact list. You can also display birthdays, anniversaries, and death anniversaries in **BusyCal**. ## Upcoming Events[​](#upcoming-events "Direct link to Upcoming Events") BusyContacts can automatically group contacts with upcoming dates at the top of your contact list, making it easy to see at a glance who has a special date coming up, without leaving the app. This includes birthdays, anniversaries, death anniversaries, and any other dates stored on a contact. To enable this feature, go to **BusyContacts > Settings > Views** and turn on **Group Upcoming Events**. Use the dropdown next to the setting to choose how far ahead to look (e.g. Next 7 Days). You can also use the sub-checkboxes to control which date types are included: **Birthdays**, **Anniversaries**, **Death Anniversaries**, and **Other Dates**. Any contact with a matching date within the selected window will be promoted to the top of the list under an **Upcoming** section. ![Upcoming Events](https://downloads.busymac.com/resources/img/busycontacts/upcomingbday.png) The **Other Dates** option applies to BusyContacts' Upcoming section. To display an anniversary in BusyCal, use the date label described below. ## Displaying Birthdays & Anniversaries in BusyCal[​](#busycal "Direct link to Displaying Birthdays & Anniversaries in BusyCal") To display a wedding anniversary or another annual anniversary in **BusyCal**: 1. Edit the contact in **BusyContacts**. 2. Add or select a date field and choose the built-in **anniversary** label from its label menu. 3. Enter the original date, leave **show dates** checked, and save the contact. BusyCal repeats the anniversary every year. 4. In **BusyCal > Settings > General**, set **Contacts from** to **BusyContacts** and enable **Show Anniversaries calendar**. important Custom labels such as **Wedding**, **Wedding Anniversary**, or **Other** are not included in BusyCal's Anniversaries calendar. BusyCal uses one anniversary date per contact from BusyContacts. For birthdays, use the contact's **birthday** field and enable **Show Birthdays calendar** in BusyCal. For death anniversaries, use the built-in **death date** label and see BusyCal's [Death Anniversaries settings](/docs/busycal/70599-birthdays-and-anniversaries.md#death-anniversaries). ![Birthdays Pref](https://www.busymac.com/images/birthdays-pref.png) The enabled calendars appear in BusyCal's Calendar List, with eligible contact dates shown as all-day events. ![Birthday](https://www.busymac.com/images/bday.png) ![Anniversary](https://www.busymac.com/images/anniv.png) ## Show Dates in Calendar[​](#show-dates "Direct link to Show Dates in Calendar") Use **show dates** to choose which contacts contribute birthdays, anniversaries, and death anniversaries to BusyCal. Uncheck it on a contact to hide that contact's dates from BusyCal. ![Show Dates](https://www.busymac.com/images/bct-show-dates.png) The **show dates** checkbox is available on contacts with date fields. If it is missing, enable **Show Dates in Calendar** under **BusyContacts > Settings > Info Panel**, or add that field to the card using the **add field** menu. Edit the contact and check **show dates** to include its supported dates in BusyCal. note The **Show Dates in Calendar** setting is stored locally on each Mac and does **not** sync between devices. If you use BusyContacts on multiple Macs, you will need to configure this setting separately on each one. --- # Linking Contacts with Events in BusyCal The BusyContacts Activity List displays a list of calendar events for the selected contact. ## Activity List[​](#activity-list "Direct link to Activity List") ![events](https://www.busymac.com/images/bct-activity-events.png) The Calendar Events section will only list BusyCal events that include the selected contact as either a meeting participant or linked contact. * **Meeting participants** appear in the Attendees field of a calendar event in BusyCal. * **Linked contacts** appear in the Contacts field of a calendar event in BusyCal. ![attendee/contacts](https://www.busymac.com/images/bct-attendees-contacts.png) ## Linked Event Types[​](#types "Direct link to Linked Event Types") You can create four different types of Linked Events: * **Event** — A calendar event with a start and end time, like a dentist appointment. When you link a contact to an Event, the contact is added to the Contacts field. * **Meeting** — Similar to a calendar event, but the contact is added to the Attendees field. This is an important distinction because a contact added to the Attendees field will receive a meeting invitation, which they can accept or decline. * **Task** — A task, like a reminder to call Bob or to schedule a dentist appointment. When you link a contact to a To Do, the contact is added to the Contacts field. * **Journal** — A date specific event with no start or end time. Can be used for recording notes about the contact that occurred on that date, like a phone conversation. When you link a contact to a Journal, the contact is added to the Contacts field. ## Creating Linked Events in BusyContacts[​](#busycontacts "Direct link to Creating Linked Events in BusyContacts") To create a new linked event in BusyContacts, select File > New Linked Event (or type Command-Option-E). ![New Linked Event](https://downloads.busymac.com/resources/img/busycontacts/newevent.png) Or you can control-click on a contact and choose New Event from the contextual menu. ![New Linked Event](https://downloads.busymac.com/resources/img/busycontacts/neweventcontext.png) That will launch BusyCal and create a new event with the contact added to the Contacts field. You may edit the event details in BusyCal. ![event](https://www.busymac.com/images/bct-event.png) ## Creating Linked Events in BusyCal[​](#busycal "Direct link to Creating Linked Events in BusyCal") You can link a contact to an event directly in BusyCal by entering the contact name in the contacts field. BusyCal will auto-complete the entry based on the matching records in BusyContacts. ![auto-complete](https://www.busymac.com/images/bct-linked-event-auto-complete.png) ## Creating Linked Events via Drag-n-Drop[​](#drag "Direct link to Creating Linked Events via Drag-n-Drop") You can link contacts to events via drag-n-drop, using any of the following methods: * Drag an event from BusyCal onto a contact in BusyContacts. * Drag a contact from BusyContacts onto an event in BusyCal. * Drag a contact from BusyContacts onto a date in the calendar to create a new event. * Hold down the option key while dragging from BusyContacts to BusyCal to create a meeting. * Drag a contact from BusyContacts onto the Location or Notes field in the BusyCal Info Panel to add the contact's address info. ## Opening Linked Events and Contacts[​](#open "Direct link to Opening Linked Events and Contacts") In BusyContacts you can double-click on an event in the Activity List to open the event in BusyCal. ![show in busycal](https://www.busymac.com/images/bct-show-in-bcl.png) In BusyCal you can click on the contact popup and choose Show in BusyContacts to open the contact in BusyContacts. ![show in busycontacts](https://www.busymac.com/images/bct-show-in-bct.png) --- # Sharing Contacts BusyContacts enables you to share address books with other BusyContacts users. Address book sharing is supported on the following services: * **Exchange** — [Exchange](/docs/busycontacts/77664-using-busycontacts-with-exchange.md#sharing) supports address book sharing with BusyContacts. You can run your own Exchange server in-house or use a hosted service like Office 365. * **Fruux** — [Fruux](/docs/busycontacts/77666-using-busycontacts-with-fruux.md#sharing) is a CalDAV and CardDAV hosting service that provides native support for address book sharing with BusyContacts. * **iCloud** — Address book sharing is not supported by iCloud. Therefore, if you want to share address books on iCloud, the only way to do it is by syncing with multiple iCloud accounts. * **Google** — Address book sharing is not supported by Google. Therefore, if you want to share address books on Google, the only way to do it is by syncing with multiple Google accounts. * **Kerio** — Kerio supports address book sharing with BusyContacts when syncing via CardDAV or Exchange/EWS protocol.. * **Zimbra** — Zimbra supports address book sharing with BusyContacts when syncing via the Exchange/EWS protocol. * **LAN** — you can share address books over the [LAN](/docs/busycal/70655-using-busycal-on-a-lan.md) peer-to-peer with other BusyContacts users. The main limitation to this approach is that you can only share local address books, which cannot be synced with an iPhone. For more info, see [Selecting a Cloud Syncing Service](/docs/faqs/71160-selecting-a-cloud-syncing-service.md). --- # Syncing with a Server BusyContacts is a client app that syncs with a server. Typically, the built-in Contacts app on macOS and iOS is configured to sync with either iCloud, Google or Exchange, all of which are compatible with BusyContacts. This means any data you enter into the built-in Contacts app on macOS and iOS will sync to BusyContacts, and vice versa, through the server. As long as you have all clients configured to sync with the same servers, all of your contact data will remain in sync. BusyContacts syncs with all leading address book servers, including iCloud, Google, Exchange, Fastmail, macOS Server, Kerio, Zimbra, and other CardDAV servers. You can connect to a server by selecting BusyContacts > Settings > Accounts, clicking the + button, choosing a server type, and entering your username and password. ![New iCloud Account](https://downloads.busymac.com/resources/img/busycontacts/account_new_icloud.png) For more info see: * [Using BusyContacts with iCloud](/docs/busycontacts/77662-using-busycontacts-with-icloud.md) * [Using BusyContacts with Google](/docs/busycontacts/77663-using-busycontacts-with-google.md) * [Using BusyContacts with Exchange](/docs/busycontacts/77664-using-busycontacts-with-exchange.md) * [Using BusyContacts with Fruux](/docs/busycontacts/77666-using-busycontacts-with-fruux.md) * [Using BusyContacts with CardDAV](/docs/busycontacts/77665-using-busycontacts-with-carddav.md) * [Using BusyContacts on a LAN](/docs/busycal/70655-using-busycal-on-a-lan.md) --- # Syncing with Apple Contacts You can sync BusyContacts with Apple Contacts on your Mac. BusyContacts does **not** sync “directly” with Apple Contacts. Instead, both apps sync through the **same cloud account** (iCloud, Exchange, Fruux, Google, or another CardDAV server). If Apple Contacts is already syncing with a cloud-based service, it should automatically sync with BusyContacts once you configure BusyContacts to sync with **the same account**. ## Checklist[​](#checklist "Direct link to Checklist") 1. In **Apple Contacts**, verify the account is enabled: <!-- --> * **System Settings > Internet Accounts** (or Accounts inside Contacts.app on older macOS) 2. In **BusyContacts**, add the same account: <!-- --> * **BusyContacts > Settings > Accounts** 3. Create a small test contact on the server-backed address book (not “On My Mac”) and confirm it appears in: <!-- --> * BusyContacts * Apple Contacts * (optionally) the provider’s web UI (for example iCloud.com or Google Contacts) BusyContacts will not sync local "On My Mac" contacts with macOS Contacts. The Setup Assistant will allow you to import local contacts from macOS Contacts, if they exist, but this is a one-time operation and the local contacts will not remain in sync between BusyContacts and macOS Contacts. For related topics, see: * [Getting Started with BusyContacts](/docs/busycontacts/44314-getting-started-with-busycontacts.md#sync-osx-contacts) * [Using BusyContacts with iCloud](/docs/busycontacts/77662-using-busycontacts-with-icloud.md) * [Syncing with an iOS device](/docs/busycontacts/77549-syncing-with-an-ios-device.md) --- # Settings You can configure various settings in BusyContacts > Settings (also known as "Preferences" on earlier macOS versions). Pick a section in the sidebar on the left to see its settings. A search field sits at the top of the sidebar. Type part of a setting's name and BusyContacts lists the settings that match, each with the section, tab and group it belongs to. Choose a result and BusyContacts opens that section, switches to the right tab, and briefly highlights the setting. Most sections also have a **Help** button at the bottom, which opens the documentation for that section. ## General[​](#general "Direct link to General") The General section is divided into five groups. ### Names & Formats[​](#names--formats "Direct link to Names & Formats") * **Show first name** — **Before last name** (the default) or **Following last name**. Controls how names are displayed in Card View and List View (e.g., "Tim Cook" or "Cook Tim"). Sorting of names is configured in the [Views](#views) section. * **Address Format** — The default address layout, chosen by country. It starts out matching your Mac's region, and the menu lists the countries BusyContacts has formats for, named and sorted by your own language. You can override this on a single address by clicking its label while editing a contact and choosing Set Address Format. See [Address Format](/docs/busycontacts/47351-info-panel.md#address-format). * **Phone Format For Display** — How phone numbers are shown when you are not editing them: **Original Number (1234567890)**, **Minimal (123 456 7890)** (the default), **International (+1 234-567-8901)** or **National ((234) 567-8901)**. This affects display only, not the stored value. See [Phone numbers don’t look right](/docs/faqs/busycontacts-phone-display-format.md). * **Apply display format when editing phone numbers** — Saves edited phone numbers in the display format above. For example, with National selected, entering `+15305551234` stores `(530) 555-1234`. Off by default, and available only when the display format is not Original Number. ### New Contacts[​](#new-contacts "Direct link to New Contacts") * **Default Address Book** — Which address book new contacts are created in. The menu lists your address books grouped under their accounts, with read-only ones dimmed. The default is **Selected address book**, which uses whichever writable address book you have selected at the time. See [Address Books](/docs/busycontacts/47211-address-books.md). ### Source List[​](#source-list "Direct link to Source List") * **Source List Font** — The font and size of the address books and tags in the source list. Pick a recently used font, **Restore Defaults** to go back to the system font at 13 point, or **Other…** to open the macOS font panel. * **Sort Tag List by** — **Tag Name** (the default) or **Tag Count**, which orders tags by how many contacts carry them. See [Tags](/docs/busycontacts/47214-tags-groups.md). * **Show tag counts** — Displays the count beside each tag in the Tag List. On by default. ### Text Editing[​](#text-editing "Direct link to Text Editing") * **Auto-complete text fields** — While creating or editing a contact, fields suggest values from your existing contacts. For example, typing "ap" in the Company field fills in "Apple, Inc.". On by default. * **Auto-capitalize text fields** — Capitalizes each field automatically as you enter text and press Tab. Off by default. ### Address Detection[​](#address-detection "Direct link to Address Detection") * **Auto-fill address from street field** — Type or paste a full address into the Street field and BusyContacts fills in the City, State, Postal Code and Country fields. On by default, and it only fills fields that are still empty. See [Address Auto-fill](/docs/busycontacts/47351-info-panel.md#auto-fill-street). * **Automatic postcode lookups** — Entering a postal code fills in the city, state and country. On by default, and it only fills fields that are still empty. See [Automatic Postcode Lookups](/docs/busycontacts/47351-info-panel.md#auto-postcode). ## Accounts[​](#accounts "Direct link to Accounts") The Accounts section is used for adding, removing and editing server accounts. Your accounts are listed on the left under **Active** and **Disabled**, each with the service it belongs to, and selecting one shows its settings on the right. * **Plus (+) button** — Add a new server account. * **Minus (-) button** — Select an existing account and click Minus (-) to disconnect from it. All of the contacts on that account are removed from BusyContacts but remain intact on the server. ### Adding an Account[​](#add-account "Direct link to Adding an Account") Click **+**, then choose a **Server Type**: **iCloud** (the default), **Google**, **FastMail**, **Contactzilla**, **Yahoo**, **Fruux**, **Office 365** or **Personal Outlook** under Microsoft Graph, **Office 365** under Legacy: Exchange Web Services, **CardDAV**, **Exchange**, or **BusyContacts WAN**. **iCloud China** also appears if your Mac is set to a China time zone. Each type asks for what it needs — typically a user name or email and a password, plus a server address for CardDAV and BusyContacts WAN. Exchange adds an **Advanced** section for **Internal Server** and **External Server**. Microsoft Graph accounts have no password fields; you sign in with Microsoft instead. note iCloud, Fruux, Yahoo, FastMail and Contactzilla all require an app-specific password rather than your normal password. iCloud's must be 16 to 19 characters. Click **Help** in the sheet for instructions. ### Account Settings[​](#account-settings "Direct link to Account Settings") Which settings an account has depends on what its server supports, so an account shows up to three tabs. The tab strip only appears when there is more than one. * **Account Information** — The account's description, login details and refresh interval. * **Server Settings** — The server addresses BusyContacts connects to. * **Sharing** — The address books other people have shared with you on this account. The following settings appear on the Account Information tab: * **Enable this account** — Turn this off to stop syncing the account without removing it. The account moves to the Disabled group and its other settings become unavailable. * **Description** — The name shown for this account in Settings and the source list. Leave it blank to go back to the name the service supplies. * **Login details** — Depending on the service, an **Apple ID**, **Email**, **Yahoo ID**, **User Name** or **Login**, and a **Password**. Existing details are locked; click **Modify details** to edit them, then **Save**. Google and Microsoft Graph accounts sign in with the provider instead and have no password field here. * **Map Tags to Groups** — Tags from BusyContacts normally map to grouped contacts on the server. Turn this off if the server supports tags natively. On by default, and shown for Fruux and CardDAV accounts. * **Refresh** — How often BusyContacts checks the server for changes: **Push** where the service supports it, or every **5 minutes**, **15 minutes**, **30 minutes**, **hour**, **day**, **week**, **month** or **year**. New CardDAV, Exchange and Microsoft Graph accounts start on Push. This setting only affects how often BusyContacts checks for changes; your own edits are sent to the server immediately. Beneath these, BusyContacts reports the last sync result, or the error if the last sync failed. The **Server Settings** tab holds the **Server Address** for CardDAV and BusyContacts WAN accounts, or **Internal Server** and **External Server** for Exchange and legacy Office 365 accounts. Leave the external server blank to use the same address as the internal one. The **Sharing** tab lists the people whose address books you can see, with the access you have to each — **Read Only**, **Read & Write** or **No Access**. Type a user into the field and click **Add** to add someone, select a row and click **Delete** to remove them. Click **Public Address Books…** to browse your organization's public folders and subscribe to the address books in them. See [Syncing with a Server](/docs/busycontacts/49373-syncing-with-a-server.md) for more info. ## Views[​](#views "Direct link to Views") The Views section is used for configuring the sort order in both Card View and List View, and choosing the columns to display in List View. ### Card View[​](#card-view "Direct link to Card View") * **Sort Card View by** — **Last, First** (the default), **First, Last**, **Address Book** or **Tag**. You can control how the names are *displayed* in the [General](#general) section. * **Use phonetic names when available** — Sorts by a contact's phonetic name fields where they exist. On by default. ### Grouping[​](#grouping "Direct link to Grouping") * **Group pinned contacts** — Keeps pinned contacts grouped together. On by default. * **Group upcoming events** — Promotes contacts with upcoming dates to the top of the contact list under an **Upcoming** section. On by default. Choose how far ahead to look: **Today**, **Next 2 Days**, **Next 3 Days**, **Next 4 Days**, **Next 5 Days**, **Next 7 Days** (the default) or **Next 14 Days**. Then choose which dates count: * **Include Birthdays** — On by default. * **Include Anniversaries** — On by default. * **Include Death Anniversaries** — Off by default. * **Include Other Dates** — Off by default. See [Upcoming Events](/docs/busycontacts/47353-birthdays-and-anniversaries.md#upcoming-events) for more details. ### Display[​](#display "Direct link to Display") * **Show contact photos in list** — Shows contact photos in List View. On by default. * **Use address book color for names** — Shows names using each address book's color. Off by default. * **Show notes indicator in list** — Shows an indicator in List View when a contact has Notes. On by default. * **Hide floating windows when switching to another app** — Controls whether detached floating Info Panel windows stay on screen when you switch away from BusyContacts. By default this is **off**, which means any floating Info Panel you've opened via **Get Info**, the keyboard shortcut, or by double-clicking a contact stays visible and continues to float above windows in other apps (Mail, a web browser, etc.) so you can reference a contact's details while you work elsewhere. When enabled, floating Info Panel windows hide automatically as soon as BusyContacts becomes inactive, and reappear the next time you switch back to BusyContacts. This only affects **detached / floating** Info Panel windows. The Info Panel inside the main BusyContacts window is not affected. ### List View[​](#list-view "Direct link to List View") * **List View Font** — The font and size of the List View columns. Pick a recently used font, **Restore Defaults**, or **Other…** to open the macOS font panel. * **List View Columns** — Which columns appear in List View. Over a hundred are available, covering name parts, company and job details, contact methods for work and home, dates, personal details, tags and notes, social networks, URLs and record information such as Created, Modified, Address Book and Private. You can also choose columns by control-clicking the column headers in List View. * **Sort List View by** — Sort up to four levels deep. Each level offers any of the List View columns plus **None**, with a **Reverse** checkbox for descending order. The first level starts at **Name** and the second at **Modified**. Setting a level to None clears the levels below it. You can also sort by clicking the column headers in List View. * **Sort Name Column by** — How the combined Name column is sorted: **Last, First** or **First, Last** (the default). * **List View Custom Columns** — Name up to ten [Custom Fields](/docs/busycontacts/49714-custom-field-types-and-labels.md#custom) here. A name you enter replaces "Custom 1" through "Custom 10" in the column list and the sort menus. ## Info Panel[​](#info-panel "Direct link to Info Panel") The Info Panel section is used for configuring how the Info Panel looks and which fields it shows. A live Info Panel sits at the bottom of the section, so every change you make is shown immediately. * **Card Layout** — **Stacked** (the default — photo centered above the name) or **Side-by-Side** (photo to the left of the name). This controls how linked cards are laid out relative to each other. * **Info Panel Font** — Controls the font and size of the Info Panel fields. Choose a recently used font, **Restore Defaults**, or **Other…** to open the font panel. * **Photo Size** — The default size of the photo in the Info Panel: **None**, **Small** (the default), **Medium**, **Large** or **Extra Large**. Clicking the photo while viewing a contact cycles through the sizes. Beside the preview is the list of every field the Info Panel can show. Check a field to make it appear by default on all cards when creating or editing contacts, and uncheck it to hide it. Unchecked fields still appear on a card that already has a value for them. You can also add a field to an individual card without making it a global default using the [add field](/docs/busycontacts/47351-info-panel.md#add-field) command in the Info Panel. The preview itself works like a card, so you can set the defaults for each field on it: * **Field Label** — Click the blue field label to change the default [field label](/docs/busycontacts/49714-custom-field-types-and-labels.md#labels). For example, on the phone field you can change the default label from 'phone' to 'work'. When you change a label here, it becomes the default label when creating new contacts. You can even choose a custom field label to use as the default. * **Plus (+) button** — Click to add an additional field of the same type (e.g. a second Phone field). * **Minus (-) button** — Click to remove a field. Removing a default field does not remove any data from existing contacts. It only affects which fields are displayed when creating a new contact. ## Integrations[​](#integrations "Direct link to Integrations") The Integrations section lets BusyContacts integrate with other apps. ### Mail (Apple Mail)[​](#integrations-mail "Direct link to Mail (Apple Mail)") BusyContacts can capture emails you view or send in Apple Mail and show them in the Timeline for matching contacts. This uses a MailKit-based Apple Mail extension called **BusyContacts Mail Assistant**. * **Capture emails viewed or sent in Apple Mail** — Captures emails that match a BusyContacts contact; it does not import your entire Mail history. On by default. Captured emails are stored on this Mac only and do not sync between Macs. Setup is a two-step process: enable capture here, then enable **BusyContacts Mail Assistant** in Apple Mail. For full instructions, see [Activity List](/docs/busycontacts/47350-activity-list.md#adding-mail). See [this page](/docs/busycontacts/47350-activity-list.md) for more details. ## Backups[​](#backup "Direct link to Backups") The Backups section is used for configuring the automatic backups. * **Automatically back up** — How often backups are created: **never**, **every hour**, **every 2 hours**, **every 4 hours**, **every 8 hours** or **every day** (the default). * **Backups to keep** — How many backups are kept before old ones are deleted: **10** (the default), **25**, **50** or **100**. * **Backup location** — Where backups are stored. The default is the BusyContacts Backups folder inside your Documents folder. Click **Choose** to pick a different folder. * **Restore From Backup** — Restores your contacts from a backup file. Pick the backup, choose which address books to restore and where they should go, then confirm. Any changes you have made since that backup will be lost. ## Advanced[​](#advanced "Direct link to Advanced") The Advanced section is used for various settings. * **Open maps in** — Whether BusyContacts opens map links in **Apple Maps** (the default) or **Google Maps**. * **Automatically link identical contacts in the background** — Finds duplicate contacts with the same name across your address books and links them, so you can view them as a single virtual card using View > Combine Linked Cards. On by default. See [Linking and Merging Cards](/docs/busycontacts/47349-linking-and-merging-cards.md#linking). * **Confirm changes to cards on shared address books** — Asks you to confirm before you copy, cut, move, modify or delete a contact on a shared address book. Off by default. The confirmation includes a **Don't warn me again** option, which turns this setting back off. See [Sharing Address Books](/docs/busycontacts/48244-sharing-contacts.md). * **Detect HTML text in Notes** — Renders HTML-formatted notes properly instead of showing raw markup. On by default. * **LAN sharing name** — The name other BusyContacts users see when you share address books over a local network. It starts as your computer's name. * **Port** — **Dynamic** (the default) lets BusyContacts pick a port; **Static** lets you fix one between 1000 and 65535, starting at 4991. See [Sharing Contacts](/docs/busycontacts/48244-sharing-contacts.md) for limitations. * **vCard format** — The format used when exporting contacts as vCards: **4.0** or **3.0** (the default). Most other apps, including Apple Contacts, support a maximum of 3.0, so use 3.0 for best compatibility and 4.0 when you need newer vCard features. * **Export notes** — Includes Notes when exporting contacts. On by default. * **Export photos & attachments** — Includes photos and attachments when exporting contacts. On by default. * **Share my usage statistics** — Sends anonymous usage data so we can see which features are underused and where the app needs work. Off by default. The Mac App Store and Setapp versions show this option but collect nothing. ## Updates[​](#updates "Direct link to Updates") If you're on the direct version of the app, you will see this additional section where you can choose how often BusyContacts checks for updates. If you're on the Mac App Store or Setapp version, updates are handled through those stores and you may not see this section. * **Check for updates every** — How often BusyContacts checks for updates: **Day** (the default), **2 Days**, **3 Days**, **4 Days**, **Week**, **2 Weeks**, **3 Weeks** or **Month**. * **including beta** — Include beta releases when checking for updates. Off by default. This checkbox appears only for a registered, unexpired direct licence. Note: This preference may be ignored for important bug fixes or security patches. If you opt-in to beta, update checks may be performed more frequently. --- # Action Menu and Contextual Menu You can use the Action menu or contextual menu to perform various actions. ## Action menu[​](#action "Direct link to Action menu") The Action menu appears on the bottom right corner of the Info Panel. It allows you to perform several actions for the selected contact, including sending an email or instant message, initiating an audio or video chat via FaceTime or Skype, creating a new linked event in BusyCal, or sending your vCard to the contact via Mail or Messages. ![action menu](https://www.busymac.com/images/bct-action-menu.png) Note: When sending an email, the [primary](/docs/busycontacts/47351-info-panel.md#primary) email address will be used. ## Contextual menu[​](#contextual "Direct link to Contextual menu") You can `CTRL+Click` (right-click) on one or more contacts to display a contextual menu with the following functions: * **Get Info** — Opens a floating info panel for the selected contacts. * **Edit Contact** — Switches to Edit mode. * **Link or Merge Contacts** — Allows you to [Link or Merge](/docs/busycontacts/47349-linking-and-merging-cards.md) the seleted contacts. * **Address Book** — Allows you to move the contact(s) to a different [Address Book](/docs/busycontacts/47211-address-books.md). * **Tags** — Allows you apply [Tags](/docs/busycontacts/47214-tags-groups.md) to the selected contacts. * **Flag** — Allows you to [Flag](/docs/busycontacts/49714-custom-field-types-and-labels.md) or unflag the selected contacts. * **New Event/Meeting/To Do/Journal** — Allows you to create a new event in [BusyCal](/docs/busycontacts/47355-linking-contacts-with-events-in-busycal.md) that is linked to the selected contact(s). * **Send Separate Emails** — Creates a separate email addressed to each of the selected contacts. * **Send Blind Email** — Creates a single email addressed to all of the selected contacts as blind carbon copies. * **Send Email** — Creates a single email addressed to all of the selected contacts. ![Context Menu](https://downloads.busymac.com/resources/img/busycontacts/cardview_context.png) --- # Copying Contact Info If you wish to copy a contact's info to the clipboard to paste into another app, you may do so in one of the following ways: ## Copy Details button in toolbar[​](#copy-details-button-in-toolbar "Direct link to Copy Details button in toolbar") The Info Panel toolbar includes a **Copy Details** button that copies the contact's name, company, and primary address, email, and phone to the clipboard in a single click. This is the quickest way to copy a contact's key information. ## Copy Contact from Edit menu[​](#copy-contact-from-edit-menu "Direct link to Copy Contact from Edit menu") Select Copy Contact from the Edit menu to copy the contact's name, company, and primary address, email and phone to the clipboard. ![copy contact](https://www.busymac.com/images/bct-copy-contact.png) Following is an example of the info copied to the clipboard when choosing the Copy Contact command. Max Bishop Bechtel 3161 Preston Rd Red Oak Missouri 51439 <max.bishop72@example.com> (609) 880-7124 ## Copy from popup menu[​](#copy-from-popup-menu "Direct link to Copy from popup menu") Most of the field labels in the Info Panel contain a Copy command. For example, you can copy a mailing address by clicking on the address field label and choosing Copy Address. ![copy address](https://www.busymac.com/images/bct-copy-address.png) ## Disable hover links to select text[​](#disable-hover-links-to-select-text "Direct link to Disable hover links to select text") You can disable the hover links in the Info Panel by holding down the Command-key while hovering over a field. You can then select the text and Copy it to the clipboard. --- # Custom Field Types and Labels BusyContacts supports many predefined field types and an unlimited number of field labels. ## Field Types[​](#types "Direct link to Field Types") BusyContacts supports many predefined field types, such as phone, email, URL, and address. Each contact can contain an unlimited number of each field type (multiple phones, multiple emails, multiple addresses, etc.). In addition, each field type can have an unlimited number of labels. For example, the phone field type can have labels for home phone, work phone, mobile phone, and satellite phone. You can choose which field types to show on all cards in [Info Panel Settings](/docs/busycontacts/49554-preferences.md#info-panel) or you can add fields to a single card using the [add field](/docs/busycontacts/47351-info-panel.md#add-field) menu. ## Field Labels[​](#labels "Direct link to Field Labels") Each field type has a predefined list of labels. For example, the phone field type has built-in labels for home, work, mobile, main, etc. You can add custom labels by clicking on a field label and choosing Custom Label. ![custom label](https://www.busymac.com/images/bct-custom-label1.png) ![add custom label](https://www.busymac.com/images/bct-custom-label2.png) Custom labels are saved as menu choices for that field type, so you can reuse them when creating or editing other contacts. If you want to make a custom label the default choice, you can do so in [Info Panel Settings](/docs/busycontacts/49554-preferences.md#info-panel). To remove a saved menu choice, see [Clearing Custom Labels](#clear-labels). The label menu also offers options that are specific to the field type. For address fields, it includes **Set Address Format**, which lets you choose a country format for that individual address instead of your default. See [Address Format](/docs/busycontacts/47351-info-panel.md#address-format) for the full steps. ## Custom Fields[​](#custom "Direct link to Custom Fields") note Custom Field Types and Labels are only supported on CardDAV servers, such as iCloud and Google. They are not supported on Exchange/Office 365. BusyContacts adds an additional predefined field type called **Custom**. The purpose of the Custom type is to let you extend the data model if you have a piece of data doesn't fit neatly into one of the standard predefined types. For example, a realtor may want to use the custom fields to record information for each client's requirements like maximum price, number of rooms, and school district. To illustrate this example, the process would involve adding the Custom field to the Info Panel in [Info Panel Settings](/docs/busycontacts/49554-preferences.md#info-panel) or with the [Add Field](/docs/busycontacts/47351-info-panel.md#add-field) menu. Then creating field labels for Max Price, School, and District. ![custom label](https://www.busymac.com/images/bct-custom-field.png) In addition to showing Custom fields in the Info Panel, you can display up to 10 custom fields in the List View by entering the Custom field labels in [Info Panel Settings](/docs/busycontacts/49554-preferences.md#info-panel) and checking them. ![View Settings](https://downloads.busymac.com/resources/img/busycontacts/setting_views.png) You can do interesting things with Custom Fields in the List View and [Smart Filters](/docs/busycontacts/50099-smart-filters.md#view-settings). The List View is smart about sorting Custom Columns. It will automatically sort strings, numbers, and money correctly. You can even perform arithmetic comparisons on the data. For example, you could make a Smart Filter that finds all contacts that have a Max Price ≤ $500,000 and Rooms ≥ 3. ### Clearing Custom Labels[​](#clear-labels "Direct link to Clearing Custom Labels") **Clear Custom Labels** opens a window where you choose which saved labels to remove. Opening it does not clear the list or change any contacts. The window lists saved labels for the type of field you clicked, such as dates or phone numbers. To remove one mistyped label: 1. Select a contact with that type of field and click **Edit**. 2. Click the blue field label beside its value, such as **Wedding** beside a date. 3. Choose **Clear Custom Labels** from the label menu. 4. Select only the mistyped label in the window, then click **Delete**. You can also select several labels to remove together. 5. Click **Close** when finished. Closing the window without clicking **Delete** makes no changes. The command appears when that field type has saved custom labels. The window does not rename labels, show how many contacts use them, or list the matching contacts. important **Delete** removes only the selected saved menu choices. It does not delete contact fields or change their labels or values, even when the selected label is still in use. You do not need to find every contact using a label before removing its saved menu choice. A removed label can still appear in the menu for a field that currently uses it. To change that contact's label, edit the field on the contact itself. --- # Backup and Restore BusyContacts automatically backs up your contacts every 24 hours. By default, BusyContacts saves your last 10 backups in the following directory: \~/Library/Containers/com.busymac.busycontacts/Data/Documents/BusyContacts Backups You can manually create a backup by choosing File > Create Backup. ## Backup[​](#backup "Direct link to Backup") You can increase the frequency, number of backups to keep, and the location for the backup folder in BusyContacts > Settings > Backup. * **Automatically back up** — Controls how often backups are created. * **Backups to keep** — Controls how many backup archives are kept when deleting old copies. * **Backup location** — Controls the location where backups are stored. The default location is the BusyContacts Backups folder in the Documents folder. ![Backup](https://downloads.busymac.com/resources/img/busycontacts/setting_backup.png) ## Restore[​](#restore "Direct link to Restore") If you wish to restore your contacts from one of these backups, select **File > Restore From Backup** (or click Restore From Backup on the Backup pane of the Settings window), then select the file from the list presented and **drag and drop** the file on to BusyContact's app-icon in the Dock for it to open. Select the address books you wish to restore and click Restore. The selected address books will be restored from the backup. ![Backup](https://downloads.busymac.com/resources/img/busycontacts/setting_restore.png) Preferably, you should click on the **Restore as a "On My Mac" address book only** checkbox on the dialog presented (once you click OK) to restore it as a local On My Mac address book. This allows you to then drag and drop individual contacts you would like to restore from the restored address book back to the account you wish to restore these to. warning When the **Restore as a *On My Mac* address book** option is not checked, all of the existing contacts on the address book you are restoring will be replaced with the contents of the backup. Therefore, if you are restoring from a backup that was created yesterday, any contacts created or edited today will be lost. ## URL Handler[​](#url-handler "Direct link to URL Handler") To instantly create a backup in your default backup location (as set in BusyContacts), use the following URL: <busycontacts://backup> Clicking this link will launch BusyContacts and trigger a background process that creates a current backup immediately. You can also use this URL in a script of your choice to automate BusyContacts backups. --- # Smart Filters Smart Filters are a powerful tool for filtering contacts and customizing the [List View](./47352-card-view-and-list-view#list). Smart Filters are displayed on the Filter toolbar where they can be applied with a single click. You can create smart filters to: * Show contacts that match certain conditions. * Display a set of address books. * Apply view settings, such as the columns displayed and sort order in the List View. ## Cards that match conditions[​](#conditions "Direct link to Cards that match conditions") You can create Smart Filters to show contacts that match certain criteria, such as a company name, a recent modification date, or a birthday in the next 30 days. For example, to create a smart filter for all contacts that work at Apple, select New Smart Filter from the Filter menu, and enter the settings shown below. ![Smart Filter - Apple](https://downloads.busymac.com/resources/img/busycontacts/applesmart.png) A button will appear on the Filter Bar, and clicking it will apply the filter. You'll note that the filter button appears in blue, which indicates that it is only showing contacts that match certain conditions. ![Smart Filter Bar](https://downloads.busymac.com/resources/img/busycontacts/smartfilterbar.png) You can create many different types of Smart Filters. Here are some examples. ## Flag is yes[​](#flag "Direct link to Flag is yes") Show all cards that have been flagged. ![filter](https://www.busymac.com/images/bct-filter-flag.png) ### Card type is company[​](#company "Direct link to Card type is company") Show all cards that are maked as a company. ![filter](https://www.busymac.com/images/bct-filter-company.png) ### Notes is set[​](#notes "Direct link to Notes is set") Show all cards that contain notes. ![filter](https://www.busymac.com/images/bct-filter-notes.png) ### Tag is not set[​](#no-tag "Direct link to Tag is not set") Show all cards that have not been tagged. ![filter](https://www.busymac.com/images/bct-filter-no-tag.png) ### Last modified date is in the last 7 days[​](#modified "Direct link to Last modified date is in the last 7 days") Show all cards that have been modified in the last 7 days ![filter](https://www.busymac.com/images/bct-filter-modified.png) ### Birthday is in the next 1 weeks[​](#birthday "Direct link to Birthday is in the next 1 weeks") Show all cards with Birthdays in the next week. ![filter](https://www.busymac.com/images/bct-filter-bday.png) ### Custom Fields: Max Price ≤ $500,000 and Rooms ≥ 3[​](#custom "Direct link to Custom Fields: Max Price ≤ $500,000 and Rooms ≥ 3") Show all cards with [custom fields](/docs/busycontacts/49714-custom-field-types-and-labels.md#custom) Max Price ≤ $500,000 and Rooms ≥ 3. ![filter](https://www.busymac.com/images/bct-filter-custom.png) ### Saved Searches[​](#saved "Direct link to Saved Searches") You can also create Smart Filters from Saved Searches. For example, if you enter "apple" into the search field, it will find all contacts that contain the word "apple" in any field (e.g. a name of Johnny Appleseed, a company name of Apple Inc., or notes containing the word apple, etc.). ![filter](https://www.busymac.com/images/bct-filter-saved.png) After entering a search value (1) a Save button will be exposed, if you click the Save button (2) it will create a Smart Filter (3) with the conditions of your search. ### Multiple conditions[​](#multiple "Direct link to Multiple conditions") You can combine multiple conditions and require that "all", "any", or "none" are true. You can also nest conditions so that some are true and others are false. For example, let's say you're a Mac consultant keeping track of the OS versions your clients have installed by tagging them. Some clients are tagged Mavericks, others are tagged Yosemite, and some clients have both tags applied. Following are examples of how to find different combinations of contacts based on the tags that are applied or not applied. ### Tag is Mavericks or tag is Yosemite[​](#any "Direct link to Tag is Mavericks or tag is Yosemite") Show all contacts that are tagged Mavericks or Yosemite. Note the first condition: **any** of the following are true. ![filter](https://www.busymac.com/images/bct-filter-any.png) ### Tag is not Mavericks or Yosemite[​](#none "Direct link to Tag is not Mavericks or Yosemite") Show all contacts that are not tagged Mavericks or Yosemite. Note the first condition: **none** of the following are true. ![filter](https://www.busymac.com/images/bct-filter-none.png) ### Tag is Mavericks and not Yosemite[​](#nested "Direct link to Tag is Mavericks and not Yosemite") Show all contacts that are tagged Mavericks and not tagged Yosemite. Note the first condition: **all** of the following are true, followed by the nested condition: **none** of the following are true. ![filter](https://www.busymac.com/images/bct-filter-nested.png) In order to create a nested condition (like the "none" condition in this example) you must hold down the option-key while clicking the plus "+" button to create a nested condition that can be set to "all", "any", or "none". ## Address Book Sets[​](#address-books "Direct link to Address Book Sets") BusyContacts supports multiple [address books](/docs/busycontacts/47211-address-books.md) (iCloud, Google, Exchange, etc), which you can show or hide by checking them in the left sidebar. If you frequently change which address books are shown, by checking them on/off, you can automate the process by creating a Smart Filter that remembers which address books are currently visible, as follows: * Select the address books you wish to show or hide by checking them in the left sidebar. * Select New Smart Filter from the Filter menu. * Check "Remember visible address books" and give the filter a name, like "Work", and click OK. ![filter](https://www.busymac.com/images/bct-filter-ab1.png) The new filter will be added to the Filter bar, and clicking on it will display the address book set. ![filter](https://www.busymac.com/images/bct-filter-ab2.png) ## View Settings[​](#view-settings "Direct link to View Settings") You can create multiple List View formats (e.g. a view that displays and sorts by the company column, and another view that shows [custom fields](/docs/busycontacts/49714-custom-field-types-and-labels.md#custom)) and save them as Smart Filters so you can instantly display them with a single-click. ![View Settings Filter](https://downloads.busymac.com/resources/img/busycontacts/sortbycomp.png) * Switch to List View and [customize](/docs/busycontacts/49554-preferences.md#views) the number of columns shown and the sort order. * Select New Smart Filter from the Filter menu, click "Remember view settings & preferences", name the filter and click OK. * A button will appear on the Filter Bar, and clicking it will display the custom view. ![View Settings Filter Bar](https://downloads.busymac.com/resources/img/busycontacts/sortbycompbar.png) ## Managing Smart Filters[​](#manage "Direct link to Managing Smart Filters") * You can re-arrange the ordering of the Smart Filters in the toolbar by dragging them, or using the Position field in the Smart Filter dialog. * The first 10 Smart Filters are assigned shortcut keys: Command-Control-1 through 0. * You can edit, duplicate or delete the selected Smart Filter from the Filter menu. ![filter](https://www.busymac.com/images/bct-filter-menu.png) ### Updating or reverting Smart Filters[​](#update "Direct link to Updating or reverting Smart Filters") If a smart filter is applied and you make changes that affect it, such as enabling or disabling an address book from the left source panel, an asterisk "\*" sign will appear before the filter name. * If you wish to update the Smart Filter with the current settings, select **Save Changes** from the Filter menu, type `Control-Command-S`, or control-click on the toolbar button and choose Save Changes. You can also use the `Filter Menu > Save Changes...` option. * If you wish to discard the changes and revert to the previous Smart Filter settings, reselect the filter from the Filter menu; or select Revert to Saved from the Filter menu, type `Control-Command-R`, or control-click on the button in the tooblar and choose Revert to Saved. If changes are not saved, quitting and relaunching the app will revert to previously saved settings and address book selection. ![filter](https://www.busymac.com/images/bct-filter-plus.png) ### Syncing Smart Filters[​](#syncing "Direct link to Syncing Smart Filters") Smart Filters in BusyContacts do not sync with Smart Groups in Apple Contacts. Also, Smart Filters do not sync between computers running BusyContacts. --- # URL Handler BusyContacts supports URL handlers for showing a contact and creating a new contact. Following is a sample contact vCard that will be used in the examples below. ``` BEGIN:VCARD VERSION:3.0 PRODID:-//Apple Inc.//Mac macOS 10.8.2//EN N:;;;; FN:Apple ORG:Apple; EMAIL;type=INTERNET;type=pref:test@apple.com X-ABShowAs:COMPANY UID:f90221ac-84a8-4f40-a699-5930b59a24d1 X-ABUID:B8FB81A6-659D-4E66-B1B7-97A95A144C83:ABPerson END:VCARD ``` ## Showing Contacts in BusyContacts[​](#show "Direct link to Showing Contacts in BusyContacts") You can show a contact in BusyContacts by opening the `busycontacts://show/` URL. It takes 1 parameter, either the UID, X-ABUID, or an email address of the contact. The parameter must be URI encoded. Here are some example URLs to show the sample contact: <busycontacts://show/test@apple.com> <busycontacts://show/f90221ac-84a8-4f40-a699-5930b59a24d1> [busycontacts://show/B8FB81A6-659D-4E66-B1B7-97A95A144C83<!-- -->:ABPerson](busycontacts://show/B8FB81A6-659D-4E66-B1B7-97A95A144C83:ABPerson) To open the contact in a separate floating window, use `busycontacts://open/` instead. ## Opening Contacts in BusyContacts from Alfred[​](#alfred "Direct link to Opening Contacts in BusyContacts from Alfred") If you're using Alfred, it can be configured to open contacts in BusyContacts instead of macOS Contacts. Note: Alfred 2.7.2 and BusyContacts 1.0.3 or later are required. Open Alfred > Preferences > Features > Contacts > Advanced. Check the URL Handler checkbox and enter `busycontacts://show/{uid}`. ![Alfred](https://www.busymac.com/images/bct-alfred.png) Now when you search for a contact in Alfred and open it, it will be opened in BusyContacts. Contact the [developers of Alfred](https://www.alfredapp.com) if you need help configuring Alfred to open contacts in BusyContacts. ## Opening Contacts in BusyContacts from LaunchBar[​](#launchbar "Direct link to Opening Contacts in BusyContacts from LaunchBar") If you're using LaunchBar, it can be configured to open contacts in BusyContacts instead of macOS Contacts. Note: LaunchBar 6.2.1 and BusyContacts 1.0.3 or later are required. Currently, LaunchBar does not expose a UI for setting BusyContacts as the default app to open contacts from LaunchBar, but it can be configured using Terminal. 1. Quit LaunchBar. 2. Launch Terminal (in /Applications/Utilities). 3. Paste the following text and press return: <br /> `defaults write at.obdev.LaunchBar ShowInAddressBookURLPrefix busycontacts://show/` 4. Quit Terminal. 5. Launch LaunchBar. Now when you search for a contact in LaunchBar and open it, it will be opened in BusyContacts. If you wish to reset this setting and use macOS Contacts as the default app to open contacts from LaunchBar, repeat the steps above and replace the pasted text in step 3 with this: `defaults delete at.obdev.LaunchBar ShowInAddressBookURLPrefix` Contact the [developers of LaunchBar](https://www.obdev.at/support/index.html?product=LB\&topic=contact) if you need help configuring LaunchBar to open contacts in BusyContacts. ## Opening Contacts in BusyContacts from other apps[​](#other "Direct link to Opening Contacts in BusyContacts from other apps") In addition to launchers like Alfred and LaunchBar, it may be possible to configure other third-party apps to open contacts in BusyContacts using the following information. Third-party apps open contacts in macOS Contacts using the `addressbook://X-ABUID` URL scheme. To open the contacts in BusyContacts instead, the third-party app needs to be configured to pass the X-ABUID to `busycontacts://show/X-ABUID` instead. For example, the following URL will open a contact in macOS Contacts: ``` addressbook://B8FB81A6-659D-4E66-B1B7-97A95A144C83:ABPerson ``` If you change the `addressbook://` prefix to `busycontacts://show/`, the contact is opened in BusyContacts: [busycontacts://show/B8FB81A6-659D-4E66-B1B7-97A95A144C83<!-- -->:ABPerson](busycontacts://show/B8FB81A6-659D-4E66-B1B7-97A95A144C83:ABPerson) Contact your third-party app developer for help opening contacts in BusyContacts. ## Creating new contacts in BusyContacts[​](#new "Direct link to Creating new contacts in BusyContacts") You can create a new contact in BusyContacts by opening the `busycontacts://new/` URL. It takes 1 parameter, a natural language string that represents the new contact. You can optionally include a hint for the name of the address book to put the new contact into via a " /Hint" suffix. The parameter string must be encoded. Contacts created this way use the default field labels set in [Settings > Info Panel](/docs/busycontacts/49554-preferences.md#info-panel). For example, if you set the default email label to "home", the email address in the URL is added with the "home" label. Here are some example URLs to create a new contact <busycontacts://new/Bob%20Jones%20555-1212> <busycontacts://new/Bob%20Jones%20123%20Main%20Street,%20Anytown%20USA%20/iCloud> ## Selecting Smart Filter in BusyContacts[​](#select-smart-filter "Direct link to Selecting Smart Filter in BusyContacts") You can launch BusyContacts with a specific [Smart Filter](/docs/busycontacts/50099-smart-filters.md) selected by using the following URL handler: ``` busycontacts://filter/<filter name> ``` Replace `<filter-name>` with the exact name of the Smart Filter (URL encoded if it contains spaces or special characters). `<filter name>`: The URL encoded name of the smart filter you would like to select ### Examples[​](#examples "Direct link to Examples") Select the "Friends" smart filter: ``` busycontacts://filter/friends ``` [Click here to Try](busycontacts://filter/friends) Select the "Work" smart filter: ``` busycontacts://filter/work ``` [Click here to Try](busycontacts://filter/work) ## Creating Backups[​](#create-backup "Direct link to Creating Backups") To instantly create a backup in your default backup location (as set in BusyContacts), use the following URL: <busycontacts://backup> Clicking this link will launch BusyContacts and trigger a background process that creates a current backup immediately. You can also use this URL in a script of your choice to automate BusyContacts backups. ## Xcode sample code[​](#xcode "Direct link to Xcode sample code") If you are an app developer, following is sample code in Objective-C. Here is sample code to programmatically show a contact: ``` - (void)busycontactsShowContact:(NSString *)uidOrEmail { NSString *url = [NSString stringWithFormat:@"busycontacts://show/%@", [uidOrEmail stringByURIEncoding]]; [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]]; } ``` Below is a category on NSString for URI encoding a string: ``` @interface NSString (URIEncoding) - (NSString *)stringByURIEncoding; @end @implementation NSString (URIEncoding) - (NSString *)stringByURIEncoding { // same as -stringByAddingPercentEscapesUsingEncoding but escapes '/' and '?' const CFStringRef leaveUnescaped = NULL; const CFStringRef forceEscaped = CFSTR("!*'();:@&=+$,/?%#[]"); CFStringRef escapedStr = CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef) self, leaveUnescaped, forceEscaped, kCFStringEncodingUTF8); return [NSMakeCollectable(escapedStr) autorelease]; } @end ``` --- # Printing Envelopes and Mailing Labels You may print Envelopes and Mailing Labels by selecting Print from the File menu. In the Print dialog you can choose whether you wish to print Envelopes or Mailing Labels from the Style menu. ![Types](https://downloads.busymac.com/resources/img/busycontacts/print_options.png) By default, all records that are currently being displayed in BusyContacts will be printed. You may limit the output to only the selected records by checking **Print selected records**. note Only records with a valid mailing address will be printed. ## Mailing Labels[​](#labels "Direct link to Mailing Labels") When printing mailing labels, the following options are available across two tabs: **Layout** and **Label**. ### Mailing Labels — Layout tab[​](#labels-layout "Direct link to Mailing Labels — Layout tab") ![Mailing Labels](https://downloads.busymac.com/resources/img/busycontacts/printmailing_1.png) * **Page:** Displays a list of label sizes grouped by Avery A4, Avery Standard, DYMO, and Custom. * **Size:** Displays the sheet size and unit of measurement. * **Orientation:** When using a Custom page size, you can choose a layout orientation (Portrait or Landscape). * **Start printing label on:** Allows you to select the starting position when printing onto a partially used sheet of labels. * **Dimensions:** Displays the margins, labels and gutters for the selected page type. These settings are only editable if you have selected Custom from the Page menu. ### Mailing Labels — Label tab[​](#labels-label "Direct link to Mailing Labels — Label tab") ![Mailing Labels](https://downloads.busymac.com/resources/img/busycontacts/printmailing_2.png) * **Address:** The recipient address label you wish to print (for example: [Primary](/docs/busycontacts/47351-info-panel.md#primary), Home, Work, or any custom address label). You can also choose **All** to print every address associated with each contact. * **Print:** A set of checkboxes controlling which name-related fields are included on each label: <!-- --> * **Name** — Prints the contact's full name. * **Company** — Prints the contact's company name. * **Department** — Prints the contact's department. * **Nickname** — Prints the contact's nickname. * **Country** — Prints the recipient's country. <!-- --> * **Except my country** — When Country is enabled, check this to suppress the country when it matches the sender's country. * **Color:** Click the color picker to choose the text color for the mailing address. * **Image:** Click Set to choose an image to print next to the mailing address. * **Font:** Click Set to choose a font face for the mailing address. ## Envelopes[​](#envelopes "Direct link to Envelopes") When printing envelopes, the following options are available across three tabs: **Layout**, **Label**, and **Orientation**. ### Envelopes — Layout tab[​](#envelope-layout "Direct link to Envelopes — Layout tab") ![Envelopes](https://downloads.busymac.com/resources/img/busycontacts/printenv_1.png) * **Layout:** Displays a list of envelope sizes grouped by International, North American, Japanese and Custom. * **Dimensions:** Displays the Envelope Size, and the dimensions of the Recipient and Sender print areas. These settings are only editable if you have selected Custom from the Layout menu. ### Envelopes — Label tab[​](#envelope-label "Direct link to Envelopes — Label tab") ![Envelopes](https://downloads.busymac.com/resources/img/busycontacts/printenv_2.png) * **Address:** The recipient address label you wish to print (for example: [Primary](/docs/busycontacts/47351-info-panel.md#primary), Home, Work, or any custom address label). * **Print:** A set of checkboxes controlling which name-related fields are included on each envelope: <!-- --> * **Name** — Prints the contact's full name. * **Company** — Prints the contact's company name. * **Department** — Prints the contact's department. * **Nickname** — Prints the contact's nickname. * **Country** — Prints the recipient's country. <!-- --> * **Except my country** — When Country is enabled, check this to suppress the country when it matches the sender's country. * **Color:** Click the color picker to choose the text color for the mailing address. * **Image:** Click Set to choose an image to print next to the mailing address. * **Font:** Click Set to choose a font face for the mailing address. * **Print my address:** Check to print the sender's return address, and choose the sender's address type ([Primary](/docs/busycontacts/47351-info-panel.md#primary), Home or Work). ### Envelopes — Orientation tab[​](#envelope-orientation "Direct link to Envelopes — Orientation tab") ![Envelopes](https://downloads.busymac.com/resources/img/busycontacts/printenv_3.png) * **Orientation:** Select the orientation of the Envelope (Portrait or Landscape). --- # Phone Dialing BusyContacts can dial phone numbers through an iPhone, Skype, and other third-party dialers. While viewing a contact, if you hover the pointer over a phone number, a link will appear enabling you to dial that phone number when clicked. ![hover](https://www.busymac.com/images/bct-hover-phone.png) The phone number will be dialed on an iPhone, Skype, or other third-party dialer, depening on your FaceTime Preference settings, described below. ## iPhone[​](#iphone "Direct link to iPhone") If you have an iPhone and are running Yosemite, the phone number will be dialed through your iPhone if you have [Continuity](https://support.apple.com/en-us/HT6337) configured. ![hover](https://www.busymac.com/images/bct-phone-dialing.png) Here are the instructions from [Apple's Help Page](https://support.apple.com/en-us/HT6337) on how to configure phone dialing via Continuity. With Continuity, you can make and receive cellular phone calls from your iPad, iPod touch, or Mac when your iPhone is on the same Wi-Fi network. To make and receive phone calls, here's what you need: 1. Sign in to the same iCloud account on all your devices, including your Mac. 2. Your iPhone needs to use iOS 8 or later. Your Mac needs to use macOS Yosemite. 3. All devices must be on the same Wi-Fi network. 4. All devices must be signed in to FaceTime using the same iCloud account. 5. Wi-Fi Calling needs to be off. Go to Settings > Phone. If you see Wi-Fi Calling, turn it off. ## Dialing Extensions[​](#extensions "Direct link to Dialing Extensions") You can append an extension to a phone number using a comma (,) or semicolon (;). Each behave differently, as in the following examples: * **(415) 555-1212,123** — An extension entered with a comma will pause for 2 seconds after the phone is answered before dialing the extension. * **(415) 555-1212;123** — An extension entered with a semicolon will wait for you to tap on the iPhone to dial the extension after the phone is answered. ## Skype[​](#skype "Direct link to Skype") Skype supports a number of [URL handlers as described here](https://docs.microsoft.com/en-us/skype-sdk/skypeuris/skypeuris). Using any of these, you can enter a URL into the BusyContacts and use that to place a call. For example, enter a contact in BusyContacts and enter the following into the URL field: * skype <!-- --> :someusername <!-- --> ?call Replacing "someusername" with a real Skype username. The next time you click on the URL, Skype will launch automatically and prompt you to place a call. You can explore other URIs listed on Microsoft's support page and use combination of them. --- # Exporting and Importing Contacts BusyContacts supports exporting contacts in vCard (`.vcf`) and CSV (`.csv`) formats, and importing contacts in vCard (`.vcf`) format. ## Exporting Contacts[​](#export "Direct link to Exporting Contacts") BusyContacts allows you to export contacts in two formats: * **vCard Format (`.vcf`)** – The standard format for sharing contact data with others or importing into other contact management apps. * **Spreadsheet Format (`.csv`)** – Useful for analyzing contact data in spreadsheet applications like Excel, Numbers, or Google Sheets. note When exporting vCards, the data that is exported for each card is what you see on screen. If you are in [Combined mode](/docs/busycontacts/47349-linking-and-merging-cards.md#combined-cards) the union of all the cards that make up a linked contact will be exported. Otherwise, if you are not in Combined mode, only the data from the selected card will be exported. note If your contacts have rich text (formatted) notes, those notes are stored separately and will not appear when the exported vCard is opened in another app. To include them, convert the notes to plain text first using **Format > Make Plain Text**. See [Rich text notes missing after export](/docs/faqs/rich-text-notes-not-showing-after-export.md) for details. ### Exporting vCards[​](#export-vcard "Direct link to Exporting vCards") To export contacts in vCard (`.vcf`) format, use any of the following methods: * **File > Export > Address Book** – Exports all contacts from the selected address book in the left sidebar. * **File > Export > Selected Cards** – Exports only the currently selected contacts. * **Drag & Drop** – Drag one or more contacts from BusyContacts to your Desktop to create a vCard file. #### vCard Compatibility[​](#vcard-compatibility "Direct link to vCard Compatibility") BusyContacts supports both **vCard 3.0 and 4.0** formats. While vCard 4.0 is more modern and feature-rich, many apps only support vCard 3.0. For best compatibility with other apps, you can change this setting in **BusyContacts > Settings > Advanced**. ![vCard Export Options](https://downloads.busymac.com/resources/img/busycontacts/pref-advanced.png) ### Exporting Contacts as CSV[​](#export-csv "Direct link to Exporting Contacts as CSV") BusyContacts now supports **CSV export**, allowing you to easily analyze and share contact data in spreadsheet applications. To export contacts as a CSV file: 1. Choose **File > Export > Spreadsheet (.csv)**. 2. Select the address book or specific contacts you want to export. 3. Click **Export** and choose a destination for the file. ![Export as CSV](https://downloads.busymac.com/resources/img/busycontacts/export-csv.png) ## Importing vCards[​](#import "Direct link to Importing vCards") You can import vCards by choosing File > Import, drag-n-drop, or double-clicking a vCard (VCF) file. When doing so, you are presented with a dialog asking you whether to import the vCards into a New Address Book or into an Existing Address Book. ![vCard Import](https://downloads.busymac.com/resources/img/busycontacts/import-vcf.png) If you choose to import the vCards into a new address book, a local address book called Imported Address Book will be automatically created and the vCards will be imported into it. This can be very handy for ensuring that you end up with the imported data that you were expecting. If the results of the import were successful, you can either re-import the vCards into an existing address book, or move the cards from the Imported Address Book to a different address book by selecting all the cards and dragging them to a different address book in the left sidebar. Then you can delete the Imported Address Book by control-clicking on it in the left sidebar and choosing Delete. ## CSV Import[​](#csv-import "Direct link to CSV Import") BusyContacts does not support importing of CSV files. If you need to import CSV data into BusyContacts, you can use macOS Contacts as an intermediary. You can import CSV files directly into macOS Contacts. Once you've done that, the data will sync to BusyContacts through the cloud (iCloud, Google, Exchange, etc.). If you are not syncing with a cloud service, you can import the CSV into macOS Contacts then export the data in vCard format to import into BusyContacts, as follows: 1. Import the CSV file into macOS Contacts. 2. In macOS Contacts, select the "Last Import" Smart Group in the left sidebar. 3. In macOS Contacts, select all of the cards in the smart group and choose File > Export > Export vCard, and save the vCard to your Desktop. 4. In BusyContacts, choose File > Import, and import the vCard file you exported in step 3. --- # Special Fields BusyContacts includes several special fields, in addition to the standard predefined fields you'd expect to find in a contact manager (phone, email, URL, address, etc.). Each of these fields can be shown by default on all cards in [Info Panel Preferences](/docs/busycontacts/49554-preferences.md#info-panel) or you can add fields to a single card using the [add field](/docs/busycontacts/47351-info-panel.md#add-field) menu. ### Pin[​](#pin "Direct link to Pin") The Pin field is a checkbox that can be used for marking important contacts. Pinned contacts are displayed at the top of the contact list, above all other contacts, making them easy to find. You can pin a contact in the Info Panel by checking the Pin checkbox, or by choosing Edit > Pin (or typing Command-/). For example, you may be reviewing your holiday mailing list from last year and using the Pin field to mark the ones that have been naughty or nice. You can then sort the List View by the Pin field, or create a Smart Filter to show only the contacts that are pinned, and perform further actions on them such as [tagging](/docs/busycontacts/47214-tags-groups.md) them or printing envelopes or mailing labels. ### Local Time[​](#time "Direct link to Local Time") The local time for the selected contact is displayed directly in the **Name Tile**, the area at the top of the Info Panel that shows the contact's name and photo. It appears below the contact's name fields, showing a clock icon alongside the current time in the contact's time zone. The time zone is determined from the contact's primary phone number. For example, a contact whose primary phone is in the 609 area code (New Jersey) will show the current Eastern time. You can enable this field in [Info Panel Preferences](/docs/busycontacts/49554-preferences.md#info-panel) or add it to an individual card via the [add field](/docs/busycontacts/47351-info-panel.md#add-field) menu. ![Local Time](https://downloads.busymac.com/resources/img/busycontacts/infostacked.png) ### Related[​](#related "Direct link to Related") The Related field allows you to enter the name of a related person (e.g. spouse, sibling, coworker, etc.). If a card for that person exists in BusyContacts the name will be auto-completed. You can click on the 'related' label and choose something more specific (spouse, child, mother, etc.) or enter a [custom label](/docs/busycontacts/49714-custom-field-types-and-labels.md). In browse mode you can click on a name in the Related field to open the corresponding card in a floating window (or hold down the option-key while clicking to open it in the same window). important There is a known issue in Apple Contacts where changes to the **Related Name** field may not sync properly with **iCloud.com** or **BusyContacts**. To ensure your updates are reflected correctly, make changes directly in the [online version of Contacts](https://www.icloud.com/contacts). ![tags](https://www.busymac.com/images/bct-related.png) ### Tags[​](#tags "Direct link to Tags") The Tags field allows you to instantly see and edit the Tags associated with a contact. See [Tags](/docs/busycontacts/47214-tags-groups.md) to learn more about this powerful feature. ![tags](https://www.busymac.com/images/bct-tag-tokens.png) ### Private Tags and Notes[​](#private "Direct link to Private Tags and Notes") The Private Tags and Notes fields allow you to store data for a contact that is not synced with the server. This might be useful if you are sharing an address book with others and want to keep certain information private. ![private tags and notes](https://www.busymac.com/images/bct-private-notes-tags.png) ### Attachments[​](#attachments "Direct link to Attachments") The Attachments field allows you to store file attachments with contacts. Note: iCloud limits the total size of a contact card to 256k, and that includes the profile photo. So, in most cases, you will not be able to add an attachment to a contact on iCloud unless it is very small. As a work around, you can drag an attachment onto a contact card and that will create a link to the attachment. ![attachments](https://www.busymac.com/images/bct-attachment.png) ### Modified[​](#modified "Direct link to Modified") The Modified field shows you when a contact was last edited and by who. ![modified](https://www.busymac.com/images/bct-modified.png) ### Show Dates[​](#dates "Direct link to Show Dates") The **show dates** checkbox controls whether a contact's birthdays, anniversaries, and death anniversaries appear in BusyCal. It is available on contacts with date fields. Anniversaries must use the built-in **anniversary** label; checking **show dates** does not include custom labels such as **Wedding**. See [Birthdays and Anniversaries](/docs/busycontacts/47353-birthdays-and-anniversaries.md#busycal) for setup steps. This setting is stored locally on each Mac and does not sync between devices. ![Show Dates](https://downloads.busymac.com/resources/img/busycontacts/infoshowdates.png) ### Date & Time stamp[​](#timestamp "Direct link to Date & Time stamp") While editing a contact, a **Date & Time** shortcut button appears in the toolbar. Clicking it inserts a date/time stamp into the Notes field using the default format. Long-clicking (or clicking and holding) the button reveals a menu of additional format options, including short date, long date, date & time, time only, weekday, month, and more. You can also access these formats via the **Edit > Insert Date & Time** menu. The keyboard shortcut is Command-'. By default the stamp is inserted at the top of the Notes field. To insert at the cursor position instead, use **Edit > Insert Date & Time Above Content** to toggle the insertion preference. ![date stamp](https://www.busymac.com/images/bct-date-stamp.png) --- # Me Card BusyContacts allows you to identify one of the cards in your database as your Me Card. A Me Card is necessary for sending and receiving meeting invitations in your calendar app, and has other special uses in macOS. If you defined a Me Card in macOS Contacts then it should already be synced with BusyContacts. You can select your Me card by choosing File > Go To My Card. A smiley face will appear next to your Me Card. If you wish to change your Me Card, you can do so by selecting a different card and choosing File > Make This My Card. ![My Card](https://downloads.busymac.com/resources/img/busycontacts/mycardprofile.png) caution If you are syncing with multiple iCloud accounts, each belonging to a different person, you must be careful when setting your Me Card as it could propogate to other accounts. If this applies to you and you are syncing with multiple iCloud accounts, make sure you are not in [Combined mode](/docs/busycontacts/47349-linking-and-merging-cards.md) and that you select only the card on your iCloud account when setting your Me Card. Also, make sure your personal iCloud account appears first in the left sidebar. You can change the ordering of the accounts in the left sidebar by dragging them. --- # Reset BusyContacts If an error is displayed when launching BusyContacts that the file couldn't be opened because it isn't in the correct format, your BusyContacts database may be corrupted. You can solve this by resetting BusyContacts. To reset BusyContacts, hold down the option-key while launching BusyContacts. When the startup options dialog appears, select Reset BusyContacts and click Continue. Resetting BusyContacts will disconnect from any cloud-based services, delete your BusyContacts database, and quit. ![reset](https://www.busymac.com/images/bct-safeboot-reset.png) After resetting, relaunch BusyContacts. If you were syncing with a cloud-based service like iCloud or Google, and those services do not automatically re-appear, you can reconnect to them by selecting BusyContacts > Settings > Accounts, and re-adding them. Any address books that are hosted on iCloud, Google or Exchange will be preserved and re-appear in BusyContacts once you connect to the server. If you had any local address books, those will have to be manually restored from one of the BusyContacts [automatic backups](/docs/busycontacts/49877-backup-and-restore.md). --- # Syncing with an iOS device You can sync BusyContacts with Apple Contacts on your iPhone and iPad. BusyContacts runs only on the Mac but it can sync with the built-in Contacts app on iOS through a cloud-based service. If you were previously syncing macOS Contacts and iOS Contacts through a cloud-based service, your iPhone should automatically sync with BusyContacts once you've configured BusyContacts to sync with the same account. BusyContacts will only sync contacts with an iOS device through a cloud-based service. BusyContacts will not sync local "On My Mac" contacts with the iPhone, nor will it sync with an iPhone via iTunes. --- # Using BusyContacts with iCloud iCloud is Apple’s free online service, which includes contact syncing among its many features. BusyContacts can connect to iCloud for syncing contacts across your devices. ## Syncing with iCloud[​](#syncing "Direct link to Syncing with iCloud") important Apple requires *all third-party* apps to connect to iCloud using a special **app-specific password**, which protects your real password. Before adding your iCloud account to BusyContacts, you must first generate an app-specific password. This extra step ensures security while allowing BusyContacts to sync with your iCloud data. [Learn how to generate an app-specific password](https://support.apple.com/HT204397). BusyContacts can use iCloud to sync contacts data across all your devices. To sync BusyContacts with iCloud, do the following: 1. **First and foremost**, navigate to <https://support.apple.com/HT204397> using your browser and follow instructions on generating an app-specific password for your iCloud account (see [demo video for BusyCal](/docs/busycal/70630-using-busycal-with-icloud.md#app-specific-password)). If you have already performed this step for some other app in the past or for another device running BusyContacts, you may re-use the same password on this device. App-specific passwords can be re-used multiple times in several apps, if desired. After you have generated an app-specific password, save it some place secure in order to re-use it on another device running BusyContacts. When unsure, generate a new one and copy / paste it somewhere secure. Best Practices Over the years we've gathered some best practices: * If you have a `@mac.com` email address, replace it with `@icloud.com` instead when using with BusyContacts ([learn why](/docs/faqs/mac-domain-icloud-sync.md)) * iCloud allows one to generate aliases for their primary iCloud email addresses. When using it with BusyContacts, you must only use your primary iCloud email address to login, aliases do not work. * Your device *must* be configured to **Set time and date automatically** under **System Settings > General > Date & Time** otherwise the password will superficially fail to work without an obvious reason. 2. Next, open **BusyContacts Menu > Settings > Accounts** 3. Click the `+` (plus) icon, near the bottom left corner of the settings dialog, to add a new account. 4. Choose **iCloud** from the Server Type pop-up menu, then enter your Apple ID / iCloud Email Address. 5. Enter the app-specific password generated in `step 1` above and click **OK**. ![New iCloud Account](https://downloads.busymac.com/resources/img/busycontacts/account_new_icloud.png) ## iCloud China (icloud.com.cn)[​](#icloud-china "Direct link to iCloud China (icloud.com.cn)") If your Apple ID uses **iCloud China** (`icloud.com.cn`), BusyContacts must connect to the China CardDAV endpoint (`contacts.icloud.com.cn`). See: * [BusyContacts: iCloud China (icloud.com.cn) sync issues](/docs/faqs/busycontacts-icloud-china-sync.md) ## iCloud Limitations[​](#limitations "Direct link to iCloud Limitations") iCloud limits the amount of contact data you can sync, as follows: * Total number of contact cards: 50,000 * Maximum size of a contact card: 256KB * Maximum size of a contact photo: 224KB * Maximum size of a contact group: 256KB * Maximum size of all contact cards: * Card text: 48MB * Card photos: 200MB * Supported file types for a contact photo: JPEG, BMP, PNG, GIF * vCard import limits: * Total number of vCards: 50,000 * Maximum size of a vCard: 256KB (photo + text) * Maximum photo size for a vCard: 224KB For more information, see [iCloud: Limits for contact, address books and Reminders](https://support.apple.com/en-us/HT202158). ## ⚠️ Troubleshooting[​](#troubleshooting "Direct link to ⚠️ Troubleshooting") ### “Service is currently unavailable”[​](#service-unavailable "Direct link to “Service is currently unavailable”") If you see “Service is currently unavailable” when syncing with iCloud Contacts, see: * [BusyContacts: iCloud says “Service is currently unavailable”](/docs/faqs/busycontacts-icloud-service-unavailable.md) ### Tag/Group too large (iCloud group vCard size limit)[​](#tag-group-too-large "Direct link to Tag/Group too large (iCloud group vCard size limit)") If you’re using **iCloud** and BusyContacts reports that a **Tag/Group is too large** (or iCloud mentions **incoming vCard size**), you’ve likely hit iCloud’s maximum contact group size. This most commonly happens when a single Tag (mapped to an iCloud Group) has **tens of thousands of contacts**. The practical limit is often around **\~20,000–25,000** contacts, but it varies because the limit is ultimately based on the group vCard’s total size. Recommended fix: **split the tag into smaller tags** (or remove members), then sync again. See: * [BusyContacts: iCloud rejected changes because a tag/group is too large](/docs/faqs/busycontacts-icloud-tag-group-too-large.md) ### Contacts or Tags Missing, Strange Characters Appearing[​](#corrupt-contacts "Direct link to Contacts or Tags Missing, Strange Characters Appearing") If you’re seeing strange characters like `X-...` next to contact names or phone numbers, your iCloud address book may have become corrupted. This is due to a known issue affecting many users and is **not caused by BusyContacts**. There’s a long-running bug in iCloud that has been widely reported by users on Apple’s support forums: * <https://discussions.apple.com/thread/254036577> * <https://discussions.apple.com/thread/253873128> Apple has been made aware of the issue (bug report: **FB11870475**), but the root cause remains unclear. Some suspect third-party apps or services syncing with iCloud (e.g., Outlook), but this hasn’t been confirmed. Even if you stop using BusyContacts, the issue can continue appearing in Apple Contacts because it originates from iCloud itself. If you're affected, we recommend contacting Apple Support and referencing the above forum threads and bug report. Unfortunately, there’s no perfect fix, but here’s the best path forward: 1. Go to [iCloud.com > Settings > Data Recovery](https://www.icloud.com/settings/) and restore your contacts from a previous backup. 2. Once restored, consider exporting your contacts and switching to another sync service like **Google Contacts**, **Fastmail**, or another provider. 3. If you continue with iCloud and the issue returns, switching services is strongly recommended. Users who migrated have not reported the issue again. This is understandably frustrating, and we’re continuing to advocate for a fix with Apple. ### Repeated Failures or 503 / 427 Sync Errors[​](#bulk-operation-failures "Direct link to Repeated Failures or 503 / 427 Sync Errors") iCloud Professional Use iCloud's contact sync seems to have been designed for personal use with occasional updates. If you're using contacts professionally or managing them at scale, iCloud's limitations will significantly impact your productivity. Migration to a professional-grade service is the only reliable long-term solution. iCloud enforces aggressive throttling and rate limiting that can severely impact contact management workflows. If you’re tagging many contacts at once (e.g., more than 20), or performing bulk edits across multiple contacts within a short span of time, iCloud may temporarily block further sync attempts, resulting in repeated errors such as **503** or **427** server-side errors. iCloud's sync restrictions include: * **Batch operation limits**: Editing more than 15-20 contacts within a few minutes triggers throttling * **Tag operation restrictions**: Bulk tagging operations are particularly problematic * **Update frequency caps**: Rapid successive changes to the same contacts compound the issue * **Recovery delays**: Once throttled, iCloud may block further updates for extended periods if you keep retrying While this usually resolves on its own after some time, it can be disruptive, especially if you manage a large contact database for business use. #### Recommended Solution: Switch Services[​](#recommended-solution-switch-services "Direct link to Recommended Solution: Switch Services") If you're experiencing repeated throttling issues and have a large contact list you frequently make changes to, **we strongly recommend migrating away from iCloud** to a service better equipped for professional contact management: * **Google Contacts**: Handles large-scale operations without aggressive throttling * **Fastmail**: Robust sync infrastructure designed for power users * **Microsoft Outlook/Exchange**: Enterprise-grade sync capabilities * **CardDAV servers**: Self-hosted or professional CardDAV services These sync options are specifically designed to handle frequent, bulk operations, as well as large contact databases that iCloud seems to struggle with. In some cases, a mix of third party apps and services can even [corrupt your iCloud contacts as described here](#corrupt-contacts). --- # Using BusyContacts with Google Google is a free service for Google users that lets you sync contacts. BusyContacts can connect to Google, using it to sync contacts across your devices. ## Syncing with Google[​](#syncing "Direct link to Syncing with Google") BusyContacts can use Google to sync contacts across your devices. To sync BusyContacts with Google, do the following: important Before you proceed, please note that Google authentication will fail if your system time is incorrect. Open **System Settings > General > Date & Time** and ensure **Set time and date automatically** is checked. 1. Choose BusyContacts > Settings > Accounts. 2. Click the `[+]` (plus) icon to add a new account, from the lower left part of the dialog. 3. Choose Google from the Server Type pop-up menu, enter your Google email address, and click **OK**. 4. In the window that appears, enter your Google email address and click Next to sign-in, you'll be presented with the following greeting once you do. Click **Continue**. 5. Next, you'll be presented with a long list of permissions. You **must** click **Select all** on this screen and then click **Continue**. Unchecking any option will break the authentication flow and BusyContacts will not be able to perform sync. To act as a contacts app replacement, BusyContacts requires all of these permissions to allow you to manage your address book. Critical You must grant ALL permissions when prompted by Google. Unchecking any permission will prevent BusyContacts from syncing properly with your Google Contacts. These are all required permissions, needed for the various address book related functions to work correctly. 6. Finally, you should see a confirmation screen once authentication has completed. You may close the browser tab at this point. BusyContacts begins syncing with Google. ## Google Labels vs BusyContacts Tags[​](#google-labels "Direct link to Google Labels vs BusyContacts Tags") Google Contacts uses a label system that does not map cleanly to the "Groups" concept used by CardDAV/iCloud. * BusyContacts Tags do **not** sync to Google Labels, and Google Labels do **not** sync back as BusyContacts Tags. * When syncing with Google, Tags may appear as extra contact-like records in Google Contacts. For details (and why this happens), see: * [Tags (Groups)](/docs/busycontacts/47214-tags-groups.md#google-contacts) * [Tags in BusyContacts are appearing as records in Google Contacts](/docs/faqs/98773-tags-in-busycontacts-are-appearing-as-records-in-google-contacts.md) ## Syncing with iCloud and Google[​](#icloud-google "Direct link to Syncing with iCloud and Google") BusyContacts can sync with both iCloud and Google. But you cannot sync iCloud contacts with Google or vice versa. Instead, you can host some contacts on iCloud and some on Google, and configure BusyContacts and your iOS devices to sync with both services. --- # Using BusyContacts with Exchange Microsoft Exchange servers provide a number of online services, among which is syncing and sharing contacts. BusyContacts can connect to Exchange servers, using them to sync contacts across your devices and share them with others. For details on using BusyContacts with Exchange, see the following: * [Syncing with Exchange](#syncing) * [Sharing contacts with others through Exchange](#sharing) * [Exchange Limitations](#limitations) ## Syncing with Exchange[​](#syncing "Direct link to Syncing with Exchange") BusyContacts can use Exchange servers to sync contacts across your devices. To sync BusyContacts with Exchange, do the following: 1. Choose BusyContacts > Settings > Accounts. 2. Click the + (plus) icon to add a new account. 3. Choose Exchange (or Office 365) from the Server Type pop-up menu, enter your Exchange email address and password, and click OK. 4. The autodiscovery process begins and you may be prompted to enter additional login info. Once the process is complete, BusyContacts syncs with Exchange. ## Sharing contacts with others through Exchange[​](#sharing "Direct link to Sharing contacts with others through Exchange") BusyContacts enables you to share contacts with other Exchange users. Once each user has configured BusyContacts to sync with their personal Exchange account, you can share contacts with each other through Exchange. When an address book is shared through Exchange, contacts can be edited by any user and changes sync between them. Contact sharing involves two steps. First, the host must share contacts with one or more users. Second, the client must subscribe to the shared contacts from the host. ### Share an address book with other Exchange users[​](<#share-a-address book-with-other-exchange-users> "Direct link to Share an address book with other Exchange users") You can share an address book through Exchange with other Exchange users in your organization, as follows: 1. Control-click the address book in the left sidebar and choose Get Info from the contextual menu. 2. Click the plus (+) button and then enter the Exchange email address of the person you want to share the address book with. ![Exchange address book Info](https://www.busymac.com/images/bct-share-dialog.png) 3. Choose the access privileges you want to grant them. Choices are: * **Read Only** — User can view existing contacts but cannot create or edit them. * **Read & Create** — User can view existing contacts and create new ones, but cannot edit existing ones. * **Read & Write** — User can view, edit, and create contacts. * **Delegate** — Same as Read & Write. 4. Click OK. An icon appears next to the address book in the left sidebar indicating that it is shared. 5. The person you shared with will need to add the shared address book as described next. note To share a secondary address book with someone, you must also share your primary address book with them, with at least Read access. Once you’ve granted someone Read access or higher to your primary address book, you can share secondary address books with them. ### Subscribe to shared address book[​](#subscribe-to-shared-contacts "Direct link to Subscribe to shared address book") If someone has shared an address book with you through Exchange, you must configure your Exchange account preferences to show the shared address book, as follows: 1. Choose BusyContacts > Settings > Accounts, select your Exchange account in the list on the left, click the Sharing tab, click the plus (+) button, and enter the Exchange email address of the user who is sharing contacts with you. 2. The shared address books then show up in the left sidebar, where you can subscribe to them by selecting their checkboxes. ![Exchange shared address book](https://www.busymac.com/images/bct-share-exchange.png) ### Public Contacts[​](#public-contacts "Direct link to Public Contacts") Exchange supports public contacts that can be shared with all users in an organization. Public contacts are created by your network administrator. To subscribe to a public address book: 1. Choose BusyContacts > Settings > Accounts, select your Exchange account in the list on the left, click the Sharing tab, and then click Public Address Books. 2. In the browser that appears, navigate to the public folder that contains the address book you want to subscribe to. Select it and click Subscribe. ![Public contacts browser](https://www.busymac.com/images/bcl3mac-prefs-accounts-exchange-sharing-subscribe.png) 3. The public address book appears in the left sidebar. If you want to unsubscribe from a public address book, Control-click it in the left sidebar and choose Unsubscribe from the contextual menu. ### Notifications of changes to shared contacts[​](#notifications-of-changes-to-shared-contacts "Direct link to Notifications of changes to shared contacts") When sharing contacts with others, there are two options you may want to enable, for keeping track of changes to contacts on shared contacts: * First, in BusyContacts > Settings > Advanced, select “Confirm changes to cards on shared address books” if you want to display a warning when you edit or delete an event on a shared address book. ![Confirm changes to contacts on shared contacts](https://www.busymac.com/images/bct-pref-advanced.png) * Second, in the address book Info dialog for any given address book (which you can display by double-clicking the address book name in the address book List), select “Show change notifications in Inbox” to display a badge on the app icon and a message in the Inbox when contacts are added or changed by others, or deselect it to avoid seeing badges and Inbox notifications for that address book. ![Show notifications in Inbox](https://www.busymac.com/images/bcl3mac-caldav-info-top.png) Click OK to dismiss each message in the Inbox. Or, hold down Option and OK changes to OK All, enabling you to dismiss all messages with a single click. ## Exchange Limitations[​](#limitations "Direct link to Exchange Limitations") Exchange places a number of limits on contacts, which restrict the range of options you can use in BusyContacts. ### Exchange Server versions supported[​](#exchange-server-versions-supported "Direct link to Exchange Server versions supported") BusyContacts supports Exchange 2007 SP3 and later, but BusyMac recommends Exchange 2013, which is more reliable than older versions. ### Outlook.com and personal accounts[​](#outlook-com-is-not-supported "Direct link to Outlook.com and personal accounts") This legacy Exchange/EWS connection type does not support outlook.com or Microsoft 365 personal/home accounts. For those accounts, use **Office 365 (Microsoft Graph)**. ### Push[​](#push "Direct link to Push") Push is not supported in Exchange 2007. Push is supported only in Exchange 2010 or later. ### Sharing secondary contacts[​](#sharing-secondary-contacts "Direct link to Sharing secondary contacts") To [share a secondary address book](#sharing) with someone, you must also share your primary address book with them, with at least Read access. Once you’ve granted someone Read access or higher to your primary address book, you can share secondary address books with them. --- # Using BusyContacts with CardDAV CardDAV is an industry standard for contact servers. BusyContacts can connect to CardDAV servers, using them to sync contacts across your devices. **Please note - these instructions are no longer applicable on macOS 10.13 onwards.** ## Syncing with a CardDAV Server[​](#syncing "Direct link to Syncing with a CardDAV Server") To sync BusyContacts with a CardDAV server, do the following: 1. Choose BusyContacts > Settings > Accounts. 2. Click the plus (+) button to add a new account. 3. Choose CardDAV from the Server Type pop-up menu, and then enter your user name, password, and server address and click OK. For the server address, enter the domain (e.g., myserver.com), and BusyContacts attempts to figure out the full path to your account. 4. BusyContacts begins syncing with the server and your calendars will appear in the left sidebar. ## Hosting contacts on a CardDAV server[​](#hosting "Direct link to Hosting contacts on a CardDAV server") If you want to sync contacts between a macOS and iOS device without having to rely on a cloud syncing service like iCloud or Google, you can host your own CardDAV server on your local area network. BusyContacts and the built-in Contacts app on macOS and iOS are all client apps that sync with CardDAV servers. This means any data you enter into one client app will sync to all other client apps through the server. As long as you have all client apps configured to sync with the same server, all your calendar data remains in sync. All contacts you want to sync between your Macs and iOS devices must be hosted on a CardDAV server. Following are some examples of CardDAV servers. ### macOS Server[​](#running-os-x-server "Direct link to macOS Server") Apple's macOS Server functions as a CardDAV server much like iCloud except that it’s accessible only on your local area network. It can be [purchased from the Mac App Store](https://itunes.apple.com/us/app/os-x-server/id714547929?mt=12#) for $20. Here are some resources that explain how to set up macOS Server: * [Take Control of macOS Server](https://www.takecontrolbooks.com/osx-server) * [Macworld — iTunes iOS syncing gone? Solve it with Server!](https://www.macworld.com/article/2061183/itunes-ios-syncing-gone-solve-it-with-server-) * [Todd Olthoff’s YouTube channel — Mac 10.9 Mavericks Server Tutorials](https://www.youtube.com/playlist?list=PLP9lCFXVZfRNJx3S2dqM3h0NEZ5Xto2iZ) ### Other CardDAV Servers[​](#other-CardDAV-servers "Direct link to Other CardDAV Servers") If macOS Server doesn’t meet your needs, you may want to consider other third-party servers, such as Kerio or Zimbra. Both servers support CardDAV, as well as Exchange EWS, and are fully compatible with BusyContacts. * [Kerio Connect](https://www.kerio.com/products/kerio-connect) * [Zimbra Collaboration](https://www.zimbra.com/products/zimbra-collaboration/features) --- # Using BusyContacts with Fruux Fruux is a popular third-party CardDAV server. As such, you can connect to it with BusyContacts for contact syncing and sharing. BusyContacts can connect to Fruux, using it to sync contacts across your devices and share them with others. **UPDATE:** As of July 2020, Fruux servers have introduced a bug where it would either return malformed responses to requests or would fail to process requests of a certain size. This bug has not been fixed (last checked Jan 2022) and affects everyone. Fruux customer care has not responded to complaints. Unfortunately we would not recommend using Fruux. Instead please explore many of the other popular services out there: iCloud / Google / Fastmail and so on. ## Syncing with Fruux[​](#syncing "Direct link to Syncing with Fruux") BusyContacts can use Fruux to sync contact data across your devices. To sync BusyContacts with Fruux, do the following: 1. Choose BusyContacts > Settings > Accounts. 2. Click the + (plus) button to add a new account. 3. Choose Fruux from the Server Type pop-up menu, enter your Fruux email address and password, and click OK. If BusyContacts fails to connect, this may suggest that you have not yet setup an Address Book in Fruux. Login with your account on [](https://www.fruux.com)[www.fruux.com](http://www.fruux.com), click on **Contacts** and then on *Add a new address book*\* in case you see a *You don't have an address book* notice. Once you have done this, try logging into your account again via BusyContacts. ## Sharing contacts with others through Fruux[​](#sharing "Direct link to Sharing contacts with others through Fruux") BusyContacts enables you to share address books with other Fruux users. Once each user has configured BusyContacts to sync with their personal Fruux account, you can then share address books with each other through Fruux. When an address book is shared through Fruux, contacts can be edited by any user and changes sync between them. ### Sharing address books with other Fruux users[​](#share-a-contact-with-other-fruux-users "Direct link to Sharing address books with other Fruux users") To share an address book with other Fruux users: 1. Control-click the address book in the left sidebar and choose Get Info from the contextual menu. 2. Click the plus (+) button and enter the Fruux email address of the person you want to share the address book with. Select “Allow Write” if you want them to have read-write access, or deselect it to give them read-only access. 3. Click OK. BusyContacts begins syncing with Fruux and an icon appears next to the contact name indicating that it is shared. 4. The person(s) you shared with will receive a notification from Fruux inviting them to add the shared contact. If they accept, the shared contact appears in the left sidebar. ### Notifications of changes to shared contacts[​](#notifications-of-changes-to-shared-contacts "Direct link to Notifications of changes to shared contacts") When sharing contacts with others, there are two options you may want to enable, for keeping track of changes to contacts on shared contacts: * First, in BusyContacts > Settings > Advanced, select “Confirm changes to cards on shared address books” if you want to display a warning when you edit or delete an event on a shared address book. ![Confirm changes to contacts on shared contacts](https://www.busymac.com/images/bct-pref-advanced.png) * Second, in the address book Info dialog for any given address book (which you can display by double-clicking the address book name in the address book List), select “Show change notifications in Inbox” to display a badge on the app icon and a message in the Inbox when contacts are added or changed by others, or deselect it to avoid seeing badges and Inbox notifications for that address book. ![Show notifications in Inbox](https://www.busymac.com/images/bcl3mac-caldav-info-top.png) Click OK to dismiss each message in the Inbox. Or, hold down Option and OK changes to OK All, enabling you to dismiss all messages with a single click. --- # Business Card Reader BusyContacts includes a powerful Business Card Reader that uses advanced text recognition and natural language processing to quickly convert business cards and images into contacts. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycontacts/videos/bct-business-card-import_web.webm) ## Overview[​](#overview "Direct link to Overview") The Business Card Reader analyzes images to extract contact information using Apple's Vision framework (on-device) for text recognition combined with natural language processing. This feature dramatically speeds up data entry from physical business cards, screenshots, or any image containing contact information. Privacy and Security All text recognition and processing happens locally on your Mac using Apple's Vision framework and on-device natural language processing. No images or data are sent to external servers, ensuring your contacts remain private and secure. ## Key Features[​](#key-features "Direct link to Key Features") * **Advanced Text Recognition** – Uses Apple's Vision framework to accurately detect text in images * **Natural Language Processing** – Intelligently parses detected text to identify names, companies, phone numbers, emails, and addresses * **Multiple Input Methods** – Import images via drag and drop, file selection, or Photos library * **QR Code Support** – Automatically detects and imports vCard QR codes * **Manual Text Selection** – Copy detected text manually when editing the contact * **Real-time Preview** – See extracted information before creating the contact ## How to Use the Business Card Reader[​](#how-to-use-the-business-card-reader "Direct link to How to Use the Business Card Reader") Access the Business Card Reader through **File > New Contact from Image** or press **Command-Option-I**. ![Business Card Reader Window](https://downloads.busymac.com/resources/img/busycontacts/business-card-reader.png) ## Input Methods[​](#input-methods "Direct link to Input Methods") ### Drag and Drop[​](#drag-and-drop "Direct link to Drag and Drop") Simply drag an image file from Finder, a web browser, or any other application directly into the drop zone. You can also drop the image directly on BusyContact's app icon in the macOS dock. The reader accepts common image formats including PNG, JPEG, TIFF, HEIC, and more. ### File Selection[​](#file-selection "Direct link to File Selection") Click the **Choose Image** button or click anywhere in the drop zone to browse and select an image file from your Mac. ### QR Code Import[​](#qr-code-import "Direct link to QR Code Import") When you drop an image containing a vCard QR code, the reader automatically detects it and opens the import dialog. For more information about QR codes, see [QR Code Generation](/docs/busycontacts/qr-code-generation.md#import-qr-codes). ## Understanding the Interface[​](#understanding-the-interface "Direct link to Understanding the Interface") ### Image Display (Left Panel)[​](#image-display-left-panel "Direct link to Image Display (Left Panel)") Shows the selected business card or image. ### Detected Text (Right Panel)[​](#detected-text-right-panel "Direct link to Detected Text (Right Panel)") Displays all text recognized from the image using OCR technology. This text is: * **Selectable and copyable** – Useful for manually copying information when editing the contact * **Raw and unprocessed** – Shows exactly what was detected from the image * **Reference material** – Helps verify the accuracy of the parsed information ### Parsed Contact Information (Bottom Panel)[​](#parsed-contact-information-bottom-panel "Direct link to Parsed Contact Information (Bottom Panel)") Shows the contact data that BusyContacts extracted using natural language processing: * **Intelligently organized** – Information is categorized into appropriate fields * **May not be 100% accurate** – Review and edit as needed * **Time-saving** – Provides a strong starting point that's faster than manual entry ## Creating the Contact[​](#creating-the-contact "Direct link to Creating the Contact") 1. Review the parsed information in the bottom panel 2. Click **Create Contact** when ready 3. The contact opens in edit mode where you can: <!-- --> * Verify and correct any information * Add missing details * Copy text from the detected text panel if needed 4. Click **Done** to save the contact ## Tips for Best Results[​](#tips-for-best-results "Direct link to Tips for Best Results") * **Use clear, high-quality images** – Better image quality leads to more accurate text recognition * **Standard layouts work best** – Traditional business card formats are parsed most accurately ## Supported Image Formats[​](#supported-image-formats "Direct link to Supported Image Formats") The Business Card Reader supports all common image formats: * PNG * JPEG/JPG * TIFF/TIF * HEIC/HEIF * BMP * GIF * WebP --- # QR Code Generation BusyContacts includes a built-in QR code generator that creates scannable codes from your contact information, making it easy to share vCard data with others. [Your browser does not support playing the embedded video](https://downloads.busymac.com/resources/img/busycontacts/videos/bct-qr-code_web.webm) ## Overview[​](#overview "Direct link to Overview") The QR Code Generator allows you to instantly create QR codes from any contact in your address book. When scanned with a smartphone camera, these codes automatically add the contact information to the device's address book. ## Key Features[​](#key-features "Direct link to Key Features") * **vCard QR Codes** – Generate QR codes containing complete vCard data including name, phone numbers, emails, and addresses * **Smart Error Correction** – Automatically adjusts error correction levels to ensure reliable scanning * **Share & Export** – Share QR codes directly via macOS sharing services or save as PNG images * **Drag & Drop** – Drag QR code images directly to other applications - even within BusyContacts! * **Import QR Codes** - Drag QR code image directly on top of BusyContact's app icon in the dock ## How to Generate a QR Code[​](#how-to-generate-a-qr-code "Direct link to How to Generate a QR Code") 1. Select any contact in BusyContacts 2. Choose **File > Create QR Code** from the menu (or use the `...` toolbar button below the contact) 3. The QR Code Generator window appears with your contact's vCard data encoded ![QR Code Generator Window](https://downloads.busymac.com/resources/img/busycontacts/qr_code.png) ## Sharing QR Codes[​](#sharing-qr-codes "Direct link to Sharing QR Codes") ### Save to Disk[​](#save-to-disk "Direct link to Save to Disk") Click the **Download** button in the toolbar to save the QR code as a PNG image file. The file will be named after the contact for easy identification. ### Share via macOS Services[​](#share-via-macos-services "Direct link to Share via macOS Services") Click the **Share** button to access all macOS sharing services, such as AirDrop to nearby devices or Mail / Message as an attachment. ### Drag and Drop[​](#drag-and-drop "Direct link to Drag and Drop") Simply drag the QR code image from the window to any application that accepts images. ## Import QR Codes[​](#import-qr-codes "Direct link to Import QR Codes") BusyContacts can import contact information from QR code images containing vCard data: 1. **From Image Files** – Drag any QR code image file (PNG, JPEG, etc.) directly onto the BusyContacts icon in the Dock 2. **From Websites** – Drag QR code images from websites directly onto the BusyContacts icon 3. **From Screenshots** – Take a screenshot of a QR code and drag it from your Desktop onto the app icon When a valid vCard QR code is detected, BusyContacts will automatically decode it and create a new contact with the embedded information. If the contact already exists, you'll be prompted to update or merge the information. --- # Frequently Asked Questions Here are our most common questions: <!-- --> * [BusyContacts Top FAQs](/docs/faqs/busycontacts-top-faqs.md) * [Licensing Explained](/docs/faqs/120616-licensing-explained.md) * [Why is my iCloud account showing only read only calendars?](/docs/faqs/apple-calendar-read-only.md) * [Office 365 Connectivity Problems](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md) * [Outlook Connection Issues](/docs/faqs/outlook-personal-account-connection-issue.md) * [Deploying via MDM](/docs/faqs/mdm-installation.md) * [Deploying BusyContacts via MDM](/docs/faqs/busycontacts-mdm-installation.md) * [Google Calendar showing Birthdays in main calendar](/docs/faqs/144716-google-calendar-showing-birthdays-in-main-calendar.md) * [BusyContacts update stuck on Converting Database](/docs/faqs/130984-busycontacts-update-stuck-on-converting-database.md) * [Alarm Dismissals Not Syncing](/docs/faqs/alarm-dismissals-not-syncing-across-devices.md) * [Alarm Sound Not Syncing](/docs/faqs/alarm-sound-not-syncing-across-devices.md) * [Todoist Login Blank Screen](/docs/faqs/153671-todoist-login-blank-screen-in-busycal-ios.md) * [iCloud login failing or sync not working](/docs/faqs/71150-unable-to-log-into-icloud-i-m-seeing-password-incorrect-prompts.md) * [How can I share minimal set of logs](/docs/faqs/how-to-send-minimal-logs.md) * [WAN Sync is no longer working](/docs/faqs/120196-wan-sync-is-no-longer-working.md) * [Can't delete the Reminders ⚠️ list](/docs/faqs/unable-to-delete-reminders-warning-list.md) * [Reminders from iOS 13 / macOS 10.15 Reminders aren't syncing](/docs/faqs/112428-reminders-from-ios-13-macos-10-15-reminders-aren-t-syncing.md) * [Zoom account keeps requesting to be reauthorized](/docs/faqs/122644-zoom-account-keeps-requesting-to-be-reauthorized.md) * [I cannot log into my Yahoo account, it says my password is incorrect](/docs/faqs/98776-i-cannot-log-into-my-yahoo-account-it-says-my-password-is-incorrect.md) --- # How to setup sync with Synology You need to manually provide a server address in the correct format in order to sync with a Synology account ## Synology[​](#synology "Direct link to Synology") Please note: The following information has been shared with us by a BusyCal user who has successfully tested BusyCal with a Synology Calendar Server. This information is being supplied as-is. We are aware of at least two other instances where these settings have greatly differed between Synology server versions. 1. Launch BusyCal and open Preferences. Click on Accounts and click + 2. Select CalDAV from the Server Type selection 3. In Server Address, enter the following address: *https\://\<HOSTNAME>:\<PORT>**/homes/username/Calendar/*** Substitute: \<HOSTNAME> with your hostname, such as my.server.com \<PORT> with the correct port, normally 5006 or 5001 If the above does not work, you will need to refer to Synology's user guide in order to determine the correct path. Disclaimer: Synology may not be fully compatible with BusyCal due to its various limitations. --- # How can I try the latest BusyCal without losing my current version You can evaluate the latest BusyCal by having both the new version and your current version installed side by side as follows: 1. Open Finder and navigate to the Applications folder 2. Rename the installed copy of BusyCal.app to "BusyCal Old.app" (to preserve your current version) 3. [Download the latest BusyCal](https://www.busymac.com/download/BusyCal.zip) and run the installer. 4. Launch the latest BusyCal and go through the setup assistant. 5. If BusyCal does not automatically connect to your iCloud, Google or Exchange accounts, you may connect to them manually in BusyCal > Preferences > Accounts. After you install and setup the latest BusyCal, you can quit the new version and launch your previous version from Finder > Applications > BusyCal Old.app (the app you renamed earlier). This way you can have both versions running side by side and easily switch between them to compare features and functionality. --- # How can I change the event text color? BusyCal defaults to displaying event titles using the calendar or tag color. There are several ways to control and customize event text colors: ## Changing Individual Event Colors[​](#changing-individual-event-colors "Direct link to Changing Individual Event Colors") To change the color of specific events, you can use [Tags](/docs/busycal/70597-tags.md) or the Color property: ### Using Colored Tags[​](#using-colored-tags "Direct link to Using Colored Tags") * Add a colored tag to any event to override its calendar color * Go to **Edit > Edit Tags** to create and assign colors to tags * Apply tags via the Tags field in the Info Panel or by right-clicking an event ### Using the Color Property[​](#using-the-color-property "Direct link to Using the Color Property") * In the Info Panel, use the **Color** dropdown to quickly assign colors * This automatically creates a colored tag for the event * You can also enter custom hex color codes (e.g., `#FF0000` for red) ## Event Text Color Display Settings[​](#event-text-color-display-settings "Direct link to Event Text Color Display Settings") Go to [Settings > Appearance](/docs/busycal/70607-preferences.md#appearance-preferences) to configure how event text is displayed: * **Calendar/Tag Color** - Display event text using either the calendar color or tag color if applied (default) * **Calendar Color** - Display event text only in the calendar color (ignores tag colors) * **Black** - Display all event names in black text with colored bullets When using colored text, BusyCal darkens the colors slightly by default to improve readability. To use the full vivid colors instead, uncheck: * BusyCal > Settings > Appearance > Darken text to increase readability ## Show Rich Text Option[​](#show-rich-text-option "Direct link to Show Rich Text Option") If your events aren't showing colored text, bold, italics, or other formatting, check that rich text is enabled: Go to [View > Show Rich Text](/docs/busycal/70586-the-busycal-window.md#cv-view-menu) and ensure this option is checked. When unchecked, all event text will appear in plain black text regardless of your color settings. --- # Snooze alarms from Outlook are not appearing in BusyCal Snoozes are not pushed to the server by Outlook BusyCal snoozes are actual alarms that we push to the servers so that all clients, including OutLook, pick it up. OutLook on the other hand is probably not creating an actual alarm (i.e. not saving it along with the event as iCalendar data) and instead saving it within the bounds of the app itself, thus BusyCal cannot pick it up. --- # Birthday set for a contact in Google is not syncing with BusyContacts Unfortunately, Google does not sync the Birthday field with 3rd party apps, and so this won't sync back to BusyContacts. However, you will need to manually make this change in each of your contacts in BusyContacts and this should in fact sync back to Google Contacts. Open Preferences in BusyContacts > Info Panel and then from the "Show Field" drop down, select the "Date" field. Now click on the Date field that shows up in the preview contact card, and select "birthday". --- # Shared calendars keep disappearing from our Exchange account This is due to incorrect permissions set when setting up sharing in Exchange Note: To share a secondary calendar on Exchange with someone, you must also share your primary calendar with them, with at least Availability access. Once you’ve granted someone Availability access or higher to your primary calendar, you can share secondary calendars with them. Please also go through [steps explained here](/docs/busycal/70642-using-busycal-with-exchange-office-365.md#subscribe-to-shared-calendars). Here is a post on Microsoft forums: <https://social.msdn.microsoft.com/Forums/office/en-US/ef3baa27-d3cc-45c4-87be-c70e59663b33/ews-what-things-could-cause-the-error-the-specified-folder-could-not-be-found-in-the-store?forum=exchangesvrdevelopment> Essentially, if a user you enter into BusyCal's **Sharing** tab shows "No Access" or keeps dropping after a little while, this is an indication that the user has not given you read or write access to their calendar. There are various levels of permissions that can be configured when setting up sharing. Ensure that you have at least **read** permission to the user's calendar events / tasks. \###Their proposed solution: If you go into Active Directory Users and Computers, view the properties on one of the problematic accounts, click on the Security tab, click the Advanced button, the "Allow inheritable permissions..." checkbox needs to be checked. In our case, it was not checked, so we need to check it. After doing that, we then needed to remove and add back the full access delegate permissions using the Exchange Management Console. *Another user posted:* We just found the resolution for this one as well. Although the mailbox had the proper credentials, apparently the calendar didn't. Once we added that admin account to the calendar, the error went away and the calendar entries are posting as they should. --- # Unable to connect to an Office 365 / Outlook account Office 365 accounts can fail to connect because of the following reasons: #### i) Exchange Connections No Longer Supported by Microsoft Office[​](#i-exchange-connections-no-longer-supported-by-microsoft-office "Direct link to i) Exchange Connections No Longer Supported by Microsoft Office") If you're on an Office 365 account, note the two Microsoft timelines: * **Already happened:** Exchange Online Basic Authentication for EWS was turned off (starting October 1, 2022, with enforcement completed in early 2023). Apps using EWS Basic Auth stopped working then. * **Upcoming protocol retirement:** Microsoft announced phased EWS retirement for Exchange Online, with initial blocking starting October 1, 2026 and full shutdown on April 1, 2027. You should instead: * Delete the account from BusyCal / BusyContacts first * Add it again, but this time select **Office 365 (Microsoft Graph)** from the list This uses their latest sync APIs and is the only recommended way of connecting to Office 365 accounts. For more details: * [Using BusyCal iOS with Office 365 (Microsoft Graph)](/docs/busycalios/using-busycalios-with-office-365-microsoft-graph.md) * [Using BusyCal with Office 365 (Microsoft Graph)](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) * [Using BusyContacts with Office 365 (Microsoft Graph)](/docs/busycontacts/140983-using-busycontacts-with-office-365-microsoft-graph.md) #### ii) Account Admin consent is required[​](#consent-required "Direct link to ii) Account Admin consent is required") You may see an **Admin Consent Required** message when authenticating and allowing the app to connect to your account. If that is the case, the Office 365 portal settings have blocked or not given the app explicit consent to access the account. Unfortunately, without the appropriate permissions, it won't allow the app to connect, as normally all 3rd party apps are blocked by default and must be whitelisted individually. This is not uncommon, as most organizations will allow the built-in Apple Calendar app on macOS to connect to their servers but will not allow other 3rd party apps. We have [detailed instructions](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md#admin-consent) on how to assist Office 365 admins in granting access to the app. #### "But other 3rd party apps seem to show calendars just fine!"[​](#3rdparty "Direct link to \"But other 3rd party apps seem to show calendars just fine!\"") There are only two reasons why some other 3rd party apps work: 1. The O365 admin has explicitly granted the app permission to connect (following [similar instructions as described here](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md#admin-consent)), **OR** 2. They're using the native Calendar sync APIs (also known as EventKit), which allow them to obtain data directly from the built-in Calendar app instead of connecting to the server directly. BusyCal also supports a [direct connection to Apple Calendar](/docs/busycal/140077-using-busycal-with-apple-calendar.md); however, these connections are severely limited due to inherent limitations in Apple's SDKs. --- # Cannot connect to Fruux Fruux requires an app-specific password to be used with 3rd party apps instead of your original login and password. Log into [www.fruux.com](http://www.fruux.com) and then click on "Setup Syncing", there click on **BusyContacts** or **BusyCal** and create an app specific username and password. Use that to login. Please note, when syncing BusyContacts with Fruux for the first time, you need to log into [www.fruux.com](http://www.fruux.com), click on **Contacts** and then click on **Add a new address book** in case you see a *You don't have an address book* notice. Without at least one address book, BusyContacts won't be able to sync. **UPDATE:** As of July 2020, Fruux servers have introduced a bug where it would either return malformed responses to requests or would fail to process requests of a certain size. This bug has not been fixed (last checked Jan 2022) and affects everyone. Fruux customer care has not responded to complaints. Unfortunately we would not recommend using Fruux. Instead please explore many of the other popular services out there: iCloud / Google / Fastmail and so on. --- # Reminders from iOS 13 / macOS 10.15 Reminders aren't syncing Upgrading Reminders to the storage format introduced in **iOS 13 and macOS 10.15 Catalina** moves its lists out of iCloud's CalDAV service. Those lists no longer sync through the iCloud CalDAV account in BusyCal. This does **not** mean BusyCal cannot access upgraded Reminders. ## Connect BusyCal directly to Reminders[​](#connect-busycal-directly-to-reminders "Direct link to Connect BusyCal directly to Reminders") BusyCal supports direct Reminders access on both Mac and iOS: * **Mac:** Choose **BusyCal > Settings > Tasks** and enable **Enable Reminders**. See [Using BusyCal with Reminders](/docs/busycal/114450-using-busycal-with-reminders.md) for setup and limitations. * **iPhone and iPad:** Open **BusyCal > Settings > Accounts > Add Account** and connect **Reminders**. This requires BusyCal iOS 3.5.2 or later. See [Using BusyCal iOS with Reminders](/docs/busycalios/114474-using-busycal-with-reminders.md). Upgraded Reminders require macOS 10.15 or later and iOS 13 or later on the devices sharing those lists. BusyCal can only access the Reminders data available on its device. First check that the lists and tasks appear and sync in Apple's Reminders app. Lists under the old **iCloud CalDAV account** and the direct **Reminders account** are separate after the upgrade; changes do not sync between those copies. For the historical migration and warning list, see [Where did my reminders go after upgrade?](/docs/faqs/112990-reminders-in-ios-13-and-macos-catalina-drops-support-for-caldav.md#reminders). --- # Activity list is not showing emails in BusyContacts on macOS Catalina ## Apple Mail on macOS 12 and later[​](#apple-mail-on-macos-12-and-later "Direct link to Apple Mail on macOS 12 and later") BusyContacts can show Apple Mail activity using **BusyContacts Mail Assistant**, a Mail extension for macOS 12 and later. Enable capture in **BusyContacts > Settings > Integrations > Mail**, then enable the extension in Apple Mail. See [Apple Mail activity after an update](/docs/faqs/busycontacts-apple-mail-activity-missing-after-update.md) for setup steps, or [Adding Mail](/docs/busycontacts/47350-activity-list.md#adding-mail) for capture limits. The extension cannot automatically import your entire mail history. ## Older macOS and BusyContacts versions[​](#older-macos-and-busycontacts-versions "Direct link to Older macOS and BusyContacts versions") macOS Catalina (10.15) restricted the Spotlight access BusyContacts had used to find Apple Mail messages. Older BusyContacts releases provided an Apple Mail plug-in for supported macOS versions from Catalina through Ventura. The last release to include that plug-in was **BusyContacts 2025.4.4**; it is no longer supported. See the [legacy plug-in instructions](/docs/busycontacts/47350-activity-list.md#spotlightnew) if you are using that older setup. The Spotlight troubleshooting below applies only to **macOS 10.14 Mojave or earlier**. For macOS 12 and later, use Mail Assistant as described above. Alternative Solution [MailMate](https://freron.com), a third-party email client, stores its data in a format that BusyContacts can access through Spotlight. If you have MailMate installed (with [Spotlight Indexing Enabled](/docs/faqs/116021-i-am-using-mailmate-but-busycontacts-is-not-showing-any-emails.md)), your email activity will continue to appear in BusyContacts. ## Legacy Support: For Users on macOS 10.14 Mojave or Below[​](#mojave "Direct link to Legacy Support: For Users on macOS 10.14 Mojave or Below") If you're on macOS 10.14 or below and cannot see messages and/or emails in the activity list within BusyContacts, a Spotlight re-index may help. BusyContacts uses macOS Spotlight to find and display your linked email/messages/etc. Here's how to reset this: 1. Open System Preferences 2. Click on Spotlight 3. Click on Search Results and in the list presented, make sure you have checked "Mail & Messages" 4. Click on the Privacy tab at the top and make sure \~/Library/Messages or \~/Library/Mail aren't excluded from Spotlight searches. Next, try and rebuild your Spotlight index by doing the following: 1. Launch the Terminal.app (in /Applications/Utilities). 2. Paste the following two commands, pressing return after each: * mdimport -r /System/Library/Spotlight/Mail.mdimporter * mdimport -r /System/Library/Spotlight/Chat.mdimporter 3. Quit Terminal. 4. Wait several minutes for the spotlight Mail index to be rebuilt. 5. Quit/relaunch BusyContacts. If the above does *not* work, it may be worth rebuilding your entire Spotlight index. This can take **several hours** at times to finish in the background and you may not immediately see search results. Please follow these instructions to rebuild the Spotlight index on your Mac. <https://support.apple.com/en-us/HT201716> --- # Where Did My Reminders Go After Upgrade? (No CalDAV Support) Upgraded Reminders use the storage format introduced in iOS 13 and macOS Catalina instead of CalDAV. BusyCal can access these lists through its direct Reminders connection, separately from its iCloud CalDAV account. ## Direct syncing with Reminders[​](#v3.8 "Direct link to Direct syncing with Reminders") BusyCal for Mac supports direct Reminders syncing from v3.8 onward; BusyCal for iOS supports it from v3.5.2 onward. Upgraded lists require macOS 10.15 or later and iOS 13 or later on devices sharing those lists. * [Set up Reminders in BusyCal for Mac](/docs/busycal/114450-using-busycal-with-reminders.md) * [Set up Reminders in BusyCal for iPhone and iPad](/docs/busycalios/114474-using-busycal-with-reminders.md) Check those guides first for current sync problems. The migration and backup sections below explain the older CalDAV transition; restoring a backup is not required simply to enable direct Reminders access. ## Historical migration: Where did my reminders go after upgrade?[​](#reminders "Direct link to Historical migration: Where did my reminders go after upgrade?") When you launch Reminders on iOS 13 or macOS 10.15 (Catalina) or newer for the first time, you will be presented with an option to upgrade Reminders so that it may offer you newer and better functionality. **If your reminders disappeared after upgrading**, this is because when you choose "Yes" to upgrade, the new Reminders app migrates all your to-do-only calendars off of CalDAV and into a separate Reminders store. Your reminders are not lost, but they no longer appear through BusyCal’s iCloud CalDAV account. Enable the direct Reminders connection described above to access them on a supported device. If you don't wish to use Reminders as your primary to-do app, and instead rely on BusyCal or a host of other 3rd party CalDAV task management apps, **choosing Yes** will migrate all your to-do-only calendars off of CalDAV and into a private silo run and managed solely by the new Reminders app. Your to-do-only calendars, along with their contents, will disappear from **BusyCal’s iCloud CalDAV account**, as well as a [host of other 3rd party CalDAV clients](https://www.2doapp.com/kb/article/all-lists-and-tasks-deleted-in-2do-after-upgrading-to-macos-10-15-reminders-or-ios-13-reminders.html) on all other platforms. If this has given you unwarranted confusion, stress and anxiety, or it wasn't immediately clear that upgrading Reminders would result in loss of data in every other CalDAV client, [please leave them feedback](https://www.apple.com/feedback/iphone.html). They listen. After Reminders deletes your calendars and to-dos from CalDAV, it replaces these with a calendar named **Reminders ⚠️** along with the following two entries inside, reminding you who to blame: * Where are my reminders? * The creator of this list has upgraded these reminders. **Choosing No** on the other hand, will keep your calendars and to-dos intact, and these will continue to sync with all other CalDAV apps, including BusyCal. The only downside of this would be the inability to use newer features offered by the new Reminders app. ## Restoring from Backups[​](#resolution "Direct link to Restoring from Backups") If you need to recover the old CalDAV copies, you can restore them from a BusyCal backup. First check whether your tasks are already present in Reminders and available through direct syncing. [Read the backup and restore guide](/docs/busycal/70617-backing-up-and-restoring.md#restore) before restoring; a restore can overwrite newer changes. During migration, Reminders will also remove Calendar sharing from any calendars you were previously sharing with others. You will need to set these up again as [explained here](/docs/busycal/70630-using-busycal-with-icloud.md#sharing). BusyCal automatically backs up your BusyCal database every day and saves your last 10 backups. If you wish to restore your calendar from one of these backups, select **File > Restore BusyCal**, select a backup file and then click Open. You'll be presented with a list of your calendars, check the calendars you want to restore, click Restore and they will be restored from the backup, overwriting their current contents. *Note*: That any events that have been created or edited since the backup will be lost when you restore from the backup. If you don't want to restore an entire calendar and lose any recent changes that were made since the last backup, you can restore specific events from the backup as follows: 1. Create a new backup in BusyCal by selecting File > Create Backup. 2. Quit BusyCal. 3. Launch BusyCal while holding down the option key to display the Startup Options dialog, then select Start in Offline Mode and click Continue. When in offline mode BusyCal will not sync with iCloud, Google, Exchange or any other services. 4. Select File > Restore From Backup. Choose one of the recent backup files and click Open, then select the calendar that contains the events you wish to recover and click Restore. 5. Find the missing events and drag them to your Desktop to create ics files of each. 6. Select File > Restore From Backup. Choose the most recent backup you created in step 1 and click Open, then check the same calendar you selected in step 4 and click Restore. 7. Double-click on the ics files you exported in step 5, or drag them into BusyCal, to import the events and place them on the appropriate calendar. 8. Quit/relaunch BusyCal to go back Online. 9. After importing your to-dos, if these got imported under "On My Mac" - that would be a local calendar on your machine, which won't sync to iCloud. You need to `CTRL+Click` (right-click) on this calendar and choose the "Move to iCloud" option or manually select all to-dos in List view and drag them to the appropriate calendar under your iCloud account. ## Continuing with CalDAV after the historical migration[​](#future "Direct link to Continuing with CalDAV after the historical migration") Once you restore your backup and BusyCal is able to push everything back the iCloud CalDAV server, your to-do only calendars will continue to sync without issues. Apple has only dropped support for CalDAV within the new Reminders app, their iCloud servers will continue to sync your calendars and to-dos between other CalDAV clients. [2Do app](https://www.2doapp.com), for instance, [has issued a similar explanation](https://www.2doapp.com/kb/article/all-lists-and-tasks-deleted-in-2do-after-upgrading-to-macos-10-15-reminders-or-ios-13-reminders.html). CalDAV is an open protocol used for managing all your calendaring events and to-dos, giving 1st party built-in apps no particular advantage over 3rd party apps. Apple has been a driving force behind this for decades, and so we don't see this going away. The rest of your calendars and events will be fine as they are. However, it does look like they wanted to add a lot more functionality and features to the Reminders app, and given CalDAV as a protocol is limited in what it offers, they decided to drop support for CalDAV altogether. This isn't a bad thing, but this does mean you lose the capability of syncing your to-dos seamlessly between apps and platforms. If you feel Apple should provide users with an option to sync this back to CalDAV, [please leave them feedback](https://www.apple.com/feedback/iphone.html). ## Troubleshooting[​](#troubleshoot "Direct link to Troubleshooting") When you click on "Enable Reminders" within BusyCal Settings, you should be prompted by macOS to confirm that you wish to allow BusyCal direct access to Reminders. If you're not being prompted by macOS and subsequently BusyCal is unable to sync, you could try and force this manually. Open Terminal.app and run the following command: ``` sudo tccutil reset Reminders com.busymac.busycal3 ``` If this does not work, you could try and use a 3rd party tool "tccplus" for this purposes instead: <https://github.com/jslegendre/tccplus> There's also an AppleScript wrapper found here: <https://forums.macrumors.com/attachments/tccplus-wrapper-hotfix-zip.903316/> The zip file will unfold to give you a folder with two files - tccplus wrapper.app, and tccplus wrapper.applescript Run the wrapper.app and it will give ask which application to add privileges to, and then a second screen that asks to choose which privilege. ## Key Takeaways[​](#takeaway "Direct link to Key Takeaways") 1. Upgraded Reminders require macOS 10.15 or later and iOS 13 or later on devices sharing those lists. 2. BusyCal can read and write upgraded Reminders through its **direct Reminders connection**, subject to the limitations in the [Mac](/docs/busycal/114450-using-busycal-with-reminders.md#limitations) and [iOS](/docs/busycalios/114474-using-busycal-with-reminders.md#limitations) guides. 3. Upgraded Reminders and iCloud CalDAV task calendars are separate stores. Edits to one do not update the other. 4. A task added to a CalDAV calendar in BusyCal does not appear in upgraded Reminders. Add it to a list in BusyCal's Reminders account to use direct Reminders syncing. --- # Alarm field in Meeting Events syncing with Google is disabled If you're syncing with Google Calendar, adding an alarm to a meeting invitation is not supported (by Google). This option is thus disabled. You need to instead use "My Alarms" (you can enable these from Preferences > Info Panel > Enable My Alarm). --- # End Time Zone Ignored in Google Calendar Events Google Calendar seems to white list Apple Calendar (or itself) when creating events with different start and end timezones. When creating an event in BusyCal that spans across different timezones for its start and end dates, Google ignores the end timezone, updates its copy and this is then overwritten when BusyCal syncs the next time. You need to instead: * Navigate to <https://calendar.google.com> * Click on the event you wish to modify * Click *Edit Event* * Click on *Time Zone* * Click *Use separate start and end time zones* Making a change in Google Calendar itself will stick and sync over to BusyCal. For more information about other Google Calendar limitations, see [Google Calendar Limitations with BusyCal](/docs/faqs/google-calendar-limitations.md). --- # I am using MailMate but BusyContacts is not showing any emails BusyContacts uses Spotlight to find and list email messages from email clients. MailMate is currently one of the apps that is compatible with BusyContacts post 10.14 (Apple has disabled integration with Apple Mail spotlight in recent macOS updates). Mail Mate simply needs to be installed and running to index emails in the background - you may continue using any other mail client as your default email client. However, you must enable Mail Mate's Indexing feature for BusyContacts to be able to show you emails within its Activity List. * Launch MailMate and Open MailMate Settings * Under **General > Messages Folder**, check **Indexed for Finder / Spotlight** * Check the **Custom Location** option and use the default option of saving the index under your home directory ![Mail Mate Options](https://downloads.busymac.com/resources/img/busycontacts/mail-mate-settings.png) Quit BusyContacts and relaunch. --- # Alarms not showing in BusyCal BusyCal relies on its [BusyCal Menu](/docs/busycal/70606-busycal-menu.md) app extension to issue alarms. This extension gets bundled and installed as part of the main app. There is a known issue in macOS where at times the wrong extension may get loaded (from another installed copy on disk, or even at times from a Time Machine backup) and due to this, alarms may stop working as the main app is unable to communicate with the menu extension. To fix this, please follow the troubleshooting steps laid out [in this article.](/docs/busycal/70606-busycal-menu.md#troubleshooting) --- # WAN Sync is no longer working Recent updates to macOS have broken WAN sync which uses a legacy communication protocol. This is also true for older copies of BusyCal. WAN Sync may no longer work on the more recent updates of macOS. We have decided to discontinue support for WAN sync as supporting it is no longer feasible. note This applies to WAN sync only. Sharing calendars and address books over your local network with Bonjour is unaffected and continues to be supported. See [Using BusyCal on a LAN](/docs/busycal/70655-using-busycal-on-a-lan.md). If you share local calendars / address books for security and privacy reasons, an alternative would be to setup a local CalDAV / CardDAV server on the host machine and use BusyCal / BusyContacts to connect to this instead. If you otherwise use iCloud / Exchange / Google to sync your calendars, it would be easier to host and share these calendars there. --- # Licensing Explained Quick Summary Our apps come with a [**perpetual license**](#direct) — a one-time purchase, [not a subscription](#subscription) — so you [own](#likesub) the app [*forever*](#updatesforever). Each purchase includes [**18 months of free updates**](#nummonths) from the [date of purchase](#licenseactivationdate). After this period, you can [continue using the last update](#dontrenew) forever or renew at a [**discounted rate**](#renewal) to keep receiving the latest features and improvements. We also offer [other licensing models](#licensingmodels) that may suit you better. Upgrading is [entirely optional](#wontpay). Here you will find answers to some of the most frequently asked questions about the different licensing options we offer for BusyCal & BusyContacts on macOS. If you don't find your question answered below, feel free to [contact us](/docs.md#support-information). We have also provided a comparison of the various [licensing models we support here](#licensingmodels). ## Is there a subscription fee?[​](#subscription "Direct link to Is there a subscription fee?") **No**, not when you purchase directly from [our online store](/store.md). Our online store only sells you a non-expiring, non-recurring, perpetual license. However, BusyCal and BusyContacts are available via subscription-only from the Mac App Store, since App Store does not support optional upgrade pricing. Our apps are also part of [Setapp](https://www.setapp.com), a cross-platform subscription service that offers you a curated collection of macOS apps under a single subscription. [Learn more here](#licensingmodels). ## What is a Perpetual license?[​](#direct "Direct link to What is a Perpetual license?") When you purchase directly from [our online store](/store.md), which offers you the same secure-buying experience as the app store, you're paying for a perpetual license that is yours to keep, **forever**. You own the version of the app you paid for, including all the updates released after the time of purchase until [the time free updates expire](#length). This also means that there is no looking out for a BusyCal 4 / 5 / 6 etc. There's a single version of BusyCal and BusyContacts that we will continue to update and improve - and your license entitles you to all updates, both major and minor, for 18 months. There are no recurring payments and no subscriptions. Once you pay for the product, you're making a one-time purchase, not a recurring one. You own the right to continue using the purchased version forever. [You can learn more about the different licensing models we support, here](#licensingmodels). ## How long will my perpetual license remain valid?[​](#length "Direct link to How long will my perpetual license remain valid?") You get a lifetime license that *never expires*, which means you own the version you paid for and can continue using it forever. **However**, your license is valid for **18 months of free updates** starting from the date of purchase. This would include bug fixes, enhancements and new features - both major and minor. To continue to receive updates after 18 months, you will need to [renew your license](/store.md?current-tab=renewals). For instance, say you purchased BusyCal today, ****. You will be entitled to **own** all updates posted until ****. After the expiry date, you can continue using the last update that was released forever. If you then choose to renew your license, you will receive an additional 18 months of updates, starting from the **date of renewal**. This way, you can choose not to renew for six months, and renew only when an update we post interests you with a feature or enhancement you always wanted. Example If you purchase a license today, ****, you'll receive regular updates to the app through ****(18 months of updates). ## Does a License Code Activate on the Date of Purchase or First Use?[​](#licenseactivationdate "Direct link to Does a License Code Activate on the Date of Purchase or First Use?") Your **18-month update period** begins from the **date of purchase**, not the date of first use. For example, if you purchase BusyCal today (****) but do not activate your license for a year, your license will still provide free updates only until ****( i.e., 18 months from your purchase date). ## Why 18 months? Isn't 12 months the industry standard?[​](#nummonths "Direct link to Why 18 months? Isn't 12 months the industry standard?") 12 months is indeed the industry standard - however 12 months also *sounds* like a subscription. 12 months also seem to go by fairly quickly. We wanted to go above and beyond the norm and offer a better deal, so we joined the `Developers For a Fair Deal (DFFD)` consortium to do just that. Okay - this bit's made up; there's no such consortium. *Good idea, though?* We believe 18 months is a sweet spot. It makes us stand apart from traditional subscription models and provide you with better value. This extended period gives you more time to enjoy updates, new features, and improvements—all without the commitment of a recurring subscription—ensuring you get the most from your investment. This way we also get an opportunity to win you over for potentially another 18 months after your license expires. ## I thought I was going to get free updates and support till the end of time?[​](#updatesforever "Direct link to I thought I was going to get free updates and support till the end of time?") Starting with BusyCal 1 up to BusyCal 3, each has been a paid upgrade. The licensing model has been more or less the same; you pay for a version which you then get to keep forever. You get free updates for a certain number of months. A new paid upgrade is released, after which you stop receiving updates to the version you owned. Our new licensing model simply quantifies these otherwise arbitrary number of months to "18". ## I don't remember signing up for a perpetual license, why do I have to pay for a renewal again?[​](#wontpay "Direct link to I don't remember signing up for a perpetual license, why do I have to pay for a renewal again?") No, you do **not** have to pay again. Renewing a license is completely optional and entirely your choice. When you purchase BusyCal v3, for instance, there is always a chance of *BusyCal v4* releasing a few weeks or months down the line, as a separately paid upgrade (just like the brand new TV you buy only to have a newer model show up next week). In that case, you're now stuck with an app you just paid $49.99 for and it already has begun to feel dated since it's no longer supported and will never be updated. With our **18-months of updates included** license, everyone's treated equally, and you get far greater value for the money spent. There is no longer a BusyCal 4 / 5 / 6 but a single version that keeps improving - you enjoy 18-months of improvements (both minor and major), and when the time is up, you choose whether you wish to renew the license for another 18 months or stick with a "good enough" version you're currently content with. ## But a perpetual license sounds like a subscription?[​](#likesub "Direct link to But a perpetual license sounds like a subscription?") If it were a subscription, you would be prevented from using the app unless you paid the renewal fee, or you may simply be downgraded to a *free plan* that takes away key features of the app. This is not the case with our license. You are entitled to use the app you paid for forever. Renewing your license is up to you. ## You say we can use the app forever, but what if it breaks on a future macOS update?[​](#macos-compatibility "Direct link to You say we can use the app forever, but what if it breaks on a future macOS update?") Yes, you **own** the version of the app you purchased, and you can use it forever. However, technology doesn’t stand still. macOS is updated annually, often introducing system changes that affect how apps function. Similarly, third-party services like iCloud, Google, and Exchange evolve their APIs, security requirements, or connectivity protocols—sometimes at short notice. This means that while your purchased version remains yours, it may not always remain compatible with future macOS updates or online services. If a future macOS release breaks something or a service changes how it syncs, an older version of the app won't automatically adapt to those changes. This is **exactly why we offer optional license renewals** — not just to add new features, but to ensure ongoing compatibility. Maintaining the app in a constantly shifting environment requires significant effort: * Adapting to macOS framework changes * Updating sync compatibility with cloud services * Fixing unforeseen bugs introduced by OS or service updates Without a sustainable way to fund this work, we wouldn’t be able to keep the app running reliably over time. If you **choose not to renew**, you can continue using the last version covered by your license indefinitely. However, if macOS or a service update causes issues, you may need to **renew your license** to receive an updated version that ensures continued functionality. Fun Fact We still have users running **BusyCal v2 released in 2012** on *recent* macOS versions. While functionality is significantly reduced — weather no longer works, and Google Calendar sync is broken — the core app itself still runs. That's a testament to owning and holding on to a perpetual license over the years. ## How much will a renewal cost?[​](#renewal "Direct link to How much will a renewal cost?") Renewals can cost between 20%-40% off the original price (actual discount rate is subject to the promotional offerings at the time of renewal). [Currently, renewal costs $39.99](/store.md?current-tab=renewals) (volume discounts apply) - entitling you to an exclusive **20% discount** when renewing an existing license. This way, you pay the full price only once, and upgrade when you feel the app has improved to your liking. ## Why not do a paid upgrade instead for a major update?[​](#majorupdate "Direct link to Why not do a paid upgrade instead for a major update?") This is the pattern we've followed since BusyCal 1 → 2 → 3. More or less, every 12 to 18 months, we issued a new paid update to the app and abandoned supporting the previous version entirely, which meant that customers on existing versions had to pay to upgrade or stay on the version they're on (exactly how it works with a perpetual license). So why did we change? Releasing a major upgrade means changing the app's internal app identifier, which means *everything* that works already perfectly breaks for the user. Users have to go through a proper migration of their database, during which there is a chance that something might go wrong and the user may lose actual data. Then one needs to deal with backups and restores. There's also having to deal with a proper uninstall of the previous version, getting rid of installed extensions and leaving unwanted app cruft behind. Users still at times get double alerts from BusyCal 2 and BusyCal 3 where the uninstall after an update did not go as planned. It's a nightmare. Not to mention lost customers on App Store due to app being released as a brand new app (as the identifier changed), re-marketing and re-branding it whilst forcibly making UI changes to justify the "major"-ness of the app - many times annoying our customers further with a steep new learning curve. Secondly, everything around us has changed - literally. macOS updates have been a lot more regular and a lot more disruptive. iCloud / Google / Microsoft seem to be changing their service regularly. Something breaks, then we spend a month fixing it. Apple all of a sudden decides to break Reminders, and the burden is upon us to literally re-write a major portion of the app as a dot x.1 release only to fix this. For the user this is a minor bug fix while for us it's months of hard work, a major re-write and a lot of stress supporting this going forward (for months up to a year). Then iCloud decides to suddenly change something without notice, or introduce a new pressing change such as an app specific password requirement. It was Google last year, making sweeping changes and breaking many. Not to mention a myriad of CalDAV / CardDAV / Exchange flavors we have to deal with and support daily. A major part of our day outside of real development is spent looking at logs and network traces only to pinpoint bugs present in the CalDAV server our user is using. Suddenly last year, online meetings became a thing. All of a sudden all calendaring apps must provide some level of integration. We're quite literally providing a service *on top of* existing services that are constantly changing and evolving. In short, the line that was previously drawn between bug fixes and major updates has almost diminished. It's become increasingly difficult to sustain without charging our customers monthly - like many companies now do; everything is a SAAS. Which is annoying. So what do you do if you don't personally like Subscriptions and aren't getting paid at all for the work and support you've been doing for 5+ years with free updates? And making a new hire is impossible because they ask you for a fee that you no longer make as a company? You make it fair and begin charging for updates based on a set period - this way customers get big and small features irrespectively and we get paid for real work. The industry standard is 12 months. We switched to 18. We also kept renewals optional. Renew only if you find good value in our updates. ## I've read everything and I am unhappy I won't get updates forever. I want a refund\![​](#oldrefund "Direct link to I've read everything and I am unhappy I won't get updates forever. I want a refund!") If you've purchased the app directly from us, you're entitled to a refund within 30 days of purchase, no questions asked. Please [contact us](/docs.md#support-information) so we may process this for you. If you've purchased the app from the Mac App Store instead, please reach [out to Apple](https://reportaproblem.apple.com) within 14 days of purchase. Unfortunately we will not be able to refund an order if it was made outside of the refund window. ## What if I have multiple licenses for the same product?[​](#multilicense "Direct link to What if I have multiple licenses for the same product?") To keep it simple, the expiry date is tied to your registration code. Conversely, if you were to purchase 10 copies of BusyCal today, you will be issued a single registration code. All your devices using this registration code will share the same period of 18 months and expire at the same time. ## What if I own both BusyCal and BusyContacts?[​](#multiproducts "Direct link to What if I own both BusyCal and BusyContacts?") [You will have to renew](/store.md?current-tab=renewals) both products separately. Each product renewal will be 20-40% off the original price separately (discount rate is subject to the promotional offerings), e.g. a renewal will cost you $39.99 after a 20% discount is applied to $49.99 (original price). ## Do I need to download and install the app again after renewal?[​](#reinstall "Direct link to Do I need to download and install the app again after renewal?") No. Once you renew your license, you can continue using the version you have or update to a more recent version in case there is one available. ## When it comes to renewal, will I have to renew all the licenses under the registration code or can I pick a quantity?[​](#renewmultiple "Direct link to When it comes to renewal, will I have to renew all the licenses under the registration code or can I pick a quantity?") If you originally purchased 10 licenses and your 18 month period of free updates is over, you will normally only be able to renew all of these licenses at the same time, since the renewal is tied to your registration code instead of individual device activations. If you only wish to receive new updates for a subset of macs, the easiest thing would be to make a new purchase. Since you are an existing customer, you can use the "Sidegrades and Upgrades for Existing Customers" option to purchase an *upgrade* instead. The only thing to note is that you will have to use the newly generated registration code against this new purchase in order to utilize the 18 months of free updates. ## What if I don't renew my license?[​](#dontrenew "Direct link to What if I don't renew my license?") If you don't want to renew your license after the 18-month period, you can continue to use the version of the app that you have, for as long as you want, but you won't be able to receive any further updates, this includes *critical bug fixes*. To receive new updates with new features, enhancements and bug fixes, a renewed license will be required, entitling you to own another 18 months of updates. In most cases, not renewing a license will not affect you in any way or form, however this isn't guaranteed. At times a new version of macOS can deprecate certain features or remove support for them entirely, prompting app developers to make changes to fix crashes or fulfill additional requirements. An example is the shift from 32-bit to 64-bit, or more recently the shift from Intel to Apple Silicon, which required a lot of work to ensure compatibility. In recent months iCloud also made unannounced changes that broke Reminders and to-do sync for a majority of our users, for which we had to swiftly add native Reminders sync support. Similarly, other 3rd party services the app relies upon (such as Weather) may discontinue, prompting us to switch to a new service. Older copies of the app will unfortunately stop connecting to such services and will require renewal. You can always change your mind at any time. Not renewing a license does not prevent you from using the app and it's core functions. You simply miss out on updates that are rolled out with new improvements. You can keep using the app for months / years / decades before you decide to renew your license and get back onto the latest version. The choice is entirely yours. ## Why do some updates only change the build number and not the version?[​](#stability-updates "Direct link to Why do some updates only change the build number and not the version?") These are stability updates. Between version bumps we keep posting small fixes and refinements to BusyCal and BusyContacts as soon as they're ready, and each one raises only the build number (for example, build 103 to 104). A new version number is reserved for actual new features, larger improvements and bigger fixes. Keeping the version unchanged is deliberate, and it works in your favor. A new version requires an active license, whereas a stability update installs even if your license has expired. This way a fix always reaches you without asking you to renew or pay for it, and you're never left with a broken app waiting on a renewal. ## Will I have to renew my license for all my devices?[​](#renewdevices "Direct link to Will I have to renew my license for all my devices?") When you renew your license, you're renewing the license tied to a serial code for all your macs. If you own multiple macs and use the same serial number on all of these, you only need to renew your license once and continue using it on all your personal devices. The only time we ask users to buy and renew additional licenses is when these are used on non-personal, work machines. ## What about major app releases? Will I need to make further purchases?[​](#upgrades "Direct link to What about major app releases? Will I need to make further purchases?") No. Instead of developing a major paid update and timing it with the release of the new version of macOS each year, we have instead decided to make it simpler for ourselves and our users. Instead of marketing BusyCal as "version 4" and trying to sell it as a paid upgrade, there will only ever be a single version of BusyCal that you renew a license for, in case you wish to see an additional 18 months of innovation. Users will continue to receive meaningful updates, including major new features, critical fixes, performance improvements and enhancements as part of their renewal. ## Why am I asked to renew my license? I just purchased it.[​](#whyme "Direct link to Why am I asked to renew my license? I just purchased it.") As explained in [this question](#length), you are entitled to 18 months of free updates, starting from the date of purchase. You do not have to renew the license if you do not wish to do so. This will simply mean that you will have to download and install the last eligible update covered by your license, as [explained here](#dontrenew). If you have installed a more recent update not covered by your license, you will automatically be directed to the last eligible version. Simply follow the instructions on screen when prompted. ## I just updated the app from an older version and it tells me I'm not eligible and now need to downgrade? Why did it let me update to begin with?[​](#expiredonupdate "Direct link to I just updated the app from an older version and it tells me I'm not eligible and now need to downgrade? Why did it let me update to begin with?") Our shift to the new licensing model means that users updating BusyCal or BusyContacts from an older version to a new version would be met with an unfriendly prompt, informing them that they're not eligible to use this particular update and that they need to downgrade. We're sorry. There's no easy way around this. Older versions of our app did not contain the required code to perform license eligibility checks. Also, in case you download the latest version of the app from the website, you may find that your license does not permit you to use this particular version and that you need to downgrade. You will need to downgrade to a version that your license covers and continue using that forever, unless you wish to instead renew your license and receive an additional 18 months of updates. You can download an older version from here: * [BusyCal](/busycal/releasenotes.md) * [BusyContacts](/busycontacts/releasenotes.md) You can [renew your license from here](/store.md?current-tab=renewals). ## The app tells me that my license expires on the 1st of Jan, 2021. Why?[​](#2021 "Direct link to The app tells me that my license expires on the 1st of Jan, 2021. Why?") Users that purchased the app between 2016 and 2021 had their licenses expired 18 months starting from the date of purchase. If you had bought BusyCal or BusyContacts in 2016, for instance, your license in fact was originally entitled to updates till around the begining of 2018. However, we decided to not charge anyone till the begining of 2021 and extended all previously expired licenses to the 1st Jan, 2021 (i.e. we postponed our plans of releasing a new paid upgrade at the time). During this time, you continued to receive all updates for free. You can choose to renew the license and continue receiving updates for another 18 months if you wish [from here](/store.md?current-tab=renewals). ## I just updated to the latest version of the app and it tells me my license has expired[​](#updatedapp "Direct link to I just updated to the latest version of the app and it tells me my license has expired") As explained [here](#2021), we extended all expired licenses to last up to the 1st of January 2021 irrespective of when these expired (since 2016). In case you've just downloaded an update and are being informed that you're not eligible to use the update, you may downgrade to an earlier version that was released before the 1st of January 2021, or [renew your license](/store.md?current-tab=renewals) to own another 18 months of updates. To install a previous version of the app you're still entitled to, please click on the relevant link: * [BusyCal](/busycal/releasenotes.md) * [BusyContacts](/busycontacts/releasenotes.md) From this page, click on the **Download this version** link against an update that was released before your license expiry date. ## Isn't this just like a yearly paid upgrade, then?[​](#yearly "Direct link to Isn't this just like a yearly paid upgrade, then?") Sort of - but it's not yearly. It's every 18 months. Just as users of BusyCal 1 upgraded to v2, and then from v2 to v3. The only difference being that BusyCal 3 has offered around **4 years of free updates**. With macOS receiving yearly updates, many times breaking existing features offered by our apps or increasing the overall burden of providing support for newer system-wide features, it makes a lot more sense to charge for updates spanning over a number of months, instead of trying to win a race against time and re-marketing the same app in dubious new ways, usually offering minimal value for money. ## What if I prefer the Mac App Store instead but strongly dislike subscriptions?[​](#massub "Direct link to What if I prefer the Mac App Store instead but strongly dislike subscriptions?") We get it. Subscriptions aren't for everyone. Part of the reason why we did not push for a paid upgrade for over 4 years (that's 4 years+ of [continuous development](/busycal/releasenotes.md) & support) was because deep down we felt Apple may offer developers with another licensing option, one where we're able to offer free trials to our users and have the flexibility of distributing **optional** paid upgrades. After *years* of waiting, it's now clear that Apple sees the App Store suited particularly well for subscriptions instead. Since we are looking for a sustainable future in building and supporting our complex applications, we decided the only way forward is to offer an optionally renewable, perpetual license directly via our store (something Apple does not plan to offer), while offering a subscription on the Mac App Store. A win-win. ## I’ve already paid via the Mac App Store for a previous version of the app. Must I pay anything to continue using that version? If so, why?[​](#masalreadypurchased "Direct link to I’ve already paid via the Mac App Store for a previous version of the app. Must I pay anything to continue using that version? If so, why?") As explained [here](#subscription), the Mac App Store version only offers a subscription moving forward. If you continue to use the app you had already purchased, updating to the latest version on the App Store will prompt you to pay a monthly or a yearly subscription. Your only option is to switch to our direct, non-subscription model in case you don't want to pay a subscription fee, however you will will have to pay a one-off upgrade fee in order to download and use the current version. This will cover you for 18 months of free updates. ## I'm subscribed to the subscription apps on the Mac App Store, but want to purchase a direct copy. Can I transfer my license?[​](#massubdirect "Direct link to I'm subscribed to the subscription apps on the Mac App Store, but want to purchase a direct copy. Can I transfer my license?") **It is not possible to transfer your subscription based license from the App Store directly**. As the App Store uses a subscription model with very different pricing compared to what is offered directly by [busymac.com](/store.md), and is managed by Apple directly, you would need to first cancel your subscription from the App Store, then purchase a copy from [our online store](/store.md). Users can manage App Store subscriptions via the following link: <https://support.apple.com/HT202039> Unfortunately, Apple provides us no way to refund subscriptions in any way. If you’re looking for a subscription refund, we recommend reaching out to Apple support. ## Does the App Store subscription support family sharing?[​](#familymas "Direct link to Does the App Store subscription support family sharing?") Yes it does. A single subscription covers all the macs in your family. ## Can I try before subscribing to the App Store version?[​](#mastriallength "Direct link to Can I try before subscribing to the App Store version?") Yes! You get 14 days of free trial. ## I own a copy from App Store before a subscription version was made available. Can I transfer this license over to the direct version?[​](#mastransfer "Direct link to I own a copy from App Store before a subscription version was made available. Can I transfer this license over to the direct version?") The old version of BusyCal 3 and BusyContacts on the App Store have been discontinued. Instead, new versions have been introduced under the subscription model on the App Store. These apps and versions are **not** interchangeable and so it is not possible to switch to the direct copy from the App Store copy unless: 1. You migrated your app-store copy to the direct version before the 15th of July 2021 and were issued a serial number from our store. In that case, you may download the [Trial version](/busycal) and use the serial number issued to you during the registration step. 2. You signed up to the mailing list before 1st Jan 2021 during the initial setting up process (from within App Store copy). Doing so would have auto-assigned you a serial number. Please check your email and use that serial number after downloading the [direct Trial version](/busycal). If you believe you owned a copy before 1st Jan 2021 and do not wish to utilize the subscription-only version on the App Store, please [contact us](mailto:support@busymac.com?subject=Switch%20to%direct%copy). In any case, your direct license covers you for 18 months of updates. You may need to renew your license, at a 20-40% discount (discount rate is subject to the promotional offerings), in case it no longer covers the most recent update. However, if you wish to switch to the last released version of BusyCal 3 and do not wish to pay a subscription OR obtain a direct license, you can do so for free by following these steps: 1. First, make sure you have the existing App Store version of the app installed. Even if you updated to a new version, that is okay. In case you don't have it already installed, you can download it from your purchased history as explained here: <https://support.apple.com/en-ae/guide/app-store/fir0fb69db23/mac> If it's BusyCal you're downloading from the app store, make sure it is version 3. For version 2, you will need to make a separate [upgrade from here](/store.md). 2. Next, simply download our trial version and install it over the app store version. Here are the links: * [BusyCal](https://www.busymac.com/download/bcl-3.12.6.1.zip) * [BusyContacts](/busycontacts/releasenotes.md) 3. Launch the app and click on the app's name in the top menu bar and then on "Register..." 4. This will switch your license over to our direct, perpetual license After you have installed these versions, you will be prompted automatically if your license needs to be registered or renewed in case you purchased the copy 18 months ago. In case you do not wish to renew the license, you will be given the option to download the last update you were entitled to download for free. You can see a listing of [all the released versions here](/busycal/releasenotes.md). In case you have not yet registered your copy after installing the direct version, you may see a prompt requesting you to register your copy. This is required to validate and assign a license (serial number) against the installed copy. As an exclusive offer for our App Store users, your newly registered copy will be eligible for 18 months of free updates without paying the renewal fee. You can register your copy by clicking on the app's main menu item, which would be BusyCal or BusyContacts, and then on Register.... You will need to enter your iCloud email address in order to receive a new license key. ## I want to exchange my direct license for an App Store's subscription[​](#directtomas "Direct link to I want to exchange my direct license for an App Store's subscription") This is unfortunately not possible. As the App Store uses a subscription model with very different pricing compared to what is offered directly by [busymac.com](/store.md), and is managed by Apple directly, you would need to subscribe to the App Store separately. If your direct purchase was in the last 30 days, you would be entitled for a refund. Please contact us so we may refund your copy. If your purchase is older than 30 days, we will not be able to process a refund. ## What's included in the Mac App Store subscription?[​](#masdesc "Direct link to What's included in the Mac App Store subscription?") BusyCal and BusyContacts are sold separately on the App Store, and so you will need to subscribe to the products separately. Also note that BusyCal iOS is not part of a subscription. It is sold separately on the iOS app store for a one-time fee. ## What if my App Store subscription lapses? Do I lose my data?[​](#maslapse "Direct link to What if my App Store subscription lapses? Do I lose my data?") No. While the apps won't function without an active subscription, your data will **remain saved on disk** - unless of course you manually delete files stored under \~/Library, or use a 3rd party Uninstaller to uninstall BusyCal. Any data synced to a CalDAV / Exchange service prior to the subscription's expiry will remain synced to your online accounts. BusyCal does not remove / modify / alter any data. ## I want to get a refund for a subscription I got charged by the App Store[​](#masrefund "Direct link to I want to get a refund for a subscription I got charged by the App Store") Apple gives us no control over refunds in any way whatsoever. You will need to submit a request to Apple for a refund for any App Store app, including BusyCal and BusyContacts. This can be done by signing into [reportaproblem.apple.com](https://reportaproblem.apple.com) with your Apple ID. ## Will weather work if I don't upgrade?[​](#weather "Direct link to Will weather work if I don't upgrade?") Most likely. Weather provided by BusyCal is a value-added service and is in fact offered by a 3rd party weather-provider. Weather Services charge a monthly subscription fee that we solely bear (i.e. our customers are not separately charged). However, if and when we need to switch to a new weather provider, older copies of the app will stop showing weather. In the past BusyCal received updates from Weather Underground, which shutdown and so we switched to Dark Sky. Recently Dark Sky shutdown and we've had to switch again. Each time we switch, existing versions connecting to an older service will no longer display weather. The only way to receive weather updates is to ensure you update to the latest version of BusyCal. ## Why does the app try and connect to BusyMac servers every now and then?[​](#licensechecks "Direct link to Why does the app try and connect to BusyMac servers every now and then?") BusyCal and BusyContacts on macOS need to regularly connect to our servers to perform a license check. If you selectively block this connection via a 3rd party firewall software, the apps may refuse to work. License validity checks are performed primarily to validate "license count / license key utilization" as well as to thwart: * Piracy, app-cracking * Unauthorized usage of a license key (after the order has been refunded) * Cracked or invalid license keys (such as a license key issued to a different user / device) These checks are applicable to all users - irrespective of whether they paid for an updated license or not. Without these checks, the app is unable to determine if the license key you're using is valid to begin with. You can learn more about this in our [Privacy Policy](https://busymac.com/privacy.html). *** ## Licensing Models - A Comparison[​](#licensingmodels "Direct link to Licensing Models - A Comparison") BusyCal and BusyContacts on macOS is available via [our online store](/store.md) as well as via a subscription from the [Mac App Store](https://apps.apple.com/us/app/busycal/id1173663647?mt=12). Since we've answered some of the most common questions already, below is a concrete comparison between the different licensing models to find out which one's better for you. Please note, due the differences in licensing and terms between App Store / Setapp and our Direct store, products purchased or subscribed from one store **cannot be replaced or interchanged** on another. ### Direct from BusyMac.com[​](#direct "Direct link to Direct from BusyMac.com") One-time purchase of a perpetual license you own for $49.99 USD (further discounts when purchasing both BusyCal and BusyContacts). You can use the app on all of your Macs, including on that of your family members. **Benefits**: * Pay once and own the product * Get updates a lot earlier * Get early and exclusive access to beta versions. All the new features, enhancements we're working on - you get to try these sooner. **Caveats**: * Your purchase comes with free updates for 18 months (requires optional renewal at 20-40% off (actual discount rate is subject to the promotional offerings) in order to receive another 18 months of updates). ### Mac App Store[​](#masstore "Direct link to Mac App Store") The App Store version includes all essential calendaring features at no cost (i.e. in `Free mode`). For an enhanced experience, consider subscribing to our premium package. Priced at $39.99 USD per year or $4.99 USD per month, the yearly subscription offers a savings of approximately **33%**. You can use the app on all of your Macs (i.e. it supports Family Sharing). The subscription covers the **Mac app only**. BusyCal and BusyContacts are sold separately on the App Store, so each is subscribed to separately, and **BusyCal for iPhone and iPad is not part of the subscription** — it remains a separate, one-time purchase on the iOS App Store. Subscribe to unlock the following premium features: * **[Weather Forecasts](/docs/busycal/70602-weather.md)** * **[Upcoming Event Countdown](/docs/busycal/70606-busycal-menu.md#upcoming)** * **[Conference Call Creation](/docs/busycal/119897-using-busycal-with-zoom.md)** * **[Event Tagging](/docs/busycal/70597-tags.md)** * **[Time-Blocking Events across multiple calendars](/docs/busycal/142884-cross-calendar-blocking-events.md#blocking-events)** * **[Automatic Time-Blocking with Rules](/docs/busycal/142884-cross-calendar-blocking-events.md#automatic-rules)** * **[Task Durations](/docs/busycal/70613-time-tracking.md)** * **[Graphics Panel](/docs/busycal/70598-graphics.md#graphics-panel)** * **[Attachments](/docs/busycal/70598-graphics.md)** * **[Travel Time](/docs/busycal/70603-locations-maps-travel-time.md#travel-time)** * **[Time to Leave Alarms](/docs/busycal/70603-locations-maps-travel-time.md#travel-time-alarms)** * **[Interactive Map for Events with Locations](/docs/busycal/event-map-view.md)** * **[Exporting Calendar & Events in CSV format](/docs/busycal/70618-exporting-importing-and-merging-calendars.md#export-csv)** * **[Multiple Smart Filters & Calendar Sets](/docs/busycal/70612-smart-filters.md#calendar-sets)** * **[Multiple Favorite Time Zones](/docs/busycal/70609-time-zones.md#favorite-time-zones)** * **[Alternative Calendar Display](/docs/busycal/70607-preferences.md#general-preferences)** * **[Shorten URLs in Notes](/docs/busycal/70595-info-panel.md#shorten-urls)** * **[Find and Replace](/docs/busycal/find-and-replace.md)** You can [view and mange your App Store subscriptions](https://support.apple.com/HT202039) at any time. **Benefits**: * Subscribe once and never worry about updates or upgrades. You're always on the latest version. * Auto-renewals managed by App Store, which means easy install, easy updates, easy renewals, easy cancellation and refunds managed by Apple. * Supports family sharing. A single subscription covers the whole family. * Supports flexible monthly billing in addition to yearly billing. Use for however long. Cancel at any time. **Caveats**: * Requires an active subscription. Premium features no longer function if your subscription expires. * Covers the Mac app only. BusyCal for iPhone and iPad is bought separately on the iOS App Store as a one-time purchase, and BusyCal and BusyContacts are each subscribed to separately. * BusyCal does not support displaying the **current date** in the dock when the app is not running (technical limitation on app store apps). ### Setapp[​](#setapp "Direct link to Setapp") A single subscription price for dozens of apps. View and mange your subscription via [Setapp](https://www.setapp.com) directly. **Benefits**: * A collection of hand-picked, glorious apps for a fixed subscription fee. * Subscribe once and never worry about updates or upgrades. You're always on the latest version. * Purchase managed by Setapp, which means easy install, easy updates, easy cancellation and refunds managed by Setapp. **Caveats**: * No longer functions if your subscription expires * We receive a very small share of the subscription fee --- # Zoom account keeps requesting to be reauthorized This authentication issue occurs due to a known limitation in Zoom's API. Zoom does not support users being logged into their account on multiple devices simultaneously. In practice, this means one Zoom account can be authorized in BusyCal on only one device at a time. Zoom's developer support team has documented [this limitation here](https://devforum.zoom.us/t/anything-that-would-cause-all-refresh-tokens-for-a-user-level-app-to-go-bad/24186/2). When you use your Zoom account on multiple devices, Zoom automatically invalidates previous authentication tokens, causing repeated reauthorization requests. This affects BusyCal's integration with Zoom meetings and calendar sync. ## Solutions[​](#solutions "Direct link to Solutions") **Recommended approach:** Use your Zoom account in BusyCal on only one device to avoid authentication conflicts. **Alternative workaround:** If you need Zoom integration on multiple devices, you can create separate Zoom accounts for each device, though this requires managing multiple accounts. We encourage you to provide feedback directly to Zoom requesting they improve multi-device support for third-party calendar integrations. --- # Manage Plugins button not showing in Apple Mail preferences BusyContacts has supported two different ways of showing email activity from Apple Mail: * **Mail extension (macOS 12+)**: Uses the **BusyContacts Mail Assistant** MailKit extension and is enabled in **Mail > Settings/Preferences > Extensions**. This is the recommended option. * **Legacy Apple Mail plug-in**: Uses **Mail > Settings/Preferences > General > Manage Plug-ins…** and is only available in older BusyContacts versions. caution The legacy Apple Mail plug-in is no longer supported. The last BusyContacts release to include it was **BusyContacts 2025.4.4**. If you're using a newer BusyContacts version, you should *not* be looking for **Manage Plug-ins…**. Use the Mail extension instructions in the [Activity List](/docs/busycontacts/47350-activity-list.md#adding-mail) documentation instead. Although this is an Apple Mail bug, please try following the trouble shooting steps given in [this article](/docs/busycontacts/47350-activity-list.md#troubleshooting) to resolve this issue. --- # Does BusyCal support Push sync for Google Calendar? BusyCal v2022.3.1 upwards supports Push sync for Google Calendar. You can enable this by opening **Settings > Accounts**, selecting your Google account and changing the sync frequency to **Push**. NOTE: If you have blocked BusyCal from receiving notifications from under System Settings > Privacy > Notifications or there are other external limits in place on your account, Push may not be available as an option. --- # BusyContacts update stuck on Converting Database This appears to be due to a bug in how migration is handled by macOS. Please try and download the app again from this link and see if this fixes it for you. It may take a few moments to convert the database, but should not take more than 1 minute. If it takes longer, please proceed to the next step below: <https://www.busymac.com/download/BusyContacts.zip> In case re-installing the app does not help, it seems the database has become corrupt during migration and needs a manual reset, like so: Open Finder, select "Go" from the top menu and then "Go to Folder", and paste the following in the dialog box as-is: \~/Library/Containers/com.busymac.busycontacts/Data/Library/Application Support/BusyContacts In the window that appears, delete these files: BusyContacts.bsql, BusyContacts.bsql-wal, BusyContacts.bsql-shm 2. Launch BusyContacts again 3. You will have to re-connect to your accounts under BusyContacts > Settings > Accounts. You can also restore from a previous backup if you had On My Mac contacts (see point 4 below) Note: If syncing with iCloud, you will have to re-enter your iCloud app-specific password for BusyContacts. If you have forgotten your iCloud app-specific password, you can create a new one and use the new app-specific password instead. You can learn more about [creating an app-specific password here](/docs/faqs/71150-unable-to-log-into-icloud-i-m-seeing-password-incorrect-prompts.md) If you had local "On My Mac" contacts and you wish to recover them, you may restore them from one of the BusyContacts backups that are automatically created each day. To do so, select File > Restore from Backup, and select one of the recent backups from the list and select the local "On My Mac" contacts you wish to restore. You should not restore the iCloud, Google or Exchange contacts, as those will be re-synced automatically in step 3. --- # Why BusyCal Uses iCloud Credentials Instead of Local Access BusyCal uses the CalDAV protocol for direct iCloud synchronization to access advanced calendar features and metadata that are not available through [Apple's local Calendar SDK (EventKit)](/docs/busycal/140077-using-busycal-with-apple-calendar.md). This approach is necessary because Apple's native Calendar SDK has significant limitations for third-party calendar applications. The technical reasons and limitations of using Apple's built-in SDK are [explained in detail here](/docs/busycal/140077-using-busycal-with-apple-calendar.md#why-not-use-built-in-sdks). --- # The badge count on the iOS app won't refresh There can be a number of reasons why the badge count won't refresh. We've [listed a number of reasons here as well](/docs/faqs/ios-background-sync-limits.md). 1. Check **iOS System Settings > Notifications > BusyCal**. Make sure you have given the app permission to update Badges 2. If you are force-closing the app (i.e. by swiping up from the bottom of the screen, then closing the apps by swiping on them), iOS takes that as a hint that you don't want that app to sync in the background and will not allow any background processing (Apple recommends you only do that when an app is unresponsive: <https://support.apple.com/en-us/109359>). This will also prevent it from updating badge counts and performing other timely sync related activities. When this happens, you much physically launch the app manually for it to later sync in the background. 3. You are restarting your phone frequently, or turn it off at night. After a restart, iOS does not auto-refresh any app. You must manually launch the app once for it to be included in the next timely refresh. People have written a lot of articles on not to force-quit or restart the phone unnecessarily: <https://tidbits.com/2020/05/21/why-you-shouldnt-make-a-habit-of-force-quitting-ios-apps-or-restarting-ios-devices/> <https://daringfireball.net/2017/07/you_should_not_force_quit_apps> 4. The app may simply be throttled by iOS as it tries to save on battery. Sadly there's nothing we can do about iOS throttling. iOS learns how you use the app, how frequently you force-close it and takes these into account when considering it for a background refresh. --- # Tags I delete in BusyCal come back after a few minutes Tags will continue to re-appear if they're being used by one or more events that are syncing in - deleting a tag sadly does not delete it from all existing events that use them. You will have to remove the tag from all events that are tagged with this tag before it stops re-appearing altogether. Also note: if you're using an Exchange account, you will have to delete these tags (that appear as Categories in Exchange) from your Exchange account using Outlook or Office 365 online portal --- # Office 365 Connectivity Problems BusyCal on Mac allows you to add [Microsoft Teams meetings](/docs/busycal/70642-using-busycal-with-exchange-office-365.md#teams) to all your Office 365 events, which requires connecting to Microsoft's Graph interface. BusyCal also offers an [Office 365 (Microsoft Graph)](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) connection for full calendar and task management. ## Common Connection Issues Explained[​](#connection-issues "Direct link to Common Connection Issues Explained") If you're having trouble connecting BusyCal to your Office 365 account, it's typically due to one of these reasons: ### 1. Personal vs. Enterprise Account Type[​](#account-type "Direct link to 1. Personal vs. Enterprise Account Type") **If you have a personal Microsoft account** (outlook.com, hotmail.com, etc.): * Use the "Personal Outlook" account type when setting up in BusyCal, not "Office 365" * Personal accounts authenticate differently than enterprise accounts **If you have an enterprise account** (provided by employer/company/university): * The most common issue is that admin consent is required (see below) ### 2. Admin Consent Required[​](#admin-consent "Direct link to 2. Admin Consent Required") Office 365 enterprise installations have restrictive default settings that disallow third-party apps from connecting without explicit permission from your IT administrator. Even if other third-party apps work for you, it's because your admin has specifically approved those apps. BusyCal uses Microsoft's official authentication library and is a **Microsoft Verified Publisher** under the company name [**Beehive Innovations**](/about.md) (*BusyMac* is our domain name). The verified badge appears during authentication. All data remains private and secure, as outlined in our [Privacy Policy](/privacy.md). Note for IT Administrators BusyCal **only** uses standard **Delegated Permissions**. This means it only ever acts on behalf of the signed-in user and only accesses data the user already has permission to access. It does **not** use or require any "App-Only" (Application) permissions that would grant it blanket access to the entire organization's data. Admin consent is typically only required because your tenant restricts users from consenting to third-party applications themselves. You simply need to allow the app. When setting up an **Office 365 account (Exchange Web Services)** with **Microsoft Teams** or using the newer **Office 365 (Microsoft Graph)** connection type, repeated authentication prompts may appear if your **IT Administrator** has not granted the required permissions in **Microsoft Entra**. To avoid authentication issues, your IT administrator needs to grant **Admin Consent** via Microsoft Entra. Follow the steps below. ## Enabling Microsoft Graph Access in Microsoft Entra (Recommended)[​](#enabling-microsoft-graph-access-in-microsoft-entra-recommended "Direct link to Enabling Microsoft Graph Access in Microsoft Entra (Recommended)") If you are an **Entra Administrator**, follow these steps to approve BusyCal for all users. ### **Step 1: Configure Admin Consent Requests**[​](#step-1-configure-admin-consent-requests "Direct link to step-1-configure-admin-consent-requests") 1. Log into [Microsoft Entra](https://entra.microsoft.com/). 2. Navigate to **Identity > Applications > Consent and Permissions > Admin Consent Settings** or go directly to: [Admin Consent Settings](https://entra.microsoft.com/#view/Microsoft_AAD_IAM/ConsentPoliciesMenuBlade/~/AdminConsentSettings) 3. Ensure that **users can request admin consent** for third-party apps like BusyCal. ### **Step 2: User Requests Admin Approval**[​](#step-2-user-requests-admin-approval "Direct link to step-2-user-requests-admin-approval") 1. Have the user connect their **Microsoft 365** account in BusyCal. 2. A prompt will appear requesting **Admin Consent** approval. ### **Step 3: Approve the Consent Request**[​](#step-3-approve-the-consent-request "Direct link to step-3-approve-the-consent-request") 1. In **Microsoft Entra**, go to: **Identity > Enterprise Applications > Admin Consent Requests** 2. Locate the request for **BusyCal** in the list. 3. Click on it and approve the requested permissions. ### **Step 4: Assign Users & Groups**[​](#step-4-assign-users--groups "Direct link to step-4-assign-users--groups") 1. In **Microsoft Entra**, go to **Enterprise Applications > BusyCal > Overview**. 2. Click **"1. Assign users and groups"**. 3. Add the user(s) or group(s) who need access to the application. 4. Save the settings. Once completed, the user should now be able to connect BusyCal successfully. ## Alternative: Proactively Granting Admin Consent (Manual Setup)[​](#alternative-proactively-granting-admin-consent-manual-setup "Direct link to Alternative: Proactively Granting Admin Consent (Manual Setup)") If your organization prefers to proactively grant access without requiring users to submit requests, an Administrator can use the Admin Consent link. ### **Step 1: Use the Admin Consent Link**[​](#step-1-use-the-admin-consent-link "Direct link to step-1-use-the-admin-consent-link") * Click the following link to initiate the admin consent workflow: **[Grant Admin Consent for BusyCal](https://login.microsoftonline.com/common/adminconsent?client_id=885773d6-1859-4189-9b95-b9128fe95ae1)** * Sign in with your **Administrator** account. ### **Step 2: Review and Accept Permissions**[​](#step-2-review-and-accept-permissions "Direct link to step-2-review-and-accept-permissions") You will be prompted to grant the following **Delegated Permissions** to BusyCal: * `Calendars.ReadWrite.Shared` (**Required** for calendars you own and have been shared with you) * `User.Read` (**Required** for timezone and settings) * `User.ReadBasic.All` (*Recommended* for free/busy availability & email lookups) * `Tasks.ReadWrite.Shared` (**Required** for shared task lists) * `People.Read` (**Required** for attendee lookups) * `MailboxSettings.Read` (**Required** for mailbox settings/preferences) **Optional Permissions**: * `Group.Read.All` (For looking up joined group calendars). This is used when you select `Enable access to Group Calendars` when adding your account. Clarification Unlike what the name might suggest, `Calendars.ReadWrite.Shared` is **not** an “all enterprise-wide calendars” permission by itself. It allows BusyCal to act as the **signed-in user**, and only access calendars the signed-in user already has access to (including shared/delegated calendars). It does not grant blanket access to every calendar in the tenant unless admins grant **application (app-only)** calendar permissions, or the user already has that access. **Source:** Learn more about Microsoft Graph docs on shared/delegated calendars: <https://learn.microsoft.com/en-us/graph/outlook-get-shared-events-calendars> ### **Step 3: Verify in Microsoft Entra**[​](#step-3-verify-in-microsoft-entra "Direct link to step-3-verify-in-microsoft-entra") 1. Once accepted, go to **Microsoft Entra** > **Identity** > **Enterprise Applications**. 2. Search for **BusyCal** to confirm it has been added. 3. Users can now successfully connect their accounts in BusyCal without further approval. ## Why Some Third-Party Apps Work But Not BusyCal[​](#other-apps-work "Direct link to Why Some Third-Party Apps Work But Not BusyCal") If other third-party apps successfully connect to your Office 365 account but BusyCal doesn't, it's because: 1. Those apps have been specifically approved by your IT administrator 2. Some apps may use less secure methods to connect that bypass Microsoft's permission requirements 3. BusyCal follows Microsoft's best security practices and requires proper authorization For the best security and future compatibility, we recommend working with your IT administrator to properly grant BusyCal access using the methods described above. ## Setting up Microsoft Teams Integration[​](#teams-integration "Direct link to Setting up Microsoft Teams Integration") Once admin consent has been granted: 1. In BusyCal, go to **Settings > Accounts** 2. Select your **Office 365 account** 3. Check the **Microsoft Teams** option 4. Close settings Now when creating events, you'll see an option to add Teams meetings in the Info Panel. ## Related Resources[​](#related "Direct link to Related Resources") * [Using BusyCal with Office 365 (Microsoft Graph)](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) * [Using BusyCal iOS with Office 365 (Microsoft Graph)](/docs/busycalios/using-busycalios-with-office-365-microsoft-graph.md) * [Using BusyCal with Exchange/Office 365](/docs/busycal/70642-using-busycal-with-exchange-office-365.md) ## Troubleshooting & Final Steps[​](#troubleshooting "Direct link to Troubleshooting & Final Steps") If BusyCal continues to prompt for authentication: * **Microsoft Entra:** Ensure admin consent has been granted under **Enterprise Applications**. * **Try Reconnecting:** Delete and re-add your account in BusyCal. For **Microsoft Teams Integration** (if using Exchange Web Services): * Enable the **Microsoft Teams** checkbox in **Settings > Accounts** under your **Office 365 account settings**. --- # I see "Installation Failed" error when running the installer When you encounter an "Installation Failed" error while running the BusyCal or BusyContacts installer package (.pkg file), this typically occurs because the file was downloaded to a location where macOS cannot perform proper security verification checks. ## Common Causes[​](#common-causes "Direct link to Common Causes") This installation error usually happens when the installer package is located in: * Cloud storage folders (Google Drive, Dropbox, OneDrive, iCloud Drive) * Network drives or external storage * System-protected directories * Non-standard download locations ## Solution[​](#solution "Direct link to Solution") **Step 1: Move the installer to a safe location** Move the downloaded .pkg file to your Desktop or another folder within your home directory. **Important**: Ensure the destination folder is not inside any cloud storage service folder. **Step 2: Open the installer properly** Right-click (or Option+click) on the .pkg file and select "Open..." from the context menu. This bypasses macOS Gatekeeper restrictions and allows the installer to run with proper permissions. ## Why This Happens[​](#why-this-happens "Direct link to Why This Happens") macOS requires installer packages to be in trusted locations to perform security verification. When packages are stored in cloud service folders or non-standard locations, the system cannot complete these security checks, resulting in installation failures. --- # Unable to connect my Google account There can be a variety of reasons why you may be unable to connect to your Google Calendar / Contacts account. ## i) System Date & Time out of sync[​](#datetime "Direct link to i) System Date & Time out of sync") When your system's date and time is out of sync, Google Servers may refuse to connect. Try this: Open System Preferences > Date & Time. Make sure "Set date and time automatically" is checked. If not, check it, save it, quit and relaunch BusyCal and try again. If it persists, rebooting your Mac should solve the problem. If not, try this: 1. If you're using Firefox or some browser other than Chrome / Safari, switch to Chrome and make it your default browser temporarily (we've seen issues on Firefox before). 2. Quit and relaunch your web browser. 3. Quit BusyCal. Now try again. ## ii) DNS cache needs clearing[​](#dnscache "Direct link to ii) DNS cache needs clearing") Try this as a test: 1. Open your browser and paste the following link, it should open a blank page but should not show any errors: <https://www.googleapis.com/oauth2/v4/token> If you see an error, your DNS cache needs to be flushed. 1. Open Terminal.app 2. Enter the following command and hit return `sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder` Now, try visiting the link above. If it succeeds, remove and re-add your account in the app in order to re-authenticate. ## iii) Keychain Access related issue[​](#keychain "Direct link to iii) Keychain Access related issue") 1. Launch Keychain Access (in /Applications/Utilities). Select "All items" under Category in the left panel, and ensure "Login" is selected under Keychains at the top. 2. Type "BusyCal" (or BusyContacts, depending on the app you're using) into the search field and find all Google OAuth items that start with the name "BusyCal - Google...". 3. Select all of the matching items and press the delete key to delete them. This will delete the old keychain items and cause them to be rebuilt the next time they are needed. 4. Quit Keychain Access. 5. Launch the app and select View > Refresh Calendars (or type Command-R). A dialog will appear requiring you to Authorize with Google Calendar. Click the Authorize via Web Browser button. 6. In your web browser, login to your Google account if you're not logged in already, then click Allow to grant the app access to your Google Calendar. If you are syncing with multiple Google accounts, pay close attention to which account you are authorizing in your web browser and that it corresponds to the same account in the app. --- # Why does my inbox show that a change was made by an Unknown Person? BusyCal will show "Unknown person" or simply remove the name of the person who made the change because the event was modified / created on a device / app (possibly Apple Calendar) which did not share contact details. Sadly since this is a BusyCal only feature, it only works when you add events from within BusyCal. If in case the event was added in BusyCal, it may not be able to obtain these from your Me Card when: * BusyCal is denied access to Contacts, OR * When the event was created by any app other than BusyCal, OR * When Apple Calendar makes a change and removes the 'modified by' field stored in the event When it syncs over, BusyCal doesn't know who changed it and so it says 'Unknown Person'. Sadly since this is a BusyCal only feature, it only works when you add events from within BusyCal. Note that the reason you're seeing these is because you've turned on 'Show me change notifications' for the calendar. To turn these off, double click on the calendar these events belong to, then uncheck the option 'Show change notifications in Inbox'. --- # Two week widget appears blank Widgets on iOS have a hard limit on the amount of memory they can consume. Unfortunately, if you have a calendar set with a lot of events, the widget would appear blank as iOS would simply refuse to render it. The only work around is to select a Calendar Set within the app with fewer number of calendars and events. From the Calendar Set settings, you can choose a specific set to be used for home screen widgets (instead of the currently selected set) to counter this limitation. --- # Cannot add multiple alarms to events on Exchange / O365 Office 365 / Exchange only supports a single alarm per event. Additional alarms are not supported. --- # Events from Microsoft Bookings not showing in BusyCal Office 365 accounts syncing via Exchange Web Services (EWS) do not support Microsoft Bookings. Use the **Office 365 (Microsoft Graph)** account type to sync Bookings events. You will need to be on the latest version of BusyCal (v2024.2.1 onwards) to be able to see events from Microsoft Bookings. Please see more about [Microsoft Graph here](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md). --- # Does BusyCal sync Settings between multiple devices? Yes. BusyCal syncs settings between devices signed into the same iCloud account. CloudKit sync covers accounts, color tags, and Smart Filters / Calendar Sets. What syncs: * App settings between Macs (when **Sync General Settings** is enabled) * View settings between Macs * Accounts * Color Tags * Smart Filters / Calendar Sets (including remembered view settings and related smart group preferences) Calendar Set platform behavior: * Mac calendar sets sync only to other Macs * iPhone calendar sets sync only to other iPhones * Calendar sets do not cross-sync between Mac and iPhone because Mac calendar sets can include filters that iPhone does not support What does **not** sync: * **Account credentials** (passwords, OAuth tokens, app-specific passwords) stay only in the local Mac's Keychain and are never sent to iCloud. When an account syncs to a new Mac, you'll be asked to re-authenticate it once there. These sync toggles live under **BusyCal > Settings > Advanced** (**Sync Settings**, **Sync Accounts**, **Sync Smart Filters & Calendar Sets**). iCloud Drive must be enabled in System Settings. --- # Does BusyCal have access to my calendars / events? Absolutely not. We have **no access** to any data or information you store within our apps. In fact, we do not even know who's using the app. Please see the following for a [detailed response](/privacy.md) --- # How does BusyCal receive and show Inbox invitations? Invitations in iCloud, Google Calendar, Exchange, and Outlook are primarily managed at the account level. When someone sends an invite, it can be delivered in two main ways: as a direct update to your calendar account (common for users on the same service such as Google Calendar or using CalDAV-compatible platforms) or as an email with an `.ics` attachment. The `.ics` file contains all the event details, such as the title, time, location, and participants, allowing recipients to accept or decline the invitation and add it to their calendar. ## Behind the Scenes: How Invitations Reach Your Calendar[​](#behind-the-scenes-how-invitations-reach-your-calendar "Direct link to Behind the Scenes: How Invitations Reach Your Calendar") 1. **Email Delivery**: * Invitations are always delivered to your email inbox. * These emails contain the `.ics` file, which is the standard format for calendar events. 2. **Calendar Inbox Sync**: * iCloud and Google Calendar are designed to automatically detect these invitation emails. * When such emails arrive, they "courteously" transfer the event details to your "Calendar Inbox," making it easier to manage invites directly from your calendar app. 3. **Why You Might Miss an Invite in BusyCal**: * Occasionally, this automatic transfer from email to the Calendar Inbox doesn't happen. Common reasons include: <!-- --> * **Google Calendar Settings**: Google has a specific setting that controls whether invitations are added to your calendar automatically. If this is disabled, the invite stays in your email inbox and doesn’t sync with your calendar. * **Invite Sent to the Wrong Server**: If you use an email address like `username@gmail.com` for your iCloud account, invitations might be intercepted by Google Calendar instead of being delivered to iCloud. This happens because the email is routed to your `@gmail.com` address, which Google manages. To avoid such conflicts, it's best to share an email address that clearly corresponds to the intended calendar service, such as `@me.com` or `@icloud.com` for iCloud. These domain-specific addresses ensure the invite is routed to the correct server without ambiguity. Note that BusyCal relies on the events being available in your calendar account's Inbox - it does not read your emails and has no access to your emails. If the invite isn’t transferred from your email to the calendar (e.g., due to the reasons above), BusyCal won’t be able to auto-import it because it doesn’t see the event in the calendar data. ## Show Invitations From Selected Calendars Only[​](#show-invitations-from-selected-calendars-only "Direct link to Show Invitations From Selected Calendars Only") You can keep a calendar's events visible in BusyCal while excluding its invitations from the BusyCal Inbox. This is useful when you want to view a work calendar in BusyCal but handle its invitations in Outlook. See [How can I hide meeting invitations from one calendar?](/docs/faqs/hide-meeting-invitations-from-calendar.md). ## Best Practices to Ensure Invitations Sync Properly[​](#best-practices-to-ensure-invitations-sync-properly "Direct link to Best Practices to Ensure Invitations Sync Properly") 1. **Enable Automatic Invitation Handling**: * For Google Calendar users, make sure the setting to automatically add event invitations is enabled. This can usually be found in your Google Calendar settings under **Event Settings** > **Add invitations to my calendar**. 2. **Check Your Email Inbox**: * If you don’t see an invitation in BusyCal, look for the original email with the `.ics` attachment. You can manually add the event by opening the `.ics` file. 3. **Sync Troubleshooting**: * Ensure your calendar account is properly synced in both your email and BusyCal. * Check for any connectivity issues or temporary outages in your calendar service. --- # Why are there two processes for BusyCal? BusyCal and BusyCal Menu ### About BusyCal Processes: Main App and "BusyCal Menu & Alarms"[​](#about-busycal-processes-main-app-and-busycal-menu--alarms "Direct link to About BusyCal Processes: Main App and \"BusyCal Menu & Alarms\"") BusyCal operates through two key processes: 1. **The Main BusyCal App**: The primary calendar application, which handles account syncing and must remain running to sync with calendar services. 2. **BusyCal Menu & Alarms**: An **extension process** that serves two primary functions: <!-- --> * Provides a menu-bar mini calendar app that can use locally stored data independently, but does not sync accounts itself. * Manages and displays the Alarm window for alerts related to tasks and events. ### Why Two Processes?[​](#why-two-processes "Direct link to Why Two Processes?") Historically, macOS apps could not provide alerts or alarms when the main app wasn’t running. Unlike iOS, where the Notification Center operates independently, macOS apps required the app itself to be active. Although recent macOS versions now allow apps to show alerts while not running, Notification Center alerts remain limited in functionality. To address this limitation, BusyCal offers a custom solution: * **BusyCal Menu & Alarms** runs as a background process. * This allows BusyCal to deliver powerful, customizable alarms and notifications, even when the main app isn’t running. * It also supports older macOS versions by back-deploying this feature. ### Customization Options[​](#customization-options "Direct link to Customization Options") You can manage the behavior of these processes from BusyCal Settings: * **Alarms Settings**: <!-- --> * Switch to macOS Notification Center alarms. * Disable all alarms if preferred. * **Menu Settings**: <!-- --> * Turn off the menu-bar mini calendar app. Even if you opt for Notification Center alarms, these alerts are still managed by the **BusyCal Menu & Alarms** process for seamless functionality. ### Important Note[​](#important-note "Direct link to Important Note") Both processes appear in **System Settings > Notifications**: 1. **BusyCal** 2. **BusyCal Menu & Alarms** Each has similar options, including toggles for notifications and alert styles (None, Banners, or Alerts). However, to enable the full BusyCal experience: * **Enable alerts for both processes**: <!-- --> * Background push notifications (e.g., triggering background sync for Google Calendar or Outlook changes) rely on the main **BusyCal** app remaining running. * Additional alerts from within the main app also depend on the main calendar process. ### Why Are There Two Entries in Notifications?[​](#why-are-there-two-entries-in-notifications "Direct link to Why Are There Two Entries in Notifications?") **System Settings > Notifications** lists both processes for BusyCal. Here's why: * The **BusyCal Menu** process primarily manages overall alerts, including alarms and notifications, even when the main app isn’t running. * For **background push notifications** (e.g., triggering background sync when changes are detected in Google Calendar or Outlook) and additional in-app alerts, both the **BusyCal** and **BusyCal Menu & Alarms** processes must be allowed to display alerts. These permissions do not enable account syncing after the main BusyCal app quits. **Recommendation**: For the best experience, configure both entries to allow notifications and set similar preferences for alerts. --- # Google Calendar showing Birthdays in main calendar This appears to be a bug in Google Calendar that they introduced recently, causing birthdays to erroneously show up in 3rd party apps but not within Google Calendar. There is no workaround at the moment other than to contact Google Custom Care and complain about this. This is not a BusyCal bug. We have reported this as a bug to Google but have not received an acknowledgment. --- # Todoist Login Screen Is Blank in BusyCal iOS BusyCal for iOS connects to Todoist using a web sign-in flow. If you tap **Connect** and the Todoist login step shows a blank screen, the issue is usually related to your device’s browser settings. ## Fix: Set Safari as Default, Then Retry[​](#fix "Direct link to Fix: Set Safari as Default, Then Retry") 1. Make sure **Safari** is set as your default browser on your iPhone/iPad. (Apple’s steps are here: <https://support.apple.com/en-us/104975>) 2. Open **Safari**, sign in to your Todoist account at <https://todoist.com> to confirm it loads normally, then sign out. 3. Go back to BusyCal and try again: **BusyCal > Settings > Accounts > Add Account > Connect** (next to **Todoist**). 4. If it still shows a blank screen, temporarily disable common web traffic filters and try again: <!-- --> * **VPN** apps * **DNS / web filters** (for example: NextDNS-style profiles) * **Ad blockers / content blockers** (Safari extensions) * **iCloud Private Relay** (if enabled) 5. Try on a different network (switch Wi‑Fi networks, or try cellular data). 6. Force-quit BusyCal, reopen it, and try again. If needed, restart the iPhone/iPad and retry. 7. Check iOS restrictions and Safari settings that can break web sign-in: <!-- --> * **Screen Time / Content & Privacy Restrictions** (or a work/school **MDM** profile) * **Settings app > Safari**: JavaScript enabled, and not blocking all cookies 8. As a last resort, clear Safari website data and retry (this will sign you out of websites): **Settings app > Safari > Clear History and Website Data**. If you’d like more background on how BusyCal syncs Todoist projects and tasks, see: [Using BusyCal iOS with Todoist](/docs/busycalios/70679-using-busycal-with-todoist.md). ## If It’s Still Blank[​](#still-blank "Direct link to If It’s Still Blank") Please contact BusyMac support and include the following details so we can help quickly: * Your iOS/iPadOS version and BusyCal version (**BusyCal > Settings > About**) * Whether Todoist login works normally in Safari on the same device * Whether you were using a VPN / Private Relay / content blocker when the issue occurred * Whether Screen Time / MDM restrictions are enabled on the device * A screenshot of the blank screen * BusyCal logs (go to **BusyCal > Settings > Help > Email Support** and include logs) --- # Why do I see two BusyCal widgets in the macOS widget picker? If the macOS widget picker (**Edit Widgets…**) lists **two BusyCal entries**, it is almost always because macOS is configured to show iPhone widgets on your Mac. One entry is the native BusyCal macOS widget; the other is the BusyCal iOS widget being mirrored from a nearby iPhone that is signed in to the same Apple ID. Starting with macOS Sonoma, the system can surface widgets from iOS apps installed on a connected iPhone — even when those apps also exist on the Mac. Because BusyCal is available on both macOS and iOS, the widget gallery ends up listing both versions side by side, which looks like a duplicate. ## Fix: turn off iPhone widgets on the Mac[​](#fix-turn-off-iphone-widgets-on-the-mac "Direct link to Fix: turn off iPhone widgets on the Mac") 1. Open **System Settings > Desktop & Dock**. 2. Scroll down to the **Widgets** section. 3. Turn off **Use iPhone widgets**. 4. Re-open the widget picker. Only the native macOS BusyCal widget should remain. Apple documents this setting [here](https://support.apple.com/guide/mac-help/mchl52be5da5/mac). tip If you prefer to keep iPhone widgets enabled on the Mac, both BusyCal entries are legitimate — the macOS widget renders instantly on your Mac, while the iOS widget mirrors your iPhone's home-screen widget over Continuity. In that case you can simply pick whichever version you want to place on the desktop or in Notification Center. --- # Why do I see duplicate events from a shared calendar and my own calendar? If you see the same event appearing twice in BusyCal — once on a shared calendar (for example, a colleague's calendar, a family calendar, or a project calendar shared with you) and again on a calendar you own — this is usually because the event genuinely exists on both calendars and BusyCal is faithfully syncing both copies. The fix is to enable **View > Combine Identical Events** from the BusyCal menu bar at the top of the screen. With this turned on, BusyCal automatically collapses identical copies and shows only the most appropriate one in your view, while still letting you switch to any of the other copies from the Info Panel. This commonly happens with: * A meeting invite delivered to more than one of your accounts (e.g. work and personal) that you both have connected to BusyCal. * An event on a shared/family calendar that also appears on a personal calendar you own. * Two overlapping subscriptions (such as two similar holiday calendars) that contain the same entries. * [Cross-calendar blocking events](/docs/busycal/142884-cross-calendar-blocking-events.md), where the original event and its blocking copy share the same title and time. For the full criteria BusyCal uses to decide that two events are identical, how it picks which copy to display, and how to access the hidden copies from the Info Panel, see [Combine Identical Events](/docs/busycal/133794-combine-identical-events.md). --- # How do I remove a file attachment from an event or task? An attached file in the Info Panel has no trash icon or remove button next to it, so it can look like the attachment is permanent. It isn't — the **attached** row is a pop-up menu, and choosing **None** from it removes the file. You don't need to delete the event or task and create it again. ## Remove an attachment[​](#remove-an-attachment "Direct link to Remove an attachment") 1. Select the event or task and open the [Info Panel](/docs/busycal/70595-info-panel.md). 2. Find the **attached** row. The file name appears underneath it as a link. 3. Click the pop-up menu next to **attached** (it shows **File…**). 4. Choose **None**. The attachment is removed from the event or task and the change syncs like any other edit. tip If you remove the wrong file, choose **Edit > Undo** (`⌘-Z`) right away to put it back. ## Removing more than one attachment[​](#removing-more-than-one-attachment "Direct link to Removing more than one attachment") An event or task can hold several attachments. Each one gets its own **attached** row with its own pop-up menu, and the file name below the row tells you which file that menu controls. Choose **None** on the row for the file you want to remove, and repeat for any others. ## Notes[​](#notes "Direct link to Notes") * Choosing **None** detaches the file from the event or task. The original file on your Mac is left alone. * To attach a file instead, choose **File…** from the same menu, or drag the file onto the event in the calendar. * If the pop-up menu is greyed out, the event is read-only or the account it lives on doesn't support attachments. Google Calendar, for example, does not. * If the **attached** row doesn't appear at all on an event without attachments, turn on **Attachments** in **BusyCal > Settings > Info Panel**. See [Info Panel Fields Missing](/docs/faqs/info-panel-fields-missing.md). ## Related docs[​](#related-docs "Direct link to Related docs") * [Info Panel](/docs/busycal/70595-info-panel.md) * [Info Panel Settings](/docs/busycal/70607-preferences.md#info-panel) * [Graphics](/docs/busycal/70598-graphics.md) --- # How to upgrade BusyCal You may upgrade from BusyCal 2 to BusyCal's latest version as follows: ## How to upgrade to BusyCal[​](#how "Direct link to How to upgrade to BusyCal") 1. [Download](https://www.busymac.com/download/BusyCal.zip) BusyCal's free trial version. 2. Run the installer to install BusyCal over your existing BusyCal 2 installation. 3. Launch BusyCal. The Setup Assistant will walk you through the upgrade process. Your existing BusyCal 2 data will be upgraded to the latest version BusyCal. *Note: BusyCal requires macOS 12 (Monterey) or later.* ## How much does the BusyCal upgrade cost?[​](#price "Direct link to How much does the BusyCal upgrade cost?") * Existing BusyCal customers can upgrade to BusyCal for $39.99. ## How to qualify for BusyCal upgrade pricing[​](#upgrade "Direct link to How to qualify for BusyCal upgrade pricing") BusyCal upgrade pricing is available to all customers exclusively on the [BusyMac Store](/store.md), whether you previously purchased direct or from the Mac App Store. * If you install BusyCal over your existing BusyCal 2 installation, the software will detect that you are eligible for upgrade pricing. In which case, you can initiate the purchase of the upgrade from within the app by selecting BusyCal > Register > Buy Now. This will launch the BusyMac Store in your web browser and add BusyCal to your cart at the $39.99 upgrade price. This option will work for customers who purchased direct as well as those who those who purchased on the Mac App Store. * Alternatively, you can purchase the BusyCal upgrade from the [BusyMac Store](/store.md) by entering the email address you used to purchase your existing BusyCal license. If a record of your purchase is found in our system, an email will be sent to you with a link to purchase the upgrade. If a record of your previous purchase is not found, please [contact us](mailto:support@busymac.com?subject=BusyCal%203%20Upgrade%20Pricing) for help. ## Upgrading to BusyCal for Mac App Store customers[​](#mas "Direct link to Upgrading to BusyCal for Mac App Store customers") The process of qualifying for upgrade pricing outlined above will work for those who purchased direct as well as those who purchased from the Mac App Store. If you purchased from the Mac App Store and the above process is not successful at identifying you as an existing customer, please [email us](mailto:support@busymac.com?subject=BusyCal%203%20Upgrade%20for%20Mac%20App%20Store%20Customers) one of the following forms of proof of purchase, and we will send you a link to purchase the upgrade. * A screenshot showing BusyCal on the [Purchased tab](https://www.busymac.com/mas-purchases-tab.html) in the Mac App Store app. * A copy of your iTunes receipt showing the purchase of BusyCal. * Your [BusyCal logs](busycallog://BusyCal/3/Upgrade/for/Mac/App/Store/Customers). The logs are typically used for troubleshooting problems, but can also show whether you previously used the Mac App Store version. ## How to qualify for a free BusyCal 3 upgrade][​](#free "Direct link to How to qualify for a free BusyCal 3 upgrade]") The BusyCal 3 upgrade is free for those who purchased BusyCal on or after March 1, 2016. * If you purchased BusyCal 2 direct from BusyMac on or after March 1, 2016, the registration code you received will work with BusyCal 3. If you installed BusyCal 3 over your BusyCal 2 installation, you won't have to re-enter your registration code. If for some reason you do need to re-enter your registration code and you can't find it, you may [look up your registration code here](https://support.busymac.com/regcode). * If you purchased BusyCal 2 from the Mac App Store on or after March 1, 2016, we will not have any record of your purchase and you will need to contact us to provide proof of purchase (see the instructions for Mac App Store customers above). --- # Unable to Log Into iCloud: Password Incorrect Prompts ## Why is my iCloud sync failing?[​](#why-is-my-icloud-sync-failing "Direct link to Why is my iCloud sync failing?") If your iCloud sync is failing in BusyCal or BusyContacts, or you're unable to log in to iCloud, the most common cause is **app-specific password** issues. Apple requires all third-party apps that sync with iCloud (like BusyCal and BusyContacts) to use **app-specific passwords**—your standard iCloud password will not work. An app-specific password is a unique, Apple-generated password (16 to 19 characters long) that keeps your iCloud account secure while allowing third-party apps to connect. Only Apple's own apps (Mail, Calendar, and Contacts) can use your regular iCloud password, whereas all other apps must use an app-specific password. ## Common iCloud sync failure symptoms[​](#common-icloud-sync-failure-symptoms "Direct link to Common iCloud sync failure symptoms") * iCloud calendars won't update or sync * iCloud fails to connect * You see cryptic error codes like `-1012` * Calendar events aren't appearing on other devices * Continuous password prompts despite entering the correct password * "Incorrect password" messages even though you're sure it's right These sync issues are typically caused by an incorrect or expired **app-specific password**—especially if you recently reset your main iCloud password, as this automatically revokes all existing app-specific passwords. tip Sometimes connectivity issues are caused by firewall software you may have installed on your device, such as **Little Snitch**. When using a firewall, please ensure BusyCal has been granted permission explicitly. ## How to fix iCloud sync failing[​](#how-to-fix-icloud-sync-failing "Direct link to How to fix iCloud sync failing") We've outlined every step in detail to help you resolve iCloud sync issues. The most reliable solution is to: 1. Remove your existing iCloud account from BusyCal 2. Generate a new app-specific password on Apple's website 3. Add your iCloud account back to BusyCal with the new password Simply follow these step-by-step guides: * [Setting up iCloud on BusyCal iOS](/docs/busycalios/70675-using-busycal-with-icloud.md) * [Setting up iCloud on BusyCal macOS](/docs/busycal/70630-using-busycal-with-icloud.md#syncing) If you continue to experience persistent issues even after you have followed these steps, please [get in touch](/docs.md#technical-support). --- # Can I download old versions of BusyCal and BusyContacts? Following is a list of the current and past releases of BusyCal and BusyContacts. The current versions of [BusyCal](https://www.busymac.com/download/BusyCal.zip) and [BusyContacts](https://www.busymac.com/download/BusyContacts.zip) require macOS 12.0 or later. If you're running an older OS, you may run one of these older versions. ## BusyCal[​](#busycal "Direct link to BusyCal") * [BusyCal 2.6.9](https://www.busymac.com/download/bcl-2.6.9.zip) - for Mavericks 10.9 and Yosemite 10.10. * [BusyCal 2.5.4](https://www.busymac.com/download/bc-2.5.4.zip) - for Mountain Lion 10.8. * [BusyCal 1.6.4](https://www.busymac.com/download/bc-1.6.4.zip) - for Lion 10.7 and Mountain Lion 10.8. * [BusyCal 1.6.2](https://www.busymac.com/download/bc-1.6.2.zip) - for Leopard 10.5 and Snow Leopard 10.6. Or see [any version here](https://www.busymac.com/busycal/releasenotes.md). *Note: BusyCal 1.6 does not sync with Google Calendar and is not compatible with Mavericks or Yosemite.* ## BusyContacts[​](#busycontacts "Direct link to BusyContacts") * [BusyContacts 1.0.8](https://www.busymac.com/download/bct-1.0.8.zip) - for Mavericks 10.9 and Yosemite 10.10. Or see [any version here](https://www.busymac.com/busycontacts/releasenotes.md). ## BusySync[​](#busysync "Direct link to BusySync") * [BusySync 2.3.1](https://www.busymac.com/download/bs-2.3.1.zip) - for Mountain Lion 10.8. * [Busysync 2.3](https://www.busymac.com/download/bs-2.3.zip) - for Tiger 10.4, Leopard 10.5, and Snow Leopard 10.6. *Note: BusySync 2.3 does not sync with Google Calendar and is not compatible with Mavericks or Yosemite.* --- # Selecting a Cloud Syncing Service In order to sync calendars and contacts between all of your devices, or to share calendars and contacts with others, you must sync BusyCal and BusyContacts with a server. BusyCal and BusyContacts are compatible with CalDAV, CardDAV and Exchange servers. You can host your own in-house server ([Exchange](https://products.office.com/en-us/exchange/email), [Kerio](https://www.kerio.com/connect), [Zimbra](https://www.zimbra.com), etc.) or use one of the free or low-cost cloud services available (iCloud, Google, Fastmail, Fruux(not recommended), Kerio, Office 365, etc.). This article examines the pros and cons of syncing BusyCal and BusyContacts with each of these cloud services. Each cloud service has its strengths and weaknesses and is best suited to a certain demographic. Some services are designed for consumers while others are targeted at small businesses or the enterprise. When choosing a cloud service there are many factors to consider including cost, device support, features, calendar and contact sharing, group scheduling, and custom domain support. You are not limited to one service. You can sync BusyCal and BusyContacts with multiple services simultaneously. However, for best results when performing sharing or group scheduling, you should standardize on one cloud service for your entire workgroup. Below is a matrix depicting the key features supported by each cloud service, followed by a summary of the pros and cons of each. ## Cloud service comparison[​](#matrix "Direct link to Cloud service comparison") | | iCloud | Google | Fruux | Kerio | Exchange | | ---------------------------------- | ------ | ------- | ------- | ----- | -------- | | **Syncs w/BusyCal & BusyContacts** | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | **Syncs w/Mac macOS** | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | **Syncs w/iOS** | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | **Syncs w/Android** | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | **Syncs w/Windows** | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | **Tasks** | ✔︎ | Limited | ✔︎ | ✔︎ | ✔︎ | | **Contact Sharing** | - | - | ✔︎ | ✔︎ | ✔︎ | | **Calendar Sharing** | ✔︎ | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | **Calendar Publishing** | ics | ics/web | ics/web | ics | ics | | **Group Scheduling (free/busy)** | - | ✔︎ | ✔︎ | ✔︎ | ✔︎ | | **Custom Domains** | - | ✔︎ | ✔︎ | ✔︎ | ✔︎ | **Glossary** * **Syncs w/BusyCal & BusyContacts** — Server syncs with BusyCal and BusyContacts. * **Syncs w/Mac macOS** — Server syncs with the built-in Calendar and Contacts apps on macOS. * **Syncs w/iOS** — Server syncs with the built-in Calendar and Contacts apps on iOS. * **Syncs w/Android** — Server syncs with the built-in Calendar and Address Book apps on Android. May require a third-party plugin. * **Syncs w/Windows** — Server syncs with Outlook on Windows. May require a third-party plugin. * **Tasks** — Server syncs Tasks with BusyCal (and the Reminders app on macOS and iOS). * **Contact Sharing** — Server supports contact sharing. * **Calendar Sharing** — Server supports calendar sharing. * **Calendar Publishing** — Server supports publishing a read-only calendar that others can subscribe to as an ics feed, or view in a web browser. * **Group Scheduling** — Server supports group scheduling (e.g. [free/busy viewing](/docs/busycal/70616-free-busy-availability-viewer.md)). * **Custom Domains** — Server supports custom domains, so that meeting invitations are delivered from your business email address. ## iCloud[​](#icloud "Direct link to iCloud") iCloud is a free service offered by Apple that syncs with BusyCal and BusyContacts via CalDAV and CardDAV. iCloud syncs natively with Mac and iOS devices, and plugins are available for syncing with [Android](https://smoothsync.org/) and [Windows Outlook](https://support.apple.com/en-us/HT204283). iCloud supports calendar sharing, enabling you to share calendars with other iCloud users with read/write access. You can also publish your calendars in read-only ics format for others to subscribe to. iCloud calendar sharing is ideal for families and very small workgroups but is not suitable for businesses. There are no admin controls for creating users, groups and shared calendars, so users must individually share their calendars in a peer-to-peer fashion. There are no group scheduling features for viewing free/busy time and scheduling resources like conference rooms and projectors. There are [limits](https://support.apple.com/kb/HT4489) to the number of calendars and events you can store on iCloud, which can easily be exceeded in a business environment. And there is no support for custom domains, which means any meeting requests you send will be sent from your personal icloud email address. Lastly, iCloud does not support contact sharing. Pros: * Free * Native support for macOS and iOS * Suitable for individual and family use Cons: * Plugins are required for syncing with [Android](https://smoothsync.org/) and [Windows Outlook](https://support.apple.com/en-us/HT204283) * Does not support contact sharing with BusyContacts * Not suitable for businesses ## Google[​](#google "Direct link to Google") Google Calendar and Contacts are free services offered by Google that sync with BusyCal and BusyContacts via CalDAV and CardDAV. Google syncs natively with Mac, iOS, and Android devices, and plugins are available for syncing with [Windows Outlook](https://support.google.com/a/users/topic/23333). Individuals can use Google Calendar and Contacts for free, and a paid Google Workspace account is available for businesses. Google Calendar supports calendar sharing, enabling you to share calendars with other Google Calendar users with read/write access. You can also publish read-only calendars for others to view in a web browser, or subscribe to in ics format. If you are a Google Workspace customer, admin controls are provided for configuring users and groups, and sharing calendars with members of your organization. You can also view free/busy availability of other users in your workgroup when scheduling meetings. And Google Workspace supports custom domains, so you can send meeting requests from your business email address. Google would prefer that you use your web browser for interacting with its services and does not provide access to all of its features to third-party apps. For example, some features like creating new calendars or sharing calendars can only be configured through the web interface. Further, Google's CalDAV implementation does not support all of BusyCal's features (tasks, attachments, graphics, etc.). Lastly, Google does not support contact sharing. Pros: * Free for individuals; low-cost for Google Workspace customers * Native support for macOS, iOS and Android * Google Workspace provides business-oriented features, such as admin controls, group scheduling and custom domains Cons: * CalDAV and CardDAV sync support is limited; Some features only accessible in web-browser * Plugin required for syncing with [Windows Outlook](https://support.google.com/a/users/topic/23333) * Does not support contact sharing with BusyContacts * Google Task List syncing is supported but limited compared with iCloud/Exchange ## Fruux[​](#fruux "Direct link to Fruux") **UPDATE:** As of July 2020, Fruux servers have introduced a bug where it would either return malformed responses to requests or would fail to process requests of a certain size. This bug has not been fixed (last checked Jan 2022) and affects everyone. Fruux customer care has not responded to complaints. Unfortunately we would not recommend using Fruux. Instead please explore many of the other popular services out there: iCloud / Google / Fastmail and so on. [Fruux](https://fruux.com) is a free or low-cost cloud service targeted at teams and small businesses that wish to share calendars, tasks and contacts. Fruux syncs with BusyCal and BusyContacts via CalDAV and CardDAV. It syncs natively with Mac and iOS devices, and plugins are available for syncing with [Android](https://play.google.com/store/apps/details?id=com.fruux.android) and [Windows Outlook](https://blog.fruux.com/2015/03/06/outlook-contacts-calendars-sync/). Fruux supports calendar sharing, enabling you to share calendars with other Fruux users with read/write access. You can also publish read-only calendars for others to view in a web browser, or subscribe to in ics format. Fruux provides admin controls for configuring users and groups, and for sharing calendars and contacts with other team members. You can also view free/busy availability of other users in your workgroup when scheduling meetings. And Fruux sends meeting requests from your existing email address. Fruux supports contact sharing and multiple address books. In fact, it is the only CardDAV service that provides seamless integration with BusyContacts for sharing address books. Fruux is a reliable sync service that works beautifully with BusyCal and BusyContacts. We think it's a great option for teams and small businesses that want to share calendars and contacts. Pros: * Free for individuals; low-cost for teams * Native support for macOS and iOS * Supports contact sharing with BusyContacts * Provides business-oriented features, such as admin controls, group scheduling and custom domains Cons: * Plugins required for syncing with [Android](https://play.google.com/store/apps/details?id=com.fruux.android) and [Windows Outlook](https://blog.fruux.com/2015/03/06/outlook-contacts-calendars-sync/) * No email service provided (which may be considered a benefit, as you can continue using your existing email address/service) * Based in Europe and billing is in Euros for US customers ## Kerio[​](#kerio "Direct link to Kerio") [Kerio](https://www.kerio.com/products/kerio-connect/server) is an alternative to Exchange targeted at small to medium sized businesses. You can run your own in-house Kerio server, or select a vendor that provides Kerio hosting like [GetSync'd Hosted Kerio](https://getsyncd.com) and [others](https://www.kerio.com/partners/kerio-cloud-solution-distributors). Kerio can sync with BusyCal and BusyContacts via CalDAV/CardDAV or Exchange (EWS) protocol. It syncs natively with Mac and iOS devices, and plugins are available for syncing with [Android](https://dmfs.org/caldav/) and [Windows Outlook](https://kb.kerio.com/product/kerio-connect/email-clients/kerio-outlook-connector/installing-and-upgrading-kerio-outlook-connector-1464.html). Kerio supports calendar sharing, enabling you to share calendars with other Kerio users with read/write access. You can also publish your calendars in read-only ics format for others to subscribe to. Kerio provides admin controls for configuring users and groups, and for sharing calendars and contacts with other team members. You can also view free/busy availability of other users in your workgroup when scheduling meetings. And Kerio supports custom domains, so you can send meeting requests from your business email address. Kerio supports contact sharing and multiple address books. You must create and configure shared address books with the Kerio web client, but once you've done that the shared address books will appear in BusyContacts. Lastly, Kerio supports sharing of calendars and contacts across platforms so Mac users running BusyCal or BusyContacts can share with Windows users running Outlook. Pros: * Alternative to Exchange for small to medium sized businesses * Native support for macOS and iOS * Supports contact sharing with BusyContacts * Provides business-oriented features, such as admin controls, group scheduling and custom domains Cons: * Not free * Plugins required for syncing with [Android](https://dmfs.org/caldav/) and [Windows Outlook](https://kb.kerio.com/product/kerio-connect/email-clients/kerio-outlook-connector/installing-and-upgrading-kerio-outlook-connector-1464.html) * May require IT support for configuration ## Exchange[​](#exchange "Direct link to Exchange") Exchange has long been the gold standard for large organizations, particularly those that run Windows. But it's not just for Windows anymore. Native support for Exchange is built-in to all platforms (Mac, iOS, Android and Windows). BusyCal and BusyContacts support Exchange, allowing you to seamlessly sync calendars and contacts on your Mac with Windows Outlook through Exchange. Most large organizations with dedicated IT staff run their own Exchange servers in-house. But that's not a requirement. There are many service providers offering affordably priced Exchange hosting for small, medium and large businesses, including Office 365, Rackspace, and GoDaddy. Exchange supports calendar sharing, enabling you to share calendars with other Exchange users with read/write access. You can also publish your calendars in read-only ics format for others to subscribe to. Exchange provides admin controls for configuring users, groups, and resources, and for sharing calendars and contacts with other team members. You can also view free/busy availability of other users in your workgroup when scheduling meetings. And Exchange supports custom domains, so you can send meeting requests from your business email address. Exchange supports contact sharing and multiple address books in BusyContacts. You can create multiple address books in BusyContacts and share them with other users, incuding those running Windows Outlook. If you need to sync and share calendars and contacts with Windows Outlook users, Exchange is a good choice. Pros: * Ideal for large organizations, particularly those running Windows Outlook * Native support for all platforms (Mac, iOS, Android and Windows) * Supports contact sharing with BusyContacts * Provides business-oriented features, such as admin controls, group scheduling and custom domains Cons: * Not free * May require IT support for configuration ## Summary[​](#summary "Direct link to Summary") There are many cloud syncing services to choose from. Choose the service that is right for you based on the devices you use, and whether you need to share calendars and contacts, or schedule meetings. And remember, you are not limited to just one service. You can sync with multiple services simultaneously (e.g. sync work related calendars with Exchange and personal calendars with iCloud). **iCloud** is a good choice if you are purely using Mac and iOS, and only need to share calendars with family members. iCloud does not support contact sharing, group scheduling or custom domains. **Google** is a good choice if you are a Google Workspace user and want to share calendars and schedule meetings with members of your workgroup, and use a custom domain. It also works well with Android devices. However, some features can only be accessed through a web browser, and task sync is more limited than iCloud/Exchange. Google also does not support contact sharing with BusyContacts. **Fruux** is a good choice for small businesses that want to share calendars and contacts, schedule meetings, and use a custom domain. It is the best choice for contact sharing with BusyContacts. **UPDATE 2022**: We no longer recommend Fruux as the server introduced bugs some time ago that have not been fixed. We recommend Fastmail instead. **Kerio** is a good choice for small or medium sized businesses looking for an alternative to Exchange. It supports calendar and contact sharing, groups scheduling, and custom domains. **Exchange** is a good choice for medium or large businesses that need cross-platform compatibility with Windows Outlook. It supports calendar and contact sharing, groups scheduling, and custom domains. --- # How to set BusyCal and BusyContacts as the default apps You may set BusyCal and BusyContacts as the default apps as follows: ## Setting BusyCal as the default calendar app[​](#setting-busycal-as-the-default-calendar-app "Direct link to Setting BusyCal as the default calendar app") You can set BusyCal as the default calendar app, as follows: 1. In BusyCal, drag an event to the Desktop to create a .ics file. 2. Select the .ics file in the Finder and choose Get Info from the File Menu or type Command-I. 3. In the window that appears, select BusyCal from the "Open with" popup menu, then click the "Change All" button. ## Setting BusyContacts as the default contact app[​](#setting-busycontacts-as-the-default-contact-app "Direct link to Setting BusyContacts as the default contact app") You may set BusyContacts as the default contacts app, as follows: 1. In BusyContacts, drag a contact to the Desktop to create a vcf file. 2. Select the vcf file in the Finder and choose Get Info from the File Menu or type Command-I. 3. In the window that appears, select BusyContacts from the "Open with" popup menu, then click the "Change All" button. --- # Does BusyCal support location based travel time alarms? Yes, BusyCal supports location based travel time alarms. For more info, see [Locations, Maps & Travel Time](/docs/busycal/70603-locations-maps-travel-time.md). NOTE: Location based travel time alarms are different from geo-fenced, location-based alarms. Geo-fenced alarms are only supported for iCloud Todos (not events). You create these by clicking on Alarms > Custom and then picking "Location" as the type of alert. --- # Importing from Now Up-to-Date and Now Contact If you are a former NUD/NCT user and would like to migrate your data to BusyCal and BusyContacts, this article explains how. Back in the day, Now Up-to-Date (NUD) and Now Contact (NCT) were the undisputed champions of calendaring and contact management for Mac users. We know, we're the [original developers](/about.md). But the apps are no longer supported, have not been updated in many years, and are not compatible with recent versions of macOS. ## Importing contacts from Now Contact[​](#importing-contacts-from-now-contact "Direct link to Importing contacts from Now Contact") BusyContacts supports importing vCard files. If you export your data from Now Contact in vCard format, you can then import it to BusyContacts. However, the Notes field in Now Contact does not properly import into BusyContacts using this method. As a work around, you may be able to solve this using Apple Contacts as an intermediary by importing the vCard fle into Apple Contacts first. Once in Apple Contacts, you can sync the data to BusyContacts through iCloud, or export in vCard format form Apple Contacts and import into BusyContacts. There is also [this public domain AppleScript](https://harvey.nu/export_all_notes_from_now_contact_using_applescript.html) that was written to extract more data out of Now Contact, for the more adventorous. ## Importing events from Now Up-to-Date[​](#importing-events-from-now-up-to-date "Direct link to Importing events from Now Up-to-Date") BusyCal supports importing ics files. However, Now Up-to-Date does not export in ics format, so you have to use an AppleScript utility and iCal as an intermediary. NUD to iCal is an AppleScript utility that copies events from Now Up-to-Date to iCal. You may [download NUD to iCal here](https://www.busymac.com/download/nudtoical.zip). Once you run the script and import your NUD data to iCal, you can then export each calendar from iCal in ics format and import into BusyCal. Note: NUD, NCT and the NUD to iCal script require macOS 10.8 Mountain Lion or earlier and will not run on 10.9 Mavericks or later. Also, the NUD to iCal script requires NUD 5.3.2. If you don't have it, you can [download NUD 5.3.2 here](https://sites.google.com/site/nowsoftwarecom/download). ## How to use NUD to iCal[​](#how-to-use-nud-to-ical "Direct link to How to use NUD to iCal") [Download NUD to iCal](https://www.busymac.com/download/nudtoical.zip), then launch it and select the following options: * **Source calendar** — You may copy events from all calendars (categories) in NUD, or a single calendar. * **Date** — All events on or after the date specified will be copied to iCal. If any of the categories you are attempting to transfer are public categories, then the server must be online. If the server is not online, you may be able to export the public category, then import it as a private category and try again. It is recommended that you set a short date range, like one year, and NOT import 10+ years of events from NUD to iCal, as it will take a long time (many hours) to process and iCal will run very slowly if you add that many events to it. ![NUD to iCal](https://www.busymac.com/images/nudtoical.png) When you click Start, a new calendar will be created in iCal for each source calendar (category) in NUD, and all events that occur after the date specified will be copied to iCal. The progress will be displayed on the bottom of the window while the events are being imported. Processing can take a while depending on the size of your calendar. Make sure you allow plenty of time for processing to complete and do not use or quit NUD or iCal while NUD to iCal is running. You may click the Stop button at any time to stop processing. An alert will be displayed once processing is complete, informing you how many events were imported and to reconfigure the repeating events in iCal. ![Import Complete](https://www.busymac.com/images/nudtoical-alert.png) Note: NUD stores repeating events as a series of individual events, whereas iCal stores repeating events as a single event with a recurrence rule. Therefore, repeating events in NUD are not copied to iCal. Instead, only the first occurrence of a repeating event in NUD is copied to iCal and the word "\[REPEATING]" is appended to the event title so you can easily find these events in iCal and reconfigure the repeat interval. You may search for the repeating events in iCal by entering "repeating" in the search field in the upper-right hand corner of iCal. ![Search](https://www.busymac.com/images/nudtoical-search.png) A list of the matching events will appear on the bottom of the window. ![List](https://www.busymac.com/images/nudtoical-list.png) You may then double-click each one, and reconfigure the repeat interval and edit the event title, as appropriate. ![Repeat](https://www.busymac.com/images/nudtoical-repeat.png) And that's it. All of your events in NUD have been copied to iCal. --- # How do I add my LinkedIn account to BusyContacts? LinkedIn does not allow third party apps to integrate with their service. However, if you add a LinkedIn profile as a **Social** field to a contact, BusyContacts can display an embedded [LinkedIn feed automatically](/docs/busycontacts/47350-activity-list.md). --- # Why does BusyCal launch when I snooze or dismiss an alarm? In BusyCal versions prior to **2026.1.2**, snoozing or dismissing an alarm could launch the main BusyCal app so alarm changes could be processed immediately. From **2026.1.2** onward, BusyCal Menu & Alarms handles these actions directly without opening the main app. If BusyCal still appears when you snooze or dismiss alarms, update BusyCal and review [BusyCal Menu App](/docs/busycal/70606-busycal-menu.md#launches-when-dismissing). --- # How can I avoid duplicate alarms from being displayed? macOS Calendar, Reminders, and BusyCal can each display alarms for your Events and Tasks. You should disable the alerts for macOS Calendar and Reminders to prevent receiving two alarms for every event — one displayed by macOS Calendar or Reminders and another displayed by BusyCal. ## Disable macOS Calendar and Reminder Notifications[​](#disable "Direct link to Disable macOS Calendar and Reminder Notifications") If you want to stop double alarms from calendar events, you need to disable duplicate notifications from macOS Calendar. This prevents you from getting two alarms for the same event (one from BusyCal and one from Apple Calendar). You may disable alerts for macOS Calendar and Reminders, as follows: * Open System Preferences and select Notifications * Select Calendar in the left sidebar, then change the alert style to None or Banners. * Select Reminders in the left sidebar, then change the alert style to None or Banners. ![busycal notification center](https://www.busymac.com/images/bcl3mac-notifications-prefs-calendar.png) ## Disable Default Alarms in Calendar[​](#default "Direct link to Disable Default Alarms in Calendar") macOS Calendar has a preference setting for setting default alarms for new events. Unfortunately, if you have that preference enabled, the Calendar app will add default alarms to all of the events you create in BusyCal. Therefore, you should disable the default alarms setting in Calendar > Preferences > Alerts, to avoid erroneous alarms from being attached to events you create in BusyCal, as shown. ![busycal notification center](https://www.busymac.com/images/bcl3mac-calendar-prefs-alerts.png) There are similar settings on the iPhone you may have to disable as well in Settings > Apps > Calendar > Default Alert Times. --- # Trademarks and Open Source Acknowledgements ## Trademark Attributions[​](#trademark-attributions "Direct link to Trademark Attributions") Apple, iCloud, iPad, iPhone, Mac, Mac OS and macOS are registered trademarks of Apple Inc. ## Open Source Acknowledgements[​](#open-source-acknowledgements "Direct link to Open Source Acknowledgements") NSData+Compression<br /><!-- -->by Dustin Mierau NSArray+CWSortedInsert<br /><!-- -->by Fredrik Olsson AquaticPrime<br /><!-- -->by Lucas Newman et al. JLNFadingScrollView<br /><!-- -->by Joshua Nozzi AsyncSocket<br /><!-- -->by Dustin Voss Google Toolbox for Mac<br /><!-- -->by Google, Inc. Google OAuth<br /><!-- -->by Google, Inc. Google OAuth2<br /><!-- -->by Google, Inc. RMPhoneFormat<br /><!-- -->by Rick Maddy XmlReader<br /><!-- -->by Benoit Caccinolo Cocoa Lumberjack<br /><!-- -->by Deusty, LLC Mulberry vCard<br /><!-- -->by Cyrus Daboo --- # How do I uninstall BusyContacts? To uninstall BusyContacts, launch BusyContacts while holding down the option key to display the Startup Options dialog, then select Reset BusyContacts and click Continue. Resetting BusyContacts will delete the BusyContacts database, and quit. All of your contacts will be preserved on iCloud, Exchange and/or Google. You may then drag the BusyContacts app to the Trash. --- # How do I uninstall BusyCal? ### Uninstalling BusyCal & Resetting Data[​](#uninstalling-busycal--resetting-data "Direct link to Uninstalling BusyCal & Resetting Data") Follow these steps to completely uninstall BusyCal, including its database and background processes (Menu bar app). #### 1️⃣ Reset BusyCal's Database[​](#1️⃣-reset-busycals-database "Direct link to 1️⃣ Reset BusyCal's Database") 1. Hold down the **Option** key while launching **BusyCal**. 2. In the **Startup Options** dialog, select **Reset BusyCal**. 3. Click **Continue**—this will delete BusyCal’s database and quit the app. <!-- --> * Your calendars will remain safely stored in **iCloud, Google, Exchange, or other services**. #### 2️⃣ Remove the BusyCal Application[​](#2️⃣-remove-the-busycal-application "Direct link to 2️⃣ Remove the BusyCal Application") 1. Open the **Applications** folder. 2. Drag **BusyCal.app** to the **Trash**. 3. Right-click the **Trash** and select **Empty Trash**. important You must empty the trash after deleting the app, otherwise macOS will not allow you to stop the background process as explained in the next step. #### 3️⃣ Stop Background Processes[​](#3️⃣-stop-background-processes "Direct link to 3️⃣ Stop Background Processes") Even after deletion, **BusyCal's menu app** may still be running in the background. This needs to be stopped manually as it is managed by macOS. Ensure you have emptied the trash and `BusyCal.app` is no longer in **Applications**. 1. Open **Activity Monitor.app** (`Applications > Utilities > Activity Monitor`). 2. Search for **BusyCal** in the search bar. 3. Select any **BusyCal** process that appears. 4. Click the **(✖) button** in the toolbar to quit the process. If the menu app persists, **check for and remove any additional copies** of BusyCal on disk (e.g., in `Downloads` or other folders).<br /><!-- -->macOS may attempt to launch the menu app again if an old copy still exists. --- # Why Events Could Not Be Stored to the Server BusyCal may display an alert stating that `the following events could not be stored to the server`. ### Reason 1: Conflict[​](#reason-1-conflict "Direct link to Reason 1: Conflict") That error occurs when the event you modified in BusyCal is stale and out of sync with the event on the server. This can happen if you are syncing multiple devices or apps with the server and the event was recently modified on another device or in another app. When this occurs, the change you made in BusyCal will be rejected by the server and replaced with the copy of the event on the server. ### Reason 2: Meeting Cannot be Imported[​](#reason-2-meeting-cannot-be-imported "Direct link to Reason 2: Meeting Cannot be Imported") You have most likely imported a `.ics` meeting file manually and are now seeing this error. This has been [explained here in depth](/docs/faqs/meeting-invitation-faqs.md#reason-2-invitation-ics-file-was-manually-imported). Avoid Manually Importing .ics Files As a general rule, you should avoid importing .ics files manually when using accounts with iCloud, Google, Outlook etc. Meeting invitations show up on your calendar automatically during sync. Whenever an invitation is received, it is captured in two places: the Mail Inbox and the Calendar Inbox. If you import the .ics file sent as an attachment via mail manually, and don't wait for the calendar to sync this automatically, conflicts can occur and these can further complicate matters as updates may or may not be sent out correctly. Some servers, such as Google Calendar, can be extremely picky when it comes to meeting invitations and related conflicts. In the worse case you may also end up with duplicate meetings. --- # Why does BusyCal need access to Contacts? BusyCal requires permission to access your Me Card in Apple Contacts for creating and responding to meeting invitations. It also requires access to your Contacts for displaying Birthdays and Anniversaries in your calendar. BusyCal requires permission to access your Me Card in Apple Contacts for creating and responding to meeting invitations. It also requires access to your Contacts for displaying Birthdays and Anniversaries in your calendar. The first time you launch BusyCal you should be presented with a dialog asking if you want to grant BusyCal permission to access your Contacts. If you did not grant BusyCal access to Contacts at that time, you must do so manually, as follows: Open System Preferences > Security & Privacy, select Contacts in the left sidebar, then check BusyCal.app. ![contacts](https://www.busymac.com/images/bcl3-reset-contacts.png) ## How do I setup my Me Card?[​](#howto "Direct link to How do I setup my Me Card?") If using Apple Contacts, launch macOS Contacts, select Card > Go to My Card, and make sure your Me Card contains a matching email address. There are some instructions found here: <https://support.apple.com/en-ae/guide/contacts/set-up-your-contact-card-adrb3525ca49/mac> If using BusyContacts, launch BusyContacts, select File > Go To My Card, and make sure your Me Card contains a matching email address. If using Contacts, sometimes BusyCal can't get your Me card from Contacts. Usually this can be solved by having Contacts re-establish your Me card. 1. Launch macOS Contacts, select Card > Go to My Card 2. Go to any other card, and then select Card > Make this My Card 3. Go back to the original card and select Card > Make this My Card More on the use of the Me card here: [Meetings](/docs/busycal/70615-meetings-and-invitations.md#me-card) --- # Why does a red badge appear on the BusyCal icon? The BusyCal Inbox displays notifications of meeting invites or changes to existing events. You can accept / decline or ignore (delete) notifications directly from the Inbox. Both the app icon and the Inbox will display a badge indicating the number of notifications in your inbox. Click on the inbox icon in the toolbar to see the notifications and dismiss them. ![inbox badge](https://www.busymac.com/images/inbox-badge.png) ## Meeting invitations[​](#meetings "Direct link to Meeting invitations") When an attendee receives an invitation, BusyCal will display an Inbox notification in the top left corner of the window. Clicking on the inbox icon will allow the attendee to Accept or Decline the meeting request, at which point a reply will be sent to the meeting organizer with their status. Likewise, meeting Organizers will receive attendee replies in their inbox. ![inbox](https://www.busymac.com/images/bcl3mac-meeting-invitation-received.png) ### Exchange / Office 365 Users[​](#exchangeusers "Direct link to Exchange / Office 365 Users") It is common practice amongst Exchange / Office 365 users to assign other users in the organisation as a *delegate*, in order for these users to act as proxy / secretary when sending or accepting meeting invites. Thus, if you have a delegate assigned for your calendar, they too will receive meeting invitations in their inbox. If you're a delegate and seeing meeting invites, this may be why. If you do not wish to be informed of changes to meetings, you can double click on the calendar in the left panel and uncheck the *Show change notifications in inbox* For more info see [Meetings](/docs/busycal/70615-meetings-and-invitations.md). ## How to delete meeting notifications without responding[​](#delete "Direct link to How to delete meeting notifications without responding") You can delete / ignore or remove meeting notifications in BusyCal without deleting the meeting requests that they correspond to, as follows: * Click on the Inbox icon in the top left of the window to show the notifications. * Click on a notification to select it without clicking the Accept or Decline button. * Press the Delete key on your keyboard to delete the notification from the inbox. The meeting will remain intact in your calendar, but no response will be sent to the meeting organizer. ## Change notifications[​](#change "Direct link to Change notifications") In addition to notifications of meeting requests in BusyCal, you can optionally show notifications of changes made to events in BusyCal or contacts in BusyContacts. For example, when sharing calendars with others, a notification can be displayed in BusyCal when an event on a shared calendar is edited by someone else. You can enable change notifications on a per-calendar basis. To do so, open the Calendar Info dialog by double-clicking a calendar name in the sidebar or Control-clicking a calendar and choosing Get Info from the contextual menu. Then check Show change notifications in Inbox. ![show changes](https://www.busymac.com/images/bcl3mac-calendar-info-home.png) ## Batch processing notifications[​](#batch "Direct link to Batch processing notifications") If you have dozens or hundreds of notifications in your Inbox, you can acknowledge all of them at once by holding down the Option-key and clicking OK All. Also, you can delete all meeting notifications by selecting one of the notifications, then holding down the Option-key and pressing the Delete key. --- # Does BusyContacts support Exchange Global Address Lists (GAL)? BusyContacts does not support Exchange GAL. --- # How do I clean up duplicate contacts in BusyContacts? If you are syncing with multiple services, you are likely to have duplicate cards for many of your contacts. You can tell if that's the case if the duplicate contacts appear in different colors since each [address book can appear in a different color](/docs/busycontacts/47211-address-books.md#colors). For example, if you are syncing with Twitter, a card for each of your Twitter connections will sync to BusyContacts. Those Twitter cards will appear in addition to any cards you may have already created on your primary address book (e.g. iCloud, Google or Exchange). To solve this, BusyContacts allows you to link related cards to each other and view them as a single, combined *virtual card*. This lets you view combined information without physically merging the individual cards. BusyContacts automatically links related cards that share common traits, such as the same name or email address. And you can manually link cards as well. ## Combining Linked Cards[​](#combined-cards "Direct link to Combining Linked Cards") Linked cards from multiple sources can be viewed as a single virtual card when in Combined mode by selecting View > Combine Linked Cards. It’s important to note that this combination only includes cards from address books that are actively checked and enabled in the source panel. If an address book is unchecked, the contacts from that source will not be included in the combined view. This allows you to customize which contact information is consolidated based on the address books you choose to enable, ensuring that only relevant data is displayed together. ![Combine Linked Cards](https://www.busymac.com/images/bct-combine-linked-cards.png) **Individual cards** For example, when in non-combined mode, three linked cards appear for Fred Chaffee — one each on iCloud, Facebook and Twitter. ![card](https://www.busymac.com/images/bct-fred-facebook.png) **Combined card** When in Combined Mode, the three linked cards are merged into a single virtual card that displays all of the combined info from each of the individual cards. ![combined](https://www.busymac.com/images/bct-fred-combined.png) ## Linking and Merging Duplicate Cards[​](#link-merge "Direct link to Linking and Merging Duplicate Cards") If you have duplicate cards that are not linked, you can link them by selecting a pair of duplicate cards and merging them (if they are on the same address book) or linking them (if they are on different address books). ## Tips to diagnose duplicates[​](#diagnose "Direct link to Tips to diagnose duplicates") * If the duplicates appear in **different colors**, they are usually coming from **different address books/accounts** (for example iCloud + Google). In that case, linking is typically the right approach. * If the duplicates are in the **same address book**, merging is typically the right approach. BusyContacts can also link identical contacts automatically if you enable: * **BusyContacts > Settings > Advanced > Automatically link identical contacts in the background** For more info see [Linking and Merging Cards](/docs/busycontacts/47349-linking-and-merging-cards.md). ## Finding and deleting Duplicate Cards[​](#link-clean "Direct link to Finding and deleting Duplicate Cards") BusyContacts does not have a Find Duplicates feature but Apple Contacts does, so you could try using it since BusyContacts and Apple Contacts sync with each other. You'll find it in Apple Contacts by selecting Card > Look for Duplicates. Also, there are third-party apps focused on finding and removing / cleaning up duplicate contacts. Here's one that you may want to try: <https://www.goldbugsoft.com/site/addressbookaid/en/addressbookaid_mac_en.html> --- # How do I remove the shared Family calendars from BusyCal? When you enable iCloud Family Sharing, two shared calendars named "Family" will appear in BusyCal's sidebar. One is an Event calendar and the other is a To Do calendar (the To Do calendar has a checkmark √ next to its name and syncs with the Reminders app on iCloud and iOS). These calendars are automatically created by iCloud and shared with all family members. ![Family Sharing](https://www.busymac.com/images/family-sharing.png) You cannot delete these calendars but you can hide them, if you wish, by unsubscribing to them. To unsubscribe, double-click on the calendar in the left sidebar to show the Calendar Info dialog and click the Unsubscribe button. Then, choose Hide Unsubscribed Calendars from the View menu. The shared Family calendars will continue exist on iCloud and iOS, but they will no longer be displayed in or synced with BusyCal. Note: If you have a [Calendar Group](/docs/busycal/70592-calendar-list.md#calendar-groups) for your Task calendars, you can drag the Family √ Task calendar into that Group in BusyCal's sidebar to help with organization. --- # How can I change the colors in BusyCal? You can change the colors of events in BusyCal using calendars or tags. In BusyCal, you can change the color of a calendar and all of the events on that calendar by control-clicking on the calendar and choosing a color from the Color menu, or double-clicking on it to open the Calendar Info dialog. You can also use [Tags](/docs/busycal/70597-tags.md) to color individual events. For example, you may have an "Important" Tag that is colored red, and a "Family" Tag that is colored green. Normally, events appear in the same color as the calendar they are stored on. But you can override the event color by adding a colored Tag to an event. If you add multiple colored Tags to an event, the color of the first Tag sorted alphabetically will be applied. --- # What email apps is BusyCal compatible with? BusyCal and BusyContacts can send messages using Apple Mail and several other third-party mail clients. ## BusyCal[​](#busycal "Direct link to BusyCal") BusyCal can send meeting invitations and email alarms through these email apps: * Apple Mail * Airmail * Entourage * MailMate * MailPlane * Outlook * PostBox * Sparrow * Postbox BusyCal requires AppleScript support for sending email attachments. These mail apps do no support AppleScript and, therefore, will not work with BusyCal: * Gmail in a browser * Mailbox * Thunderbird * Spark ## BusyContacts[​](#busycontacts "Direct link to BusyContacts") BusyContacts displays mail messages in the Activity List sent to/from the selected contact. Currently, only messages from Apple Mail or MailMate are supported. In order to support third-party mail clients in BusyContacts, it requires work on the part of the mail vendor. Currently, only one third-party mail client, MailMate, has added support for BusyContacts. We hope more will support it in the future. Please contact your email vendor of choice and ask them to [contact us](mailto:support@busymac.com?BusyContacts%20Mail%20Support) for info on how to support BusyContacts. If you are using a non-supported mail client, you may be able to work around this limitation by configuring both Apple Mail and your third-party mail app to sync with same mail accounts. Then BusyContacts will display the messages that have been downloaded to Apple Mail, which should be the same messages in your third-party mail client. --- # Does BusyCal support Google Hangouts? Google Hangouts has been retired by Google. BusyCal supports Google Meet links on Google calendars. If you are syncing BusyCal with Google and an event contains a Google Meet link, the meeting link appears in BusyCal. --- # What email apps is BusyContacts compatible with? BusyContacts displays mail messages in the Activity List sent to/from the selected contact. Currently, only messages from Apple Mail or MailMate are supported. In order to support third-party mail clients in BusyContacts, it requires work on the part of the mail vendor. Currently, only one third-party mail client, MailMate, has added support for BusyContacts. We hope more will support it in the future. Please contact your email vendor of choice and ask them to [contact us](mailto:support@busymac.com?BusyContacts%20Mail%20Support) for info on how to support BusyContacts. If you are using a non-supported mail client, you may be able to work around this limitation by configuring both Apple Mail and your third-party mail app to sync with same mail accounts. Then BusyContacts will display the messages that have been downloaded to Apple Mail, which should be the same messages in your third-party mail client. --- # How can I change the colors in BusyContacts? You can change the color of contacts in BusyContacts using Address Book colors or Tag colors. You may change the color of an [address book](/docs/busycontacts/47211-address-books.md#colors) and all the contacts on that address book by control-clicking on it and choosing a color, or double-clicking on it to open the Address Book Info dialog. You can also use [Tags](/docs/busycontacts/47214-tags-groups.md#colors) to color individual contacts, by control-clicking on a Tag in the Tag List and choosing a color from the Color submenu. By default, contacts appear in the same color as the Address Book they are stored on. But Tag colors take precedence over Address Book colors. So, if you colorize a Tag, any contacts assigned to that Tag will be displayed in the Tag color rather than the Address Book color. For example, lets say your iCloud Address Book color is blue, so all of your contacts on iCloud appear in blue. If you create an 'urgent' Tag and color it red, any contacts assigned to the 'urgent' Tag will appear in red instead of blue, because Tag colors take precedence over Address Book colors. If you add multiple colored Tags to a contact, the color of the first Tag sorted alphabetically will take precedence. So, if you have a 'family' Tag colored green and an 'urgent' Tag colored red, a contact assigned to both Tags will appear in green, because 'family' is sorted before 'urgent' alphabetically. Note: Tag colors are Mac specific. If you have an iMac and a MacBook Pro both running BusyContacts, the Tag colors you set on your iMac will not sync to your MacBook Pro. The Tags themselves will sync, but the colors of the Tags must be configured separately on each Mac. --- # How to downgrade from BusyCal 3 to BusyCal 2 You can downgrade from BusyCal 3 to BusyCal 2 as follows: 1. Launch BusyCal 3 while holding down the option key to display the Startup Options dialog, then select Reset BusyCal and click Continue. Resetting BusyCal will disconnect from all servers (your data will remain on the servers), delete the BusyCal database, and quit. 2. Delete the BusyCal 3 app and remove the BusyCal app icon from the Dock. 3. Restart your computer. 4. [Download BusyCal 2.6.9](https://www.busymac.com/download/bcl-2.6.9.zip) and run the installer. 5. Launch BusyCal 2 and go through the setup assistant. Make sure you do not import the local calendars from macOS Calendar as they will be out-of-date. 6. If BusyCal does not automatically connect to your iCloud, Google or Exchange accounts, you may connect to them manually in BusyCal > Preferences > Accounts. --- # Why does BusyCal require access to Location Services? BusyCal requires access to location services for Weather, Travel Time and Time to Leave Alarms. BusyCal has two apps that may require access to Location Services in **System Settings > Security & Privacy > Privacy > Location Services**. Both apps will be displayed in System Settings (and both have the same name). One is the main BusyCal app and the other is the BusyCal background app. The main BusyCal app requires access to location services for: * [Displaying the weather in your location](/docs/busycal/70602-weather.md) — The main BusyCal app only requires access to Location Services for displaying weather if you've enabled the "At current location" option in BusyCal > Settings > Weather. If so, BusyCal will access location services a couple times a day when updating the weather forecast. If you prefer to not use location services for the weather you can change your weather Settings in BusyCal to a static location based on Zip or city code. * [Calculating travel time to an event starting from your current location](/docs/busycal/70603-locations-maps-travel-time.md#travel-time) — The main BusyCal app only requires access to location services during the initial process of calculating the travel time from your current location. It does not access location services after that. The BusyCal background app requires access to location services for: * [Displaying Time to Leave alarms](/docs/busycal/70603-locations-maps-travel-time.md#travel-time-alarms) — The BusyCal background app requires access to location services if you’ve set a Time to Leave alarm for an event with travel time. If you select this option, BusyCal monitors traffic conditions every 5 minutes for up to 3 hours before the start of the event and displays a time to leave alarm at the moment when you must leave to get to the event on time. --- # How to update BusyCal and BusyContacts You may update to the latest version of BusyCal and BusyContacts or simply re-install it on a new mac as follows: ## BusyCal for Mac[​](#busycal-for-mac "Direct link to BusyCal for Mac") To update to the latest version of BusyCal for Mac: * Direct customers — Launch BusyCal and select BusyCal > Check for Updates. Or, [download](https://www.busymac.com/download/BusyCal.zip) and run the installer. * Mac App Store customers — Download the update from the [Mac App Store](macappstore://showUpdatesPage). Note: If you are running BusyCal 2, you can [upgrade to the latest version of BusyCal](/docs/faqs/71143-how-to-upgrade-busycal.md) for $39.99. ## BusyContacts for Mac[​](#busycontacts-for-mac "Direct link to BusyContacts for Mac") To update to the latest version of BusyContacts for Mac: * Direct customers — Launch BusyContacts and select BusyContacts > Check for Updates. Or, [download](https://www.busymac.com/download/BusyContacts.zip) and run the installer. * Mac App Store customers — Download the update from the [Mac App Store](macappstore://showUpdatesPage). ## BusyCal for iOS[​](#busycal-for-ios "Direct link to BusyCal for iOS") To update to the latest version of BusyCal for iOS: * Download the latest update from the [App Store](https://www.busymac.com/buy/busycalios/). --- # BusyCal / BusyContacts crashing on launch. Corrupt database. If your apps won't launch, it is probably due to running an old version of the app with an expired Apple Developer certificate. You can solve this by updating to the latest version: * Direct customers — [Download BusyCal](https://www.busymac.com/busycal/releasenotes.md), [Download BusyContacts](https://www.busymac.com/busycontacts/releasenotes.md). * Mac App Store customers — Download the update from the [Mac App Store](macappstore://showUpdatesPage). If this does not solve the issue and you continue to receive an error along the lines: **"The file couldn’t be opened because it isn’t in the correct format. The file might be corrupted, truncated, or in an unexpected format"** Then this may indicate a corrupt database. To fix this: 1. Launch BusyCal / BusyContacts and as soon as the app's icon begins to bounce in the Dock to indicate it's loading, immediately hold down the option key (⌥) to display the Startup Options dialog, then select Reset BusyCal / BusyContacts and click Continue. Resetting BusyCal will delete your database, and quit. All of your data will be preserved on iCloud, Google and/or Exchange. For users with local calendars / address books, automatic backups will have already been created. 2. Launch the app and go through the setup assistant. 3. If the app does not automatically connect to your iCloud, Google or Exchange accounts, you may connect to them manually in BusyCal > Preferences > Accounts. note If syncing with iCloud, you will have to re-enter your iCloud app-specific password for BusyCal. If you have forgotten your iCloud app-specific password, you can create a new one and use the new app-specific password instead. You can learn more about [creating an app-specific password here](/docs/faqs/71150-unable-to-log-into-icloud-i-m-seeing-password-incorrect-prompts.md) --- # Google Hangouts video call links appear in notes field This article applies to legacy Google Hangouts event metadata. Some older Google Calendar events that were created with Hangouts may include a server-generated block appended to the notes field: ``` -::~:~::~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~::~: Please do not edit this section of the description. This event has a Google Hangouts video call. Join: https://plus.google.com/hangouts/_/calendar/abcdefghijklmnopqrstuvwxyz?hs=121 -::~:~::~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~:~::~:~::- ``` You cannot remove this text from the notes field if the event still contains a legacy Hangouts link. For current events, Google Meet settings are controlled in Google Calendar on the web. To control auto-added Google Meet links for new events, adjust your conference settings directly in Google Calendar on the web. If you are a Google Workspace user, your administrator can also enforce meeting link policies at the workspace level. --- # Why Can't I See My Events in BusyCal? Calendar Suddenly Empty If your BusyCal calendar suddenly appears empty or you can't see your events, don't worry—there are a number of things you can check. This issue is typically caused by display settings rather than data loss. Here are the most common causes and solutions: ## Check Calendar Visibility First[​](#check-calendar-visibility-first "Direct link to Check Calendar Visibility First") The [left panel](/docs/busycal/70592-calendar-list.md) in BusyCal shows all your subscribed calendars with checkboxes next to each name. These checkboxes control [whether events from that calendar are visible](/docs/busycal/70592-calendar-list.md#calendarvisibility): * **Unchecked box** = Calendar events are hidden * **Checked box** = Calendar events are visible If your events have disappeared, first verify that all relevant calendar checkboxes are checked. Hidden Calendars If you don't see all your calendars in the left panel, go to **View Menu > Show Unsubscribed Calendars** to reveal any unsubscribed calendars. Also enable **View Menu > Show Hidden Calendars** to show any calendars you may have hidden in the past. ## Other Common Causes for Missing Events[​](#other-common-causes-for-missing-events "Direct link to Other Common Causes for Missing Events") ## Account Exclusion Mode[​](#exclusionmode "Direct link to Account Exclusion Mode") Account Exclusion Mode temporarily hides all calendars from specific accounts, allowing you to focus on events from just one account. When activated, all calendars under the excluded account become invisible. **How to check if Exclusion Mode is active:** 1. Look for account names in the left panel 2. Hover your mouse over each account name 3. An orange toggle indicates Exclusion Mode is ON for that account **To disable Exclusion Mode:** * Hover over the account name * Click the orange toggle to turn it OFF * Your calendars will immediately reappear ## Filter Mode[​](#filter "Direct link to Filter Mode") BusyCal offers two search modes that can affect event visibility: * **Search Mode** (`⌘F`) - Shows matching results in the sidebar while keeping all events visible * **Filter Mode** (`⌘⌥F`) - Hides all events except those matching your search term If you accidentally activated Filter Mode with a search term, your calendar will only show matching events. To restore all events: 1. Check the search field at the top of BusyCal 2. Clear any text in the search field 3. Press `Escape` to exit Filter Mode Learn more about [searching and filtering in BusyCal](/docs/busycal/70611-searching-finding-and-filtering-events.md). ## Smart Filter[​](#smartfilter "Direct link to Smart Filter") Smart Filters are saved searches that can dramatically change what events are visible. An active Smart Filter might be hiding your events if its criteria don't match any current events. **How to check for active Smart Filters:** * Look at the Filter Bar (below the toolbar) * Blue filter buttons indicate active content filtering * Click any active filter to see all events again For detailed information about Smart Filters, see our [Smart Filters guide](/docs/busycal/70612-smart-filters.md). If none of these solutions work, your account connection may need attention. Check **BusyCal > Settings > Accounts** to ensure your calendar accounts are properly connected. Calendar Recovery If you suspect your calendar data was accidentally deleted, you can easily [restore your calendar from a recent backup](/docs/busycal/70617-backing-up-and-restoring.md). BusyCal automatically maintains backups to help you recover from data loss. Finally, [please contact us](/docs.md) with your app's logs so we can help you in case none of these suggestions helped. --- # Does BusyCal iOS support syncing attachments? No, attachments are not supported by the iOS version. Although BusyCal iOS will sync image attachments (PNGs) that you add to BusyCal on the Mac, it will not currently allow you to zoom-in / zoom-out or make modifications. We currently do not plan on supporting non-image attachments in iOS. --- # How do I sync Tags between my devices? When you add a tag to an event on device A, the event and its tag will sync to device B. However, the tag auto-complete list is only updated on a per device basis at the time that a tag is added to an event. So, in the example above, device A will show the tag on its auto-complete list but device B will not. In order to get the tag to show up on the tag auto-complete list on device B, you must manually add that tag to an event. If you wish to sync your tags, the only way to do this would be to assign these tags to an event or a todo. We hope to improve this in a future release so that the tag auto-complete list is updated automatically on all devices. --- # BusyContacts did not download any photos after adding a new account There is a known issue with how temporary files on the mac are stored and managed. At times, after adding a new iCloud or Exchange account, especially via the Setup Wizard, you may notice that none or several of the photos associated with your contacts do not show you. A simple, albeit inconvenient, solution to this problem is to open Preferences > Accounts in BusyContacts, and then removing and re-adding the affected account. This second retry seems to always work. --- # Does BusyCal support creating different views of the same data? Smart Filters are a powerful tool for creating calendar sets and saved searches that can be applied with a single click. A calendar set, or a smart view, allows you to switch between different combinations of currently active calendars. For instance, you can choose to see all your home related calendars and their events in one view while the rest of the calendars are unchecked, and with a single click activate a different set of calendars. Smart Filters can also be used to create powerful filtered views. For instance, you may have hundreds of events in view but wish to only see events tagged with the word "shop". With a single click, you can hide everything else out of view and filter on only those events that have been tagged with "shop". More information on how to use Smart Filters can be [found here](/docs/busycal/70612-smart-filters.md) --- # Birthdays / Anniversaries are not showing up ## Check the Contact's Date Label[​](#date-label "Direct link to Check the Contact's Date Label") For a wedding anniversary or another annual anniversary, edit the contact in **Apple Contacts** or **BusyContacts** and choose the built-in **anniversary** label from the date's label menu. Custom labels such as **Wedding**, **Wedding Anniversary**, or **Other** are not included in BusyCal's Anniversaries calendar. For birthdays, use the contact's **birthday** field. Enter the original date and save the contact. BusyCal repeats birthdays and anniversaries every year. ## BusyCal[​](#busycal "Direct link to BusyCal") Open **BusyCal > Settings > General**: 1. Enable **Show Birthdays calendar** and/or **Show Anniversaries calendar**. 2. Set **Contacts from** to the app containing the contact and its date. Choose **Apple Contacts** if you do not use BusyContacts, even if BusyContacts is installed. If you choose **Apple Contacts**, also open **System Settings > Privacy & Security > Contacts** and allow BusyCal access to your contacts. If the date is still missing after checking its label, source, and the BusyContacts setting below, refresh the calendars: 1. Turn off **Show Birthdays calendar** and **Show Anniversaries calendar** in BusyCal's General settings. 2. Quit and reopen BusyCal. 3. Enable the calendars again and allow time for them to refresh. ## BusyContacts[​](#busycontacts "Direct link to BusyContacts") When **BusyContacts** is the selected source, edit the contact and make sure **show dates** is checked. This controls whether that contact's supported dates appear in BusyCal. If the checkbox is missing, enable **Show Dates in Calendar** under **BusyContacts > Settings > Info Panel**, or add it to the card using the **add field** menu. The contact must contain a date field for the checkbox to be available. This setting is local to each Mac. It does not make custom date labels appear in BusyCal. See [Show Dates in Calendar](/docs/busycontacts/47353-birthdays-and-anniversaries.md#show-dates). --- # Will BusyTodo be updated for iOS? We are no longer updating BusyToDo. We have released a new app, BusyCal for iOS, that combines the to do functionality of BusyToDo with the calendaring capabilities of BusyCal for Mac. [You can learn more here](/busycalios.md) --- # Default calendar for Todos shows all listed calendars grayed out Calendars are type-specific. Each calendar may contain either Events or Tasks, but not both. When creating a Todo or picking a default calendar for Todos, you must first ensure you have a **Task Calendar** available. BusyCal does not support creating one for Google accounts, for instance, but does support creating ones for iCloud / Fruux. When picking a default calendar for Tasks, you may find most of your calendars greyed out. This is because these are all **Event calendars**. You need to pick a Todo Calendar from the list instead, and if one does not exist, you need to create one. In iOS you can only do this by creating a List in the "Reminders" app. On macOS you can create one using BusyCal's File Menu > New Calendar > Account > To do Calendar. [You can learn more here](/docs/busycal/70592-calendar-list.md#calendar-types) --- # Can I sync with Exchange? BusyCal and BusyContacts are compatible with Exchange 2007 SP3 and later, but BusyMac recommends Exchange 2013, which is more reliable than older versions. Note: This FAQ covers legacy Exchange/EWS connectivity. For outlook.com and Microsoft 365 personal/home accounts, use **Office 365 (Microsoft Graph)**. ## BusyCal[​](#busycal "Direct link to BusyCal") BusyCal supports the following Exchange features: * **Calendar Sharing** — Each calendar can be shared with multiple users, each with different access privileges (free/busy, read-only, read/write, delegate, etc.). * **Public Calendars** — Company-wide public calendars can be subscribed to in BusyCal. * **Free/Busy** - Meeting organizers can view attendee availability when scheduling meetings. * **Push** — Changes are synced immediately between Exchange and BusyCal via Push. * **Tasks** — Tasks can be synced with Exchange and shared with other BusyCal users. Repeating Tasks are supported, either on a fixed interval (e.g. every week on Monday), or dynamically regenerated based on the completion date of the previous Task (e.g. one week after completion). * **Categories** — Categories in Outlook are mapped to tags in BusyCal, including support for category colors. * **Notifications** — Notifications can be displayed when changes are made on shared calendars. ## BusyContacts[​](#busycontacts "Direct link to BusyContacts") BusyContacts supports the following Exchange features: * **Address Book Sharing** — Each address book can be shared with multiple users, each with different access privileges (free/busy, read-only, read/write, delegate, etc.). * **Public Address Books** — Company-wide public address books can be subscribed to in BusyContacts. * **Push** — Changes are synced immediately between Exchange and BusyContacts via Push. * **Categories** — Categories in Outlook are mapped to tags in BusyContacts, including support for category colors. * **Notifications** — Notifications can be displayed when changes are made on shared calendars. --- # Does BusyContacts support printing the phone list? BusyContacts currently only prints labels and envelopes. [More information can be found here](/docs/busycontacts/56669-printing-envelopes-and-mailing-labels.md) If you want to print phone lists, you may have to use Apple Contacts for that instead. --- # Does BusyContacts support file attachments? iCloud limits the total size of a contact card to 256k, and that includes the profile photo. So, in most cases, you will not be able to add an attachment to a contact unless it is very small. Google accounts are also known to not support attachments. As a work around, you can drag an attachment onto a contact card and that will create a link to the attachment. Yet another option would be to instead upload these documents to Google Drive / Dropbox / One Drive / Any-3rd-party-cloud-storage and then paste a generated / shared link to this document in the contact's notes field. --- # Why BusyCal iOS Sometimes Creates Timed All-Day Events By default, BusyCal for iOS creates new events using natural language. So, typing *Staff Meeting 10a* will create an event titled Staff Meeting at 10AM. If you don't include an event time, then the event is created as an all-day event. That's what you are experiencing. [Natura Language Input](/docs/busycalios/70669-natural-language.md) If you turn off Create with Natural Language in BusyCal's Settings, then new events you create will use the default start time and duration. --- # How do I merge multiple calendars into a single calendar in BusyCal? You can merge multiple calendars into a single calendar by exporting calendar A and importing it into calendar B. [You'll find more info here](/docs/busycal/70618-exporting-importing-and-merging-calendars.md) ## Merge Local with iCloud Calendar[​](#merge-local "Direct link to Merge Local with iCloud Calendar") You can merge multiple calendars into a single calendar. In this example, here is how you would merge the local Work calendar with the iCloud Work calendar: 1. Export the local Work calendar under On My Mac by selecting it and choosing **File > Export > Calendar File (.ics)**, and save it to your desktop. 2. Delete the local Work calendar under On My Mac by control-clicking it and selecting Delete. 3. Double-click the file you exported in step 1 to import it. When prompted, choose to import the events into the Work calendar on iCloud. 4. Remove duplicates by selecting **Help > Find Duplicates**, and deleting any duplicate events that are found. Repeat this process for each of your local calendars under On My Mac until you have merged them all with iCloud and there are no local calendars remaining. ## Merging iCloud Calendars[​](#merge-icloud "Direct link to Merging iCloud Calendars") You can merge multiple calendars into a single calendar. In this example, here is how you would merge the iCloud Home calendar with the iCloud Work calendar: 1. Export the iCloud Home calendar by selecting it and choosing **File > Export > Calendar File (.ics)**, and save it to your desktop. 2. Delete the iCloud Home calendar by *control-clicking* it and selecting Delete. 3. Double-click the file you exported in step 1 to import it. When prompted, choose to import the events into the Work calendar on iCloud. 4. Remove duplicates by selecting Help > Find Duplicates, and deleting any duplicate events that are found. ## Finding and deleting Duplicate Cards[​](#merge-generic "Direct link to Finding and deleting Duplicate Cards") You can merge multiple calendars into a single calendar. In this example, here is how you would merge calendar1 into calendar2: 1. Export calendar1 by selecting it and choosing **File > Export > Calendar File (.ics)**, and save it to your desktop. 2. If you need to, delete calendar1 by *control-clicking* it and selecting Delete. 3. Double-click the file you exported in step 1 to import it. When prompted, choose to import the events into calendar2. 4. Remove duplicates by selecting **Help > Find Duplicates**, and deleting any duplicate events that are found. --- # How do I add Google resources as locations in BusyCal? ## Using the Room Picker (Recommended)[​](#room-picker "Direct link to Using the Room Picker (Recommended)") If your organization uses Google Workspace and your admin has configured conference room resources, BusyCal can show them directly in the Info Panel via a dedicated **Rooms** picker. You can browse rooms by building, see live availability for the event's time window, and add rooms with a single click. See [Using BusyCal with Google — Meeting Rooms](/docs/busycal/70636-using-busycal-with-google.md#rooms) for details. ## Adding a Resource as an Attendee[​](#attendee-workaround "Direct link to Adding a Resource as an Attendee") For resources that do not appear in the room picker, or if your account does not support this feature, you can still add any Google resource to an event as an **attendee**. To do that, you'll need the email address for the Google resource. Here's what to do: 1. In BusyCal, double-click on the Google resource calendar that appears in the left sidebar to open the calendar info dialog. 2. The Description field will display a long email address. Copy it to your clipboard and close the Calendar Info dialog. 3. Launch Apple Contacts (or BusyContacts) and create a new contact with the name you want to use for that resource, and paste the email address from your clipboard to the email field. Now, in BusyCal, when you want to schedule that resource, just add it as an attendee by typing in the name of the contact you created in step 3. --- # How can I hide a calendar without deleting it? To hide a calendar from view without deleting it, you can unsubscribe from it by double-clicking on the calendar in the left sidebar to show the Calendar Info dialog and click the Unsubscribe button. Then choose Hide Unsubscribed Calendars from the View menu to hide it from view. To later re-subscribe to the calendar, simply click on the checkbox button next to the calendar name. If it's not visible, click on the View Menu > Show Unsubscribed Calendars. --- # Tags in BusyContacts are appearing as records in Google Contacts Tags in BusyContacts do not sync with Groups in Google Contacts. BusyContacts Tags only sync with iCloud and Exchange. Also, Tags created in BusyContacts will appear as individual records on Google Contacts. This is necessary for syncing Tags in BusyContacts with Groups in Apple Contacts. You'll find the same behavior when editing Groups Apple Contacts and syncing them with Google. For this reason, the number of contacts in Google Contacts may appear more than there actually are displayed in BusyContacts. However, the sum of "Tags + Contacts" in BusyContacts should equal the "Total contacts" in Google Contacts. --- # How can I convert an event into a todo or vice-versa? BusyCal allows you to easily convert Tasks to Events and visa-versa. [Instructions can be found here](/docs/busycal/70594-tasks.md#converting-to-dos-to-events) --- # I cannot log into my Yahoo account, it says my password is incorrect BusyCal or BusyContacts is unable to sync with your Yahoo account because it now requires that third-party apps use an app-specific password to sync with your Yahoo account. Your standard Yahoo password will not work. Follow the instructions on this page to generate an App Password to use: <https://help.yahoo.com/kb/SLN15241.html> Note: You might have to disconnect and reconnect BusyCal / BusyContacts to your Yahoo account after creating an App Password, as follows: * Select BusyCal / BusyContacts > Settings > Accounts, click on the Yahoo account in the left sidebar, then click the minus (-) button to remove it. * Then re-add the account by clicking the plus (+) button, selecting Yahoo as your server type, and entering your Yahoo ID and the new app-specific password you created above. --- # How do I migrate from an old computer to a new computer? You can install BusyCal or BusyContacts on up to **5 personal Macs** using the same registration code. Depending on where you originally downloaded the app (Mac App Store or directly from our website), simply download it again on your new Mac. In most cases, there's no need to re-add your accounts manually — BusyCal syncs your account list (iCloud, Google, Exchange, Fastmail, Fruux, etc.) between Macs using iCloud, so the same accounts should appear on the new Mac under **BusyCal > Settings > Accounts** shortly after launch. Select each listed account and click **Use Account**, then sign in again to re-authenticate. Your calendars, events, and contacts will then sync down automatically. note For privacy reasons, BusyCal does **not** sync account credentials (passwords, tokens, app-specific passwords) between Macs — those stay only in the local Mac's Keychain. That's why each account needs to be re-authenticated once on the new Mac. Account sync across Macs is controlled by **BusyCal > Settings > Advanced > Sync Accounts** (on by default; iCloud Drive must be enabled in System Settings). If you previously turned this off, accounts won't auto-appear on the new Mac and you'll need to add them again manually — the calendar data will still sync down once you sign in. BusyCal also supports syncing your **preferences, tags, and smart filters / calendar sets** across Macs automatically—as long as you're signed in with the same iCloud account. See [Does BusyCal sync Settings between multiple devices?](/docs/faqs/143538-does-busycal-sync-settings-between-multiple-devices.md) for the full list. ## BusyCal - Manual Migration[​](#manualbcl "Direct link to BusyCal - Manual Migration") Re-adding your accounts won't however sync some items, such "On My Mac" calendars. If you care about those, you can perform a [manual backup and restore](/docs/busycal/70617-backing-up-and-restoring.md). If you're migrating for **BusyCal v2025.3.1** and above, BusyCal cares about this folder: ``` ~/Library/Group Containers/N4RA379GBW.com.busymac.busycal3 ``` On versions of **BusyCal 2025.2.2** and below, the data is stored here instead: ``` ~/Library/Containers/com.busymac.busycal3/Data/Library/Application Support/BusyCal ``` and this file ``` ~/Library/Containers/com.busymac.busycal3/Data/Library/Preferences/com.busymac.busycal3.plist ``` You can copy them manually from one computer to another, although you must launch BusyCal once on the new computer to set up the container. On old computer: important In the Finder, select Go > Go to Folder, and paste the following *exactly as-is* and hit return (You will not find this folder otherwise - they're incorrectly displayed as only "BusyCal" if you look for them manually on macOS 11 onwards such as Monterey, Ventura etc): ``` ~/Library/Containers/com.busymac.busycal3/Data/Library/Application Support ``` Grab the BusyCal folder ``` ~/Library/Containers/com.busymac.busycal3/Data/Library/Preferences/ ``` Grab the com.busymac.busycal3.plist file On new computer, launch and set up BusyCal, then quit. In the Finder, select Go > Go to Folder, and paste the following: ``` ~/Library/Containers/com.busymac.busycal3/Data/Library/Application Support ``` Copy over the BusyCal folder from your old computer to this location ``` ~/Library/Containers/com.busymac.busycal3/Data/Library/Preferences/ ``` Copy the `com.busymac.busycal3.plist` file to this location Start BusyCal. You will need to re-enter your account passwords, but all other preferences should be copied over. ## BusyContacts - Manual Migration[​](#manualbct "Direct link to BusyContacts - Manual Migration") In order to perform a manual restore of BusyContacts from an old computer to a new one, follow these instructions. BusyContacts cares about this folder: ``` ~/Library/Containers/com.busymac.busycontacts/Data/Library/Application Support/BusyContacts ``` and this file ``` ~/Library/Containers/com.busymac.busycontacts/Data/Library/Preferences/com.busymac.busycontacts.plist ``` You can copy them manually from one computer to another, although you must launch BusyContacts once on the new computer to set up the container. On old computer: In the Finder, select Go > Go to Folder, and paste the following: ``` ~/Library/Containers/com.busymac.busycontacts/Data/Library/Application Support ``` Grab the BusyContacts folder ``` ~/Library/Containers/com.busymac.busycontacts/Data/Library/Preferences/ ``` Grab the `com.busymac.busycontacts.plist` file On new computer, launch and set up BusyContacts, then quit. In the Finder, select Go > Go to Folder, and paste the following: ``` ~/Library/Containers/com.busymac.busycontacts/Data/Library/Application Support ``` Copy over the BusyContacts folder from your old computer to this location ``` ~/Library/Containers/com.busymac.busycontacts/Data/Library/Preferences/ ``` Copy the `com.busymac.busycontacts.plist` file to this location Start BusyContacts. You will need to re-enter your account passwords, but all other preferences should be copied over. --- # BusyContacts Address Book Suddenly Empty In BusyContacts, the left panel displays a set of Address books that you have subscribed to. The checkbox next to the address book allows you to temporarily show or hide all contacts associated with it. If suddenly all your contacts appear to have disappeared, ensure you haven't toggled the address book's display OFF. In case you have hidden unsubscribed address books from view, you may wish to show these first (BusyContacts View Menu > Show Unsubscribed Address Books). ## Smart Filter[​](#smartfilter "Direct link to Smart Filter") Smart Filters can be toggled on and off with a single click. Ensure you're not inside of a Smart Filter view where the search criteria does not match any of your contacts and so all you see is an empty list. More information on how to use Smart Filters can be [found here](/docs/busycontacts/50099-smart-filters.md) --- # What does the BusyCal Menu app do? BusyCal Menu is a helper app that lives in the macOS menu bar, allowing you to quickly view your calendar, upcoming events, and alarms. You can open the menu as a popover from the menu bar icon, or detach it into a floating window that you can keep on screen while working. The Menu app can use calendar data stored on your Mac after BusyCal quits, but it does not sync accounts itself. Keep the main BusyCal app running to sync with Outlook, iCloud, and other services. You can close its window with `Command-W` or the red close button while it continues syncing. [Learn more about the menu helper app here](/docs/busycal/70606-busycal-menu.md) --- # Weather in BusyCal is not showing The weather feature requires access to location services as well as the internet. If you have denied either of the two, you will need to ensure you have an active internet connection and have given BusyCal access to Location Services from under **System Settings > Security & Privacy > Location Services > BusyCal** (as well as BusyCal Menu) [Learn more here](/docs/busycal/70602-weather.md#weather-preferences) **Please also note**: Weather provided by BusyCal is in fact offered by a 3rd party weather-provider. In the past we used Weather Underground, which shutdown and we had to switch to Dark Sky. Then recently Dark Sky has switched off and we've had to switch again. Each time we switch, existing versions connecting to an older service will no longer display weather. The only way to receive weather updates is to ensure you update to the latest version of BusyCal. --- # How to Access Pre-Release Versions of BusyCal/BusyContacts You can take part in beta testing voluntarily by enabling it in Settings The following steps will only work if you have downloading a direct copy from our website. If you're using a Mac App Store / Setapp version, you will unfortunately not be able to join beta. If you would like to test an available beta version of BusyContacts or BusyCal: 1. Open Settings 2. Click on the Updates tab 3. Enable "including beta releases". Now click on the BusyCal menu > Check for updates There isn't always a pre-release version available to test, however if there is one in the works, you will be able to gain access to it earlier and thus take part in initial screening. As always, please bear in mind that all pre-release software can be (and usually is) buggy. Normally our aim is to post stable, high-quality builds, however there are always exceptions. **BusyCal** requires a minimum macOS version of **macOS 12+** **BusyContacts** requires a minimum macOS version of **macOS 12+** --- # Why can't I assign a To do to a particular calendar? Calendars are type-specific. Each calendar may contain either Events or Tasks, but not both. When creating a Task or moving an existing one to a calendar, you must first ensure you have a **Task Calendar** available or the calendar you're moving to supports Tasks. You can learn [more about the types of Calendars here](/docs/busycal/70592-calendar-list.md#calendar-types) --- # Is there a BusyContacts version for iOS? Unfortunately not. We do not currently have any plans of bringing BusyContacts to iOS --- # Will there be further upgrades to BusyCal 2 We will no longer be updating BusyCal 2. You may upgrade from BusyCal 2 to BusyCal 3 at any time. Learn more about the [upgrade process here](/docs/faqs/71143-how-to-upgrade-busycal.md) --- # Any plans for a Windows OS version? Unfortunately not. BusyCal is currently only available on Apple devices. However, BusyCal does support Exchange / Office360 and so will readily sync with calendaring apps on Windows such as Outlook. --- # Does BusyCal Sync With OmniFocus, 2Do, or Other Apps? BusyCal has built-in support for CalDAV and WebDAV servers & subscriptions, and by extension supports any third party app that supports the same. Some other apps, such as Omnifocus ([see this article here](https://support.omnigroup.com/omnifocus-ical-sync/)), allow publishing their events as a WebDAV subscription. You can simply add such subscriptions to BusyCal. Other apps such as [2Do](https://www.2doapp.com), a popular Task Manager on macOS, iOS and Android, are also well supported. 2Do supports syncing via CalDAV. You can, for example, use both 2Do and BusyCal via iCloud. You can learn [more about 2Do here](https://www.2doapp.com). --- # Can events be paused? An event normally has a start / end date and as such cannot be paused. However you can choose to hide events. In order to hide events, you could do the following: 1. Create a new tag called "Paused" 2. Assign all the events that you wish to 'pause' with this event (CTRL+Click on an event and pick from under Tags...) 3. Create a new Smart Filter and exclude all events that contain this tag. Now, this new Smart Filter could in effect become your default view where all such events have been hidden. When you wish to see these again, simply click on "Unfiltered" from the top Smart Filter bar. Learn more about [Smart Filters here](/docs/busycal/70612-smart-filters.md) --- # Does BusyCal iOS support adding contacts to events? No, it does not currently. However, if you add a contact to BusyCal on the Mac, it should sync this information through to iOS and get displayed there. NOTE: In case you have more than one contact added to an event, only one of these will show on iOS. --- # Day/Week view keeps zooming when I scroll (timeline zoom) In Day and Week views, BusyCal supports timeline zooming via scrolling gestures when the pointer is over the timeline area. If you frequently zoom by accident, you can disable this behavior. ## Fix: Disable timeline scroll zoom[​](#fix-disable-timeline-scroll-zoom "Direct link to Fix: Disable timeline scroll zoom") 1. Open **BusyCal > Settings**. 2. Go to **Appearance** and then open the **Accessibility** section. 3. Enable **Disable timeline scroll zoom in Day & Week views**. ## Related docs[​](#related-docs "Direct link to Related docs") * [Settings: Appearance / Accessibility](/docs/busycal/70607-preferences.md#appearance-preferences) * [Day View](/docs/busycal/70587-day-view.md) * [Week View](/docs/busycal/70588-week-view.md) --- # Does BusyCal/BusyContacts work with iCloud Advanced Data Protection? Yes. BusyCal and BusyContacts work normally with iCloud Advanced Data Protection (ADP) enabled. Apple's own documentation confirms that **iCloud Calendar and iCloud Contacts are not end-to-end encrypted**, even with ADP turned on — they continue to use standard CalDAV/CardDAV. BusyCal and BusyContacts connect to these services as usual, so nothing changes. **Reminders** do gain end-to-end encryption under ADP, but your trusted devices still decrypt that data locally. BusyCal accesses Reminders through Apple's EventKit framework (the same system APIs other apps use), so iCloud Reminders continue to sync normally. ### Notes[​](#notes "Direct link to Notes") * If Reminders appear stale after enabling ADP, open Apple's Reminders app once and let it finish syncing, then press `⌘-R` in BusyCal to refresh. * If you change or reset your Apple Account password, Apple revokes app-specific passwords. You'll need to [generate a new one](https://support.apple.com/HT204397) and update it in BusyCal/BusyContacts: <!-- --> * [BusyCal iCloud setup](/docs/busycal/70630-using-busycal-with-icloud.md) * [BusyContacts iCloud setup](/docs/busycontacts/77662-using-busycontacts-with-icloud.md) No BusyCal or BusyContacts setting changes are required. --- # Why Don't Alarm Dismissals Sync Across My Devices? BusyCal is only able to sync alarm dismissals in some cases, primarily for iCloud and Google calendar accounts. There are important limitations to be aware of, though: **Alarm dismissals do NOT sync for:** * Recurring events * Meeting invitations * Tasks/reminders * Non-CalDAV accounts (Exchange, Outlook, Reminders, Todoist, etc.) ### iOS Pending Sync[​](#ios-pending-sync "Direct link to iOS Pending Sync") On iPhone and iPad, alarm dismissals may not sync immediately due to iOS background sync restrictions: * **Background sync timing** is controlled by iOS, not BusyCal * If iOS doesn't allow background sync for hours, alarms will continue to show * This can result in delays of several hours before dismissals sync * Force-opening BusyCal can trigger immediate sync **To improve sync timing:** 1. Ensure Background App Refresh is enabled for BusyCal 2. Periodically open BusyCal to trigger manual sync 3. Check your device's Low Power Mode settings --- # Why Does the Alarm Sound Name Change After Syncing? Most calendar and task services — including Apple's Reminders — do **not** sync the alarm sound name between devices. After a task or event syncs, the alarm sound label shown in BusyCal on the receiving device may differ from what was originally set (for example, you might see "Basso" instead of "Chime"). ## Why This Happens[​](#why-this-happens "Direct link to Why This Happens") The alarm sound is a device-local property. When a task or event syncs from another device, the server only transmits that an alarm exists — not which sound file should play. BusyCal may display a placeholder name (such as "Basso") in the alarm details, but **this label does not determine which sound actually plays**. ## What You Should Do[​](#what-you-should-do "Direct link to What You Should Do") Set your preferred alarm sound in **BusyCal's settings on each device separately**: * **Mac**: BusyCal > Settings > Alarms > Default Alarm Sound * **iOS**: BusyCal > Settings > Sound BusyCal will use the default alarm sound configured locally on that device, regardless of what sound name appears on the synced task or event. You can safely ignore the sound name shown in the alarm details — it is informational only. ## Related Docs[​](#related-docs "Direct link to Related Docs") * [Alarms (BusyCal for Mac)](/docs/busycal/70604-alarms.md#setting-default-alarm-and-snooze-intervals) * [Alarm Dismissals Not Syncing](/docs/faqs/alarm-dismissals-not-syncing-across-devices.md) --- # Why is my iCloud account showing only read only calendars? ### BusyCal and Apple Calendar Integration[​](#busycal-and-apple-calendar-integration "Direct link to BusyCal and Apple Calendar Integration") note To leverage BusyCal's full potential, users are encouraged to add their accounts (e.g., [iCloud](/docs/busycal/70630-using-busycal-with-icloud.md), Google, Outlook) directly to BusyCal. The *Apple Calendar* account option is not the same as an *iCloud* account. BusyCal is designed as a complete replacement for Apple Calendar, Outlook, or Google Calendar. It directly communicates with your calendar accounts via protocols like CalDAV, Exchange, MS Graph, and WebDAV, providing seamless and robust integration. However, in corporate settings, company policies may restrict adding accounts directly. For such situations, BusyCal supports **one-way** syncing with Apple Calendar using its provided (but limited) APIs. This read-only mode allows you to: * Pull changes from Apple Calendar. * View shared work calendars. BusyCal operates in read-only mode with Apple Calendar due to limitations in Apple’s APIs, which do not support syncing certain properties or allow two-way syncing. #### Why One-Way Sync?[​](#why-one-way-sync "Direct link to Why One-Way Sync?") To avoid compromising the user experience by disabling or hiding specific options in the UI, BusyCal provides one-way sync. This ensures you can still access essential features while keeping your calendar up-to-date with changes made in Apple Calendar. #### Unlock BusyCal’s Full Potential[​](#unlock-busycals-full-potential "Direct link to Unlock BusyCal’s Full Potential") For the best experience and to access all features, add your [iCloud](/docs/busycal/70630-using-busycal-with-icloud.md) account directly to BusyCal. ### Why Not Use Apple’s EventKit or Built-in SDKs?[​](#why-not-use-built-in-sdks "Direct link to Why Not Use Apple’s EventKit or Built-in SDKs?") Apple provides developers with an API called [`EventKit`](https://developer.apple.com/documentation/eventkit) to access calendar data. However, **EventKit is extremely limited** and does not support many of BusyCal’s advanced features, such as: * ✅ Scheduling meetings, managing attendees and related steps * ✅ Custom durations * ✅ Attachments & conference call integration * ✅ Custom alarms * ✅ Time-blocking across calendars * ✅ Smart Filters & Saved Searches * ✅ Travel time and time-to-leave alerts * ✅ Tags, custom metadata, and private fields * ✅ Custom views, weather, and location-based features * And much, much, **much** more. Far too many to list here. Using EventKit would severely limit the flexibility and functionality that makes BusyCal unique. It's like building **a full-featured web browser like Chrome** instead of just wrapping around Apple’s WebKit view—power and customization matter! --- # Do BusyCal and BusyContacts support AppleScript? **BusyCal** includes a command-based AppleScript automation API. You can list accounts and calendars, query events and tasks, create new items, and update or delete existing ones, all from AppleScript. See the [AppleScript Support guide](/docs/busycal/70624-applescript.md) for the full command reference and examples. BusyCal also works with Siri and the **Shortcuts** app on both platforms, which covers the same ground without scripting: creating events and tasks, searching, checking availability, changing items, and switching Calendar Sets with a Focus filter. See [Siri and Shortcuts for Mac](/docs/busycal/siri-and-shortcuts.md) and [Siri and Shortcuts for iPhone and iPad](/docs/busycalios/140000-shortcuts.md). **BusyContacts** does not currently support AppleScript automation. --- # Why BusyCal/BusyContacts Launch at Startup or Launch Each Other If BusyCal or BusyContacts launch automatically when you start your Mac—or if one app launches the other in the background—this is intentional and required for certain core features to function properly. Below, we explain why this happens and what you can do about it. However, if none of these cases apply to you, it's worth checking whether the apps have been inadvertently added to your [Mac’s Login Items](#login-items). ## Why BusyCal Launches at Startup[​](#why-busycal-launches-at-startup "Direct link to Why BusyCal Launches at Startup") The **[BusyCal Menu Bar App](/docs/busycal/70606-busycal-menu.md)** runs through the **BusyCal Menu & Alarms** background helper at startup to: 1. **Deliver alarms after a reboot** - Ensures you receive scheduled notifications 2. **Keep menu-bar calendar features available** - Shows upcoming events and menu interactions 3. **Maintain background menu functionality** - Keeps menu app features active when the main window is closed This startup behavior is for the helper process and alarm/menu functionality using locally stored data. The helper does not sync accounts; the main BusyCal app must remain running for [account syncing](/docs/busycal/70606-busycal-menu.md#faq-sync-without-main). BusyCal version behavior In BusyCal versions prior to **2026.1.2**, some menu app interactions (including certain alarm actions) could launch the main BusyCal app. In **2026.1.2** and later, these interactions are handled directly by BusyCal Menu & Alarms. See [BusyCal Menu App](/docs/busycal/70606-busycal-menu.md#launches-when-dismissing). ## Why BusyCal Launches BusyContacts[​](#why-busycal-launches-busycontacts "Direct link to Why BusyCal Launches BusyContacts") BusyCal will automatically launch BusyContacts in the background when: ### 1. Birthday Calendar is Enabled[​](#1-birthday-calendar-is-enabled "Direct link to 1. Birthday Calendar is Enabled") When the Birthday calendar is enabled with **BusyCal > Settings > General > Contacts from: BusyContacts**, BusyCal must launch BusyContacts to: * Access and display birthday/anniversary information * Update when contact details change * Display death anniversaries (if configured) ### 2. Working with Event Attendees[​](#2-working-with-event-attendees "Direct link to 2. Working with Event Attendees") BusyCal launches BusyContacts when you: * Add attendees to an event * Edit existing attendees * View attendee contact information * Send meeting invitations This integration allows BusyCal to auto-complete email addresses from your contacts. ## Why BusyContacts Launches BusyCal[​](#why-busycontacts-launches-busycal "Direct link to Why BusyContacts Launches BusyCal") Similarly, BusyContacts may launch BusyCal when: * [Creating calendar events](/docs/busycontacts/44314-getting-started-with-busycontacts.md#linked-events) from contact information * Viewing calendar events for contacts within the Activity Panel ### Options to Reduce Cross-App Launching[​](#options-to-reduce-cross-app-launching "Direct link to Options to Reduce Cross-App Launching") #### If You Don't Need BusyContacts Integration:[​](#if-you-dont-need-busycontacts-integration "Direct link to If You Don't Need BusyContacts Integration:") 1. **Switch to Apple Contacts for birthdays:** * Go to **BusyCal > Settings > General** * Change "Contacts from:" to "Apple Contacts" * This prevents BusyCal from launching BusyContacts at launch #### If You Don't Add Contacts to BusyCal:[​](#if-you-dont-add-contacts-to-busycal "Direct link to If You Don't Add Contacts to BusyCal:") * Launch BusyContacts * From the Activity Panel, click on the top **Activity** drop-down menu and uncheck: **Events, Meetings, Tasks, Journals** * BusyCal should stop launching from BusyContacts ## Check macOS Login Items[​](#login-items "Direct link to Check macOS Login Items") If the apps are still launching unexpectedly after understanding the above scenarios, check your macOS Login Items: Check Login Items & Extensions Sometimes users accidentally add BusyCal or BusyContacts to their Login Items, causing additional launches at startup: 1. Open **System Settings > General > Login Items & Extensions** 2. Look for BusyCal or BusyContacts in the list 3. If found, select the app and click the **minus (-)** button to remove it 4. Check both "Open at Login" and "Allow in Background" sections This is separate from the BusyCal Menu app's necessary launch behavior - removing these won't affect alarm functionality. --- # Availability Viewer Shows Busy All Day (Microsoft 365) If BusyCal’s **Availability Viewer** shows an attendee as **busy all day** even though Outlook shows them as available, it usually means BusyCal is receiving (or interpreting) the attendee’s free/busy data differently than the Outlook UI you’re comparing against. ## Quick checks[​](#quick-checks "Direct link to Quick checks") 1. Update BusyCal to the latest version available for your distribution (Direct/App Store/Setapp). 2. Confirm the “blocking” item is truly an **all-day event marked as Free** (not a timed event that spans most/all of the day). 3. If possible, verify the attendee’s calendar in Outlook on the web to confirm the free/busy state. ## Notes[​](#notes "Direct link to Notes") * BusyCal’s Availability Viewer relies on the calendar service’s free/busy data. If Microsoft reports an event as blocking time, BusyCal will treat it as busy. * Free/busy behavior can vary depending on account type and server configuration. ## Related docs[​](#related-docs "Direct link to Related docs") * [Free/Busy Availability Viewer](/docs/busycal/70616-free-busy-availability-viewer.md) * [Using BusyCal with Office 365 (Microsoft Graph): Limitations](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md#free-busy-availability-viewer) --- # Can BusyCal show the Alarm window on all monitors or desktop spaces? BusyCal can make its Alarm window available across all macOS Desktop Spaces. To enable this, go to **BusyCal > Settings > Alarms**, make sure **Show alarms** is checked, select **Use BusyCal Alarm Window**, then enable **Show in all desktop spaces**. This helps when you use Mission Control, multiple Desktops/Spaces, full-screen apps, or multiple monitors with separate Spaces. The Alarm window is allowed to appear across Spaces instead of being tied to only the desktop where it first opened. This setting does **not** create a separate duplicate Alarm window on every physical monitor at the same time. macOS still manages the Alarm window as one window. If you are asking for the alarm to be mirrored simultaneously on every monitor, that is different from **Show in all desktop spaces**. For more Alarm window options, see [Alarms](/docs/busycal/70604-alarms.md#displaying-alarms-in-the-busycal-alarm-window) and [Alarms Settings](/docs/busycal/70607-preferences.md#alarms-preferences). --- # Does BusyCal for iOS support Live Activities for upcoming events? BusyCal for iOS does not currently offer a Live Activity for upcoming events, so there is no live notification for your next event on the Lock Screen or in the Dynamic Island. ## Why it isn't available yet[​](#why-it-isnt-available-yet "Direct link to Why it isn't available yet") We think Live Activities are a great fit for calendar events — they stand out far more than a Lock Screen widget — and we have had a BusyCal version in internal testing for some time. We have held it back because Live Activities are not yet dependable enough for events, and the problems are not specific to BusyCal. Developers have [widely reported](https://developer.apple.com/forums/thread/748569) the same failures across many apps: * **They stop updating.** Once the iPhone is locked, or the app is no longer running, an activity can quietly stop refreshing and leave old information on screen. In that report, an Apple engineer confirmed these updates are held back on purpose, which is not what the documentation describes. * **They can get stuck.** An activity that should have finished sometimes [stays on the Lock Screen anyway](https://developer.apple.com/forums/thread/721412), and these leftovers can survive force-quitting or even deleting the app. * **Long events do not fit.** iOS allows a Live Activity [at most 8 hours of updates and removes it after 12](https://developer.apple.com/forums/thread/797676). All-day and multi-day events cannot be shown for as long as they actually last. We have reported what we are seeing to Apple. Apps that do offer Live Activities today generally work around these limits by pushing constant updates from their own cloud servers. BusyCal syncs directly with your calendar services and does not route your data through our servers, so that workaround is not open to us in the same way. Planned, but not scheduled We intend to release Live Activities for upcoming events once these reliability problems are resolved. We do not have a release date to share. ## What you can use today[​](#what-you-can-use-today "Direct link to What you can use today") BusyCal includes Lock Screen and Home Screen widgets that keep your upcoming events visible without opening the app. * **Lock Screen widgets** can show your next event, what is happening now and next, or a countdown to your next timed event. * **Home Screen widgets** show upcoming events, a calendar grid, or your tasks, in several sizes. tip See [Widgets](/docs/busycalios/145201-widgets.md) for the available widget types, sizes, and options, and for choosing which calendars your widgets show. --- # BusyCal Top FAQs (Quick Links) This page links to the most common BusyCal troubleshooting articles and “how-to” answers. If you’re not sure what to search for, start here. ## Widgets & Apple Watch (iOS)[​](#widgets--apple-watch-ios "Direct link to Widgets & Apple Watch (iOS)") * [BusyCal for Apple Watch](/docs/busycalios/apple-watch.md) * [Widgets/Watch missing events](/docs/faqs/widgets-or-watch-missing-events.md) * [Widgets (iOS)](/docs/busycalios/145201-widgets.md) * [Calendar Sets (iOS)](/docs/busycalios/131439-calendar-sets.md) ## Calendar Visibility & “Missing Events”[​](#calendar-visibility--missing-events "Direct link to Calendar Visibility & “Missing Events”") * [Calendar suddenly empty / events missing](/docs/faqs/98754-i-cannot-see-any-of-my-events-in-busycal-my-calendar-is-suddenly-empty.md) * [Calendars are greyed out](/docs/faqs/calendars-greyed-out-and-disabled.md) * [Declutter Day/Week view](/docs/faqs/declutter-day-week-view.md) ## Day / Week / Month View[​](#day--week--month-view "Direct link to Day / Week / Month View") * [Day/Week view missing hours](/docs/faqs/day-week-view-missing-hours.md) * [“Start week on” confusion](/docs/faqs/start-week-on-does-not-align-week-view.md) * [Month view has no scroll bar](/docs/faqs/month-view-no-scroll-bar.md) * [Month view Today button behavior](/docs/faqs/month-view-today-button-behavior.md) * [Tasks order in Month view](/docs/faqs/tasks-order-in-month-view.md) ## Tasks[​](#tasks "Direct link to Tasks") * [Tasks added on iPhone/iPad don’t show on Mac](/docs/faqs/tasks-added-on-ios-not-showing-on-mac.md) * [Tasks due earlier today still show under Today](/docs/faqs/tasks-due-time-still-shows-today.md) * [Default calendar for tasks is greyed out](/docs/faqs/98764-default-calendar-for-todos-shows-all-listed-calendars-grayed-out.md) ## Alarms[​](#alarms "Direct link to Alarms") * [Alarm window on all monitors or desktop spaces](/docs/faqs/busycal-alarm-window-all-desktop-spaces.md) * [Alarms not showing in BusyCal](/docs/faqs/116035-alarms-not-showing-in-busycal.md) * [Duplicate alarms](/docs/faqs/71172-how-can-i-avoid-duplicate-alarms-from-being-displayed.md) ## Tags & Colors[​](#tags--colors "Direct link to Tags & Colors") * [Tags not syncing or missing](/docs/faqs/tags-not-syncing-or-missing.md) * [Calendar colors keep reverting](/docs/faqs/calendar-colors-keep-reverting.md) ## Time Zones[​](#time-zones "Direct link to Time Zones") * [Show multiple time zones](/docs/faqs/show-multiple-time-zones.md) * [Time Zones (guide)](/docs/busycal/70609-time-zones.md) ## Microsoft 365 / Outlook[​](#microsoft-365--outlook "Direct link to Microsoft 365 / Outlook") * [Microsoft 365 events not updating](/docs/faqs/microsoft-365-events-not-updating.md) * [Microsoft 365 Group Calendars missing](/docs/faqs/microsoft-graph-group-calendars-not-showing.md) * [Teams option missing](/docs/faqs/microsoft-teams-add-meeting-missing.md) * [Unable to connect to Office 365 / Outlook](/docs/faqs/104475-unable-to-connect-to-an-office-365-outlook-account.md) ## Meeting Invitations[​](#meeting-invitations "Direct link to Meeting Invitations") * [Hide meeting invitations from one calendar](/docs/faqs/hide-meeting-invitations-from-calendar.md) * [Troubleshooting Meeting Invitation Issues](/docs/faqs/meeting-invitation-faqs.md) * [Invite disappears after moving to another calendar](/docs/faqs/meeting-invite-disappears-after-moving.md) ## Travel Time[​](#travel-time "Direct link to Travel Time") * [Travel Time (Cycling) not available](/docs/faqs/travel-time-bicycle-not-supported.md) * [Accidental timeline zoom when scrolling](/docs/faqs/accidental-timeline-zoom-when-scrolling.md) ## Siri & Shortcuts[​](#siri--shortcuts "Direct link to Siri & Shortcuts") * [How do I use Siri with BusyCal?](/docs/faqs/using-siri-with-busycal.md) * [Siri and Shortcuts (Mac)](/docs/busycal/siri-and-shortcuts.md) * [Siri and Shortcuts (iOS)](/docs/busycalios/140000-shortcuts.md) * [Do BusyCal and BusyContacts support AppleScript?](/docs/faqs/applescript-support.md) --- # BusyContacts is no longer showing Apple Mail activity after an update If Apple Mail messages used to appear in BusyContacts and now they don’t (especially after updating BusyContacts or macOS), it usually means you were relying on the **legacy Apple Mail plug-in**. Newer BusyContacts versions use a MailKit-based Apple Mail extension called **BusyContacts Mail Assistant** (macOS 12+). ## Fix (macOS 12+)[​](#fix "Direct link to Fix (macOS 12+)") 1. In BusyContacts, enable capture in **BusyContacts > Settings > Integrations > Mail**. 2. In Apple Mail, enable the extension: <!-- --> * macOS 13+: **Mail > Settings > Extensions** * macOS 12: **Mail > Preferences > Extensions** 3. Quit and relaunch **Apple Mail**, then quit and relaunch **BusyContacts**. For full details (including important limitations such as not being able to import your entire mail history automatically), see: * [Activity List: Adding Mail](/docs/busycontacts/47350-activity-list.md#adding-mail) ## If you’re looking for “Manage Plug-ins…”[​](#manage-plugins "Direct link to If you’re looking for “Manage Plug-ins…”") Apple Mail’s **Manage Plug-ins…** button is part of the **legacy** plug-in workflow and does not apply to the Mail extension workflow. If you’re intentionally using the legacy plug-in (older BusyContacts versions), see: * [Activity List: Troubleshooting](/docs/busycontacts/47350-activity-list.md#troubleshooting) * [Manage Plugins button not showing in Apple Mail preferences](/docs/faqs/124218-manage-plugins-button-not-showing-in-apple-mail-preferences.md) --- # BusyContacts: iCloud China (icloud.com.cn) sync issues If your Apple ID is an **iCloud China** account (domain `icloud.com.cn`), BusyContacts must connect to the China CardDAV service endpoint: * `contacts.icloud.com.cn` When this is misconfigured or blocked, you may see errors such as: * **SSL errors** * **“Unable to find a server with the specified hostname”** * Authentication failures even when using an app‑specific password ## Setup checklist[​](#setup "Direct link to Setup checklist") 1. Generate (or regenerate) an **app‑specific password** for iCloud. 2. In BusyContacts, add your account in **BusyContacts > Settings > Accounts**. 3. Use one of these approaches: ### Option A: Use the iCloud China account type (when available)[​](#icloud-china-type "Direct link to Option A: Use the iCloud China account type (when available)") BusyContacts can show a dedicated **iCloud China** service in the account type list (depending on your Mac’s region/timezone configuration). If you see it, select it and sign in with: * Username: your Apple ID email * Password: your iCloud app‑specific password ### Option B: Use Generic CardDAV (always available)[​](#generic-carddav "Direct link to Option B: Use Generic CardDAV (always available)") If you don’t see “iCloud China” as an option, you can still connect using **Generic CardDAV** with: * Server: `https://contacts.icloud.com.cn` * Username: your Apple ID email * Password: your iCloud app‑specific password ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") * Verify your Mac’s date/time are correct: **System Settings > General > Date & Time** → enable **Set time and date automatically**. * If you’re behind a restrictive network, confirm that your Mac can reach `https://contacts.icloud.com.cn` over HTTPS. * If BusyCal works with iCloud but BusyContacts doesn’t, double-check that the BusyContacts account is using the **CardDAV Contacts endpoint** (not CalDAV). For general iCloud guidance, see: * [Using BusyContacts with iCloud](/docs/busycontacts/77662-using-busycontacts-with-icloud.md) --- # BusyContacts: iCloud says "Service is currently unavailable" If iCloud Contacts sync in BusyContacts suddenly stops working and you see messages like: * **“Service is currently unavailable. Try again later or check with service provider.”** * **“Not syncing”** / repeated failures when making changes it’s usually caused by **iCloud server availability** or **iCloud throttling**. ## 1) Confirm you’re using an app-specific password[​](#app-specific "Direct link to 1) Confirm you’re using an app-specific password") Apple requires third-party apps (including BusyContacts) to use an **app-specific password** for iCloud CardDAV sync. * [Unable to log into iCloud / password incorrect prompts](/docs/faqs/71150-unable-to-log-into-icloud-i-m-seeing-password-incorrect-prompts.md) * [Using BusyContacts with iCloud](/docs/busycontacts/77662-using-busycontacts-with-icloud.md) ## 2) Check Apple’s system status (and try again later)[​](#status "Direct link to 2) Check Apple’s system status (and try again later)") If iCloud is having an outage or degraded performance, BusyContacts may not be able to connect reliably. If you recently changed many contacts/tags, iCloud may also temporarily throttle sync requests. In that case, waiting can be the fastest fix. ## 3) Avoid repeated bulk edits if you’re seeing 503 / 427 errors[​](#bulk "Direct link to 3) Avoid repeated bulk edits if you’re seeing 503 / 427 errors") iCloud can throttle BusyContacts when doing many changes in a short period (bulk edits, bulk tagging, etc.). See: * [Using BusyContacts with iCloud: Repeated Failures or 503 / 427 Sync Errors](/docs/busycontacts/77662-using-busycontacts-with-icloud.md#bulk-operation-failures) ## 4) Still stuck? Collect logs for support[​](#logs "Direct link to 4) Still stuck? Collect logs for support") If you’ve waited and the problem persists, send us a support ticket with: * The exact error message text (screenshot helps) * Whether the account is iCloud / CardDAV / Exchange * Approximately how many contacts you manage and what operations you were doing (bulk tags, bulk edits, etc.) --- # BusyContacts: iCloud rejected changes because a tag/group is too large BusyContacts can map **Tags** to **iCloud Groups** when syncing via CardDAV. If an iCloud group becomes extremely large, iCloud may reject updates to that group. ## What you may see[​](#symptoms "Direct link to What you may see") * Sync failures or conflicts when tagging many contacts in an iCloud address book. * A message similar to: <!-- --> * “**Tag/Group too large**”, or * “**iCloud rejected changes because this tag is too large to update**”, or * an iCloud CardDAV error that mentions **incoming vCard size**. ## Why this happens[​](#why "Direct link to Why this happens") iCloud stores Groups as a special **group vCard** containing a list of member references. iCloud enforces a maximum size for a contact group (Apple documents a **256 KB** limit for a contact group card). When a BusyContacts Tag is mapped to an iCloud Group, adding many members makes the group vCard grow until it exceeds iCloud’s limit. At that point, iCloud rejects the update and the tag/group cannot be updated on the server. In practice, this can happen when a single tag/group contains **tens of thousands of contacts**. Depending on the data involved, users often hit the limit somewhere around **\~20,000–25,000** members. ## Fix: split the tag into smaller tags[​](#fix "Direct link to Fix: split the tag into smaller tags") 1. Create one or more new Tags (for example, `Customers A–M` and `Customers N–Z`). 2. Move some contacts out of the original tag and into the new tags. 3. Let BusyContacts sync again. Once each tag/group is below iCloud’s group size limit, syncing should resume normally. ## Preventing it[​](#prevent "Direct link to Preventing it") * Avoid putting extremely large numbers of contacts into a single Tag when syncing with iCloud. * If you routinely need very large “group-like” sets, consider using a more scalable sync service (Google, Fastmail, Exchange, or another CardDAV provider). For more iCloud details, see [Using BusyContacts with iCloud](/docs/busycontacts/77662-using-busycontacts-with-icloud.md). --- # BusyContacts is not showing iMessage / Messages activity BusyContacts can **send** an iMessage for a contact, but it does **not** currently show your Messages.app conversation history in the Activity List. This is expected on modern macOS: Apple does not provide a supported way for third‑party apps to read Messages transcripts reliably (and without special entitlements). ## What you can do[​](#what-you-can-do "Direct link to What you can do") * To message a contact, use the [Action menu](/docs/busycontacts/49708-action-menu-and-contextual-menu.md) or click an email/phone field in the Info Panel and choose Messages/iMessage (depending on the field). * If your goal is to keep a communication history inside BusyContacts, enable **Mail** activity instead: <!-- --> * [Activity List: Adding Mail](/docs/busycontacts/47350-activity-list.md#adding-mail) ## Why it changed[​](#why "Direct link to Why it changed") Older macOS versions exposed more metadata via Spotlight in ways that third‑party apps could sometimes use. As macOS privacy tightened over time, this became unreliable and is no longer supported in BusyContacts. --- # Why does S/MIME stop working when BusyContacts Mail Assistant is enabled? **BusyContacts Mail Assistant** and Apple Mail's built-in **S/MIME encryption** cannot currently be used at the same time. When Mail Assistant is enabled, S/MIME signing and encryption are unavailable in Apple Mail. BusyContacts Mail Assistant uses Apple's MailKit extension system to receive and process messages for the BusyContacts Activity List. S/MIME also uses Mail's message-security system. MailKit treats an enabled message-security extension as the active handler for message signing and encryption instead of combining it with Mail's built-in S/MIME handling. This separation avoids having two security systems process the same message, but it means BusyContacts Mail Assistant and S/MIME are currently incompatible. Choose the feature you need: * **Mail activity in BusyContacts:** Enable BusyContacts Mail Assistant. S/MIME will be unavailable. * **S/MIME in Apple Mail:** Disable BusyContacts Mail Assistant. BusyContacts will not capture new Mail activity. ## Use S/MIME in Apple Mail[​](#use-smime-in-apple-mail "Direct link to Use S/MIME in Apple Mail") 1. Open **Apple Mail**. 2. Choose **Mail > Settings > Extensions**. 3. Disable **BusyContacts Mail Assistant**. 4. Quit and reopen Apple Mail. 5. Try signing or encrypting the message again. Disabling the extension restores S/MIME. Mail activity that BusyContacts already recorded is not removed. You can enable **BusyContacts Mail Assistant** again when you no longer need S/MIME. We have not verified a macOS version where both features work together. For more information about Mail activity, see [Activity List: Adding Mail](/docs/busycontacts/47350-activity-list.md#adding-mail). --- # Deploying BusyContacts via MDM or Scripted Installation BusyContacts does **not currently support direct MDM-based licensing for App Store subscriptions**, due to limitations imposed by Apple. The Mac App Store is designed around **individual iCloud-based subscriptions**, which unfortunately do not support business-wide deployments under a single MDM license. For organizations and IT admins who wish to manage multiple installations of BusyContacts across devices, we recommend using our **direct license** version—available [from our website](/store.md)—which allows volume purchases (e.g., a 5-seat license) and supports custom deployment workflows. ## Benefits of our Direct Version vs. App Store[​](#benefits-of-our-direct-version-vs-app-store "Direct link to Benefits of our Direct Version vs. App Store") For more details, please [visit the licensing page](/docs/faqs/120616-licensing-explained.md#direct) as we have given a detailed comparison there. Essentially, our [**direct version**](/store.md) allows you to: * Purchase multi-seat licenses with 18 months of updates included. * Deploy BusyContacts manually or via scripts. * Register and activate using a license key * Optional Upgrades ## Managed Installation on a Single Machine[​](#managed-installation-on-a-single-machine "Direct link to Managed Installation on a Single Machine") You can manually install and activate BusyContacts on any Mac using the following steps: ### 1. Download the latest DMG[​](#1-download-the-latest-dmg "Direct link to 1. Download the latest DMG") [Download BusyContacts](https://www.busymac.com/download/BusyContacts.dmg) ### 2. Mount the DMG[​](#2-mount-the-dmg "Direct link to 2. Mount the DMG") Open **Terminal** and run: ``` hdiutil attach /path/to/BusyContacts.dmg ``` This command will mount the DMG file as a volume on your system. Take note of the mount point displayed in the command output (e.g., `/Volumes/BusyContacts`). ### 3. Copy BusyContacts to Applications[​](#3-copy-busycontacts-to-applications "Direct link to 3. Copy BusyContacts to Applications") ``` cp -R /Volumes/BusyContacts/BusyContacts.app /Applications/ ``` ### 4. Register BusyContacts with a License Key[​](#4-register-busycontacts-with-a-license-key "Direct link to 4. Register BusyContacts with a License Key") You can register BusyContacts by opening a special URL with your license key: ``` open "busycontacts://register/YOUR-LICENSE-KEY-HERE" ``` Replace `YOUR-LICENSE-KEY-HERE` with your actual license key. This will silently register the installed copy in the background. ## Sample Deployment Script for Automation[​](#sample-deployment-script-for-automation "Direct link to Sample Deployment Script for Automation") For automating this across multiple machines, here’s a sample Bash script: note This script can be adapted for deployment tools like Jamf, Munki, or custom shell workflows across managed Macs. ``` #!/bin/bash # --- Configuration --- BASE_URL="https://www.busymac.com/download" # Base URL for downloads DMG_NAME="BusyContacts.dmg" # Base name for the downloaded file and in URL DMG_URL="$BASE_URL/$DMG_NAME" # Construct the full download URL DMG_PATH="/tmp/$DMG_NAME" # Full path for the downloaded file APP_NAME="BusyContacts.app" # Name of the application bundle inside the DMG LICENSE_KEY="YOUR-LICENSE-KEY-HERE" # Replace with actual license key # --- End Configuration --- # Variable to store the determined mount point MOUNT_POINT="" # Function for cleanup actions cleanup() { echo "--- Cleaning up ---" # Attempt to detach using the determined mount point, if available and mounted if [ -n "$MOUNT_POINT" ] && hdiutil info | grep -q -F "$MOUNT_POINT"; then echo "Unmounting volume at $MOUNT_POINT..." hdiutil detach "$MOUNT_POINT" -force > /dev/null 2>&1 fi # Remove the downloaded DMG file if [ -f "$DMG_PATH" ]; then echo "Removing downloaded DMG at $DMG_PATH..." rm "$DMG_PATH" fi echo "Cleanup finished." } trap cleanup EXIT # --- Main Script --- echo "Starting BusyContacts installation script..." # Check for xmllint availability if ! command -v xmllint &> /dev/null; then echo "Error: xmllint command not found. Install via: brew install libxml2" >&2 exit 1 fi # Download BusyContacts DMG echo "Downloading $DMG_URL to $DMG_PATH..." if ! curl --fail -L -o "$DMG_PATH" "$DMG_URL"; then echo "Error: Failed to download DMG from $DMG_URL." >&2 exit 1 fi echo "Download complete." # Mount the DMG and capture the output plist echo "Mounting DMG: $DMG_PATH..." MOUNT_INFO_PLIST=$(hdiutil attach "$DMG_PATH" -nobrowse -noverify -plist) ATTACH_STATUS=$? # Capture exit status of hdiutil attach if [ $ATTACH_STATUS -ne 0 ]; then echo "Error: Failed to mount DMG. hdiutil exited with status $ATTACH_STATUS." >&2 exit 1 fi # Parse the plist output using plutil and xmllint to find the mount point echo "Parsing mount point information..." # Convert plist to XML, pipe to xmllint, use XPath to extract the string value # following the 'mount-point' key. Suppress stderr from plutil. MOUNT_POINT=$(echo "$MOUNT_INFO_PLIST" | plutil -convert xml1 -o - - 2>/dev/null | \ xmllint --xpath 'string(//key[.="mount-point"]/following-sibling::string[1])' - 2>/dev/null) PARSE_STATUS=$? # Capture exit status of the command pipeline if [ $PARSE_STATUS -ne 0 ]; then echo "Error: Failed to parse mount point using xmllint (exit status $PARSE_STATUS)." >&2 # Attempt to detach using the DMG path as a fallback hdiutil detach "$DMG_PATH" -force > /dev/null 2>&1 exit 1 fi # Validate that we found a mount point if [ -z "$MOUNT_POINT" ]; then echo "Error: Could not determine mount point from hdiutil output (xmllint parsing failed to find it)." >&2 # Attempt to detach using the DMG path as a fallback hdiutil detach "$DMG_PATH" -force > /dev/null 2>&1 exit 1 fi echo "DMG mounted successfully at: $MOUNT_POINT" # Define the source path for the application SOURCE_APP_PATH="$MOUNT_POINT/$APP_NAME" # Check if the application exists at the expected path within the mounted volume if [ ! -d "$SOURCE_APP_PATH" ]; then echo "Error: Application '$APP_NAME' not found at '$SOURCE_APP_PATH'." >&2 exit 1 fi echo "Located application at: $SOURCE_APP_PATH" # Copy the app to /Applications echo "Copying $APP_NAME to /Applications/ ..." if ! cp -R "$SOURCE_APP_PATH" /Applications/; then echo "Error: Failed to copy '$APP_NAME' to /Applications/." >&2 exit 1 fi echo "Application copied successfully." # Register the app using the URL scheme echo "Attempting to register the application..." # Add a small delay before trying to register, sometimes needed for the system # to recognize the newly copied app and its URL scheme handler. sleep 2 if ! open -g "busycontacts://register/$LICENSE_KEY"; then echo "Registration failed." exit 1 fi echo "Registration command sent." # Unmounting and cleanup will be handled by the EXIT trap echo "BusyContacts installation script completed successfully." # Explicitly exit successfully, triggering the cleanup trap exit 0 ``` --- # Messages "Add Contact" opens Apple Contacts (not BusyContacts) When you click **Add Contact** in macOS **Messages.app**, macOS opens the built‑in **Contacts.app** UI. BusyContacts can’t override that system behavior. ## Workarounds[​](#workarounds "Direct link to Workarounds") ### 1) Create the contact in BusyContacts manually[​](#1-create-the-contact-in-busycontacts-manually "Direct link to 1) Create the contact in BusyContacts manually") 1. In Messages, copy the phone number or email address. 2. In BusyContacts, create a new contact and paste it into the appropriate field. ### 2) Use BusyContacts URL handler (automation-friendly)[​](#2-use-busycontacts-url-handler-automation-friendly "Direct link to 2) Use BusyContacts URL handler (automation-friendly)") BusyContacts supports a URL handler that can create a new contact from a natural language string: * [URL Handler: Creating new contacts](/docs/busycontacts/56235-url-handler.md#new) ### 3) If your goal is “open contacts in BusyContacts”[​](#3-if-your-goal-is-open-contacts-in-busycontacts "Direct link to 3) If your goal is “open contacts in BusyContacts”") Some launchers (like Alfred/LaunchBar) can be configured to open contacts in BusyContacts: * [URL Handler: Opening contacts from Alfred/LaunchBar](/docs/busycontacts/56235-url-handler.md#alfred) * [How to set BusyCal and BusyContacts as the default apps](/docs/faqs/71161-how-to-set-busycal-and-busycontacts-as-the-default-apps.md) --- # Why does BusyContacts show Name Order when I disabled it? The **Name Order** option in **BusyContacts > Settings > Info Panel** controls whether the field appears by default. It does not remove a name order already saved on an individual contact. When a contact has its own name order, BusyContacts keeps the field visible so it is clear why that contact may be displayed differently from the general setting. For example, an imported vCard may contain: ``` X-ABOrder:LAST ``` This value tells BusyContacts to display that contact with the family name first. It does not identify the contact's language or country. Family-name-first ordering is customary in several naming traditions, and an individual contact may use a different order from the rest of your contacts. Apple Contacts and other contact apps may save or preserve this value without showing the field in their own editors. ## Remove the contact-specific name order[​](#remove-the-contact-specific-name-order "Direct link to Remove the contact-specific name order") 1. Edit the contact in BusyContacts. 2. Set **Name Order** to **Default**. 3. Save the contact. The contact will then follow BusyContacts' general name-order setting. If **Name Order** remains disabled under **Settings > Info Panel**, the field will no longer appear for that contact. For more information about choosing which fields appear by default, see [Info Panel Settings](/docs/busycontacts/49554-preferences.md#info-panel). --- # Why does New Card open Quick Contact instead of a blank contact? BusyContacts still opens a blank contact when you choose **File > New Card** or press `Command-N`. If a **Smart Filter** is active, however, BusyContacts opens **Quick Contact** instead. A blank contact may not match the active Smart Filter and could disappear from the filtered list before you finish entering its details. Quick Contact avoids this by letting you enter the contact outside the filtered list. ## Open a blank contact[​](#open-a-blank-contact "Direct link to Open a blank contact") 1. Click **Unfiltered** in the Filter Bar to turn off the active Smart Filter. 2. Choose **File > New Card** or press `Command-N`. The usual blank contact will appear below the contact list, ready for editing. For more information, see [Smart Filters](/docs/busycontacts/50099-smart-filters.md). --- # BusyContacts is not syncing with Apple Contacts or iPhone BusyContacts syncs to Apple Contacts (and your iPhone) through a **cloud account** such as **iCloud, Google, Exchange, Fruux, or another CardDAV server**. It does **not** sync local **“On My Mac”** address books to Apple Contacts or iPhone. ## Quick checks[​](#checks "Direct link to Quick checks") 1. Confirm the contact is stored in a **server-backed address book** (iCloud/Google/Exchange/CardDAV), not **On My Mac**. 2. Confirm the same cloud account is enabled in **System Settings > Internet Accounts**. 3. In BusyContacts, confirm the account is added in **BusyContacts > Settings > Accounts**. ## A reliable “sync test”[​](#sync-test "Direct link to A reliable “sync test”") 1. In BusyContacts, create a new contact on the server-backed address book. 2. Wait a moment, then verify it appears in: <!-- --> * **Apple Contacts** on the same Mac * the provider’s web UI (for example iCloud.com or Google Contacts) * **Contacts** on iPhone (if that account is enabled there) ## Common gotchas[​](#gotchas "Direct link to Common gotchas") * If you have multiple accounts enabled (for example iCloud + Google), make sure the contact is created on the account you expect. * If you imported contacts into an **On My Mac** address book, those contacts will remain local unless you move/export/import them into a cloud account. For more detail, see: * [Syncing with Apple Contacts](/docs/busycontacts/49374-syncing-with-apple-contacts.md) * [Syncing with an iOS device](/docs/busycontacts/77549-syncing-with-an-ios-device.md) --- # BusyContacts Phone Numbers Displayed Incorrectly BusyContacts can format phone numbers in different ways for **display** (for example, adding spaces, parentheses, dashes, or a country code). If your phone numbers “don’t look right”, change the display format setting. ## Change the phone display format[​](#change-format "Direct link to Change the phone display format") 1. Open **BusyContacts > Settings**. 2. Go to **General**. 3. Adjust **Phone Format For Display**. The available options are: * **Original Number** — Shows the phone number exactly as it’s stored (no formatting). * **Minimal** — Applies light formatting (often just spacing) for readability. * **International** — Formats numbers with an international prefix (for example `+1 …`). * **National** — Formats numbers in a “local” style (for example `(… ) …-…` in the US). ## Important notes[​](#notes "Direct link to Important notes") * This setting affects **display only** inside BusyContacts. Changing it does **not** modify the phone number value stored on the contact. BusyContacts deliberately keeps the number you originally entered intact — it will never rewrite, reformat, or alter the stored value. The display format is applied on top of your original entry purely for readability. * When you click into a Phone field to edit it, BusyContacts shows the **original stored value** so it’s easier to edit. The display formatting applies when you are **not** actively editing the field. * Because the stored number is never changed, it’s important to **enter phone numbers in the correct format from the start** — especially if you rely on dialing from your iPhone or other devices. What you type is exactly what gets saved and synced, so make sure the number (including any country code or area code) is entered the way you expect it to appear on your other devices. ## If the formatting still looks wrong[​](#still-wrong "Direct link to If the formatting still looks wrong") * Set **Phone Format For Display** to **Original Number** to confirm what is actually stored for that contact. * Try **International** if you frequently work with contacts from multiple countries. * Check the contact’s **country/region** information (for example, the Country field in an Address). Phone formatting often depends on the region used to interpret a number. For reference, see [Settings](/docs/busycontacts/49554-preferences.md#general). --- # Why does nothing happen when I choose Send Email in BusyContacts? BusyContacts sends email requests to the app registered as your Mac's **default email reader**. This applies when emailing an individual contact, selected contacts, or everyone assigned to a tag. If the default email reader is set to a browser or another app that is not configured to handle email, choosing **Send Email** may open the wrong app or appear to do nothing. ## Check the default email reader[​](#check-the-default-email-reader "Direct link to Check the default email reader") 1. Open Apple's **Mail** app. 2. Choose **Mail > Settings**. 3. Click **General**. 4. Check the **Default email reader** setting. 5. Select **Mail**, or select another installed email app that you have configured for sending messages. 6. Quit and reopen BusyContacts, then try **Send Email** again. If the setting shows a browser or an app you do not recognize, select **Mail**. A browser can be used with webmail, but the browser and webmail service must be configured to handle email links correctly. If a message still does not open, confirm that at least one of the selected or tagged contacts has an email address. BusyContacts uses each contact's [primary email address](/docs/busycontacts/47351-info-panel.md#primary). See Apple's guide to [changing the default email app on Mac](https://support.apple.com/102362) for more information. --- # BusyContacts (Setapp) Issues on Older macOS Versions If you’re using BusyContacts through **Setapp** on an older macOS version (for example **macOS 11 Big Sur**), and BusyContacts suddenly starts crashing or stops launching after an update, the most common cause is **OS compatibility**. BusyContacts evolves alongside macOS, and newer BusyContacts releases may require newer macOS versions. ## What to check first[​](#check "Direct link to What to check first") 1. Confirm your macOS version: **Apple menu > About This Mac** 2. Check the minimum OS requirement for the BusyContacts version you’re trying to run: <!-- --> * Our release notes include a `minOsVersion` field for each release. * You can also see a list of BusyContacts releases here: [Can I download old versions of BusyCal and BusyContacts?](/docs/faqs/71151-can-i-download-old-versions-of-busycal-and-busycontacts.md) ## Recovery options[​](#recovery "Direct link to Recovery options") ### Option A: Install a compatible BusyContacts version (recommended)[​](#compatible "Direct link to Option A: Install a compatible BusyContacts version (recommended)") If your Mac can’t upgrade to a newer macOS version, install an **older BusyContacts version** that supports your macOS. * See: [Can I download old versions of BusyCal and BusyContacts?](/docs/faqs/71151-can-i-download-old-versions-of-busycal-and-busycontacts.md) ### Option B: Recover your data (backups)[​](#backups "Direct link to Option B: Recover your data (backups)") If your primary goal is to access your contacts data: * Restore from a BusyContacts backup: [Backup and Restore](/docs/busycontacts/49877-backup-and-restore.md) * If you’re mid-upgrade and see database conversion issues: [BusyContacts update stuck on converting database](/docs/faqs/130984-busycontacts-update-stuck-on-converting-database.md) ### Option C: Use the BusyContacts trial temporarily to export data[​](#trial "Direct link to Option C: Use the BusyContacts trial temporarily to export data") If you can’t immediately get a compatible Setapp build on your Mac, you can temporarily install the direct BusyContacts build from BusyMac to: * restore a backup * export contacts as vCard/CSV (as supported) See: [Exporting and Importing Contacts](/docs/busycontacts/56820-exporting-and-importing-contacts.md) ## Notes[​](#notes "Direct link to Notes") * We can help troubleshoot BusyContacts itself, but Setapp controls Setapp-specific distribution and rollback options. * If you need an older Setapp build, Setapp support can advise on what options exist for your account and macOS version. --- # macOS Sonoma: BusyContacts Mail Plug-in Not Allowed If you upgraded to **macOS Sonoma** (or a newer macOS release) and Apple Mail reports that the BusyContacts plug-in is **incompatible** or can’t be enabled, that’s expected. BusyContacts no longer uses the legacy Apple Mail plug-in on modern macOS. Instead, BusyContacts uses a MailKit-based Apple Mail extension called **BusyContacts Mail Assistant** (macOS 12+). ## Fix: use the Mail extension[​](#fix "Direct link to Fix: use the Mail extension") 1. In BusyContacts, enable capture in **BusyContacts > Settings > Integrations > Mail**. 2. In Apple Mail, enable the extension: <!-- --> * macOS 13+: **Mail > Settings > Extensions** * macOS 12: **Mail > Preferences > Extensions** 3. Quit and relaunch **Apple Mail**, then quit and relaunch **BusyContacts**. Full details (and limitations) are here: * [Activity List: Adding Mail](/docs/busycontacts/47350-activity-list.md#adding-mail) ## If you need the legacy plug-in[​](#legacy "Direct link to If you need the legacy plug-in") The legacy Apple Mail plug-in was only available in older BusyContacts releases and is no longer supported. * [Activity List: Legacy Apple Mail plug-in (no longer supported)](/docs/busycontacts/47350-activity-list.md#spotlightnew) --- # BusyContacts Top FAQs This page links to the most common BusyContacts questions we see in support tickets. ## Setup & Sync[​](#setup--sync "Direct link to Setup & Sync") * [Getting Started with BusyContacts](/docs/busycontacts/44314-getting-started-with-busycontacts.md) * [Syncing with a Server](/docs/busycontacts/49373-syncing-with-a-server.md) * [BusyContacts not syncing with Apple Contacts/iPhone](/docs/faqs/busycontacts-not-syncing-with-apple-contacts-or-iphone.md) * [Using BusyContacts with iCloud](/docs/busycontacts/77662-using-busycontacts-with-icloud.md) * [Using BusyContacts with Google](/docs/busycontacts/77663-using-busycontacts-with-google.md) * [Using BusyContacts with Exchange](/docs/busycontacts/77664-using-busycontacts-with-exchange.md) * [Using BusyContacts with Office 365 (Microsoft Graph)](/docs/busycontacts/140983-using-busycontacts-with-office-365-microsoft-graph.md) * [Using BusyContacts with CardDAV](/docs/busycontacts/77665-using-busycontacts-with-carddav.md) * [Using BusyContacts with Fruux](/docs/busycontacts/77666-using-busycontacts-with-fruux.md) ## Apple Mail & Activity List[​](#apple-mail--activity-list "Direct link to Apple Mail & Activity List") * [Activity List](/docs/busycontacts/47350-activity-list.md) * [BusyContacts is no longer showing Apple Mail activity after an update](/docs/faqs/busycontacts-apple-mail-activity-missing-after-update.md) * [Why does S/MIME stop working when BusyContacts Mail Assistant is enabled?](/docs/faqs/busycontacts-mail-assistant-smime-conflict.md) * [Manage Plugins button not showing in Apple Mail preferences](/docs/faqs/124218-manage-plugins-button-not-showing-in-apple-mail-preferences.md) * [Activity List is not showing emails in BusyContacts on macOS Catalina](/docs/faqs/112805-activity-list-is-not-showing-emails-in-busycontacts-on-macos-catalina.md) * [I am using MailMate but BusyContacts is not showing any emails](/docs/faqs/116021-i-am-using-mailmate-but-busycontacts-is-not-showing-any-emails.md) * [What email apps is BusyContacts compatible with?](/docs/faqs/71189-what-email-apps-is-busycontacts-compatible-with.md) * [BusyContacts is not showing iMessage / Messages activity](/docs/faqs/busycontacts-imessage-activity-not-showing.md) * [Messages "Add Contact" opens Apple Contacts (not BusyContacts)](/docs/faqs/busycontacts-messages-add-contact-opens-apple-contacts.md) * [Sonoma: BusyContacts Mail plug-in not allowed](/docs/faqs/busycontacts-sonoma-mail-plugin-not-allowed.md) ## iCloud Troubleshooting[​](#icloud-troubleshooting "Direct link to iCloud Troubleshooting") * [Unable to log into iCloud / password incorrect prompts](/docs/faqs/71150-unable-to-log-into-icloud-i-m-seeing-password-incorrect-prompts.md) * [BusyContacts: iCloud says “Service is currently unavailable”](/docs/faqs/busycontacts-icloud-service-unavailable.md) * [BusyContacts: iCloud rejected changes because a tag/group is too large](/docs/faqs/busycontacts-icloud-tag-group-too-large.md) * [mac.com domain iCloud sync issues](/docs/faqs/mac-domain-icloud-sync.md) * [BusyContacts: iCloud China (icloud.com.cn) sync issues](/docs/faqs/busycontacts-icloud-china-sync.md) ## Tags, Groups, and Google Labels[​](#tags-groups-and-google-labels "Direct link to Tags, Groups, and Google Labels") * [Tags (Groups)](/docs/busycontacts/47214-tags-groups.md) * [Tags in BusyContacts are appearing as records in Google Contacts](/docs/faqs/98773-tags-in-busycontacts-are-appearing-as-records-in-google-contacts.md) ## Duplicates, Linking, and Merging[​](#duplicates-linking-and-merging "Direct link to Duplicates, Linking, and Merging") * [How do I clean up duplicate contacts in BusyContacts?](/docs/faqs/71184-how-do-i-clean-up-duplicate-contacts-in-busycontacts.md) * [Linking and Merging Cards](/docs/busycontacts/47349-linking-and-merging-cards.md) ## Import, Export, and Backups[​](#import-export-and-backups "Direct link to Import, Export, and Backups") * [Exporting and Importing Contacts](/docs/busycontacts/56820-exporting-and-importing-contacts.md) * [Rich text notes missing after export](/docs/faqs/rich-text-notes-not-showing-after-export.md) * [Backup and Restore](/docs/busycontacts/49877-backup-and-restore.md) * [BusyContacts update stuck on converting database](/docs/faqs/130984-busycontacts-update-stuck-on-converting-database.md) * [BusyCal/BusyContacts crashing on launch (corrupt database)](/docs/faqs/93133-busycal-busycontacts-crashing-on-launch-corrupt-database.md) ## Printing[​](#printing "Direct link to Printing") * [Printing Envelopes and Mailing Labels](/docs/busycontacts/56669-printing-envelopes-and-mailing-labels.md) * [Does BusyContacts support printing the phone list?](/docs/faqs/98766-does-busycontacts-support-printing-the-phone-list.md) ## Misc[​](#misc "Direct link to Misc") * [Why does BusyContacts launch?](/docs/faqs/why-busycontacts-launches.md) * [Why does BusyCal / BusyContacts launch at startup or launch each other?](/docs/faqs/apps-launch-at-startup.md) * [Phone numbers don’t look right (Phone Format For Display)](/docs/faqs/busycontacts-phone-display-format.md) * [How to set BusyCal and BusyContacts as the default apps](/docs/faqs/71161-how-to-set-busycal-and-busycontacts-as-the-default-apps.md) * [URL Handler](/docs/busycontacts/56235-url-handler.md) * [How do I uninstall BusyContacts?](/docs/faqs/71175-how-do-i-uninstall-busycontacts.md) * [Can I download old versions of BusyCal and BusyContacts?](/docs/faqs/71151-can-i-download-old-versions-of-busycal-and-busycontacts.md) * [BusyContacts (Setapp) on older macOS](/docs/faqs/busycontacts-setapp-old-macos-issues.md) --- # Calendar colors keep reverting (or change on other devices) Some calendar services (such as iCloud and Google) can **sync calendar colors** across devices. If you set a custom color in BusyCal but it later “snaps back” to another color, the server is likely sending the calendar’s color down during sync. ## Fix: Set a local color and ignore the synced color[​](#fix-set-a-local-color-and-ignore-the-synced-color "Direct link to Fix: Set a local color and ignore the synced color") 1. In BusyCal for Mac, **double-click** the calendar name in the left sidebar to open the **Calendar Info** dialog. 2. Enable **Ignore Calendar Color** (sometimes shown as **Ignore 'Calendar Colour'**). 3. Now set your preferred calendar color (Control-click the calendar name and pick a color). With “Ignore Calendar Color” enabled, BusyCal keeps your chosen color locally instead of letting the server override it. ## Related docs[​](#related-docs "Direct link to Related docs") * [Calendar List: Calendar Colors](/docs/busycal/70592-calendar-list.md#calendar-color) --- # Why does my calendar's name appear as a guest after I move a meeting? You accept a meeting invitation in a Google Calendar account, then change the event's calendar from the account's main calendar to another calendar in the same account. Afterwards the guest list shows an extra guest named after the calendar you moved the meeting to. If the calendar is called **Personal**, a guest called "Personal" appears, usually marked as accepted. This comes from Google's servers, not from BusyCal. ## Why the calendar becomes a guest[​](#why-the-calendar-becomes-a-guest "Direct link to Why the calendar becomes a guest") In Google's design, a meeting invitation belongs on the account's main calendar. The only way Google can show the same meeting on one of your other calendars is to invite that calendar to the meeting. So Google adds a guest whose address is the calendar's internal address (their addresses end in `@group.calendar.google.com`) and whose display name is the calendar's name. Google adds this guest on its own after the move. BusyCal uploads the moved meeting with only the organizer and you on the guest list, and Google's server returns it with the calendar-named guest already added. Google also has no true move for invitations. Its move feature is available only to the person who organized the meeting, so an invitation you received cannot change calendars the way a regular event does. ## This is not specific to BusyCal[​](#this-is-not-specific-to-busycal "Direct link to This is not specific to BusyCal") The same guest appears if you move the invitation in Apple Calendar or any other app that syncs with Google Calendar, and it is visible when you open the event on the Google Calendar website. ## Is anything wrong with the meeting?[​](#is-anything-wrong-with-the-meeting "Direct link to Is anything wrong with the meeting?") No. Your own response is intact and the organizer still sees the answer you sent. The extra guest is how Google records which calendar the meeting is on. warning Do not delete the calendar-named guest from the meeting. That guest entry is what keeps the meeting on that calendar, so removing it removes the event from the calendar. ## What to do instead[​](#what-to-do-instead "Direct link to What to do instead") Leave accepted invitations on the account's main calendar. To keep them organized in BusyCal, use **tags** or calendar colors rather than moving invitations between calendars. ## Google's documentation[​](#googles-documentation "Direct link to Google's documentation") * [Inviting attendees to events](https://developers.google.com/workspace/calendar/api/concepts/inviting-attendees-to-events) — shows that an invited calendar gets its own copy of the event, which is how a meeting can appear on more than one calendar. * [Moving an event to another calendar](https://developers.google.com/workspace/calendar/api/v3/reference/events/move) — Google's move operation is available only to the event's organizer. * [Transfer events to another calendar](https://support.google.com/calendar/answer/78739) — Google's help page on moving events between calendars. ## Related docs[​](#related-docs "Direct link to Related docs") * [A meeting invite disappears after I move it to another calendar](/docs/faqs/meeting-invite-disappears-after-moving.md) * [Troubleshooting Meeting Invitation Issues](/docs/faqs/meeting-invitation-faqs.md) * [Google Calendar Limitations with BusyCal](/docs/faqs/google-calendar-limitations.md) * [Meetings and Invitations](/docs/busycal/70615-meetings-and-invitations.md) --- # Calendar Selection Resets After Relaunch ## Smart Filters & Remembered Calendar Sets[​](#smart-filters--remembered-calendar-sets "Direct link to Smart Filters & Remembered Calendar Sets") You're likely using a Smart Filter with the **Remember Calendar Set** option enabled, which lets you quickly switch between different calendar sets. When this option is on, toggling a calendar on or off in the calendar source panel will display an asterisk next to the Smart Filter name in the toolbar, indicating unsaved changes. These changes are intentionally temporary, allowing you to adjust individual calendars within a remembered set without permanently modifying it. To make your changes permanent, you must manually save them. [Learn more here](/docs/busycal/70612-smart-filters.md). --- # How do I stop spam calendar invitations? If suspicious or unwanted events are appearing on your calendar, they are almost certainly **calendar spam** — unsolicited invitations sent by spammers or phishers. These invitations are delivered and added by your calendar server, not by BusyCal. ## Why BusyCal cannot filter these[​](#why-busycal-cannot-filter-these "Direct link to Why BusyCal cannot filter these") BusyCal syncs events from your calendar account exactly as the server provides them. It has no way to distinguish a legitimate meeting invitation from a spam one — that determination can only be made by the calendar service that receives and stores the event. This is the same for any third-party calendar app. The filtering and reporting must be done on the **server side**, through the web interface of your calendar provider. Do not attempt to accept, decline, or delete spam invitations from within BusyCal — instead, use the instructions below to report and remove them directly from your provider's web portal, where dedicated spam-reporting tools are available. Don't interact with spam invitations Never click links, call phone numbers, or tap **Accept** or **Decline** on a suspicious invitation — whether in BusyCal, Apple Calendar, or any other app. Responding in any way — even declining — confirms to the spammer that your email address is active and may lead to more spam. Always handle spam through your provider's web interface as described below. ## Google Calendar[​](#google "Direct link to Google Calendar") Google Calendar can automatically add invitations to your calendar the moment they arrive, even from unknown senders. This is the most common source of calendar spam. ### Prevent spam invitations[​](#prevent-spam-invitations "Direct link to Prevent spam invitations") 1. Open [calendar.google.com](https://calendar.google.com) in a web browser. 2. Click the **gear icon**, then choose **Settings**. 3. Under **General > Event settings**, find **"Add invitations to my calendar"**. 4. Change it from "From everyone" to one of: <!-- --> * **When I respond to the invitation in email** — events only appear after you explicitly respond via email. This is the most restrictive option. * **Only if the sender is known** — events are added automatically only from people in your contacts or who you've interacted with before. ### Report and remove spam[​](#report-and-remove-spam "Direct link to Report and remove spam") Spam events should be reported from **Google Calendar on the web** — not from BusyCal — so that Google can track and block the sender: 1. Go to [calendar.google.com](https://calendar.google.com) in a web browser. 2. Click on the spam event to open it. 3. Click the **three-dot menu** (More options). 4. Select **Report as spam**. This removes all events from that sender and helps Google improve its spam filtering. After reporting, the event will disappear from BusyCal on the next sync. note Only events that were sent through Google Calendar can be reported as spam using Google's reporting tool. Events created by another provider or app cannot be reported this way — simply delete them instead. ### Official Google support articles[​](#official-google-support-articles "Direct link to Official Google support articles") * [Report inappropriate calendar invitations & events](https://support.google.com/calendar/answer/13155911) — How to report spam on desktop, Android, and iOS * [Manage invitations in Calendar](https://support.google.com/calendar/answer/13159188) — Control how invitations are added to your calendar * [Block calendar spam on Android](https://support.google.com/calendar/answer/12790228) — Android-specific spam blocking *** ## iCloud[​](#icloud "Direct link to iCloud") iCloud calendar spam typically arrives as an invitation that shows up across all your Apple devices. ### Report and remove spam[​](#report-and-remove-spam-1 "Direct link to Report and remove spam") Do not decline or delete the event from BusyCal or Apple Calendar — instead, use **iCloud on the web** where Apple provides a dedicated "Report Junk" button: 1. Go to [icloud.com/calendar](https://www.icloud.com/calendar) and sign in with your Apple Account. 2. Click on the spam event to open it. 3. Click **Report Junk**, then confirm by clicking **Delete and Report Junk**. This removes the event from all devices synced with your iCloud account and reports it to Apple. After reporting, the event will disappear from BusyCal on the next sync. On **iPhone or iPad**, if you receive a calendar notification from an unknown sender, you can also tap **Report Junk** directly from the notification or from the event detail screen in the Calendar app. ### Check for subscribed spam calendars[​](#check-for-subscribed-spam-calendars "Direct link to Check for subscribed spam calendars") Sometimes spam arrives not as an invitation but as a **subscribed calendar** that was unknowingly added (often through a deceptive website prompt). To check: * **On iPhone/iPad**: Go to **Settings > Apps > Calendar > Accounts** (or **Settings > Calendar > Accounts** on older iOS). Look under **Subscribed Calendars** for any you don't recognize and delete them. * **On Mac**: Open **Calendar > Settings > Accounts** and look for unknown subscribed calendars. ### Official Apple support articles[​](#official-apple-support-articles "Direct link to Official Apple support articles") * [Delete spam calendars and events on iPhone](https://support.apple.com/en-us/102444) — How to report junk, delete spam events, and remove unwanted calendar subscriptions * [Recognize and avoid social engineering schemes](https://support.apple.com/en-us/102568) — Apple's general guide to phishing and scams *** ## Outlook / Microsoft 365[​](#outlook "Direct link to Outlook / Microsoft 365") ### Report and remove spam[​](#report-and-remove-spam-2 "Direct link to Report and remove spam") Handle spam events from **Outlook on the web** rather than from BusyCal: 1. Go to [outlook.live.com](https://outlook.live.com) (personal) or [outlook.office.com](https://outlook.office.com) (work/school) and sign in. 2. Open the **Calendar** view. 3. Right-click the spam event and choose **Report as Junk** or **Report as Phishing**. If you delete a spam event instead of reporting it, choose **Do not send a response** when prompted — this avoids confirming your email address to the spammer. note Older versions of classic Outlook for Windows may not show the Report button for calendar items. If you don't see it, update to the latest version or use Outlook on the web instead. ### Block specific senders[​](#block-specific-senders "Direct link to Block specific senders") 1. Open Outlook on the web. 2. Go to **Settings** (gear icon) > **Mail** > **Junk email**. 3. Under **Blocked senders and domains**, add the email address or domain that is sending the spam. ### Turn off automatic calendar processing (optional)[​](#turn-off-automatic-calendar-processing-optional "Direct link to Turn off automatic calendar processing (optional)") By default, Outlook automatically adds invitations to your calendar. You can change this: 1. Go to **Settings** > **Calendar**. 2. Look for options related to automatic meeting processing and adjust them to require manual acceptance. Note that disabling automatic processing means legitimate invitations will also need to be manually accepted. ### Official Microsoft support articles[​](#official-microsoft-support-articles "Direct link to Official Microsoft support articles") * [Filter junk email and spam in Outlook](https://support.microsoft.com/en-us/office/filter-junk-email-and-spam-in-outlook-on-the-web-db786e79-54e2-40cc-904f-d89d57b7f41d) — Managing junk mail and blocked senders * [Block senders or mark email as junk in Outlook](https://support.microsoft.com/en-us/office/block-senders-or-mark-email-as-junk-in-outlook-com-or-outlook-on-the-web-a3ece97b-82f8-4a5e-9ac3-e92fa6427ae4) — Blocking specific senders and domains *** ## Fastmail[​](#fastmail "Direct link to Fastmail") Fastmail uses CalDAV for calendar sync and does not have a dedicated calendar spam reporting tool. However, because Fastmail processes calendar invitations from incoming email, its **email spam filter** serves as the first line of defense. Manage these settings from the [Fastmail web interface](https://www.fastmail.com): ### Strengthen spam filtering[​](#strengthen-spam-filtering "Direct link to Strengthen spam filtering") 1. Sign in at [fastmail.com](https://www.fastmail.com). 2. Go to **Settings > Filters & Rules > Spam protection**. 3. Under **Protection level**, choose **Aggressive** or **Custom** to increase the spam score threshold. ### Block specific senders[​](#block-specific-senders-1 "Direct link to Block specific senders") 1. Go to **Settings > Filters & Rules > Blocked senders**. 2. Add the email address or domain sending the spam invitations. If a spam invitation has already been added to your calendar, delete the event from the Fastmail web calendar or from BusyCal — since Fastmail does not have a separate "Report Junk" flow for calendar events, simply deleting it is sufficient. ### Official Fastmail support articles[​](#official-fastmail-support-articles "Direct link to Official Fastmail support articles") * [Spam filtering](https://www.fastmail.help/hc/en-us/articles/360060591413-Spam-filtering) — How Fastmail's spam filter works * [Improving spam protection](https://www.fastmail.help/hc/en-us/articles/1500000278142-Improving-spam-protection) — Adjusting filter aggressiveness and blocked senders *** ## Other CalDAV Servers[​](#caldav "Direct link to Other CalDAV Servers") For self-hosted or other CalDAV servers (Synology, Radicale, Baïkal, etc.), calendar spam is uncommon because these servers typically don't process email-based invitations automatically. If you do receive spam, delete the event directly and check your email server's spam filtering to block the sender. *** ## General Tips[​](#tips "Direct link to General Tips") * **Never click links** in a suspicious calendar event — they may lead to phishing sites. * **Never respond** (Accept, Decline, or Maybe) to a spam invite — any response confirms your email is active. * **Report before deleting** when your calendar service offers a "Report Junk" or "Report as Spam" option. This helps the provider improve filtering for everyone. * **Check for rogue subscribed calendars** — some spam arrives through calendar subscriptions that were unknowingly added via deceptive website pop-ups, not through invitations. Look in your calendar account settings for unfamiliar subscribed calendars and remove them. * **Use a separate email** for public-facing sign-ups and forms to reduce the chance of your primary calendar-linked email being targeted. ## See Also[​](#see-also "Direct link to See Also") * [Troubleshooting Meeting Invitation Issues](/docs/faqs/meeting-invitation-faqs.md) — Common problems with legitimate meeting invitations * [How does BusyCal receive and show Inbox invitations?](/docs/faqs/144514-how-does-busycal-receive-and-show-inbox-invitations.md) — How BusyCal processes calendar invitations --- # Calendars are greyed out or context-menu options are disabled If a calendar in the left sidebar is **greyed out** and most right-click options are unavailable, it’s usually because that calendar is currently **unsubscribed** (or hidden via a view option). ## Fix: Re-subscribe to the calendar[​](#fix-re-subscribe-to-the-calendar "Direct link to Fix: Re-subscribe to the calendar") 1. In BusyCal for Mac, open the **View** menu. 2. Enable **Show Unsubscribed Calendars**. 3. In the Calendar List sidebar, find the greyed-out calendar and click the **faded checkbox** next to it. Once it’s re-enabled, BusyCal will subscribe to it again and the normal context-menu options (Get Info, Unsubscribe, etc.) return. ## Related docs[​](#related-docs "Direct link to Related docs") * [Calendar List: Re-Subscribing to a Calendar](/docs/busycal/70592-calendar-list.md#unsubscribe-calendar) * [Subscribing to Public Calendars (WebDAV subscriptions)](/docs/busycal/70601-subscribing-to-public-calendars.md) --- # Can I change the widget to always appear in light mode? No. BusyCal’s widgets follow your device’s **system appearance** (Light/Dark/Automatic). Even if you set BusyCal itself to Light Mode or Dark Mode, the widget will still match the system. If you want the widget to stay light, set your device appearance to **Light** in system settings (or adjust your system’s Automatic schedule). For changing the app’s own appearance, see [How do I change dark mode settings?](/docs/faqs/how-do-i-change-dark-mode-settings.md). --- # Day/Week View shows only working hours ## Why are some hours missing in Day or Week View?[​](#why-are-some-hours-missing-in-day-or-week-view "Direct link to Why are some hours missing in Day or Week View?") BusyCal can hide non-working hours to help you focus on your schedule. When **Working Hours** is enabled, Day and Week views collapse hours outside your **Day Start** and **Day End** settings. ## Fix: Show all hours again[​](#fix-show-all-hours-again "Direct link to Fix: Show all hours again") 1. In Day or Week View, click the **Working Hours** button in the toolbar (next to the date switcher) to toggle full-day hours. 2. If you still see a shortened range, go to **BusyCal > Settings > General** and adjust **Day Start** and **Day End**. 3. Option-scroll in Day or Week View to zoom the time ruler and show more hours. For more detail, see: * [Day View: Show Working Hours Only](/docs/busycal/70587-day-view.md#show-working-hours) * [Week View: Working Hours Toggle](/docs/busycal/70588-week-view.md#working-hours-toggle) * [General Settings](/docs/busycal/70607-preferences.md#general-preferences) --- # Daylight shading is missing in Week view BusyCal can show **daylight-hour shading** in Week view (based on sunrise/sunset). If it’s missing, the most common causes are: * You’re running an **older BusyCal build** that had a bug affecting the display, or * BusyCal doesn’t have enough location/weather data to calculate sunrise/sunset. ## Fix checklist[​](#fix-checklist "Direct link to Fix checklist") 1. Update BusyCal to the latest version available for your distribution (Direct/App Store/Setapp). 2. Make sure weather/location is configured: <!-- --> * In BusyCal, enable **Weather** (Settings > Weather) and choose **At current location** (or set a specific location). * In macOS System Settings, make sure BusyCal has permission for **Location Services** if you’re using current location. 3. Quit and relaunch BusyCal. If the feature worked before and suddenly stopped, an update is especially likely to resolve it. --- # How do I declutter Day & Week View? ## Quick ways to reduce clutter in Day & Week View[​](#quick-ways-to-reduce-clutter-in-day--week-view "Direct link to Quick ways to reduce clutter in Day & Week View") BusyCal includes several display options that make dense schedules easier to read. Try these settings: ### 1. Hide times for single-line events[​](#1-hide-times-for-single-line-events "Direct link to 1. Hide times for single-line events") 1. Go to **BusyCal > Settings > Appearance > Accessibility**. 2. Turn off **Show event times for single-line events in Day & Week views**. This leaves the event title visible while removing the time stamp on compact, single-line items. ### 2. Stack overlapping events vertically[​](#2-stack-overlapping-events-vertically "Direct link to 2. Stack overlapping events vertically") 1. Go to **BusyCal > Settings > Appearance**. 2. Enable **Disable overlapping layout**. Overlapping events will stack vertically instead of appearing side-by-side, which improves readability in busy hours. ### 3. Hide notes in Day & Week views[​](#3-hide-notes-in-day--week-views "Direct link to 3. Hide notes in Day & Week views") 1. Go to **BusyCal > Settings > Appearance**. 2. Turn off **Show Notes in Day and Week Views**. For more display options, see [Day View Appearance](/docs/busycal/70587-day-view.md#customizing-appearance) and [Week View Pro Tips](/docs/busycal/70588-week-view.md#week-view-pro-tips). --- # How do I disable “Suggestions” while typing? BusyCal can suggest existing events/tasks as templates while you type (in the Info Panel and in Day/Week/Month views). If you prefer a cleaner editing experience, you can turn Suggestions off per view. ## Disable Suggestions[​](#disable-suggestions "Direct link to Disable Suggestions") 1. Open **BusyCal > Settings**. 2. Open **Suggestions**. 3. Turn off Suggestions for the places you don’t want them (for example: **Info Panel**, **Day View**, **Week View**, **Month View**). ## Related docs[​](#related-docs "Direct link to Related docs") * [Suggestions as Templates](/docs/busycal/event-suggestions.md) --- # Does BusyCal support Calendly? BusyCal does not have a direct integration with Calendly. However, any bookings or meetings scheduled through Calendly will automatically appear in BusyCal. This is because Calendly adds events to your underlying calendar account (such as Google Calendar, iCloud, or Office 365). As long as that account has been added to BusyCal, events created by Calendly will be pulled in during sync and appear alongside your other events. ## How to ensure Calendly events appear in BusyCal[​](#how-to-ensure-calendly-events-appear-in-busycal "Direct link to How to ensure Calendly events appear in BusyCal") 1. Make sure the calendar account that Calendly writes to (e.g., Google, iCloud, Office 365) is added in BusyCal. See the relevant setup guide: <!-- --> * [Using BusyCal with Google](/docs/busycal/70636-using-busycal-with-google.md) * [Using BusyCal with iCloud](/docs/busycal/70630-using-busycal-with-icloud.md) * [Using BusyCal with Exchange / Office 365](/docs/busycal/70642-using-busycal-with-exchange-office-365.md) 2. Verify that the specific calendar Calendly is configured to use is enabled (not hidden) in BusyCal's calendar list. 3. Events created through Calendly will appear after the next sync cycle. ## BusyCal's own booking pages[​](#busycal-bookings "Direct link to BusyCal's own booking pages") BusyCal for Mac includes BusyCal Bookings, its own way to let people book time with you. You share a link to a booking page, people choose a time when you're free, and BusyCal adds each booking to your calendar. See [BusyCal Bookings](/docs/bookings.md). --- # Google Sync Error 403: Rate Limit Exceeded If you receive a **403 Forbidden** or **Rate Limit Exceeded** error when syncing with Google Calendar, it means Google has temporarily blocked access to your account due to excessive server requests. ## What Causes This?[​](#what-causes-this "Direct link to What Causes This?") Google imposes strict quotas on how many times an application can connect to their servers within a specific timeframe. This can happen if: * You have a very large number of events or calendars. * You are syncing the same Google account on multiple devices simultaneously. * You have triggered a "Sync" or "Refresh" manually too many times in a short period. * Third-party plugins or scripts are interacting with your calendar excessively. ## How to Fix It[​](#how-to-fix-it "Direct link to How to Fix It") ### 1. Wait it out (Most Important)[​](#1-wait-it-out-most-important "Direct link to 1. Wait it out (Most Important)") The block is temporary and controlled entirely by Google. In most cases, it will reset automatically after **4 to 24 hours**. **Do not** remove and re-add your account, as this will trigger a full re-sync and likely prolong the block. ### 2. Reduce Sync Frequency[​](#2-reduce-sync-frequency "Direct link to 2. Reduce Sync Frequency") To prevent this from happening again, reduce how often BusyCal checks for changes: 1. Go to **BusyCal > Settings > Accounts**. 2. Select your Google account. 3. Change the **Refresh interval** to a longer duration (e.g., every 15 or 30 minutes, or "Manual"). 4. If "Push" is enabled, try disabling it temporarily if you experience frequent rate limits. ### 3. Check Other Devices[​](#3-check-other-devices "Direct link to 3. Check Other Devices") If you have BusyCal (or other calendar apps) running on multiple Macs, iPads, or iPhones, ensure they aren't all trying to sync a massive amount of data at once. ### 4. Optimize Your Calendars[​](#4-optimize-your-calendars "Direct link to 4. Optimize Your Calendars") If you subscribe to many heavy public calendars (like "Phases of the Moon" or complex holiday calendars) via Google, consider unsubscribing from ones you don't need, as they contribute to your API usage quota. --- # Google Birthdays in Primary Calendar or Birthdays Calendar Missing Google has changed how birthdays are exposed in Google Calendar, and in some cases birthdays can appear inside your **Primary** calendar instead of a separate “Birthdays” calendar. BusyCal includes a fix/workaround for this scenario. ## Fix[​](#fix "Direct link to Fix") Follow the steps in the BusyCal Birthdays guide: * [Birthdays and Anniversaries (BusyCal for Mac): Google Calendar birthdays change + fix](/docs/busycal/70599-birthdays-and-anniversaries.md#how-to-fix-google-calendar-birthdays-showing-in-primary-calendar) --- # Why does Google Calendar keep adding alarms to my events? If alarms keep appearing on your events — even after you've turned off default alarms in both BusyCal and Apple Calendar — the most likely cause is **Google Calendar's own per-calendar default notification setting**. Google applies these notifications on the server side, so every time an event is created or modified, Google silently attaches its default alarm. BusyCal then syncs the event back and picks up the alarm that Google added. ## How to fix it[​](#how-to-fix-it "Direct link to How to fix it") Remove the default notification in Google Calendar's web settings: 1. Open [calendar.google.com](https://calendar.google.com) in a web browser. 2. Click the **gear icon** in the top-right corner, then choose **Settings**. 3. In the left sidebar under **Settings for my calendars**, select the calendar that has the unwanted alarms (e.g. "Health", "Work", etc.). 4. Scroll to the **Event notifications** section and click the **X** next to any default notification listed there to remove it. 5. If there is also an **All-day event notifications** section with a default, remove that as well. 6. Repeat for any other Google calendars that are affected. tip After removing the Google-side defaults, you may also want to open one of the affected events in Google Calendar on the web, remove the alarm from that specific event, and save it. This clears the alarm that was already written to the event. ## Why this happens[​](#why-this-happens "Direct link to Why this happens") Google Calendar allows each calendar to have its own default notification (for example, "30 minutes before"). This is a Google server-side setting that lives outside of BusyCal and Apple Calendar. When an event is created or changed — whether from BusyCal, Apple Calendar, or any other app — Google's server automatically stamps the default notification onto the event. The next time BusyCal syncs, it sees the alarm that Google added and displays it. Because this is a server-side behavior, turning off default alarms in BusyCal or Apple Calendar alone will not prevent it. The setting must be changed in Google Calendar's web interface. ## Checklist[​](#checklist "Direct link to Checklist") If you're still seeing unwanted alarms after following the steps above, verify the following: * **BusyCal default alarms** are off: Go to **BusyCal > Settings > Alarms** and make sure the "Add a default alarm to new timed Events" and "Add a default alarm to new all-day Events" checkboxes are unchecked (or set to the values you actually want). * **Apple Calendar default alarms** are off: Open **Calendar > Settings > Alerts** (macOS) or **Settings > Apps > Calendar > Default Alert Times** (iOS) and set all alert times to **None**. * **Google Calendar default notifications** are removed per-calendar as described above. ## See Also[​](#see-also "Direct link to See Also") * [Alarms](/docs/busycal/70604-alarms.md) — Full guide to BusyCal's alarm features and settings * [How can I avoid duplicate alarms from being displayed?](/docs/faqs/71172-how-can-i-avoid-duplicate-alarms-from-being-displayed.md) — Preventing double alarms from macOS Calendar * [Alarm field in Meeting Events syncing with Google is disabled](/docs/faqs/115308-alarm-field-in-meeting-events-syncing-with-google-is-disabled.md) — Why alarms on Google meeting invitations are read-only * [Google Calendar Limitations](/docs/faqs/google-calendar-limitations.md) — Other known limitations when syncing with Google --- # Google Calendar Limitations with BusyCal Google Calendar has several limitations that affect how BusyCal can sync and display certain features. These limitations are imposed by Google's API and are not specific to BusyCal. For complete details about Google Calendar integration, see [Using BusyCal with Google](/docs/busycal/70636-using-busycal-with-google.md). ## Why don't my Google Tasks show due times in BusyCal?[​](#why-dont-my-google-tasks-show-due-times-in-busycal "Direct link to Why don't my Google Tasks show due times in BusyCal?") Google lets BusyCal sync a task's due date, but not its due time. A time set in Google Tasks cannot sync into BusyCal, and a time set in BusyCal cannot sync back as a Google Tasks due time. This restriction applies to tasks; Google Calendar events can sync their start and end times. **Workaround:** BusyCal's [Extended Sync](/docs/busycal/144591-syncing-extended-task-properties.md) feature allows due times to sync between BusyCal clients on your devices, but these extended properties won't appear in Google Calendar itself. ## Why can't I set recurring Google Tasks in BusyCal?[​](#why-cant-i-set-recurring-google-tasks-in-busycal "Direct link to Why can't I set recurring Google Tasks in BusyCal?") Google's Task API does not support task recurrence patterns. This means you cannot create repeating tasks that will sync to Google Calendar, even though BusyCal supports this feature for other calendar services. **Alternative:** Create recurring events instead of tasks, or use BusyCal's local task management features. ## Why don't my Google Task priorities sync?[​](#why-dont-my-google-task-priorities-sync "Direct link to Why don't my Google Task priorities sync?") Google Tasks do not support priority levels through their API. Only the following task properties sync with Google Calendar: * **Title** * **Due date** (date only, not time) * **Notes** Priority levels, alarms, and other extended properties are not supported by Google's API. ## Why don't Google Task alarms sync?[​](#why-cant-i-add-alarms-to-google-tasks "Direct link to Why don't Google Task alarms sync?") You can set alarms for Google Tasks in BusyCal, but Google does not let other apps read or write its task alarms. A reminder set in Google's apps will not sync to BusyCal, and an alarm set in BusyCal will not appear in Google's apps. Google Calendar's **Event notifications** and **All-day event notifications** apply to calendar events, not Google Tasks. Changing those settings does not add alarms to tasks. On the Mac, BusyCal has separate [default alarm settings](/docs/busycal/70604-alarms.md#setting-default-alarm-and-snooze-intervals) for timed events, all-day events, timed tasks and dated tasks. These defaults apply to new items created in BusyCal, not to every task arriving from Google. **Alternative:** Convert important tasks to events, which do support alarms when syncing with Google Calendar. ## Why don't sound alarms work with Google Calendar?[​](#why-dont-sound-alarms-work-with-google-calendar "Direct link to Why don't sound alarms work with Google Calendar?") Google Calendar replaces sound alarms with message-only alarms when syncing with third-party applications. This is a limitation of Google's CalDAV implementation. **Note:** Email alarms are delivered by Google directly, not by BusyCal, to prevent duplicate notifications. **Related:** See [Alarm field in Meeting Events syncing with Google is disabled](/docs/faqs/115308-alarm-field-in-meeting-events-syncing-with-google-is-disabled.md) for information about meeting-specific alarm limitations. ## Why can't I attach files to Google Calendar events?[​](#why-cant-i-attach-files-to-google-calendar-events "Direct link to Why can't I attach files to Google Calendar events?") Google Calendar does not support file attachments through CalDAV sync. This means you cannot add attachments to events that will sync to Google Calendar. **Alternative:** Include links to cloud-stored files in the event notes field. ## Why don't my event graphics appear in Google Calendar?[​](#why-dont-my-event-graphics-appear-in-google-calendar "Direct link to Why don't my event graphics appear in Google Calendar?") Google Calendar does not support custom graphics or visual attachments. Graphics added in BusyCal will sync between BusyCal clients but will not appear when viewing the calendar in Google Calendar's web interface. ## Why is the URL field hidden for Google Calendar events?[​](#why-is-the-url-field-hidden-for-google-calendar-events "Direct link to Why is the URL field hidden for Google Calendar events?") Google Calendar does not sync URL fields through CalDAV, so BusyCal hides this field to avoid confusion when working with Google Calendar events. **Alternative:** Include URLs in the event notes field. ## Why can't I create separate start/end timezones for Google Calendar events?[​](#why-cant-i-create-separate-startend-timezones-for-google-calendar-events "Direct link to Why can't I create separate start/end timezones for Google Calendar events?") Google Calendar's CalDAV implementation does not support separate timezones for event start and end times when created through third-party applications. **Workaround:** Use Google Calendar's web interface to manually set separate timezones for specific events. **Related:** See [End Timezone is ignored when creating events in a Google Calendar account](/docs/faqs/115393-end-timezone-is-ignored-when-creating-events-in-a-google-calendar-account.md) for detailed steps. ## Why don't my Journals and Stickies appear in Google Calendar?[​](#why-dont-my-journals-and-stickies-appear-in-google-calendar "Direct link to Why don't my Journals and Stickies appear in Google Calendar?") Google Calendar does not have equivalent event types for BusyCal's Journals and Stickies. These items sync between BusyCal clients through Google's servers but do not appear in Google Calendar's web interface. ## Why can't I create new calendars from BusyCal when using Google?[​](#why-cant-i-create-new-calendars-from-busycal-when-using-google "Direct link to Why can't I create new calendars from BusyCal when using Google?") Google Calendar requires new calendars to be created through their web interface. BusyCal can only subscribe to and sync with existing Google Calendar calendars. **Solution:** Create new calendars at [calendar.google.com](https://calendar.google.com), then refresh your calendar list in BusyCal to see and subscribe to the new calendar. ## Why do floating-time events appear hours early or late in Google Calendar?[​](#floating-time-events "Direct link to Why do floating-time events appear hours early or late in Google Calendar?") Google Calendar does not support Floating Time events. A Floating Time event is designed to stay at the same local clock time wherever you are, so it does not have a fixed time zone. The event may look correct in BusyCal but appear several hours early or late when Google Calendar receives it. This can affect calendars hosted on Google as well as calendars added to Google by subscription. To prevent this for new events on Mac: 1. Open **BusyCal > Settings > Time Zones**. 2. Turn off **Use Floating Time for New Events**. On iPhone or iPad, open **BusyCal > Settings > New Event Defaults** and turn off **Use Floating Time for New Events**. Changing this setting affects only new events. To correct an existing event: * On Mac, control-click the event and choose **Move To Time Zone**, then select the correct time zone. * On iPhone or iPad, edit the event and assign the correct **Start Time Zone**. If this field is hidden, turn on **Settings > View Preferences > Event Details > Show Start Time Zone** first. For more detail, see [Time Zones in BusyCal for Mac](/docs/busycal/70609-time-zones.md#option-3) or [Date and Time Options in BusyCal for iOS](/docs/busycalios/70671-date-and-time-options.md#ios-option-3). If an event already has a fixed time zone but still appears at the wrong time, check [Google Calendar's time zone settings](/docs/busycal/70609-time-zones.md#google-calendar-time-zones). ## Why can't I add meeting invitations to secondary Google calendars?[​](#why-cant-i-add-meeting-invitations-to-secondary-google-calendars "Direct link to Why can't I add meeting invitations to secondary Google calendars?") Google Calendar has restrictions on meeting invitations for secondary calendars: * Meeting invitations are only properly processed on your primary Google calendar * Attendees cannot add meeting invitations to secondary Google calendars * Meeting invitations created on secondary calendars may not be delivered to attendees **Best Practice:** Always create meetings with attendees on your primary Google calendar for reliable invitation delivery and response handling. ## Additional Resources[​](#additional-resources "Direct link to Additional Resources") * [Why does Google Calendar keep adding alarms to my events?](/docs/faqs/google-calendar-adding-unwanted-default-alarms.md) - Unwanted alarms from Google's per-calendar default notifications * [Does BusyCal support Push sync for Google Calendar?](/docs/faqs/130875-does-busycal-support-push-sync-for-google-calendar.md) - Push notification setup * [Unable to connect my Google account](/docs/faqs/137727-unable-to-connect-my-google-account.md) - Troubleshooting connection issues * [Google Calendar showing Birthdays in main calendar](/docs/faqs/144716-google-calendar-showing-birthdays-in-main-calendar.md) - Known Google Calendar bug * [How do I add Google resources as locations in BusyCal?](/docs/faqs/98771-how-do-i-add-google-resources-as-locations-in-busycal.md) - Meeting rooms and resource booking * [Does BusyCal support Google Hangouts?](/docs/faqs/71188-does-busycal-support-google-hangouts.md) - Video call support * [Google Hangouts video call links appear in notes field](/docs/faqs/94535-google-hangouts-video-call-links-appear-in-notes-field.md) - Hangouts integration details *** *These limitations are imposed by Google's API and CalDAV implementation, not by BusyCal. For the most up-to-date information about Google Calendar's API capabilities, refer to Google's official documentation.* --- # How do I fix Google Calendar sync issues with BusyCal? In case you're experiencing issues with Google Calendar not syncing with BusyCal, we have dedicated troubleshooting steps for both BusyCal Mac and BusyCal iOS. ### For BusyCal Mac Users[​](#for-busycal-mac-users "Direct link to For BusyCal Mac Users") If you're using BusyCal on macOS and experiencing Google Calendar sync issues, follow [this troubleshooting guide](/docs/busycal/70636-using-busycal-with-google.md#troubleshooting). ### For BusyCal iOS Users[​](#for-busycal-ios-users "Direct link to For BusyCal iOS Users") If you're using BusyCal on iPhone or iPad and having Google sync problems, check our [iOS-specific troubleshooting](/docs/busycalios/70676-using-busycal-with-google.md#troubleshooting). ## Quick Fixes to Try First[​](#quick-fixes-to-try-first "Direct link to Quick Fixes to Try First") ### 1. Check Your System Time[​](#1-check-your-system-time "Direct link to 1. Check Your System Time") **Most important step:** Google Calendar authentication requires accurate system time. **Mac:** System Settings > General > Date & Time > Enable "Set time and date automatically" **iOS:** Settings > General > Date & Time > Enable "Set Automatically" ### 2. Verify All Permissions Were Granted[​](#2-verify-all-permissions-were-granted "Direct link to 2. Verify All Permissions Were Granted") When connecting to Google Calendar, you **must** select "Select all" permissions. Missing any permission will cause sync failures. ### 3. Remove and Re-add Your Google Account[​](#3-remove-and-re-add-your-google-account "Direct link to 3. Remove and Re-add Your Google Account") Often the fastest solution for persistent sync issues: **Mac:** BusyCal > Settings > Accounts > Select Google account > Click \[-] button > Re-add with \[+] button **iOS:** Settings > Accounts > Tap Google account > Delete Account > Add Account > Google ## When to Contact Support[​](#when-to-contact-support "Direct link to When to Contact Support") If the troubleshooting guides don't resolve your issue, you may need additional assistance. Feel free to [contact us](/docs.md) at any time. We would most likely need to see application logs, which you can send via [the main help page](/docs.md). ## Additional Resources[​](#additional-resources "Direct link to Additional Resources") ### Setup Guides[​](#setup-guides "Direct link to Setup Guides") * **[Initial Google Calendar Setup (Mac)](/docs/busycal/70636-using-busycal-with-google.md#syncing)** * **[Initial Google Calendar Setup (iOS)](/docs/busycalios/70676-using-busycal-with-google.md#ios-syncing-with-google-calendar)** ### Google Calendar Features[​](#google-calendar-features "Direct link to Google Calendar Features") * **[Google Calendar Limitations](/docs/busycal/70636-using-busycal-with-google.md#limitations)** * **[Sharing Google Calendars](/docs/busycal/70636-using-busycal-with-google.md#sharing)** * **[Google Meets Integration](/docs/busycal/70636-using-busycal-with-google.md#googlemeets)** ### Meeting Invitation Related Issues[​](#meeting-invitation-related-issues "Direct link to Meeting Invitation Related Issues") * **[Meeting Invitation Problems](/docs/faqs/meeting-invitation-faqs.md)** --- # Google Tasks sync fails with “Insert failed with no result” If BusyCal is syncing tasks to Google and you see errors like **“Insert failed with no result”** or **“Calendar fetch failed for remote ID … (My Tasks)”**, one specific task can sometimes be causing the sync to fail. ## Fix: Find the offending task and simplify its notes[​](#fix-find-the-offending-task-and-simplify-its-notes "Direct link to Fix: Find the offending task and simplify its notes") 1. Identify the task name from your logs (look for the task title near the “Insert failed” lines). 2. In BusyCal, locate that task and open it. 3. Temporarily **remove the notes** (or reduce them to a short plain-text line). 4. Sync again. If syncing succeeds after removing the notes, paste the notes back in gradually (or paste via a plain-text editor). If you find that one specific line/character consistently triggers the server error, cleaning that text usually resolves the issue. ## Related docs[​](#related-docs "Direct link to Related docs") * [Using BusyCal with Google](/docs/busycal/70636-using-busycal-with-google.md) --- # Google Workspace “Space” / assigned tasks don’t sync If you use Google Workspace and see tasks that were assigned via “Spaces” (or assigned by other members) in Google’s own UI, but they don’t appear in BusyCal, it can be due to a limitation in what Google exposes to third-party apps through their Tasks APIs. ## What you can do[​](#what-you-can-do "Direct link to What you can do") * Confirm that the tasks appear in Google’s own Tasks/Calendar UI first. * If the tasks only exist in “Spaces” (or as assigned tasks) and don’t sync to BusyCal, you may need to manage those items in Google’s web app until Google exposes them through the same APIs used by third-party clients. ## Related docs[​](#related-docs "Direct link to Related docs") * [Using BusyCal with Google](/docs/busycal/70636-using-busycal-with-google.md) --- # How can I hide meeting invitations from one calendar? Yes. BusyCal controls meeting notifications for each calendar, so you can see events from all your accounts in one calendar view while choosing which calendars contribute invitations to the BusyCal Inbox. For example, you can keep a work Microsoft 365 calendar visible in BusyCal but handle its invitations in Outlook. ## BusyCal for Mac[​](#busycal-for-mac "Direct link to BusyCal for Mac") 1. Find the calendar in the Calendar List on the left side of the BusyCal window. 2. Double-click the calendar's name, or Control-click it and choose **Get Info**. 3. Turn off **Show meeting notifications in Inbox**. 4. Click **OK**. The setting applies to each calendar, not the whole account. If the account contains several calendars, repeat these steps for every calendar whose invitations you want to exclude. ## BusyCal for iPhone and iPad[​](#busycal-for-iphone-and-ipad "Direct link to BusyCal for iPhone and iPad") 1. Open **Settings > Accounts** in BusyCal. 2. Select the calendar account. 3. Tap **Calendars**. 4. Tap the info button next to the calendar. 5. Under Notifications, turn off **Notify Of Meetings**. Repeat these steps for each calendar you want to exclude. ## What This Setting Changes[​](#what-this-setting-changes "Direct link to What This Setting Changes") BusyCal continues to sync and display events from the calendar. It stops showing the calendar's meeting invitations and related meeting notices in the BusyCal Inbox or as invitation notifications. Turning off meeting notifications does not accept, decline, or delete an invitation from the calendar server. The invitation remains available through the calendar provider and other calendar clients, such as Outlook. **Show change notifications in Inbox** on Mac, or **Notify Of Changes** on iPhone and iPad, is a separate setting. Turn it off as well only if you do not want notices when other people add or change non-meeting events on that calendar. ## Related Documentation[​](#related-documentation "Direct link to Related Documentation") * [Receiving and Responding to Meeting Invitations](/docs/busycal/70615-meetings-and-invitations.md#receiving-meeting-invitations) * [Calendar Info Settings](/docs/busycal/70592-calendar-list.md#calendar-info) * [Using BusyCal with Office 365 (Microsoft Graph)](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) * [Using BusyCal with Exchange and Office 365](/docs/busycal/70642-using-busycal-with-exchange-office-365.md) --- # How do I change dark mode and appearance settings? You can easily change the appearance settings in BusyCal and BusyContacts to match your preference or system settings. ## How to Change Appearance Settings[​](#how-to-change-appearance-settings "Direct link to How to Change Appearance Settings") Go to **View Menu > Appearance** in the top macOS menu bar and choose from these options: * **Dark Mode** - Uses dark colors with white text * **Light Mode** - Uses light colors with dark text * **Automatic** - Follows your macOS system appearance settings ## Automatic Mode[​](#automatic-mode "Direct link to Automatic Mode") When set to **Automatic**, the app will: * Switch to light mode (white background) during the day * Switch to dark mode (dark background) at night * Follow your macOS system appearance preferences * Change automatically when you adjust your system settings The appearance setting applies to both the main interface and all windows in BusyCal and BusyContacts. --- # How do I fix "locked files" error when installing from DMG? ## What is the "locked files" error?[​](#what-is-the-locked-files-error "Direct link to What is the \"locked files\" error?") When installing BusyCal or BusyContacts from a DMG file, you might encounter a "locked files" error from macOS Finder when trying to drag the app to your Applications folder. This is a known issue in macOS 15.x Finder that can prevent successful installation. ## How do I fix this error?[​](#how-do-i-fix-this-error "Direct link to How do I fix this error?") **Step 1: Remove the existing app** 1. Open Finder and navigate to your Applications folder 2. If BusyCal or BusyContacts is already installed, delete the existing app by moving it to Trash 3. Empty the Trash to completely remove the old version note Deleting the application will **not** delete your calendar data or preferences - that will remain untouched. Just make sure you don't use a 3rd party *Uninstaller* / *Clean-up* app, which may result in a complete uninstall of your data as well. **Step 2: Install from the DMG** 1. Download the latest version from [BusyCal](/busycal) or [BusyContacts](/busycontacts.md) 2. Double-click the downloaded DMG file to mount it 3. Drag the app icon from the opened DMG window directly to your Applications folder 4. The installation should now complete without the "locked files" error ## Why does this happen?[​](#why-does-this-happen "Direct link to Why does this happen?") This error occurs because you may have at some point downloaded the app from the App Store in the past. macOS will automatically download and install the App Store receipt but set restrictive permissions on it such that the app's bundle can no longer be modified. This issue affects the DMG installation method and does not occur with the PKG installer versions of BusyCal and BusyContacts, as with the latter, the installer takes care of deleting the bundles before replacing them. --- # Managing Recurring Tasks BusyCal offers flexible options for how recurring tasks are handled when you mark them as complete. Understanding these "regeneration styles" ensures your tasks behave exactly as you expect. ## The Two Styles: "Pay Rent" vs. "Take Out Trash"[​](#the-two-styles-pay-rent-vs-take-out-trash "Direct link to The Two Styles: \"Pay Rent\" vs. \"Take Out Trash\"") Unlike calendar events which repeat on fixed dates regardless of when you attend them, tasks often need to react to when you actually *do* them. BusyCal provides two main logic styles for this: ### 1. Pay Rent (Fixed Schedule)[​](#1-pay-rent-fixed-schedule "Direct link to 1. Pay Rent (Fixed Schedule)") **Best for:** Bills, subscriptions, medication, and strict deadlines. In this style, the task repeats strictly based on the **original due date**, regardless of when you complete it. * **Scenario:** You have a task "Pay Rent" due on the **1st** of every month. * **Action:** You pay it late on the **5th** and mark it complete. * **Result:** The next task is created for the **1st of the next month**. * **Why:** Even though you paid late, the next due date shouldn't shift. The schedule is fixed. **If you skip a month:** If you have a daily task and miss 3 days, marking the oldest one complete will generate the *next* overdue one (for yesterday), not one for tomorrow. You have to "catch up" on all missed occurrences. ### 2. Take Out Trash (Flexible Schedule)[​](#2-take-out-trash-flexible-schedule "Direct link to 2. Take Out Trash (Flexible Schedule)") **Best for:** Chores, maintenance, and habits. In this style, the task repeats based on the **completion date** or ignores missed occurrences to keep you moving forward. * **Scenario:** You have a task "Take out trash" due **every Monday**. * **Action:** You forget and take it out on **Wednesday**, then mark it complete. * **Result:** BusyCal calculates the next due date based on your settings—typically skipping the missed Monday and scheduling for the **next coming Monday**. * **Why:** You don't need to take the trash out again immediately just because you were late. You just want to catch the next cycle. ## Configuring Regeneration Style[​](#configuring-regeneration-style "Direct link to Configuring Regeneration Style") You can set a global default or configure this per task (where supported). ### Global Setting[​](#global-setting "Direct link to Global Setting") 1. Go to **BusyCal > Settings > Tasks**. 2. Look for **Default regeneration style**. 3. Choose between: <!-- --> * **Take out trash** (Default): Skips overdue occurrences and schedules forward. * **Pay rent**: Strict adherence to due dates; generates all missed past occurrences. * **Completion date**: Schedules the next occurrence relative to *today* (e.g., "3 days after completion"). ### What if I want "Completion Date" style?[​](#what-if-i-want-completion-date-style "Direct link to What if I want \"Completion Date\" style?") If you want a task to repeat "3 days after I actually do it" (e.g., watering plants): 1. Select the Task. 2. In the Info Panel, set the Repeat option. 3. Choose **Custom...**. 4. Change "Frequency" to **After Completion**. This ensures the next due date is calculated from the moment you check the box, not the original due date. --- # How can I share minimal set of logs ## Understanding and Sharing Logs for Troubleshooting[​](#logs "Direct link to Understanding and Sharing Logs for Troubleshooting") Our apps automatically **roll over logs every few days**, capturing only essential raw network data and UI interactions. These logs help us diagnose errors, usability issues, and service compatibility problems when you reach out for support. Because logs may include event details necessary for troubleshooting, we handle them with strict security measures and discard them once your issue is resolved. However, if you have privacy concerns or organizational requirements (such as **HIPAA compliance**), you may prefer to share a **minimal** set of logs instead. important The information in the logs is kept confidential, used **exclusively for troubleshooting**, and is deleted after the issue is resolved. Please consult our [privacy policy](/privacy.md) to learn how [we deal with your logs](/privacy.md#application-logs). ### When Should You Share Minimal Logs?[​](#when-should-you-share-minimal-logs "Direct link to When Should You Share Minimal Logs?") This method is only useful if you can **reliably reproduce the issue**. If the problem occurred in the past and cannot be reproduced, we would need previously recorded logs, and the steps below will not be helpful. Instead, please consider [the manual approach](#manualreview). ### How to Share Minimal Logs[​](#shareminimal "Direct link to How to Share Minimal Logs") If you can consistently reproduce the issue, follow these steps to generate a minimal log file: 1. Open the app and go to **Help Menu > Show Logs**. 2. Quit the app. 3. Open the **Logs** folder and delete all files. 4. Relaunch the app and **reproduce the issue**. 5. The new log files will now contain only the relevant data since the app was restarted. 6. Retain the **database-info.txt** file, which contains a basic outline of your account and settings (without personal data). When you're ready, please select all the files you wish to share, `control-click` and select **Compress** to create a zip file. Send this file to <support@busymac.com> ### How to Manually Review and Reduce Logs[​](#manualreview "Direct link to How to Manually Review and Reduce Logs") If reproducing the issue is difficult and you want to investigate further before sharing logs: 1. Open the **Logs** folder as described above. 2. **Sort files by name** in Finder. 3. Each log file is numbered and has a last modified date (ensure the "Date Modified" column is visible in Finder). 4. **Delete older logs**, keeping only the most recent one or two (e.g., Today/Yesterday). 5. Retain the **database-info.txt** file, which contains a basic outline of your account and settings (without personal data). By following these steps, you can **minimize** the amount of data shared while still providing enough information for us to diagnose and resolve your issue. When you're ready, please select all the files you wish to share, `control-click` and select **Compress** to create a zip file. Send this file to <support@busymac.com> tip Another, though more time-consuming, way to protect your privacy is to manually review the logs before sharing them and redact any sensitive information you find. ### Can the App Not Auto-Redact Private Information?[​](#can-the-app-not-auto-redact-private-information "Direct link to Can the App Not Auto-Redact Private Information?") Unfortunately, there is no way to automatically redact or store redacted information in the logs, as the app cannot determine what qualifies as *private* information. In many cases, diagnosing errors or sync-related issues requires matching exact event titles and unique identifiers. ## Self-Troubleshooting[​](#self-troubleshooting "Direct link to Self-Troubleshooting") If you prefer not to share any logs at all and feel equipped to self-diagnose service connectivity issues—such as troubleshooting a CalDAV server you've set up—you may be able to **identify underlying errors** by reviewing the app's logs manually without external help. To inspect logs for errors: 1. Open the app and go to **Help Menu > Show Logs**. 2. **Sort files by name** in Finder. 3. Each log file is numbered and has a last modified date (ensure the "Date Modified" column is visible in Finder). 4. Open the latest `.log` file (e.g., `log-XXXXXX.log`) in a text editor. 5. Look for **errors or warnings**. Errors in the log files are typically marked with `-0-` after a timestamp. By analyzing these logs, you may be able to **pinpoint specific errors** and resolve issues without needing to share logs with us. ## Why Logs Matter[​](#logs-matter "Direct link to Why Logs Matter") Although our apps are built with years of exception and edge-case handling, device operating systems and third-party cloud services are constantly evolving. Changes in APIs, server configurations, authentication methods, and system policies can sometimes cause unexpected behavior. Diagnostic logs are the most effective tool we have for identifying, troubleshooting, and resolving such issues in a timely fashion. --- # How do I delete (not just hide) a subscribed calendar? If you subscribed to a public calendar (for example a holiday feed) and want to remove it completely, you need to **unsubscribe** from the calendar. ## Unsubscribe (remove it completely)[​](#unsubscribe-remove-it-completely "Direct link to Unsubscribe (remove it completely)") 1. In BusyCal for Mac, find the calendar in the left sidebar. 2. **Double-click** the calendar name to open the **Calendar Info** dialog. 3. Click **Unsubscribe**. ## Related docs[​](#related-docs "Direct link to Related docs") * [Subscribing to Public Calendars: Unsubscribing a Calendar](/docs/busycal/70601-subscribing-to-public-calendars.md#unsubscribing-a-calendar) * [Calendar List: Permanently Hide or Unsubscribe](/docs/busycal/70592-calendar-list.md#permanently-hide-calendars) --- # iCloud Login Errors (-1012 and others) If you are seeing error **-1012**, **Authentication Failed**, or **Password Rejected** when trying to sync with iCloud, it is almost always because **your main Apple ID password cannot be used directly**. ## The Solution: App-Specific Passwords[​](#the-solution-app-specific-passwords "Direct link to The Solution: App-Specific Passwords") Apple mandates that all third-party apps (like BusyCal) use a generated **App-Specific Password** instead of your regular iCloud password. ### Why did it stop working?[​](#why-did-it-stop-working "Direct link to Why did it stop working?") Even if it worked before, your app-specific password may have been revoked if: * You changed your primary Apple ID password. * Apple updated security protocols on your account. * It has been a long time since you last logged in. ### How to Fix It[​](#how-to-fix-it "Direct link to How to Fix It") 1. **Do NOT** enter your standard Apple ID password. It will fail. 2. Go to **[appleid.apple.com](https://appleid.apple.com)** and sign in. 3. Look for the **App-Specific Passwords** section (usually under "Sign-In and Security"). 4. Click **Generate an app-specific password**. 5. Give it a name (e.g., "BusyCal"). 6. **Copy** the code it gives you (it looks like `abcd-efgh-ijkl-mnop`). 7. In BusyCal, when prompted for the password (or in **Settings > Accounts**), paste this code. ### Common Error Codes[​](#common-error-codes "Direct link to Common Error Codes") * **Error -1012**: Authentication failed. The server rejected the password. * **Error 401 / 403**: Unauthorized / Forbidden. Often related to expired tokens or passwords. * **"Server responded with an error"**: Generic message often implying a password issue. ### Still Not Working?[​](#still-not-working "Direct link to Still Not Working?") If generating a new password doesn't help: 1. **Remove the account**: Go to BusyCal Settings > Accounts, select iCloud, and click the `-` button. 2. **Restart BusyCal**. 3. **Add the account again**: Click `+`, select iCloud, and enter your email and the **new** app-specific password. --- # Info Panel Field Missing (Tags, Attendees, Travel Time) BusyCal’s Info Panel is configurable. If you don’t see a field you expect (for example **Tags**, **Attendees**, **Travel Time**, **Contacts**, etc.), it’s usually just disabled in Info Panel settings. ## Fix: Enable the field in Settings[​](#fix-enable-the-field-in-settings "Direct link to Fix: Enable the field in Settings") 1. Open **BusyCal > Settings**. 2. Click **Info Panel**. 3. Under **Show fields**, enable the missing field(s). ## Notes[​](#notes "Direct link to Notes") * Some fields are **account-dependent** (for example, Outlook/Graph-specific features), and some can be affected by whether an event is **read-only**. * BusyCal also supports special “local-only” fields like **My Tags** / **My Notes** / **My Alarms** for services that don’t natively support certain properties. ## Related docs[​](#related-docs "Direct link to Related docs") * [Info Panel](/docs/busycal/70595-info-panel.md) * [Tags](/docs/busycal/70597-tags.md) * [Locations, Maps & Travel Time](/docs/busycal/70603-locations-maps-travel-time.md) --- # Why BusyCal Background Sync Is Limited on iOS BusyCal syncs immediately when you launch the app and frequently while actively using it. However, **background sync is controlled entirely by iOS**. Apple's iOS decides when (and if) to allow background syncing based on multiple factors. ## How iOS Background Sync Works[​](#how-ios-background-sync-works "Direct link to How iOS Background Sync Works") iOS uses intelligent scheduling for background app refresh based on: * **Usage patterns** - Apps used frequently get priority * **Battery level** - Low battery restricts background activity * **Network conditions** - Poor connectivity delays syncing * **Device resources** - Available memory and processing power * **Time of day** - iOS learns when you typically use apps iOS Controls Background Sync There's no way for any app to force specific sync intervals. The more you use BusyCal, the more iOS prioritizes keeping it updated in the background—but there are no guarantees. ## Common Issues Preventing Background Sync[​](#common-issues-preventing-background-sync "Direct link to Common Issues Preventing Background Sync") While iOS manages background sync automatically, certain user actions can completely prevent it from working. Here are the most common issues that block background syncing: ### 1. Background App Refresh Disabled[​](#1-background-app-refresh-disabled "Direct link to 1. Background App Refresh Disabled") **Check this first:** 1. Open **Settings > General > Background App Refresh** 2. Ensure **Background App Refresh** is ON at the top 3. Ensure **BusyCal** is specifically enabled in the list ### 2. Force-Quitting Apps[​](#2-force-quitting-apps "Direct link to 2. Force-Quitting Apps") **This is the #1 cause of sync issues:** Never Force-Quit BusyCal When you force-quit apps (swipe up and flick apps away), iOS interprets this as "I don't want this app running" and **completely disables** background sync for that app. This prevents: * Background syncing * Badge count updates * Widget updates * watchOS updates * Notification delivery in some cases [Apple advises against force-quitting apps](https://support.apple.com/en-us/102172) as it actually uses **more** battery and breaks background functionality. This is only advised when an app is not responding or appears hung. **If you've force-quit BusyCal:** * You must manually launch the app again * iOS will then reconsider it for future background refreshes * It may take time for iOS to "trust" the app again ### 3. Frequent Device Restarts[​](#3-frequent-device-restarts "Direct link to 3. Frequent Device Restarts") After restarting your iPhone: * iOS doesn't automatically launch any apps * You must manually open BusyCal once * Only then will it be eligible for background refresh **Avoid unnecessary restarts** - modern iPhones are designed to run continuously. ## Best Practices for Reliable Sync[​](#best-practices-for-reliable-sync "Direct link to Best Practices for Reliable Sync") 1. **Leave BusyCal running** - Don't force-quit the app 2. **Use the app regularly** - iOS prioritizes frequently-used apps 3. **Keep Background App Refresh enabled** - Check settings periodically 4. **Avoid unnecessary restarts** - Only restart when truly needed 5. **Maintain good battery levels** - Low battery restricts background activity Background sync limitations are an iOS design decision to balance functionality with battery life. By following the best practices above, you'll get the most frequent background updates iOS allows—but immediate sync is only guaranteed when you open the app. Manual Refresh If you need immediate updates, simply open BusyCal. The app will sync instantly upon launch, ensuring you have the latest calendar data. #### "But other calendar apps sync immediately in the background!"[​](#but-other-calendar-apps-sync-immediately-in-the-background "Direct link to \"But other calendar apps sync immediately in the background!\"") Some apps appear to sync instantly because they use **push notifications** from their own servers. This requires the app company to run and maintain their own cloud servers and store some information about your calendar(s) there. BusyCal takes a different approach: **you own and control your data**. It syncs directly with your chosen calendar services (iCloud, Google, Exchange, etc.) without routing through our servers. This gives you complete privacy and control, but means we must follow iOS's standard background sync rules. BusyCal does however support **Push Sync** for services that allow 3rd parties to connect via their public APIs, specifically: * **Google Calendar** - Push notifications for instant updates * **Microsoft Outlook/Office 365** - Real-time sync via Microsoft Graph API When using these services with Push Sync enabled, iOS will automatically launch BusyCal in the background to prompt it to perform a background refresh. --- # How do I stop BusyCal from adding the country to every address? When you add an address to an event's **Location** field, BusyCal resolves it through **Apple Maps** and stores the full, normalized result. Apple Maps treats the **country** (for example, "United States", "United Kingdom", "Germany") as a required part of a complete address, so it is always appended to the result BusyCal receives back. There is no setting in BusyCal to strip the country from an address that has been resolved through Apple Maps. ## Why the country is always included[​](#why-the-country-is-always-included "Direct link to Why the country is always included") Apple Maps returns addresses as a complete, unambiguous place reference. A street and city alone can exist in more than one country — for example, a "Main Street, Springfield" exists in many countries around the world. Without the country, the address could be matched to the wrong location on the map, which would also cause problems for related features such as: * [Displaying the map preview in the Info Panel](/docs/busycal/70603-locations-maps-travel-time.md) * [Calculating travel time](/docs/busycal/70603-locations-maps-travel-time.md#travel-time) * [Time to Leave alarms](/docs/busycal/70603-locations-maps-travel-time.md#travel-time-alarms) Because the country is part of the address Apple Maps returns, BusyCal has no reliable way to selectively remove it while still keeping the address valid for these features. ## What you can do[​](#what-you-can-do "Direct link to What you can do") If you would prefer not to see the country appended to your addresses, you have a couple of options: * **Type the address as free text instead of selecting a suggestion.** When you start typing an address, BusyCal shows Apple Maps suggestions in a dropdown. If you press `Return` without selecting a suggestion, the text is stored exactly as you typed it. Keep in mind that an unresolved address will **not** show a map preview and **cannot** be used for travel time or Time to Leave alarms. * **Edit the Location field after choosing a suggestion.** Once an address has been resolved, you can click into the Location field and manually delete the country from the end of the text. If you then save the event, BusyCal will keep your edited value. Note that this may downgrade the address to plain text and remove its link to Apple Maps, which again disables the map preview and travel-time features for that event. note This behavior is the same in Apple Calendar and other apps that resolve addresses through Apple Maps — it is a property of the address data returned by Apple Maps itself, not something specific to BusyCal. ## See Also[​](#see-also "Direct link to See Also") * [Locations, Maps & Travel Time](/docs/busycal/70603-locations-maps-travel-time.md) — How BusyCal uses resolved addresses for maps and travel time * [Does BusyCal support location-based (travel time) alarms?](/docs/faqs/71163-does-busycal-support-location-based-travel-time-alarms.md) — Travel-time alarm overview * [Why does BusyCal require access to Location Services?](/docs/faqs/77690-why-does-busycal-require-access-to-location-services.md) — Related location-services behavior --- # Why does a long Banner appear below other Banners on later days? ## Why the position changes[​](#why-the-position-changes "Direct link to Why the position changes") Banners (all-day events) appear in the order of your calendars in the sidebar, so a banner from a calendar higher in the list is shown above the others. A banner that spans several weeks or months cannot always stay in the same row for its whole span. As other banners start and end on the days it covers, BusyCal fills the space that is free on each day so there are no empty gaps between banners. That is why a long banner can move down and appear below other banners on later days. This is how the calendar lays out banners, not a problem with the event. ## How to change the order[​](#how-to-change-the-order "Direct link to How to change the order") Drag the calendars in the sidebar into the order you want. Banners follow that order wherever the layout allows. See [Ordering Events](/docs/busycal/70592-calendar-list.md#ordering-events). --- # Why isn't my @mac.com email address working with iCloud sync? While `@mac.com` email addresses continue to work perfectly for sending and receiving email, Apple has made changes that can cause problems when using these addresses for **calendar and contact syncing** with third-party apps. The fix is simple: **use `@icloud.com` instead of `@mac.com`** when setting up your account with [BusyCal](/busycal) or [BusyContacts](/busycontacts.md). Same Account, Different Domain Apple automatically creates a `@icloud.com` version of every `@mac.com` or `@me.com` address. For example: * If your email is `john@mac.com` * Use `john@icloud.com` for syncing * This is the **same Apple ID account** ## How to Fix It[​](#how-to-fix-it "Direct link to How to Fix It") ### Step 1: Remove the Existing Account[​](#step-1-remove-the-existing-account "Direct link to Step 1: Remove the Existing Account") 1. Open **Settings** (click the app name in the menu bar, then "Settings") 2. Click on **Accounts** at the top 3. Select your `@mac.com` account in the left sidebar 4. Click the minus **\[-]** button at the bottom to remove it ### Step 2: Generate a New App-Specific Password[​](#step-2-generate-a-new-app-specific-password "Direct link to Step 2: Generate a New App-Specific Password") 1. Visit [Apple's App-Specific Password page](https://support.apple.com/en-us/102654) 2. Sign in with your Apple ID (you can use either `@mac.com` or `@icloud.com` to sign in) 3. Generate a new app-specific password 4. Copy it somewhere secure ### Step 3: Re-add the Account with @icloud.com[​](#step-3-re-add-the-account-with-icloudcom "Direct link to Step 3: Re-add the Account with @icloud.com") 1. Click the plus **\[+]** button in the Accounts settings 2. Select **iCloud** as the account type 3. Enter your email as `yourname@icloud.com` (not `@mac.com`) 4. Paste the app-specific password you generated 5. Click **OK** ## Related Documentation[​](#related-documentation "Direct link to Related Documentation") For detailed setup instructions, please see: * [BusyCal for Mac - Using with iCloud](/docs/busycal/70630-using-busycal-with-icloud.md#syncing) * [BusyCal for iOS - Using with iCloud](/docs/busycalios/70675-using-busycal-with-icloud.md) * [BusyContacts - Using with iCloud](/docs/busycontacts/77662-using-busycontacts-with-icloud.md#syncing) --- # macOS shows "Support Ending for Intel-based Apps" when launching BusyCal or BusyContacts If macOS shows a notification that reads **"Support Ending for Intel-based Apps — This version of 'BusyCal' (or 'BusyContacts') will not open in a future release of macOS"** when you launch the app, you can safely ignore it. ## Our apps are already Universal[​](#universal "Direct link to Our apps are already Universal") BusyCal and BusyContacts ship as **Universal apps**. The main application binary runs natively on both Apple silicon (M1/M2/M3/M4) and Intel Macs — no Rosetta translation is involved on Apple silicon. The macOS warning typically refers to apps that contain only an Intel binary. That is **not** the case here. ## Why does macOS still show the warning?[​](#why "Direct link to Why does macOS still show the warning?") macOS can also surface this warning when it detects an internal helper or auxiliary component inside an app bundle that hasn't yet been rebuilt for Apple silicon — even when the main app itself is Universal. The warning is generic and doesn't distinguish between the main app and a small embedded component. In practice, this means the app continues to launch and run natively on Apple silicon as expected. There's no performance or compatibility impact from the warning itself. ## What do I need to do?[​](#what-to-do "Direct link to What do I need to do?") Nothing. You can continue using BusyCal or BusyContacts normally. * You **don't** need to reinstall the app. * You **don't** need to install Rosetta. * Your data, sync, and license are unaffected. We're aware of the warning and plan to address it in an upcoming update so macOS no longer flags the app. ## Still seeing issues?[​](#contact "Direct link to Still seeing issues?") If the app itself isn't launching or you're seeing a different error, please [contact support](/docs.md#support-information) and include a screenshot of what macOS is showing. --- # Deploying BusyCal via MDM or Scripted Installation BusyCal and BusyContacts do **not currently support direct MDM-based licensing for App Store subscriptions**, due to limitations imposed by Apple. The Mac App Store is designed around **individual iCloud-based subscriptions**, which unfortunately do not support business-wide deployments under a single MDM license. For organizations and IT admins who wish to manage multiple installations of BusyCal / BusyContacts across devices, we recommend using our **direct license** version—available [from our website](/store.md)—which allows volume purchases (e.g., a 5-seat license) and supports custom deployment workflows. Looking for BusyContacts-specific instructions? See [Deploying BusyContacts via MDM or Scripted Installation](/docs/faqs/busycontacts-mdm-installation.md). ## Benefits of our Direct Version vs. App Store[​](#benefits-of-our-direct-version-vs-app-store "Direct link to Benefits of our Direct Version vs. App Store") For more details, please [visit the licensing page](/docs/faqs/120616-licensing-explained.md#direct) as we have given a detailed comparison there. Essentially, our [**direct version**](/store.md) allows you to: * Purchase multi-seat licenses with 18 months of updates included. * Deploy BusyCal manually or via scripts. * Register and activate using a license key * Optional Upgrades ## Managed Installation on a Single Machine[​](#managed-installation-on-a-single-machine "Direct link to Managed Installation on a Single Machine") You can manually install and activate BusyCal on any Mac using the following steps: ### 1. Download the latest DMG[​](#1-download-the-latest-dmg "Direct link to 1. Download the latest DMG") [Download BusyCal](https://www.busymac.com/download/BusyCal.dmg) ### 2. Mount the DMG[​](#2-mount-the-dmg "Direct link to 2. Mount the DMG") Open **Terminal** and run: ``` hdiutil attach /path/to/BusyCal.dmg ``` This command will mount the DMG file as a volume on your system. Take note of the mount point displayed in the command output (e.g., `/Volumes/BusyCal`). ### 3. Copy BusyCal to Applications[​](#3-copy-busycal-to-applications "Direct link to 3. Copy BusyCal to Applications") ``` cp -R /Volumes/BusyCal/BusyCal.app /Applications/ ``` ### 4. Register BusyCal with a License Key[​](#4-register-busycal-with-a-license-key "Direct link to 4. Register BusyCal with a License Key") You can register BusyCal by opening a special URL with your license key: ``` open "busycal://register/BCL3-1111-1111-1111-1111" ``` Replace `BCL3-1111-1111-1111-1111` with your actual license key. This will silently register the installed copy in the background. ## Sample Deployment Script for Automation[​](#sample-deployment-script-for-automation "Direct link to Sample Deployment Script for Automation") For automating this across multiple machines, here’s a sample Bash script: note This script can be adapted for deployment tools like Jamf, Munki, or custom shell workflows across managed Macs. ``` #!/bin/bash # --- Configuration --- BASE_URL="https://www.busymac.com/download" # Base URL for downloads DMG_NAME="BusyCal.dmg" # Base name for the downloaded file and in URL DMG_URL="$BASE_URL/$DMG_NAME" # Construct the full download URL DMG_PATH="/tmp/$DMG_NAME" # Full path for the downloaded file APP_NAME="BusyCal.app" # Name of the application bundle inside the DMG LICENSE_KEY="BCL3-1111-1111-1111-1111" # Replace with actual license key # --- End Configuration --- # Variable to store the determined mount point MOUNT_POINT="" # Function for cleanup actions cleanup() { echo "--- Cleaning up ---" # Attempt to detach using the determined mount point, if available and mounted if [ -n "$MOUNT_POINT" ] && hdiutil info | grep -q -F "$MOUNT_POINT"; then echo "Unmounting volume at $MOUNT_POINT..." hdiutil detach "$MOUNT_POINT" -force > /dev/null 2>&1 fi # Remove the downloaded DMG file if [ -f "$DMG_PATH" ]; then echo "Removing downloaded DMG at $DMG_PATH..." rm "$DMG_PATH" fi echo "Cleanup finished." } trap cleanup EXIT # --- Main Script --- echo "Starting BusyCal installation script..." # Check for xmllint availability if ! command -v xmllint &> /dev/null; then echo "Error: xmllint command not found. Install via: brew install libxml2" >&2 exit 1 fi # Download BusyCal DMG echo "Downloading $DMG_URL to $DMG_PATH..." if ! curl --fail -L -o "$DMG_PATH" "$DMG_URL"; then echo "Error: Failed to download DMG from $DMG_URL." >&2 exit 1 fi echo "Download complete." # Mount the DMG and capture the output plist echo "Mounting DMG: $DMG_PATH..." MOUNT_INFO_PLIST=$(hdiutil attach "$DMG_PATH" -nobrowse -noverify -plist) ATTACH_STATUS=$? # Capture exit status of hdiutil attach if [ $ATTACH_STATUS -ne 0 ]; then echo "Error: Failed to mount DMG. hdiutil exited with status $ATTACH_STATUS." >&2 exit 1 fi # Parse the plist output using plutil and xmllint to find the mount point echo "Parsing mount point information..." # Convert plist to XML, pipe to xmllint, use XPath to extract the string value # following the 'mount-point' key. Suppress stderr from plutil. MOUNT_POINT=$(echo "$MOUNT_INFO_PLIST" | plutil -convert xml1 -o - - 2>/dev/null | \ xmllint --xpath 'string(//key[.="mount-point"]/following-sibling::string[1])' - 2>/dev/null) PARSE_STATUS=$? # Capture exit status of the command pipeline if [ $PARSE_STATUS -ne 0 ]; then echo "Error: Failed to parse mount point using xmllint (exit status $PARSE_STATUS)." >&2 # Attempt to detach using the DMG path as a fallback hdiutil detach "$DMG_PATH" -force > /dev/null 2>&1 exit 1 fi # Validate that we found a mount point if [ -z "$MOUNT_POINT" ]; then echo "Error: Could not determine mount point from hdiutil output (xmllint parsing failed to find it)." >&2 # Attempt to detach using the DMG path as a fallback hdiutil detach "$DMG_PATH" -force > /dev/null 2>&1 exit 1 fi echo "DMG mounted successfully at: $MOUNT_POINT" # Define the source path for the application SOURCE_APP_PATH="$MOUNT_POINT/$APP_NAME" # Check if the application exists at the expected path within the mounted volume if [ ! -d "$SOURCE_APP_PATH" ]; then echo "Error: Application '$APP_NAME' not found at '$SOURCE_APP_PATH'." >&2 exit 1 fi echo "Located application at: $SOURCE_APP_PATH" # Copy the app to /Applications echo "Copying $APP_NAME to /Applications/ ..." if ! cp -R "$SOURCE_APP_PATH" /Applications/; then echo "Error: Failed to copy '$APP_NAME' to /Applications/." >&2 exit 1 fi echo "Application copied successfully." # Register the app using the URL scheme echo "Attempting to register the application..." # Add a small delay before trying to register, sometimes needed for the system # to recognize the newly copied app and its URL scheme handler. sleep 2 if ! open -g "busycal://register/$LICENSE_KEY"; then echo "Registration failed." exit 1 fi echo "Registration command sent." # Unmounting and cleanup will be handled by the EXIT trap echo "BusyCal installation script completed successfully." # Explicitly exit successfully, triggering the cleanup trap exit 0 ``` --- # Troubleshooting Meeting Invitation Issues Receiving meeting invitations from others doesn't always go smoothly. While some issues are easy to resolve, others may be unavoidable due to external factors. Below is a non-exhaustive list of common problems you might encounter and tips for troubleshooting or circumventing them effectively: ## Not Seeing Accept / Decline / Response Options[​](#noresponseoptions "Direct link to Not Seeing Accept / Decline / Response Options") ### Reason 1: Mismatch of Email Addresses[​](#reason-1-mismatch-of-email-addresses "Direct link to Reason 1: Mismatch of Email Addresses") This issue occurs when the sender (i.e., the organizer) uses an email address to send you an invitation, but the receiving address doesn’t match the one associated with your calendar account. For example, if you add a CalDAV account to BusyCal with the email address `bob@email.com`, but your email server is configured with aliases like `bobby@email.com` or `robert@email.com`, BusyCal may not recognize these aliases. Many servers do not share additional aliases with third-party apps. When such an invitation reaches your calendar and is viewed in BusyCal, the app marks the event as "read-only" and prevents you from responding because it cannot match the attendee `bobby@email.com` with the account `bob@email.com`. #### Solution:[​](#solution "Direct link to Solution:") 1. Request others to send invites to `bob@email.com` directly, or 2. Sign in to your calendar account within BusyCal using `bobby@email.com` if that’s an option, or 3. Open **Apple Contacts**, edit your **Me Card**, and add any additional aliases. BusyCal will reference your Me Card 4. to match email addresses and allow you to respond to meeting invitations. ### Reason 2: Invitation (.ics File) Was Manually Imported[​](#reason-2-invitation-ics-file-was-manually-imported "Direct link to Reason 2: Invitation (.ics File) Was Manually Imported") If the meeting invitation was manually imported into BusyCal, perhaps from an email attachment, and the email address it was sent to doesn’t match the calendar account where it was imported, you won’t be presented with any response options. #### Solution:[​](#solution-1 "Direct link to Solution:") 1. Open **Apple Contacts**, edit your **Me Card**, and add all your email addresses (including aliases). <br /> <!-- --> This helps BusyCal identify you as an attendee and enables response options for imported invitations. 2. Ensure that invitations are not manually imported when they can sync directly through your calendar account. *** ## Meeting Responses are sent as a Decline[​](#meeting-responses-are-sent-as-a-decline "Direct link to Meeting Responses are sent as a Decline") If you accept a meeting invitation but the organizer receives a **decline** instead, it is likely because the event was moved between calendars. ### Why This Happens[​](#why-this-happens "Direct link to Why This Happens") Moving a meeting from one calendar to another is often treated by calendar servers as two separate operations: 1. **Delete** – The event is removed from the original calendar, triggering a decline notification to the organizer. 2. **Add** – The event is copied to the new calendar, but this does not update the original invitation. As a result, the organizer mistakenly sees your response as a **decline**, even though you intended to accept. ### Solution[​](#solution-2 "Direct link to Solution") **Do not move meeting invitations between calendars.** Instead, keep the event on the calendar where it was originally scheduled to avoid triggering an unintended decline response. Some accounts, such as iCloud, support configuring a `Meeting Calendar` under Settings > Accounts. Use this option to select and dedicate a calendar for meetings. If you need to organize events separately, consider using **tags** or **calendar filters** instead of moving the event itself. You can also duplicate and move the duplicated-event to another calendar if you wish. *** ## Meeting Responses Not Updating / Missing[​](#meeting-responses-not-updating--missing "Direct link to Meeting Responses Not Updating / Missing") If you're the organizer and attendees are sending replies, but your meeting invitations aren’t reflecting their responses (e.g., you always see a question mark next to their email addresses in the event details section), this may be due to configuration issues at the sender's end or one of the following scenarios: * **Shared Email Across Services:**<br /><!-- -->You’re using an email address for your calendar account that’s shared across multiple services. For example, you’re using an **iCloud** account, but your email address is actually a **Gmail** address, like `tom.joe@gmail.com`. In such cases, emails sent to this address may reach your Gmail Inbox or Calendar instead of iCloud. * **Mismatched Services:**<br /><!-- -->Similar issues can arise when accounts use email domains from one service but are hosted by another—for example, an Outlook account with a Yahoo domain or vice versa. These mismatches often lead to confusion when sending and receiving invitations. * **Cross-Service Interference:**<br /><!-- -->If the sender or recipient is using email accounts hosted by different services, it may cause interference or misrouting of meeting invitations and responses. Key Notes * This behavior isn’t specific to BusyCal. You’ll likely see the same issue in other calendar apps. * Identifying the root cause requires collaboration with your attendees, as well as checking your account’s **online portal**, where the issue may also appear. Unfortunately, resolving these issues often involves configurations outside the scope of what we can troubleshoot directly. *** ## Not Receiving Meeting Invitations From Others, Or Vice-versa[​](#not-receiving-meeting-invitations-from-others-or-vice-versa "Direct link to Not Receiving Meeting Invitations From Others, Or Vice-versa") When meeting invitations are sent from calendar services like iCloud, Google, Outlook, or Exchange, the invitation delivery is handled entirely by that server—not by third-party apps like BusyCal that the sender might be using. If meeting invitations aren't being received (whether you're not getting invites from others, or others aren't receiving your invitations), this typically indicates a delivery or routing issue between calendar services. Common troubleshooting steps include: * Check the **Spam** or **Trash** folder in the mail app * For **Exchange users**, the invite may appear in the **Inbox** folder of the calendar. There may be a setting preventing these from appearing on the calendar itself. However, the **most likely cause** is the following: * If the recipient (you or someone else) uses an iCloud account with a Gmail or Outlook address, the invite may be intercepted by those services and not reach iCloud, as highlighted in the [section above](#noresponseoptions). ### Google Calendar Users[​](#google-calendar-users "Direct link to Google Calendar Users") #### 1. Invitations Not Sending[​](#1-invitations-not-sending "Direct link to 1. Invitations Not Sending") If you add an attendee but they never receive an email: * **Google Rate Limiting**: If you send too many invites in a short time, Google may temporarily block sending. * **"My" Calendars Only**: Ensure the event is on your **primary** calendar or a calendar you **own**. You cannot send invites from a read-only or subscribed calendar (like a holiday calendar). #### 2. Invitations Not appearing in Inbox[​](#2-invitations-not-appearing-in-inbox "Direct link to 2. Invitations Not appearing in Inbox") For **Google calendar**, there is a setting that can be disabled inadvertently which would prevent invitations from appearing in the calendar automatically. This setting can be enabled in your [Google account settings](https://support.google.com/a/answer/10985109?hl=en). * Go to [Google Calendar Settings](https://calendar.google.com/calendar/r/settings) on the web. * Under **Event settings**, find **"Add invitations to my calendar"**. * Ensure it is set to **"From everyone"**. ### iCloud Users[​](#icloud-users "Direct link to iCloud Users") #### 1. Alias Issues[​](#1-alias-issues "Direct link to 1. Alias Issues") If you use an email alias (e.g., `user@custom-domain.com`) with your iCloud account: * iCloud may not send invites if the "Organizer" email doesn't match your primary iCloud ID. * **Fix**: Go to **BusyCal > Settings > Accounts > iCloud**, and ensure the **Email** field is set to your primary iCloud email address (usually ending in `@icloud.com` or `@me.com`), or a valid alias registered with Apple. #### 2. Invitations Going to Spam[​](#2-invitations-going-to-spam "Direct link to 2. Invitations Going to Spam") Ask the attendee to check their Junk/Spam folder. iCloud invites sometimes get filtered by other email providers. ### Local / "On My Mac" Calendars[​](#local--on-my-mac-calendars "Direct link to Local / \"On My Mac\" Calendars") If you are using a local calendar (not synced to a cloud service), BusyCal **does** send the email directly using Apple Mail. * **Mail App Required**: Apple Mail must be set as your default email reader. * **Check Outbox**: If the invite isn't sending, check the **Outbox** in Apple Mail to see if the message is stuck. * **Sent Folder**: Check your **Sent** folder in Mail to verify if the invite was actually generated and sent. ### General Troubleshooting[​](#general-troubleshooting "Direct link to General Troubleshooting") #### Check "My Card"[​](#check-my-card "Direct link to Check \"My Card\"") BusyCal uses your "Me" card in Apple Contacts to identify you. 1. Open **Contacts** app. 2. Find your own card. 3. Ensure **Card > Make This My Card** is selected. 4. Ensure all your email addresses are listed on this card. #### Replies Not Received[​](#replies-not-received "Direct link to Replies Not Received") If you are the organizer and not receiving replies (Accepted/Declined): * Check if the attendee used an email client that supports calendar replies (like BusyCal, Outlook, or Apple Mail). * If they replied via a plain text email, BusyCal cannot automatically update the status. You must manually change their status in the Event Info Panel. ## Spam or Suspicious Calendar Invitations[​](#spam "Direct link to Spam or Suspicious Calendar Invitations") If you're seeing suspicious or unwanted events on your calendar from unknown senders, these are **calendar spam** — unsolicited invitations delivered by your calendar server. BusyCal cannot filter these because it syncs whatever the server provides. The filtering must be done on the server side. See [How do I stop spam calendar invitations?](/docs/faqs/calendar-spam-invitations.md) for step-by-step instructions for Google Calendar, iCloud, Outlook, and other services. *** Avoid Manually Importing .ics Files As a general rule, you should avoid importing .ics files manually when using accounts with iCloud, Google, Outlook etc. Meeting invitations show up on your calendar automatically during sync. Whenever an invitation is received, it is captured in two places: the Mail Inbox and the Calendar Inbox. If you import the .ics file sent as an attachment via mail manually, and don't wait for the calendar to sync this automatically, conflicts can occur and these can further complicate matters as updates may or may not be sent out correctly. Some servers, such as Google Calendar, can be extremely picky when it comes to meeting invitations and related conflicts. In the worse case you may also end up with duplicate meetings. --- # A meeting invite disappears after I move it to another calendar Meeting invitations behave differently than regular events. If you accept a meeting and then try to **move it to a different calendar**, many calendar servers treat that as: 1. Deleting the original invite (which can also trigger an unintended **Decline**), and 2. Creating a new copy on another calendar (which is no longer the original meeting invitation) As a result, the meeting may **revert** or appear to “disappear” from BusyCal shortly after you move it. ## What to do instead[​](#what-to-do-instead "Direct link to What to do instead") * Keep the invitation on the calendar where it was originally created/synced. * Use **tags** (or BusyCal’s organization features) instead of moving the invite to a new calendar. ## Related docs[​](#related-docs "Direct link to Related docs") * [Troubleshooting Meeting Invitation Issues: “Meeting Responses are sent as a Decline”](/docs/faqs/meeting-invitation-faqs.md#meeting-responses-are-sent-as-a-decline) * [Why does my calendar's name appear as a guest after I move a meeting?](/docs/faqs/calendar-name-appears-as-guest-after-moving-meeting.md) * [Meetings and Invitations](/docs/busycal/70615-meetings-and-invitations.md) --- # Microsoft 365 / Outlook events are not updating in BusyCal If your Microsoft 365 calendar looks up-to-date in Outlook (and sometimes even in Apple Calendar) but BusyCal isn’t reflecting recent changes, the account may be using a legacy connection method that no longer syncs reliably. ## Fix: Re-add the account using Microsoft Graph[​](#fix-re-add-the-account-using-microsoft-graph "Direct link to Fix: Re-add the account using Microsoft Graph") 1. In BusyCal for Mac, open **BusyCal > Settings > Accounts**. 2. Select your existing Microsoft/Office 365 account and remove it (minus button). 3. Click the plus button and add the account again, selecting **Office 365 (Microsoft Graph)**. 4. Complete the sign-in / MFA flow and allow BusyCal to finish its initial sync. ## Related docs[​](#related-docs "Direct link to Related docs") * [Using BusyCal with Office 365 (Microsoft Graph)](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) * [Unable to connect to an Office 365 / Outlook account](/docs/faqs/104475-unable-to-connect-to-an-office-365-outlook-account.md) --- # Microsoft 365 Group Calendars don’t show up (Microsoft Graph) Microsoft 365 “Group Calendars” require explicit support and permissions when syncing via **Microsoft Graph**. ## What to check[​](#what-to-check "Direct link to What to check") 1. Confirm you’re using an **Office 365 (Microsoft Graph)** account in BusyCal (not legacy Exchange/EWS). 2. When adding the Microsoft Graph account, make sure **Enable access to Group Calendars** is enabled during the setup flow. If the account was added without group-calendar access, you may need to **remove and re-add** the Microsoft Graph account to grant the required permissions. ## Admin consent note[​](#admin-consent-note "Direct link to Admin consent note") Some organizations require an administrator to grant Microsoft Graph permissions. If you see an “Admin Consent Required” prompt, follow the admin guide below. ## Related docs[​](#related-docs "Direct link to Related docs") * [Using BusyCal with Office 365 (Microsoft Graph): Group Calendars](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md#groupcalendars) * [How do I setup Microsoft Teams or Graph API access in BusyCal?](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md) --- # Why is the first Microsoft Graph sync taking so long? A first Microsoft Graph sync can take much longer than later syncs when an Outlook or Microsoft 365 account has thousands of events, many years of history, or several calendars. ## Why can it look stalled?[​](#why-can-it-look-stalled "Direct link to Why can it look stalled?") Microsoft Graph controls how the initial event list is split into pages. BusyCal then retrieves the full details in batches of up to **20 events**. Microsoft may also slow requests temporarily when a large amount of data is being downloaded. Events are not guaranteed to arrive in date order. Recent events may appear before older ones, or the other way around, so a calendar can look incomplete while BusyCal continues to show **Syncing**. ## How long should it take?[​](#how-long-should-it-take "Direct link to How long should it take?") Large accounts can take several hours to finish, and a calendar with thousands of events may need to sync overnight. The exact time depends on the number of calendars and events, the network connection, and Microsoft’s server load and rate limits. Once the first sync is complete, later syncs are usually much faster because BusyCal retrieves only changes. ## What should I do?[​](#what-should-i-do "Direct link to What should I do?") * On Mac, leave BusyCal open and keep the Mac awake with a reliable internet connection. * On iPhone or iPad, connect the device to power and Wi-Fi and leave BusyCal open in the foreground. iOS limits how long apps can work in the background. * Do not force-quit BusyCal or remove and re-add the account while the first sync is still making progress. Re-adding the account starts the initial sync again. * Each device completes its own first sync. Finishing on a Mac does not make an iPhone or iPad download the same data from the Mac. If you do not need all of your old calendar history, archive or delete old events in Outlook before starting the account again in BusyCal. This reduces the amount of data Microsoft Graph must send. If the account still shows **Syncing** after an uninterrupted overnight run, or BusyCal reports an error, please [contact BusyCal Support](/docs.md). --- # The “Add Microsoft Teams meeting” option is missing If you don’t see the option to add a **Microsoft Teams** meeting from the Info Panel, it’s usually because the Teams field isn’t enabled or the account isn’t configured for Graph/Teams access. ## Checklist[​](#checklist "Direct link to Checklist") 1. Make sure your account is connected using **Office 365 (Microsoft Graph)**. 2. Enable the Microsoft Teams field: <!-- --> * Open **BusyCal > Settings > Info Panel** * Enable **Microsoft Teams** 3. If your organization requires admin approval, you may need **Admin Consent** for the required Graph scopes. ## Related docs[​](#related-docs "Direct link to Related docs") * [Using BusyCal with Office 365 (Microsoft Graph)](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) * [How do I setup Microsoft Teams or Graph API access in BusyCal?](/docs/faqs/134278-how-do-i-setup-microsoft-teams-or-graph-api-access-in-busycal.md) * [Info Panel fields missing](/docs/faqs/info-panel-fields-missing.md) --- # No scroll bar in Month View ## Why don’t I see a scroll bar in Month View?[​](#why-dont-i-see-a-scroll-bar-in-month-view "Direct link to Why don’t I see a scroll bar in Month View?") BusyCal’s Month View is designed for gesture and keyboard navigation. Scroll bars follow your macOS system setting and may be hidden when set to automatic. ## How to scroll Month View[​](#how-to-scroll-month-view "Direct link to How to scroll Month View") * **Trackpad/Magic Mouse:** scroll vertically to move week-by-week. * **Keyboard:** `⌘-Left Arrow` / `⌘-Right Arrow` for month-by-month; `⌘-Option-Left/Right Arrow` for week-by-week. * **Toolbar:** use the left/right arrow buttons to move between months. See [Month View](/docs/busycal/70589-month-view.md) for all navigation options. ## Show scroll bars on macOS (optional)[​](#show-scroll-bars-on-macos-optional "Direct link to Show scroll bars on macOS (optional)") If you prefer always-visible scroll bars: 1. Open **System Settings > Appearance**. 2. Set **Show scroll bars** to **Always**. This is a macOS-wide setting and affects all apps, including BusyCal. --- # Month View jumps to the week row when I click Today ## Why does Today jump to the top row in Month View?[​](#why-does-today-jump-to-the-top-row-in-month-view "Direct link to Why does Today jump to the top row in Month View?") If Month View is set to show a custom number of weeks (2–12 weeks), the **Today** button places the current week in the **top row**. This is expected and helps keep the current week in focus. If Month View is set to **One Month**, Today will jump to the standard calendar month layout instead. ## Switch back to a full month layout[​](#switch-back-to-a-full-month-layout "Direct link to Switch back to a full month layout") 1. Open **BusyCal > Settings > General**. 2. Set **Month view shows** to **One Month**. You can also switch this from **View > Weeks in Month** or by `CTRL+Click` (right‑click) the Month view button in the toolbar. See [Month View](/docs/busycal/70589-month-view.md) for more details. --- # Why is “Move to iCloud” missing in BusyCal? In BusyCal for Mac, **Move to iCloud** appears when you Control-click an individual local calendar under **On My Mac** and have an enabled iCloud account set up directly in BusyCal. It does not appear for calendars already hosted on Fruux, Google, Exchange, or another account. Recreating your iCloud account does not change this restriction. If the calendar is local, check that your iCloud account is enabled in **BusyCal > Settings > Accounts** and appears in the sidebar. Control-click the calendar itself, rather than an account heading or calendar group. See [Move a Calendar to iCloud](/docs/busycal/70630-using-busycal-with-icloud.md#move-a-calendar-to-icloud) for the steps. If the calendar is under Fruux or another service, [export it and import a new local copy before moving it to iCloud](/docs/busycal/70630-using-busycal-with-icloud.md#copy-from-another-service). Keep the original until you have checked the copied data on your devices. The guide also explains how iCloud separates tasks from events and journals, and how to display those calendars together in BusyCal. --- # How do I control automatic link and phone number detection in the Notes field? The Notes field in both BusyCal and BusyContacts uses macOS text detection to automatically recognize patterns such as phone numbers, web addresses, email addresses, and dates, and turn them into clickable links. This is the same system — called **data detectors** — that macOS uses in apps like TextEdit and Mail. While this is convenient for quickly dialing a number or opening a URL, it can sometimes misidentify text as a link. For example, a bank reference number like `20260410-583` may be detected as a phone number, or a product code may be highlighted as a web link even though it isn't one. ## Turning detection on or off[​](#turning-detection-on-or-off "Direct link to Turning detection on or off") You can control these options per-app through the **Edit > Substitutions** submenu: 1. Click in the **Notes** field of any event, task, or contact so it has focus. 2. From the menu bar, choose **Edit > Substitutions**. 3. Toggle the options you want: | Option | What it does | | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Data Detectors** | Automatically detects phone numbers, addresses, dates, and similar patterns and turns them into clickable action links. Turn this **off** if text like reference numbers or codes is being incorrectly recognized as phone numbers. | | **Smart Links** | Automatically detects URLs and email addresses and turns them into clickable web links. Turn this **off** if you don't want URLs in your notes to become hyperlinks. | | **Smart Quotes** | Replaces straight quotes (`"` `'`) with typographic curly quotes. | | **Smart Dashes** | Replaces double hyphens (`--`) with an em dash and triple hyphens (`---`) with an en dash. | | **Text Replacement** | Applies any text replacements you've configured in **System Settings > Keyboard > Text Replacements** (e.g., expanding "omw" to "On my way!"). | A checkmark next to an option means it is currently enabled. Click the option to toggle it. note These settings are remembered separately for BusyCal and BusyContacts — changing them in one app does not affect the other. The settings apply to the Notes field across all events, tasks, or contacts in that app. ## Common scenarios[​](#common-scenarios "Direct link to Common scenarios") ### "A reference number keeps turning into a phone link"[​](#a-reference-number-keeps-turning-into-a-phone-link "Direct link to \"A reference number keeps turning into a phone link\"") Turn off **Data Detectors**. This stops macOS from scanning the Notes field for phone-number-like patterns. After toggling it off, the text remains plain and you can no longer accidentally tap-to-call a non-phone number. ### "I want clickable URLs but not phone number detection"[​](#i-want-clickable-urls-but-not-phone-number-detection "Direct link to \"I want clickable URLs but not phone number detection\"") Unfortunately, Data Detectors is a single toggle — it covers phone numbers, addresses, and dates together. You cannot turn off phone detection while keeping address detection. However, you can: * Turn off **Data Detectors** (stops phone numbers and addresses) * Keep **Smart Links** on (URLs and email addresses remain clickable) This gives you clickable web links without the phone-number false positives. ### "I removed a link but it keeps coming back"[​](#i-removed-a-link-but-it-keeps-coming-back "Direct link to \"I removed a link but it keeps coming back\"") If you right-click a detected link and choose **Remove Link**, the detection system may re-apply it the next time the text is edited or the field regains focus. The permanent fix is to turn off the relevant detection option in **Edit > Substitutions** as described above. ### "I don't see any links in my Notes at all"[​](#i-dont-see-any-links-in-my-notes-at-all "Direct link to \"I don't see any links in my Notes at all\"") Make sure **Data Detectors** and/or **Smart Links** are enabled in **Edit > Substitutions**. You need to click in the Notes field first for the Substitutions submenu to become available. ## Applies to[​](#applies-to "Direct link to Applies to") * **BusyCal** (macOS) — Notes field in the Info Panel for events, tasks, and journals * **BusyContacts** (macOS) — Notes field in the contact Info Panel tip On iOS, link detection in the Notes field is handled by the system and is always on. These Edit > Substitutions options are specific to the macOS versions of BusyCal and BusyContacts. --- # Why are old Outlook emails appearing as tasks in BusyCal? Open one of the unexpected tasks and check its **Calendar** field. If it belongs to **Flagged Emails** under your Microsoft 365 or Outlook account, it comes from a flagged email in Outlook. Microsoft makes flagged emails available as tasks in its built-in [Flagged Emails list](https://learn.microsoft.com/en-us/graph/api/resources/todotasklist?view=graph-rest-1.0). BusyCal can sync this list alongside your other Microsoft task lists. ## Why did these tasks appear now?[​](#why-did-these-tasks-appear-now "Direct link to Why did these tasks appear now?") Adding or reconnecting a Microsoft account using Microsoft Graph can bring in task lists that were not included with an older Exchange connection. BusyCal enables a newly discovered **Flagged Emails** list by default, so it may appear even if you only expected to see your calendar and usual tasks. Older items that are still incomplete and have a past due date appear as overdue tasks. If you carry uncompleted tasks forward, they can also appear on today in your calendar. The emails themselves may be much older than the date they first appeared in BusyCal. ## Hide the Flagged Emails list[​](#hide-the-flagged-emails-list "Direct link to Hide the Flagged Emails list") Turn off syncing for this list if you do not want to see flagged emails in BusyCal. Your other calendars and task lists can stay enabled. ### On iPhone or iPad[​](#on-iphone-or-ipad "Direct link to On iPhone or iPad") 1. Open **BusyCal > Settings > Accounts**. 2. Select your **Office 365** or **Outlook** account, then tap **Calendars**. 3. Tap the **info** button beside **Flagged Emails**. 4. Turn off **Enable Calendar**. ### On Mac[​](#on-mac "Direct link to On Mac") 1. Right-click **Flagged Emails** under your Microsoft account in BusyCal's calendar sidebar. 2. Choose **Get Info…**. 3. Click **Unsubscribe**. These steps hide the list's tasks and stop syncing that list on the device. They do not delete Outlook messages, change their flags, or affect your other task lists. Repeat the steps on each device where you want the list disabled. There is no need to delete or complete the items individually just to hide them. Those edits sync back to Microsoft; disabling the list leaves them unchanged. --- # BusyCal Unable to Connect to Outlook Personal Accounts / Office 365 ## Troubleshoot a connection problem[​](#troubleshoot-a-connection-problem "Direct link to Troubleshoot a connection problem") For setup and authentication help, use the guide for your device: * [BusyCal for Mac: Office 365 and Outlook with Microsoft Graph](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) * [BusyCal for iPhone and iPad: Office 365 and Outlook with Microsoft Graph](/docs/busycalios/using-busycalios-with-office-365-microsoft-graph.md) * [Office 365 connection and admin consent issues](/docs/faqs/104475-unable-to-connect-to-an-office-365-outlook-account.md) A connection error today does not establish that the historical incident below is still occurring. Check the exact error and [Microsoft's service status](https://portal.office.com/servicestatus). You can also check your calendar through [Outlook on the web](https://outlook.com). ## Historical incident: May 27, 2025[​](#current-status "Direct link to Historical incident: May 27, 2025") This article originally described reports from **May 27, 2025**, when some Outlook.com, Live, and Hotmail personal accounts returned HTTP 500 errors while third-party applications requested calendar data. The reports below document that incident; they are not a live service-status notice and do not establish its current status. * [Microsoft Q\&A: errors retrieving calendars](https://learn.microsoft.com/en-us/answers/questions/2279133/getting-500-response-errors-to-get-me-calendars-al) * [Microsoft Q\&A: internal server errors](https://learn.microsoft.com/en-us/answers/questions/2280408/internal-server-error-alway-as-a-response-for-micr) * [Microsoft Q\&A: Graph internal server errors](https://learn.microsoft.com/en-us/answers/questions/2280189/i-am-getting-500-internal-server-error-on-https-gr) * [Microsoft Graph Explorer issue](https://github.com/microsoftgraph/microsoft-graph-explorer-v4/issues/3861) * [Calendar integration issue](https://github.com/RogerSelwyn/MS365-Calendar/issues/113) ## Reported symptoms[​](#symptoms "Direct link to Reported symptoms") The May 2025 reports included HTTP 500 errors, a “Could not fetch container collection” message, calendars failing to refresh, and failures when adding personal Outlook accounts. Similar symptoms can have other causes; authentication failures or organizational Office 365 account problems should be checked against the connection guides above. ## If you see a server error[​](#what-you-can-do "Direct link to If you see a server error") Try again later and check Microsoft's service status. If the error persists, contact support with the exact error message, when it occurred, your BusyCal version, and whether the account is personal or managed by an organization. Do not include your password. ## Access your calendar on the web[​](#alternative-solutions "Direct link to Access your calendar on the web") If the calendar is available in [Outlook on the web](https://outlook.com), you can use it there while investigating the BusyCal connection. Switching to Microsoft Graph is setup guidance for an older connection, not a confirmed workaround for a Graph server error. --- # You don't have permission to modify events on the calendar Error ## Why do I see "You don't have permission to modify events on the calendar" error?[​](#why-do-i-see-you-dont-have-permission-to-modify-events-on-the-calendar-error "Direct link to Why do I see \"You don't have permission to modify events on the calendar\" error?") This error appears when you're trying to add or modify an event on a [**read-only calendar**](/docs/busycal/70592-calendar-list.md#symbols). Read-only calendars include: * Subscribed calendars (like holiday calendars or sports schedules) * Shared calendars where you only have viewing permissions * [Birthday & Anniversary calendars](/docs/busycal/70599-birthdays-and-anniversaries.md) ![Read-only Calendar](https://downloads.busymac.com/resources/img/busycal-mac/readonly-cal.png) ## How to Fix This Error[​](#how-to-fix-this-error "Direct link to How to Fix This Error") ### 1. Select a Writable Calendar[​](#1-select-a-writable-calendar "Direct link to 1. Select a Writable Calendar") When creating a new event or task, make sure you select a calendar that you own or have write permissions for. You can do this by simply clicking on the desired calendar in the [left calendar panel](/docs/busycal/70592-calendar-list.md). ### 2. Assign a Default Calendar[​](#2-assign-a-default-calendar "Direct link to 2. Assign a Default Calendar") BusyCal uses a default calendar for new events, often based on the **Currently Selected Calendar**. If the last selected calendar was read-only (like the Birthdays calendar), any new events you create will try to go to that calendar. In most cases, BusyCal will automatically select a suitable writable calendar, but there are times when it may default to a read-only calendar if it was inadvertently set as the default. To check or update your default calendar: 1. Go to **BusyCal > Settings > General** 2. Find the **Default Calendar for Events** setting 3. Make sure it’s set to a calendar you own and can write to 4. If it’s set to a read-only calendar, change it to one of your writable personal calendars ### 3. Review Your Calendar List[​](#3-review-your-calendar-list "Direct link to 3. Review Your Calendar List") To better understand which calendars are writable: 1. Open the [Calendar List](/docs/busycal/70592-calendar-list.md) in the left sidebar 2. Look for calendars under your account sections (iCloud, Google, Exchange, etc.) 3. Ensure the calendar is not a [read-only calendar](/docs/busycal/70592-calendar-list.md#symbols). Also avoid calendars in the **Other** section, which typically contains read-only subscriptions 4. Choose calendars that you've created or that have been shared with you with edit permissions --- # Settings Reset After Quit: Fixing Corrupt Preferences If your BusyCal settings (such as default view, days in week, start of week, or other preferences) keep reverting to their defaults after quitting and relaunching the app, your **preference file has likely become corrupted**. This can sometimes happen with sandboxed applications, especially after an update to macOS or some other system related change. ## Symptoms of a Corrupt Preference File[​](#symptoms "Direct link to Symptoms of a Corrupt Preference File") You may have a corrupt preference file if you experience any of the following: * Settings you change in BusyCal preferences don't persist after quitting * Your default view (Week, Month, Day, etc.) reverts to a different view on each launch * The "Days in Week" setting resets to an unexpected value * Other customizations (colors, display options, etc.) don't save between sessions * The issue appeared suddenly, often after an update or macOS change ## Solution: Reset the Preference File[​](#solution "Direct link to Solution: Reset the Preference File") The solution depends on which version of BusyCal you're using. Follow the appropriate instructions below. Important Resetting the preference file will reset **all** your view settings, display preferences, and other customizations to their defaults. However, this will **not** affect your calendar data, events, tasks, or account configurations. ### For BusyCal (Standard Version)[​](#standard-version "Direct link to For BusyCal (Standard Version)") If you downloaded BusyCal directly from our website (not through Setapp or the Mac App Store): 1. **Quit BusyCal completely.** 2. Open **Finder**. 3. From the menu bar at the top of the screen, click **Go > Go to Folder**. 4. Copy and paste the following path exactly as written into the dialog box and press **Enter**: ``` ~/Library/Containers/com.busymac.busycal3/Data/Library/Preferences/ ``` 5. In the folder that opens, locate and **delete** the file named `com.busymac.busycal3.plist`. 6. **Relaunch BusyCal**. After relaunching, BusyCal will create a new, clean preference file. You will need to re-apply your desired view settings and other preferences, but they should now save correctly between sessions. ### For BusyCal (Setapp Version)[​](#setapp-version "Direct link to For BusyCal (Setapp Version)") If you're using BusyCal through Setapp: 1. **Quit BusyCal completely.** 2. Open **Finder**. 3. From the menu bar at the top of the screen, click **Go > Go to Folder**. 4. Copy and paste the following path exactly as written into the dialog box and press **Enter**: ``` ~/Library/Containers/com.busymac.busycal-setapp/Data/Library/Preferences/ ``` 5. In the folder that opens, locate and **delete** the file named `com.busymac.busycal-setapp.plist`. 6. **Relaunch BusyCal**. After relaunching, BusyCal will create a new, clean preference file. You will need to re-apply your desired view settings and other preferences, but they should now save correctly between sessions. ## Advanced: Manual Repair of Preference File[​](#advanced-repair "Direct link to Advanced: Manual Repair of Preference File") If you're comfortable using Terminal and want to try fixing the preference file without losing all your settings, you can attempt a manual repair: Advanced Users Only This method requires using Terminal and manually editing system files. If you're not comfortable with the command line, please use the simpler reset method described above. ### Steps for Manual Repair:[​](#steps-for-manual-repair "Direct link to Steps for Manual Repair:") 1. **Quit BusyCal completely.** 2. **Open Terminal** (found in `/Applications/Utilities/Terminal.app`). 3. Navigate to the preference file location based on your version: **For Standard BusyCal:** ``` cd ~/Library/Containers/com.busymac.busycal3/Data/Library/Preferences/ ``` **For Setapp BusyCal:** ``` cd ~/Library/Containers/com.busymac.busycal-setapp/Data/Library/Preferences/ ``` 4. **Convert the binary preference file to XML format** so you can edit it: **For Standard BusyCal:** ``` plutil -convert xml1 com.busymac.busycal3.plist ``` **For Setapp BusyCal:** ``` plutil -convert xml1 com.busymac.busycal-setapp.plist ``` 5. **Edit the preference file** using a text editor. For example, to open it with TextEdit: **For Standard BusyCal:** ``` open -a TextEdit com.busymac.busycal3.plist ``` **For Setapp BusyCal:** ``` open -a TextEdit com.busymac.busycal-setapp.plist ``` 6. **Look for and fix any problematic values.** Common issues include: * `daysInWeek` set to `-1` (should be `7` for a full week, or `5` for work week) * Malformed keys or values * Unexpected data types For example, if you see: ``` <key>daysInWeek</key> <integer>-1</integer> ``` Change it to: ``` <key>daysInWeek</key> <integer>7</integer> ``` 7. **Save the file** and close the text editor. 8. **Relaunch BusyCal**. 9. **Quit BusyCal** again to let it save the preferences and convert the file back to binary format. 10. **Relaunch BusyCal** to verify the settings are now saving properly. If this manual repair doesn't work, you can always fall back to the complete reset method described earlier. ## Why Do Preference Files Become Corrupt?[​](#why-corrupt "Direct link to Why Do Preference Files Become Corrupt?") Preference file corruption can occur due to several reasons: * **Unexpected app termination** during a preferences write operation * **System crashes** or forced shutdowns while the app is running * **Disk errors** or filesystem issues * **Incomplete updates** where the preference migration doesn't complete properly * **File permission issues** that prevent proper reading or writing While rare, these situations can cause the preference file to become malformed or contain invalid data, preventing BusyCal from properly reading or saving your settings. ## Still Having Issues?[​](#support "Direct link to Still Having Issues?") If you've tried the steps above and your settings still aren't saving properly: 1. Make sure you've completely quit BusyCal before deleting the preference file (check Activity Monitor if unsure) 2. Verify you deleted the correct `.plist` file for your version (standard vs. Setapp) 3. Check that you have proper file permissions in your Library folder 4. Try restarting your Mac after deleting the preference file If the issue persists after trying all these steps, please [contact our support team](/docs.md#technical-support) with: * Which version of BusyCal you're using (standard or Setapp) * Your macOS version * The specific settings that aren't saving * Whether you tried the reset or manual repair method We'll be happy to help you resolve the issue. --- # Quick Entry uses the wrong calendar ## Why does Quick Entry use the wrong calendar?[​](#why-does-quick-entry-use-the-wrong-calendar "Direct link to Why does Quick Entry use the wrong calendar?") Quick Entry creates events and tasks using your **default calendars** unless you specify a calendar explicitly. ## Fix: Set the default calendar[​](#fix-set-the-default-calendar "Direct link to Fix: Set the default calendar") ### Events[​](#events "Direct link to Events") 1. Go to **BusyCal > Settings > General**. 2. Set **Default calendar for Events** to a writable calendar. ### Tasks[​](#tasks "Direct link to Tasks") 1. Go to **BusyCal > Settings > Tasks**. 2. Set **Default Calendar for Tasks** to a **task calendar**. If your task calendars are greyed out, see [Default calendar for tasks](/docs/faqs/98764-default-calendar-for-todos-shows-all-listed-calendars-grayed-out.md). ## Tip: Specify a calendar in Quick Entry[​](#tip-specify-a-calendar-in-quick-entry "Direct link to Tip: Specify a calendar in Quick Entry") You can override the default by adding a slash and calendar name: * `Lunch with Sam tomorrow /work` * `-Buy toner /personal` See [Quick Entry](/docs/busycal/70605-quick-entry.md#setting-the-calendar) for more examples. --- # Rich text notes are missing after exporting a contact or event Both BusyContacts and BusyCal support rich text (formatted) notes. Rich text notes are stored in a separate field that only BusyContacts or BusyCal can read. When you export a contact as a vCard (`.vcf`) or an event as an ICS (`.ics`) file and open it in another app — such as Apple Contacts on iPhone, Apple Calendar, or Outlook — only the standard plain text notes field is included. If your notes were entered or edited as rich text, the other app will not see them. ## How to tell if your notes are rich text[​](#how-to-tell-if-your-notes-are-rich-text "Direct link to How to tell if your notes are rich text") If the notes in BusyContacts or BusyCal contain any formatting — bold, italic, colored text, links, or bullet lists — they are stored as rich text. ## How to fix it[​](#how-to-fix-it "Direct link to How to fix it") Before exporting, convert the notes to plain text: 1. Open the contact or event in BusyContacts or BusyCal. 2. Click in the Notes field. 3. Choose **Format > Make Plain Text**. This merges the rich text content back into the standard notes field. After that, export or email the item again and the notes will carry over to other apps. ## Why this happens[​](#why-this-happens "Direct link to Why this happens") The vCard and ICS standards only define a plain text notes field. Rich text content is stored by BusyContacts and BusyCal in an extended property that other apps do not read. Converting to plain text puts the content back into the standard field so it is universally visible. tip If you sync between multiple Macs using BusyContacts or BusyCal, rich text notes sync normally between those apps. This only affects exports to other apps or devices that do not use BusyContacts or BusyCal. --- # How do I show equinox and solstice dates in BusyCal? If you want to see the seasonal markers (Spring/Summer/Autumn/Winter start dates) without subscribing to a separate calendar feed, BusyCal includes an **alternate calendar** option. ## Use the “World Season Calendar”[​](#use-the-world-season-calendar "Direct link to Use the “World Season Calendar”") 1. Open **BusyCal > Settings**. 2. Select **General**. 3. Enable **Show alternate calendar:**. 4. From the pop-up menu, choose **World Season Calendar**. BusyCal will then display the season markers as an alternate calendar overlay. --- # How do I show multiple time zones in Day/Week view? ## Show a second or third time zone[​](#show-a-second-or-third-time-zone "Direct link to Show a second or third time zone") BusyCal can display up to **three** time zones in Day and Week views: 1. Open **BusyCal > Settings > Time Zones**. 2. Enable **Show second time zone in Day and Week views**. 3. (Optional) Enable **Show third time zone in Day and Week views**. 4. Choose the time zones you want from the dropdowns. The time zones appear as separate columns in the **time ruler** on the left side of Day/Week view. For more details, see [Time Zones](/docs/busycal/70609-time-zones.md) and [Week View: Multiple Time Zones](/docs/busycal/70588-week-view.md#multiple-time-zones). --- # BusyCal Is Slow or Sluggish: How to Speed It Up If BusyCal or BusyContacts on the mac feels slow, sluggish, or frequently shows the spinning **beach ball**, this may be caused by external factors such as syncing delays, large or corrupt event data, or unexpected system behavior. ## Try Optimizing the Database[​](#try-optimizing-the-database "Direct link to Try Optimizing the Database") First, launch the app and from under the **Help** menu in the macOS menu bar, click on **Optimize Database**. Quit and relaunch. See if this makes a difference. If this does not help, to diagnose the issue, please provide us with a **CPU sample** while the slowdown is happening. ## Capturing a CPU Sample[​](#cpu-sample "Direct link to Capturing a CPU Sample") To help us analyze what's causing the slowdown, follow these steps to capture a CPU sample **while the app appears hung** with a beach ball showing: 1. Open **Activity Monitor** (`/Applications/Utilities/Activity Monitor.app`) or search for **"Activity Monitor"** using Spotlight. 2. Use the **search field** in Activity Monitor to look for `BusyCal` (or `BusyContacts`). 3. Once found, **double-click** on the app's name in the list to open a detailed view. 4. While the app is hung (e.g., the spinning beach ball appears), click the **Sample** button in the lower-left corner of the Activity Monitor window. 5. After the sampling completes, click **Save**, then save the text file to your Desktop. 6. **Zip** the text file and attach it to your [support request](/docs.md#technical-support) when contacting us. This information will help us pinpoint the cause of the slowdown and suggest an appropriate fix. ## Additional Troubleshooting Steps[​](#troubleshooting "Direct link to Additional Troubleshooting Steps") If you experience frequent slowdowns, you can try the following: * **Restart your Mac** – Sometimes, a simple reboot clears memory issues or background processes affecting performance. * **Check CPU and Memory Usage** – In Activity Monitor, check if BusyCal is consuming unusually high CPU or memory. * **Turning off Accounts** - If you have many accounts added to BusyCal, it may be a single event out of many accounts that's misbehaving. Open **BusyCal Settings > Accounts** and uncheck the **Enable this account** option for all accounts. Now quit and relaunch the app and re-enable each account one by one to discover which account is causing the slow-down and then [reach out to us](/docs.md#technical-support). * **Rebuild the database** – If the issue persists, resetting BusyCal’s database may help. Contact [support](/docs.md#technical-support) for guidance. If the issue continues after trying these steps, please send us a CPU sample for further analysis. --- # “Start week on” doesn’t change the leftmost day in Week view BusyCal’s **Start week on** setting controls which day appears first in **Week/Month views** when you’re showing a full week. However, if your Week view is set to a **custom day range** (for example, 3–14 days), BusyCal can align that range to **start with today** instead of the fixed start-of-week day. ## Fix: Switch Week view to “One Week” (or “Two Weeks”)[​](#fix-switch-week-view-to-one-week-or-two-weeks "Direct link to Fix: Switch Week view to “One Week” (or “Two Weeks”)") 1. Open **BusyCal > Settings > General**. 2. Under **Week view shows**, choose **One week** (or **Two weeks**). This makes Week view consistently align to your **Start week on** setting. ## Related docs[​](#related-docs "Direct link to Related docs") * [Week View: Week alignment explained](/docs/busycal/70588-week-view.md#weekviewalignment) * [Settings: General](/docs/busycal/70607-preferences.md#general-preferences) --- # A subscribed (WebDAV) calendar on my Mac isn’t showing on iPhone/iPad If you subscribed to a public calendar (WebDAV / `.ics`) in BusyCal on your Mac and want it to appear on iPhone/iPad, it won’t automatically sync through all services. ## Fix: Sync the subscription through iCloud (recommended)[​](#fix-sync-the-subscription-through-icloud-recommended "Direct link to Fix: Sync the subscription through iCloud (recommended)") Follow the step-by-step guide here: * [Syncing Calendar Subscriptions with an iOS Device](/docs/busycal/70629-syncing-calendar-subscriptions-with-an-ios-device.md) ## Alternative[​](#alternative "Direct link to Alternative") If you’re not syncing through iCloud, you can subscribe directly on iOS in BusyCal: * [BusyCal iOS: Subscribing to Public Calendars](/docs/busycalios/70664-subscribing-to-public-calendars.md) --- # What Is the Sunrise/Sunset Button in Day/Week View? In Day and Week views, BusyCal can display sunrise/sunset-related controls as part of its working-hours and timeline features. In current BusyCal builds, that toolbar control is part of the **Working Hours** toggle UI, and there isn’t a preference to hide only that button. ## Tip[​](#tip "Direct link to Tip") If you’re accidentally clicking it when you meant to use nearby navigation controls, consider using the keyboard shortcut for toggling working hours (if configured), or clicking the arrow/toggle area more deliberately. ## Related docs[​](#related-docs "Direct link to Related docs") * [Day View: Show Working Hours Only](/docs/busycal/70587-day-view.md#show-working-hours) * [Week View](/docs/busycal/70588-week-view.md) --- # Tags are not syncing (or they disappear after sync) If tags are being removed from events (or don’t appear consistently across devices), the cause is usually the **calendar service** you’re syncing with. BusyCal can store tags in standard CalDAV fields (CATEGORIES) and/or in extended properties, but **some servers strip these properties during sync** (or don’t expose them to third-party apps in certain scenarios). ## Common causes[​](#common-causes "Direct link to Common causes") * **CalDAV server limitations:** Some servers remove tags/extended properties during sync. * **Shared calendars:** Tag syncing can vary depending on permissions and server behavior. * **Meeting invitations:** Some services strip tags from meeting invitations, especially for invitees. ## What you can do[​](#what-you-can-do "Direct link to What you can do") * Use **My Tags** if you want tags to remain **local/private** on your Mac (and not be affected by server sync). * If you’re on Microsoft 365: <!-- --> * Legacy EWS accounts mapped tags to Outlook Categories. * Microsoft Graph accounts use a dedicated **Categories** field for Outlook category syncing. ## Related docs[​](#related-docs "Direct link to Related docs") * [Tags: Troubleshooting](/docs/busycal/70597-tags.md#troubleshooting) * [Info Panel: My Tags / My Notes / My Alarms](/docs/busycal/70595-info-panel.md) --- # Tasks added on iPhone/iPad don’t show up on the Mac If you create tasks in BusyCal on iPhone/iPad but they don’t appear on BusyCal for Mac, it’s usually one of these causes: * The tasks were created in a **different account/calendar/list** than the one you’re viewing on the Mac. * A **Calendar Set / Smart Filter** on the Mac is hiding the task calendar. * The task calendar is visible on iOS but **unchecked** (hidden) on the Mac. ## Fix checklist[​](#fix-checklist "Direct link to Fix checklist") 1. On iPhone/iPad, open one of the missing tasks and confirm which **calendar/list** it belongs to. 2. On the Mac, ensure that same calendar is **enabled** in the Calendar List sidebar. 3. If you’re using a **Calendar Set / Smart Filter**, make sure the task calendar is included in that set (or switch to a view that shows all calendars). 4. Trigger a refresh: <!-- --> * Mac: press `⌘R` * iOS: open BusyCal and pull to refresh if needed If you’re syncing Microsoft 365 / Outlook, make sure you’re using the **Office 365 (Microsoft Graph)** account type (recommended) rather than legacy Exchange methods. If none of the above applies and the tasks still aren't appearing, it may be an Apple Reminders sync delay. See [Reminders Sync Slow or Stuck](/docs/busycal/114450-using-busycal-with-reminders.md#sync-slow-or-stuck) for a step-by-step diagnostic. ## Related docs[​](#related-docs "Direct link to Related docs") * [Tasks (BusyCal for Mac)](/docs/busycal/70594-tasks.md) * [Calendar Sets (BusyCal for iOS)](/docs/busycalios/131439-calendar-sets.md) * [Using BusyCal with Reminders (Mac)](/docs/busycal/114450-using-busycal-with-reminders.md#sync-slow-or-stuck) * [Using BusyCal with Reminders (iOS)](/docs/busycalios/114474-using-busycal-with-reminders.md#sync-slow-or-stuck) * [Using BusyCal with Office 365 (Microsoft Graph)](/docs/busycal/140983-using-busycal-with-office-365-microsoft-graph.md) --- # Task Due Earlier Today Still Shows Under Today In BusyCal’s Task List, the **Overdue** section (when sorting/grouping by due date) is primarily based on the **date** becoming past-due, not the due **time** within the current day. That means a task due at 9:00 AM can still remain under **Today** for the rest of the day, and it will move to **Overdue** once the date rolls over. ## Why BusyCal does this[​](#why-busycal-does-this "Direct link to Why BusyCal does this") Many users use “Today” as a working list for the day. Treating tasks as overdue the moment the clock passes their due time can cause tasks to jump sections throughout the day and make the Today list harder to manage. ## Tip[​](#tip "Direct link to Tip") If you want past-due tasks to stay visible in your working view, consider enabling **Carry forward uncompleted Tasks** in Task settings so older tasks remain visible on the current date. ## Related docs[​](#related-docs "Direct link to Related docs") * [Tasks](/docs/busycal/70594-tasks.md) * [Settings](/docs/busycal/70607-preferences.md) --- # Tasks appear in the wrong order in Month View ## Why are tasks out of order in Month View?[​](#why-are-tasks-out-of-order-in-month-view "Direct link to Why are tasks out of order in Month View?") In Month View, tasks are grouped and sorted using the same rules as the Task List: * **Timed tasks** appear inline with events at their due time. * **Dated tasks** are grouped together after events. * Items with the same date/time are sorted by **priority** and **title**. If tasks still look out of order, they may have been **manually reordered** in the Task List. ## Fix: Reset manual task ordering[​](#fix-reset-manual-task-ordering "Direct link to Fix: Reset manual task ordering") 1. Open the **Task List** (View > Show Task List). 2. Click a task and press **⌘-A** to select all. 3. Right‑click any selected task and choose **Reset Manual Task Ordering…**. For full sorting options, see [Task Sorting](/docs/busycal/70594-tasks.md#to-do-sorting). --- # Why can’t I select “bicycle” for Travel Time (Cycling)? BusyCal’s Travel Time feature uses routing/directions data to provide ETA suggestions. BusyCal can show **Cycling / Bike** travel time **when a cycling route is available** for the selected locations. If you don’t see a cycling option, it usually means the routing provider can’t calculate a cycling route for that particular origin/destination (for example, due to region coverage, or because the location isn’t a fully structured address). ## Troubleshooting[​](#troubleshooting "Direct link to Troubleshooting") 1. In the event’s **Location** field, select a **structured address** from the suggestions (instead of free-typed text). 2. Try a nearby **landmark** (for example a well-known building name) to confirm cycling routes exist in that area. 3. Re-open the Travel Time menu and give it a moment to load route suggestions. ## Related docs[​](#related-docs "Direct link to Related docs") * [Locations, Maps & Travel Time](/docs/busycal/70603-locations-maps-travel-time.md#travel-time) --- # Why can't I delete the Reminders ⚠️ list in my iCloud account? If you've upgraded to the new Reminders app in iOS 13 or macOS Catalina, you might have noticed a "Reminders ⚠️" list in your iCloud account that contains a single task with a message like "The creator of this list has upgraded these reminders." Despite your attempts to delete this list in BusyCal or other calendar apps, it keeps reappearing, which can be frustrating. ## Why Can't I Delete "Reminders ⚠"[​](#why-cant-i-delete-reminders- "Direct link to Why Can't I Delete \"Reminders ⚠\"") This persistent "Reminders ⚠️" list is created by iCloud as part of the Reminders app upgrade process: 1. The list is a "legacy/migrated" marker created when you upgraded to the new Reminders format. Your tasks can now only sync via the [new Reminders.app](/docs/busycal/114450-using-busycal-with-reminders.md) 2. iCloud has a requirement that **at least one task list must exist** on the server at all times. It will not allow you to delete the last remaining task list. 3. If you delete this list, iCloud's systems automatically restore it because it considers this list to be the "default" or "required" list after migration. note Unfortunately, there is no way to permanently delete this list, as it's maintained by iCloud. ### Hide the List in BusyCal (Recommended)[​](#hidetasklist "Direct link to Hide the List in BusyCal (Recommended)") Fortunately, BusyCal provides a way to hide unwanted calendars from view. 1. In BusyCal for macOS, control-click on the "Reminders ⚠️" list in the calendar panel. 2. Select **Hide Calendar**, then click **Hide** to confirm. 3. Open the **View** menu and check **Show Hidden Calendars**. If a checkmark appears beside it, click it to turn it off. The list remains on the server but no longer appears in your calendar views. If the list is still there after you hide it Step 3 is the one that is easy to miss. **Hide Calendar** marks the list as hidden, and **View > Show Hidden Calendars** decides whether hidden lists stay in the sidebar. If "Reminders ⚠️" is still listed but its checkbox is now dimmed and a crossed-out eye appears at the right edge of its row, the list is already hidden and **Show Hidden Calendars** is simply still turned on. Turn that menu item off and the list disappears. This option lets you maintain the iCloud requirement while removing the visual clutter. The "Reminders ⚠️" list with its migration message is completely benign. It doesn't affect syncing or functionality of your other calendars and task lists. It's purely a visual annoyance that can be hidden in BusyCal. --- # Does BusyCal iOS support undoing actions? Unfortunately BusyCal iOS does not currently support the undo function. We plan on supporting this in a future update. --- # How do I use Siri with BusyCal? BusyCal ships its own spoken phrases, so Siri can add and read items without you building a shortcut first. Say "Hey Siri" and then one of these: * "Quick add with BusyCal" to describe an event in your own words. For a task, say "Create a task in BusyCal", or build a shortcut around **Quick Add** with **Item Type** set to Task. * "Create an event in BusyCal" or "Create a task in BusyCal" when you want Siri to ask for the details. * "Show my day in BusyCal" for today, or "What's coming up in BusyCal" for the week. * "Find events in BusyCal" or "Find tasks in BusyCal" to search, and "Complete a task in BusyCal" to check one off. * "When am I free in BusyCal" for your next open slot. * "Show a calendar set in BusyCal" to switch to a saved Calendar Set. Siri asks for whatever it still needs, then reads the result back: what it added, how many events or tasks matched, or your next free slot. Items are saved whether or not BusyCal is open, and only the Calendar Set request brings BusyCal forward. This works on macOS 15 and iOS 18 or later. For anything else, build a shortcut in the **Shortcuts** app with BusyCal's actions, give it a short name, and say "Hey Siri" followed by that name. The full action list is in [Siri and Shortcuts for Mac](/docs/busycal/siri-and-shortcuts.md) and [Siri and Shortcuts for iPhone and iPad](/docs/busycalios/140000-shortcuts.md). ## Talking to Siri in your own words[​](#talking-to-siri-in-your-own-words "Direct link to Talking to Siri in your own words") On macOS 27 and iOS 27, Siri can work with your BusyCal events and tasks directly, with no shortcut in between. You can say things like "add lunch with Sam tomorrow at 1", "move my 3pm meeting to Thursday", "mark the groceries task done", or "what's on my calendar this week". Siri can create, change, and delete events and tasks, and create a task calendar. It cannot add or change attendees. ## If Siri sends your item to the wrong app[​](#if-siri-sends-your-item-to-the-wrong-app "Direct link to If Siri sends your item to the wrong app") Saying "remind me" or "add an event" without naming BusyCal sends the item to Apple's Reminders or Calendar app. Include "in BusyCal" in the request, or use a named shortcut, so the item goes straight to BusyCal. ## If Siri cannot see your calendars[​](#if-siri-cannot-see-your-calendars "Direct link to If Siri cannot see your calendars") On iPhone and iPad, calendars in a protected Calendar Set stay hidden from Siri and Shortcuts, even while BusyCal itself is unlocked. If **Protected Calendar Sets** is set to **All**, Siri sees no calendars at all. Change which sets are protected under **Settings** > **Security** in BusyCal. See [Settings](/docs/busycalios/70670-settings.md#security). On the Mac, a Calendar Set is a **Smart Filter** saved with its **Remember calendar set (visible calendars)** option turned on. Smart Filters saved without this option are not offered as Calendar Sets to Siri, Shortcuts, the Focus filter, AppleScript, or the Claude Desktop extension. See [Smart Filters](/docs/busycal/70612-smart-filters.md#calendar-sets). --- # Why does BusyContacts launch automatically? If you have both **BusyCal** and **BusyContacts** installed, you may notice that launching BusyCal sometimes automatically opens BusyContacts in the background. ## Why This Happens[​](#why-this-happens "Direct link to Why This Happens") BusyCal and BusyContacts are designed to work together as an integrated CRM solution. They share data to provide enhanced functionality, such as: * **Linking Events to Contacts**: Viewing a contact in BusyContacts shows their related events from BusyCal. * **Activity List**: BusyContacts displays recent calendar activity for each person. * **Birthdays & Anniversaries**: BusyCal can fetch birthday and anniversary details directly from BusyContacts. Because of this deep integration, the two apps often communicate with each other. If BusyCal needs to fetch data that is managed by BusyContacts (like a specific contact detail or a linked event), macOS may launch BusyContacts to fulfill that request. ## How to Stop It[​](#how-to-stop-it "Direct link to How to Stop It") If you prefer to keep BusyContacts closed until you manually open it, you can try the following: ### 1. Disable "Show Birthdays calendar"[​](#1-disable-show-birthdays-calendar "Direct link to 1. Disable \"Show Birthdays calendar\"") If BusyCal is set to show birthdays, it may query BusyContacts for this data. 1. Open **BusyCal > Settings > General**. 2. Uncheck **Show Birthdays calendar**. 3. Uncheck **Show Anniversaries calendar**. ### 2. Check "Contacts" Integration[​](#2-check-contacts-integration "Direct link to 2. Check \"Contacts\" Integration") If you have the "Contacts" field enabled in the Info Panel, BusyCal may try to link events to people in your address book. 1. Open **BusyCal > Settings > Info Panel**. 2. Uncheck **Contacts**. ### 3. Check for Linked Events[​](#3-check-for-linked-events "Direct link to 3. Check for Linked Events") If you have recently viewed or edited an event that is explicitly linked to a Contact (via the "Contacts" field), BusyCal might be trying to refresh that link. --- # Widgets or Apple Watch show missing events ## Why are my widgets or Apple Watch missing events?[​](#why-are-my-widgets-or-apple-watch-missing-events "Direct link to Why are my widgets or Apple Watch missing events?") BusyCal widgets (and the BusyCal Apple Watch app) use a **specific Calendar Set**. If that set doesn’t include the calendars you expect, widgets and the watch app may appear empty or incomplete. ## Fix: Select the correct Calendar Set[​](#fix-select-the-correct-calendar-set "Direct link to Fix: Select the correct Calendar Set") 1. Open **BusyCal > Settings**. 2. Tap **Calendar Sets**. 3. Tap **Widgets & Watch**. 4. Choose a Calendar Set that includes the calendars you want shown. ## Tasks missing from Apple Watch[​](#tasks-missing-from-apple-watch "Direct link to Tasks missing from Apple Watch") If the Calendar Set is correct but some tasks are missing: * A task must have a **due date** to appear in the BusyCal Watch app. * A due time is not required for the main Tasks list. * Complications that show what is happening now or next use timed items, so a task also needs a **due time** to appear there. * Apple Reminders lists do not need to be converted into BusyCal task calendars. The same display rules apply to both. For details, see [BusyCal for Apple Watch](/docs/busycalios/apple-watch.md#task-display-rules). ## Refresh the data[​](#refresh-the-data "Direct link to Refresh the data") If the Calendar Set is correct but the widget still looks stale: * Open BusyCal once to trigger a refresh. * Remove and re-add the widget to force an update. If the Watch looks stale, open BusyCal on the iPhone once, then open BusyCal on the Watch again while the devices are connected. For more details, see [Widgets](/docs/busycalios/145201-widgets.md#widget-calendar-sets), [BusyCal for Apple Watch](/docs/busycalios/apple-watch.md), and [Calendar Sets](/docs/busycalios/131439-calendar-sets.md#ios-set-widgets-watch). --- # Mailing List ## Subscribe Subscribe to BusyMac news, release highlights, and occasional offers. This only changes the normal newsletter preference. [Email Address](<mailto:Email Address>)Subscribe ## Unsubscribe Unsubscribe from BusyMac newsletter and product-update mail. You will still receive transactional license, order, and support messages when needed. [Email Address](<mailto:Email Address>)Unsubscribe ---