Chalk

Migration

Migrate from Clever in a weekend.

Chalk is a drop-in OAuth 2.0 replacement for Clever. Keep your downstream app integrations working while you switch — same flow, same scopes, same payload shape.

How it works

Three steps. Most districts cut over a handful of apps the first weekend and finish the long tail over the next two weeks.

01

Connect your SIS to Chalk

Point Chalk at PowerSchool, Skyward, or Infinite Campus. Chalk pulls the canonical roster via OneRoster 1.1.

02

Repoint your apps at Chalk

Update your existing Clever-integrated apps to Chalk's compatibility endpoints. Same OAuth 2.0 flow, same scopes, same payload shape.

03

Run the cutover wizard

Map users and roles in the admin console. Roll over apps at your own pace — Clever and Chalk can run side-by-side during the cutover.

What's compatible

The core OAuth 2.0 contract and the most-used payload shapes. Every district's edge cases differ — talk to us about your specific app inventory.

OAuth 2.0 authorization flow

Same authorize / token / refresh dance your apps already implement against Clever.

User info endpoints

Student, teacher, and admin user info responses that match Clever's payload shape.

Enrollment payloads

Sections, terms, and roster membership delivered in the shape your apps expect.

Role mapping

Student, teacher, district admin, and school admin roles mapped to OneRoster equivalents.

Why districts switch

Districts move off Clever for the same reasons they move off any rostering vendor: cost, control, and trust.

Free for schools

No per-seat fees, no per-API-call billing. The product is free for K-12 districts.

Data ownership

Self-host on your infrastructure, or let us host it — either way the roster is yours.

No vendor lock-in

OneRoster 1.1 in, OneRoster 1.1 out. If you ever leave Chalk, you leave with standard data.

Open source

AGPL-3.0. Read the code, audit the security model, contribute fixes.

Ready to start your migration?

Spin up a free Chalk tenant and test the Clever-compatible endpoints against one app before you commit to the cutover.