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 |