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:
| Parameter | Type | Required | Description |
|---|---|---|---|
aiParams.value | string | Yes | The AI prompt/instruction. Reference card fields inline using %{INTERNAL_ID} (e.g., %{413928300}). Maximum 10,000 characters (excluding field placeholders). |
aiParams.fieldIds | array of strings | Yes | Internal 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
taskParams.title | string | Yes | Title of the task. Supports field references via %{FIELD_ID} (e.g., "The task is %{413928300}"). |
taskParams.recipients | string | Yes | Recipients 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_map | array of objects | No | Not 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
email_template_id | string | Yes | ID of the email template to send. The template must have at least one valid recipient (to, cc, or bcc). |
field_map | array of objects | No | Not 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
to_phase_id | string | Yes | ID of the destination phase where the triggering card will be moved. |
field_map | array of objects | No | Not 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
field_map | array of objects | Yes | List 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_order | array of strings | Yes | Field internal IDs (as strings) in the order they should be updated. |
card_id | string | Yes | Target 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 valuefixed_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:
| Parameter | Type | Required | Description |
|---|---|---|---|
field_map | array of objects | Yes | Field 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_order | array of strings | Yes | Field 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
field_map | array of objects | Yes | Field 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_order | array of strings | Yes | Field 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
field_map | array of objects | Yes | Field values to set on the new card. Each object requires fieldId, inputMode ("copy_from" or "fixed_value"), and value. |
fields_map_order | array of strings | Yes | Field internal IDs (as strings) in the order they should be populated. |
Note: Also requires
scheduler_frequencyandschedulerCronas 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
to_phase_id | string | Yes | ID of the destination phase where the matching cards will be moved. |
field_map | array of objects | No | Not 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:
| Field | Type | Description |
|---|---|---|
id | integer | Unique identifier for this criterion within the array. Use incremental numbers starting from 0. |
field | string | Field to filter on. Use a card attribute slug (e.g., "current_phase") or a pipe field's slug. See Card Attributes for available slugs. |
operation | string | Comparison operation. Known values: "eq" (equals), "not_eq" (not equals). |
value | string | Value to compare against. For "current_phase", use the phase ID. For other fields, use the field option ID or value. |
Note: Also requires
scheduler_frequencyandschedulerCronas 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
to_phase_id | string | Yes | ID of the destination phase where the parent card will be moved. |
field_map | array of objects | No | Not 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
field_map | array of objects | Yes | Exactly 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"). |
strategy | enum | Yes | Distribution 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
field_map | array of objects | Yes | Exactly 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Target URL. Must use https://. Field references (%{FIELD_ID}) are supported. |
httpMethod | enum | Yes | HTTP verb. Accepted values: GET, POST, PUT, PATCH, DELETE. Pass as a GraphQL enum (unquoted or via variable). |
headers | string (JSON) | No | JSON string of request headers. Field references are supported in values. |
body | string | No | Request body. Field references are supported. Typically required for POST, PUT, and PATCH. |
authenticationType | enum | No | Authentication type. Accepted values: no_auth, api_key, authorization, oauth2. Pass as a GraphQL enum (unquoted or via variable). |
authenticationKey | string | Conditional | Key name or header name. Required for api_key and authorization. |
authenticationValue | string | Conditional | Key value or token. Required for api_key and authorization. Stored securely; not returned in responses. |
authenticationAddTo | enum | Conditional | Where to send the key. Required for api_key. Accepted values: HEADERS, QUERY_PARAMS. Pass as a GraphQL enum (unquoted or via variable). |
oauth2Uuid | string | Conditional | UUID 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
field_map | array of objects | Yes | Exactly 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.timezone | string | Yes | IANA timezone identifier (e.g., "America/New_York", "Etc/UTC"). |
slaParams.monday … slaParams.sunday | object | Yes (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.holidays | array of objects | No | List 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 invaluemust both bedatetimetype 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.
| Slug | Type | Description | Modifiers |
|---|---|---|---|
id | string | Unique card ID | — |
title | string | Card title | — |
current_phase | phase | Current phase the card is in. Resolves to the phase ID. | — |
status | phase | Alias for current_phase | — |
last_phase_in | phase | Last phase the card was in before the current one | — |
created_at | datetime | When the card was created | |plus:SECONDS, |minus:SECONDS |
updated_at | datetime | When the card was last updated | — |
due_date | datetime | Card due date | |plus:SECONDS, |minus:SECONDS |
finished_at | datetime | When the card was finished/done | |plus:SECONDS, |minus:SECONDS |
last_comment_at | datetime | When the last comment was posted | — |
automation_event_execution_datetime | datetime | The moment the automation event fired | |plus:SECONDS, |minus:SECONDS |
assignees | assignee list | Users assigned to the card. Resolves to a list of user IDs. | |attribute:name, |attribute:email |
created_by | assignee | User who created the card | |attribute:name, |attribute:email |
labels | label list | Labels applied to the card. Resolves to a list of label IDs. | — |
last_comment | long text | Text 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.
