{"id":25270,"date":"2022-01-13T03:50:32","date_gmt":"2022-01-13T08:50:32","guid":{"rendered":"https:\/\/plumrocket.com\/docs\/?p=25270"},"modified":"2025-05-13T12:14:35","modified_gmt":"2025-05-13T16:14:35","slug":"how-to-download-delete-and-anonymize-customer-data-in-magento-2-gdpr","status":"publish","type":"post","link":"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions","title":{"rendered":"How to Download, Delete and Anonymize Customer Data in Magento 2 GDPR"},"content":{"rendered":"\n<p>Plumrocket <a href=\"\/magento-gdpr\">GDPR Magento 2 extension<\/a> allows you to manage any third-party data stored in your Magento database. Use this manual to make your third-party extension GDPR compliant. Contact vendors of the third-party extensions you are using, and ask them if their extensions record any personal customer data in your Magento database. If they collect any personal data, they may become compliant by integrating their plugins with Plumrocket GDPR Extension using the provided API.<\/p>\n\n\n\n<h2 id=\"h-export-delete-or-anonymize-third-party-data-in-2-simple-steps\">Export, Delete or Anonymize Third-Party Data in 2 Simple Steps<\/h2>\n\n\n\n<ol><li>Create or edit Dependency Injection (di.xml) file for your third-party plugin.<\/li><li>Create GDPR model in the third-party plugin to manage your customer data.<\/li><\/ol>\n\n\n\n<p>Both steps are described with examples below.<\/p>\n\n\n\n<h3 id=\"step-1-edit-dependency-injection-di-xml-file\">Step 1. Edit Dependency Injection (di.xml) file<\/h3>\n\n\n\n<p>To export or anonymize data, you must first create or edit Dependency Injection XML file (di.xml): Open the file:<\/p>\n\n\n\n<div class=\"wp-block-prismatic-blocks\"><div><\/div><pre><code class=\"language-markup\">\/app\/code\/VendorName\/ModuleName\/etc\/di.xml<\/code><\/pre><\/div>\n\n\n\n<p>and add the code as shown below (<a href=\"\/docs\/wp-content\/uploads\/2020\/05\/di.zip\" rel=\"nofollow\">download the template here<\/a>):<\/p>\n\n\n\n<div class=\"wp-block-prismatic-blocks\"><div><\/div><pre><code class=\"language-markup\">&lt;type name=\"PlumrocketGDPRModelAccountProcessor\">\n    &lt;arguments>\n        &lt;argument name=\"processors\" xsi:type=\"array\">\n            &lt;item name=\"VendorName_ModuleName\"\n                xsi:type=\"object\">VendorNameModuleNameModelGDPRProcessorName&lt;\/item>\n        &lt;\/argument>\n    &lt;\/arguments>\n&lt;\/type>\n&lt;type name=\"VendorNameModuleNameModelGDPRProcessorName\">\n    &lt;arguments>\n        &lt;argument name=\"dataExport\" xsi:type=\"array\">\n            &lt;item name=\"db_field_name1\" xsi:type=\"string\" translatable=\"true\">\n                Field Alias 1&lt;\/item>\n            &lt;item name=\"db_field_name2\" xsi:type=\"string\" translatable=\"true\">\n                Field Alias 2&lt;\/item>\n        &lt;\/argument>\n\n        &lt;argument name=\"dataAnonymize\" xsi:type=\"array\">\n            &lt;item name=\"db_field_name3\" xsi:type=\"null\"\/>\n            &lt;item name=\"db_field_name4\" xsi:type=\"string\">anonymousString&lt;\/item>\n            &lt;item name=\"db_field_name5\" xsi:type=\"string\">anonymousEmail&lt;\/item>\n            &lt;item name=\"db_field_name6\" xsi:type=\"number\">0&lt;\/item>\n       &lt;\/argument>\n    &lt;\/arguments>\n&lt;\/type><\/code><\/pre><\/div>\n\n\n\n<p><strong>Where:<\/strong><\/p>\n\n\n\n<p><strong>&#8220;dataExport&#8221; argument describes the data that should be exported:<\/strong><\/p>\n\n\n\n<ul><li>Field <strong>&#8220;db_field_name1&#8221;<\/strong> will be named in CSV file as &#8220;Field Alias 1&#8221;<\/li><li>Field <strong>&#8220;db_field_name2&#8221;<\/strong> will be named in CSV file as &#8220;Field Alias 2&#8221;<\/li><\/ul>\n\n\n\n<p><strong>&#8220;dataAnonymize&#8221; argument describes the data that should be anonymized:<\/strong><\/p>\n\n\n\n<ul><li>Field <strong>&#8220;db_field_name3&#8221;<\/strong> will have value &#8220;null&#8221; after the anonymization process<\/li><li>Field <strong>&#8220;db_field_name4&#8221;<\/strong> will be replaced by the value of &#8220;anonymousString&#8221;. This constant is generated automatically using the following format: [Anonymization Key] + &#8220;-&#8221; + [Customer Id]<\/li><li>Field <strong>&#8220;db_field_name5&#8221;<\/strong> will be replaced by the value of &#8220;anonymousEmail&#8221;. This constant is generated automatically using the following format: [Anonymization Key] + &#8220;-&#8221; + &#8220;@example.com&#8221;;<\/li><li>Field <strong>&#8220;db_field_name6&#8221;<\/strong> will have value &#8220;0&#8221;<\/li><\/ul>\n\n\n\n<p><i>Please note: the &#8220;Anonymization Key&#8221; can be set in Magento System Configuration -> Data privacy -> Account Removal Settings -> Anonymization Key<\/i><\/p>\n\n\n\n<p>In this first step we can only specify which data to export or anonymize. The process of deleting data will be described in the next step.<\/p>\n\n\n\n<h3 id=\"step-2-create-gdpr-model\">Step 2. Create GDPR Model<\/h3>\n\n\n\n<p>In the second step we must create GDPR model file that should process all data (export \/ anonymize \/ delete) listed in the first step.<\/p>\n\n\n\n<p>Create file:<\/p>\n\n\n\n<div class=\"wp-block-prismatic-blocks\"><div><\/div><pre><code class=\"language-markup\">VendorNameModuleNameModelGDPRProcessorName.php<\/code><\/pre><\/div>\n\n\n\n<p>and add the code as shown below (or <a href=\"\/docs\/wp-content\/uploads\/2020\/05\/ProcessorName.zip\" rel=\"nofollow\">download the template here<\/a>.):<\/p>\n\n\n\n<div class=\"wp-block-prismatic-blocks\"><div><\/div><pre><code class=\"language-php\">&lt;?php\n\nnamespace VendorNameModuleNameModelGDPR;\n\nuse PlumrocketGDPRApiDataProcessorInterface;\nuse PlumrocketGDPRHelperCustomerData;\nuse MagentoCustomerApiDataCustomerInterface;\nuse VendorNameModuleNameModelResourceModelDataModelNameCollectionFactory;\n\n\/**\n * Class ProcessorName\n * @package VendorNameModuleNameModelGDPR\n *\/\nclass ProcessorName implements DataProcessorInterface\n{\n    \/**\n     * @var CustomerData\n     *\/\n    protected $customerData;\n    \/**\n     * @var CollectionFactory\n     *\/\n    private $collectionFactory;\n    \/**\n     * ProcessorName constructor.\n     *\n     * @param CustomerData $customerData\n     * @param CollectionFactory $collectionFactory\n     * @param array $dataExport\n     * @param array $dataAnonymize\n     *\/\n    public function __construct(\n        CustomerData $customerData,\n        CollectionFactory $collectionFactory,\n        array $dataExport = [],\n        array $dataAnonymize = []\n    ) {\n        $this->customerData = $customerData;\n        $this->collectionFactory = $collectionFactory;\n        $this->dataExport = $dataExport;\n        $this->dataAnonymize = $dataAnonymize;\n    }\n\n    \/**\n     * This method is used to export customer data based on arguments defined in di.xml file\n     *\n     * Expected return structure:\n     * array(\n     * array('HEADER1', 'HEADER2', 'HEADER3', ...),\n     * array('VALUE1', 'VALUE2', 'VALUE3', ...),\n     * ...\n     * )\n     *\n     * @param CustomerInterface $customer\n     *\n     * @return array\n     *\/\n    public function export(CustomerInterface $customer)\n    {\n        $customerId = $customer->getId();\n        \/\/ Retrieve your customer data from database\n        $collection = $this->collectionFactory->create()->addFieldToFilter('customer_id', $customerId);\n        $returnData = [];\n        $i = 0;\n\n        if (!$collection->getSize()) {\n            return null;\n        }\n\n        foreach ($this->dataExport as $key => $title) {\n            $returnData[$i][] = $title;\n        }\n        $i++;\n\n        foreach ($collection as $item) {\n            $itemData = $item->getData();\n            foreach ($this->dataExport as $key => $title) {\n                $returnData[$i][] = (isset($itemData[$key]) ? $itemData[$key] : '');\n            }\n            $i++;\n        }\n\n        return $returnData;\n    }\n    \/**\n     * Executed upon customer data deletion.\n     *\n     * @param CustomerInterface $customer\n     *\n     * @return void\n     * @throws Exception\n     *\/\n    public function delete(CustomerInterface $customer)\n    {\n        $customerId = $customer->getId();\n        \/\/ Retrieve your customer data from database\n        $collection = $this->collectionFactory->create()\n            ->addFieldToFilter('customer_id', $customerId);\n        if (!$collection->getSize()) {\n            return;\n        }\n        $collection->walk('delete');\n    }\n    \/**\n     * Executed upon customer data anonymization.\n     *\n     * @param CustomerInterface $customer\n     *\n     * @return void\n     * @throws Exception\n     *\/\n    public function anonymize(CustomerInterface $customer)\n    {\n        $customerId = $customer->getId();\n        \/\/ Retrieve your customer data from database\n        $collection = $this->collectionFactory->create()\n            ->addFieldToFilter('customer_id', ['eq' => $customerId]);\n\n        $dataAnonymized = $this->customerData->getDataAnonymized($this->dataAnonymize, $customerId);\n        if (!empty($dataAnonymized) &amp;&amp; $collection->getSize()) {\n            $collection > setDataToAll($dataAnonymized)->save();\n        }\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<h4 id=\"h-example\">Example<\/h4>\n\n\n\n<p><strong>This example is based on Free Plumrocket Twitter &amp; Facebook Login Extension for Magento 2. You can     <a href=\"\/magento-twitter-facebook-login\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">download it from our store<\/a> for your reference.<\/strong><\/p>\n\n\n\n<p><strong>Step 1. &#8220;di.xml&#8221; file of Plumrocket Twitter &amp; Facebook Login Extension<\/strong><\/p>\n\n\n\n<p><i>In di.xml file of Plumrocket Twitter &amp; Facebook Login we are specifying which data must be exported and anonymized. While exporting you can define user friendly names for your database fields. In this example, database field &#8220;type&#8221; will be renamed in CSV file to &#8220;Network&#8221;, &#8220;user_id&#8221; will become &#8220;User Id&#8221;, &#8220;image&#8221; =&gt; &#8220;Account Photo Url&#8221;, &#8220;additional&#8221; =&gt; &#8220;Additional Data&#8221;.<\/i><\/p>\n\n\n\n<p>File path:<\/p>\n\n\n\n<div class=\"wp-block-prismatic-blocks\"><div><\/div><pre><code class=\"language-markup\">\/app\/code\/Plumrocket\/SocialLoginFree\/etc\/di.xml<\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-prismatic-blocks\"><div><\/div><pre><code class=\"language-markup\">&lt;type name=\"PlumrocketGDPRModelAccountProcessor\">\n    &lt;arguments>\n         &lt;argument name=\"processors\" xsi:type=\"array\">\n             &lt;item name=\"Plumrocket_SocialLoginFree\" xsi:type=\"object\">\n                 PlumrocketSocialLoginFreeModelGDPRProcessorSocialLogin&lt;\/item>\n         &lt;\/argument>\n    &lt;\/arguments>\n&lt;\/type>\n\n&lt;type name=\"PlumrocketSocialLoginFreeModelGDPRProcessorSocialLogin\">\n    &lt;arguments>\n        &lt;argument name=\"dataExport\" xsi:type=\"array\">\n            &lt;item name=\"type\" xsi:type=\"string\" translatable=\"true\">Network&lt;\/item>\n            &lt;item name=\"user_id\" xsi:type=\"string\" translatable=\"true\">User Id&lt;\/item>\n            &lt;item name=\"image\" xsi:type=\"string\" translatable=\"true\">\n                Account Photo Url&lt;\/item>\n            &lt;item name=\"additional\" xsi:type=\"string\" translatable=\"true\">\n                Additional Data&lt;\/item>\n        &lt;\/argument>\n        &lt;argument name=\"dataAnonymize\" xsi:type=\"array\">\n            &lt;item name=\"user_id\" xsi:type=\"string\">anonymousString&lt;\/item>\n        &lt;\/argument>\n    &lt;\/arguments>\n&lt;\/type><\/code><\/pre><\/div>\n\n\n\n<p><strong>Step 2. GDPR Model of Plumrocket Twitter &amp; Facebook Login Extension<\/strong><\/p>\n\n\n\n<p>Below is a GDPR Model of     <a href=\"\/magento-twitter-facebook-login\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Plumrocket Twitter &amp; Facebook Login Extension for Magento 2.<\/a>     Please note that in this example we only delete and export data as per customer request. The process of anonymization is not executed unless you uncomment the code in function &#8220;delete(CustomerInterface $customer)&#8221;.<\/p>\n\n\n\n<p>File Path:<\/p>\n\n\n\n<div class=\"wp-block-prismatic-blocks\"><div><\/div><pre><code class=\"language-markup\">\/app\/code\/Plumrocket\/SocialLoginFree\/Model\/GDPR\/ProcessorSocialLogin.php<\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-prismatic-blocks\"><div><\/div><pre><code class=\"language-php\">&lt;?php\n\n\/**\n * Plumrocket Inc.\n *\n * NOTICE OF LICENSE\n *\n * This source file is subject to the End-user License Agreement\n * that is available through the world-wide-web at this URL:\n * http:\/\/wiki.plumrocket.net\/wiki\/EULA\n * If you are unable to obtain it through the world-wide-web, please\n * send an email to support@plumrocket.com so we can send you a copy immediately.\n *\n * @package Plumrocket_SocialLoginFree\n * @copyright Copyright (c) 2018 Plumrocket Inc. (http:\/\/www.plumrocket.com)\n * @license http:\/\/wiki.plumrocket.net\/wiki\/EULA End-user License Agreement\n *\/\n\nnamespace PlumrocketSocialLoginFreeModelGDPR;\n\nuse PlumrocketGDPRApiDataProcessorInterface;\nuse PlumrocketGDPRHelperCustomerData;\nuse PlumrocketSocialLoginFreeModelResourceModelAccountCollectionFactory;\nuse PlumrocketSocialLoginFreeHelperData;\nuse MagentoCustomerApiDataCustomerInterface;\nuse MagentoFrameworkFilesystem;\nuse MagentoFrameworkFilesystemDriverFile;\nuse MagentoFrameworkAppFilesystemDirectoryList;\n\n\/**\n * Processor SocialLogin.\n *\/\nclass ProcessorSocialLogin implements DataProcessorInterface\n{\n\n    \/**\n     * @var CollectionFactory\n     *\/\n    protected $collectionFactory;\n\n    \/**\n     * @var Data\n     *\/\n    protected $helper;\n\n    \/**\n     * @var CustomerData\n     *\/\n    protected $customerData;\n\n    \/**\n     * @var Filesystem\n     *\/\n    protected $filesystem;\n\n    \/**\n     * @var File\n     *\/\n    protected $file;\n\n    \/**\n     * @var array\n     *\/\n    protected $dataExport;\n\n    \/**\n     * @var array\n     *\/\n    protected $dataAnonymize;\n\n    \/**\n     * ProcessorSocialLogin constructor.\n     *\n     * @param CollectionFactory $collectionFactory\n     * @param Data $helper\n     * @param array $dataExport\n     * @param array $dataAnonymize\n\n     *\/\n    public function __construct(\n        CollectionFactory $collectionFactory,\n        Data $helper,\n        CustomerData $customerData,\n        Filesystem $filesystem,\n        File $file,\n        array $dataExport = [],\n        array $dataAnonymize = []\n\n    ) {\n        $this->collectionFactory = $collectionFactory;\n        $this->helper = $helper;\n        $this->customerData = $customerData;\n        $this->filesystem = $filesystem;\n        $this->file = $file;\n        $this->dataExport = $dataExport;\n        $this->dataAnonymize = $dataAnonymize;\n    }\n\n    \/**\n     * Executed upon exporting customer data.\n     *\n     * Expected return structure:\n     * array(\n     * array('HEADER1', 'HEADER2', 'HEADER3', ...),\n     * array('VALUE1', 'VALUE2', 'VALUE3', ...),\n     * ...\n     * )\n     *\n     * @param CustomerInterface $customer\n     *\n     * @return array\n     * @throws MagentoFrameworkExceptionNoSuchEntityException\n     *\/\n    public function export(CustomerInterface $customer)\n    {\n        $customerId = $customer->getId();\n        $collection = $this->collectionFactory->create()->addFieldToFilter(\n            'customer_id', $customerId);\n        $returnData = [];\n        $i = 0;\n\n        if (!$collection->getSize()) {\n            return;\n        }\n\n        foreach ($this->dataExport as $key => $title) {\n            $returnData[$i][] = $title;\n        }\n        $i++;\n\n        foreach ($collection as $item) {\n            $itemData = $item->getData();\n            $itemData['image'] = $this->helper->getPhotoPath(\n                false, $customerId, $itemData['type']);\n\n            foreach ($this->dataExport as $key => $title) {\n                $returnData[$i][] = (isset($itemData[$key]) ? $itemData[$key] : '');\n            }\n            $i++;\n        }\n\n        return $returnData;\n    }\n\n    \/**\n     * Executed upon customer data deletion.\n     *\n     * @param CustomerInterface $customer\n     *\n     * @return void\n     * @throws Exception\n     *\/\n    public function delete(CustomerInterface $customer)\n    {\n        \/\/ If you wish to anonymize the data instead if deleting it, please uncomment the line below:\n        \/\/ $this->anonymize($customer);\n        \/\/ and comment out the rest of the code in this function\n\n        $customerId = $customer->getId();\n        $collection = $this->collectionFactory->create()\n            ->addFieldToFilter('customer_id', $customerId);\n        $mediaRootDir = $this->filesystem->getDirectoryRead(DirectoryList::MEDIA)\n            ->getAbsolutePath();\n        $fileExt = PlumrocketSocialLoginProModelAccount::PHOTO_FILE_EXT;\n        $DS = DIRECTORY_SEPARATOR;\n\n        if (!$collection->getSize()) {\n            return;\n        }\n\n        foreach ($collection as $item) {\n            $path = 'pslogin' . $DS . 'photo' . $DS . $item['type'] . $DS .\n                $customerId . '.' . $fileExt;\n            if ($this->file->isExists($mediaRootDir . $path)) {\n                $this->file->deleteFile($mediaRootDir . $path);\n            }\n        }\n\n        $path = 'pslogin' . $DS . 'photo' . $DS . $customerId . '.' . $fileExt;\n        if ($this->file->isExists($mediaRootDir . $path)) {\n            $this->file->deleteFile($mediaRootDir . $path);\n        }\n\n        $collection->walk('delete');\n    }\n\n    \/**\n     * Executed upon customer data anonymization.\n     * This function must be called from the method \u201cdelete()\u201d - please read comments above.\n     * @param CustomerInterface $customer\n     *\n     * @return void\n     * @throws Exception\n     *\/\n    public function anonymize(CustomerInterface $customer)\n    {\n        $customerId = $customer->getId();\n        $collection = $this->collectionFactory->create()->addFieldToFilter(\n            'customer_id', ['eq' => $customerId]);\n        $dataAnonymized = $this->customerData->getDataAnonymized(\n            $this->dataAnonymize, $customerId);\n        if (!empty($dataAnonymized) &amp;&amp; $collection->getSize()) {\n            $collection->setDataToAll($dataAnonymized)->save();\n        }\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Plumrocket GDPR Magento 2 extension allows you to manage any third-party data stored in your Magento database. Use this manual to make your third-party extension GDPR compliant. Contact vendors of the third-party extensions you are using, and ask them if their extensions record any personal customer data in your Magento database. If they collect any &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;How to Download, Delete and Anonymize Customer Data in Magento 2 GDPR&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_mi_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[342],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v17.2 (Yoast SEO v17.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Download, Delete and Anonymize Customer Data in Magento 2 GDPR - Plumrocket Documentation<\/title>\n<meta name=\"description\" content=\"Plumrocket GDPR Magento 2 extension allows you to manage any third-party data stored in your Magento database. Use this manual to make your third-party\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Download, Delete and Anonymize Customer Data in Magento 2 GDPR\" \/>\n<meta property=\"og:description\" content=\"Plumrocket GDPR Magento 2 extension allows you to manage any third-party data stored in your Magento database. Use this manual to make your third-party\" \/>\n<meta property=\"og:url\" content=\"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions\" \/>\n<meta property=\"og:site_name\" content=\"Plumrocket Documentation\" \/>\n<meta property=\"article:published_time\" content=\"2022-01-13T08:50:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-13T16:14:35+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Plumrocket\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"How to Download, Delete and Anonymize Customer Data in Magento 2 GDPR - Plumrocket Documentation","description":"Plumrocket GDPR Magento 2 extension allows you to manage any third-party data stored in your Magento database. Use this manual to make your third-party","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions","og_locale":"en_US","og_type":"article","og_title":"How to Download, Delete and Anonymize Customer Data in Magento 2 GDPR","og_description":"Plumrocket GDPR Magento 2 extension allows you to manage any third-party data stored in your Magento database. Use this manual to make your third-party","og_url":"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions","og_site_name":"Plumrocket Documentation","article_published_time":"2022-01-13T08:50:32+00:00","article_modified_time":"2025-05-13T16:14:35+00:00","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Plumrocket","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"https:\/\/plumrocket.com\/docs\/#website","url":"https:\/\/plumrocket.com\/docs\/","name":"Plumrocket Documentation","description":"Extensions docs, troubleshootings etc.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/plumrocket.com\/docs\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions#webpage","url":"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions","name":"How to Download, Delete and Anonymize Customer Data in Magento 2 GDPR - Plumrocket Documentation","isPartOf":{"@id":"https:\/\/plumrocket.com\/docs\/#website"},"datePublished":"2022-01-13T08:50:32+00:00","dateModified":"2025-05-13T16:14:35+00:00","author":{"@id":"https:\/\/plumrocket.com\/docs\/#\/schema\/person\/c96fccdb89342ae6804272265723eca8"},"description":"Plumrocket GDPR Magento 2 extension allows you to manage any third-party data stored in your Magento database. Use this manual to make your third-party","breadcrumb":{"@id":"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3\/devguide\/customer-data-actions#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Magento 2 Extensions","item":"https:\/\/plumrocket.com\/magento-extensions"},{"@type":"ListItem","position":2,"name":"Magento 2 GDPR","item":"https:\/\/plumrocket.com\/magento-gdpr"},{"@type":"ListItem","position":3,"name":"Documentation","item":"https:\/\/plumrocket.com\/docs\/magento-data-privacy"},{"@type":"ListItem","position":4,"name":"v3","item":"https:\/\/plumrocket.com\/docs\/magento-data-privacy\/v3"},{"@type":"ListItem","position":5,"name":"Developer Guide","item":"https:\/\/plumrocket.com\/docs\/magento-gdpr\/v3\/devguide"},{"@type":"ListItem","position":6,"name":"How to Download, Delete and Anonymize Customer Data in Magento 2 GDPR"}]},{"@type":"Person","@id":"https:\/\/plumrocket.com\/docs\/#\/schema\/person\/c96fccdb89342ae6804272265723eca8","name":"Plumrocket","image":{"@type":"ImageObject","@id":"https:\/\/plumrocket.com\/docs\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/10c44aa45aab391250913d982e552e53?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/10c44aa45aab391250913d982e552e53?s=96&d=mm&r=g","caption":"Plumrocket"}}]}},"_links":{"self":[{"href":"https:\/\/plumrocket.com\/docs\/wp-json\/wp\/v2\/posts\/25270"}],"collection":[{"href":"https:\/\/plumrocket.com\/docs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/plumrocket.com\/docs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/plumrocket.com\/docs\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/plumrocket.com\/docs\/wp-json\/wp\/v2\/comments?post=25270"}],"version-history":[{"count":4,"href":"https:\/\/plumrocket.com\/docs\/wp-json\/wp\/v2\/posts\/25270\/revisions"}],"predecessor-version":[{"id":28340,"href":"https:\/\/plumrocket.com\/docs\/wp-json\/wp\/v2\/posts\/25270\/revisions\/28340"}],"wp:attachment":[{"href":"https:\/\/plumrocket.com\/docs\/wp-json\/wp\/v2\/media?parent=25270"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/plumrocket.com\/docs\/wp-json\/wp\/v2\/categories?post=25270"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/plumrocket.com\/docs\/wp-json\/wp\/v2\/tags?post=25270"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}