Remove from Marketing List using WebApi

Submitted by feridun on Mon, 11/19/2018 - 22:01

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));