If you have been trying to get your Google Calendar to sync to your iOS device(s) or your Mac, but can't get all of your Google calendars to show up, I may have the answer: Unless you have a paid Google Apps account, use https://www.google.com/calendar/syncselect to select which calendars you want to sync via CalDAV.
Within your calendar app (on the Mac or on iOS) you can always choose which calendar(s) to show, but when dealing with Google calendar, your other calendars will only appear if they have been enabled.
(If you use Gmail over IMAP you may have gone through the process of choosing which labels appear as IMAP folders. The process of enabling CalDAV support for your calendars is something like that.)
The biggest enemy that you will have in getting this to work is previous experience with syncing Google and iOS devices, especially because Google has been fairly sloppy with its instructions, all of which led me on a not-very-fun technological wild goose chase tonight.
For more on those details, and what to watch out for, keep reading. (Spoiler alert: I've already given away the ending.)
Even Google can't keep the instructions straight
For as long as I can remember, Google Calendar on iPad or iPhone/iPod touch devices has had this annoying "quirk" - if you have more than one calendar, you have to go to a web page on Google's site and "enable" each calendars you want to use on each iOS device.
"Sync Google Calendar with your iOS device" appears to be Google's most up-to-date instructions for setting this up, although it's hard to tell because there's no "as of" or "last updated" date anywhere on the page. At the top of the page are the basic steps on iOS for creating a new account in iOS 7, but the crucial piece of information comes at the very bottom of the page: "By default, only your primary calendar will be synced with your device. If you have additional calendars you'd like to sync, follow the instructions below."
Visit the following page from your device's mobile browser: https://www.google.com/calendar/syncselect
- Google Apps users can go to
- Google Apps users can go to
- Select the calendars you'd like to sync, then click Save.
The selected calendars will be displayed on your device at the time of the next sync.
Problem #1: Although the first line says, "Visit the following page from your device's mobile browser: https://www.google.com/calendar/syncselect", you don't need to visit it in your device's mobile browser. In fact, when you go to that page, at the very top it says: "Select calendars to sync to your iPhone/iPad/iCal*" and at the bottom of the page "* or any other CalDAV device." So it doesn't matter which browser you use. The good news is that Google no longer has you set different calendars for different devices, which you might remember if you have used Google Calendar with iOS devices in the past.
Problem #2: The second line is more problematic: "Google Apps users can go to
https://m.google.com/sync/settings/". First of all, it's not an actual link, in fact, it's actually wrapped in
</code> for some reason. Let's call that "2a".
2b) But let's ignore the URL itself, because my bigger gripe is with the word "can" as in "Google Apps users can go to..." What does it mean they "can" go there? Does it mean that it's optional? They can use that URL or they can use the previous one? (HINT: NO! IT DOESN'T!)
2c) Although it sounds like that URL might be an optional one for Google Apps users, those URLs lead to two very different pages with two very different results.
2d) Remember back in "Problem #1" when Google claimed that you had to visit https://www.google.com/calendar/syncselect from your device's mobile browser, but you didn't? Well, turns out that you do have to use your mobile device's browser to see the settings at https://m.google.com/sync/settings/, otherwise it will tell you to go to http://m.google.com/sync which, in turn, leads you to http://www.google.com/sync/index.html.
If you do go to https://m.google.com/sync/settings/ with a mobile browser, it will take you to https://m.google.com/sync/settings/iconfig/welcome which will show you a "Google Sync" page with the header "Manage devices" and a list of iPad and iPhones, showing the date the last sync for each device. There's no information about these devices, no actual device names, and there's no way to remove devices from the list.
At the bottom of the page it says: "Bookmark this page so you can easily change your settings" followed by "Trying to manage Google Apps account? Configure your domain at m.google.com". If you have been using Google Calendar with iOS devices for a long time, as I have, you're probably very familiar with that page, and may have even followed Google's advice to bookmark it for future reference. I did.
But if you actually do go to http://m.google.com, even on your mobile device's browser, it will actually take you to http://www.google.com/mobile/ios/, which, coincidentally, does not give you any way whatsoever to manage your Google Apps account.
Confused? Welcome to partial backwards compatibility.
Google has no one to blame for this mess except themselves. Most of this mess is a result of Google deciding to kill off Google Sync. Except not really kill it off. Quoting from Google Sync End of Life: "Google Sync was designed to allow access to Gmail, Google Calendar, and Contacts via the Microsoft® Exchange ActiveSync® protocol. With the recent launch of CardDAV, Google now offers similar access via IMAP, CalDAV, and CardDAV, making it possible to build a seamless sync experience using open protocols."
Or, to paraphrase: "Look, we had to pay Microsoft to license Exchange ActiveSync, and we were doing it mostly for customers who weren't paying us anything. Well, turns out that paying for something that other people aren't paying you for, is, like, a total bummer, according to our accountants. So we did that for long enough to make sure that people were used to using our stuff, but now there's another way to do this that doesn't cost anything, and so we're going to use that instead, because open! And, also, you know, because paying Microsoft is a downer. But, don't worry, the new version is just as good as what we've always had. Oh, except for push. Yeah, that doesn't work with the free option. But it's totally free! And we don't have to pay Microsoft anymore. Did we mention that part?"
Google tried to make this transition as seamless as possible: devices which were already setup to use ActiveSync could continue to use it, but no new devices would be able to use it. (At one point it was suggested that if you restored a new device from an old device you would be able to use it on the new device, but I have not tried that.) Also, people who pay for a Google Apps account could continue to use it. However, free Google Apps users (such as some educational users, non-profits, or personal domains which were grandfathered in before Google shuttered that program) could not, despite being "Google Apps" users.
What we are left with is a confusing mix of outdated information (if you just search the web for information about setting up Google calendar on your iOS device), incorrect information (including some from Google itself), or just downright confusing information.
This became a lot less theoretical for me when I tried to share my Google calendar with my wife. She could see it on her iPad, but not on her iPhone. When I went to https://m.google.com/sync/settings/iconfig/welcome while logged into her account, it showed an iPad has in sync as of today, but the most recent entry for her iPhone was over a year ago.
I spent quite a long time time trying to figure out why the iPhone wouldn't sync properly, and, in fact, wouldn't even show the correct calendars. I was frustrated by the fact that https://m.google.com/sync/settings/iconfig/welcome does not show any device information besides the generic name (iPad or iPhone) and there is no way to delete a device from that list. I could add events to other calendars, even Google calendars, but my calendar stubbornly refused to even appear in the list. I even pulled up the mobile version of Google calendar in Mobile Safari on her iPhone and added an event through it, thinking that might somehow communicate to Google.com that this device was syncing. I could see my calendar in her account through Mobile Safari, but it would still not show up in her list of calendars. I even deleted the account from her iPhone, quit the calendar app, added the account back in, and tried again. Still no sync.
Having reached the limit of my ideas, I went to see who else had dealt with this problem, and limiting my search results to only show me relatively recent search results, I came across a forum post which explained: "when you switch from using 'Exchange' sync on the iPhone to configuring a 'Gmail' account (which uses CalDAV), there are ramifications that Google doesn't do a great job of explaining." It then went on to suggest using https://www.google.com/calendar/syncselect or https://www.google.com/calendar/iphoneselect or https://www.google.com/calendar/hosted/YOUR.DOMAIN.HERE/iphoneselect instead. (In my experience, all three of those seem to lead to the same page.)
That's when it (finally!) occurred to me that although I am using a "Google Apps" account, I am not using a paid Google Apps account, as I have one of the 'grandfathered' accounts. Remember way back up to "Problem #2b" above, where the page said: "Google Apps users can go to
https://m.google.com/sync/settings/"? Yup, that's what threw me off, because that's (apparently) only true for paid Google Apps users who are still using the ActiveSync method of syncing their calendars.
Paying for Google Apps gets you an extra email and calendar feature, but paying for a Gmail account does not.
One last area of confusion I have seen is over "paid Gmail accounts." First of all, technically there aren't "paid Gmail accounts." You can pay for extra storage for your Google account which will be shared across Google Drive, Gmail, and Google+. These plans have changed drastically from back when you could get 20 GB for $5/year.
But when it comes to "Google accounts" those are different from "Google Apps" accounts, and (as far as I can see) there is no way to pay for ActiveSync with a regular Gmail account, even if you pay for extra storage.