Reference · Tools

Autopilot

Manage contacts, lists, and customer journeys in Autopilot HQ marketing automation platform.

Action Marketing v1

The Autopilot node connects your BusyBot workflows directly to Autopilot HQ, letting you create or update contacts, manage lists, and drop contacts into journeys via a trigger — all without leaving your automation. A common use case is syncing new form submissions as contacts and immediately enrolling them in an onboarding journey.

Node type
Action
Parameters
20
Outputs
Output, Error
Credentials
Autopilot API

Autopilot

Manage contacts, lists, and journeys in Autopilot HQ.

Overview

Autopilot is a marketing automation platform for visual customer journeys, email marketing and contact management. This node gives you the contact side of that platform from a workflow: create or update a contact, read one, list many, or delete one; create and list contact lists; add, remove and check contacts on a list; and drop a contact into a journey by its trigger. Contacts can be addressed by either their Autopilot contact ID or their email address.

Category: Marketing
Tool Name: autopilot
Version: 1

Appearance: Icon: lucide-Bot | Color: #6ad178

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Autopilot API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Contactcontact
Contact JourneycontactJourney
Contact ListcontactList
Listlist

Operations

The operations available depend on the resource you select.

Contact

OperationValueDescription
Create or UpdateupsertCreate a new contact, or update the current one if it already exists (upsert)
DeletedeleteDelete a contact
GetgetGet a contact
Get ManygetAllGet many contacts

Contact Journey

OperationValueDescription
AddaddAdd a contact to a journey

Contact List

OperationValueDescription
AddaddAdd contact to list
ExistexistCheck if contact is on list
Get ManygetAllGet many contacts from a list
RemoveremoveRemove a contact from a list

List

OperationValueDescription
CreatecreateCreate a list
Get ManygetAllGet many lists

Parameters

Contact: Create or Update

ParameterTypeRequiredDefaultDescription
EmailstringYesEmail address of the contact. Supports expressions.
Additional FieldscollectionNo{}Optional contact fields to set on the contact.
— CompanystringNoContact’s company name.
— Custom FieldsfixedCollectionNo{}Custom contact fields. You can add more than one.
— — KeystringNoCustom field key in the format “FieldName-fieldType” (e.g., “My Field-string”). Get available fields from Autopilot Settings > Custom Fields.
— — ValuestringNoValue for the custom field.
— FaxstringNoContact’s fax number.
— First NamestringNoContact’s first name.
— IndustrystringNoIndustry the contact works in.
— Last NamestringNoContact’s last name.
— Lead SourcestringNoWhere the lead came from.
— LinkedIn URLstringNoContact’s LinkedIn profile URL.
— List ID (autopilotList)stringNoList ID to which this contact will be added on creation. Find the List ID in Autopilot under Settings > Lists.
— Mailing CitystringNoCity of the contact’s mailing address.
— Mailing CountrystringNoCountry of the contact’s mailing address.
— Mailing Postal CodestringNoPostal code of the contact’s mailing address.
— Mailing StatestringNoState or region of the contact’s mailing address.
— Mailing StreetstringNoStreet of the contact’s mailing address.
— Mobile PhonestringNoContact’s mobile phone number.
— New EmailstringNoIf provided, will change the email address of the contact identified by the Email field.
— NotifybooleanNotrueWhether Autopilot should fire webhook notifications for contact_added/contact_updated events. Disable to skip notifications.
— Number of EmployeesnumberNo0Number of employees at the contact’s company.
— Owner NamestringNoName of the contact’s owner in Autopilot.
— PhonestringNoContact’s phone number.
— SalutationstringNoSalutation to address the contact by.
— Session IDstringNoUsed to associate a contact with a session.
— StatusstringNoContact’s status.
— SubscribebooleanNofalseWhether to subscribe or un-subscribe a contact.
— TitlestringNoContact’s job title.
— Website URLstringNoContact’s website URL.

Contact: Delete

ParameterTypeRequiredDefaultDescription
Contact IDstringYesContact ID or email address. Supports expressions.

Contact: Get

ParameterTypeRequiredDefaultDescription
Contact IDstringYesContact ID or email address. Supports expressions.

Contact: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Max number of results to return. (shown when Return All is false)

Contact Journey: Add

ParameterTypeRequiredDefaultDescription
Trigger IDstringYesJourney trigger ID. Find available triggers via the Autopilot API (GET /triggers) or in the Autopilot dashboard under Journeys.
Contact IDstringYesContact ID or email address. Supports expressions.

Contact List: Add

ParameterTypeRequiredDefaultDescription
List ID (listId)stringYesList ID. Find available lists via the Autopilot API (GET /lists) or in the Autopilot dashboard under Settings > Lists.
Contact IDstringYesContact ID or email address. Supports expressions.

Contact List: Exist

ParameterTypeRequiredDefaultDescription
List ID (listId)stringYesList ID. Find available lists via the Autopilot API (GET /lists) or in the Autopilot dashboard under Settings > Lists.
Contact IDstringYesContact ID or email address. Supports expressions.

Contact List: Get Many

ParameterTypeRequiredDefaultDescription
List ID (listId)stringYesList ID. Find available lists via the Autopilot API (GET /lists) or in the Autopilot dashboard under Settings > Lists.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Max number of results to return. (shown when Return All is false)

Contact List: Remove

ParameterTypeRequiredDefaultDescription
List ID (listId)stringYesList ID. Find available lists via the Autopilot API (GET /lists) or in the Autopilot dashboard under Settings > Lists.
Contact IDstringYesContact ID or email address. Supports expressions.

List: Create

ParameterTypeRequiredDefaultDescription
NamestringYesName of the list to create. Supports expressions.

List: Get Many

ParameterTypeRequiredDefaultDescription
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo100Max number of results to return. (shown when Return All is false)

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The result is merged onto the incoming item JSON — the fields you already had stay on the item, and any field of the same name is overwritten by the result. Binary data on the input item is forwarded unchanged.

Single-record operations produce one output item per input item. The three Get Many operations fan out: they emit one output item per record returned, so an input item that lists 100 contacts leaves 100 items on the Output port. Use Return All and Limit to control how many.

Resource: OperationWhat lands on the item
contact: upsertThe contact record returned by Autopilot.
contact: deletesuccess: true
contact: getThe contact record returned by Autopilot.
contact: getAllOne item per contact.
contactJourney: addsuccess: true
contactList: addsuccess: true
contactList: existexist: true when the contact is on the list, exist: false when the lookup does not succeed.
contactList: getAllOne item per contact on the list.
contactList: removesuccess: true
list: createThe list record returned by Autopilot.
list: getAllOne item per list.

A membership check therefore leaves an item shaped like this, with the upstream fields still in place:

{
  "email": "jane@example.com",
  "exist": true
}

The contact and list records carry whatever fields Autopilot stores for them. A few Additional Fields are sent under a different API name — New Email as _NewEmail, List ID as _autopilot_list, Session ID as _autopilot_session_id, and Custom Fields under custom — so do not expect those back on the item under the names you set them with. Reference the result downstream by expression, for example {{ $json.exist }}.

Usage Examples

  • Create or update a contact in Autopilot by email address
  • Get all contacts from an Autopilot list
  • Add a contact to a journey in Autopilot
  • Check if a contact exists on a specific Autopilot list
  • Create a new contact list in Autopilot

Example Configuration

Create or update a contact from an incoming item, including one custom field:

{
  "type": "autopilot",
  "parameters": {
    "resource": "contact",
    "operation": "upsert",
    "email": "{{ $json.email }}",
    "additionalFields": {
      "FirstName": "{{ $json.firstName }}",
      "LastName": "{{ $json.lastName }}",
      "Company": "{{ $json.company }}",
      "Title": "Marketing Director",
      "Status": "Qualified Lead",
      "notify": true,
      "customFieldsUi": {
        "customFieldsValues": [
          {
            "key": "Lead Score-integer",
            "value": "{{ $json.score }}"
          }
        ]
      }
    }
  }
}

Add that contact to a nurturing journey by its trigger ID:

{
  "type": "autopilot",
  "parameters": {
    "resource": "contactJourney",
    "operation": "add",
    "triggerId": "0001",
    "contactId": "{{ $json.email }}"
  }
}

Check whether a contact is already on the VIP list before doing anything else:

{
  "type": "autopilot",
  "parameters": {
    "resource": "contactList",
    "operation": "exist",
    "listId": "contactlist_01ABCDEF",
    "contactId": "{{ $json.email }}"
  }
}

Read the first 100 contacts on a list, one output item per contact:

{
  "type": "autopilot",
  "parameters": {
    "resource": "contactList",
    "operation": "getAll",
    "listId": "contactlist_01ABCDEF",
    "returnAll": false,
    "limit": 100
  }
}

Create a list named after a field on the item:

{
  "type": "autopilot",
  "parameters": {
    "resource": "list",
    "operation": "create",
    "name": "Leads — {{ $json.campaign }}"
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Use Autopilot to manage contacts, lists, and customer journeys in the Autopilot HQ marketing automation platform.

Frequently asked questions

How do I authenticate with Autopilot HQ?

This node uses the Autopilot API credential type (autopilotApi). You'll need to create that credential in BusyBot using your Autopilot HQ API key before the node will connect. The credential is not shared with other marketing nodes, so you'll set it up specifically for this one.

Can I look up a contact by email address instead of an internal ID?

Yes. The node supports addressing contacts by either their Autopilot contact ID or their email address. This means you can feed an email from an upstream step — such as a form submission or CRM record — directly into the node without first fetching the Autopilot-specific ID.

What exactly can this node do with contact lists?

You can create a new list, retrieve all existing lists, add a contact to a list, remove a contact from a list, and check whether a specific contact is already on a list. That last operation is useful for branching logic — for example, skipping contacts who are already enrolled in a segment.

How does triggering a customer journey work from this node?

The node can enroll a contact into a journey by referencing the journey's trigger. You supply the contact (by ID or email) and the target trigger, and Autopilot will start that contact on the journey from that entry point. You need to know your trigger identifier in Autopilot HQ ahead of time — the node does not expose a way to list available journeys.

What happens if the Autopilot API call fails — where does the error go?

This node has two distinct outputs: Output and Error. Successful operations route through Output; failures route through Error. This lets you wire a separate branch in your workflow to handle API errors — logging them, sending an alert, or retrying — without halting the entire flow.

Build with the Autopilot node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Autopilot API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.