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