Prepara and Canvas

Prepara is a courseware platform: interactive course books students read at app.preparacourse.com, with lessons, checkpoint questions, and an AI tutor. Canvas is the course website system your school uses.

Connecting the two puts a Prepara link inside your Canvas course: students press it and their book opens, already signed in, and the grades they earn in Prepara flow into the Canvas gradebook on their own. Students never see any setup.

Using a different course system? Blackboard · Moodle · D2L Brightspace.

For instructors: start without IT

You can teach with Prepara today, with no Canvas connection and no IT request.

  1. Create an instructor account at app.preparacourse.com, or email admin@preparacourse.com and we set it up for you.
  2. Create your Prepara section in the app (one section is one group of students).
  3. Get your students in without any codes: import your roster (paste or drop the email list from your registrar export and everyone is matched by email, even students who sign up later), or turn on student self-registration so students find your section by your course number at the book's Get Access page. The setup gives you a short block of instructions to paste into your syllabus.

Everything then runs on Prepara itself: reading, lessons, checkpoint questions, and a gradebook you can download as a spreadsheet. More detail for instructors is on the instructors page.

Put Prepara inside Canvas

If you want the Canvas button and automatic grade sync, your school's Canvas administrator installs Prepara once for the whole account.

You do not need to know anything technical: copy the email below and send it to your IT department (or your Canvas administrator). It has everything they need.

Subject: LTI 1.3 registration request: Prepara courseware

Dear IT,

My course uses Prepara (app.preparacourse.com), a courseware platform, and I would like to request its registration in Canvas as an LTI 1.3 tool so students can open it from their course and grades can sync to the gradebook.

The whole setup is one URL. Create an LTI developer key with the Enter URL method pointing at the configuration URL below, turn the key on, and install the app at the account level by Client ID. The configuration URL fills in every field, including placements and permissions.

Configuration URL: https://preparacourse.com/api/lti/canvas-config.json

The same values, if you prefer to enter them by hand:
OIDC initiation URL: https://preparacourse.com/api/lti/login
Target link / redirect URI: https://preparacourse.com/api/lti/launch
JWKS URL: https://preparacourse.com/api/lti/jwks
Custom fields (all five lines, in the key's Custom Fields box):
canvas_course_id=$Canvas.course.id
canvas_course_sis_id=$Canvas.course.sisSourceId
canvas_section_ids=$Canvas.course.sectionIds
canvas_section_sis_ids=$Canvas.course.sectionSisSourceIds
canvas_section_names=$com.instructure.User.sectionNames
They say which Canvas section a launch comes from, so each student opens in the right Prepara section. The configuration URL sets them automatically; a hand-entered key without them cannot tell Canvas sections apart.

If Prepara is ALREADY installed from an earlier request: Canvas applies a key's configuration only when the key is saved, so please open the existing Prepara developer key and press Save once more. That one click re-reads the configuration URL and adds its newer parts, the content pickers (so instructors can add Prepara items from a module's + button and the assignment picker) and the Canvas section custom fields. Nothing else about the install changes.

Requested services and why: Assignment and Grade Services (the tool creates its own gradebook columns and posts scores back, which is how students' work in the courseware reaches the gradebook) and Names and Role Provisioning Services (roster read, names and roles only, used to match enrolled students to their section). The tool needs each launch to include the student's name and email for that matching. Student records are handled under a standard FERPA school-official posture (https://preparacourse.com/privacy).

How the tool's calls reach Canvas: Prepara's server-to-server calls (the token requests, roster reads, and grade writes behind the services above) are routed through Prepara's own relay infrastructure. This works on its own, with no action needed on your side.

Optional, only if you prefer direct traffic: you can open a support case with Instructure asking them to allow this tool's service traffic (the LTI 1.3 client-credentials token requests at sso.canvaslms.com/login/oauth2/token, and the grade and roster service calls under your Canvas address at /api/lti/). With that in place Prepara calls Canvas directly, and the relay stays as the automatic fallback. Everything works either way; nothing breaks if you skip this.

Deployment: please install it at the account or sub-account level rather than per course, so every course there, this term and future terms, can use it without a new request.

Once it is set up, could you send me three values so I can complete the link on my side: our Canvas base URL, the developer key's Client ID, and the Deployment ID?

Thank you!

When IT finishes, they send back your Canvas web address, the Client ID (the long number on the key IT created), and the Deployment ID (the number Canvas assigns when the app is installed). Email those to admin@preparacourse.com if IT has not already; we complete the registration on our side and confirm.

After that, open Prepara from your Canvas course once. A chooser opens and asks you to pick which of your Prepara sections this Canvas course should connect to; pick it, and the roster and the gradebook columns follow on their own.

If you run your own Canvas, follow the administrator steps below yourself; they take about five minutes. (Self-hosting Canvas, or a school test instance, gives you the admin console. A free Canvas for Teachers account does not: it has no admin side and cannot install LTI 1.3 tools, so a real install goes through your school's Canvas administrator.)

For Canvas administrators: the install

Prepara connects to Canvas through LTI 1.3, the standard connector for teaching tools. The whole install is one configuration URL. A configuration URL is a web address that answers with the tool's settings; Canvas reads it once and fills every field itself, including the course menu placement, the icon, and the grade permissions.

The configuration URL: https://preparacourse.com/api/lti/canvas-config.json

  1. In Canvas, open Admin, pick your root account, and press Developer Keys. Developer Keys is the page where Canvas stores its connections to outside tools.
  2. Press + Developer Key, then + LTI Key. An LTI Key is the kind of key used for teaching tools.
  3. In the Method menu choose Enter URL and paste the configuration URL above. Every field fills itself; you type nothing else.
  4. Press Save, then set the key's State to On.
  5. Copy the Client ID, the long number in the Details column; you paste it once in the next step and send it to the instructor at the end.
  6. Open Admin, pick the account that should have Prepara (the whole university or one school), then Settings, Apps, View App Configurations, + App; in Configuration Type choose By Client ID, paste the Client ID, press Submit, then Install. Installing at the account level means every course under that account can use Prepara, this term and future terms, with no further requests.
  7. Send the instructor three values: your Canvas web address, the Client ID, and the Deployment ID, which is shown under the gear next to Prepara on the App Configurations page.

That is the whole install. There is no server work on your side and no student accounts to create. The Prepara button appears in each course menu on its own; an instructor who prefers to hide it can do that from their course's Navigation settings.

How the tool's calls reach Canvas: Prepara's server-to-server calls (the token requests, roster reads, and grade writes behind the granted services) are routed through Prepara's own relay infrastructure and work on their own, with no action needed on your side. If you prefer direct traffic, you can optionally open a support case with Instructure asking them to allow this tool's service traffic (the LTI 1.3 client-credentials token requests at sso.canvaslms.com/login/oauth2/token, and the grade and roster service calls under your Canvas address at /api/lti/); Prepara then calls Canvas directly, with the relay as the automatic fallback. Everything works either way.

One note for installs made before August 2026, or any install missing a newer part of the configuration (the content pickers that let instructors add Prepara items from a module's + button and the assignment picker, or the Canvas section information on launches): re-saving the Prepara key fixes it. Open Admin, then Developer Keys, open the Prepara key, and press Save again; the key reads the configuration URL again and picks up the newer placements and the section custom fields. Nothing else changes.

What the connection reads and writes

  • Assignment and Grade Services: Prepara creates its own gradebook columns in Canvas and posts scores into them, and any grade an instructor changes in Canvas wins.
  • Names and Role Provisioning Services: Prepara reads the course roster, names and roles only, to match students to their Prepara section.

Paid access is separate: each student's own Prepara account governs what they can read, and connecting Canvas never changes who has paid access. Student records are handled under a FERPA school-official posture; the details are in the privacy policy. Questions from IT or from instructors both reach a person at admin@preparacourse.com.

Setup values

Some administrators prefer typing the fields by hand. These are the same values the configuration URL fills automatically. A by-hand install is complete only when the five custom fields are entered too. They say which Canvas section a launch comes from, so each student opens in the right Prepara section.

Configuration URLhttps://preparacourse.com/api/lti/canvas-config.json
OIDC initiation URLhttps://preparacourse.com/api/lti/login (where Canvas starts a sign-in)
Target link / redirect URIhttps://preparacourse.com/api/lti/launch (what Canvas opens)
JWKS URLhttps://preparacourse.com/api/lti/jwks (our public keys, used to check signatures)
Custom fieldscanvas_course_id=$Canvas.course.id
canvas_course_sis_id=$Canvas.course.sisSourceId
canvas_section_ids=$Canvas.course.sectionIds
canvas_section_sis_ids=$Canvas.course.sectionSisSourceIds
canvas_section_names=$com.instructure.User.sectionNames
All five are part of the setup. They say which Canvas section a launch comes from, so each student opens in the right Prepara section.
PermissionsAssignment and Grade Services (line items, scores, results) and Names and Role Provisioning Services (roster read)