function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
SAHG-SFDCSAHG-SFDC 

How do I show the campaign name in the opportunity

How do I show the campaign name in the opportunity record under lead information fields, Other fields that I wanted I mapped them and they are visible

Here, I want the campaign name to be in the lead information section on the opportunity page when the lead is converted

Any suggestions here
Best Answer chosen by SAHG-SFDC
Sanjay Mulagada 11Sanjay Mulagada 11
Step 1: Create a custom field on the lead --> Campaign_Name__c
Step 2: Create an Apex class to populate this^ field with Campaign Name
public class  CampmemTriggerhelper{

public static void CampmemTrigger(list<CampaignMember> lstcmp){

          set<Id> leadIds=new set<Id>();
       list<Lead> lstleads=new list<Lead>();
       map<Id,string> mapLeadIdByCampaign=new map<Id,string>();

       for(CampaignMember c:[Select Id,LeadId,Campaign.Name from  CampaignMember where ID IN:lstcmp]){
                  leadIds.add(c.LeadId);
                  mapLeadIdByCampaign.put(c.LeadId,c.Campaign.Name);
       }

       for(Lead l:[Select Id,Campaign_Name__c from Lead where Id in :leadIds]){
       if(l.Campaign_Name__c==null){
                 if(mapLeadIdByCampaign.get(l.id)!=null){
               l.Campaign_Name__c=mapLeadIdByCampaign.get(l.id);
                 }
            lstleads.add(l);
           }
  }

         update lstleads;
 }

}
Step 3: Create an Apex Trigger on Campaigns to call that^ class
trigger CampmemTrigger on CampaignMember(after insert){
      CampmemTriggerhelper.CampmemTrigger(Trigger.new);
}
Step 4: Now that you have the Campaign Name field on Lead populating Campaign Name, use this field to map the field on Opportunity.

 

All Answers

Sanjay Mulagada 11Sanjay Mulagada 11
Step 1: Create a custom field on the lead --> Campaign_Name__c
Step 2: Create an Apex class to populate this^ field with Campaign Name
public class  CampmemTriggerhelper{

public static void CampmemTrigger(list<CampaignMember> lstcmp){

          set<Id> leadIds=new set<Id>();
       list<Lead> lstleads=new list<Lead>();
       map<Id,string> mapLeadIdByCampaign=new map<Id,string>();

       for(CampaignMember c:[Select Id,LeadId,Campaign.Name from  CampaignMember where ID IN:lstcmp]){
                  leadIds.add(c.LeadId);
                  mapLeadIdByCampaign.put(c.LeadId,c.Campaign.Name);
       }

       for(Lead l:[Select Id,Campaign_Name__c from Lead where Id in :leadIds]){
       if(l.Campaign_Name__c==null){
                 if(mapLeadIdByCampaign.get(l.id)!=null){
               l.Campaign_Name__c=mapLeadIdByCampaign.get(l.id);
                 }
            lstleads.add(l);
           }
  }

         update lstleads;
 }

}
Step 3: Create an Apex Trigger on Campaigns to call that^ class
trigger CampmemTrigger on CampaignMember(after insert){
      CampmemTriggerhelper.CampmemTrigger(Trigger.new);
}
Step 4: Now that you have the Campaign Name field on Lead populating Campaign Name, use this field to map the field on Opportunity.

 
This was selected as the best answer
SAHG-SFDCSAHG-SFDC
HI Sanjay,

Thanks for the response,

I am getting this error on the trigger

Error: Compile Error: Incorrect SObject type: CampaignMember should be Campaign at line 1 column 1
SAHG-SFDCSAHG-SFDC
Should this trigger be on campaign? I thiough Lead
Sanjay Mulagada 11Sanjay Mulagada 11
I'm sorry, please create the trigger on "Campaign Members" not on Campaigns or Leads. Thank you !
SAHG-SFDCSAHG-SFDC
We already have a trigger on campaign Members for some other method, Where do I insert the trigger code that you have given, I tried that It did not update the new field Campaign_Name__c

I created new field on opportunity and mapped it to Campaign_Name__c
trigger C_CampaignMember on CampaignMember (before insert, after delete) {
    
    if (Trigger.isBefore)
        C_CampaignMemberHandler.beforeMethod(Trigger.old, Trigger.new, Trigger.oldMap, Trigger.newMap);
    
    if (Trigger.isAfter)
        C_CampaignMemberHandler.afterMethod(Trigger.old, Trigger.new, Trigger.oldMap, Trigger.newMap);
}
Sanjay Mulagada 11Sanjay Mulagada 11
You're trigger will be -
trigger C_CampaignMember on CampaignMember (before insert,after insert, after delete) {
    
    if (Trigger.isBefore)
        C_CampaignMemberHandler.beforeMethod(Trigger.old, Trigger.new, Trigger.oldMap, Trigger.newMap);
    
    if (Trigger.isAfter)
        C_CampaignMemberHandler.afterMethod(Trigger.old, Trigger.new, Trigger.oldMap, Trigger.newMap);

    if(trigger.isInsert && trigger.isAfter){
        CampmemTriggerhelper.C_CampaignMemberHandler(Trigger.new);
       }
}

 
SAHG-SFDCSAHG-SFDC
Working on it , Will update you soon
SAHG-SFDCSAHG-SFDC
Throwing an error that Mehtod does not exists
Sanjay Mulagada 11Sanjay Mulagada 11
Replace
CampmemTriggerhelper.C_CampaignMemberHandler(Trigger.new);
with
CampmemTriggerhelper.CampmemTrigger(Trigger.new);
in you're Apex Trigger. Thank you !