# For schools and IT admins

This page is for school and district IT teams deciding whether to allow Severn Planner on student Chromebooks and managed Chrome browsers. It lists exactly what the two Chrome extensions can access, what they do with it, and where student data is stored. Everything here is taken from the extensions' current code (Severn Planner Overlay 1.8.1 and Severn Planner Side Panel 1.0.1).

Whether to allow Planner is your school's decision. If your school has decided not to, that decision stands, and nothing here is meant to get around it.

## The short version

- Planner is a web app at [app.severnplanner.com](https://app.severnplanner.com/). The app itself needs no extension.
- The Overlay extension syncs a student's own assignments and grades from Canvas, Schoology, Google Classroom or Blackbaud. It reads them in the student's browser, through the school platform's own pages and interface, using the session the student signed in with.
- It never asks for, reads or stores a school password, and it has no permission to read cookies.
- It never submits, posts, deletes or edits anything on a school platform.
- The extension itself sends nothing to any Severn Planner server or third party. What it reads goes to the student's own Planner tab, which saves it to that student's account.
- Encryption is optional. Once a student sets a passphrase, their planner is encrypted in their browser before it is saved. Until they do, it is stored readable.
- The Side Panel extension only shows Planner in Chrome's side panel. It asks for no access to any website.
- There are no school or district accounts. Each student makes and controls their own account.

## Extension IDs

| Extension | ID | Chrome Web Store |
|---|---|---|
| Severn Planner Overlay | `adkecoemjjkppanfmbgfhadnkphgndhe` | [Listing](https://chromewebstore.google.com/detail/severn-planner-overlay/adkecoemjjkppanfmbgfhadnkphgndhe) |
| Severn Planner Side Panel | Not on the Web Store yet | Email [jeremy@severnplanner.com](mailto:jeremy@severnplanner.com) for a copy to review |

## Allowing or force-installing it in Google Admin

1. In the Google Admin console, go to **Devices**, then **Chrome**, then **Apps & extensions**, then **Users & browsers**.
2. Pick the organizational unit (for example, a grade or a student group).
3. Click the yellow add button, choose **Add Chrome app or extension by ID**, and enter `adkecoemjjkppanfmbgfhadnkphgndhe` from the Chrome Web Store.
4. Set the installation policy to **Allow install** (students choose) or **Force install** (installed for everyone in that unit).

If your policy blocks all extensions except an allowlist, adding the ID this way is all it takes. To keep the extension to your own learning platform, Chrome's runtime blocked and allowed hosts settings (the `runtime_blocked_hosts` and `runtime_allowed_hosts` fields of the ExtensionSettings policy) apply to it like any other extension.

## Severn Planner Overlay: permissions

### Permissions

| Permission | What Planner uses it for |
|---|---|
| `storage` | Keeps a few things in the browser on that computer: which items were already sent to Planner (so they aren't sent twice), which items the student dismissed, the addresses of the school sites the student connected, a cache of assignment descriptions, the focus-time block list, the background sync setting, and a short queue of synced items waiting for a Planner tab. |
| `scripting` | Starts the sync scripts on a school site after the student connects it. Reads highlighted text when the student presses the Quick Add shortcut. After install, tells an open Planner tab that the extension is there. |
| `alarms` | Runs background sync on a timer (checks every 10 minutes and syncs each connected site about once an hour by default; the student can change or turn this off) and closes the tabs it opens for that. |
| `activeTab` | The Quick Add shortcut (Alt+Shift+Q). When the student presses it, the extension reads the text highlighted in the tab they are on, and only that tab, only then. |

### Sites it can access from install

| Host | Why |
|---|---|
| `https://*.myschoolapp.com/*` | Blackbaud. Shows Planner on top of the portal, with a button to switch back to the real page, and reads the Assignment Center and Progress pages. |
| `https://*.instructure.com/*` | Canvas sites at an instructure.com address. Reads the student's courses, assignments and grades through Canvas's own interface. |
| `https://*.schoology.com/*` | Schoology sites at a schoology.com address. Reads the course, materials, assignment and grade pages the student can already see. |
| `https://app.severnplanner.com/*` and `https://severnplanner.edgeone.app/*` | Planner itself (the second is its older address). A small script passes synced items into Planner. It reads nothing from the Planner page. |

### Sites it can ask for later

The manifest also lists `https://*/*` as an optional permission, plus `http://localhost` and `http://127.0.0.1` for testing. Optional means Chrome grants nothing at install. Each site is asked for one at a time, with Chrome's own permission prompt, and only when the student clicks to allow it. It is used for:

- A school's Canvas or Schoology at its own address (not instructure.com or schoology.com).
- Google Classroom at classroom.google.com.
- Sites the student chooses to block during focus time (off by default). For these the extension only sees the tab's address so it can send the tab to a countdown page. It runs nothing on those pages and reads nothing on them.

Removing a site gives its permission back.

### What it reads on each platform

| Platform | What it reads | How |
|---|---|---|
| Canvas | Courses, assignments, due dates, the student's own submission status and grades | Canvas's own interface (`/api/v1`), same site, using the student's session. GET requests only. |
| Schoology | Course list, materials, assignment and grade pages | The same pages the student sees, same site, using the student's session. GET requests only. |
| Google Classroom | Classes, posted work, the student's own submissions and returned grades, grading categories, a teacher's name | The same internal endpoint Classroom's page uses. Classroom loads its data through POST requests, so these reads are POST requests too, but every call is a read. Nothing is posted, submitted or changed. |
| Blackbaud | Assignment Center (list view) and the Progress page | Reads the pages as they are shown. |

It does not read sign-in pages (it only notices it is on one, so it can stop), messages, people or member lists, profiles, or anything about other students. Files stay on the school platform; Planner keeps links to them.

### What it does on a school page

- Shows Planner in a frame on top of the page. The school page underneath keeps running and is not changed. A button switches between the two.
- Background sync (on by default, the student can turn it off) opens a connected school site in a tab that isn't brought to the front, in a Chrome window that is already open, reads it, and closes the tab. It never opens a new window, so nothing runs while Chrome is closed. A site that is signed out is left alone for 6 hours.
- In a Blackbaud background tab, if Assignment Center opens on its calendar view, the extension clicks the List view button once so it can read the list. That is the only thing it clicks on a school site.

### What it does not do

- It never asks for, reads or stores a school password, and it does not sign in for the student. If the student is signed out, sync stops until they sign in themselves.
- It has no `cookies`, `history`, `tabs`, `webRequest`, `identity` or `downloads` permission.
- The extension itself makes no network requests to Severn Planner servers or anyone else. Its only requests are to the school site the student is on, from that same site. It does open Planner (app.severnplanner.com) in a frame or a background tab, and Planner there talks to its own servers, the same as in any tab.
- It loads no code from the internet. All of its code ships in the extension, as plain, unminified JavaScript you can read in the installed folder.
- It has no analytics or tracking.

### Signing in to Planner inside a school site

Chrome keeps Planner's sign-in inside a school page separate from Planner's own tab. So that the student doesn't have to sign in twice, the extension asks a Planner tab that is already signed in for a one-time sign-in pass for the same Planner account, valid for 5 minutes, and hands it only to Planner shown inside a school site the extension works on. This is the student's Planner sign-in, not a school login.

## Severn Planner Side Panel: permissions

| Permission | What Planner uses it for |
|---|---|
| `sidePanel` | Shows Planner in Chrome's side panel when the student clicks the toolbar button. |

That is its only permission. It has no host permissions and no content scripts, so it cannot read or change any website, including school platforms. Planner runs inside the panel as an ordinary web page, the same as in a tab.

## Where student data goes

| Service | What it does |
|---|---|
| Google Firebase (Authentication and Cloud Firestore) | Student accounts and the planner itself: classes, assignments, grades, notes and settings. One record per account. |
| Tencent EdgeOne | Hosts the Planner web app. |
| Cloudflare Workers | Sends reminder notifications (only while encryption is off, since it has to read due dates). Fetches a calendar feed the student connects. Passes Canvas requests along if the student connects Canvas with a personal access token instead of the extension (the token stays in the student's browser and the worker doesn't store or log it). Holds Class Packs, links of upcoming class dates a student chooses to share. Receives bug reports. Issues the 5-minute sign-in pass above. Passes a stats summary to an AI assistant only if the student turns that on. |
| Vercel and Google Analytics | Host this website and count visits to it. Nothing from the planner is sent to Google Analytics. |

Files a student attaches to an assignment stay in their browser on that device. They are not uploaded.

Student data is not sold, shared with advertisers, or used to build profiles. The planner and the extensions have no analytics or tracking. The full [privacy policy](https://www.severnplanner.com/privacy) has the details.

## Encryption

- Encryption is optional, and a new account starts without it. Planner asks the student to set a passphrase after their first school sync or a few days after sign-up.
- Once it is set, the planner is encrypted in the browser with AES-256-GCM, using a key made from the passphrase, before it is saved. The server only holds the encrypted copy, and the key never leaves the device.
- Until a student sets one, their planner is stored readable on the server.
- The extension's own browser storage (the list of sent items, site addresses and so on) is not covered by the passphrase.
- Planner serves its own code, so encryption protects stored data. It is not a guarantee against a changed version of the app.

## Accounts and deletion

- Students sign up with an email address or with Google. Passwords are handled by Firebase.
- A student can export everything or delete their account from Settings at any time.
- A parent or guardian can ask for a child's account and data to be deleted by email.
- Removing the extension deletes everything it stored in that browser. It does not delete the student's Planner account.

## Questions

Email [jeremy@severnplanner.com](mailto:jeremy@severnplanner.com) with any question about the extensions, the data, or a review. Severn Planner is an independent student project and is not affiliated with Blackbaud, Instructure, Schoology, Google or any school.

---

[Home](https://www.severnplanner.com/) · [Privacy policy](https://www.severnplanner.com/privacy) · [Contact](https://www.severnplanner.com/contact)
