Function Nodes

Function Nodes

Function nodes perform operations on data, make API requests, or interact with external systems. They are the core building blocks for implementing integration logic in flows.

Many function nodes use Function Types to implement their logic. The configuration and behavior is defined by the corresponding function type.


Data Record Operations

These nodes operate on data records in external applications. Most of them map directly to function types.

Node TypeDescriptionFunction Type
list-data-recordsList all records from a data collectionList Data Records
find-data-record-by-idFind a single record by its IDFind Data Record By ID
search-data-recordsSearch for records using a query stringSearch Data Record
lookup-data-recordLook up a record by field valuesMatch Data Record
create-data-recordCreate a new data recordCreate Data Record
update-data-recordUpdate an existing data recordUpdate Data Record
delete-data-recordDelete a data recordDelete Data Record

Find or Create Data Record

Type: find-or-create-data-record

Attempts to find a record by specified criteria. If no record is found, creates a new one. This is useful for upserting data.

findOrCreate:
  type: find-or-create-data-record
  name: Find or Create Contact
  config:
    dataSource:
      collectionKey: contacts
    lookupFields:
      email:
        $var: input.trigger.email
    createData:
      firstName:
        $var: input.trigger.firstName
      lastName:
        $var: input.trigger.lastName
      email:
        $var: input.trigger.email
    fieldMapping:
      key: contact-mapping

Configuration options:

  • dataSource – Specifies which Data Source to use
  • lookupFields – Fields to match when searching for existing records
  • createData – Data to use when creating a new record
  • fieldMappingField Mapping for the operation

Output:

Returns the found or newly created data record:

{
  id: 'contact-456',
  name: 'Jane Smith',
  fields: {
    firstName: 'Jane',
    lastName: 'Smith',
    email: '[email protected]'
  },
  created: false  // true if record was created, false if found
}

Create Data Link

Type: create-data-link

Creates a Data Link between an object in your app and an object in an external app.

createLink:
  type: create-data-link
  name: Link Contact
  config:
    dataLinkTable: contact-links
    internalId:
      $var: input.trigger.internalContactId
    externalId:
      $var: input.createRecord.id
    direction: both

Configuration options:

  • dataLinkTable – The Data Link table to use (must be created first)
  • internalId – ID of the object in your app
  • externalId – ID of the object in the external app
  • direction – Link direction: export (internal → external), import (external → internal), or both

If a link already exists, it will be updated.

Output:

Returns the created or updated data link:

{
  id: 'link-789',
  internalId: 'internal-contact-123',
  externalId: 'external-contact-456',
  direction: 'both'
}

Find Data Link

Type: find-data-link

Finds a Data Link to get the corresponding object ID on the opposite side.

findLink:
  type: find-data-link
  name: Find Linked Contact
  config:
    dataLinkTable: contact-links
    internalId:
      $var: input.trigger.internalContactId

Configuration options:

  • dataLinkTable – The Data Link table to search
  • internalId – ID to look up (can be internal or external depending on direction)

Output:

Returns the ID of the matching record on the opposite side, or null if no link is found:

{
  externalId: 'external-contact-456'
}
// or null if not found

Delete Data Link

Type: delete-data-link

Deletes an existing Data Link.

deleteLink:
  type: delete-data-link
  name: Unlink Contact
  config:
    dataLinkTable: contact-links
    internalId:
      $var: input.trigger.internalContactId

Configuration options:

  • dataLinkTable – The Data Link table containing the link
  • internalId – ID of the linked object

Output:

Returns confirmation of deletion:

{
  success: true,
  deletedLinkId: 'link-789'
}

HTTP Request Operations

These nodes make HTTP requests to APIs and external services.

Node TypeDescriptionFunction Type
api-request-to-external-appMake authenticated API requests to external appsAPI Request to External App
api-request-to-your-appMake API requests to your internal APIAPI Request to Your App
custom-http-requestMake arbitrary HTTP requests to any endpointHTTP Request

Code Execution

These nodes execute code and run predefined actions.

Node TypeDescriptionFunction Type
run-javascriptExecute custom JavaScript or TypeScript codeJavaScript
run-actionExecute a predefined actionRun Action

Integration Specific Operation

Type: integration-specific-operation

Executes operations that are specific to a particular integration. These are pre-built operations provided by connectors.

specialOp:
  type: integration-specific-operation
  name: Send Email
  config:
    operationKey: send-email
    parameters:
      to:
        $var: input.findContact.fields.email
      subject: Welcome!
      body:
        $var: input.transform.emailBody

Configuration options:

  • operationKey – Key of the integration-specific operation
  • parameters – Parameters required by the operation

The available operations and their parameters depend on the specific connector being used. Refer to connector documentation for details.

Output:

Returns the result of the operation. Structure varies by operation:

{
  success: true,
  messageId: 'msg-123',
  // ... other operation-specific fields
}