Skip to content

CRM ​

Interact with CRM to manage workspaces, objects, records, and more.

Triggers ​

Events from this node that can start a flow. Add one from Choose a trigger.

Record Created ​

When a record is created

Settings

No settings.

Output

Later steps use this data through Current Trigger in the $ picker. For example, changes is $trigger.output.changes.

json
{
  "changes": "string",
  "objectId": "string",
  "orgId": "string",
  "recordId": "string",
  "sentAt": "string",
  "user": "string",
  "workspaceId": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
changesAny
objectIdTextID of the object
orgIdTextID of the organization
recordIdTextID of the record
sentAtTextTimestamp when the event was sent
userAny
user.emailTextEmail of the user
user.idTextUnique identifier for the user
user.nameTextName of the user
user.pictureTextURL to the user's profile picture
workspaceIdTextID of the workspace

Record Updated ​

When a record is updated

Settings

No settings.

Output

Later steps use this data through Current Trigger in the $ picker. For example, changes is $trigger.output.changes.

json
{
  "changes": "string",
  "objectId": "string",
  "orgId": "string",
  "recordId": "string",
  "sentAt": "string",
  "user": "string",
  "workspaceId": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
changesAny
objectIdTextID of the object
orgIdTextID of the organization
recordIdTextID of the record
sentAtTextTimestamp when the event was sent
userAny
user.emailTextEmail of the user
user.idTextUnique identifier for the user
user.nameTextName of the user
user.pictureTextURL to the user's profile picture
workspaceIdTextID of the workspace

Record Deleted ​

When a record is deleted

Settings

No settings.

Output

Later steps use this data through Current Trigger in the $ picker. For example, changes is $trigger.output.changes.

json
{
  "changes": "string",
  "objectId": "string",
  "orgId": "string",
  "recordId": "string",
  "sentAt": "string",
  "user": "string",
  "workspaceId": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
changesAny
objectIdTextID of the object
orgIdTextID of the organization
recordIdTextID of the record
sentAtTextTimestamp when the event was sent
userAny
user.emailTextEmail of the user
user.idTextUnique identifier for the user
user.nameTextName of the user
user.pictureTextURL to the user's profile picture
workspaceIdTextID of the workspace

Flow Triggered by Custom Action Button ​

Triggered when a user clicks a Custom Action Button in the CRM to start a flow.

Settings

No settings.

Output

Later steps use this data through Current Trigger in the $ picker. For example, changes is $trigger.output.changes.

json
{
  "changes": "string",
  "objectId": "string",
  "orgId": "string",
  "recordId": "string",
  "sentAt": "string",
  "user": "string",
  "workspaceId": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
changesAny
objectIdTextID of the object
orgIdTextID of the organization
recordIdTextID of the record
sentAtTextTimestamp when the event was sent
userAny
user.emailTextEmail of the user
user.idTextUnique identifier for the user
user.nameTextName of the user
user.pictureTextURL to the user's profile picture
workspaceIdTextID of the workspace

Attachment Created ​

When a record attachment is created

Settings

No settings.

Output

Later steps use this data through Current Trigger in the $ picker. For example, changes is $trigger.output.changes.

json
{
  "changes": "string",
  "objectId": "string",
  "orgId": "string",
  "recordId": "string",
  "sentAt": "string",
  "user": "string",
  "workspaceId": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
changesAny
objectIdTextID of the object
orgIdTextID of the organization
recordIdTextID of the record
sentAtTextTimestamp when the event was sent
userAny
user.emailTextEmail of the user
user.idTextUnique identifier for the user
user.nameTextName of the user
user.pictureTextURL to the user's profile picture
workspaceIdTextID of the workspace

Attachment Deleted ​

When a record attachment is deleted

Settings

No settings.

Output

Later steps use this data through Current Trigger in the $ picker. For example, changes is $trigger.output.changes.

json
{
  "changes": "string",
  "objectId": "string",
  "orgId": "string",
  "recordId": "string",
  "sentAt": "string",
  "user": "string",
  "workspaceId": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
changesAny
objectIdTextID of the object
orgIdTextID of the organization
recordIdTextID of the record
sentAtTextTimestamp when the event was sent
userAny
user.emailTextEmail of the user
user.idTextUnique identifier for the user
user.nameTextName of the user
user.pictureTextURL to the user's profile picture
workspaceIdTextID of the workspace

Attachment Updated ​

When a record attachment is updated

Settings

No settings.

Output

Later steps use this data through Current Trigger in the $ picker. For example, changes is $trigger.output.changes.

json
{
  "changes": "string",
  "objectId": "string",
  "orgId": "string",
  "recordId": "string",
  "sentAt": "string",
  "user": "string",
  "workspaceId": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
changesAny
objectIdTextID of the object
orgIdTextID of the organization
recordIdTextID of the record
sentAtTextTimestamp when the event was sent
userAny
user.emailTextEmail of the user
user.idTextUnique identifier for the user
user.nameTextName of the user
user.pictureTextURL to the user's profile picture
workspaceIdTextID of the workspace

Actions ​

Steps this node can perform. Add one from Add a step, then pick the action.

List Workspaces ​

Get a list of all workspaces

Settings

No settings.

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.activeYes / NoWhether the workspace is active
data.createdAtTextTimestamp when the workspace was created
data.deletedAtTextTimestamp when the workspace was deleted, null if not deleted
data.descriptionTextDescription of the workspace
data.idTextUnique identifier for the workspace
data.nameTextName of the workspace
data.orgIdText
data.updatedAtTextTimestamp when the workspace was last updated

Get Workspace ​

Get a workspace by ID

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace to retrieve

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.activeYes / NoWhether the workspace is active
data.createdAtTextTimestamp when the workspace was created
data.deletedAtTextTimestamp when the workspace was deleted, null if not deleted
data.descriptionTextDescription of the workspace
data.idTextUnique identifier for the workspace
data.nameTextName of the workspace
data.orgIdText
data.updatedAtTextTimestamp when the workspace was last updated

List Objects ​

Get a list of all objects in a workspace

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace to list objects from

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.childObjects[]ListList of child object identifiers
data.createdAtTextTimestamp when the object was created
data.descriptionTextDescription of the object
data.displaySettingsObjectVisual display configuration for the object
data.fields[]ListList of field definitions for the object
data.fields[].descriptionTextDescription of the field's purpose
data.fields[].idTextUnique identifier for the field
data.fields[].isProtectedYes / NoWhether the field is protected from modifications
data.fields[].nameTextDisplay name of the field
data.fields[].optionsObjectConfiguration options specific to the field type
data.fields[].requiredYes / NoWhether the field is required
data.fields[].typeTextType of the field (e.g., text, number, currency, etc.)
data.fields[].uniquedYes / NoWhether the field is uniqued
data.hasAvatarYes / NoWhether the object has an avatar
data.iconTextIcon identifier for the object
data.idTextUnique identifier for the object
data.messagingObjectMessaging configuration options
data.messaging.emailYes / No
data.messaging.lineYes / No
data.messaging.smsYes / No
data.nameObjectObject name in singular and plural forms
data.name.pluralTextPlural form of the object name
data.name.singularTextSingular form of the object name
data.orgIdTextID of the organization this object belongs to
data.profileSettings[]ListProfile settings for the object
data.profileSettings[].enabledYes / NoWhether the profile setting is enabled
data.profileSettings[].typeTextType of profile setting
data.referencesObjectMap of fields to references from other objects
data.updatedAtTextTimestamp when the object was last updated
data.viewGroups[]ListList of view group configurations for the object
data.views[]ListList of view configurations for the object
data.views[].createdAtTextTimestamp when the view was created
data.views[].createdByTextID of the user who created the view
data.views[].descriptionTextDescription of the view
data.views[].detailFieldOrder[]ListOrdered list of field IDs for the detail view
data.views[].fieldOrder[]ListOrdered list of field IDs defining their display order
data.views[].fields[]ListList of field configurations in the view
data.views[].filtersObjectFilter conditions applied to the view
data.views[].iconTextIcon identifier for the view
data.views[].idTextUnique identifier for the view
data.views[].nameTextName of the view
data.views[].objectIdTextID of the object the view belongs to
data.views[].orgIdTextID of the organization this view belongs to
data.views[].rowHeightTextHeight of rows in the view
data.views[].sort[]ListSort configurations for the view
data.views[].textSearchTextText search query applied to the view
data.views[].typeTextType of view (e.g., grid, kanban, etc.)
data.views[].updatedAtTextTimestamp when the view was last updated
data.workspaceIdTextID of the workspace this object belongs to

Get Object ​

Get an object by ID

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace to list objects from
Object IDTextYesID of the object to retrieve

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.childObjects[]ListList of child object identifiers
data.createdAtTextTimestamp when the object was created
data.descriptionTextDescription of the object
data.displaySettingsObjectVisual display configuration for the object
data.fields[]ListList of field definitions for the object
data.fields[].descriptionTextDescription of the field's purpose
data.fields[].idTextUnique identifier for the field
data.fields[].isProtectedYes / NoWhether the field is protected from modifications
data.fields[].nameTextDisplay name of the field
data.fields[].optionsObjectConfiguration options specific to the field type
data.fields[].requiredYes / NoWhether the field is required
data.fields[].typeTextType of the field (e.g., text, number, currency, etc.)
data.fields[].uniquedYes / NoWhether the field is uniqued
data.hasAvatarYes / NoWhether the object has an avatar
data.iconTextIcon identifier for the object
data.idTextUnique identifier for the object
data.messagingObjectMessaging configuration options
data.messaging.emailYes / No
data.messaging.lineYes / No
data.messaging.smsYes / No
data.nameObjectObject name in singular and plural forms
data.name.pluralTextPlural form of the object name
data.name.singularTextSingular form of the object name
data.orgIdTextID of the organization this object belongs to
data.profileSettings[]ListProfile settings for the object
data.profileSettings[].enabledYes / NoWhether the profile setting is enabled
data.profileSettings[].typeTextType of profile setting
data.referencesObjectMap of fields to references from other objects
data.updatedAtTextTimestamp when the object was last updated
data.viewGroups[]ListList of view group configurations for the object
data.views[]ListList of view configurations for the object
data.views[].createdAtTextTimestamp when the view was created
data.views[].createdByTextID of the user who created the view
data.views[].descriptionTextDescription of the view
data.views[].detailFieldOrder[]ListOrdered list of field IDs for the detail view
data.views[].fieldOrder[]ListOrdered list of field IDs defining their display order
data.views[].fields[]ListList of field configurations in the view
data.views[].filtersObjectFilter conditions applied to the view
data.views[].iconTextIcon identifier for the view
data.views[].idTextUnique identifier for the view
data.views[].nameTextName of the view
data.views[].objectIdTextID of the object the view belongs to
data.views[].orgIdTextID of the organization this view belongs to
data.views[].rowHeightTextHeight of rows in the view
data.views[].sort[]ListSort configurations for the view
data.views[].textSearchTextText search query applied to the view
data.views[].typeTextType of view (e.g., grid, kanban, etc.)
data.views[].updatedAtTextTimestamp when the view was last updated
data.workspaceIdTextID of the workspace this object belongs to

List Views ​

Get a list of all views of an object in a workspace

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace to list objects from
Object IDTextYesID of the object to list views from

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.createdAtTextTimestamp when the view was created
data.createdByTextID of the user who created the view
data.descriptionTextDescription of the view
data.detailFieldOrder[]ListOrdered list of field IDs for the detail view
data.fieldOrder[]ListOrdered list of field IDs defining their display order
data.fields[]ListList of field configurations in the view
data.filtersObjectFilter conditions applied to the view
data.iconTextIcon identifier for the view
data.idTextUnique identifier for the view
data.nameTextName of the view
data.objectIdTextID of the object the view belongs to
data.orgIdTextID of the organization this view belongs to
data.rowHeightTextHeight of rows in the view
data.sort[]ListSort configurations for the view
data.textSearchTextText search query applied to the view
data.typeTextType of view (e.g., grid, kanban, etc.)
data.updatedAtTextTimestamp when the view was last updated

Get View ​

Get a view by ID

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object containing the view
View IDTextYesID of the view to retrieve

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.createdAtTextTimestamp when the view was created
data.createdByTextID of the user who created the view
data.descriptionTextDescription of the view
data.detailFieldOrder[]ListOrdered list of field IDs for the detail view
data.fieldOrder[]ListOrdered list of field IDs defining their display order
data.fields[]ListList of field configurations in the view
data.filtersObjectFilter conditions applied to the view
data.iconTextIcon identifier for the view
data.idTextUnique identifier for the view
data.nameTextName of the view
data.objectIdTextID of the object the view belongs to
data.orgIdTextID of the organization this view belongs to
data.rowHeightTextHeight of rows in the view
data.sort[]ListSort configurations for the view
data.textSearchTextText search query applied to the view
data.typeTextType of view (e.g., grid, kanban, etc.)
data.updatedAtTextTimestamp when the view was last updated

Create Field ​

Create a new field

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object containing the view
DataObjectYesField definition data

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.descriptionTextDescription of the field's purpose
data.idTextUnique identifier for the field
data.isProtectedYes / NoWhether the field is protected from modifications
data.nameTextDisplay name of the field
data.optionsObjectConfiguration options specific to the field type
data.requiredYes / NoWhether the field is required
data.typeTextType of the field (e.g., text, number, currency, etc.)
data.uniquedYes / NoWhether the field is uniqued

Update Field ​

Update an existing field

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object containing the view
Field IDTextYesID of the field to update
DataObjectYesField update data

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.descriptionTextDescription of the field's purpose
data.idTextUnique identifier for the field
data.isProtectedYes / NoWhether the field is protected from modifications
data.nameTextDisplay name of the field
data.optionsObjectConfiguration options specific to the field type
data.requiredYes / NoWhether the field is required
data.typeTextType of the field (e.g., text, number, currency, etc.)
data.uniquedYes / NoWhether the field is uniqued

Delete Field ​

Delete a field

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object
Field IDTextYesID of the field to delete

Output

No documented output fields.

List Records ​

Get a list of all records of an object in a workspace

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace the record belongs to
Object IDTextID of the object to list records from. Either objectId or viewId must be provided. Use this when you need filtering and sorting capabilities.
View IDTextID of the view to list records from. Either objectId or viewId must be provided. Note: filters and sort parameters are ignored when using viewId.
FiltersObjectFilter conditions to apply to the record list. Only supported when using objectId (ignored when using viewId).
LimitNumberMaximum number of records to return. Use a number or reference another node (e.g. Loop node) for dynamic pagination.
OffsetNumberNumber of records to skip. Use a number or reference another node (e.g. $.loopNodeId.output.currentValue for pagination 0, 2, 4, ...).
SortListSort configurations for the record list. Only supported when using objectId (ignored when using viewId).

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.autoIdNumberAutomatically generated sequential ID for the record
data.createdAtTextTimestamp when the record was created
data.createdByObjectUser who created the record
data.createdBy.emailTextEmail of the user
data.createdBy.idTextUnique identifier for the user
data.createdBy.nameTextName of the user
data.createdBy.pictureTextURL to the user's profile picture
data.idTextUnique identifier for the record
data.updatedAtTextTimestamp when the record was last updated
data.updatedByObjectUser who last updated the record
data.updatedBy.emailTextEmail of the user
data.updatedBy.idTextUnique identifier for the user
data.updatedBy.nameTextName of the user
data.updatedBy.pictureTextURL to the user's profile picture

Get Record ​

Get a record by ID

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object
Record IDTextYesID of the record

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.autoIdNumberAutomatically generated sequential ID for the record
data.createdAtTextTimestamp when the record was created
data.createdByObjectUser who created the record
data.createdBy.emailTextEmail of the user
data.createdBy.idTextUnique identifier for the user
data.createdBy.nameTextName of the user
data.createdBy.pictureTextURL to the user's profile picture
data.idTextUnique identifier for the record
data.updatedAtTextTimestamp when the record was last updated
data.updatedByObjectUser who last updated the record
data.updatedBy.emailTextEmail of the user
data.updatedBy.idTextUnique identifier for the user
data.updatedBy.nameTextName of the user
data.updatedBy.pictureTextURL to the user's profile picture

Create Record ​

Create a new record

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object
Enable Dynamic OptionsYes / NoWhen enabled, the Data field loads select and multiSelect value choices dynamically from CRM using dynamicOption=true. Disable to fetch field keys without dynamic choices.
Default: false
DataKey–value pairsYesRecord data as { fieldId: value }. For 'select' / 'multiSelect' fields you may pass the value in three forms: (1) bare id(s) or unique label(s) - string for select, array for multiSelect - resolved id-first, then by unique label; (2) explicit ids - { "id": "abc" } or { "ids": ["a", "b"] } - strict, never falls back to labels; (3) explicit labels - { "label": "My Label" } or { "labels": ["L1", "L2"] } - resolved client-side to ids and rejected when a label is unknown or non-unique. All other field types accept their natural JSON value.

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.autoIdNumberAutomatically generated sequential ID for the record
data.createdAtTextTimestamp when the record was created
data.createdByObjectUser who created the record
data.createdBy.emailTextEmail of the user
data.createdBy.idTextUnique identifier for the user
data.createdBy.nameTextName of the user
data.createdBy.pictureTextURL to the user's profile picture
data.idTextUnique identifier for the record
data.updatedAtTextTimestamp when the record was last updated
data.updatedByObjectUser who last updated the record
data.updatedBy.emailTextEmail of the user
data.updatedBy.idTextUnique identifier for the user
data.updatedBy.nameTextName of the user
data.updatedBy.pictureTextURL to the user's profile picture

Update Record ​

Update an existing record

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object
Record IDTextYesID of the record
Enable Dynamic OptionsYes / NoWhen enabled, the Data field loads select and multiSelect value choices dynamically from CRM using dynamicOption=true. Disable to fetch field keys without dynamic choices.
Default: false
DataKey–value pairsYesRecord data as { fieldId: value } with the fields to update. For 'select' / 'multiSelect' fields you may pass the value in three forms: (1) bare id(s) or unique label(s) - string for select, array for multiSelect - resolved id-first, then by unique label; (2) explicit ids - { "id": "abc" } or { "ids": ["a", "b"] } - strict, never falls back to labels; (3) explicit labels - { "label": "My Label" } or { "labels": ["L1", "L2"] } - resolved client-side to ids and rejected when a label is unknown or non-unique. All other field types accept their natural JSON value.

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.autoIdNumberAutomatically generated sequential ID for the record
data.createdAtTextTimestamp when the record was created
data.createdByObjectUser who created the record
data.createdBy.emailTextEmail of the user
data.createdBy.idTextUnique identifier for the user
data.createdBy.nameTextName of the user
data.createdBy.pictureTextURL to the user's profile picture
data.idTextUnique identifier for the record
data.updatedAtTextTimestamp when the record was last updated
data.updatedByObjectUser who last updated the record
data.updatedBy.emailTextEmail of the user
data.updatedBy.idTextUnique identifier for the user
data.updatedBy.nameTextName of the user
data.updatedBy.pictureTextURL to the user's profile picture

Upsert Record ​

Create or update a record in one call: amends the record matching Filter, or creates a new one when nothing matches

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object
Enable Dynamic OptionsYes / NoWhen enabled, the Data field loads select and multiSelect value choices dynamically from CRM using dynamicOption=true. Disable to fetch field keys without dynamic choices.
Default: false
FilterKey–value pairsYesEquality match only. Every row is combined with AND; OR is not supported, so put a Path node before this node to branch when you need OR. Select a LINE, email, or phone field; datetime filters are not supported yet. Also set the same field in Data, because CRM does not copy filter values into a record it creates and the next run would insert a duplicate. If more than 10 records match, CRM rejects the request and writes nothing. When no record matches, CRM creates one from Data. Filter values are sent as stored values without label resolution, and the filter must not be empty.
DataKey–value pairsYesRecord data as { fieldId: value } to write. For 'select' / 'multiSelect' fields you may pass the value in three forms: (1) bare id(s) or unique label(s) - string for select, array for multiSelect - resolved id-first, then by unique label; (2) explicit ids - { "id": "abc" } or { "ids": ["a", "b"] } - strict, never falls back to labels; (3) explicit labels - { "label": "My Label" } or { "labels": ["L1", "L2"] } - resolved client-side to ids and rejected when a label is unknown or non-unique. All other field types accept their natural JSON value.

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.createdYes / NoTrue when CRM inserted a new record because Filter matched nothing. False when existing records were amended. Use this flag to tell insert from update.
data.matchedCountNumberNumber of existing records that matched Filter before the write
data.records[]ListWritten records (created or updated)
data.records[].autoIdNumberAutomatically generated sequential ID for the record
data.records[].createdAtTextTimestamp when the record was created
data.records[].createdByObjectUser who created the record
data.records[].createdBy.emailTextEmail of the user
data.records[].createdBy.idTextUnique identifier for the user
data.records[].createdBy.nameTextName of the user
data.records[].createdBy.pictureTextURL to the user's profile picture
data.records[].idTextUnique identifier for the record
data.records[].updatedAtTextTimestamp when the record was last updated
data.records[].updatedByObjectUser who last updated the record
data.records[].updatedBy.emailTextEmail of the user
data.records[].updatedBy.idTextUnique identifier for the user
data.records[].updatedBy.nameTextName of the user
data.records[].updatedBy.pictureTextURL to the user's profile picture
data.updatedCountNumberNumber of existing records CRM reports as updated. TODO(crm): on insert this is currently 1 even when created is true and matchedCount is 0; trust created until CRM returns insertedCount and sets this to 0 on create.

Delete Record ​

Delete a record

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object
Record IDTextYesID of the record

Output

No documented output fields.

List Attachments ​

Get a list of attachments for a record

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object
Record IDTextYesID of the record

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.attachments[]ListList of attachments
data.attachments[].categoryIdTextID of the category the attachment belongs to
data.attachments[].createdAtTextTimestamp when the attachment was created
data.attachments[].idTextUnique identifier for the attachment
data.attachments[].mimeTypeTextMIME type of the attachment
data.attachments[].pathTextFile path of the attachment
data.attachments[].sizeNumberSize of the attachment in bytes
data.attachments[].titleTextTitle of the attachment
data.attachments[].updatedAtTextTimestamp when the attachment was last updated
data.attachments[].urlTextURL to access the attachment
data.totalRecordsCountNumberTotal number of attachment records

Get Attachment ​

Get a specific attachment by ID

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object
Record IDTextYesID of the record
Attachment IDTextYesID of the attachment

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.categoryIdTextID of the category the attachment belongs to
data.createdAtTextTimestamp when the attachment was created
data.idTextUnique identifier for the attachment
data.mimeTypeTextMIME type of the attachment
data.pathTextFile path of the attachment
data.sizeNumberSize of the attachment in bytes
data.titleTextTitle of the attachment
data.updatedAtTextTimestamp when the attachment was last updated
data.urlTextURL to access the attachment

Upload Attachment ​

Upload a file to a CRM record as an attachment

Settings

FieldTypeRequiredDescription
Workspace IDTextYes
Object IDTextYes
Record IDTextYes
FileFileYesFile to attach to the CRM record. Supports both manual upload and reference from other nodes.
Override ExistingYes / NoIf true, replace existing attachment with the same name. If false, skip upload if duplicate exists.
Default: true

Output

Later steps use this data by picking this step in the $ picker. For example, attachment is $.<step ID>.output.attachment.

json
{
  "attachment": {},
  "uploadedUrl": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
attachmentObject
uploadedUrlText

Export View ​

Export a CRM view and receive notification when the export is ready

Settings

FieldTypeRequiredDescription
WorkspaceChoice (loaded from your account)YesWorkspace containing the object and view to export
ObjectChoice (loaded from your account)YesObject containing the view to export
ViewChoice (loaded from your account)YesView to export
Notification MethodChoiceYesHow to receive notification when the export is ready
Options: Email, Callback URL
Email AddressTextYesEmail address to receive the export notification
Callback URLTextYesURL to receive a callback when the export is ready

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": {}
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataObjectExport result including status and download information

Create Activity ​

Create an activity on a record's timeline

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object the record belongs to
Record IDTextYesID of the record to attach the activity to
Activity ActionTextYesVerb/event name of the activity (e.g. reservation.created, mail.sent)
Sent AtTextYesWhen the activity happened, as an ISO-8601 timestamp with timezone offset (e.g. 2020-10-27T14:00:00+00:00)
ActorObjectYesWho performed the action, as { "id": string, "type": string, "properties"?: object }
Source TypeChoiceYesOrigin system of the activity. Determines which downstream HTML page is rendered. Only Livechat is supported for now.
Options: Livechat
ObjectObjectThe thing acted upon (optional), as { "id": string, "type": string, "properties"?: object }. Dotted keys expand into nested objects, e.g. "properties.message" becomes properties.message.
TargetObjectRecipient/target of the action (optional), as { "id": string, "type": string, "properties"?: object }
ContextObjectFree-form ambient metadata (optional)

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.actionTextVerb/event name of the activity (e.g. reservation.created)
data.actorAny
data.actor.idTextIdentifier of the entity (external/opaque id)
data.actor.propertiesObjectFree-form key/value properties of the entity
data.actor.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.contextObjectFree-form ambient metadata
data.createdAtTextTimestamp when the activity was created
data.idTextUnique identifier for the activity
data.objectAny
data.object.idTextIdentifier of the entity (external/opaque id)
data.object.propertiesObjectFree-form key/value properties of the entity
data.object.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.objectIdTextID of the CRM object definition the activity is anchored to
data.recordIdTextID of the CRM record the activity is anchored to
data.sentAtTextISO-8601 timestamp of when the activity happened
data.sourceAny
data.source.idTextIdentifier of the entity (external/opaque id)
data.source.propertiesObjectFree-form key/value properties of the entity
data.source.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.targetAny
data.target.idTextIdentifier of the entity (external/opaque id)
data.target.propertiesObjectFree-form key/value properties of the entity
data.target.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.updatedAtTextTimestamp when the activity was last updated

Upsert Activity ​

Amend a single existing activity on a record's timeline (update-only merge; never inserts). Select the target activity by Upsert Key or Activity ID.

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object the record belongs to
Record IDTextYesID of the record the activity is attached to
Activity ActionTextVerb/event name of the activity (e.g. mail.delivered). Optional — this is a merge, so leave blank to keep the existing value.
Sent AtTextWhen the activity happened, as an ISO-8601 timestamp with timezone offset (e.g. 2020-10-27T15:00:00+00:00). Optional — leave blank to keep the existing value.
ActorObjectWho performed the action, as { "id": string, "type": string, "properties"?: object }. Optional — leave blank to keep the existing value.
Source TypeChoiceYesOrigin system of the activity. Determines which downstream HTML page is rendered. Only Livechat is supported for now.
Options: Livechat
Upsert KeyTextDot-path into the body used to find the activity to amend (e.g. object.properties.conversationId). Takes precedence over Activity ID and must resolve to a non-null primitive. Provide this or Activity ID.
Activity IDTextMongo _id of the activity to amend. Used only when Upsert Key is not set. Provide this or Upsert Key.
ObjectObjectThe thing acted upon (optional), as { "id": string, "type": string, "properties"?: object }. Dotted keys expand into nested objects, e.g. "properties.conversationId" becomes properties.conversationId. Omitted fields are retained on the existing activity.
TargetObjectRecipient/target of the action (optional), as { "id": string, "type": string, "properties"?: object }
ContextObjectFree-form ambient metadata (optional)

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.actionTextVerb/event name of the activity (e.g. reservation.created)
data.actorAny
data.actor.idTextIdentifier of the entity (external/opaque id)
data.actor.propertiesObjectFree-form key/value properties of the entity
data.actor.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.contextObjectFree-form ambient metadata
data.createdAtTextTimestamp when the activity was created
data.idTextUnique identifier for the activity
data.objectAny
data.object.idTextIdentifier of the entity (external/opaque id)
data.object.propertiesObjectFree-form key/value properties of the entity
data.object.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.objectIdTextID of the CRM object definition the activity is anchored to
data.recordIdTextID of the CRM record the activity is anchored to
data.sentAtTextISO-8601 timestamp of when the activity happened
data.sourceAny
data.source.idTextIdentifier of the entity (external/opaque id)
data.source.propertiesObjectFree-form key/value properties of the entity
data.source.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.targetAny
data.target.idTextIdentifier of the entity (external/opaque id)
data.target.propertiesObjectFree-form key/value properties of the entity
data.target.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.updatedAtTextTimestamp when the activity was last updated

List Activities ​

Get a list of activities for a record

Settings

FieldTypeRequiredDescription
Workspace IDTextYesID of the workspace
Object IDTextYesID of the object the record belongs to
Record IDTextYesID of the record to list activities for
LimitNumberMaximum number of activities to return. Use a number or reference another node (e.g. Loop node) for dynamic pagination.
SkipNumberNumber of activities to skip. Use a number or reference another node for pagination.
FiltersObjectFilter conditions to apply to the activity list
SortListSort configurations for the activity list (defaults to createdAt descending)
Text SearchTextFull-text search over the activity object properties. Requires MongoDB Atlas search on the CRM side.

Output

Later steps use this data by picking this step in the $ picker. For example, data is $.<step ID>.output.data.

json
{
  "data": "string"
}

Example values show the shape of the data, not real values. See Using data from earlier steps.

Field descriptions
FieldTypeDescription
dataAny
data.activities[]ListList of activities
data.activities[].actionTextVerb/event name of the activity (e.g. reservation.created)
data.activities[].actorAny
data.activities[].actor.idTextIdentifier of the entity (external/opaque id)
data.activities[].actor.propertiesObjectFree-form key/value properties of the entity
data.activities[].actor.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.activities[].contextObjectFree-form ambient metadata
data.activities[].createdAtTextTimestamp when the activity was created
data.activities[].idTextUnique identifier for the activity
data.activities[].objectAny
data.activities[].object.idTextIdentifier of the entity (external/opaque id)
data.activities[].object.propertiesObjectFree-form key/value properties of the entity
data.activities[].object.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.activities[].objectIdTextID of the CRM object definition the activity is anchored to
data.activities[].recordIdTextID of the CRM record the activity is anchored to
data.activities[].sentAtTextISO-8601 timestamp of when the activity happened
data.activities[].sourceAny
data.activities[].source.idTextIdentifier of the entity (external/opaque id)
data.activities[].source.propertiesObjectFree-form key/value properties of the entity
data.activities[].source.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.activities[].targetAny
data.activities[].target.idTextIdentifier of the entity (external/opaque id)
data.activities[].target.propertiesObjectFree-form key/value properties of the entity
data.activities[].target.typeTextNamespaced entity type (e.g. virtualstore.guest, mail)
data.activities[].updatedAtTextTimestamp when the activity was last updated
data.totalRecordsCountNumberTotal number of activity records