This guide will walk you through the steps to onboard your platform as a destination for users to transfer their data through our Export Your Information (EYI) tool.
There are four primary steps to onboarding as a data transfer destination. Each step is outlined in this section, with more details below.
Before starting the Meta onboarding process, you must register your app at DTI Trust Registry. Meta has partnered with the DTI Trust Registry to manage the vetting process for data transfer destinations. Make sure your app is registered and vetted here before proceeding to the next steps. Note that Meta reserves the right to conduct further review before rendering a decision (see Step 2)
You'll need an account and App registered on developers.facebook.com to configure the integration between our platforms and yours. To create the Data Transfer app, you'll need to enter the Developer Portal and complete:
Upon approval of your application, a representative from Meta's data portability engineering team will partner with you to assist with the rest of the process.
In order to transfer data to your platform, Meta's portability infrastructure needs to call your APIs. Meta transfers data using the Data Transfer Project (DTP) transfer worker, so you'll need to integrate your platform with DTP.
As Meta's data portability infrastructure needs to call your APIs on behalf of the user requesting the transfer, Meta authenticates with your API using the OAuth 2.0 Authorization Code flow. To support this, you must complete an OAuth Configuration form on developers.facebook.com.
Once your App on developers.facebook.com is approved and you've begun integration of your platform with DTP, we'll need to test data transfers to your platform end-to-end. This may require testing multiple revisions of your DTP Adapters, OAuth configuration, or API. Your Meta engineering partner will help you with this process.
When testing is complete, and both parties are satisfied with the stability of the integration, Meta can activate your platform as a public-facing destination for data transfer. Your platform will appear in Meta's Export Your Information (EYI) tool.
To become a destination for Export Your Information (EYI), you need to create a Data Transfer App on developers.facebook.com.
Before starting the Meta onboarding process, you must register your app at DTI Trust Registry. Meta has partnered with the DTI Trust Registry to manage the vetting process for data transfer destinations. Make sure your app is registered and vetted here before proceeding to the next steps.
Note that Meta reserves the right to conduct further review before rendering a decision
Before creating an App, your business must create a Facebook Business Manager account and verify the business in Business Manager.
When the Business Manager account is set up and account verification has been started, your developer account can be added to the Business Manager account with the 'Apps and integrations' permission, which will allow you to create Apps on developers.facebook.com associated with the Business Manager account.
To create and manage apps, you must first create a developer account on developers.facebook.com.
As part of registration, you must agree to the Meta Platform Terms.
Navigate to developers.facebook.com/apps and click Create App to begin the App creation process and follow the steps below:
Fill out the App name and add a contact email address.
Select Allow users to transfer their data to other apps under Other on the use case page.
Select the Business Portfolio to associate the App with.
Review the requirements and details of your app, and click Go to dashboard. By proceeding, you agree to the Data Portability Terms.
Navigate to the Data Transfer customization page from the dashboard or Use-case page on the nav bar, and fill out the DTI Trust Registry form to begin the approval process for your Data Transfer App by clicking Get started.

Enter your Data Trust Registry URL and submit the registration form.

Most of the information in the pre-approval form will be automatically filled in using your data transfer entry.
You only need to complete these two sections:
Select the data types your Data Transfer App will support. These data types correspond to Data Types supported by the Data Transfer Project. See DTP Data Types for more details.
Provide details about your security standards.
Once the form is complete, click the Submit button. Note that you can save your progress with the Save for later button.
Meta will contact you on the provided email if your application is approved, or let you know if we need anything else.
Once submitted, we will review your pre-approval form, checking that your submission meets these key criteria:
Once we have fully reviewed your submission, you will receive a developer notification and email with Meta's decision.
Once your pre-approval is confirmed, you can begin development and integration for your platform (see steps below). When you have the adapters built and ready, we will work with you to enable your adapter on Facebook and launch it to the public.
If you fail to meet one or more requirements, you will be notified directly that your request to onboard doesn’t meet one or more of the requirements alongside the reasons why. You will then have the opportunity to resubmit your application, which will trigger a further Meta internal review. Once the issue(s) that caused your app to be rejected have been resolved, you can resubmit.
If you cannot meet the requirements after multiple attempts, Meta may formally deny your request. In this case, you may trigger the appeals process with your Meta point of contact.
To become a destination for data transfers from Meta's platforms, you must integrate with the Data Transfer Project and complete OAuth Configuration to set up authentication and authorization between your platform and ours.
When you have completed the pre-approval form for your Data Transfer App on developers.facebook.com and your application has been approved, you should independently work through the integration steps below. Once you have completed these steps (or if you get stuck), contact a Meta engineer who will be able to assist you with the remainder of theis process. This section of the onboarding guide describes technical details required to complete the integration.
Meta's data portability infrastructure is built on the open-source Data Transfer Project (DTP). You can read more about DTP in the DTP Documentation, but a key concept is that DTP operates on a push model; users initiate a data transfer on Meta's platform, and Meta's infrastructure calls your platform's APIs to transfer the requested data.
DTP exports data from Meta using Export Adapters, which convert Meta's data to DTP's internal representation. DTP then imports data into your platform using an Import Adapter, which converts from DTP's internal representation to API calls to your platform.
The Data Transfer Project supports multiple data types organized into verticals, which are comprised of:
DTP facilitates the transfer of data between platforms by combining Adapters of the same data type.
Meta platforms support the following data types:
| Data Type | Sources | Notes |
|---|---|---|
Photos | Instagram Stories and Posts, Facebook Photos and Albums | Often combined with Videos in the Media data type |
Videos | Instagram Stories and Posts, Facebook Videos and Albums | Often combined with Photos in the Media data type |
Media | Instagram Stories and Posts, Facebook Videos, Photos and Albums | Combination of Photos and Videos. DTP can convert a Photo and Video adapter into a Media adapter, and vice versa |
Social Posts | Threads Posts, Facebook Posts, Instagram Posts | |
Calendars | Facebook Events | |
Archives/Blobs | Multiple |
The archive data type contains many data types that don't map directly to a DTP data type as they can't be easily generalized between platforms or have limited value on non-Meta surfaces. This archive can be downloaded by the user, or transferred to another platform as file-based data using the Archives (Blobs in the DTP codebase) data type.
If your platform supports file-based data, such as for backup services, or you want to allow users to transfer data that is currently only available through an archive, your platform can support the Archive data type. Users initiate these transfers through the Export Your Information (EYI) tool.
There are two routes for integrating with DTP - building a Custom Adapter or using pre-built Universal Adapters.
If you have an existing API that could support the transfer of user data to your platform, and you are comfortable writing Java and contributing to the open-source DTP codebase, you can develop a custom adapter. A custom adapter gives you full control over how your API is called and allows tight integration between DTP and your platform.
If you don't have an existing API or don't have experience writing Java, you can opt to use DTP's Universal Adapters (also called Generic Adapters) and implement an HTTP API conforming to the Generic Importers API specification in the language of your choosing. The Universal Importer Adapter can then be configured to call your API endpoints.
Using Universal Adapters gives less control over the integration between your platform and DTP, but is much faster to implement and cheaper to build than a custom integration. Universal Adapters support all DTP data types exported by Meta, which are listed in DTP Data Types.
Once you have decided on an integration option, configure the integration on the developer portal under Data import adapters.
For Universal Adapters, specify your adapter endpoint.
For Custom Adapters, specify the GAV coordinates of your library containing your transfer extension.
When users initiate a data transfer from Meta's platform to yours, Meta's infrastructure calls your APIs on behalf of the user. To do this, Meta obtains an access token with the OAuth 2.0 Authorization Code flow:
For more information about the Authorization Code flow, see the OAuth documentation and related resources.
If you have an existing API, it may already be using OAuth for authentication and authorization. If you don't already have an API or you aren't using OAuth, it's unlikely that you'll want to implement the OAuth spec by yourself. OAuth 2.0 is a common standard and there is likely a package that supports your preferred API framework and implementation language. There are also multiple third-party OAuth providers that support the Authorization Code flow.
When setting up your Data Transfer App on developers.facebook.com, you'll need to complete an OAuth Configuration form that provides Meta with the information required to complete the OAuth Authorization Code flow described above.
The key fields are:
The OAuth standard allows you to add granular authorization controls to your API using OAuth scopes.
Endpoints or features available through your API can be associated with different scopes, such as photos.read protecting the /photos GET endpoint, or albums.write protecting one endpoint that adds photos to an album and another that changes an album's name.
Authorization codes (and the refresh tokens and access tokens created from a given authorization code) are also associated with a subset of all available OAuth scopes, which allows a user to grant access to only a part of your API. When authorizing Meta to access your API on their behalf, users should be informed of the OAuth scopes Meta is being granted.
You must set the OAuth scopes required to transfer data to your platform in the OAuth Configuration Form.
When redirecting users to your platform as part of the Authorization Code flow, Meta includes a Client ID and a Redirect URL as query parameters. The Client ID is set in the OAuth configuration of your App on developers.facebook.com and uniquely identifies Meta in your OAuth configuration. The Redirect URL specifies where your platform should redirect users when a user has approved the authorization request.
As a security measure, you should only allow pre-approved Client ID and Redirect URL combinations. This is part of the OAuth standard and will be enforced by any OAuth frameworks. To support this, you must add our list of Redirect URLs to your OAuth configuration. You can find an up-to-date list of our Redirect URLs during App setup on developers.facebook.com.
When Meta requests an access token during the Authorization Code flow, your platform can optionally provide a refresh token alongside the access token. See the OAuth documentation for more details.
Generally, refresh tokens are long-lived (as long as months) and access tokens are short-lived (as short as minutes). This allows your platform to have short lifetimes for access tokens while allowing new access tokens to be created without user involvement. Meta uses this feature to enable recurring transfers, such as daily or monthly transfers, without the user having to re-authenticate with destination platforms for every transfer.
If an access token expires during a transfer and a refresh token has been provided, the DTP transfer worker will attempt to create a new access token using the refresh token. If a user has an active recurring transfer, Meta may also occasionally create an access token from the refresh token between transfers in order to keep the refresh token active.
If an access token expires during a transfer or in between recurring transfers and your platform did not provide a refresh token, or if an attempt to create a new access token from a refresh token fails, any active transfers will be paused and the user will be prompted to re-authorize the transfer by completing the Authorization Code flow again.
When all one-time and recurring transfers created by a user to transfer data to your platform have completed, Meta will revoke access tokens for that user if you have provided an Access Token Revocation URL in your OAuth configuration. See the OAuth Documentation for more information.
With an adapter and your API implemented and configured correctly, contact your engineer at Meta who will then test the integration to ensure it is possible to successfully complete a transfer, and will update our configuration to enable the destination for Meta internal users and users in your Business Account.
You will receive a developer notification when your platform is enabled and you can start reviewing and validating the transfer.
Navigate to Export Your Information (EYI) in Accounts Center on a Meta platform, for example Facebook EYI.
Follow the steps to initiate a transfer to your platform.
If your platform does not appear in the list, validate that:
Review the display name and icon of your platform on the Export Your Information (EYI) tool.
These can be configured on developers.facebook.com in the Data Transfer App's basic settings. Changes to these settings can take a few days to take effect.
For each data type you support, run a number of test transfers and validate that the expected data has been transferred to your platform.
With integration and testing complete, you can initiate the release of your platform as a data transfer destination on Meta's platforms.
To request the release of your platform to users, reach out to your Meta engineering partner or send an email to dataportability@meta.com and provide the following:
Meta will then configure your destination to be visible to users in the Export Your Information (EYI) tool.
At Meta, we aim to provide robust services to our users, and expect data transfer destinations to do the same. While there isn't currently a formal SLA for data transfer destinations, Meta monitors the availability and success rates of destination APIs. If these metrics fall below acceptable levels, we'll work with you to improve them or remove your platform as a destination until the issue is resolved. This is rare and is done solely to maintain a high quality of service for both Meta users and your users.