Automatically Lead Conversion

Share This Post

How to automatically convert leads when creating leads.

Step 1: Create Apex Trigger

Go to Setup -> Developer Console -> New -> File -> New -> Apex Trigger

trigger AutoLeadConvertedHandlerTrigger on Lead (after insert) {
    
    Set<Id> setOfLeadIds = new Set<Id>();
    if(Trigger.IsAfter && Trigger.isInsert){
        for(Lead lead : trigger.new){
            //You can check any condition in the Lead Source
            if(lead.LeadSource == 'Web'){
                setOfLeadIds.add(lead.Id);
            }
        }
        if(setOfLeadIds.size()> 0){
AutoLeadConvertedHandler.autoConvertLeads(setOfLeadIds);
        }
    }
}

Step 2: Create Apex Class

Go to Setup -> Developer Console -> New -> File -> New -> Apex Class

public class AutoLeadConvertedHandler {

    public static void autoConvertLeads(Set<Id> setOfLeadIds){
        LeadStatus convertLeadStatus = [Select Id,MasterLabel from LeadStatus where isConverted = true limit 1];
        List<Database.LeadConvert> massLeadConvert=new List<Database.LeadConvert>();
        for(Id currentLead : setOfLeadIds){
            Database.LeadConvert LeadConvert=new Database.LeadConvert();
            LeadConvert.setLeadId(currentLead);
            LeadConvert.setConvertedStatus(convertLeadStatus.MasterLabel);
            LeadConvert.setDoNotCreateOpportunity(false); // This line is used if you want to create opportunity on auto lead conversion then set False, Otherwise True.
            massLeadConvert.add(LeadConvert);
        }

        if(!massLeadConvert.isEmpty()){
            List<Database.LeadConvertResult> lcr=Database.convertLead(massLeadConvert);
        }
    }
}

Step 3: Create Apex Test Class

Go to Setup -> Developer Console -> New -> File -> New -> Apex Class

@isTest
public class AutoLeadConvertedHandlerTest {

    static testMethod void convertLeadPositiveTest() {
        test.startTest();
        Lead lead = new Lead();
        lead.FirstName = 'Trigger1';
        lead.LastName = 'Test1';
        lead.Company = 'Trigger Test1';
        lead.LeadSource = 'Web';
        insert lead; 
        System.AssertEquals (1, [Select Id,FirstName from Lead where Status='Closed - Converted' and  id=:lead.id].size());
        test.stopTest();
    }
    
    static testMethod void convertLeadNegetiveTest() {
        test.startTest();
        Lead lead = new Lead();
        lead.FirstName = 'Trigger2';
        lead.LastName = 'Test2';
        lead.Company = 'Trigger Test2';
        lead.LeadSource = 'Phone Inquiry';
        insert lead; 
        System.AssertEquals (0, [Select Id,FirstName from Lead where Status='Closed - Converted' and  id=:lead.id].size());
        test.stopTest();
    }
}

Leave a Reply

Subscribe To Our Newsletter

Get updates and learn from the best

More To Explore

Discover more from SF Learners Hub

Subscribe now to keep reading and get access to the full archive.

Continue reading