Campaign Member History:
Campaign Member Status:
Capturing campaign member history isn't possible with standard functionality, History Tracking isn't available for Campaign Members. However, by customizing the functionality as mentioned below may help to establish the requirement.
1. Create a Custom object named as "CampaignMemberHistory" i.e; CampaignHistory__c to store the record of changes done for CampaignMember.
2. Create two fields:
3. Now create a Trigger as mentioned below on CampaignMember.
Trigger HistoryTrack on CampaignMember (after insert, before update, before delete) {
List<CampaignHistory__c> ch= new List<CampaignHistory__c>();
List<CampaignMember> cmOld= Trigger.old;
List<String> changes = new List<String>();
List<String> CampHisId = new List<String>();
integer i=0;
if(Trigger.isDelete){
for(CampaignMember cm: Trigger.old ){
String s;
s='Campaign Member id ' + cm.id +
'is Deleted from campaign id: '+ cm.campaignId + 'by user '+ userinfo.getUserName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignHistory__c c= new CampaignHistory__c();
c.Name='History'+DateTime.now();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.HistoryDetails__c=changes[i];
System.debug('CHistory:'+c.HistoryDetails__c);
ch.add(c);
i++;
}
}else {
for(CampaignMember cm: Trigger.new ){
String s;
if((Trigger.isUpdate)){
if(cmOld[i].status!=cm.status){
s='on dated ' + DateTime.now() +
' status changed from ' + cmOld[i].status + ' to ' + cm.status +
' by user ' + userinfo.getUserName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignHistory__c c= new CampaignHistory__c();
c.Name='History'+DateTime.now();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.HistoryDetails__c=changes[i];
System.debug('CHistory:'+c.HistoryDetails__c);
ch.add(c);
}else if(cmOld[i].campaignId!=cm.campaignId){
s='Changed Campaign id from : '+ cmOld[i].campaignId + 'to :' + cm.campaignId +
' by user '+ userinfo.getUserName();
changes.add(s);
CampHisId.add(cm.campaignId);
CampaignHistory__c c= new CampaignHistory__c();
c.Name='History'+DateTime.now();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.HistoryDetails__c=changes[i];
System.debug('CHistory:'+c.HistoryDetails__c);
ch.add(c);
}
}else if(Trigger.isInsert){
s='A new Campaign Member id : ' + cm.id + ' is added to Campaign id :' + cm.campaignId +' by user '+ userinfo.getUserName();
changes.add(s);
CampHisId.add(cm.campaignId);
System.debug('s>>>'+s);
CampaignHistory__c c= new CampaignHistory__c();
c.Name='History'+DateTime.now();
System.debug('CName:'+c.Name);
c.CampaignId__c=CampHisId[i];
System.debug('CampaignId:'+c.CampaignId__c);
c.HistoryDetails__c=changes[i];
System.debug('CHistory:'+c.HistoryDetails__c);
ch.add(c);
}
i++;
}
}
insert ch;
}
|
4. Now go to Campaign and click Edit layout, now select Campaign History that you have created and add other required field and click Save.
Please note that this is a sample code and will not work in all scenarios, please edit and tailor the code to match your requirement
000385967

We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.