Event

trigger.autopilot_event
TriggerCRM & salesconnection requiredruns in-engine

Registers one Autopilot REST Hook per chosen event at publish and starts one run per delivery. Emits {event, contact_id, email, list_id, segment_id, contact}.

Start a run when Autopilot fires a REST Hook (contact added, updated, unsubscribed, or moved in or out of a list or segment).

Connection

Required
Yes — the node will not save without one
Auth type
API key
Providers
Autopilot
Secret shape
the Autopilot API key (sent as the autopilotapikey header)
Resolved by
config.connection_id, else node.connection_id
Note
The same API key the autopilot.* action nodes use — Autopilot has one key per account and no per-scope keys, so a key that can read contacts can register REST Hooks. Publishing also needs MANTLE_APP_PUBLIC_BASE_URL set to a URL Autopilot can reach.

Configuration

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

FieldTypeRequiredDefaultConstraintsExample
events
Which Autopilot events to subscribe to. One REST Hook is registered per event and deleted again when the workflow is unpublished or disabled. Autopilot accepts only the seven listed here.
arrayNo["contact_added"]1–7 characters; array of string—

Example configuration

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

{
  "events": [
    "contact_added"
  ]
}

Output

One shape.

autopilot event

The flattened REST Hook delivery. `contact` holds Autopilot's own field names and its keys depend on the contact, so the shape is open below the declared fields.

Extra keys beyond the ones listed can appear.

FieldTypeExample
event
The Autopilot event key that fired — one of contact_added, contact_updated, contact_unsubscribed, contact_added_to_list, contact_removed_from_list, contact_entered_segment, contact_left_segment. Branch on this when the trigger subscribes to more than one.
stringcontact_added
contact_id
Autopilot's contact id (person_…). Every autopilot.* node accepts it wherever it accepts an email address.
stringperson_ED75BA78-2405-4564-B24C-F2B8F936C7C6
email
The contact's Email, lifted out of the record. Autopilot de-duplicates contacts on this, so it is the value to match on downstream. Empty for a contact created without one.
stringtrgreyson@gmail.com
list_id
The contact list the event is about (contactlist_…). Only contact_added_to_list and contact_removed_from_list carry one; empty on every other event.
string—
segment_id
The segment the event is about. Only contact_entered_segment and contact_left_segment carry one; empty on every other event.
string—
contact
Autopilot's contact record, with its own field names (FirstName, MailingPostalCode, owner_name, unsubscribed, custom…) exactly as sent. Which keys are present depends on what the contact has set, which is why this shape is open.
object—
payload
The delivery body exactly as Autopilot sent it, for anything the fields above do not lift out.
object—
{
  "contact": {
    "Company": "Greyson Designs",
    "Email": "trgreyson@gmail.com",
    "FirstName": "Tom",
    "LastName": "Greyson",
    "Status": "Nurture",
    "custom": {
      "integer--Smog--Level": 4
    },
    "unsubscribed": false
  },
  "contact_id": "person_ED75BA78-2405-4564-B24C-F2B8F936C7C6",
  "email": "trgreyson@gmail.com",
  "event": "contact_added",
  "list_id": "",
  "payload": {
    "contact": {
      "Email": "trgreyson@gmail.com",
      "FirstName": "Tom"
    },
    "contact_id": "person_ED75BA78-2405-4564-B24C-F2B8F936C7C6",
    "event": "contact_added"
  },
  "segment_id": ""
}

Notes

  • Publishing registers the REST Hooks in Autopilot; unpublishing, disabling or archiving deletes them. A workflow that is off is off at Autopilot too.
  • Autopilot signs nothing — it documents no signature header and no shared secret — so the callback URL's unguessable id is the only thing protecting this endpoint. Treat the emitted contact as untrusted input.
  • Autopilot sends no delivery id, so the run's idempotency key is a digest of the delivery body. Two separate events with byte-identical bodies inside 24 hours therefore start one run, not two.
  • A spreadsheet import or a Salesforce sync can fire tens of thousands of contact_added / contact_updated events in a burst — each one starts a run.
  • Autopilot gives up after 5 retries with an incremental backoff and deletes a hook that answers 410 Gone; publish again to re-register one it dropped.

See Event 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.