Privacy & learner data

Privacy & learner data

Your academy decides what its learners' data is for; Mastria stores and processes it on your behalf. In GDPR terms, your company is the controller and Mastria is your processor. This page lists what Mastria holds about a learner, where it lives, who handles it, and how to delete it when someone asks.

What Mastria stores about a learner

  • Identity: the email they sign in with, any recovery or former address they confirmed, and the display name they set on My profile.
  • Their place in your academy: the account they belong to (matched by email domain, or set by your team), when they joined, when they were last active, and how they first arrived (a campaign, a shared certificate, another site) when the sign-in form recorded it.
  • What they did: lesson progress and finished courses, lab attempts (including the code they ran checks on), lab runs and hints opened, quiz answers, exam attempts and their time to pass an exam, the exam reminders sent to them and whether they stopped them, certificates, course ratings and their comments, and lesson reports and their notes.
  • What your systems sent: product metrics you send to the metric ingest, keyed by their email or by your own user id for them.
  • Purchases, when you sell certificates: what they bought and the Stripe ids of the payment. The payment itself lives in your own Stripe account.
  • Their choice about your customer's progress report: whether they agreed to be named in it (see Sharing progress with a customer).

What Mastria doesn't do:

  • No tracking cookies and no third-party analytics or ad scripts. The only cookies are for signing in and for the light or dark appearance choice.
  • Reach's page views and lab runs are counted without identity: a daily number per page, with no cookie and nothing stored about the visitor (see Reach).
  • Fonts are served from Mastria itself, never loaded from Google.

Where it lives and who handles it

ServiceWhat it handlesWhere
Neon (Postgres)The database: everything listed aboveAWS us-east-2, Ohio, United States
VercelRuns the app and serves its pagesFunctions in Washington, D.C., United States; pages pass through Vercel's worldwide edge network
ResendSends sign-in links, certificate emails, exam reminders and invitations: the recipient's address and the email, and reports back whether each arrivedSends from Ireland (eu-west-1)
jsDelivrServes the lab runtimes (DuckDB, Python) to the learner's browser, which fetches them directlyWorldwide CDN
StripeCertificate purchases, on your own Stripe account, only if you sell certificatesYour Stripe account

Lesson text and your docs pages go to Anthropic for content freshness checks, and lesson video audio goes to Deepgram for transcripts. Neither receives anything about learners.

Learner data is stored in the United States. Mastria doesn't offer EU hosting.

Your privacy policy

Learners give their email address on your academy's sign-in page, so that's where your privacy policy belongs. Your footer appears on every page learners see, the sign-in and "Check your email" pages included: add a Privacy link to it under Admin → Brand → Header and footer (see Brand & appearance).

Deleting a learner

When someone asks to be erased, anyone on your team opens them in Admin → Learners and uses Delete learner at the foot of their page. It removes the learner and everything they did at your academy, for good, and the product metrics your systems sent for their addresses. What goes and what stays is in Deleting a learner.

Your privacy tooling can do the same through the API, by email address or learner id, including for someone who never signed in but whose product metrics you sent. A webhook event, learner.deleted, tells your warehouse what to erase. Both are in Integrations & exports.

A learner's own copy

Learners see their own record without asking anyone: My profile lists their courses, progress and certificates, and its training history prints as a transcript with a verification link for each certificate.

How long things are kept

  • A learner's data stays until you delete the learner (or the academy).
  • The webhook delivery log keeps each event for 30 days.
  • An email waiting to be sent (a certificate email, a security notice) is kept 12 hours at most, and removed once sent.
  • The list of emails your academy sent a learner (each one's subject and whether it arrived, never its text) is kept a year.
  • A sign-up source that never became a learner (the email link was never opened) is removed after two days.
  • After a deletion, the database's restore history holds the old rows for up to 6 hours, then they're gone.