SF Learners Hub

MASTER SALESFORCE, CONQUER YOUR GOALS

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, after Update) {
    
    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

The Power of Salesforce Integration

What You’ll Learn What Is Salesforce Integration? Salesforce integration involves combining the data and features of Salesforce with another application, creating a cohesive experience for