Skip to content
CLI
Integrations

Integrations

The hutly integrations command group discovers and configures third-party Integrations (Slack, HubSpot, Gmail, and more) for your organization. Use the discovery verbs to find apps, their actions, and event triggers; the high-level verbs to resolve an action into a workflow YAML fragment or deploy a trigger onto a workflow; and run to execute an action ad-hoc against a connected account.

All verbs operate against the organization resolved from your CLI configuration (HUTLY_ORG_ID / HUTLY_API_KEY or .hutlyrc.yaml). The action and trigger verbs auto-resolve the connected account when the org has exactly one account for the app; when multiple accounts exist, pass --account <authProvisionId> to disambiguate (the command fails fast with a clear message otherwise).

Most verbs accept --json for machine-readable output. The action, deploy-trigger, and run verbs treat --json as a no-op for compatibility.

apps

List integration apps, optionally filtered by name fragment.

hutly integrations apps
hutly integrations apps --query slack
hutly integrations apps --has-triggers --limit 20
Option Description
-q, --query <q> Filter apps by name fragment
-l, --limit <n> Maximum results
--has-actions Only apps that expose actions
--has-triggers Only apps that expose triggers
--json Output JSON instead of human-readable text

actions

List the actions an app exposes. Takes the app slug (from apps) as a positional argument.

hutly integrations actions slack
hutly integrations actions hubspot --query "create contact"
Option Description
-q, --query <q> Filter actions by name fragment
-l, --limit <n> Maximum results
--json Output JSON instead of human-readable text

triggers

List the event triggers an app exposes.

hutly integrations triggers slack
hutly integrations triggers github --json
Option Description
--json Output JSON instead of human-readable text

accounts

List the organization’s connected accounts (OAuth-linked apps) with their user-facing display names. Use this to find the authProvisionId to pass as --account when an app has multiple connected accounts. Unhealthy accounts are flagged in the output.

hutly integrations accounts
hutly integrations accounts --app gmail
Option Description
--app <slug> Filter by app slug
--json Output JSON instead of human-readable text

deployed-triggers

List the integration triggers already deployed across the organization. Inactive triggers are flagged in the output.

hutly integrations deployed-triggers
hutly integrations deployed-triggers --json
Option Description
--json Output JSON instead of human-readable text

action

Resolve an action into a ready-to-paste workflow YAML fragment. The command auto-resolves the connected account, action version, parametersSchema, outputSchema, and toolName so the result can be dropped straight into a workflow’s tools[<id>].actions[] array and referenced from a tool-call node by toolName.

For actions with dynamic props, pass the configured props as a JSON object via --props; the command reloads the prop schema with your configuration before resolving.

# Resolve the latest version, single connected account
hutly integrations action slack send-message

# Pin an account and version, supply configured props
hutly integrations action slack send-message \
  --account <authProvisionId> \
  --version 0.0.4 \
  --props '{"channel":"C0123456789"}'

# Emit JSON instead of YAML
hutly integrations action hubspot create-contact --format json
Option Description
--account <authProvisionId> Pin to a specific connected account (required when the org has multiple accounts for the app)
--version <version> Pin to a specific action version (default: latest)
--props <json> Configured props as a JSON object — required for actions with dynamic props
--format <format> Output format: yaml (default) or json

deploy-trigger

Deploy an integration trigger and attach it to a workflow. The command auto-resolves the connected account and trigger version, and validates that the target workflow exists. When --input-mapping is supplied, it is validated against the workflow’s trigger schema — missing or extra keys fail the deploy before anything is created.

hutly integrations deploy-trigger slack new-message-in-channel \
  --workflow <workflowId> \
  --configured-props '{"channel":"C0123456789"}' \
  --input-mapping '{"message":"{{event.text}}","author":"{{event.user}}"}' \
  --trigger-name "New Slack message"
Option Description
--workflow <workflowId> Required. Workflow to attach the trigger to
--account <authProvisionId> Pin to a specific connected account
--version <version> Pin trigger version (default: latest)
--input-mapping <json> JSON object mapping workflow trigger schema keys to handlebars templates over the event payload
--configured-props <json> JSON object of trigger configured props (e.g. channel id, repo name)
--trigger-name <name> Human-readable label for the deployed trigger
--app-name <name> Human-readable app name

run

Execute an action ad-hoc against the organization’s connected account, without deploying it into a workflow. Output is JSON by default. The action inputs go in --args as a JSON object; the connected account is resolved automatically and injected for you, so --args only needs the action’s own inputs.

hutly integrations run slack send-message \
  --args '{"channel":"C0123456789","text":"Hello from Hutly"}'

# Pin an account and pretty-print the result
hutly integrations run gmail send-email \
  --account <authProvisionId> \
  --args '{"to":"someone@example.com","subject":"Hi","body":"..."}' \
  --pretty
Option Description
--args <json> Required. JSON object of action inputs
--account <authProvisionId> Pin to a specific connected account
--version <version> Pin action version (default: latest)
--dynamic-props-id <id> Pin a dynamicPropsId (for actions with reload-props)
--pretty Pretty-print JSON output