Build an LMS Connect Gradebook Sync

Extend Secure Sync with LMS Connect grade passback and LTI 1.3 launch support.

Extend a Secure Sync integration with LMS Connect to create assignments, update submissions, and optionally support LTI 1.3 course launches.

Prerequisites

  1. Configure a working Secure Sync integration.
  2. Enable LMS Connect for your application.
  3. Use API v3.1 and the district-app token for LMS Connect API requests.

1. Confirm LMS readiness

Call GET /districts/{id} and check lms_state before grade passback. Proceed only when matching is complete.

When enabled for your application, use lms_status.synced_in_lms, last_lms_sync, and lms_matched_percentage to troubleshoot match status.

2. Design grade-passback behavior

Decide when your app creates assignments and sends grades. Decide whether your app only pushes data to the LMS or also imports LMS-side changes.

Use the district-app token for assignment and submission requests.

3. Create assignments and update submissions

Use the API v3.1 assignment and submission endpoints. Store each assignment ID when you create it so you can retrieve, update, or delete that assignment later.

Use 15–60 second timeouts for assignment and submission writes. The grade passback API has the same 1,800-request-per-minute limit as the Data API.

4. Account for provider differences

  • Canvas: Set submission_types and max_attempts explicitly. Canvas derives assignment state from its publishing and date behavior.
  • Google Classroom: The district requires GCRI. Several assignment fields, including term_id and max_attempts, are unsupported.
  • Schoology: Include term_id for assignments. Students must complete an LTI launch before their submissions can be written. Teachers must set an assignment grading category in Schoology for submissions to appear.

5. Support LTI 1.3 when needed

LTI 1.3 is supported for Canvas and Schoology. Validate the signed launch JWT and use its course or section context to route the user to the matching experience in your app.

6. Follow pagination links promptly

Grade-passback responses provide a next link when more results exist. That relative link is valid for two hours after the original request.

Related documentation


Did this page help you?