Safeguard
Compliance•

What does a student data privacy agreement say about subprocessors?

The National Data Privacy Agreement covers sub-processor limits. Here is how that connects to the cloud services and libraries an edtech vendor uses.

Safeguard Security Team
4 min read

The National Data Privacy Agreement, a model contract many school districts use with edtech providers, includes restrictions on sub-processors, along with terms on data breaches, advertising limits, and de-identified data. For you, that means knowing every service that touches student data, and being able to list it.

What the NDPA is

The Student Data Privacy Consortium, which began with a group of Massachusetts school districts and now has alliances in many states, released the first National Data Privacy Agreement in 2020. A working group of attorneys, district officials, company representatives, and nonprofit organizations drafted it. The Future of Privacy Forum's write-up says its goal is "common expectations" between schools and providers, and that state alliances add clauses for their own laws.

The same write-up notes limits: definitions overlap, an audit clause could let several districts audit one company, a data breach is not explicitly defined, and smaller companies may face barriers. Read your actual signed version, because state terms differ. Nothing here is legal advice.

Sub-processor versus dependency

These are different things, and mixing them up causes confusion in reviews.

TermTypical meaningExample
Sub-processorA third party service that processes student data for youCloud host, email sender, support tool
DependencyCode you include and run inside your own systemA web framework, a PDF library

A dependency usually is not a separate company holding data. But a dependency can send data to one. A telemetry library that posts events to an outside server turns a "just a library" into a data flow to a third party.

How to keep your sub-processor list true

  1. Start from your architecture, not your invoices. List every external service that receives student data in any form.
  2. Add data flows hidden in code. Search your dependencies and your own code for outbound network calls to domains you do not run.
  3. Compare the result with the list you gave your district customers.
  4. Set a rule: a new outbound destination requires a review before release.
  5. Date the list and keep an owner, so a district question about it has a quick answer.

This turns a static contract clause into a process you can demonstrate.

What to do when an update adds a destination

Library updates occasionally add network calls, such as crash reporting or usage statistics, often enabled by default. Reading release notes for libraries that sit in student-facing code is cheap insurance. If a new destination appears, either disable it in configuration, replace the library, or update your sub-processor disclosure before release.

Try it yourself

Open the demo and notice how a single package leads to a chain of further packages. Any link in that chain could contain an outbound call you did not expect.

Click through it at your own pace, or open it full screen.

Safeguard's SBOM and dependency scanning helps you see what is in a build, and the free scan is a no-cost starting point.

Quick check

Is an open source library a sub-processor?

Usually no, since it runs inside your system. If it transmits student data to an outside party, that party may be a sub-processor. Ask counsel how your agreement defines the term.

Who maintains the NDPA?

The Student Data Privacy Consortium published it, with input from schools, state groups, providers, and legal organizations, according to the Future of Privacy Forum.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.