3 Ways to Share Google Calendars in Google Workspace

Sharing calendars in Google Workspace sounds simple until you juggle team schedules, personal calendars, and room resources. Permissions matter. Get them wrong and you expose details; get them right and coordination clicks across teams.
This guide walks through three practical ways to share Google Calendars, when to use each, and how permission levels affect visibility and editing. You’ll learn options for specific people, Google Groups, and organization-wide or public access.
Table of Contents
Use Google Workspace’s UI
Here, you’ll use the Google Calendar web UI to share a calendar with coworkers or your whole organization. These steps follow Google’s own Calendar Help and Admin Help guides.
Open Google Calendar
- Go to Google Calendar in a browser and sign in.
- In the left panel, find My calendars. Hover over the calendar you want to share, select the three dots, then choose Settings and sharing.
Share your calendar with specific people or groups
- In Settings for your calendar, scroll to Share with specific people and groups.
- Select Add people and groups, enter the email address for a person or a Google Group, pick a permission level, then Send.
- Permissions you can choose:
- See only free/busy
- See all event details
- Make changes to events
- Make changes and manage sharing
- Tip: Share with a Google Group to give or remove access as team membership changes. Google Calendar Help: Share your calendar covers these options.
Make your calendar visible to your organization
- Still in Settings and sharing, go to Access permissions for events.
- Check Make available for [your domain].
- Choose the visibility level:
- See only free/busy
- See all event details
- This makes your calendar discoverable to people in your domain. It does not share it outside your company. Google’s docs call this “Make available for your organization.”
Create and share a team or project calendar
- In the left panel, select the plus icon next to Other calendars, then Create new calendar.
- Name it, add a description and time zone, then Create calendar.
- Open that calendar’s Settings and sharing.
- Under Share with specific people and groups, add teammates or a Google Group and set their permissions.
- For most teams, use Make changes to events. Give Make changes and manage sharing only to calendar owners. Google Calendar Help: Create a new calendar shows these steps.
Share just one event instead of the whole calendar
- Open the event, then use the Guests panel to add people or a Google Group.
- Control what guests can do with the three checkboxes: Modify event, Invite others, See guest list.
- This shares only that event. It does not give access to other events on the calendar. See Google Calendar Help: Invite people to your calendar event.
If you do not see certain sharing options
- Your admin might restrict sharing levels or external sharing. You may only see free/busy or be unable to share outside your domain.
- Check the calendar’s Settings and sharing again. If options are missing, contact your Google Workspace admin.
Admin: set org-level and external sharing controls
- In the Admin console, go to Apps, then Google Workspace, then Calendar, then Sharing settings.
- Set Internal sharing options for primary calendars to control how users can share within your domain.
- Set External sharing options for primary calendars to control sharing with people outside your domain.
- Apply settings to specific organizational units if needed, then Save.
- Google Workspace Admin Help: Control calendar sharing explains each level, including free/busy only and full event details.
Use Torii
Instead of handling this solely in Google Workspace, you can use Torii, a SaaS Management Platform, to share calendars in Google Workspace. SMPs centralize SaaS subscriptions and integrations in one place, making it simple to automate user onboarding/offboarding, review license and subscription details, and more.
Where Google Workspace might require manual steps, Torii lets you automate the process so it runs automatically once a trigger occurs. Triggers could include a new hire, an employee offboarding, or a contract renewal. This saves time when the action needs to happen often.
To share calendars in Google Workspace directly from Torii, follow these steps:
1. Sign up for Torii
Contact Torii, and ask for your free two-week proof-of-concept.
2. Connect your Google Workspace account to Torii
Once your account is live, connect Google Workspace to Torii (assuming you already have an account). Here are the instructions for the Google Workspace integration.

3. Create a Torii workflow for Google Workspace
In Torii, create an automated workflow to share calendars in Google Workspace. Go to the Workflows tab, choose a trigger, and then add an action that shares calendars in Google Workspace. From then on, whenever the trigger is met, Torii will update Google Workspace automatically.

Use Google Workspace’s API
Here, you’ll grant calendar access by creating and managing ACL rules with the Google Calendar API. No UI clicks, just HTTP calls.
Get an OAuth 2.0 access token with the right scopes
Use an access token that represents the calendar owner or an admin using domain-wide delegation. The token needs one of these scopes:
https://www.googleapis.com/auth/calendar
(read/write, includes ACLs)https://www.googleapis.com/auth/calendar.acl
(ACLs only)
Set your token so you can reuse it:
export ACCESS_TOKEN="ya29.a0Af."
Find the calendarId you want to share
You need the calendarId
to set permissions.
- Options:
- Primary calendar of the authorized user: use
primary
or that user’s email address. - Secondary calendar owned by the user: list the user’s calendars and pick the
id
. - Room or resource calendar: list resource calendars from the Admin SDK, then use that resource’s
resourceEmail
or calendar ID.
- Primary calendar of the authorized user: use
Example curl to list a user’s calendars:
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://www.googleapis.com/calendar/v3/users/me/calendarList"
Example curl to list resource calendars (Admin SDK Directory API; admin token required):
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://admin.googleapis.com/admin/directory/v1/customer/my_customer/resources/calendars"
Note:
- For resource calendars, retrieve the
resourceEmail
orresourceId
, then use that ascalendarId
with the Calendar API. - The Admin SDK call above needs one of these scopes:
https://www.googleapis.com/auth/admin.directory.resource.calendar.readonly
https://www.googleapis.com/auth/admin.directory.resource.calendar
Share the calendar by inserting an ACL rule
Create a permission by calling Calendar ACL insert:
- Endpoint:
POST https://www.googleapis.com/calendar/v3/calendars/{calendarId}/acl
- Roles:
reader
,writer
,owner
(not valid on primary calendars),freeBusyReader
- Scopes:
user
: a single user’s emailgroup
: a Google Group emaildomain
: your Google Workspace domain, likeexample.com
default
: public internet (avoid unless you intend it)
Share with one user as reader:
curl -s -X POST -H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
"https://www.googleapis.com/calendar/v3/calendars/primary/acl" \
-D '{
"role": "reader",
"scope": { "type": "user", "value": "[email protected]" }
}'
Share with a Google Group as writer:
curl -s -X POST -H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
"https://www.googleapis.com/calendar/v3/calendars/primary/acl" \
-D '{
"role": "writer",
"scope": { "type": "group", "value": "[email protected]" }
}'
Share free/busy with the whole domain:
curl -s -X POST -H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
"https://www.googleapis.com/calendar/v3/calendars/primary/acl" \
-D '{
"role": "freeBusyReader",
"scope": { "type": "domain", "value": "example.com" }
}'
Tip:
The ACL id
is usually scopeType:scopeValue
(for example, user:[email protected]
).
List current shares on a calendar
Use this to confirm or find ruleId
values for updates:
curl -s -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://www.googleapis.com/calendar/v3/calendars/primary/acl"
Update an existing share
Change the role by patching the ACL rule. You need the ruleId
from the list call.
curl -s -X PATCH -H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
"https://www.googleapis.com/calendar/v3/calendars/primary/acl/user:[email protected]" \
-d '{ "role": "writer" }'
You can also replace the entire rule with PUT.
Remove a share
Delete the ACL rule to revoke access:
curl -s -X DELETE -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://www.googleapis.com/calendar/v3/calendars/primary/acl/user:[email protected]"
Notes that help avoid surprises
- Primary calendars cannot be reassigned
owner
. Usereader
,writer
, orfreeBusyReader
. - For domain-wide changes across user calendars, call these endpoints as an admin with domain-wide delegation and impersonate each calendar owner.
- Group-based sharing uses Google Group email addresses. Membership changes in the group apply automatically.
Frequently Asked Questions
You have three options to share Google Calendars: use the Google Calendar web UI to add people, use Torii to automate sharing via workflows, or use the Google Calendar API to create ACL rules. Choose by scale and automation needs.
You can choose free/busy only, see all event details, make changes to events, or make changes and manage sharing. Primary calendars cannot be reassigned owner. Pick the least privilege needed to limit exposed information and editing rights.
Use Torii when you need to automate repetitive sharing tasks across hires, offboards, or contract changes. Torii triggers workflows, syncs Google Groups, and applies ACLs automatically, saving manual steps for teams, large orgs, or frequent updates.
Open the event, add guests or a Google Group in the Guests panel, then set guest permissions: modify event, invite others, or see guest list. This shares only that event and does not grant access to other calendar events.
Get an OAuth2 access token with the calendar or calendar.acl scope, determine the calendarId (primary, secondary, or resource), then POST an ACL rule to calendars/{calendarId}/acl with the scope type (user/group/domain/default) and desired role.
Missing sharing options usually stem from admin restrictions or external sharing disabled. Admins can update Apps > Google Workspace > Calendar > Sharing settings in the Admin console, set internal and external sharing levels, and apply controls per organizational unit.