Skip to main content

How to enable and use the Veracross Integration

Use this article to set your Veracross SIS integration with Orah

Overview

Veracross stays the source of truth for your student, contact and staff data. Orah reads from it on a schedule, so a change you make in Veracross shows up in Orah at the next sync and nobody keys it in twice.

What data can you sync?

Orah pulls most of its core data from Veracross, and writes attendance back.

Read from Veracross

  • Division

  • School Year

  • House

  • Location

  • Reason Code

  • Students

  • Staff

  • Contacts

  • Groups

  • Schedules

Written back to Veracross

  • Class attendance, written back when a roll is completed

  • Daily attendance

  • Attendance at events and athletics fixtures

What Orah reads from Veracross, and what it writes back.

Before you start

Who needs to do this

Adding an integration partner in Veracross needs the OAuth_App_Admin security role, which is separate from SysAdmin and does not come bundled with it. Check yours before you start.

Worth reading first

If your IT team wants background on how the Veracross API works, the Veracross API Overview covers it.

Set up Orah in Veracross

Eight steps. Everything happens in Axiom apart from the last one.

  1. Sign in to Axiom Identity and Access Management.(https://axiom.veracross.com/#/homepage/iam)

    The Axiom Identity and Access Management homepage.
  2. From the Identity & Access Management homepage, click Add Integration Partner to see your current partners, then Add New Partner at the bottom. You can also click Add Record in the Find OAuth Applications query.

    Alternately, click the Add Record button in the Find OAuth Applications query

    img.jpg
    image.png
  3. Fill in the partner record with the details below:

    1. Description: Orah data sync

    2. Contact Name: Orah integration team

    3. Contact Email: veracross@orah.com

  4. Save the partner record, then click Start Integration to generate an OAuth Application record.

  5. On that record, click Add OAuth Application.

  6. At this point, Orah receives an invitation email.

    Note: The email received by Orah does not contain any credentials or sensitive information. The OAuth credentials are only visible to us via the Veracross Partner Portal, which we gain access to through that email.

  7. Within the newly created OAuth Application, you must enable scopes to allow Orah to access data, as shown in the example screenshot below. The next section in this article explains which scopes you need to enable.

    image.png

Scopes

Your OAuth application controls what Orah can see using scopes. For each scope you enable, Orah is granted permission to the corresponding API endpoint(s).

Depending on your approach, you may wish to enable the full list of scopes that Orah utilises, or only a limited list of scopes for the sync objects you intend to enable in Orah.

We recommend enabling the full list of scopes for convenience, and less likelihood of scope related issues. Orah only requests the scopes for the sync objects that are enabled. However, if you enable a sync in Orah, but don't have the associated Veracross scopes enabled, then errors will occur.

Below is the full list of Veracross scopes that Orah utilises across all sync objects. The next section provides a breakdown of the Orah sync objects and which scopes they require.

academics.class_attendance_statuses:list
academics.class_attendance_statuses:update
academics.classes.meeting_times:list
academics.config.grading_periods:list
academics.courses:list
academics.enrollments:list
academics.rooms:list
athletics.rosters:list
athletics.team.practice_schedules:list
boarding.dorms:list
boarding.dorms.students:list
class_permissions:list
classes:list
classes.attendance:list
classes.attendance:update
contact_info:list
event_groups_members:list
events.athletics:list
events.event_attendance:create
events.event_attendance:delete
events.event_attendance:list
events.event_attendance:read
events.event_attendance:update
events.group_events:list
extended_care.classes:list
extended_care.classes.meeting_times:list
extended_care.registrations:list
households:list
master_attendance:list
master_attendance:update
parents:list
person_photos:list
programs.classes.meeting_times:list
programs.enrollments:list
relationships:list
staff_faculty:list
students:list

Which scopes each sync object needs

A sync object only works if every scope in its row is enabled. Some scopes are only needed when a particular setting is switched on, and those rows name the setting.

Sync object

Scopes it needs

Notes

Division

students:list

Divisions are read off the student record.

School Year

academics.config.grading_periods:list

Orah cannot line its terms and divisions up with yours, so reporting windows and roll periods have to be maintained by hand.

House

boarding.dorms:list

boarding.dorms.students:list

Day schools need these too. Orah tells boarders from day students by whether a dorm is allocated.

Location

academics.rooms:list

Staff

staff_faculty:list

households:list

contact_info:list
person_photos:list

Add person_photos:list when Sync staff profile photos. is ticked.

Class attendance writeback

classes.attendance:list
classes.attendance:update

Attendance marked in Orah stays in Orah. Your office still has to enter it into Veracross by hand.

Reason Code

classes.attendance:list

Your Veracross attendance statuses, read as a value list.

Student

students:list
households:list

parents:list

contact_info:list

relationships:list

person_photos:list

Guardian data is read on every student sync, so the contact scopes are needed here as well. Add person_photos:list when Sync student profile photos. is ticked.

Contact

households:list

parents:list

contact_info:list

relationships:list

Groups

classes:list

academics.enrollments:list

staff_faculty:list
athletics.rosters:list
programs.enrollments:list
programs.classes.meeting_times:list
events.group_events:list
events.athletics:list
event_groups_members:list
extended_care.classes:list
extended_care.registrations:list
extended_care.classes.meeting_times:list
academics.courses:list

classes:list

academics.enrollments:list

staff_faculty:list apply to every group type. Then by type: Athletics adds athletics.rosters:list. Programs adds programs.enrollments:list and programs.classes.meeting_times:list. Events adds events.group_events:list, events.athletics:list and event_groups_members:list. Extended Care adds extended_care.classes:list, extended_care.registrations:list and extended_care.classes.meeting_times:list. Add academics.courses:list when Exclude by course classification is used.

Schedules

classes.attendance:list

classes.attendance:update

master_attendance:list

master_attendance:update

class_permissions:list

athletics.team.practice_schedules:list

class_permissions:list brings across co-teachers, so a co-taught class appears on both teachers' schedules. Add athletics.team.practice_schedules:list when Sync athletic practice schedules is ticked.

Roll record

classes:list

academics.classes.meeting_times:list

classes.attendance:list

classes.attendance:update

master_attendance:list

master_attendance:update

academics.class_attendance_statuses

events.group_events:list

events.athletics:list

event_groups_members:list

Add both academics.class_attendance_statuses scopes with Mark class attendance as “Taken” in Veracross when a roll is completed. Add the five events.event_attendance scopes when the Events group type is selected. Add events.group_events:list, events.athletics:list and event_groups_members:list with Automatically record students on group events as excused from class.

Pass record

classes:list

academics.classes.meeting_times:list

classes.attendance:list

classes.attendance:update

master_attendance:list

master_attendance:update

Same two conditional sets as Roll Record.

Attendance History

classes:list

classes.attendance:list

If a sync fails

A missing scope causes most of these. The last two have nothing to do with scopes, and they are here because they look the same from inside Orah.

What you see in Orah

What it means

A requested scope isn't authorized for this application

One scope in the set Orah asked for is not enabled in Axiom. Because Veracross rejects the whole request, this can appear when you change an unrelated setting. Re-check the full list above, save, then re-authorise in Orah.

Unauthorized: You do not have access to this route

A scope needed by a sync you have switched on is missing. Compare your enabled scopes against the full list, then re-authorise.

Something went wrong while fetching data filters

Usually event_groups_members:list, relationships:list or students:list. Without these, Orah cannot load the lists it needs to build your sync filters, so the filter options come back empty.

Error in getAccessToken for integration: veracross

Not a scope problem. Your credentials have expired or been revoked in Veracross. Re-authorise in App Directory > Veracross.

Skipped sync for staff [ID] due to missing email

Not a scope problem. That staff member has no email address in Veracross. Add one and sync again.

How it works

We authenticate your Veracross credentials when you connect, then store them. The first sync pulls in your students and tries to match each one against a record already sitting in Orah.

Managing your data

Syncing your data

Orah syncs once every 24 hours, usually overnight. Run a manual sync any time you need the data sooner and it starts immediately.

Existing students

If you already have students in Orah, we match them against Veracross records automatically. Some will not match. If are unable to match your students, you will find these students are listed on the debugger page where you can search and match these students.

Deactivating students

Veracross owns your core data. To remove a student from Orah, mark them inactive in Veracross, which deactivates their Orah record and archives everything attached to it.


Boarding and day students

Orah treats a student as a boarder if they have a dorm allocated in Veracross. No dorm means no boarder status. A day student who still has an old dorm allocation will show as a boarder until it is cleared.

Syncing only classes that take a roll (September 2026)

Every Veracross class carries a Track Class Attendance switch. By default Orah syncs class schedules regardless of that switch, which can create meetings, empty rolls, and reminder emails for classes nobody takes a roll for — a study hall, say, or a homeroom that's purely pastoral.

To stop this, go to your Veracross integration's Manage integration → Sync settings → Schedules tab and turn on Sync class schedules by Track Class Attendance. This opens a grid of divisions and group types — tick a cell to stop syncing schedules for classes in it where the switch is off in Veracross; classes with the switch on keep syncing exactly as before. This setting is off by default for every school, only affects Schedules (Groups and group membership are never touched, so a suppressed class still syncs as a group with its full roster), and needs no new Veracross scope or re-authorisation. Already-synced meetings are removed on the next sync unless a roll has already been started on them. Athletic practice schedules keep their own separate toggle on the same tab.

Did this answer your question?