Sample Code Example

This example will show the JavaScript code of a custom button that converts a Lead to a Contact/Account based on the following scenario:

  • If the Company field is empty then display an alert: "The field Company should not be empty if you want to convert this lead"
  • If the lead Company field is empty then display an alert: "The field Company should not be empty if you want to convert this lead"
  • If the lead email field is empty then display an alert: "The field Email should not be empty if you want to convert this lead"
  • Else
    • If the account already exists (based on the name)
      • Alert("This account already exists in the database, do you want to overwrite the
        existing account data?")
      • Yes: update the account
      • No: do not update the account
    • Else
      • Insert Account
    • If the contact already exists (based on the email)
      • Alert("This contact already exists in the database, do you want to overwrite the existing contact data?")
      • Yes: update the contact
      • No: do not update the contact
    • Else
      • Insert contact
  • Set the lead status to “Closed - Converted"
  • Link all the related Invitees, Tasks, Opportunities and Campaign Members to the Contact.

<script type="text/javascript">

function ConvertLead() {

// Get lead info
var lead = GetDataByID(GetRecordGUID(), "Lead", "Id, Name, Revenue, Last_Call_Made_On, City, Company, Company_Number, Country, Email, Email_Read, First_Name, Industry, Last_Email_Sent_On, Last_Name, Lead_Origin, Mobile, No_of_Employees, Rating, Skype, Status, Street, Title, Website, Phone, ZIP, Picture, Rating, Twitter, Salutation, Department,  Secondary_Email, Description, Email_Opt_Out, Do_Not_Call, Fax, Middle_Name, OwnerId");

// Check lead company if empty
if (lead.Company == null) {

alert(GetRecordGUID() + " - The field Company should not be empty if you want to convert this lead.");

return;

        }

 

// Check lead email if empty
if (lead.Email == null) {

alert(GetRecordGUID() + " - The field Email should not be empty if you want to convert this lead.");

               return;

               }

// Prepare the Account Data
var xmlStrAccount = "<Data>";
xmlStrAccount += "<Account>";
xmlStrAccount += "<Name>";
xmlStrAccount += htmlDecode(lead.Company);
xmlStrAccount += "</Name>";
xmlStrAccount += "<Company_Number>";
xmlStrAccount += htmlDecode(lead.Company_Number);
xmlStrAccount += "</Company_Number>";
if (lead.Industry != null) {

xmlStrAccount += "<Industry>";
xmlStrAccount += htmlDecode(lead.Industry);
xmlStrAccount += "</Industry>";

       }

if (lead.Phone != null) {

xmlStrAccount += "<Phone>";
xmlStrAccount += lead.Phone;
xmlStrAccount += "</Phone>";

}

if (lead.Fax != null) {

xmlStrAccount += "<Fax>";
xmlStrAccount += lead.Fax;
xmlStrAccount += "</Fax>";

              }

if (lead.No_of_Employees != null) {

xmlStrAccount += "<No_of_Employees>";
xmlStrAccount += lead.No_of_Employees;
xmlStrAccount += "</No_of_Employees>";

              }

if (lead.Email != null) {

xmlStrAccount += "<Email>";
xmlStrAccount += lead.Email;
xmlStrAccount += "</Email>";

              }

if (lead.Revenue != null) {

xmlStrAccount += "<Revenue>";
xmlStrAccount += lead.Revenue;
xmlStrAccount += "</Revenue>";

              }

if (lead.Website != null) {

xmlStrAccount += "<Website>";
xmlStrAccount += lead.Website;
xmlStrAccount += "</Website>";

}

if (lead.Description != null) {

xmlStrAccount += "<Description>";
xmlStrAccount += htmlDecode(lead.Description);
xmlStrAccount += "</Description>";

}

if (lead.Street != null) {

xmlStrAccount += "<Billing_Street>";
xmlStrAccount += htmlDecode(lead.Street);
xmlStrAccount += "</Billing_Street>";

}

if (lead.Country != null) {

xmlStrAccount += "<Billing_Country>";
xmlStrAccount += htmlDecode(lead.Country);
xmlStrAccount += "</Billing_Country>";

}

if (lead.City != null) {

xmlStrAccount += "<Billing_City>";
xmlStrAccount += htmlDecode(lead.City);
xmlStrAccount += "</Billing_City>";

}

if (lead.ZIP != null) {

xmlStrAccount += "<Billing_ZIP>";
xmlStrAccount += lead.ZIP;
xmlStrAccount += "</Billing_ZIP>";

}

if (lead.Lead_Origin != null) {

xmlStrAccount += "<Lead_Origin>";
xmlStrAccount += htmlDecode(lead.Lead_Origin);
xmlStrAccount += "</Lead_Origin>";

}

if (lead.Rating != null) {

xmlStrAccount += "<Rating>";
xmlStrAccount += htmlDecode(lead.Rating);
xmlStrAccount += "</Rating>";

}

xmlStrAccount += "<OwnerId>";
xmlStrAccount += GetOwner(lead.OwnerId);
xmlStrAccount += "</OwnerId>";

var strname = "";
var strfirstname = "";
var strlastname = "";
if (lead.First_Name != null) {

strname = htmlDecode(lead.First_Name);
strfirstname = htmlDecode(lead.First_Name);

}

else {

if (lead.Last_Name != null) {

strfirstname = htmlDecode(lead.Last_Name);

}

}

if (lead.Last_Name != null) {

strname = strname + ' ' + htmlDecode(lead.Last_Name);
strlastname = htmlDecode(lead.Last_Name);

}

else {

strlastname = htmlDecode(lead.Name);

}

if (strname == "") {

strname = htmlDecode(lead.Name);

}

if (strfirstname == "") {

                strfirstname = htmlDecode(lead.Name);

       }

// Prepare the Contact Data
var xmlStrContact = "<Data>";
xmlStrContact += "<Contact>";
xmlStrContact += "<Name>";
xmlStrContact += strname;
xmlStrContact += "</Name>";
xmlStrContact += "<First_Name>";
xmlStrContact += strfirstname;
xmlStrContact += "</First_Name>";
xmlStrContact += "<Last_Name>";
xmlStrContact += strlastname;
xmlStrContact += "</Last_Name>";

if (lead.Title != null) {

xmlStrContact += "<Title>";
xmlStrContact += htmlDecode(lead.Title);
xmlStrContact += "</Title>";

       }

if (lead.Mobile != null) {

xmlStrContact += "<Mobile>";
xmlStrContact += lead.Mobile;
xmlStrContact += "</Mobile>";

}

if (lead.Middle_Name != null) {

xmlStrContact += "<Middle_Name>";
xmlStrContact += htmlDecode(lead.Middle_Name);
xmlStrContact += "</Middle_Name>";

              }

              if (lead.Skype != null) {

xmlStrContact += "<Skype>";
xmlStrContact += htmlDecode(lead.Skype);
xmlStrContact += "</Skype>";

              }

              if (lead.Email != null) {

xmlStrContact += "<Email>";
xmlStrContact += lead.Email;
xmlStrContact += "</Email>";

              }

              if (lead.Phone != null) {

xmlStrContact += "<Work_Phone>";
xmlStrContact += lead.Phone;
xmlStrContact += "</Work_Phone>";

}

if (lead.Fax != null) {

xmlStrContact += "<Fax>";
xmlStrContact += lead.Fax;
xmlStrContact += "</Fax>";

              }

              if (lead.Street != null) {

xmlStrContact += "<Street>";
xmlStrContact += htmlDecode(lead.Street);
xmlStrContact += "</Street>";

              }

              if (lead.Country != null) {

xmlStrContact += "<Country>";
xmlStrContact += htmlDecode(lead.Country);
xmlStrContact += "</Country>";

              }

              if (lead.City != null) {

xmlStrContact += "<City>";
xmlStrContact += htmlDecode(lead.City);
xmlStrContact += "</City>";

              }

              if (lead.ZIP != null) {

xmlStrContact += "<ZIP>";
xmlStrContact += lead.ZIP;
xmlStrContact += "</ZIP>";

             }

             if (lead.Last_Email_Sent_On != null) {

xmlStrContact += "<Last_Email_Sent_On>";
xmlStrContact += lead.Last_Email_Sent_On; // Date
xmlStrContact += "</Last_Email_Sent_On>";

             }

            if (lead.Email_Read != null) {

xmlStrContact += "<Email_Read>";
xmlStrContact += lead.Email_Read;
xmlStrContact += "</Email_Read>";

}

if (lead.Do_Not_Call != null) {

xmlStrContact += "<Do_Not_Call>";
xmlStrContact += lead.Do_Not_Call;
xmlStrContact += "</Do_Not_Call>";

}

if (lead.Email_Opt_Out != null) {

xmlStrContact += "<Email_Opt_Out>";
xmlStrContact += lead.Email_Opt_Out;
xmlStrContact += "</Email_Opt_Out>";

             }

                    if (lead.Lead_Origin != null) {

xmlStrContact += "<Lead_Origin>";
xmlStrContact += htmlDecode(lead.Lead_Origin);
xmlStrContact += "</Lead_Origin>";

                     }

      if (lead.Rating != null) {

xmlStrContact += "<Rating>";
xmlStrContact += htmlDecode(lead.Rating);
xmlStrContact += "</Rating>";

             }

                    if (lead.Picture != null) {

xmlStrContact += "<Picture>";
xmlStrContact += lead.Picture;
xmlStrContact += "</Picture>";

            }

                   if (lead.Twitter != null) {

xmlStrContact += "<Twitter>";
xmlStrContact += htmlDecode(lead.Twitter);
xmlStrContact += "</Twitter>";

            }

            if (lead.Salutation != null) {

xmlStrContact += "<Salutation>";
xmlStrContact += htmlDecode(lead.Salutation);
xmlStrContact += "</Salutation>";

                   }

    if (lead.Department != null) {

xmlStrContact += "<Department>";
xmlStrContact += htmlDecode(lead.Department);
xmlStrContact += "</Department>";

}

if (lead.Secondary_Email != null) {

xmlStrContact += "<Secondary_Email>";
xmlStrContact += lead.Secondary_Email;
xmlStrContact += "</Secondary_Email>";
}

if (lead.Description != null) {

xmlStrContact += "<Description>";
xmlStrContact += htmlDecode(lead.Description);
xmlStrContact += "</Description>";

                   }

    if (lead.Last_Call_Made_On != null) {

xmlStrContact += "<Last_Call_Made_On>";
xmlStrContact += lead.Last_Call_Made_On; // Date
xmlStrContact += "</Last_Call_Made_On>";

                   }

xmlStrContact += "<OwnerId>";
xmlStrContact += GetOwner(lead.OwnerId);
xmlStrContact += "</OwnerId>";

             var AccountGUID = "";

// Check if Account exists based on Name value
var Account = GetDataByColumn("Name", lead.Company, "Account", "Id, Name");
if (Account != null) {

// Set the Account GUID
AccountGUID = Account.Id;
if (confirm("This account already exists in the database, do you want to overwrite the existing account data?")) {

xmlStrAccount += "</Account>";
xmlStrAccount += "</Data>";
try {

// Update Account
UpdateRecord("Account", "Name", xmlStrAccount);
//if (!success) {
// return;
//}

}

catch (ex) {

alert(ex.message);
return;

}

}

else {

}

}

else {

// Add the Remaining XML data
xmlStrAccount += "<IsDeleted>";
xmlStrAccount += 0;
xmlStrAccount += "</IsDeleted>";
xmlStrAccount += "</Account>";
xmlStrAccount += "</Data>";
try {

// Insert Account
var ObjResAccount = CreateRecord("Account", "Name", xmlStrAccount);
AccountGUID = ObjResAccount.RecordGUID;
if (AccountGUID == null) {

return;

}

}

catch (ex) {

alert(ex.message);
return;

}

}

// Check if Contact exists based on Email value
var ContactGUID = "";
var Contact = GetDataByColumn("Email", lead.Email, "Contact", "Id");
if (Contact != null) {

// Set the Contact GUID
ContactGUID = Contact.Id;
if (confirm("This contact already exists in the database, do you want to overwrite the existing contact data?")) {

// Add Contact Id to the XML data
xmlStrContact += "<Id>";
xmlStrContact += Contact.Id;
xmlStrContact += "</Id>";
xmlStrContact += "<Account>";
xmlStrContact += htmlDecode(lead.Company);
xmlStrContact += "</Account>";
xmlStrContact += "</Contact>";
xmlStrContact += "</Data>";
try {

// Update Contact
UpdateRecord("Contact", "Email", xmlStrContact);

}

catch (ex) {

alert(ex.message);
return;

}

}

else {

}

}

else {

// Add the Remaining XML data
xmlStrContact += "<Account>";
xmlStrContact += htmlDecode(lead.Company);
xmlStrContact += "</Account>";
xmlStrContact += "<IsDeleted>";
xmlStrContact += 0;
xmlStrContact += "</IsDeleted>";
xmlStrContact += "</Contact>";
xmlStrContact += "</Data>";
try {

// Insert Contact
var ObjResContact = CreateRecord("Contact", "Email", xmlStrContact);
ContactGUID = ObjResContact.RecordGUID;

}

catch (ex) {

alert(ex.message);
return;

}

}

// ---------- Update lead status to Converted ---------- //

// Prepare the Lead Data
var xmlStrLead = "<Data>";
xmlStrLead += "<Lead>";
xmlStrLead += "<Id>";
xmlStrLead += GetRecordGUID();
xmlStrLead += "</Id>";
xmlStrLead += "<Status>";
xmlStrLead += "Closed_Converted";
xmlStrLead += "</Status>";
xmlStrLead += "</Lead>";
xmlStrLead += "</Data>";
try {

// Update Lead
UpdateRecord("Lead", "Id", xmlStrLead);

// Refresh the page
location.reload();

}

catch (ex) {

alert(ex.message);
return;

}

// Get All the related Invitee
var Invitee = GetDataByColumn("Lead", GetRecordGUID(), "Invitee", "Id");
if (Invitee != null) {

if (Invitee.length != undefined) {

for (var i = 0; i < Invitee.length; i++) {

// Prepare the Invitee Data and link it to the contact
var xmlStrInvitee = "<Data>";
xmlStrInvitee += "<Invitee>";
xmlStrInvitee += "<Id>";
xmlStrInvitee += Invitee[i].Id;
xmlStrInvitee += "</Id>";
xmlStrInvitee += "<Contact>";
xmlStrInvitee += lead.Email;
xmlStrInvitee += "</Contact>";
xmlStrInvitee += "</Invitee>";
xmlStrInvitee += "</Data>";
try {

// Update Invitee
UpdateRecord("Invitee", "Id", xmlStrInvitee);

}

catch (ex) {

alert(ex.message);
return;

}

}

}

else // one record

{

// Prepare the Invitee Data and link it to the contact
var xmlStrInvitee = "<Data>";
xmlStrInvitee += "<Invitee>";
xmlStrInvitee += "<Id>";
xmlStrInvitee += Invitee.Id;
xmlStrInvitee += "</Id>";
xmlStrInvitee += "<Contact>";
xmlStrInvitee += lead.Email;
xmlStrInvitee += "</Contact>";
xmlStrInvitee += "</Invitee>";
xmlStrInvitee += "</Data>";
try {

// Update Invitee
UpdateRecord("Invitee", "Id", xmlStrInvitee);

}

catch (ex) {

alert(ex.message);
return;

}

}

}

// Get All the related Tasks
var Tasks = GetDataByColumn("Lead", GetRecordGUID(), "Task", "Id");
if (Tasks != null) {

if (Tasks.length != undefined) {

for (var i = 0; i < Tasks.length; i++) {

// Prepare the Task Data and link it to the contact
var xmlStrTask = "<Data>";
xmlStrTask += "<Task>";
xmlStrTask += "<Id>";
xmlStrTask += Tasks[i].Id;
xmlStrTask += "</Id>";
xmlStrTask += "<Contact>";
xmlStrTask += lead.Email;
xmlStrTask += "</Contact>";
xmlStrTask += "<Account>";
xmlStrTask += htmlDecode(lead.Company);
xmlStrTask += "</Account>";
xmlStrTask += "</Task>";
xmlStrTask += "</Data>";
try {

// Update Task
UpdateRecord("Task", "Id", xmlStrTask);

}

catch (ex) {

alert(ex.message);
return;

}

}

}

else // one record

{

// Prepare the Task Data and link it to the contact
var xmlStrTask = "<Data>";
xmlStrTask += "<Task>";
xmlStrTask += "<Id>";
xmlStrTask += Tasks.Id;
xmlStrTask += "</Id>";
xmlStrTask += "<Contact>";
xmlStrTask += lead.Email;
xmlStrTask += "</Contact>";
xmlStrTask += "<Account>";
xmlStrTask += htmlDecode(lead.Company);
xmlStrTask += "</Account>";
xmlStrTask += "</Task>";
xmlStrTask += "</Data>";
try {

// Update Task
UpdateRecord("Task", "Id", xmlStrTask);

}

catch (ex) {

alert(ex.message);
return;

}

}

}

// Get All the related Opportunities
var Opportunities = GetDataByColumn("Lead", GetRecordGUID(), "Opportunity", "Id");
if (Opportunities != null) {

if (Opportunities.length != undefined) {

for (var i = 0; i < Opportunities.length; i++) {

// Prepare the Opportunity Data and link it to the contact
var xmlStrOpportunity = "<Data>";
xmlStrOpportunity += "<Opportunity>";
xmlStrOpportunity += "<Id>";
xmlStrOpportunity += Opportunities[i].Id;
xmlStrOpportunity += "</Id>";
xmlStrOpportunity += "<Main_Contact>";
xmlStrOpportunity += lead.Email;
xmlStrOpportunity += "</Main_Contact>";
xmlStrOpportunity += "<Account>";
xmlStrOpportunity += htmlDecode(lead.Company);
xmlStrOpportunity += "</Account>";
xmlStrOpportunity += "</Opportunity>";
xmlStrOpportunity += "</Data>";
try {

// Update Opportunity
UpdateRecord("Opportunity", "Id", xmlStrOpportunity);

}

catch (ex) {

alert(ex.message);
return;

}

}

}

else // one record

{

// Prepare the Opportunity Data and link it to the contact
var xmlStrOpportunity = "<Data>";
xmlStrOpportunity += "<Opportunity>";
xmlStrOpportunity += "<Id>";
xmlStrOpportunity += Opportunities.Id;
xmlStrOpportunity += "</Id>";
xmlStrOpportunity += "<Main_Contact>";
xmlStrOpportunity += lead.Email;
xmlStrOpportunity += "</Main_Contact>";
xmlStrOpportunity += "<Account>";
xmlStrOpportunity += htmlDecode(lead.Company);
xmlStrOpportunity += "</Account>";
xmlStrOpportunity += "</Opportunity>";
xmlStrOpportunity += "</Data>";
try {

// Update Opportunity
UpdateRecord("Opportunity", "Id", xmlStrOpportunity );

}

catch (ex) {

alert(ex.message);
return;

}

}

}

// Get All the related Campaign Members
var CampaignMembers = GetDataByColumn("Lead", GetRecordGUID(), "Campaign_Member", "Id");
if (CampaignMembers != null) {

if (CampaignMembers.length != undefined) {

for (var i = 0; i < CampaignMembers.length; i++) {

// Prepare the Campaign Member Data and link it to the contact
var xmlStrCampaignMember = "<Data>";
xmlStrCampaignMember += "<Campaign_Member>";
xmlStrCampaignMember += "<Id>";
xmlStrCampaignMember += CampaignMembers[i].Id;
xmlStrCampaignMember += "</Id>";
xmlStrCampaignMember += "<Contact>";
xmlStrCampaignMember += lead.Email;
xmlStrCampaignMember += "</Contact>";
xmlStrCampaignMember += "</Campaign_Member>";
xmlStrCampaignMember += "</Data>";
try {

// Update Campaign Member
UpdateRecord("Campaign_Member", "Id", xmlStrCampaignMember);

}

catch (ex) {

alert(ex.message);
return;

}

}

}

else // one record

{

// Prepare the Campaign Member Data and link it to the contact
var xmlStrCampaignMember = "<Data>";
xmlStrCampaignMember += "<Campaign_Member>";
xmlStrCampaignMember += "<Id>";
xmlStrCampaignMember += CampaignMembers.Id;
xmlStrCampaignMember += "</Id>";
xmlStrCampaignMember += "<Contact>";
xmlStrCampaignMember += lead.Email;
xmlStrCampaignMember += "</Contact>";
xmlStrCampaignMember += "</Campaign_Member>";
xmlStrCampaignMember += "</Data>";
try {

// Update Campaign Member
UpdateRecord("Campaign_Member", "Id", xmlStrCampaignMember);

}

catch (ex) {

alert(ex.message);
return;

}

}

}

}

</script>

Was this article helpful to you? Yes No

How can we help?