Cancel Premium Subscription
1.1.1 Account deletion within apps
2.1 Minimum elements to viably meet Apple requirements
2.3 How we’ll handle paid subscribers
3.5 Instructions for cancelling FlashAcademy Premium
4 Potential future development
5.3 Collections updated with masked userID.
5.4 Apple and Google submissions.
1 Summary
Changing Apple guidelines mean that by 30th June 2022 we need to allow users to initiate deletion of their account from within the app. Our understanding is that if we don’t make that provision then Apple won’t retroactively remove our app from the store but further submissions for review of our app will not pass:
Apps submitted after June 30 that do not comply with the account deletion requirements in guideline 5.1.1(v) will not pass review.
Specifically, only apps that allow for account creation must provide that feature.
Our app is split between B2C users and education/workplace users. The former can create their account through the app and so must also now be able to initiate deletion of their account through the app. That’s where our focus is for this project.
Education/workplace user accounts are created and administered through our dashboard. As such, we will disregard them from this project; this new option will not appear to them.
As B2C users can’t log in to the Web App, there’s no need for us to add the account deletion feature to the Web App.
Android
A review of Google’s core quality guidelines for Android apps indicates that they currently have no strict rule for providing an account deletion option. Nonetheless we will make our new account deletion feature available in the Android version of the app in addition to the iOS version, principally so we can avoid introducing diverging versions.
1.1 Apple guidelines
Below the Apple guidelines are noted; also see 5.1 in the Appendix for further notes from Apple’s Human Interface Guidelines.
1.1.1 Account deletion within apps
App Store Review Guideline 5.1.1 provides people with greater control over their personal data by stating that all apps that allow for account creation must also allow users to initiate deletion of their account from within the app. This requirement was set to apply to all app submissions by January 31, 2022. Due to the complexity of implementing this requirement, we’ve extended the deadline to June 30, 2022 to give you more time.
Please keep these requirements in mind when updating your app:
- The account deletion option should be easy to find in your app.
- It’s insufficient to only provide the ability to temporarily disable or deactivate an account. People should be able to delete the account along with their personal data.
- Apps in highly-regulated industries may need to provide additional support flows to confirm and facilitate the account deletion process.
- Follow applicable legal requirements for storing and retaining user account information. This includes complying with local laws in different countries or regions. As always, check with your legal counsel.
2 Requirements
This feature is only strategically important to us in the sense that we need avoid running into disruption with our iOS App Store listing; there is little apparent clamour for the feature in our user base and B2C is not our key market.
As such, our favoured approach is to determine the minimum viable offering and deliver it quickly, rather than aping a more elaborate account deletion process (e.g. Duolingo, see section 5.2 below).
2.1 Minimum elements to viably meet Apple requirements
- Obvious Delete account option within settings
- At the end of the process all personally identifiable data has been deleted from our database
- At the end of the process the user can no longer log on using that account
- At the end of the process the user can create a completely new account using the same email address and none of the previous progress nor purchases will be retained
Clicking the existing “Restore Purchases” in our app hooks into the Apple SDK and “re-links” the purchased content to that apple ID; this effectively just marks the user in our database as having access to our premium content. As such there’s no anticipated complication on that front should a user’s account be deleted and then the user re-uses the same email address for a new account.
- The entire process is translated into the user’s selected home language
- There is a 30-day cooling off period from the point of deletion request to full deletion (we need to provide the opportunity for users to change their mind)
- Once the 30-day cooling off period has begun, the Delete account option is relabelled to “Cancel Account Deletion” and the user can press this button to cancel the deletion process completely (thus no need to contact us); that cancellation needs to be instant, e.g., if the user tries to cancel at 23:59 on the 29th day
- Present clarification on what happens with paid subscriptions to our app (see 2.3 below)
- We update an automated audit log in our database which has entries added when these events occur:
- Account deletion is initially requested
- Account deletion request is cancelled
- Account is fully deleted
We will need some sort of data trail to help us settle potential disputes.
- Our privacy policy/T&Cs (https://flashacademy.com/privacy-policy/) are updated to explain what happens when you delete your account (including notes on paid subscriptions, see 2.3 below)
2.2 Elements disregarded
We do not plan to include these potential elements; rationale is noted for each decision.
- No confirmation emails; rationale is that it will require engineering to send a translated email at the identified points in the process and each email will add to our translation cost. Apple have no apparent requirement for us to provide email confirmation to users. Additionally, with Facebook/Apple-created accounts we don’t have easy access to the email address; resolving this issue would require substantial effort.
- No “soft” deactivation stage after x days; there’s no related stipulation from Apple and this would require substantial further engineering.
2.3 How we’ll handle paid subscribers
Our app subscription purchases are handled through Apple and Google, so users will continue to be billed by Apple or Google even after their account has been deleted from the FlashAcademy servers.
This situation appears to be standard across apps (see Duolingo’s instructions); users must also manually cancel their subscriptions with Apple or Google when attempting to completely delete their account.
We’ll provide a link on the delete account confirmation screen in-app and within our privacy policy/T&Cs that directs to instructions for cancelling Apple and Google subscriptions.
3 Solution
A full flowchart of the proposed solution is here.
3.1 Summary
We’ll add a new Delete Account option to the bottom of the existing account settings screen in the learning app. It will only appear for B2C users.
Tapping that new option takes you to a screen with text outlining the process, along with a button to cancel and return to account settings and a button to delete account. Tapping the latter presents a final confirmation screen.
N.B. The Flip button won’t appear for B2C, so never on this screen.
Once confirmed, the user is taken back to the account settings screen and new red text appears at the top confirming deletion date and providing a hyperlink button to cancel the process:
Additionally, when the account is in this state the new Delete Account option at the bottom of account settings will be relabelled to “Cancel Account Deletion” and tapping it will present the same confirmation screen as when tapping the hyperlink button below the red text.
No confirmation emails are sent at any stage.
After 30 days, i.e., at 23:59 UK time on the date specified by the red text, the account will be deleted permanently.
3.2 Expected dev work
- Create new audit log collection
- Mongo DocumentID (string)
- Hashed email address (aka userID)
- Date & time
- activityType (DELETE_REQUEST, DELETE_REQUEST_CANCELLED, DELETED)
- Add Delete Account option to bottom of account settings screen
- Build Delete Account screen using existing structure/format
- Final confirmation “screen” when Delete Account button is tapped
- Writes to audit log collection upon full confirmation
- Add attribute to user collection to mark them for deletion in 30 days e.g. flag “markedForDeletion”
- Add attribute to user collection to note the date they need to be deleted (“expiryDate”)
- Add conditional red text to top of account settings screen for markedForDeletion users
- Create Cancel Account Deletion button (and confirmation “screen”) which unmarks users for deletion and sets the expiryDate attribute to null
- Final confirmation “screen” when Cancel Account Deletion button is tapped
- Writes to audit log collection upon full confirmation
- New Delete Account option at bottom of account settings changes to Cancel Account Deletion and serves as another button when user is markedForDeletion
- Batch procedure that runs every night and deletes all users whose expiry date has passed and are markedForDeletion
- Writes to new audit log collection
- userID (Mongo documentID)
- hashedUserID (email address)
- date & time
- activityType = DELETED
- Replace userID in users collection and everywhere else with the Mongo documentID (see section 5.3 for list of collections)
- Null emailAddress, facebookID, appleID, firstName, lastName in users collection
With restoring Google or Apple purchases from subscriptions, their SDKs fire at our servers to confirm the subscription and we simply release access to the content, so there’s no potential issue caused by anonymised data.
- Add hook into learning app to write to audit log collection on initial confirmation, account deletion cancellation and final deletion
3.3 Required new texts
These new texts will need to be translated into each of our available home languages. If we don’t have time to translate all texts in all languages, then we’ll have to launch with the ones we have and add further ones with piecemeal uploads over time.
Text | Location |
Delete Account | Account settings screen (new option) Delete Account screen (title) Delete Account screen (button) |
“Click the Delete Account button to delete your FlashAcademy account and all your personal data stored by FlashAcademy. This includes all of your learning progress. When you have confirmed that you want to do this then it will take 30 days to complete the deletion request. You will be able to use your FlashAcademy account as normal until the end of that 30 day period, and you will be able to cancel the deletion request from the settings screen within the app. At the end of that 30 day period your account will be permanently deleted. Once this process is complete it cannot be undone. Please contact support@flashacademy.com if you require assistance. Important: This account deletion process will NOT cancel an existing FlashAcademy Premium subscription. If you have a Premium subscription then you must also cancel your subscription on the App Store or Google Play Store. | Delete Account screen |
Find out more | Hyperlink button on Delete Account screen |
TBC (informational text explaining the situation with subscriptions; including what would happen if you were looking to restore purchases) | Link to our website from the Delete Account screen |
Cancel (assume we already have this) | Delete Account screen (button) Delete account final confirmation (button) Cancel Account Deletion final confirmation (button) |
Are you sure you want to delete your account permanently? | Delete Account screen final confirmation |
Your account will be deleted on this date: (date itself is always in UK dd/mm/yy format) | Account settings screen (red text at top) |
Cancel Account Deletion | Account settings screen (hyperlink button below red text) Cancel Account Deletion final confirmation (button) |
Are you sure you want to cancel account deletion? | Cancel Account Deletion final confirmation |
Back | Cancel Account Deletion final confirmation (button) |
3.4 Updating privacy policy
Our current privacy policy can be found here: https://flashacademy.com/privacy-policy/. Translated versions are not currently available.
There are existing specific notes relating to deleting accounts:
We won’t add to/change this area; the change we’re making is not rendering any of the above incorrect.
3.5 Instructions for cancelling FlashAcademy Premium
https://flashacademy.com/cancel-premium-subscription/
Cancelling your FlashAcademy Premium subscription
You will need to cancel your subscription though either Google or Apple account settings, depending on which platform you originally purchased it. Please see instructions below for both.
Subscription cancellations cannot be undone, but you of course can always re-subscribe in the future.
If you experience any issues, please contact support@flashacademy.com for assistance.
To cancel your subscription, access the Payments and subscriptions area in your Google account settings, then select Subscriptions. You can do this through your device’s settings or through a web browser on a computer from https://myaccount.google.com/.
Your FlashAcademy Premium subscription should be listed here. Select Manage and then select Cancel subscription. You can find further details from Google on cancelling subscriptions here.
Any payments that you have previously made will not be refunded, and your account will continue to be regarded as Premium by FlashAcademy until the end of your current paid subscription period.
APPLE
To cancel your subscription, from your iOS/iPadOS device first open the Settings app. Tap your name, which should appear at the top of the screen.
Next, tap Media & Purchases and then View Account; you may need to enter your password/TouchID/FaceID to proceed.
On the next screen, tap Subscriptions to see a list of your current subscriptions. Tap the FlashAcademy subscription to view it, and then tap Cancel Subscription (and confirm) to cancel the subscription. You can find further details from Apple on cancelling subscriptions here.
Please note that if you intend to cancel then you must cancel your subscription at least 24 hours before the end of your current subscription period otherwise Apple will automatically renew your subscription.
Any payments that you have previously made will not be refunded, and your account will continue to be regarded as Premium by FlashAcademy until the end of your current paid subscription period.
4 Potential future development
- Capability to schedule future account deletion; useful if users want to keep their account for the duration of their remaining subscription then delete it.
5 Appendix
5.1 Further info from Apple
From Apple’s Human Interface Guidelines.
If you help people create an account within your app, you must also help them delete it, not just deactivate it. In addition to following the guidelines below, be sure to understand and comply with your region’s legal requirements related to account deletion and the right to be forgotten.
If legal requirements compel your app to maintain accounts or information — such as digital health records — or to follow a specific account-deletion process, clearly describe the situation so people can understand the information or accounts you must maintain and the process you must follow.
Provide a clear way to initiate account deletion within your app. If people can’t perform account deletion within your app, you must provide a direct link to the webpage on which people can do so. Make the link easy to discover — for example, don’t bury it in your Privacy Policy or Terms of Service pages.
Provide a consistent account-deletion experience whether people perform it within your app or on the website. For example, avoid making one version of the deletion flow longer or more complicated than the other.
Consider letting people schedule account deletion to occur in the future. People can appreciate the opportunity to use up their remaining services or wait until their subscription auto-renews before deleting their account. If you offer a way to schedule account deletion, offer an option for immediate deletion as well.
Tell people when account deletion will complete, and notify them when it’s finished. Because it can sometimes take a while to fully delete an account, it’s essential to keep people informed about the status of the deletion process so they know what to expect.
If you support in-app purchases, help people understand how billing and cancellation work when they delete their account. For example, you might need to help people understand the following scenarios:
- Billing for an auto-renewable subscription continues through Apple until people cancel the subscription, regardless of whether they delete their account.
- After they delete their account, people need to cancel their subscription or request a refund.
In addition to helping people understand these scenarios, provide information that describes how to cancel subscriptions and manage purchases. For guidance, see Helping People Manage Their Subscriptions and Providing Help with In-App Purchases.
NOTEEven if people didn’t use your app to purchase the subscription, you still need to enable account deletion.
5.2 Duolingo’s approach
It seems sensible to review what the most prominent language-based app does in this area.
The Duolingo initial deletion request process can be seen in a video here.
Then the overall process is laid out in a flowchart here.
5.3 Collections updated with masked userID
user_journeys
user_challenges
user_lessons
user_words
fraud_purchases
reported_issues
users
user_activities
user_contacts
user_forgotten_passwords
user_friends
user_challenge_activities
user_locations
user _messages
user_points_activities
user_purchases
sessions
web_subscription_invoices
5.4 Apple and Google submissions
We must provide a single set of login credentials to Apple and Google when submitting app updates.
With the introduction of this Delete Account feature we clearly introduce the possibility that Apple/Google’s reviewers will schedule deletion of their account as part of the renewal process.
As such we will now need to start checking that those accounts are still available each time we submit the app.