Workflow Automation

hubspot/agent-cli-skills/workflow-automation

作者 hubspota8eea0880838無授權條款27 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫7 天前更新

List, inspect, create, update, and delete HubSpot workflows (v4 flows API) from the `hubspot` agent CLI, not the `hs` developer CLI. Classic v3 contact-based workflows are not covered.

AI 產生的概覽

透過 hubspot 代理 CLI 管理 HubSpot v4 工作流程:列出、檢視、建立、更新與刪除自動化流程。

功能
這個技能說明如何透過 hubspot 代理 CLI(而非 hs 開發者 CLI)操作 HubSpot 自動化工作流程。內容涵蓋列出工作流程、依名稱尋找、讀取完整 JSON 主體、從 JSON 檔案或標準輸入建立工作流程、以完整 PUT 的「取得—修改—提交」方式更新,以及搭配 dry-run、digest 與 confirm 保護措施的刪除操作。它也說明透過 OAuth 登入或服務金鑰進行驗證、動作圖中的分支與匯流,以及僅支援 v4 列表、沒有 search 子命令等已知限制。參考檔案提供工作流程 JSON 主體結構與聯絡人流程、分支流程範例。
適用情境
當你需要從命令列檢視、建立、修改或刪除 HubSpot 自動化工作流程時使用,包括依名稱尋找工作流程或以現有工作流程為範本複製。它也適用於需要區分 hubspot 代理 CLI 與 hs 開發者 CLI,或需要建立與更新呼叫所需正確 JSON 主體的情況。
執行需求
需要具備工作流程子命令的 hubspot 代理 CLI,以及用於篩選列表輸出的 jq。驗證需要帶 automation 權限範圍的 hubspot auth login,或 HUBSPOT_ACCESS_TOKEN 服務金鑰,並需要連線至 HubSpot API 的網路存取。這個技能不含指令碼,只有 Markdown 與 JSON 參考檔案。

Which CLI

Two different HubSpot CLIs share a confusing resemblance — don't mix them up:

  • hubspot — the HubSpot agent CLI that this skill library targets. It manages CRM data and automation, and it does have native workflow commands: hubspot workflows list|get|create|update|delete.
  • hs — the HubSpot developer CLI (@hubspot/cli), for building dev projects: themes, modules, serverless functions, UI extensions, and private apps (hs project, hs upload, hs create). It does not create or manage workflow records.

To create or manage a workflow, use hubspot workflows ... — not hs.

If anything here ever drifts, hubspot workflows --help and hs --help are authoritative.

Resources

FileWhen to use
resources/workflow-json-reference.mdBody shape for create/update — the action graph, branching/convergence, enrollment, full-PUT pitfall
resources/example-contact-flow.jsonMinimal valid CONTACT_FLOW skeleton for hubspot workflows create --file
resources/example-branching-flow.jsonIllustrates branch convergence — two paths pointing connection.nextActionId at one shared downstream action

Source of truth

hubspot workflows --help lists five subcommands: list, get, create, update, delete. There is no search — finding by name is list | jq. For JSONL piping, pagination, and destructive dry-run/digest/confirm patterns, this skill builds on bulk-operations/SKILL.md — re-read that first.

Auth — OAuth login or service key

Every hubspot workflows command works with both hubspot auth login (user OAuth) and HUBSPOT_ACCESS_TOKEN (a service key). The v4 flows API accepts user tokens; the automation scope it needs is now part of the CLI app's requestable scopes, so a plain hubspot auth login is enough:

bash
hubspot auth login          # user OAuth — grant the "automation" scope when prompted# orexport HUBSPOT_ACCESS_TOKEN=<service-key>   # create at Settings → Integrations → Service keyshubspot workflows list

If a user token 403s with a missing-scope error, re-run hubspot auth login so the newly added automation scope is granted.

1. List + find by name

bash
hubspot workflows list                       # JSONL: id, name, isEnabled, type, objectTypeId, revisionIdhubspot workflows list --format table        # for human scanning
# Find by name — case-insensitive substringhubspot workflows list | jq -c 'select(.name | test("Welcome"; "i"))'
# Exact matchhubspot workflows list | jq -c 'select(.name == "MQL Nurture")'

List reads /automation/v4/flows only. Classic contact-based workflows from /automation/v3/workflows are not returned, so an empty result does not necessarily indicate a missing automation scope. V4 results are paginated at 100 per call; loop with --after until meta.next is empty — see bulk-operations/SKILL.md "Pagination". See resources/json-patterns.md in bulk-operations for more jq filters.

2. Get + read shape

bash
hubspot workflows get 12345678                            # onehubspot workflows get 12345678 87654321                   # batch positionalprintf '%s\n' 12345678 87654321 | hubspot workflows get   # batch stdinhubspot workflows get 12345678 > workflow.json            # save for editing

Get returns the full body (actions, enrollmentCriteria, revisionId, …) — the shape required by create/update. See resources/workflow-json-reference.md.

3. Create from JSON

bash
hubspot workflows create --file workflow.json --dry-runhubspot workflows create --file workflow.jsoncat workflow.json | hubspot workflows create         # stdin also works

Set type (CONTACT_FLOW or PLATFORM_FLOW), flowType (WORKFLOW), and objectTypeId (e.g. 0-1 for contacts) — all required on create. See resources/workflow-json-reference.md for the body shape and resources/example-contact-flow.json for the minimal template. Easiest path: get an existing similar workflow as a starting template rather than hand-writing the JSON.

Pitfall: create --dry-run does not validate the body. It echoes the JSON back with ok:true and makes no API call — a green dry-run proves only that the input is well-formed JSON, not that it's a valid create (a body missing type/flowType/objectTypeId/actions still returns ok:true). The only real validation is the live create. By contrast, update --dry-run does reject a body missing required fields like revisionId.

Branching and convergence. A LIST_BRANCH action forks the path on filter criteria; each branch — and the defaultBranch — carries a connection to the action it continues to. Because connections target actions by nextActionId, branches can converge: point two branches at the same actionId and both paths continue to one shared action, no duplication. See the branching section of resources/workflow-json-reference.md and resources/example-branching-flow.json.

4. Update — full PUT, get-modify-put round-trip

Update is a full replace. The body must include revisionId (from get) and type. Read-only fields (createdAt, updatedAt, dataSources) are stripped automatically. Update is gated: dry-run first, then re-run with --digest <hash> --confirm <flowId>.

bash
# 1. Fetch current statehubspot workflows get 12345678 > workflow.json
# 2. Edit workflow.json (preserve revisionId, type, and any field you want to keep)
# 3. Dry-run — emits a digesthubspot workflows update 12345678 --file workflow.json --dry-run
# 4. Apply — confirm value is the flow idhubspot workflows update 12345678 --file workflow.json \  --digest blast-xxxxxxxx --confirm 12345678

Pitfall: partial bodies silently clear fields. Sending only actions will wipe enrollmentCriteria. Always start from the full get response.

5. Delete — destructive, link to bulk safety flow

bash
# 1. Dry-run — emits a digest + the confirm hinthubspot workflows delete 12345678 --dry-run
# 2. Re-run with digest + confirm. Confirm value is the workflow's NAME, not its id.hubspot workflows delete 12345678 --digest blast-xxxxxxxx --confirm "New lead routing"

The dry-run output includes an apply_command_hint — copy the exact confirm string from there to avoid quoting surprises. Workflows cannot be restored through the automation API after deletion; check hubspot history --since 1h for an audit record. The full safety pattern (digest, 5-minute expiry, history recovery) is documented in bulk-operations/SKILL.md "Safe destructive workflow".

Known limitations

  • list covers only v4 flows. Classic contact-based workflows from /automation/v3/workflows are not returned.
  • No hubspot workflows search — list | jq is the workaround.
  • hubspot segments provides CRM lists (list, get, create, update, update-filters, delete, restore, members-list / members-add / members-remove). List-membership enrollment triggers are part of the workflow body (enrollmentCriteria), so configure them through hubspot workflows create / update — get the list ID with hubspot segments list / get and copy the enrollmentCriteria shape from a real workflows get (see resources/workflow-json-reference.md). No UI step required.
  • Sales Hub sequences are a separate surface from workflows: hubspot sequences reads them (list --user-id <id>, get <id> --user-id <id>, enrollments <contact_id>) but is read-only — no create/update/delete/enroll, and it is not a CRM object type (Sales Hub Professional+, automation.sequences.read scope). Workflow create/update/delete stays under hubspot workflows. This surface grows; recheck hubspot --help / CHANGELOG.md before assuming an API is missing.
  • dataSources is read-only — cannot be rewired via update.

來源與署名

來源:hubspot/agent-cli-skills位於workflow-automation提交a8eea08

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架