My work recently moved to a new online shift scheduling and calendar system. The work calendar can generate a URL linking to an .ics file — an iCalendar feed — making it possible to subscribe to my work schedule with calendar services such as Microsoft Outlook, Apple Calendar, and Google. Subscribed with Google Calendar, new work shifts appear in the calendar on all my devices soon after they are published.
This article outlines how to subscribe to an iCalendar feed in Google Calendar, and solve issues that can prevent Google from updating when changes are published to the original calendar.
What is an iCalendar feed?
iCalendar is a standarized system used by email and calendar programs to share calendar and appointment information. According to iCalendar.org, a site devoted to promoting the iCalendar standard, iCalendar is “an open standard for exchanging calendar and scheduling information between users and computers.”
iCalendar should not be confused with Apple iCal, the former name of what is now called Apple Calendar. iCalendar is not an app or service, but rather a standard that apps and services can use to share calendars and appointments. Calendar information is stored in a plain text file given an .ics extension. Services often make .ics files accessible via a web URL. I will be subscribing to an iCalendar feed via URL.
Step 1. Find an iCal link.
First off, we need an .ics calendar to subscribe to. There are a lot of them out there.
I found a site called OfficeHolidays.com which has subscribable calendars for the public holidays of several countries. I am going to subscribe to a calendar with U.S. public holidays, here. In Canada, our economy is closely integrated with the States, but we have some different holidays. It is often useful to keep in mind when a colleague in the U.S. will be out of the office.
Here is the URL OfficeHolidays.com provides to subscribe to their USA holidays calendar:
Step 2: Copy the URL and add it to Google Calendar
- Copy the URL of an iCalendar feed you wish to subscribe to
- Log into your Google Calendar.
- Find the Other Calendars tab, in the left sidebar. If the left sidebar is not visible, select the menu button in the top left corner to open it.
- Beside the Select + to add a calendar.
- Select From URL.
- Paste the copied URL into the field and select Add Calendar.
Events from the new calendar should now appear in your Google Calendar.
Troubleshooting Calendar Update Problems
OfficeHolidays mentions that users have noted problems with subscribed calendars not updating in Google:
Users sometime report that subscribed calendars don’t update in Google Calendar. We monitor the news on this issue and will happily reformat the feeds if we think that will improve the updating.
Failure to update and update delays seem fairly common with iCalendar subscriptions generally, and may be especially prevelant with Google. The site offer a piece of troubleshooting advice:
One tip that is worth trying is to remove the calendar and add back with ‘&nocache’ added to the url.
However, I found that adding the text &nocache to the end of a URL provided by OfficeHolidays.com broke the calendar feed. OfficeHolidays.com has changed the format of its URLs since they posted this suggestion. There used to be PHP script at the end of the URL, and &nocache would add to that script.
Screenshot from OfficeHolidays.com:
Suggestion 1: Add text &nocache to the end of URL
Adding &nocache to the end of a URL may work to solve an iCalendar feed failing to update, but only if that URL contains PHP script (look for php? in the URL). In my experience, Google Calendar update problems have been solved by other methods.
Suggestion 2: Check the iCalendar feed for errors with a validator
OfficeHolidays.com kindly offers to reformat feeds if it will help with updating. It is possible there is something that can be changed. We can check the quality of an .ics file or URL using the validator offered at iCalendar.org. If we do that with the USA Holidays URL from OfficeHolidays.com, the validator shows minor warnings, but no errors.
There is no obvious error the iCalendar.org validator can find in the OfficeHolidays.com feed that would interfere with updating.
Step 3: Look at the .ics file and check the specified refresh interval
The iCalendar.org validator tool also makes it easy to look at the source data analyzed. If we look at the actual .ics file of the USA Holidays feed, line 8 specifies a refresh interval of 48 hours:
OfficeHolidays.com is specifying in their calendar data that a subscribing calendar should check for updates every 48 hours. If a change is published to this calendar, it may take up to 48 hours for that change to be reflected in Google Calendar (or another subscribing service) because the instructions in the feed itself are to check for updates every 48 hours.
Since a holiday calendar is not likely to be updated frequently, this feed does not require more frequent refreshing.
With some iCalendar feeds that do not update in a timely manner, it may be that the data in the .ics file specifies an inappropriately long refresh interval. If we are talking about an active calendar, with events frequently added or changed, a refresh interval that is too infrequent might mean missed appointments.
Suggestion 4: Be aware of Google limitations
Google does not promise fast updates to iCal feeds. According to this article at Cheqroom.com, Google says it may take 8 or even up to 12 hours for iCal feeds to be updated in Google Calendar. The article mentions that in practice it sometimes takes up to 48 hours. This has been my experience also, updates that sometimes take 48 hours to appear in Google.
Remember, though, that iCalendar feeds specify their own refresh rates. Some feeds may be designed to be updated less frequently. Furthermore, iCalendar feeds are not forced to specify a refresh interval; the iCalendar standard does not suggest a default if no refresh interval is set. It is not entirely clear what Google Calendar is going to do with an iCal feed that does not give a refresh interval. iCal feeds that update unpredictably in Google Calendar may not have specified any refresh interval.
All of which is to say, there may be limitations and delays on Google’s end, or problems in .ics file data that prevent Google Calendar from updating iCal subscriptions in a timely manner.
Suggestion 5: Change Google sync select settings
There is an out-of-the-way Google Calendar setting that seems to affect syncing with an iCal feed. Syncing seems to be turned off by default for newly subscribed calendars in this setting.
To turn on sync for a subscribed calendar:
- Make sure you are logged into your Google account
- Perform a Google search for google calendar sync settings or navigate to calendar.google.com/calendar/u/0/syncselect
- Under Shared Calendars make sure syncing for is on for the relevant calendar
Suggestion 6: Understand Google Android system fragmentation
Once I have a calendar subscribed and updating successfully in Google Calendar, it becomes available on all my devices. Ironically, my Amazon Echo Dot sometimes seems smarter at knowing about work schedule events than my Android phone, even thought the Amazon device is not part of the Google ecosystem.
There are three calendar apps on my Samsung Galaxy S7. Three apps to do basically one thing is a feature of the fragmentation and duplication endemic to the Android operating system. The calendar app that I prefer to view and create events on my phone is Business Calendar 2. This app has several nice features I like in a phone calendar.
However, Business Calendar 2 is not the ‘real’ app on my Samsung phone, but more of a skin or shell. The real calendar is the stock Samsung Calendar app, and Business Calendar 2 acts almost as a skin over this. The Samsung Calendar app, the ‘real’ app on my phone, syncs with my Google Calendar, which is the primary calendar service I use across all devices. I sometimes use the Google Calendar app for Android to check or change certain settings, or confirm that something actually appears in my Google Calendar.
Settings in the stock Samsung calendar app, the Business Calendar 2 app, the Google Calendar Android app, or in the Google Calendar web app — any of these! — can affect whether or not calendar events appear and/or update in the calendar app I use. It is also possible to subscribe to an iCal feed directly from my phone, which caused me confusion in the past when I did it after already having subscribed with Google.
All this is to say: if you are subscribing to an iCalendar feed with Google Calendar, and sending that calender information on to an Android phone, there are some complications caused by Android fragmentation and duplication to be aware of, including relevant settings in possibly more than one app.
Feel free to comment if you have questions, or can add to or improve any of my advice. I may be inaccurate in my understanding of how some things are working — always happy to hear suggestions along those lines and learn more about how tech stuff work!
Special thanks to Z Content, developer of the useful iCalendar.com site and validator tool.