Children's data retained only as long as necessary; then deleted
Why it matters
COPPA §312.10 and §312.5 require operators to retain children's personal information 'only as long as reasonably necessary to fulfill the purpose for which it was collected,' then to delete it securely. Indefinite retention of child data is independently actionable — the FTC has cited absence of a documented retention schedule in enforcement actions even when consent and age-gate practices were otherwise adequate. GDPR Article 5(1)(e) imposes a parallel 'storage limitation' principle. When parental consent is revoked, all data collected under that consent must be deleted — an orphaned analytics event or usage log tied to a deleted child account is a retention violation.
Severity rationale
Info because retention violations are prospective rather than immediate data exposure, but the FTC treats indefinite child data retention as a §312.10 violation independent of how the data was originally collected.
Remediation
Implement a cron route that deletes inactive child accounts and all associated records on a defined schedule, and ensure consent revocation triggers a cascade delete across every table that holds child data.
// app/api/cron/child-data-retention/route.ts
export async function GET() {
const cutoff = new Date()
cutoff.setMonth(cutoff.getMonth() - 12) // 12-month inactivity threshold
const inactive = await db.user.findMany({
where: { accountType: 'child', lastActiveAt: { lt: cutoff } },
select: { id: true }
})
for (const child of inactive) {
await db.$transaction([
db.analyticsEvent.deleteMany({ where: { userId: child.id } }),
db.usageLog.deleteMany({ where: { userId: child.id } }),
db.parentalConsent.deleteMany({ where: { childUserId: child.id } }),
db.user.delete({ where: { id: child.id } }),
])
}
return Response.json({ purged: inactive.length })
}
In your privacy policy state the retention period explicitly: 'Inactive child accounts are deleted after [N] months. When parental consent is revoked, the child's account and all associated data are permanently deleted within [N] business days.'
DetectionPro
The detection method for this pattern is part of AuditBuffet Pro.
The full method (what to look for, pass and fail conditions, and how results get reported) ships inside the COPPA Compliance Audit. The pattern definition, severity rationale, and remediation remain openly licensed under CC-BY-4.0.
External references
- coppa · §312.10 — Data retention and deletion — operator must retain children's PI only as long as reasonably necessary
- coppa · §312.5 — Verifiable parental consent — revocation must trigger deletion of child's PI
- gdpr · Art. 5(1)(e) — Storage limitation — personal data kept no longer than necessary for purpose
- nist:rev5 · SI-12 — Information Management and Retention — organization retains and disposes of information in accordance with policy
Taxons
History
- 2026-04-18·v1.0.0·Initial import from coppa-compliance·automated