Portal Community

contact/create

Create a new Contact record in Salesforce, optionally linked to an Account.

When to Use

Configuration

Connection

FieldTypeRequiredDescription
InstanceUrlstringrequiredSalesforce org URL.
AccessTokenstringrequiredValid OAuth2 access token.

Operation Fields

FieldTypeRequiredDescription
LastNamestringrequiredContact's last name.
FirstNamestringoptionalContact's first name.
AccountIdstringoptionalSalesforce Account ID to link this contact to.
EmailstringoptionalEmail address.
PhonestringoptionalOffice phone number.
MobilePhonestringoptionalMobile phone number.
TitlestringoptionalJob title.
DepartmentstringoptionalDepartment within the company.
MailingStreetstringoptionalMailing street address.
MailingCitystringoptionalMailing city.
MailingStatestringoptionalMailing state or province.
MailingPostalCodestringoptionalMailing postal code.
MailingCountrystringoptionalMailing country.
DescriptionstringoptionalFree-text notes.
OwnerIdstringoptionalSalesforce User ID to assign as contact owner.

Sample Configuration

{
  "Resource": "contact",
  "Operation": "create",
  "InstanceUrl": "https://myorg.my.salesforce.com",
  "AccessToken": "{{credentials.salesforce.accessToken}}",
  "FirstName": "Alex",
  "LastName": "Rivera",
  "AccountId": "{{nodes.CreateAccount.accountId}}",
  "Email": "alex.rivera@acme.com",
  "Phone": "+1-555-0300",
  "Title": "Director of Procurement",
  "Department": "Finance"
}

Validation Errors

Error CodeCondition
CFG_MISSING_INSTANCEInstanceUrl is missing.
CFG_MISSING_TOKENAccessToken is missing.
VAL_MISSING_FIELDLastName is missing.
UNEXPECTED_ERRORUnexpected exception during execution.

Output

Success Port

FieldTypeDescription
contactIdstring18-character Salesforce Contact ID.
createdAtstringISO 8601 creation timestamp.
statusstringAlways created.
resourcestringAlways contact.
operationstringAlways create.

Error Port

FieldTypeDescription
errorCodestringMachine-readable error code.
messagestringHuman-readable error description.

Sample Output

{
  "contactId": "0035g000006LmnOPQ",
  "createdAt": "2026-05-26T11:30:00.000Z",
  "status": "created",
  "resource": "contact",
  "operation": "create"
}

Expression Reference

ExpressionDescription
{{nodes.CreateContact.contactId}}The new Contact's Salesforce ID.
{{nodes.CreateContact.createdAt}}Creation timestamp.
{{nodes.CreateContact.errorCode}}Error code from error port.

Node Policies & GuardRails

PolicyDetail
Credential storageStore AccessToken in BizFirst Credentials Manager.
Account linkageAlways provide AccountId when the contact belongs to a known account. Orphaned contacts (no account) are valid but harder to manage at scale.
Duplicate preventionCheck for existing contacts by email via SOQL before creating to avoid duplicates.
Error port wiringAlways wire the error port. Duplicate rules and validation rules can block creation.
Sandbox testingTest in sandbox before running in production.

Examples

Create Contact from Form Submission

{
  "FirstName": "{{trigger.firstName}}",
  "LastName": "{{trigger.lastName}}",
  "Email": "{{trigger.email}}",
  "AccountId": "{{nodes.FindAccount.records[0].Id}}"
}

Add Stakeholder During Account Expansion

{
  "FirstName": "{{trigger.contactFirst}}",
  "LastName": "{{trigger.contactLast}}",
  "Title": "{{trigger.title}}",
  "AccountId": "{{trigger.accountId}}",
  "Department": "{{trigger.department}}"
}

Sync Confirmed Webinar Attendees

// Loop over attendee list
{
  "FirstName": "{{loop.current.firstName}}",
  "LastName": "{{loop.current.lastName}}",
  "Email": "{{loop.current.email}}",
  "AccountId": "{{loop.current.resolvedAccountId}}",
  "Description": "Webinar: {{variables.webinarName}} on {{variables.webinarDate}}"
}