Automation Actions Parameters

Reference for action_params accepted by each automation action

Actions Reference

Each automation executes exactly one action. The action_id field selects the action type, and action_params carries its configuration. Some actions also use field_maps (configured separately) to define field-level mappings.

generate_with_ai — uses AI to generate content and write it to one or more fields

Compatible events: card_moved, field_updated, card_created, sla_based, card_left_phase, card_inbox_received_email, all_children_in_phase, http_response_received, manually_triggered

action_params:

ParameterTypeRequiredDescription
aiParams.valuestringYesThe AI prompt/instruction. Reference card fields inline using %{INTERNAL_ID} (e.g., %{413928300}). Maximum 10,000 characters (excluding field placeholders).
aiParams.fieldIdsarray of stringsYesInternal IDs (as strings) of the destination fields where AI output will be written. Maximum 30 fields.

Constraints:

  • Input fields (referenced in the prompt via %{...}) and output fields (fieldIds) must not overlap.
  • Both input fields (in the prompt) and output fields must exist in the action repo.
  • Requires AI to be enabled at the organization and pipe level.

How to get field internal IDs:

{
  pipe(id: "PIPE_ID") {
    start_form_fields {
      label
      internal_id
    }
    phases {
      fields {
        label
        internal_id
      }
    }
  }
}

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Summarize fields with AI when card is created"
      action_id: "generate_with_ai"
      event_id: "card_created"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      action_params: {
        aiParams: {
          value: "Provide a concise, organized and clear summary of the following inputs: %{413928300}%{417331491}%{423760803}"
          fieldIds: ["421679209", "428937593"]
        }
      }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

send_a_task — sends a task (form) to specified recipients

Compatible events: card_moved, field_updated, card_created, card_inbox_received_email, all_children_in_phase, http_response_received, manually_triggered

action_params:

ParameterTypeRequiredDescription
taskParams.titlestringYesTitle of the task. Supports field references via %{FIELD_ID} (e.g., "The task is %{413928300}").
taskParams.recipientsstringYesRecipients for the task. Supports static email addresses, field references (%{FIELD_ID|attribute:email} to extract the email from a member/assignee field), or a combination of both (e.g., "%{428937595|attribute:email}[email protected]").
field_maparray of objectsNoNot used by this action. Pass an empty array [].

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Send task when card moves to phase"
      action_id: "send_a_task"
      event_id: "card_moved"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      event_params: { to_phase_id: "338796240" }
      action_params: {
        taskParams: {
          title: "The task is %{413928300}"
          recipients: "%{428937595|attribute:email}[email protected]"
        }
      }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

send_email_template — sends an email using a configured email template

Compatible events: card_created, card_moved, card_left_phase, card_inbox_received_email, all_children_in_phase, field_updated, sla_based, http_response_received, manually_triggered

Note: Requires a Premium Automations plan.

action_params:

ParameterTypeRequiredDescription
email_template_idstringYesID of the email template to send. The template must have at least one valid recipient (to, cc, or bcc).
field_maparray of objectsNoNot used by this action. Pass an empty array [].

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Send email template when card inbox receives an email"
      action_id: "send_email_template"
      event_id: "card_inbox_received_email"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      event_params: { inPhaseId: "338796239" }
      action_params: { email_template_id: "309615724" }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

move_single_card — moves the triggering card to a specific phase

Compatible events: card_moved, field_updated, card_created, sla_based, card_left_phase, card_inbox_received_email, all_children_in_phase, http_response_received, manually_triggered

action_params:

ParameterTypeRequiredDescription
to_phase_idstringYesID of the destination phase where the triggering card will be moved.
field_maparray of objectsNoNot used by this action. Pass an empty array [].

How to get to_phase_id: See Get Resource IDs → Phase ID.

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Move card when it arrives at phase"
      action_id: "move_single_card"
      event_id: "card_moved"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      event_params: { to_phase_id: "338796240" }
      action_params: { to_phase_id: "338796241" }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

update_card_field — updates one or more fields on a card

Compatible events: card_moved, field_updated, sla_based, card_created, card_left_phase, card_inbox_received_email, all_children_in_phase, http_response_received, manually_triggered

action_params:

ParameterTypeRequiredDescription
field_maparray of objectsYesList of field update mappings. Each object requires fieldId (destination field internal ID), inputMode ("copy_from" or "fixed_value"), and value. Supports field references (%{FIELD_ID}), card attribute slugs (%{created_at}), and JSONPath expressions ($.key) when triggered by http_response_received.
fields_map_orderarray of stringsYesField internal IDs (as strings) in the order they should be updated.
card_idstringYesTarget card identifier. Use "%{id}" to target the card that triggered the event.

inputMode values:

  • copy_from — copy the value from another field using %{FIELD_ID} syntax, or write a literal string value
  • fixed_value — write a static literal value

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Update field when another field changes"
      action_id: "update_card_field"
      event_id: "field_updated"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      event_params: { triggerFieldIds: ["413928300", "423760803"] }
      action_params: {
        field_map: [{ fieldId: "421679209", inputMode: "copy_from", value: "%{423760803}" }]
        fields_map_order: ["421679209"]
        card_id: "%{id}"
      }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

create_connected_card — creates a new card in a connected pipe and links it to the triggering card

Compatible events: card_created, field_updated, sla_based, card_moved, card_left_phase, card_inbox_received_email, all_children_in_phase, http_response_received, manually_triggered

action_params:

ParameterTypeRequiredDescription
field_maparray of objectsYesField values to set on the new card. Each object requires fieldId (destination field internal ID), inputMode ("copy_from" or "fixed_value"), and value. Use %{FIELD_ID} to copy from the source card, or %{CONNECTOR_FIELD_ID.TARGET_FIELD_ID} to reference a field inside a connected card.
fields_map_orderarray of stringsYesField internal IDs (as strings) in the order they should be populated.

Constraints: A pipe connection (repo relation) must already exist between the event repo and the action repo.

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Create connected card when SLA is late"
      action_id: "create_connected_card"
      event_id: "sla_based"
      event_repo_id: "306422123"
      action_repo_id: "306422131"
      event_params: { kindOfSla: "late" }
      action_params: {
        field_map: [
          { fieldId: "413928326", inputMode: "copy_from", value: "%{413928300}" }
          { fieldId: "427452189", inputMode: "copy_from", value: "%{413928737.427452209}" }
        ]
        fields_map_order: ["413928326", "427452189"]
      }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

create_card — creates a new card in the action repo

Compatible events: card_created, field_updated, sla_based, card_moved, card_left_phase, card_inbox_received_email, all_children_in_phase, http_response_received, manually_triggered

action_params:

ParameterTypeRequiredDescription
field_maparray of objectsYesField values to set on the new card. Each object requires fieldId (destination field internal ID), inputMode ("copy_from" or "fixed_value"), and value. Use %{FIELD_ID} to copy from the source card, or %{CONNECTOR_FIELD_ID.TARGET_FIELD_ID} to reference a field inside a connected card.
fields_map_orderarray of stringsYesField internal IDs (as strings) in the order they should be populated.

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Create card in another pipe when a card is created"
      action_id: "create_card"
      event_id: "card_created"
      event_repo_id: "306422123"
      action_repo_id: "306422131"
      action_params: {
        field_map: [
          { fieldId: "413928326", inputMode: "copy_from", value: "%{413928300}" }
          { fieldId: "427452189", inputMode: "copy_from", value: "%{413928333.427452209}" }
        ]
        fields_map_order: ["413928326", "427452189"]
      }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

schedule_create_card — creates a new card on a recurring schedule

Compatible events: scheduler

action_params:

ParameterTypeRequiredDescription
field_maparray of objectsYesField values to set on the new card. Each object requires fieldId, inputMode ("copy_from" or "fixed_value"), and value.
fields_map_orderarray of stringsYesField internal IDs (as strings) in the order they should be populated.

Note: Also requires scheduler_frequency and schedulerCron as top-level mutation inputs. See the scheduler event for details.

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Create card on a daily schedule"
      action_id: "schedule_create_card"
      event_id: "scheduler"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      scheduler_frequency: "daily"
      schedulerCron: { minute: "0", hour: "2", dayOfWeek: "*", dayOfMonth: "*", month: "*" }
      action_params: {
        field_map: [
          { fieldId: "413928300", inputMode: "copy_from", value: "Nome 1" }
          { fieldId: "417331491", inputMode: "fixed_value", value: "316378478,316378479" }
        ]
        fields_map_order: ["413928300", "417331491"]
      }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

move_multiple_cards — moves all cards matching a set of search criteria to a specific phase

Compatible events: scheduler

action_params:

ParameterTypeRequiredDescription
to_phase_idstringYesID of the destination phase where the matching cards will be moved.
field_maparray of objectsNoNot used by this action. Pass an empty array [].

searchFor (top-level mutation input):

searchFor is an array of filter criteria that determines which cards are moved. Each entry has:

FieldTypeDescription
idintegerUnique identifier for this criterion within the array. Use incremental numbers starting from 0.
fieldstringField to filter on. Use a card attribute slug (e.g., "current_phase") or a pipe field's slug. See Card Attributes for available slugs.
operationstringComparison operation. Known values: "eq" (equals), "not_eq" (not equals).
valuestringValue to compare against. For "current_phase", use the phase ID. For other fields, use the field option ID or value.

Note: Also requires scheduler_frequency and schedulerCron as top-level mutation inputs. See the scheduler event for details.

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Move matching cards every hour"
      action_id: "move_multiple_cards"
      event_id: "scheduler"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      scheduler_frequency: "hourly"
      schedulerCron: { minute: "0", hour: "*", dayOfWeek: "*", dayOfMonth: "*", month: "*" }
      searchFor: [
        { field: "current_phase", operation: "eq", value: "338796240", id: 0 }
        { field: "field_1_label_select", operation: "not_eq", value: "316378478", id: 1 }
      ]
      action_params: { to_phase_id: "338796241" }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

move_parent_card — moves the parent card of the triggering card to a specific phase

Compatible events: card_moved, field_updated, card_created, sla_based, card_left_phase, card_inbox_received_email, all_children_in_phase, http_response_received, manually_triggered

action_params:

ParameterTypeRequiredDescription
to_phase_idstringYesID of the destination phase where the parent card will be moved.
field_maparray of objectsNoNot used by this action. Pass an empty array [].

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Move parent card when child leaves a phase"
      action_id: "move_parent_card"
      event_id: "card_left_phase"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      event_params: { fromPhaseId: "338796239" }
      action_params: { to_phase_id: "338796240" }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

distribute_assignments — assigns a card to the next user in a round-robin or other distribution strategy

Compatible events: field_updated, sla_based, card_moved, card_created, card_left_phase, card_inbox_received_email, all_children_in_phase, http_response_received, manually_triggered

action_params:

ParameterTypeRequiredDescription
field_maparray of objectsYesExactly one entry required. fieldId is the assignee field to update; inputMode must be "fixed_value"; value is a comma-separated string of user IDs that form the assignment pool (e.g., "123,456,789").
strategyenumYesDistribution strategy. Accepted values: ROUND_ROBIN (cycles through users in order) or RANDOM (picks a user at random). Pass as a GraphQL enum — use a variable or inline without quotes.

Mutation example:

mutation CreateAutomation($strategy: DistributeAssignmentAutomationStrategyGQLEnum!) {
  createAutomation(
    input: {
      name: "Distribute assignment when card is created"
      action_id: "distribute_assignments"
      event_id: "card_created"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      action_params: {
        field_map: [
          { fieldId: "428937595", inputMode: "fixed_value", value: "305645991,301126567,301186033" }
        ]
        strategy: $strategy
      }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

Variables:

{
  "strategy": "ROUND_ROBIN"
}

run_a_formula — evaluates a formula and writes the result to a field

Compatible events: field_updated, sla_based, card_moved, card_created, card_left_phase, card_inbox_received_email, all_children_in_phase, http_response_received, manually_triggered

action_params:

ParameterTypeRequiredDescription
field_maparray of objectsYesExactly one entry required. fieldId is the destination field; inputMode is "copy_from"; value is the formula expression. Reference card fields with %{FIELD_ID} inside the formula (e.g., MULTIPLY( %{428940932}, 3 )).

Constraints:

  • The destination field (fieldId) must not be referenced in the formula expression itself.

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Multiply field value when card moves"
      action_id: "run_a_formula"
      event_id: "card_moved"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      event_params: { to_phase_id: "338796239" }
      action_params: {
        field_map: [
          { fieldId: "428940931", inputMode: "copy_from", value: "MULTIPLY( %{428940932}, 3 )" }
        ]
      }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

send_http_request — sends an outbound HTTP request to an external URL

Compatible events: http_response_received, field_updated, sla_based, card_moved, card_created, card_left_phase, card_inbox_received_email, all_children_in_phase, manually_triggered

action_params:

ParameterTypeRequiredDescription
urlstringYesTarget URL. Must use https://. Field references (%{FIELD_ID}) are supported.
httpMethodenumYesHTTP verb. Accepted values: GET, POST, PUT, PATCH, DELETE. Pass as a GraphQL enum (unquoted or via variable).
headersstring (JSON)NoJSON string of request headers. Field references are supported in values.
bodystringNoRequest body. Field references are supported. Typically required for POST, PUT, and PATCH.
authenticationTypeenumNoAuthentication type. Accepted values: no_auth, api_key, authorization, oauth2. Pass as a GraphQL enum (unquoted or via variable).
authenticationKeystringConditionalKey name or header name. Required for api_key and authorization.
authenticationValuestringConditionalKey value or token. Required for api_key and authorization. Stored securely; not returned in responses.
authenticationAddToenumConditionalWhere to send the key. Required for api_key. Accepted values: HEADERS, QUERY_PARAMS. Pass as a GraphQL enum (unquoted or via variable).
oauth2UuidstringConditionalUUID of the OAuth2 client. Required for oauth2. See OAuth2 setup below.

responseSchema (top-level mutation input):

A JSON object defining the expected shape of the HTTP response. Used when chaining automations via the http_response_received event. Keys are the field names you will reference in the follow-up automation's value using JSONPath syntax (e.g., "$.returnKey").

responseSchema: { returnKey: "string" }

Authentication types:

no_auth — no authentication
action_params: {
  httpMethod: POST
  url: "https://example.com/webhook"
  authenticationType: no_auth
}
api_key — API key sent in headers or query params
action_params: {
  httpMethod: POST
  url: "https://example.com/webhook"
  authenticationType: api_key
  authenticationKey: "key-name"
  authenticationValue: "key-value"
  authenticationAddTo: HEADERS
}
authorization — Authorization header (e.g., Bearer token)
action_params: {
  httpMethod: POST
  url: "https://example.com/webhook"
  authenticationType: authorization
  authenticationKey: "Authorization"
  authenticationValue: "Bearer 12345"
}
oauth2 — OAuth2 client credentials

Before using oauth2, create an OAuth2 client with the createOauth2ClientData mutation:

mutation createOauth2ClientData(
  $name: String!
  $tokenUrl: String!
  $clientId: String!
  $clientSecret: String!
  $scopes: String
  $repoId: ID!
) {
  createOauth2ClientData(
    input: {
      name: $name
      tokenUrl: $tokenUrl
      clientId: $clientId
      clientSecret: $clientSecret
      scopes: $scopes
      repoId: $repoId
    }
  ) {
    oauth2ClientData {
      uuid
      name
      clientId
      scopes
      tokenUrl
    }
  }
}

Or list existing OAuth2 clients for a repo:

query listOauth2ClientDataByRepo($repoId: ID!, $first: Int, $after: String) {
  oauth2ClientsDataByRepo(repoId: $repoId, first: $first, after: $after) {
    nodes {
      uuid
      name
      clientId
      scopes
      tokenUrl
    }
    pageInfo {
      hasNextPage
      endCursor
    }
  }
}

Then pass the uuid to the automation:

action_params: {
  httpMethod: POST
  url: "https://example.com/webhook"
  authenticationType: oauth2
  oauth2Uuid: "90eef3df-9af4-4867-9c8d-d613b8a2749e"
  authenticationKey: ""
}

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Send HTTP request when card is created"
      action_id: "send_http_request"
      event_id: "card_created"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      responseSchema: { returnKey: "string" }
      action_params: {
        httpMethod: POST
        url: "https://some-test.requestcatcher.com/test"
        headers: "{\"Content-Type\": \"application/json\"}"
        body: "{\"card_id\": \"%{id}\", \"description\": \"%{413928300}\"}"
        authenticationType: no_auth
      }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

apply_sla_rules — calculates an SLA deadline considering working hours and holidays, then writes it to a datetime field

Compatible events: field_updated, sla_based, card_moved, card_created, card_left_phase, card_inbox_received_email, all_children_in_phase, http_response_received, manually_triggered

action_params:

ParameterTypeRequiredDescription
field_maparray of objectsYesExactly one entry required. fieldId is the destination datetime field; value is the SLA start point. Supports %{FIELD_ID} for field references and %{FIELD_ID|plus:SECONDS} for date arithmetic (e.g., %{created_at|plus:259200} adds 72 hours).
slaParams.timezonestringYesIANA timezone identifier (e.g., "America/New_York", "Etc/UTC").
slaParams.mondayslaParams.sundayobjectYes (all 7)Working-hours config per day. Each object has: enabled (boolean), startHour (string "HH:MM"), endHour (string "HH:MM"). startHour must be earlier than endHour.
slaParams.holidaysarray of objectsNoList of non-working holiday dates. Each entry: description (string), date (ISO 8601 "YYYY-MM-DD"), and recurrence ("YEARLY" or "ONCE").

Constraints:

  • The destination field (fieldId) and the source field referenced in value must both be datetime type fields.
  • Maximum SLA interval: 720 hours.

Mutation example:

mutation {
  createAutomation(
    input: {
      name: "Apply SLA rules manually"
      action_id: "apply_sla_rules"
      event_id: "manually_triggered"
      event_repo_id: "306422123"
      action_repo_id: "306422123"
      action_params: {
        field_map: [
          { fieldId: "428937593", inputMode: "copy_from", value: "%{created_at|plus:259200}" }
        ]
        slaParams: {
          monday: { startHour: "09:00", endHour: "18:00", enabled: true }
          tuesday: { startHour: "09:00", endHour: "18:00", enabled: true }
          wednesday: { startHour: "09:00", endHour: "18:00", enabled: true }
          thursday: { startHour: "09:00", endHour: "18:00", enabled: true }
          friday: { startHour: "09:00", endHour: "18:00", enabled: true }
          saturday: { startHour: "09:00", endHour: "18:00", enabled: false }
          sunday: { startHour: "09:00", endHour: "18:00", enabled: false }
          timezone: "Etc/UTC"
          holidays: [
            { description: "New Year's Day", date: "2026-01-01", recurrence: "YEARLY" }
            { description: "Corpus Christis", date: "2026-06-04", recurrence: "ONCE" }
          ]
        }
      }
    }
  ) {
    automation {
      id
      name
      action_id
      event_id
    }
    error_details {
      object_name
      object_key
      messages
    }
  }
}

Card Attributes

Card attributes are built-in properties of a card that can be used anywhere a field reference is accepted — in value fields (as %{slug}), in searchFor criteria, and in triggerFieldIds. They are distinct from pipe fields, which have numeric internal IDs.

SlugTypeDescriptionModifiers
idstringUnique card ID
titlestringCard title
current_phasephaseCurrent phase the card is in. Resolves to the phase ID.
statusphaseAlias for current_phase
last_phase_inphaseLast phase the card was in before the current one
created_atdatetimeWhen the card was created|plus:SECONDS, |minus:SECONDS
updated_atdatetimeWhen the card was last updated
due_datedatetimeCard due date|plus:SECONDS, |minus:SECONDS
finished_atdatetimeWhen the card was finished/done|plus:SECONDS, |minus:SECONDS
last_comment_atdatetimeWhen the last comment was posted
automation_event_execution_datetimedatetimeThe moment the automation event fired|plus:SECONDS, |minus:SECONDS
assigneesassignee listUsers assigned to the card. Resolves to a list of user IDs.|attribute:name, |attribute:email
created_byassigneeUser who created the card|attribute:name, |attribute:email
labelslabel listLabels applied to the card. Resolves to a list of label IDs.
last_commentlong textText content of the most recent comment

Datetime arithmetic

Datetime attributes support offset arithmetic using seconds:

  • %{created_at|plus:86400} — 24 hours after the card was created
  • %{due_date|minus:3600} — 1 hour before the due date
  • %{created_at|plus:259200} — 72 hours (3 days) after creation

Attribute extraction

Attributes that return a user or list of users support extracting a specific property:

  • %{assignees|attribute:email} — email addresses of all assignees
  • %{assignees|attribute:name} — names of all assignees
  • %{created_by|attribute:email} — email of the card creator

This is particularly useful for taskParams.recipients and other fields that expect email addresses.

See also