1. Home
  2. Help Center
  3. Automations
  4. Action steps reference

Action steps reference

About this reference

Steps are the actions an automation performs, run in order from top to bottom. This article lists every step type, grouped by area, with the key values each one needs. To add a step, click a + button on the builder canvas and choose from the step picker.

The slug in parentheses (for example http_call) is the step's identifier in an exported or template definition.

Network

  • HTTP request (http_call) — a generic outbound HTTP call. Needs a url; optional method, headers, and body. Any 2xx response counts as success.
  • Send signed webhook (send_webhook) — an HMAC-signed POST that matches the AppGram webhook signature, so the receiver can verify it. Needs a url; optional secret, headers, and payload_template.

Messaging

  • Post to Slack (post_slack) — posts a message to a Slack channel through your connected Slack integration. Needs channel and text.
  • Send email (send_email) — sends mail through your organization's configured transport. Needs to and subject, plus body_html or body_text.
  • Send to Discord (send_discord) — posts a message via a Discord webhook. Needs webhook_url and content.
  • Send to Teams (send_teams) — posts a message via a Microsoft Teams webhook. Needs webhook_url and text.
  • Send to Telegram (send_telegram) — sends a message via a Telegram bot. Needs bot_token, chat_id, and text.

AI

  • AI chat (ai_chat) — calls any OpenAI-compatible chat completion API. Needs api_key, model, and user_prompt.
  • AI classify (ai_classify) — picks one of several categories for an input. Needs api_key, model, input, and a list of categories.
  • AI extract (ai_extract) — pulls structured fields out of unstructured text. Needs api_key, model, input, and a schema describing the fields.
  • AI translate (ai_translate) — translates text into a target language. Needs api_key, model, input, and target_lang.
  • RAG chat (rag_chat) — answers a query against your project's Help Center knowledge base.

Data and storage

  • Set variables (set) — writes computed values into the run's vars namespace for later steps to read.
  • Compute (function) — evaluates an expression against the run context, optionally storing the result under an output_key.
  • KV set (kv_set) — stores a value under a key in your organization's key-value store, with an optional ttl_seconds.
  • KV get (kv_get) — reads a key from the key-value store. Always succeeds, and reports whether the key was found.
  • KV delete (kv_delete) — removes a key from the key-value store.

Flow control

  • If / else (if) — runs the then steps when a condition is true, otherwise the else steps.
  • Stop if false (branch) — ends the run cleanly when a condition is false; the remaining steps are skipped.
  • For each (foreach) — loops a nested list of steps once over each item in items.
  • Wait (wait) — pauses the run for duration_seconds (1 second to 7 days) before the next step.
  • Fail run (fail) — stops the run immediately and marks it failed, with a message you write.
  • Run automation (run_automation) — invokes another automation by automation_id; optionally wait for it to finish and pass input.

Wishboard actions

  • Create wish (create_wish) — files a new feature request. Needs project_id and title.
  • Update wish status (update_wish_status) — moves a wish to a new status. Needs wish_id.
  • Update wish category (update_wish_category) — re-files a wish under a category_id. Needs wish_id.
  • Add wish comment (add_wish_comment) — posts a body comment on a wish. Needs wish_id.

Support actions

  • Reply to ticket (reply_to_ticket) — posts a body reply on a support ticket. Needs ticket_id.
  • Set ticket status (set_ticket_status) — changes a ticket's status. Needs ticket_id.
  • Assign ticket (assign_ticket) — assigns a ticket to a teammate. Needs ticket_id and assignee_user_id.

Status and monitoring actions

  • Publish status incident (publish_status_incident) — opens an incident on a status page. Needs page_id, title, and severity.
  • Update status incident (update_status_incident) — posts an update to an existing incident. Needs update_id.
  • Pause monitor (pause_monitor) — pauses an uptime monitor. Needs monitor_id.
  • Resume monitor (resume_monitor) — resumes a paused monitor. Needs monitor_id.

Engagement and content actions

  • Send notification (send_notification) — raises an in-app notification. Needs title and body; org-wide unless a user_id is set.
  • Send push (send_push) — sends a mobile push via the project's connected Firebase app. Needs audience, title, and body.
  • Create changelog entry (create_changelog_entry) — adds a changelog entry. Needs project_id, title, and content.
  • Add to roadmap (add_to_roadmap) — adds a card to a roadmap. Needs roadmap_id, column_id, and title.
  • Tag user (tag_user) — attaches a tag to a user. Needs user_id.
  • Create Linear issue (create_linear_issue) — opens an issue in Linear. Needs team_id and title.
  • Post to Reddit (post_reddit) — submits a post to a subreddit through a connected Reddit account. Needs account_id, subreddit, and title.

Referencing data in a step

Almost any field above accepts ${...} template expressions — ${event.…} for event data, ${steps.…} for an earlier step's output, and ${vars.…} for variables. See Using dynamic values for the full picture.

Limits

An automation definition can hold up to 50 steps, and a condition expression is capped at 2000 characters.