Privacy policy
Updated 26 October 2026
This policy explains what data the Soitilo app and the soitilo.com website process, what for, where it is kept and for how long. It is based on Article 13 of the EU General Data Protection Regulation ((EU) 2016/679).
- The account is meant for an adult: an adult creates the account and adds children as learners. A child’s learner profile is not an account of its own, and no email address or other contact details are stored in it.
- Microphone sound is processed only on the device. It is never recorded or sent anywhere.
- The app and the website have no ads, analytics or tracking.
- The server is in Germany, in the EU.
- You can export your family’s data or delete it.
1. Controller and contact
Nettiteeri Oy (business ID 3331525-2, Finland)
Email: tuki@soitilo.com
Send questions and requests about your data to this address.
2. What data we process
The adult’s account
- Email address.
- Password, only as a hash. The password itself is not stored on the server or on the device.
- If you sign in with Google: your Google account’s identifier and the email address Google has verified. The sign-in token Google gives may also contain your name and the address of your profile picture, but we neither read nor store them. An account created with Google has no password until you set one with a password reset link.
- The language the service uses with you (Finnish or English) and when the account was created.
Family
- The family’s adults (a family can have two admins) and their roles.
- A random identifier of the family. It is not derived from an email address.
Subscriptions
- When a family’s admin buys a subscription on Google Play, the app gives Google the family’s random identifier, so that the purchase is tied to the right family. The server checks the purchase with Google and stores for the family, from Google’s answer: the purchase’s identifier, Google’s order number (by which support finds the subscription), the product and the plan (family or personal), the state, when it expires, whether it renews automatically, whether it is a free trial or a test purchase, the price and currency, the identifier of an earlier purchase the subscription replaced, when the data was checked and changed, and when the trial reminder was sent. When the free trial of an automatically renewing subscription ends in two days, we send a reminder to the family owner’s email address with the end time, the price Google gave and how to cancel the subscription. We do not store the payment method, name or address.
- Google notifies the server when a subscription changes (for example when it renews, is cancelled, ends or is refunded). The notification is stored as it arrives: it holds the purchase’s identifier, the product, the kind of event and its time. The server does not trust what the notification says but always checks the subscription with Google.
- The service’s administrators can give a family access without a purchase (for example to an app store reviewer or a teacher). Such access can last until a day or be a permanent payment exemption. For this we store the plan, when it ends (none for an exemption), who gave it and a free-form note. Giving, changing and withdrawing such access is also recorded in the server’s log or, when done in the administration, in its audit log: for access until a day, with its old and new plan and last day; for a payment exemption, only whether it was turned on or off.
Invitations and teachers
A family’s admin can invite the family’s second admin or a teacher by email. For an invitation we store:
- the invited email address and the role (admin or teacher)
- the inviter’s name as they wrote it (at most 40 characters), the account that invited, and when the invitation was created and when it ends
- for a teacher, the learners the teacher may see.
The code in the invitation link is stored only as a hash. The invitation email has the inviter’s name but no learner’s name. A teacher has an account of their own, with the same data as an adult’s account. For a teacher we also store which learners of which family have been shared with them, the inviter’s name and the account that invited. A teacher is not a member of the family.
A teacher sees the shared learners in the browser, in the teacher view, read only: the learner’s name, the inviter’s name, the chapter, the last day of practice, whether the profile is resting, the skill states the app has worked out (played with support or on their own, stuck) and the stars and badges of library songs (in time, with both hands). If the family’s device may not have sent the latest practice yet, the view says so without telling anything about the devices. A teacher does not see play events, the family’s other learners or anything about the family’s adults.
Learners
The adult adds the family’s learners, usually children. For a learner we store:
- a name or nickname (at most 20 characters)
- a profile picture, which is one of the app’s own pictures
- an age group (4–7, 8–17 or adult)
- language, presentation style and the app’s other settings, except the spiritual choices and the song path (below, On the device)
- whether the profile is active or resting.
We do not ask for a date of birth, a photo or contact details.
Play events and progress
For every time a learner plays, except hymns and Songs of Zion (below, On the device), we store which piece and task was played, in which way (listening, practice or playing), with which input (the on-screen piano, a keyboard connected with a USB cable, or the microphone), when and in which time zone, how it ended, and for each note whether it was hit and by how many milliseconds the timing was off. Hints given are stored too. When an adult opens a stage of the learning path by hand, we store which stage was opened and when. We also store the learner’s skill state and the state of the stages of the learner’s learning path (which stages are done and which is current), and the library songs the learner has earned stars for, with their names, stars and badges, except hymns and Songs of Zion. The app computes these from the events. We also store which device’s sign-in sent each event.
Devices
Each device signed in to the account gets its own sign-in token. Its name is “Soitilo Android” or “Soitilo iOS”, and it records when it was last used and the app version it was last used with. The app does not read the owner’s name, and it sends the device model only with feedback (see Feedback).
An adult can pair another device of the family, for example the children’s game phone, as a family device without their own credentials. The adult’s app asks for a one-time six-character code that is valid for 10 minutes. The server stores only a hash of the code, with the family, the account that asked for it and when it ends, and deletes them when the code is used or a new code is asked for. The paired device gets its own sign-in token on the account of the adult who asked for the code. Its name is as on other devices, and it records when it was paired, when it was last used and the app version. A family device can play and sync the learners’ data, but cannot buy, export or delete data, or manage the family’s adults or devices. The family’s admins see the names, pairing times and last use times of the family devices in the app and can remove a device. Pairing and removing are recorded in the audit log: the account, the family, the identifier of the device’s token and the time, never the code.
Technical data
- The app sends its version and language with every request.
- Web server log: IP address, time, the address requested (without the code of an invitation or password reset link, or the email address in it) and the browser’s or app’s identifier.
- When something goes wrong, the server’s error log: details of the error and the account’s ID number if the request came from a signed-in account.
- To prevent abuse, the server counts sign-up, sign-in and password reset attempts by IP address and email address, password confirmation, invitation acceptance and feedback attempts by account, and invitation attempts by family.
- The password reset page, the invitation page and the teacher view start a session that records the IP address, the browser’s identifier and the signed-in account’s identifier.
Feedback
A signed-in adult can send feedback from the app. We store the message (up to 2,000 characters), the account that sent it, the family the account was in at the time, when it was sent, and the device data the app sends: the app’s version and build, the operating system and its version, the device model, the language, the screen size and the play method. The app adds no learner data; the message holds only what the adult writes in it. If we reply, the reply goes by email to the account’s address, and each reply and its time are stored with the feedback.
Feedback can be turned into a ticket in the provider’s own ticket system, Teeri-ERP, which runs on the same server as the service. The ticket gets the message, the device data, when it was sent and a link to the feedback in the service’s administration, not the sender’s email address, account or family.
Contacting us
When you email us, we process your email address, your name if you give it, and the content of your message.
On the device
The app also stores the learners and play events on the device, so that practice works without a network connection. The notes a learner plays in the My melody task (the keys and their timing, no sound) are stored only on the device and are not sent to the server. The learner’s song path (children’s songs, Songs of Zion or hymns) and spiritual choices, that is an interest in spiritual songs and hymns or Songs of Zion chosen as extra songs, and every time a hymn or a Song of Zion is played and its stars, also stay on the device only, because they could tell the family’s beliefs. So they do not move to the family’s other devices and are not in the export or seen by a teacher. All of these are deleted when the family is deleted in the app or another family’s account signs in on the device, and when the app is removed from the device. The sign-in token is kept in the device’s secure storage. The code for the adult area is stored on the device only as a salted hash.
3. What the data is used for, and on what basis
- Providing the service. The account, family, learners and play events are needed to sign in, to save each learner’s progress, to move the data between the family’s devices and to choose suitable exercises. Password reset links are sent by email. An account that signs in with Google is recognised by its Google account identifier. Basis: the contract under which the adult takes the service into use for themselves and their family (GDPR Article 6(1)(b)).
- Subscriptions. With the subscription’s data the server decides whether the family gets the paid content (chapter 1 is free for everyone), and the app shows the subscription’s state. The purchase is checked with Google, so that another family’s or a forged purchase gives no access. Basis: the contract (Article 6(1)(b)).
- Invitations. An invitation is sent to the address a family’s admin gives, to bring a second adult or a teacher into the family. Basis: the family’s legitimate interest in bringing in a second adult or a teacher (Article 6(1)(f)). A teacher’s account and its access to the learners shared with it are based on the contract under which the teacher takes the service into use (Article 6(1)(b)).
- Keeping the service running and secure. Logs, the administration’s audit log, abuse prevention and backups. Basis: legitimate interest in keeping the service running and secure (Article 6(1)(f)).
- Feedback. We read your feedback, reply to it, and fix and develop the service with it. The device data tells us where a fault happened. Basis: legitimate interest in developing the service and answering feedback (Article 6(1)(f)).
- Developing the service. On the server, we compute aggregates of the data already stored to develop the exercises and the app: how many families and learners used the app each week, how many learners have passed each stage of the route or are stuck in a skill, how many got a hint in each task or played its detour, how many have played with each play method, and how many families have a device on each app version. An aggregate has no row of a single learner or family, and a group of fewer than five learners or families shows only that there are fewer than five. Nothing more is collected for them, and no other service is used. Basis: legitimate interest in developing the service (Article 6(1)(f)).
- Contacting us. We answer your message and handle your matter. To handle a support request, we may look at the family’s data in the service’s administration (see section 7). Basis: legitimate interest in answering (Article 6(1)(f)).
The app computes a learner’s skill state from the play events to choose the next exercises. This has no legal or similarly significant effects (Article 22). The data is not used for advertising, and it is not sold.
An account needs an email address and a password or a Google account, and a learner needs a name, a picture and an age group. Without them the service cannot be used. No law requires you to give the data.
4. Children’s data
The account is meant for an adult: an adult creates the account and adds children as learners. A child’s learner profile is not an account of its own. The family’s settings and data are in the adult area, which opens with the adult’s own code.
An admin can share the learners they choose with a teacher. The teacher does not see the family’s other learners. The admin can change what is shared or remove the teacher at any time, and the access ends at once. Deleting a learner also ends a teacher’s access to it.
A learner’s name can be a nickname. The app can say the learner’s name aloud with the device’s own speech synthesis, which works without a network connection. The name is not sent to an online speech service.
5. Microphone
When the microphone is the input, the app listens to the piano and recognises the notes in the device’s memory. The sound is never recorded or sent anywhere. Only the play event goes to the server: which notes were hit and how the timing went, just as when playing on the on-screen piano.
6. No ads, no tracking
The app has no ads, analytics, error reporting or other third-party services that would collect data, except the logging of Google’s billing library described in section 7. We learn about crashes only from the app stores’ own reports (Google Play and the App Store), which the stores collect under their own policies and the device’s settings.
The website loads nothing from other sites and uses no tracking or advertising cookies. Only the password reset page, the invitation page, the teacher view and our own people’s sign-in to the service’s administration set the session cookies their forms and sign-in need.
7. Where the data is and who processes it
- DigitalOcean, LLC provides the server where the service and its database run. The server is in Frankfurt, Germany. A backup of the whole server is taken once a week to DigitalOcean’s service in the same data centre.
- Mailgun Technologies, Inc. (Sinch group) sends the password reset emails, the invitations, the replies to feedback and the trial reminders from Mailgun’s EU region. It receives the recipient’s email address and the message.
- Dropbox International Unlimited Company (Ireland) keeps an encrypted backup of the database. The backup is encrypted on the server before it is transferred, and Dropbox does not have the key.
- Zoho Corporation B.V. (the Netherlands) provides the email service where messages to us arrive. It keeps the messages in its data centre in the EU.
These companies process the data on our behalf as processors. The data is not disclosed to anyone else, except to authorities when the law requires it.
If you sign in with Google, Google Ireland Limited identifies you as a controller in its own right, under its own terms and privacy policy, and knows that you signed in to Soitilo. We receive from Google only the data described in section 2 and send Google no data about the learners.
Subscriptions are sold and billed by Google Play. Google Ireland Limited processes the payment and the buyer’s data as a controller in its own right, under its own terms and privacy policy. With the purchase the app gives Google the family’s random identifier, and the server sends Google the purchase’s identifier and the app’s package name to check the purchase. When a family asks support to cancel or refund a subscription, the server sends Google the purchase’s identifier and the request to cancel or refund it. Google’s notifications about changed subscriptions reach the server through Google Cloud Pub/Sub. When an adult opens the subscription view, the app connects to Google Play with Google’s billing library, which logs its billing calls (whether they succeeded or failed) and connection problems; Google uses this information under its own privacy policy to improve the library and its support for errors.
The service’s administration
Only our own people, the owner and support, see a family’s data in the service’s administration, to handle support requests. Signing in to the administration needs a password and two-step verification, or a passkey that asks for the device’s PIN or biometrics every time. Support sees the email addresses, roles and account creation times of the family’s adults, the names, use times and app versions of the devices’ sign-in tokens and whether a device is a family device, the learners’ names, states and creation times, when the server last received a learner’s play event, and the family’s invitations (address, role, learners, when sent and until when) and teachers (address, the learners they see, when they joined). To handle a support request, support can open why the app adapted for a learner: which skill is stuck or why the learner got a detour, and the times, tasks, modes, endings and counts of notes right first time of the attempts that led to it, but not the notes played. The owner and support also see feedback with the sender’s email address and device data, and can reply to it, close it and turn it into a ticket. The owner can carry out a deletion request that came by email there. Every view and deletion of a family’s or a learner’s data, and every view, reply, closing and ticket of feedback, is recorded in an audit log, as are family devices paired and removed in the app: who looked or changed, which family, learner or feedback, and when. The log holds only identifiers, no names or other data, except that a change to access given without a purchase records, for access until a day, its old and new plan and last day, and for a payment exemption, whether it was turned on or off.
The owner and support also see the aggregates described in section 3 (developing the service) in the administration. They have no names, identifiers or rows of a single family or learner, so viewing them is not recorded in the audit log.
Transfers outside the EU and EEA
- DigitalOcean is a US company, although the server is in the EU. Where it processes data outside the EU and EEA, its data processing agreement bases the transfer on the EU–U.S. Data Privacy Framework and, as a fallback, on the European Commission’s standard contractual clauses (Implementing Decision (EU) 2021/914).
- Mailgun stores EU-region messages in the EU, but data may also be processed by the group’s US companies. These transfers are based on the standard contractual clauses (Implementing Decision (EU) 2021/914) in Mailgun’s data processing agreement.
- Dropbox may transfer the encrypted backup to its US group company Dropbox, Inc. The transfer is based on Dropbox, Inc.’s certification under the EU–U.S. Data Privacy Framework.
- Employees of Zoho’s Indian group company, Zoho Corporation Private Limited, may process the messages from India, although the messages are kept in the EU. This is based on standard contractual clauses between Zoho’s Dutch and Indian companies and on the supplementary measures of a transfer impact assessment.
8. How long the data is kept
- The account, family, learners and play events are kept as long as the account exists. Deleting the family deletes the whole family at once (see Deleting your account). If for 24 months none of the family’s adults has signed in to the app, used it on any of the family’s devices or changed their password, the family is deleted with all its data, as when the family is deleted. There is no separate notice. A family is not deleted while it has a Google Play subscription that is active, in its grace period, on hold or paused, or access given by the administrators that is in force.
- A subscription’s data and access given by the administrators are kept as long as the family exists, also after the subscription has ended, and are deleted with the family.
- Google’s notifications about changed subscriptions are kept for 12 months from their arrival. Those about the family’s purchases are deleted at once when the family is deleted.
- A device’s sign-in token ends when the device signs out, when a family admin removes a family device, when its account’s password is reset or the account is deleted, or when it has not been used for 90 days. An unused pairing code ends in 10 minutes. An ended token is deleted within two days.
- Answers to the app’s requests are kept for 24 hours, so that a send that was cut off is not saved twice.
- An invitation is valid for 14 days. It is deleted when it is accepted or cancelled, otherwise 30 days after it ended.
- A teacher’s access to learners lasts until an admin removes the teacher or the learner, the family is deleted or the teacher’s account is deleted. A teacher’s account is kept until the teacher asks for its deletion (see Deleting your account).
- Feedback and its replies are kept for 12 months from the last change (sending, reply, closing or ticket). They are deleted at once when the sender’s account is deleted, also when the family is deleted. Feedback copied into a ticket is not deleted with the account; it is kept as long as handling the matter requires.
- Attempt counters expire within an hour, the daily counter of invitation attempts within a day.
- A website session (the password reset page, the invitation page and the teacher view) expires when it has not been used for two hours, and ends at once when the teacher signs out. A password reset ends all of the account’s sessions. Expired sessions are deleted from time to time.
- The administration’s audit log is kept for 12 months, also after the family or learner is deleted.
- The server’s error logs are kept for up to 15 days.
- The web server’s logs are kept for up to 15 days.
- Messages to us are kept as long as handling the matter requires.
Backups
The database is backed up every night. The server keeps every backup of the last 7 days, then one a week until 2 months old, and then one per half-year until 12 months old. The encrypted copy in Dropbox is kept the same way, and a copy deleted from Dropbox can still be restored for 30 days. In addition, the weekly backup of the whole server is kept for 4 weeks.
Data deleted from the service can therefore remain in backups for at most 12 months and 30 days. Backups are used only to restore the service after a failure.
9. Your rights
Under the GDPR you have the right to
- know what data about you and your family’s learners is processed, and get a copy (Article 15)
- have incorrect data corrected (Article 16)
- have the data deleted (Article 17); see Deleting your account
- restrict processing (Article 18)
- get the data in a machine-readable format (Article 20); the family’s data can be exported in the app’s adult area, under Data and account; the export leaves out feedback, subscription and access records (including Google’s notifications of subscription changes), device sign-in records, the Google account identifier and the administration’s audit log, but you get them by asking
- object, on grounds relating to your particular situation, to processing based on legitimate interest (Article 21).
Send your request to tuki@soitilo.com from your account’s email address. We answer without undue delay and within one month at the latest (Article 12).
If you think the processing of your data breaks data protection law, you can lodge a complaint with a supervisory authority. In Finland it is the Data Protection Ombudsman: Office of the Data Protection Ombudsman, PL 800, 00531 Helsinki, Finland, tietosuoja@om.fi, tietosuoja.fi. You can also complain to the authority of the EU country where you live.
10. Children in the United States (COPPA)
This section tells parents in the United States how we handle the data of children under 13 under the Children’s Online Privacy Protection Act (COPPA) and its rule (16 CFR part 312).
Operator: Nettiteeri Oy, Viereläntie 4 A, 90630 Oulu, Finland, phone +358 44 280 9861, email tuki@soitilo.com.
What a child’s use stores on the server. A child has no account of their own: an adult creates the account and adds the child as a learner. A child is never asked for an email address, phone number, address, date of birth or photo. The server stores the learner’s name or nickname, profile picture (one of the app’s own pictures), age group and settings that the adult gives, and from the child’s practice the play events (which song and task, in which way, when, which notes were hit and how the timing went, the hints given), the skill states, the state of the path’s stages and the stars and badges of library songs (in more detail in section 2). It also stores the device’s sign-in token and which device’s sign-in sent each event, and the web server’s log records the IP address and the app’s identifier of every request.
What the data is used for. We use the data only to provide the service: for sign-in, for syncing the data between the family’s devices, for fitting the exercises to the child’s skills and, if the adult chooses so, for the teacher view. We also compute aggregates from it to develop the service, with no individual child’s data in them (section 3), and support can look at it when handling the family’s support request (section 7). The data is not used for advertising and is not sold, and the app has no ads or third-party analytics. The data is on the server and in its backups, which only the processors named in section 7 handle on our behalf.
The teacher view. Only an adult of the family can invite a teacher, and the adult chooses which learners the teacher sees. The teacher sees a read-only summary of the shared learners in the browser: the learner’s name, the inviter’s name, the chapter, the last day of practice, whether the profile is resting, the skill states (played with support or on their own, stuck) and the stars and badges of library songs. The teacher does not see play events, the family’s other learners or anything about the family’s adults. The adult can change what is shared or remove the teacher in the app at any time, and the access ends at once.
Microphone. Microphone sound never leaves the device: the app recognises the notes in the device’s memory, and the sound is never recorded or sent anywhere (section 5).
A parent’s rights. As a parent you can at any time review your child’s data and stop its further collection:
- Your child’s progress shows in the app, and the family’s data can be exported in the app’s adult area, under Data and account (section 9 says what the export leaves out).
- When you delete the learner in the app’s adult area (Data and account, Delete profile), the learner’s profile, play events and skill states are deleted from the server at once, and a teacher’s access ends. No more data is collected about the child after that. The whole family can be deleted in the same place (see Deleting your account).
- You can also email tuki@soitilo.com from your account’s email address to ask us to show, export or delete your child’s data or to stop collecting it. We answer within one month at the latest.
Retention. A child’s data is kept as section 8 says: as long as the learner and the family exist, and the family is deleted when it has not been used for 24 months. Deleted data can remain in backups for at most 12 months and 30 days.
11. Changes
We update this policy when the service or the processing of data changes. The date of the update is at the top of the page.