RosterOwl

What this site sends

The short version: your class list stays on your device unless you switch on sync, which is off until you ask for it. Here is the complete, checkable list of network activity on rosterowl.com.

What the site loads

What the site sends — with sync off

This is the default, and it is what happens until you sign in. Nothing changes it by accident.

Sync, if you switch it on

Sync exists for one situation: you started a chart at school and want to finish it at home. It is off unless you sign in, and signing in is something you have to go and do — there is no prompt, no wall, and no reminder. Everything on this site works without it.

Once it is on, here is exactly what changes, stated plainly:

Google Analytics — only if you say yes

Cloudflare's counter tells us how many people opened a page. It cannot tell us whether they got what they came for — whether someone who opened the seating chart actually finished a chart and printed it. That is the question that decides what gets built next, so this site also offers Google Analytics. It is the one thing here that sets tracking cookies, so it is the one thing here that asks first.

What we do with your Google account data

This section is the disclosure Google requires of any app that offers Google Sign-In, and it applies only if you choose to sign in.

RosterOwl's use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.

The browser enforces the boundary, not just us

Every page is served with a Content-Security-Policy header that limits where this site is allowed to send anything at all — to rosterowl.com and the analytics endpoint, and nowhere else. If our own code ever tried to post a class list to a third party, your browser would block the request. That was true before sync existed and is still true now: what sync changed is that rosterowl.com itself receives your document when you have signed in, and only then. You can read the policy yourself in the Network tab, under the response headers for any page.

How to verify this yourself

  1. Open your browser's developer tools (F12) and switch to the Network tab.
  2. Load the seating chart tool, paste a class list, shuffle, download a PDF.
  3. Watch the requests: signed out, apart from the page itself and the Cloudflare page-view ping, nothing leaves — and nothing that leaves carries your data. Then try it with your Wi-Fi off; the tools keep working.
  4. Signed in, you will additionally see requests to /api/doc on rosterowl.com. That is your class list going to and from your own account, and it is the only thing sync sends.
  5. If you accepted analytics you will also see googletagmanager.com and google-analytics.com. Decline instead, and those two never appear.

If this ever changes

Nothing else gets added without appearing here first, in the same deploy that adds it. This page is the contract. If you find it out of date, that's a bug worth reporting.

Backups

"Save backup file" downloads your data to your own computer as a plain JSON file you control. Restoring reads that file locally. It is never transmitted anywhere, whether or not sync is on — and it remains the way to keep a copy that depends on nobody.

Schools and districts

If you're evaluating RosterOwl for a school, the distinction that usually matters is this: used as it comes, RosterOwl stores no student data outside the teacher's own device. Sync is the one feature that changes that, it is opt-in per teacher, and it can be switched off and its stored copy deleted at any time. The FERPA and COPPA summary is on the about page, and we're happy to complete a vendor questionnaire — just ask.