Remove from Marketing List using WebApi

You can manage adding and removing contacts from Marketing Lists in JavaScript.

Reviewing the WebApi documentation showed that this can be done, but there was a contradictory article on an SDK page which stated that removing a record from a marketing list does not work in the WebApi and I had seen some posts also stating this to be the case.

I checked this and it seems that removing a record from a marketing list is supported in the WebApi.

Here is how I achieved both. In the sample JavaScript below, ensure that you set these variables:

  • thisRecordId the Guid of the account, contact or lead record to add or remove
  • clientURL the Server URL for your Dynamics 365 instance
  • MarketingListId the Guid of the Marketing List that the account, contact or lead record is to be added to or removed from

Add to Marketing List

var data = {
           "EntityId": thisRecordId
       };
       
// WebApi call to add record to a Marketing List
var WebApiPath = encodeURI(clientURL + "/api/data/v9.0/lists(" + MarketingListId+ ")/Microsoft.Dynamics.CRM.AddMemberList");

var Req = new XMLHttpRequest();
Req.open("POST", WebApiPath, true);
Req.setRequestHeader("Accept", "application/json");
Req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
Req.setRequestHeader("OData-MaxVersion", "4.0");
Req.setRequestHeader("OData-Version", "4.0");

Req.onreadystatechange = function () {
           if (this.readyState === 4) {
               Req.onreadystatechange = null;
               if (this.status === 200) {
                   //Success
                   alert("Added to list.");
               } else {
                   var errorText = this.responseText;
                   //Error - something went wrong
                   alert(errorText);
               }
           }
       };
Req.send(JSON.stringify(data));

Remove from Marketing List

var data = {
    "ListMember": {
        listmemberid: thisRecordId,
        "@odata.type": "Microsoft.Dynamics.CRM.listmember"
    }
};
 
var WebApiPath = encodeURI(clientURL + "/api/data/v9.0/lists(" + MarketingListId+ ")/Microsoft.Dynamics.CRM.RemoveMemberList");

var Req = new XMLHttpRequest();
Req.open("POST", WebApiPath, true);
Req.setRequestHeader("Accept", "application/json");
Req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
Req.setRequestHeader("OData-MaxVersion", "4.0");
Req.setRequestHeader("OData-Version", "4.0");
 
Req.onreadystatechange = function () {
    if (this.readyState === 4) {
        Req.onreadystatechange = null;
        if (this.status === 200) 
            //Success 
            alert("Added to list.");
        } else {
            var errorText = this.responseText;
            //Error - something went wrong
            alert(errorText);
        }
    }
};
Req.send(JSON.stringify(data));
Review: