docs.transcend.io Open in urlscan Pro
76.76.21.241  Public Scan

URL: https://docs.transcend.io/docs/privacy-requirements/apple-account-deletion
Submission: On May 03 via manual from US — Scanned from DE

Form analysis 1 forms found in the DOM

<form novalidate="" action="" role="search" class="jsx-874407153 searchbar" data-airgap-id="25"><input type="search" value="" placeholder="Search" class="jsx-874407153"><kbd class="jsx-874407153 hotkey"><button tabindex="-1"
      class="jsx-874407153">/</button></kbd></form>

Text Content

Guides
API Reference
Changelog
Homepage
/


GUIDES

Overview
Concepts
Privacy Requests
Connecting data silos
Overview
Data Connection: Google Suite
Data Connection: Google Analytics
Data Connection: Slack
Automated Vendor Coordination
Integrating your internal systems
Cron Job integration
Server Webhook integration
Testing a new data silo
Processing requests
Canceling or extending a request
Expediting an Erasure request
Review and approve a request
Manually submit a privacy request
Switching between accounts
View the status of a request
Configuring requests
Identity verification
Data subjects and data actions
Email templates
API integration
Authenticating to API
JWT account login
Identity Enrichment Webhook
Verify webhook signature
Respond to a privacy request
Using the API for Privacy Requests
The Privacy Center
Concepts
Configuring the Privacy Center
Self-serve Data Subject Requests
Supported browsers
Integrating your system
Introduction & purpose
Understanding Personal Data
Types of privacy requests
Identifiers
Authentication
Data Mapping
Quickstart
Data Silo Discovery
Data Inventory
Record of Processing Activities
Consent
Quickstart
Configuring Data Flows
Configuring your user interface
Setting airgap.js live
Debugging and testing
Creating an API Endpoint (optional)
Adding and editing Data Flows
Analytics Dashboard
Supported browsers
Security
End-to-end encryption
Overview
Self-hosting Sombra
IP Allowlisting
Sombra key-rotations
Access control
Audit trail
Setting up SSO
SOC 2 report
Reporting an incident
Privacy Requirements
Data Rights Laws
Data Rights Laws
California Do Not Sell or Share
Platform Privacy Requirements
Apple In-App Account Deletion


APPLE IN-APP ACCOUNT DELETION

Complying with Apple's in-app deletion requirement is as simple as connecting a
button in your app to Transcend's API. Transcend will handle the rest.

Transcend powers the global deletion process in popular apps today.








BACKGROUND


Starting June 30, 2022, any application in the Apple App Store that offers
account creation must also offer account deletion, including associated personal
data. Failure to comply with this requirement can get your app de-listed! Our
blog breaks it down in further detail.

> From Apple: "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."


QUICKSTART GUIDE


This guide breaks down how to quickly comply. This guide will outline a
workflow:

 1. Expose a button in the settings view of your application for a logged-in
    user to delete their account.
 2. Connect that button to a route on your backend, and POST a deletion request
    to /v1/data-subject-request on Transcend's API.

If you're new to Transcend, then on Day 1, without anything else set up,
Transcend will begin queuing outstanding erasure requests, and notifying teams
with a CSV of outstanding tasks, and monitoring for task completion. Then, you
should incrementally automate your deletion process across your data systems by
connecting Transcend's pre-built integrations. You should connect your
analytics, payments, and support SaaS tools (this only takes a few minutes per
system) and your internal data stores.

Using Transcend, you can comply with Apple's requirement in less than an hour.
You’ll also be setting yourself up to build a secure and scalable process to
delete data across your stack or, where it makes sense, at larger scales with
automation. This same workflow can be re-used for other compliance workflows
like GDPR/CCPA data subject erasure requests.


STEP 1: ENABLE DELETION REQUESTS IN YOUR TRANSCEND ACCOUNT



> THIS REQUIRES A TRANSCEND ACCOUNT.
> 
> 
> If you do not have Transcend, please contact us, and we'll get you started
> ASAP.

To begin, go to Request Settings and ensure you have a deletion request workflow
enabled.







Under the "Data Subjects" section, click the edit icon and enable the "Delete
all my data" request type.







If you have multiple types of users that have different deletion workflows, you
can create additional Data Subjects—just be sure to enable the "Delete all my
data" request type on each of them.

In most circumstances, having one type of user ("Customer") will suffice.


STEP 2: DEFINE YOUR DELETION REQUEST WORKFLOW



> SKIP THIS STEP IF YOU ARE RE-USING AN DELETION WORKFLOW
> 
> 
> If you've already set up a compliance request deletion workflow in Transcend
> and your plan is to re-use it for account deletion, you can continue to the
> next step.
> 
> We recommend treating Apple account deletion requests in the same manner as
> you would process GDPR/CCPA compliance requests. These are the same underlying
> workflow, and it's easier to maintain one workflow. Furthermore, this workflow
> will be forward-compatible with the growing set of deletion requirements from
> platforms and new privacy laws.
> 
> If you do decide to treat Apple deletion requests separately from a compliance
> request, you can encode separate workflows into Transcend. However, separate
> workflows mean more maintenance, and your process will be less resilient to
> future changes in legislations.

If you've not yet set up a deletion workflow in Transcend, you should start by
creating a simple manual workflow in which:

 1. Each new deletion request creates an audit entry in the "Incoming Requests"
    tab
 2. User identifiers associated with each request get added to a queue to be
    deleted
 3. Once per week, your team will be notified via email to delete that list of
    user identifiers

To create this workflow, add a Prompt a Person silo under the Connected Services
section of the Admin Dashboard. You can input the email address of the person(s)
that should be notified weekly, or leave it blank. If you have multiple teams
that should each be notified separately to delete their respective systems, you
can add multiple Prompt A Person data silos.







Upon connection, you should go to the configuration settings and ensure the
newly created Data Silo has "Live Mode" toggled on.







At this point, you've got a basic manual workflow set up in Transcend and can
continue to the next steps.








> GROW YOUR CONNECTED SERVICES
> 
> 
> Over time, you may find the need to automate parts of the deletion request
> workflow and build up a larger set of systems to delete from. See Connecting
> SaaS Tools and Connect a Server: HTTP API for more information.


STEP 3: GENERATE AN API KEY FOR SUBMITTING DELETION REQUESTS TO TRANSCEND


Go to the API Keys section of the dashboard and create a new API key with the
scope "Submit New Data Subject Request".







Save this API key somewhere safe. You will need access to this key from your
backend.








STEP 4: ADD AN ACCOUNT DELETION BUTTON TO YOUR APP


Next, build an interface for your user's to request account deletion. You'll
want to choose a place in your app to add this button, but it's typically in the
user settings page.

The interface can be as simple as a button, however, you may want to add
additional precautions to ensure the user is well aware of what they are doing.
Some suggestions:

 * Add warning text noting the action is irreversible.
 * Make the button a popover confirmation.
 * Disable the button until the user types in a phrase or confirms their
   password.

In the end, you should have something that looks like the following:

import React from 'react';


import { Button } from 'components';


const AccountDeletion: React.FC = () => (
  <React.Fragment>
    <h2>Delete my Account</h2>
    <p>
      Warning! This is an irreversible action. Your account and all of the
      associated data will be permanently deleted.
    </p>
    <Button onClick={() => backendAccountDeletion()} />
  </React.Fragment>
);


STEP 5: HOOK THE BUTTON UP TO TRANSCEND'S DELETION API


Endpoint reference: submit a privacy request

Once the user clicks the button and confirms their request for account deletion,
you should trigger a route on your backend to initiate the account deletion.
That route should:

 1. Verify that the user's session and any additional proof of authentication
    required for account deletion
 2. Upload the deletion request to Transcend
 3. Log the user out of their account

Submitting the deletion request to Transcend is a single POST request using our
API for Privacy Requests. There are a few configurations that you may want:

FULLY AUTHENTICATED REQUEST


Submit a data deletion request with a User ID and an email address. These user
identifiers will be used to key data that should be deleted. The user will
receive an email receipt confirming the processing of deleting their account has
begun. They will also receive an email upon the completion of the request.

{
  "headers": {
    "authorization": "Bearer <<apiKey>>",
    "content-type": "application/json"
  },
  "url": "https://multi-tenant.sombra.transcend.io/v1/data-subject-request",
  "method": "POST",
  "body": {
    "subject": {
      "coreIdentifier": "bfd219b5-19ce-4c32-a6cc-b8b0b2ba7fb7",
      "email": "jane@transcend.io",
      "emailIsVerified": true
    },
    "subjectType": "customer",
    "type": "ERASURE"
  }
}

2FA EMAIL APPROVAL


Set the emailIsVerified flag to false if you would like Transcend to send a 2FA
confirmation link to the user before beginning the process of deleting their
account,

{
  "headers": {
    "authorization": "Bearer <<apiKey>>",
    "content-type": "application/json"
  },
  "url": "https://multi-tenant.sombra.transcend.io/v1/data-subject-request",
  "method": "POST",
  "body": {
    "subject": {
      "coreIdentifier": "bfd219b5-19ce-4c32-a6cc-b8b0b2ba7fb7",
      "email": "jane@transcend.io",
      "emailIsVerified": false
    },
    "subjectType": "customer",
    "type": "ERASURE"
  }
}

SPECIFIC EMAIL RECEIPT TEMPLATE


If you want to notify the user using a specific email template, rather than the
default template for the workflow, specify the emailReceiptTemplateId option.

{
  "headers": {
    "authorization": "Bearer <<apiKey>>",
    "content-type": "application/json"
  },
  "url": "https://multi-tenant.sombra.transcend.io/v1/data-subject-request",
  "method": "POST",
  "body": {
    "subject": {
      "coreIdentifier": "bfd219b5-19ce-4c32-a6cc-b8b0b2ba7fb7",
      "email": "jane@transcend.io",
      "emailIsVerified": true
    },
    "subjectType": "customer",
    "emailReceiptTemplateId": "9a558f86-51d4-4237-8c2d-494551991989",
    "type": "ERASURE"
  }
}

> Read more about creating and managing Email Templates

NO EMAILS


You can disable emails entirely and use Transcend to process the request in the
background.

{
  "headers": {
    "authorization": "Bearer <<apiKey>>",
    "content-type": "application/json"
  },
  "url": "https://multi-tenant.sombra.transcend.io/v1/data-subject-request",
  "method": "POST",
  "body": {
    "subject": {
      "coreIdentifier": "bfd219b5-19ce-4c32-a6cc-b8b0b2ba7fb7",
      "email": "jane@transcend.io",
      "emailIsVerified": true
    },
    "subjectType": "customer",
    "type": "ERASURE",
    "isSilent": true
  }
}

ADDITIONAL IDENTIFIERS


For more advanced workflows, you can pass additional identifiers. Configure
these in the Identifiers section of the Admin Dashboard. The "Request Ingestion"
enricher must be configured for each of the identifiers specified in the
attestedExtraIdentifiers field.

{
  "headers": {
    "authorization": "Bearer <<apiKey>>",
    "content-type": "application/json"
  },
  "url": "https://multi-tenant.sombra.transcend.io/v1/data-subject-request",
  "method": "POST",
  "body": {
    "subject": {
      "coreIdentifier": "bfd219b5-19ce-4c32-a6cc-b8b0b2ba7fb7",
      "email": "jane@transcend.io",
      "emailIsVerified": true,
      "attestedExtraIdentifiers": {
        "email": [{ "value": "another-email@example.com" }],
        "phone": [{ "value": "+13852904629" }],
        "custom": [{ "value": "mbrook", "name": "username" }]
      }
    },
    "subjectType": "customer",
    "type": "ERASURE"
  }
}


> CHECK OUT OUR API REFERENCE
> 
> 
> Check out other inputs and examples in our API Reference.

Guides
API Reference
Changelog
All Systems Operational
Homepage
Log In
Our Privacy Center
Data Collection Preferences