Data Retention Policy

Draft, not yet in force. This policy is being reviewed before kids51 accepts accounts or payments. Questions: hello@kids51.com.

Service: kids51.com · Operator: Dzmitry Pliachko, ul. Stanisława Drabika 63/19, 52-131 Wrocław, Poland Version: DRAFT v0.1 — 14 October 2026 · Effective date: [EFFECTIVE DATE] Owner: Dzmitry Pliachko, who also coordinates our information security program.

This is our written data retention policy required by the FTC’s COPPA Rule, 16 CFR §312.10. It sets out, for each kind of information, why we collect it, why we need to keep it, and when we delete it. It is published as part of our Privacy Policy and covers all personal information we hold, with children’s information marked [CHILD]. We never keep children’s personal information indefinitely.

The retention periods in this policy are also implemented in our code (a single RETENTION setting from which the table on our website is generated), and an automated job deletes data when a period ends.

1. Retention schedule

1.1 Children’s information [CHILD]

DataPurpose of collectionBusiness need to retainDeleted when
Child profile: nickname, avatar (fixed set), optional age band, profile ID, creation dateShow and operate the child’s profile for the parentNeeded for as long as the family uses the profileWhen the parent deletes the profile or the account (immediately), or when an inactive account is deleted (see 1.2)
Practice events: skill, correct/incorrect, response time, game mode, timestampAdapt practice; show recent progress; worksheets from mistakesRecent detail is needed for short-term adaptation and the parent’s recent-activity view; older detail is not needed because a summary is kept90 days after the event, automatically
Skill progress summary: skill, review level, next due date, right/wrong counts, last seenKeep adaptive practice working after events are deletedNeeded for as long as the profile existsWith the profile
Child device link: hashed token, profile IDs allowed, device label (fixed list), created/last usedAuthenticate the child’s paired deviceNeeded while the device is in useWhen the parent unlinks the device or deletes the profile/account, or automatically after 90 days without use
Class membership (future teacher feature): nickname + avatar in a classSchool-authorized classroom useNeeded during the school year60 days after the end of the school year, or earlier when the teacher deletes the class [TO CONFIRM definition of school-year end, e.g. 30 June]
Anonymous analytics from children’s screens (no identifiers)Aggregate usage countsNot personal information; kept for trend analysis3 months (platform limit)

1.2 Parent (account holder) information

DataPurposeBusiness need to retainDeleted when
Account: email, verification date, created, last active, marketing choice, languageProvide the account and service emailsNeeded while the account existsOn account deletion; or after 24 months of inactivity, 30 days after a warning email
Sign-in link records (hashed)One-time sign-in (valid 15 minutes)Short-term abuse investigation24 hours after creation
Sessions (hashed)Keep the parent signed inUntil expiryWhen the session expires (30 days after last activity) or on sign-out/deletion
Consent records (notice/terms versions, grant or withdrawal, timestamps incl. confirmation and withdrawal, method; hashed one-time confirm/withdraw links valid 30 days)Prove COPPA consent and agreement to termsLegal proof of consentLife of the account + 3 years [TO CONFIRM — see Review Pack: conflict with deletion cascade]
Subscription recordProvide paid plan, reminders, cancellation, refundsNeeded while the account existsOn account deletion (financial part moves to the ledger)
Word lists, family charts (future)Features requested by the parentWhile the parent uses themWhen the parent deletes them or the account
Email delivery logProve required notices were sent (e.g., renewal reminders)Evidence in case of billing disputes18 months after sending; also on account deletion
Support/privacy correspondenceAnswer requestsFollow-up and evidence of handling[TO CONFIRM, e.g. 24 months after closure]

1.3 Business and system records

DataPurposeBusiness needDeleted when
Financial ledger (transaction IDs, amount, currency, tax, date, refund) — no email, no child linkAccounting and taxLegal obligation under Polish accounting and tax law5 years from the end of the tax year of the transaction [TO CONFIRM with accountant]
Payment webhook events (minimal payload)Process each payment event exactly onceShort-term duplicate protection90 days
Deletion request record (hashed email, dates, scope)Prove we honored deletion requestsLegal evidence3 years
Server logs (no request bodies, masked IP)Security and troubleshootingShort-term incident investigation7 days
Abuse-protection counters for device pairing: keyed hash of the network address (never the IP address itself), action, attempt timeLimit pairing attempts (20 per hour per network) so pairing codes cannot be guessedNeeded only for the one-hour counting window1 hour after the attempt, automatically (checked every minute)
Analytics events (no identifiers)Usage statisticsTrend analysis3 months
Database backups (point-in-time recovery)Disaster recoveryRestore after an incidentRolling 30 days; deleted data is gone from backups within 30 days

1.4 Data held by our service providers

ProviderWhatRetention
CloudflareHosts everything aboveFollows our deletion; platform logs/analytics as stated above
StripeParent’s payment dataWe delete the Stripe customer record when the account is deleted. Stripe keeps transaction data required by its own legal obligations under its privacy policy
[EMAIL PROVIDER — Postmark, TO CONFIRM]Sent-message data[TO CONFIRM: provider’s message/activity retention setting — set to the shortest available]

2. How deletion works

  1. Automatic expiry. A scheduled job runs daily [TO CONFIRM frequency] and deletes rows whose period has ended. A monthly retention report checks that nothing is older than allowed.
  2. Child profile deletion (by the parent): immediately deletes the profile, its practice events and skill progress, and removes it from linked devices.
  3. Consent withdrawal without account deletion (dashboard, or the one-time link in the consent confirmation email): in one database transaction, unlinks all of the family’s devices, deletes all practice events and skill progress, pauses the child profiles (nickname and avatar only remain, nothing is collected) and records the withdrawal. The parent account and subscription are kept; the parent can give consent again later.
  4. Account deletion (dashboard or public form): runs immediately in one database transaction and calls Stripe:
    • revoke all sessions and device links;
    • delete all child profiles, practice events and skill progress;
    • delete word lists and charts;
    • cancel any subscription immediately and delete the Stripe customer;
    • move financial lines to the anonymous ledger; delete subscription, email log and consent records [TO CONFIRM — R3];
    • delete the account; record only a hashed email as proof of deletion; send a confirmation email. Commitment: completed within 7 days of the request (normally immediately); removed from backups within 30 days.
  5. Method. Deletion is permanent removal from the production database (SQL DELETE in a single, tested code path), followed by expiry of point-in-time backups. Access to production data and deletion tools is limited to Dzmitry Pliachko (owner) with two-factor authentication. Deleted children’s data is not copied, exported or archived anywhere.
  6. Inactive accounts. After 24 months without sign-in we send a warning email; if there is no sign-in within 30 days, the account is deleted as in step 3.

3. Review

This policy is reviewed at least once a year, and whenever we add a feature that collects new data, together with the annual risk assessment under our information security program (16 CFR §312.8). Any change to children’s data retention is reflected in the Privacy Policy, and material changes are notified to parents.

Retention schedule

This table is generated from the same setting our deletion job uses.

Retention schedule (generated from our code)
DataWhat is storedWhyDeleted when
Child profileNickname, avatar (fixed set), optional age band, profile ID, creation dateShow and operate the child's profile for the parentImmediately when the parent deletes the profile or the account, or when an inactive account is deleted
Practice eventsSkill, correct/incorrect, response time, game mode, timestampAdapt practice; show recent progress; worksheets from mistakes90 days after the event, automatically (a summary stays in skill progress)
Skill progress summarySkill, review level, next due date, right/wrong counts, last seenKeep adaptive practice working after events are deletedWith the profile
Child device linkHashed token, allowed profile IDs, device label (fixed list), created/last used; while pairing: hashed 6-digit code, its expiry (10 minutes) and a count of wrong guesses (the code stops working after 5)Authenticate the child's paired deviceWhen the parent unlinks the device or deletes the profile/account, or after 90 days without use
Parent accountEmail, verification date, created, last active, marketing choice, languageProvide the account and service emailsOn account deletion; or after 24 months of inactivity, 30 days after a warning email
Sign-in link records (hashed)Token hash, email, expiry (15 minutes), used timeOne-time sign-in link valid 15 minutes24 hours after creation
Sessions (hashed)Session ID hash, parent ID, created, expiryKeep the parent signed inWhen the session expires (30 days after last activity) or on sign-out/deletion
Consent recordsConsent kind (terms, COPPA notice, marketing), grant or withdrawal, policy version, method, timestamps (given, confirmation email sent, confirmed by the parent, withdrawn); hashed one-time confirm/withdraw links (valid 30 days)Prove COPPA consent, its email confirmation and any withdrawal, and agreement to termsOn account deletion (a minimal consent proof is kept, see next row)
Consent proof after deletionHashed email, consent kind, grant or withdrawal, policy version, dates. No child dataLegal proof that consent was obtained (COPPA, California §17602)3 years after account deletion (or 1 year after the subscription ended, if later) [1]
Subscription recordProvider, customer/subscription IDs, plan, status, trial and period datesProvide the paid plan, reminders, cancellation, refundsOn account deletion (financial part moves to the ledger)
Email delivery logTemplate name, sent time, provider message IDProve required notices were sent (e.g., renewal reminders)18 months after sending; also on account deletion
Financial ledgerTombstone ID, provider transaction IDs, amount, currency, tax, date, refund. No email, no child linkAccounting and tax (Polish accounting and tax law)5 years from the end of the tax year of the transaction [2]
Payment webhook eventsProvider event ID, type, received time, minimal payloadProcess each payment event exactly once90 days
Deletion request recordHashed email, dates, scopeProve we honored deletion requests3 years
Abuse-protection counters (hashed)A keyed hash of the network address (never the IP address itself), the protected action (e.g. device pairing), attempt timeLimit device-pairing attempts (20 per hour per network) so pairing codes cannot be guessed1 hour after the attempt, automatically (checked every minute)
Anonymous analyticsEvent name, route template, zone, country, device class. No identifiers, no cookies, no IP or user agentAggregate usage counts3 months
Server logsNo request bodies, masked IPSecurity and troubleshooting7 days
Database backupsEverything aboveRestore after an incidentRolling 30 days; deleted data is gone from backups within 30 days
[1] Proof period to be confirmed by counsel
[2] Period to be confirmed by the accountant

For grown-ups

Quick grown-up check

Press and hold for 3 seconds the button with the number:

Keyboard: focus a button and hold Space.