Content Manager can import events from Google Calendar so that they appear as content on your sites alongside other school content. The integration is read-only: it pulls event titles, descriptions, locations, and timestamps from calendars you choose. It does not create, modify, or delete events.
To pull calendar data without each user having to sign in, our service account uses Google's domain-wide delegation to read calendars on behalf of one Google account that you designate. Domain-wide delegation:
Already set up Google Directory Authentication? You will recognize Steps 1–3 since they configure the same service account. You can either add the calendar scopes to your existing Content Manager API clients entry, or create a new one. The user account in Step 4 can be the same account used for directory sync, as long as that person has access to the calendars you want imported.
c_a1b2c3@group.calendar.google.com or school@yourdomain).Click Add new. (If you already created a Content Manager entry during directory authentication setup, open that entry instead and add the scopes below to it.)
In Client ID, enter:
111045640482053254535This is the unique identifier for the Content Manager service account. Granting it scopes here tells Google "this specific service account is allowed to use the listed APIs in our domain."
In OAuth scopes (comma-delimited), paste the following:
https://www.googleapis.com/auth/calendar,https://www.googleapis.com/auth/calendar.events,https://www.googleapis.com/auth/calendar.calendarlist.readonlyWhat each scope is used for:
| Scope | Purpose |
|---|---|
calendar | Required by Google's Calendar API client to access calendars the user can see. |
calendar.events | Required to list events on a calendar. |
calendar.calendarlist.readonly | Read the user's calendar list to validate Calendar IDs before import. |
A note on scope breadth: The
calendarandcalendar.eventsscopes are written by Google as full-access scopes (they include both read and write in their string), but the Content Manager integration only calls the list and read endpoints. It does not create, update, or delete events. The account you designate in Step 4 is the actual access boundary — we can only read calendars that account can read.
Click AUTHORIZE.
You should now see Content Manager listed under API clients with the three calendar scopes attached. If you added these scopes to an existing entry that already had directory scopes, you will see all of them listed together.
Domain-wide delegation requires us to act on behalf of a real Google account in your domain. We will impersonate this account to read the calendars you want imported. We never see its password.
The account you designate must have read access to each calendar you want imported. Calendar permissions in Google Workspace are per-calendar, not domain-wide, so this is something you set up in Google Calendar itself (not in the Admin console).
Choose an existing user, or create a new one. We recommend a dedicated account such as contentmanager-sync@yourdomain so that audit logs clearly attribute calendar reads to the integration rather than a person. If you already designated an account during directory authentication setup, you can reuse it — just make sure it has access to the calendars in the next step.
For each Google Calendar you want Content Manager to import:
Read access is sufficient. The integration does not need "Make changes to events" or "Make changes and manage sharing."
Send the following to Imagine Everything: