Clever LMS Connect - LMS Provider Differences

Review LMS-specific differences in assignment and submission behavior across Canvas, Google Classroom, and Schoology.

❗️

Clever Complete Agreement Required

This feature is included with a Clever Complete subscription. Sign up here or email your Application Success Manager to learn more.

🚧

v3.1 Only

LMS Connect API endpoints are only available on v3.1 of the Clever API. If you are interested in getting started with LMS Connect, reach out to your Application Success Manager (for existing partners) or to [email protected].

❗️

This product is only available to existing Secure Sync partners.

To learn more about Secure Sync, please review this documentation.

Table of Contents

Overview
Canvas
Google Classroom
Schoology

Overview

Use this page to account for LMS-specific assignment and submission behavior in Clever LMS Connect.

LMS Connect provides a consistent integration framework across LMSs, but Canvas, Google Classroom, and Schoology do not support every assignment or submission field in the same way. Review these differences before building request validation, handling writeback errors, or troubleshooting district-specific behavior.


Canvas

Assignments

BehaviorDescriptionNotes
“Submitting” in UI shows “nothing” or is blankWhen the assignment was created, the submission_types field was likely left blank. Confirm with a GET /v3.1/sections/{id}/assignments/{id} request.Make a PATCH /v3.1/sections/{id}/assignments/{id} request and update submission_types to resolve.
Unsupported fieldsstart_date, term_idIn Canvas, start_date is set to the same value as display_date. Use display_date instead.
Returned assignment stateClever derives assignment state from the Canvas assignment publishing and date state.draft: assignment is not published in Canvas. scheduled: assignment is published and has a display_date in the future. locked: assignment is published and has an end_date in the past. open: assignment is published and is not scheduled or locked.
assignee_mode and assignee_idsCanvas can have multiple assignment override types, including section overrides and individual student overrides.If individual overrides exist, Clever returns assignee_mode as individuals and returns the individual IDs from student overrides. If an assignment only has section overrides and an update changes assignee_mode to individuals, the matching section override is deleted. If both section and individual overrides exist, the section override is not deleted.
Date fields with individual overridesIndividual overrides created directly in Canvas can have different date fields.If individual overrides have different dates, assignment date fields returned by Clever may differ from values previously set through the API.
grading_type supportCanvas supports points, percent, pass_fail, and letter_grade.Submission grading behavior depends on the assignment grading_type. See the Canvas submissions section for details.

Submissions

BehaviorDescriptionNotes
Missing “Max Attempts” value in CanvasWhen the assignment was created, max_attempts was set to -1. Confirm with a GET /v3.1/sections/{id}/assignments/{id} request.If max_attempts is not included when creating the assignment, it defaults to -1. Update max_attempts to a positive integer value.
Unsupported fieldsDirect updates to state, override_due_date, last_modified; grader_id except when used with grade_commentCanvas does not support arbitrary submission state transitions through the API. Canvas only supports grader_id when making grade comments on a submission. If grader_id is included without grade_comment, Canvas ignores it.
Updating submission stateCanvas does not support directly updating submission state through the API.Submission state is automatically updated to submitted when an attachment is included in the update request. Canvas does not support returned or reclaimed through this flow.
SpeedGrader submission updatesInclude the state field in Canvas submission request bodies when you need the submission to work correctly in SpeedGrader.Canvas still determines the final submission state. Including state does not enable arbitrary state transitions, but it is required for the SpeedGrader submission workflow.
Updating submissions on draft assignmentsUpdating submissions on unpublished Canvas assignments is not supported.If an assignment has state: draft, the Clever API returns UNSUPPORTED_OPERATION with the message Canvas does not allow updating submissions on unpublished (draft) assignments. The teacher must publish the assignment in Canvas before submissions can be updated.
FlagsCanvas supports one submission flag.If multiple flags are provided, Clever updates the first supported flag in this priority order: excused, missing, late.
grade and grade_pointsCanvas supports grade, but grade and grade_points should not be updated at the same time. Updating one can change the other.Behavior depends on the assignment grading_type. See the grading rules below.
Grading with pointsUse grade_points.grade_points is required when the assignment grading_type is points.
Grading with percentgrade must be formatted as a percentage, such as 10% or 1.0%.Updating grade_points changes grade to the equivalent percentage. For example, if the assignment is worth 80 points and grade_points is updated to 40, grade becomes 50%.
Grading with pass_failgrade_points can only be 0 or 100.grade can only be pass, fail, complete, or incomplete.
Grading with letter_gradeThe Canvas course must have a grading scheme enabled.grade must be a value in the Canvas grading scheme. If grade_points is updated, Canvas sets grade to the equivalent value in the grading scheme.
Empty string values ignored for grade_commentIf a grade_comment value has previously been provided and a later PATCH sends an empty string, Canvas ignores the empty string.Testing with other LMSs yielded different results: Schoology updated grade_comment to an empty string, and Google Classroom ignores grade_comment.
Returned grade_commentIf there are multiple comments on a submission, Clever returns the latest comment by the submission grader when available.If a comment by the grader is not found, Clever returns the latest comment.
Updating grade commentsInclude grade, grade_comment, and grader_id when adding grade comments to a student submission.Always include grader_id when adding grade comments. If grade_comment is blank, Canvas ignores the field.
Submission attachmentsCanvas allows only one attachment per submission.Only link and text submission attachments are supported. link attachments must include url using http:// or https://. text attachments must include text. Attachment description is ignored.

Google Classroom

🚧

Requires districts to have the GCRI integration with Clever.

Assignments

BehaviorDescriptionNotes
Unsupported fieldsstart_date, end_date, grading_scale, submission_types, term_id, max_attempts, category_idThese fields are not supported for Google Classroom assignments.
Assignment stateAssignment state is set to open by default to match existing Clever behavior. Google Classroom does not support locked assignment state.Clever returns open if the Google Classroom assignment is published. Clever returns scheduled if the assignment has a future display_date and is drafted. Otherwise, Clever returns draft.
Updating assignment stateAssignments can only be updated to open after creation.Google Classroom may return an error if the assignment does not already have a display_date. If state is updated to open, an existing display_date may be removed.
Assignment display_dateIf display_date is set, assignment state must be scheduled. If assignment state is scheduled, display_date must be set.display_date must be earlier than due_date. In Google Classroom, display_date can only be added during assignment creation. It cannot be added or modified on assignment update requests.
due_date not requireddue_date is not required in Google Classroom.A teacher may remove the due date in Google Classroom.
Assignment grading_typegrading_type is set to points by default.Google Classroom only supports points grading through this integration.
Assignment attachmentsAssignment attachments can be added during assignment creation, but cannot be added on update requests.Only link attachments are allowed through the API for creates. Returned attachments may be link or file type.
Attachment fieldsFor Google Classroom assignment attachments, url is required.Unsupported attachment fields: file_external_id, size. Read-only or ignored fields: title, thumbnail_url. Google Classroom supports a maximum of 20 attachments per assignment.

Submissions

BehaviorDescriptionNotes
Unsupported fieldsextra_attempts, grade, grade_comment, grader_id, override_due_dateThese fields are not supported for Google Classroom submissions.
Submission flagsOnly the late flag is supported.Other flags values are ignored.
created and last_modified may be delayedGoogle Classroom may not return created or last_modified until the student accesses the assignment.Google Classroom notes that student submissions that have never been accessed may not have a creation or update time.
Missing user_idSubmissions for a Google user ID that is not matched to a Clever user omit user_id in the response.Use this behavior when troubleshooting unmatched users.
Assignment must be openAssignments must be in open state before submissions can be listed.If the assignment is scheduled or draft, requests to get submissions can return an error.
Updating submission stateGoogle Classroom supports updating submission state, but state transitions are limited.state cannot be set to reclaimed or returned unless the submission is currently submitted. state can be set to returned without a grade. Once a submission has been reclaimed, returned, or submitted, it cannot be updated back to created.
Updating unsubmitted submissionsTrying to update a submission that has not yet been submitted can return an error.The teacher must accept the provisioned class in Google Classroom before that section's assignment submissions can be updated by students.
grade_points value of 0Clever omits grade_points when the value is 0.Google Classroom does not differentiate between zero and nil values.
Submission attachmentsAttachments can be added on submission updates.Attachments cannot be removed, modified, or deleted after they are added.

Schoology

Assignments

BehaviorDescriptionNotes
term_id requiredIn Schoology, term_id is required for assignments.term_id refers to the Clever-generated term ID and can be included when creating or updating assignments.
Unsupported fieldsstart_date, display_date, end_date, max_attemptsmax_attempts is omitted because Schoology allows multiple revisions for an assignment.
due_date timezoneSchoology does not have a timezone associated with due date.Clever defaults Schoology due dates to Pacific Time.
grading_scalegrading_scale is read-only.Depending on the Schoology configuration, this field may not be available for writes.
grading_typeOnly points grading type is supported for writes.Other grading types should not be sent for Schoology assignment writes.
Assignment stateClever returns open if the assignment is published in Schoology. Otherwise, Clever returns draft.For updates, only open and draft are supported. Setting state to scheduled or locked results in the assignment being set to draft.
submission_typesSchoology may return submission_types as ['link', 'file'] regardless of assignment input.This is LMS-specific behavior and may not reflect the values sent when creating or updating the assignment.
Assignment attachmentsSchoology assignment attachments are sent inline in the assignment attachments array on create and update requests.Schoology does not have a separate assignment attachments endpoint.
link assignment attachmentslink attachments are supported for assignment creates and updates.If no title is provided, Schoology defaults the title to the URL.
file assignment attachmentsfile attachments are supported for assignment creates and updates.Schoology does not support URL-based file upload directly, so Clever downloads the file from the provided public http:// or https:// URL, uploads it to Schoology, and references the returned Schoology file ID.
Schoology file type validationSchoology enforces its own file-type allowlist, such as CSV, DOC/DOCX, PDF, PNG, JPG, MP4, MOV, TXT, and XLSX.Clever does not pre-validate file extensions. Unsupported file types are rejected by Schoology during upload and surfaced as upload errors.
text assignment attachmentsSchoology does not have a native text assignment attachment type.Clever folds text attachment content into the assignment description and re-surfaces it as a text attachment on read.
Reading assignment attachmentsSchoology only returns assignment attachments when with_attachments=1 is included.Clever requests attachments when reading assignments so create and update responses reflect the attachments that were written.
Updating and deleting assignment attachmentsTreat the attachments array on update as the full desired attachment set.Updating with attachments replaces the assignment's attachments. Updating without attachments, or with an empty attachment list, deletes existing attachments. To preserve attachments, resend the full attachment set on each update.
Assignment file limitsSchoology allows files up to 512 MB.Clever applies a 512 MB per-file cap and a protective cap of 20 file attachments per assignment. File URLs are fetched server-side, so downloads must use public http:// or https:// URLs. Internal and metadata IPs are blocked.

Submissions

🚧

Requires LTI SSO set up by the district and a successful LTI session by the end user.

For more information, see Clever LMS Connect - Submitting Schoology Submissions.

BehaviorDescriptionNotes
Updating submission stateSetting state to created is supported only if the submission has not yet been submitted. This sets the submission to draft in Schoology.If the submission is already submitted, the submission defaults to submitted. If a submission is draft in Schoology, Clever shows it as created until it is submitted. reclaimed is not supported by Schoology.
Draft submissions with attachmentsIf a submission already has attachments and is in a draft (created) state, it cannot be changed to submitted through the API.The user must either manually submit or delete the submission in Schoology.
Unsupported fieldsgrader_id, grade, extra_attempts, override_due_datestate has limited support. flags supports only the late value.
Submission flagsThe late flag is supported.Other flag values are not supported.
grade defaults to grade_pointsgrade defaults to the grade_points value rather than using the string value provided in the PATCH update submission request.For example, if the request body includes "grade": "B" and "grade_points": "85", a later GET returns grade as 85, the grade_points value from the update request.
Only text attachment type supported for writesIn Schoology, only text attachment type is supported for submission writes.link is supported for reads. For Schoology submission writes, type: "text" attachments must include text. Do not send url for text attachments. Example: {"state":"submitted","attachments":[{"type":"text","text":"https://clever.com/attachment","title":"Test - 1"}]}. Schoology may convert text submission attachments to a file internally.
Assignment submissions not able to be patched due to grading categoryThe submission update may return 200 OK, but the submission does not show up in Schoology.Schoology has a grading_category concept, shown as Category, that must be manually assigned by the teacher in the UI. This is found in Schoology > Course > Assignment > gear icon > Edit > Category.

Did this page help you?