create(), delete(), describeLayout(), describeSObjects(), getDeleted(), getUpdated(), merge(), query(), retrieve(), search(), undelete(), update(), upsert()
Field | Details |
---|---|
Address |
|
AnnualRevenue |
|
City |
|
CleanStatus |
|
Company |
|
CompanyDunsNumber |
|
ConnectionReceivedId | |
ConnectionSentId |
|
ConvertedAccountId |
|
ConvertedContactId |
|
ConvertedDate |
|
ConvertedOpportunityId |
|
Country |
|
CountryCode |
|
CurrencyIsoCode |
|
Description |
|
Division |
|
|
|
EmailBouncedDate |
|
EmailBouncedReason |
|
Fax |
|
FirstName |
|
HasOptedOutOfEmail |
|
GeocodeAccuracy |
|
IndividualId |
|
Industry |
|
IsConverted |
|
IsDeleted |
|
IsUnreadByOwner |
|
Jigsaw |
|
LastActivityDate |
|
LastName |
|
LastReferencedDate |
|
LastViewedDate |
|
Latitude |
|
Longitude |
|
LeadSource |
|
MasterRecordId |
|
MiddleName |
|
MobilePhone |
|
Name |
|
NumberOfEmployees |
|
OwnerId |
|
PartnerAccountId |
|
Phone |
|
PhotoUrl |
|
PostalCode |
|
Rating |
|
RecordTypeId |
|
Salutation |
|
ScoreIntelligenceId |
|
State |
|
StateCode |
|
Status |
|
Street |
|
Suffix |
|
Title |
|
Website |
|
If you import lead data and need to set the value for an audit field, such as CreatedDate, contact Salesforce. Audit fields are automatically updated during API operations unless you request to set these fields yourself..
Leads have a special state to indicate that they have been converted into an account, a contact, and an opportunity. Your client application can convert leads via the convertLead() call. Users can also convert leads in Salesforce. After a lead has been converted, it is read-only. However, you can query converted lead records.
Leads have several fields that indicate their converted status. These special fields are set when converting the lead in the user interface.
Leads have a special state to indicate that they have not been viewed or edited by the lead owner. In Salesforce, this is helpful for users to know which leads have been assigned to them but which they have not touched yet. IsUnreadByOwner is true if the lead owner has not yet viewed or edited the lead, and false if the lead owner has viewed or edited the lead at least once.
Each Status value corresponds to either a converted or unconverted status in the lead status picklist, as defined in the user interface. To obtain the lead status values in the picklist, a client application can query LeadStatus.
You can’t convert a lead via the API by changing Status to one of the converted lead status values. When you convert qualified leads into an account, contact, and opportunity, you can select one of the converted status types for the lead. Leads with a converted status type are no longer available in the Leads tab, although you can include them in reports.
To update a lead or to convert one with convertLead(), log in to your client application with the “Edit” permission on leads.
When you create, update, or upsert a lead, your client application can have the lead assigned to multiple user records based on assignment rules that have been configured in Salesforce.
To use this feature, your client application needs to set either of the following options (but not both) in the AssignmentRuleHeader used in create or update:
The following Java sample shows how to automatically assign a newly created lead.
package wsc; import com.sforce.soap.enterprise.Connector; import com.sforce.soap.enterprise.EnterpriseConnection; import com.sforce.ws.ConnectionException; import com.sforce.ws.ConnectorConfig; import com.sforce.soap.enterprise.sobject.Lead; import com.sforce.soap.enterprise.QueryResult; import com.sforce.soap.enterprise.SaveResult; import com.sforce.soap.enterprise.sobject.SObject; public class LeadAssignment { static final String USERNAME = "REPLACE USER NAME"; static final String PASSWORD = "REPLACE PASSWORD"; static EnterpriseConnection connection; static LeadAssignment _leadAssignment; // Main public static void main(String[] args) { // Establish connection and login ConnectorConfig config = new ConnectorConfig(); config.setUsername(USERNAME); config.setPassword(PASSWORD); try { connection = Connector.newConnection(config); System.out.println("Logged in, endpoint: " + config.getAuthEndpoint()); } catch (ConnectionException e1) { e1.printStackTrace(); } // Create lead _leadAssignment = new LeadAssignment(); try { _leadAssignment.CreateLead(); } catch (Exception e) { e.printStackTrace(); } // Logout try { connection.logout(); System.out.println("Logged out"); } catch (ConnectionException ce) { ce.printStackTrace(); } } public void CreateLead() throws ConnectionException { // Create a new Lead and assign various properties Lead lead = new Lead(); lead.setFirstName("Joe"); lead.setLastName("Smith"); lead.setCompany("ABC Corporation"); lead.setLeadSource("API"); // The lead assignment rule will assign any new leads that // have "API" as the LeadSource to a particular user // In this sample we will look for a particular rule and if found // use the id for the lead assignment. If it is not found we will // instruct the call to use the current default rule. You can't use // both of these values together. QueryResult qr = connection.query("SELECT Id FROM AssignmentRule WHERE Name = " + "'Mass Mail Campaign' AND SobjectType = 'Lead'"); if (qr.getSize() == 0) { connection.setAssignmentRuleHeader(null, true); } else { connection.setAssignmentRuleHeader(qr.getRecords()[0].getId(), false); } // Every operation that results in a new or updated lead will // use the specified rule until the header is removed from the // connection. SaveResult[] sr = connection.create(new SObject[] {lead}); for (int i=0;i<sr.length;i++) { if (sr[i].isSuccess()) { System.out.println("Successfully created lead with id of: " + sr[i].getId() + "."); } else { System.out.println("Error creating lead: " + sr[i].getErrors()[0].getMessage()); } } // This call effectively removes the header, the next lead will // be assigned to the default lead owner. connection.clearAssignmentRuleHeader(); } }
The following C# sample shows how to automatically assign a newly created lead.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.ServiceModel; using LeadSample.sforce; namespace LeadSample { class LeadAssignment { private static SoapClient client; private static SoapClient apiClient; private static SessionHeader header; private static LoginResult loginResult; private static readonly string Username = "REPLACE USERNAME"; private static readonly string Password = "REPLACE PASSWORD AND SECURITY TOKEN"; // Create the proxy binding and login private LeadAssignment() { client = new SoapClient(); try { loginResult = client.login(null, Username, Password); } catch (Exception e) { Console.WriteLine("Unexpected login error: " + e.Message); Console.WriteLine(e.StackTrace); return; } // Access API endpoint and create new client header = new SessionHeader(); header.sessionId = loginResult.sessionId; apiClient = new SoapClient("Soap", loginResult.serverUrl); } [STAThread] static void Main(string[] args) { LeadAssignment leadAssignment = new LeadAssignment(); try { leadAssignment.CreateLead(); } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); Console.WriteLine(e.InnerException); } // logout client.logout(header); } public void CreateLead() { // Create a new Lead and assign various properties Lead lead = new Lead(); lead.FirstName = "John"; lead.LastName = "Brown"; lead.Company = "ABC Corporation"; lead.LeadSource = "Advertisement"; // Setting the lead source for a pre-existing lead assignment rule. This // rule was created outside of this sample and will assign any new leads // that have "Advertisement" as the LeadSource to a particular user. // Create the assignment rule header and add it to the proxy binding AssignmentRuleHeader arh = new AssignmentRuleHeader(); // In this sample we will look for a particular rule and if found // use the id for the lead assignment. If it is not found we will // instruct the call to use the current default rule. Both these // values can't be used together. QueryResult qr = null; string query = "SELECT Id FROM AssignmentRule WHERE Name = " + "'Mass Mail Campaign' AND SobjectType = 'Lead'"; try { LimitInfo[] limitArray = apiClient.query( header, // sessionheader null, // queryoptions null, // mruheader null, // packageversionheader query, // SOQL query out qr); } catch (Exception e) { Console.WriteLine("Unexpected query error: " + e.Message); Console.WriteLine(e.StackTrace); } if (qr.size == 0) { arh.useDefaultRule = true; } else { arh.assignmentRuleId = qr.records[0].Id; } // Create the lead using our Assignment Rule header LimitInfo[] li; SaveResult[] sr; apiClient.create( header, // sessionheader arh, // assignmentruleheader null, // mruheader null, // allowfieldtrunctionheader null, // disablefeedtrackingheader null, // streamingenabledheader null, // allornoneheader null, // duplicateruleheader null, // localeoptions null, // debuggingheader null, // packageversionheader null, // emailheader new sObject[] { lead }, out li, out sr); foreach (SaveResult s in sr) { if (s.success) { Console.WriteLine("Successfully created Lead with ID: {0}", s.id); } else { Console.WriteLine("Error creating Lead: {0}", s.errors[0].message); } } } } }