ExplainStats data sheet for schools and universities
What the add-on reads, what it stores, where, who can see it and for how long: the answers your IT, privacy and data-protection staff need, on one page.
To keep a copy for your records, print this page or save it as a PDF from your browser.
In short
- ExplainStats runs inside Google Sheets, in Google's Apps Script environment. There is no ExplainStats server: the add-on's code makes no network calls and does not have the permission to call external services, so spreadsheet data is not sent to us or to anyone else.
- It reads the cells a user selects (and, before writing, checks that the output cells are empty), in the spreadsheet where it is open, and writes its results into that same spreadsheet.
- It asks no one for a name, an e-mail address, a class or a school. Students and teachers need no account with us.
- No analytics, no advertising and no cookies in the add-on. Data is never used to train AI models.
- We, the developer, cannot open, read or export anyone's spreadsheets.
Permissions
ExplainStats asks Google for three permissions (OAuth scopes), the minimum it needs to work.
| Permission | Why |
|---|---|
spreadsheets.currentonlySee, edit, create and delete only the specific spreadsheets you use this add-on with | To read the range the user selects and write the results into that spreadsheet. It gives no access to other files. |
script.container.uiDisplay and run third-party web content in prompts and sidebars inside Google applications | To show the ExplainStats menu and sidebar inside Google Sheets. |
userinfo.emailSee your primary Google Account email address | To check a licence key (a personal key is signed for one e-mail address, a school key for one domain) and, when a user clicks a pass to buy it, to pre-fill the payment page so that the key is made for this account. Class codes never use it. |
Not requested: Google Drive, Gmail, contacts, calendar, other spreadsheets, or connection to external services (script.external_request). The sidebar loads only Google's own add-on stylesheet; links to explainstats.com (guides, help, privacy) open only when the user clicks them.
Everything the add-on stores
| Data | Where | Who can read it | How long |
|---|---|---|---|
| Cells selected for an analysis | Read into memory inside Apps Script during the calculation | The add-on, running for the user | Discarded when the calculation ends. Never stored by ExplainStats. |
| Results: tables, charts, "show the steps" sheets, exercise sets, sample data | In the user's spreadsheet, as ordinary content | Everyone the spreadsheet is shared with | Until the user deletes them |
| Settings: interface language, citation line on or off | The user's Google account (Apps Script user properties, private to ExplainStats) | Only the add-on, running for that user. Not the developer. | No automatic expiry. No spreadsheet content, name or e-mail address. |
| Plan and counters: trial start date, Pro analyses used this month, number of analyses run (used to show an optional review request at the 3rd and 10th analysis), whether that request was answered | Same place | Same | Same |
| Launch-offer marker: whether the account used ExplainStats before paid passes went on sale | Same place | Same | No automatic expiry |
| Licence key or class code, only if one is entered; with a class code, a random seat number | Same place | Same | Until it is removed in the sidebar |
| Class places: for each class code, the random seat numbers of the accounts that joined it (at most 150) | Apps Script script properties of the ExplainStats project | The developer (seat numbers identify no one; only the count is useful) | Deleted a month after the class code ends |
| Exam mode, only if a teacher turns it on: an on/off marker with a SHA-256 hash of the PIN (never the PIN itself) | Normally inside the spreadsheet, so that copies keep exam mode (if Google refuses that, in Apps Script storage attached to the spreadsheet) | The add-on | Until exam mode is turned off |
| Exam mode: a counter of wrong PINs and the end time of the 15-minute lock | Apps Script storage attached to that spreadsheet (not copied with it) | The add-on | Cleared when the right PIN is entered |
Read but not stored. The account's e-mail address is read when a licence key is checked (compared inside Apps Script) and to build the pass buttons' payment links: it reaches the payment provider only if the user clicks one. It is not stored by the add-on, not sent to us and not written to error reports. The account's language setting is read to choose the default interface language.
What Google records for the developer
Like every Apps Script project, ExplainStats has records that Google keeps and shows only to the developer:
- execution records: which function of the add-on ran, when, for how long and whether it succeeded, and how many people used the add-on (a count);
- error reports for unexpected failures: the error message and where in the code it happened, kept for up to 30 days.
ExplainStats is designed so that these records contain no spreadsheet content and no e-mail address: messages that quote the user's data (for example "Cell B4 is not a number") and licence-key messages are shown in the sidebar only and are not recorded. If an analysis fails unexpectedly, text in double quotation marks is masked before Google records the message. We use these records only to fix bugs and to know how much the add-on is used.
Students and minors
- ExplainStats collects no personal information from students: no name, no e-mail address, no class or grade, no account. What it keeps is listed above, in each student's own Google account or spreadsheet.
- With a class licence, students type the class code once: nothing else is asked, and the add-on never reads their e-mail address for it.
- Google Workspace for Education lets the administrator decide which third-party apps users designated as under 18 can use. To allow ExplainStats, add it by its Marketplace listing or install it for the domain: see Deploying it for the whole domain.
- If your school or district asks vendors to fill in a privacy questionnaire or to review a data-privacy agreement, send it to [email protected] and we will answer it.
Security
- Least privilege: the three permissions above, and nothing else.
- Reviewed by Google: ExplainStats passed Google's OAuth verification and the Google Workspace Marketplace review.
- Encryption: exchanges between the browser, Google Sheets and Apps Script are encrypted in transit; data kept by Google is encrypted at rest by Google's infrastructure. The website is served over HTTPS only.
- Developer access: one Google account, protected by 2-step verification, can access the add-on's code and its records. No one at ExplainStats can open users' spreadsheets.
- Incidents: if a security incident ever affected personal data, we would inform the people concerned and, where required, the competent authority within the 72 hours set by the GDPR.
Service providers
| Provider | Role | Receives spreadsheet data? |
|---|---|---|
| Google (Google Workspace, Apps Script, Google Cloud) | Runs the add-on inside Google Sheets and keeps the settings, counters and records described above | The spreadsheet is already at Google; ExplainStats sends it nowhere else |
| Cloudflare | Hosts the website explainstats.com and relays payment notifications to our key service | No |
Removing ExplainStats
- A user can uninstall it from Google Sheets (Extensions › Add-ons › Manage add-ons) and remove its access at myaccount.google.com/permissions.
- An administrator can remove a domain install from the Google Admin console (Google Workspace Marketplace apps).
- Results already written into spreadsheets stay there as ordinary content. The small settings and counters kept in the user's Google account may remain after uninstalling; they contain no spreadsheet content.
Questions
Write to [email protected]. More details are in the privacy policy and the legal notice. This sheet describes ExplainStats 2.4; we update it whenever the add-on changes what it reads or stores, and the date at the top changes with it.