Step 1: Set up your Google environment (5 minutes)
Create a new User in Google, who will be the "calendar owner" and creator of the events that get created. Name the User "SchoolCal Admin" or something related, and set the email as ("schoolcal@yourdomain"). We'll need to log in to SchoolCal with this User later in onboarding.
Create a "Custom Admin Role" in Google Admin Console. Name it something like, "Calendar Administrator". This role needs the following permissions:
USERS -> "READ" access to
CALENDAR -> "ALL SETTINGS"
The role should have 11 privileges assigned
Assign your new SchoolCal user to the new custom role
Press the "assign members" button
Assign your SchoolCal user (created in the previous step) to this role
Create a Domain Wide Delegated service account to access the required scopes
Login to Google Admin Console and navigate to Manage Domain Wide Delegation (Security > API Controls > Manage Domain Wide Delegation)
Click “Add new”
Input the Client ID from your SchoolCal account
Click “Connections” on the left-hand menu
Copy your Client ID and paste in Google
Enter the required OAuth scopes (⚠️ Note: The list of OAuth scopes may be updated in the Admin Console. Always verify the required scopes there before proceeding.)
https://www.googleapis.com/auth/calendar.events
https://www.googleapis.com/auth/calendar
https://www.googleapis.com/auth/admin.directory.user.readonly
https://www.googleapis.com/auth/admin.directory.resource.calendar.readonly
Step 2) Set up your Veracross environment (5 minutes)
Create an API V3 account for SchoolCal
Add SchoolCal as an "Oauth Partner" in Axiom, and give it the appropriate scopes (steps below):
Login to Veracross/Axiom
Navigate to the "Identity and Access Management" homepage
Add SchoolCal as an "integration partner" by finding it in the list of partners (middle of the page, towards the bottom of the list)
click "Start Integration"
NOTE: you may need to add the security role of "OAuth_App_Admin" and refresh the page in order for the "start integration" button to appear.
When complete, you should be presented with a screen that shows the SchoolCal name and email address.
Add appropriate scopes to SchoolCal (follow the steps here to enable all and save time)
Click the "Add OAuth Application"
Go to the "scopes" tab and add the following scopes:
List Academics: Calendar Rotation Days
Read Academics: Calendar Rotation Day
List Academics: Class Schedules
List Academics: Class Meeting Times
Read Academics: Class Meeting Time
List Academics: Classes
Read Academics: Class
List Academics: Block Groups
Read Academics: Block Group
List Academics: Configuration - Block Schedules
Read Academics: Configuration - Block Schedule
List Academics: Configuration - Block Meetings Times
Read Academics: Configuration - Block Meeting Time
List Academics: Configuration - Blocks/Periods
Read Academics: Configuration - Blocks/Period
Read Academics: Blocks by Group
List Academics: Blocks by Group
List Academics: Grading Periods
Read Academics: Grading Period
List Academics: Rotation Days
Read Academics: Rotation Day
List Academics: Courses
Read Academics: Course
List Academics: Departments
Read Academics: Department
List Academics: Enrollments
Read Academics: Enrollment
List Academics: Classes - Permissions
Read Academics: Classes - Permission
List Academics: Rooms
Read Academics: Room
List Academics: Subjects
Read Academics: Subject
List Athletics: Rosters
Read Athletics: Roster
List Athletics: Sports
Read Athletics: Sport
List Athletics: Team Practice Schedules
List Athletics: Teams
Read Athletics: Team
List Classes
Read Classes
List Courses
Read Course
List Event Groups
Read Event Group
List Events: Athletics
Read Events: Athletic
List Events: Attendance
Read Event: Attendance
List Events
Read Event
List Extended Care: Class Meeting Times
Read Extended Care: Class Meeting Time
List Extended Care: Classes
Read Extended Care: Class
List Extended Care: Courses
Read Extended Care: Course
List Extended Care: Registrations
Read Extended Care: Registration
List Programs: Class Meeting Times
Read Programs: Class Meeting Time
List Programs: Classes
Read Programs: Class
List Programs: Courses
Read Programs: Course
List Programs: Enrollments
Read Programs: Enrollment
List Resource Reservations: Reservations
Read Resource Reservations: Reservation
List Resource Reservations: Resources
Read Resource Reservations: Resource
List Staff/Faculty
Read Staff/Faculty
List Students
Read Student
List Summer: Class Meeting Times
Read Summer: Class Meeting Time
List Summer: Classes
Read Summer: Class
List Summer: Courses
Read Summer: Course
List Summer Enrollments
Read Summer Enrollment
Step 3: Connect Veracross to SchoolCal (5 min)
Sign in to SchoolCal with your Google email
Click “Connections” from the left-hand menu
Find “V3 API connection” and click “Manage Connection”
Fill in your school's short name, API username, and secret key (found on the Veracross Identity & Access Management page)
Click “Update Connection”
Click “Data” from the left-hand menu
Click “Load SIS Data”
Step 4: Connect Google to SchoolCal (5 min)
Click “Connections” from the left-hand menu
Find “Google” and click “Manage Connection”
Click “Edit”
Enter the email address for your SchoolCal Google user
Click “Update Connection”
Step 5: Run a Test Sync (10 min)
Navigate to “Flows” in the left-hand menu
Click “Add New Flow”
Select Flow Type: “Class Schedules to User Calendars”
Input Flow Name, e.g. “Schedules Test Sync”
Find your new Flow under all Flows, and click View Details
Click Filters and apply desired filters for this Flow
Click Template and customize how the events are displayed
Select an event type from the “Available Fields” panel on the right
This will display all metadata available to add to the template
To input metadata, wrap metadata names in brackets {{ }}, and use periods to indicate nested or “child” schema
Example: to include a Class Schedule’s course name, you’d write: {{Section.Course.Name}}
Enable the Pilot Mode toggle at the top of the Flow page
Click the Pilot Users link below the toggle, and input the users you want to run a test sync with
Click Sync Flow Now to initiate a sync
Was this article helpful?
That’s Great!
Thank you for your feedback
Sorry! We couldn't be helpful
Thank you for your feedback
Feedback sent
We appreciate your effort and will try to fix the article