Administer Marketing Cloud - Développement pour Marketing Cloud

Delete Contacts with the REST API /Suppression de contacts avec l’API REST

Learning Objectives / Objectifs de formation

After completing this unit, you’ll be able to: / Une fois cette unité terminée, vous pourrez :

  • Delete contacts in batches using REST API. / Supprimer des contacts par lots à l’aide de l’API REST
  • Get the status for Contact Delete requests. / Obtenir le statut des requêtes de suppression des contacts
  • Troubleshoot contact deletion requests. / Résoudre les problèmes liés aux requêtes de suppression des contacts

Delete Contacts More Efficiently / Amélioration de l’efficacité de la suppression des contacts

Deleting one or two contacts directly from Marketing Cloud is simple enough, but if you’re deleting more than a handful, the process can quickly become tedious. / Il est assez simple de supprimer un ou deux contacts directement depuis Marketing Cloud, mais si vous devez en supprimer un plus grand nombre, le processus peut rapidement devenir fastidieux.

So, while the limit per request batch is one million contacts, we don’t expect you to select that number of contacts manually. /Ainsi, bien que la limite par lot de requêtes soit d’un million de contacts, nous ne nous attendons pas à ce que vous sélectionniez ce nombre de contacts manuellement.

So, if you do need to delete a large number of contacts (and you’ve done your homework to make sure deleting contacts is the best choice), you have several REST API resources available to do this in Marketing Cloud. /Donc, si vous devez supprimer un grand nombre de contacts (et que vous vous êtes bien assuré auparavant qu’il est judicieux d’en supprimer), Marketing Cloud vous propose plusieurs ressources API REST afin d’y parvenir.

Enable Contact Delete / Activation de la suppression des contacts

Remember, Contact Delete needs to be enabled before you begin—refer to the previous unit for a refresher on how to do that. /N’oubliez pas que la suppression des contacts doit être activée avant de commencer. Reportez-vous à l’unité précédente si vous avez besoin d’un rappel sur la façon de procéder.

Similarly, you can modify the suppression period for your account with the configSettings resource, as shown in this example. /De même, vous pouvez modifier la période de suppression pour votre compte grâce à la ressource configSettings, comme présenté dans cet exemple.

Example: Configure the Contact Delete Suppression Period / Exemple : configuration de la période de suppression de la suppression des contacts

This example sets the value to 0 days (using a value of -1), or an immediate deletion. / Cet exemple définit la valeur sur 0 jour (en utilisant une valeur de -1), ce qui équivaut à une suppression immédiate.

Host: https://YOUR_SUBDOMAIN.rest.marketingcloudapis.com
POST /contacts/v1/contacts/actions/delete/configSettings
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
   "items" : [{
      "settingKey" : "SuppressionRestoreUntilDays",
      "value" : "-1"
      }
   ]
}

Choose How to Delete Contacts with REST API / Sélection du mode de suppression des contacts avec une API REST

Now that your account is enabled to delete contacts, you can use one of three different values to choose which contacts to delete: contact IDs, contact keys, or data extensions. / Maintenant que la suppression des contacts est activée pour votre compte, vous avez le choix entre trois valeurs différentes pour sélectionner les contacts à supprimer : les ID de contact, les clés de contact ou les extensions de données. 

Let’s take a closer look at each, along with some sample code. / Examinons chacune d’entre elles de plus près, avec un exemple de code. 

Contact IDs / ID de contact

If you choose to delete contacts using a contact ID value, you should pass the values in an array, as shown in this example. / Si vous choisissez de supprimer des contacts à l’aide d’une valeur d’ID de contact, vous devez transmettre les valeurs dans un tableau, comme indiqué dans cet exemple.

Example: Delete Contacts by Contact ID / Exemple : suppression de contacts par ID de contact

Host: https://YOUR_SUBDOMAIN.rest.marketingcloudapis.com
POST /contacts/v1/contacts/actions/delete?type=ids
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
   "values": [12345678, 12345679],
    "DeleteOperationType": "ContactAndAttributes"
}

Contact Keys / Clés de contact

If you choose to delete contacts using the ContactKey value, you can choose exactly where you want to delete those contact keys. /Si vous choisissez de supprimer des contacts à l’aide de la valeur ContactKey (Clé de contact), vous pouvez choisir où vous souhaitez supprimer exactement les clés de contact en question. 

Pay special attention to this value, as it helps you delete contacts from locations other than your typical sendable data extensions!/ Faites particulièrement attention en manipulant cette valeur, car elle vous permet de supprimer des contacts dans des emplacements autres que vos extensions de données expédiables habituelles !

You should set the ContactTypeID value accordingly. / Vous devez définir la valeur ContactTypeID en conséquence.

  • 0—Marketing Cloud / Marketing Cloud
  • 1—Salesforce Lead / piste Salesforce
  • 2—Salesforce Contact / contact Salesforce
  • 3—Triggered Send List / Liste d’envoi déclenché
  • 4—MSCRM Contact / contact MSCRM
  • 5—MSCRM Lead / liste MSCRM
  • 6—MSCRM Account / compte MSCRM

Example: Delete Contacts by Contact Key / Exemple : suppression de contacts par clé de contact

Host: https://YOUR_SUBDOMAIN.rest.marketingcloudapis.com
POST /contacts/v1/contacts/actions/delete?type=keys
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
   "ContactTypeId": 0,
   "values": [
      "TEST_317-531-5555", "TEST_317-531-5556"
      ],
   "DeleteOperationType": "ContactAndAttributes"
}

Data Extensions / Extensions de données

You can also choose to remove all contacts contained in a specific data extension. / Vous pouvez également choisir de supprimer tous les contacts contenus dans une extension de données spécifique.

Remember that this operation deletes the contact records outlined in the data extension across all sendable data extensions. / N’oubliez pas que cette opération supprime de toutes les extensions de données expédiables les enregistrements de contact figurant dans cette extension de données. 

That includes data extensions that send based on ContactKey, ContactID, and Email Address values. /Cela inclut les extensions de données réalisant des envois en fonction des valeurs Clé de contact, ID de contact et Adresse e-mail.

You can also decide whether or not to delete the entire data extension when you’re done. So many choices! / Vous pouvez également décider de supprimer entièrement l’extension de données lorsque vous avez terminé. De nombreuses possibilités s’offrent à vous ! 

This process creates an asynchronous request for your batch of delete requests. /Ce processus crée une requête asynchrone pour votre lot de requêtes de suppression. 

You can contact your Marketing Cloud account manager for more information on configuring delete request limits in your account. / Vous pouvez contacter votre gestionnaire de compte Marketing Cloud pour en savoir plus sur la configuration des limitations des requêtes de suppression dans votre compte.

Note / Remarque

You must specify that you’re deleting a data extension and include the external key for that data extension. / Vous devez indiquer que vous supprimez une extension de données et fournir la clé externe lui correspondant. 

Also, you can’t delete synchronized data extensions. You can use them to help identify the contacts to delete, but the actual data extension remains. / De plus, vous ne pouvez pas supprimer des extensions de données synchronisées. Vous pouvez les utiliser afin de permettre l’identification des contacts à supprimer, mais l’extension de données en elle-même continuera d’exister.

Example: Delete Contacts Using a Data Extension / Exemple : suppression de contacts à l’aide d’une extension de données

Host: https://YOUR_SUBDOMAIN.rest.marketingcloudapis.com
POST /contacts/v1/contacts/actions/delete?type=listReference
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{
   "deleteOperationType": "ContactAndAttributes",
   "targetList": {
      "listType": {
         "listTypeID": 3
      },
   "listKey": "ContactListDeleteSource_as_DataExtension"
   },
   "deleteListWhenCompleted": false,
   "deleteListContentsWhenCompleted": false
}

Check Up on Your Requests / Vérification de vos requêtes

As we’ve mentioned, Contact Delete requests take some time to complete. / Comme nous l’avons indiqué, l’exécution des requêtes de suppression des contacts prend un certain temps.

It can take several hours, in fact, depending on how many contacts you included in your request, how many requests you made, and other system factors. / Cela peut en effet durer plusieurs heures, selon le nombre de contacts que vous avez inclus dans votre requête, le nombre de requêtes que vous avez faites et d’autres facteurs propres au système.

However, you can keep up to date on the progress for your requests by using the OperationID value. / Cependant, vous pouvez vous tenir informé de la progression de vos requêtes en utilisant la valeur OperationID. 

Each Contact Delete request returns an OperationID value, which you can use to retrieve any available information. /Chaque demande de suppression de contact renvoie une valeur OperationID que vous pouvez utiliser pour récupérer l’ensemble des informations disponibles.

Here are a few example requests. /Vous trouvez ci-dessous quelques exemples de requêtes.

Example: Get the Status for a Specific Contact Delete Request / Exemple : obtention du statut d’une requête de suppression des contacts spécifique

Host: https://YOUR_SUBDOMAIN.rest.marketingcloudapis.com
GET /contacts/v1/contacts/actions/delete/status?operationID=IDVALUEHERE
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN

This example response shows the information for a deleted contact. / Cet exemple de réponse affiche les informations d’un contact supprimé.

{
   "operation": {
      "listTypeID": 3,
      "listIdentifier": "037c2811-ce62-4381-b3d2-1936e51fbf4d",
      "listKey": "037c2811-ce62-4381-b3d2-1936e51fbf4d",
      "expectedListCount": 1,
      "deleteType": "ContactAndAttributes",
      "deleteListOnCompleted": false,
      "operationID": 2,
      "eID": 12345,
      "mID": 12345,
      "employeeID": 30980,
      "operationRequestID": "21d0d10d-a15a-413c-bc3e-8b43b185e551",
      "status": "Completed",
      "scheduledTime": "2016-06-14T16:01:58.107",
      "retryCount": 0,
      "createdDate": "2016-06-14T16:02:00",
      "createdBy": 30980,
      "modifiedDate": "2016-06-14T16:02:00",
      "modifiedBy": 30980
    },
    "requestServiceMessageID": "93631be1-107f-4239-a8b7-cdae245d7403",
    "resultMessages": [],
    "serviceMessageID": "00e6add8-d79a-4bd6-9568-2f2a272538f0"
}

Example: Retrieve Contact Delete Requests by Date / Exemple : récupération des requêtes de suppression des contacts par date

You can also retrieve a summary of requests made during a specified date range. / Vous pouvez également récupérer un récapitulatif des requêtes effectuées au cours d’une plage de dates spécifiée.

Host: https://YOUR_SUBDOMAIN.rest.marketingcloudapis.com
GET contacts/v1/contacts/analytics/deleterequests?startdateutc=2019-02-18T00%3A00%3A00&enddateutc=2019-03-19T00%3A00%3A00&%24page=1&%24pagesize=20&%24orderby=operationId%20desc&statusid=5
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN
{

The response includes the OperationID values and brief summaries for all applicable requests. For more specific information, use the OperationID with the /contacts/v1/contacts/actions/delete/status?operationID= resource. / La réponse comporte les valeurs OperationID et de brefs récapitulatifs pour toutes les requêtes éligibles. Pour obtenir des informations plus précises, utilisez la valeur OperationID à l’aide de la ressource /contacts/v1/contacts/actions/delete/status?operationID=.

"startDateUtc":"2019-02-18T00:00:00",
"endDateUtc":"2019-03-19T00:00:00",
"statusAsOfDateUtc":"2019-03-19T19:33:17.496471Z",
"pageNumber":1,
"pageSize":20,
"operations":[
   {
      "operationId":22944,
      "totalContactCount":1,
      "completedContactCount":1,
      "receivedDateUtc":"2019-03-04T22:42:00",
      "status":"Completed",
      "lastStatusDateUtc":"2019-03-19T04:47:40.293",
      "deleteMethod":"Contact Key/ID"
   },
   {
      "operationId":22943,
      "totalContactCount":1,
      "completedContactCount":1,
      "receivedDateUtc":"2019-03-04T22:41:00",
      "status":"Completed",
      "lastStatusDateUtc":"2019-03-19T04:47:40.293",
      "deleteMethod":"Contact Key/ID"
   },
   {
      "operationId":22625,
      "totalContactCount":1,
      "completedContactCount":1,
      "receivedDateUtc":"2019-02-26T23:26:00",
      "status":"Completed",
      "lastStatusDateUtc":"2019-03-13T10:10:17.9",
      "deleteMethod":"Contact Key/ID"
   }
   ],
   "requestServiceMessageID":"e1198208-6432-40fd-b5ae-172c9d9bc44a",
   "responseDateTime":"2019-03-19T13:33:18.2141124-06:00",
   "resultMessages":[],
   "serviceMessageID":"ef7d833c-509f-4dbc-8f99-060aac3c0382"
}

Example: Retrieve a Summary of Contact Delete Requests / Exemple : récupération d’un récapitulatif des requêtes de suppression des contacts

This example shows a summary of status reports for all requests during the specified time period. / Cet exemple présente un récapitulatif des rapports de statut pour toutes les requêtes au cours de la période spécifiée.

Host: https://YOUR_SUBDOMAIN.rest.marketingcloudapis.com
POST /contacts/analytics/deleterequests/summary?startdateutc=2018-01-15T00:00:00Z&enddateutc=2018-01-15T05:00:00Z
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN

The example response breaks the requests into completed, processing, or invalid. / La réponse donnée en exemple répartit les requêtes selon leur statut (terminées, en cours de traitement ou non valides) .

{
   "startdateutc":"2018-01-15T00:00:00Z",
   "enddateutc":"2018-01-15T04:30:00Z",
   "statusofdateutc": "2018-01-17T04:30:00Z",
   "interval":"0",
   "itemcount":5,
   "totaltimeseries":[
      {
         "requestcount":500,
         "minvalue":100,
         "maxvalue":100,
         "items":[
            {time:"01-15-2018 00:00:00","value":100},
            {time:"01-15-2018 01:00:00","value":100},
            {time:"01-15-2018 02:00:00","value":100},
            {time:"01-15-2018 03:0000:","value":100},
            {time:"01-15-2018 04:00:00","value":100}
         ]
      }],
      "statustimeseries":[
         {
            "statusid": 5,
            "status": "Completed",
            "requestcount":350,
            "minvalue":0,
            "maxvalue":100,
            "items":[
               {time:"01-15-2018 00:00:00","value":100},
               {time:"01-15-2018 01:00:00","value":100},
               {time:"01-15-2018 02:00:00","value":100},
               {time:"01-15-2018 03:00:00","value":50},
               {time:"01-15-2018 04:00:00","value":0}
            ]
         },
         {
            "statusid": 1,
            "status": “Processing”,
            "requestcount":100,
            "minvalue":0,
            "maxvalue":75,
            "items":[
               {time:"01-15-2018 00:00:00","value":0},
               {time:"01-15-2018 01:00:00","value":0},
               {time:"01-15-2018 02:00:00","value":0},
               {time:"01-15-2018 03:00:00","value":25},
               {time:"01-15-2018 04:00:00","value":75}
            ]
         },
         {
            "statusid": 7,
            "Status": "Invalid",
            "requestcount":50,
            "minvalue":0,
            "maxvalue":50,
            "items":[
               {time:"01-15-2018 00:00:00","value":0},
               {time:"01-15-2018 01:00:00","value":0},
               {time:"01-15-2018 02:00:00","value":0},
               {time:"01-15-2018 03:00:00","value":25},
               {time:"01-15-2018 04:00:00","value":25}
            ]
         }]
}

You can use OperationID values to follow up on invalid or processing requests. / Vous pouvez utiliser les valeurs OperationID pour suivre les requêtes non valides ou en cours de traitement.

That was a lot of code, right? Let’s take a break from the code and head to the final unit to learn the best way to avoid pitfalls when deleting contacts. / Cela fait beaucoup de code, n’est-ce pas ? Nous en avons assez vu pour le moment. Concentrons-nous maintenant sur la dernière unité, afin d’apprendre la meilleure manière d’éviter les pièges lors des suppressions de contacts.

Resources / Ressources

Leave a Reply

Your email address will not be published. Required fields are marked *