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

Your email address will not be published. Required fields are marked *

Subscribe To Our Newsletter

Get updates and learn from the best

More To Explore