Add or Update Contact

autopilot.upsert_contact
ActionCRM & salesconnection required

Calls the Autopilot API with the connection's credentials.

Create a contact, or overwrite the existing one with the same email address. Autopilot has no separate update method: fields sent here replace what is stored, and this is also how a contact is added to a list on creation.

Connection

Required
Yes — the node will not save without one
Auth type
API key
Providers
Autopilot
Secret shape
the API key, or {"api_key": "…"}
Config it needs
base_url
Resolved by
config.connection_id, else node.connection_id

Configuration

24 fields, none required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.

FieldTypeRequiredDefaultConstraintsExample
email
Email address Autopilot de-duplicates on; sending an existing one updates that contact instead of creating a second.
stringNo—email formatada@example.com
new_email
New email address for the contact identified by 'email'; this is the only way to change an address without creating a duplicate.
stringNo—email formatada.lovelace@example.com
first_name
The contact's first name.
stringNo———
last_name
The contact's last name.
stringNo———
company
Name of the company the contact works for.
stringNo———
number_of_employees
How many people the contact's company employs.
numberNo—≥ 0—
title
The contact's job title.
stringNo———
phone
The contact's landline or main phone number.
stringNo———
mobile_phone
The contact's mobile phone number.
stringNo———
website
Website URL recorded on the contact.
stringNo—url format—
mailing_street
Street part of the contact's mailing address.
stringNo———
mailing_city
City part of the contact's mailing address.
stringNo———
mailing_state
State or province part of the contact's mailing address.
stringNo———
mailing_postal_code
Postal or ZIP code of the contact's address.
stringNo———
mailing_country
Country part of the contact's mailing address.
stringNo———
owner_name
Name of the Autopilot user who owns this contact.
stringNo———
lead_source
Where this lead came from, as recorded in Autopilot.
stringNo———
status
The contact status recorded in Autopilot.
stringNo———
linkedin
The contact's LinkedIn profile URL.
stringNo———
list_id
Contact list to add this contact to as part of the same call; list ids always start with 'contactlist_'.
stringNo——contactlist_06444749-9C0F-4894-9A23-D6872F9B6EF8
unsubscribed
Set true to unsubscribe the contact, false to re-subscribe them.
booleanNo———
notify
Set false to skip the contact_added / contact_updated REST hooks Autopilot fires for this change.
booleanNo———
custom
Custom fields as a JSON object; names are typed and double-dashed, for example {"string--Plan--Tier": "pro"}.
objectNo——{"string--Plan--Tier":"pro"}
fields
Any further standard Autopilot contact fields, sent verbatim under their own names, for example {"Industry": "SaaS"}.
objectNo——{"Industry":"SaaS"}
  • At least one of email, first_name, last_name, fields must be set.

Example configuration

Every value below is the contract’s own example or default — nothing invented.

{
  "custom": {
    "string--Plan--Tier": "pro"
  },
  "email": "ada@example.com",
  "fields": {
    "Industry": "SaaS"
  },
  "list_id": "contactlist_06444749-9C0F-4894-9A23-D6872F9B6EF8",
  "new_email": "ada.lovelace@example.com"
}

Output

One shape.

result

FieldTypeExample
contact_id
Autopilot's id for the contact it created or updated.
string—
{
  "contact_id": ""
}

See Add or Update Contact run in a workflow.

In a technical demo we add the Autopilot connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.