lead/update
Update one or more fields on an existing Salesforce Lead record.
When to Use
- Update lead status after a sales call to reflect the outcome (e.g.
Working - Contacted).
- Reassign a lead to a new owner when territory realignment occurs.
- Add notes or enrich contact information after a data enrichment service returns results.
- Update lead score fields when an external scoring engine publishes new values.
- Mark a lead's contact details as updated after receiving data from a preference centre.
Configuration
Connection
| Field | Type | Required | Description |
InstanceUrl | string | required | Salesforce org URL. |
AccessToken | string | required | Valid OAuth2 access token. Store in BizFirst Credentials Manager. |
Operation Fields
| Field | Type | Required | Description |
LeadId | string | required | 18-character Salesforce Lead ID of the record to update. |
FirstName | string | optional | Updated first name. |
LastName | string | optional | Updated last name. |
Company | string | optional | Updated company name. |
Email | string | optional | Updated email address. |
Phone | string | optional | Updated phone number. |
Status | string | optional | Updated lead status picklist value. |
OwnerId | string | optional | Salesforce User ID of the new lead owner. |
Rating | string | optional | Updated rating: Hot, Warm, or Cold. |
Description | string | optional | Updated notes or description. |
| ...any Lead field | varies | optional | Any other standard or custom Lead field supported by your org. |
Sample Configuration
{
"Resource": "lead",
"Operation": "update",
"InstanceUrl": "https://myorg.my.salesforce.com",
"AccessToken": "{{credentials.salesforce.accessToken}}",
"LeadId": "{{nodes.GetLead.Id}}",
"Status": "Working - Contacted",
"Description": "Called on {{now}} — expressed interest in Enterprise tier",
"Rating": "Hot"
}
Validation Errors
| Error Code | Condition |
CFG_INVALID | Node settings could not be resolved. |
CFG_MISSING_INSTANCE | InstanceUrl is missing or empty. |
CFG_MISSING_TOKEN | AccessToken is missing or empty. |
VAL_MISSING_FIELD | LeadId is missing or empty. |
UNEXPECTED_ERROR | Unexpected exception during execution. |
Output
Success Port
| Field | Type | Description |
status | string | Always updated on success. |
resource | string | Always lead. |
operation | string | Always update. |
Error Port
| Field | Type | Description |
errorCode | string | Machine-readable error code. |
message | string | Human-readable description of the error. |
resource | string | Always lead. |
operation | string | Always update. |
Sample Output
{
"status": "updated",
"resource": "lead",
"operation": "update"
}
Expression Reference
| Expression | Description |
{{nodes.UpdateLead.status}} | Operation status (updated). |
{{nodes.UpdateLead.errorCode}} | Error code from the error port. |
{{nodes.UpdateLead.message}} | Error message from the error port. |
Node Policies & GuardRails
| Policy | Detail |
| Credential storage | Store AccessToken in BizFirst Credentials Manager. |
| Partial update | Only fields included in the configuration are updated. Omitted fields retain their existing values. |
| Picklist validation | Status and Rating values must be valid picklist entries configured in the target org. |
| Validation rules | Org-level validation rules may reject updates. Always wire the error port. |
| Converted leads | Updating a converted lead (IsConverted = true) may be restricted. Check lead/get first if needed. |
| Sandbox testing | Test updates in a sandbox before applying to production. |
Examples
Update Status After Sales Call
After a call task is completed, update the lead's status and add call notes to Description.
{
"LeadId": "{{nodes.GetLead.Id}}",
"Status": "Working - Contacted",
"Description": "Spoke on {{trigger.callDate}}. Interested in Q3 demo."
}
Enrich Lead from Data Service
An enrichment API returns company employee count and revenue. Map those values back to the lead.
{
"LeadId": "{{trigger.leadId}}",
"NumberOfEmployees": "{{nodes.EnrichAPI.employeeCount}}",
"AnnualRevenue": "{{nodes.EnrichAPI.annualRevenue}}",
"Industry": "{{nodes.EnrichAPI.industry}}"
}
Reassign Leads in Bulk
Use a Loop node over lead/getAll results, calling lead/update per iteration with a new OwnerId.
{
"LeadId": "{{loop.current.Id}}",
"OwnerId": "{{variables.newOwnerSalesforceId}}"
}