HubSpot Implementation Plan Generator
Generate a phased, prioritized cleanup and optimization plan from a HubSpot audit report. This skill reads audit findings, sequences them into phases with dependencies, and outputs a detailed implementation roadmap with automation feasibility for each task.
Prerequisites
- - A completed audit report in
reports/ (generated by /hubspot-audit) - If no audit report exists, instruct the user to run
/hubspot-audit first
Steps
1. Load the Audit Report
Find the most recent file matching reports/hubspot-audit-*.md. Read it and extract:
- - Letter grades per dimension
- Exact counts for each metric
- The priority recommendations section
If multiple reports exist, use the most recent by date in the filename.
2. Generate the Phased Plan
Analyze the audit findings and organize cleanup tasks into five phases. Each phase builds on the previous one. Only include tasks that are relevant based on the audit findings — if a dimension scored A, skip or deprioritize its tasks.
Phase 1: Immediate Hygiene (Week 1-2)
These tasks have direct billing or deliverability impact. Do them first.
| Task | Trigger (from audit) | Skill | Automation | Est. Time |
|---|
| Delete contacts with no email address | Data Completeness: missing email count > 0 | INLINECODE4 | Fully scriptable | 1 hr |
| Suppress hard bounced contacts |
Deliverability: hard bounce count > 0 |
/suppress-hard-bounced | Hybrid (API + workflow) | 1-2 hrs |
| Suppress global unsubscribes | Deliverability: global unsub count > 0 |
/suppress-global-unsubscribes | Hybrid (API + workflow) | 1-2 hrs |
| Suppress ghost contacts (never engaged) | Engagement: never-engaged count > threshold |
/suppress-ghost-contacts | Hybrid (API + workflow) | 2-3 hrs |
| Merge duplicate companies | Duplicates: duplicate domain count > 0 |
/merge-duplicate-companies | Fully scriptable | 2-4 hrs |
| Reassign deactivated owner contacts | Owner Health: deactivated owners with records > 0 |
/reassign-deactivated-owners | Fully scriptable | 1-2 hrs |
Key constraint: hs_marketable_status is read-only via API. All suppression tasks use a hybrid approach:
- 1. Script sets a custom flag property (e.g.,
suppress_reason) via API - A HubSpot workflow triggers on that flag and sets the contact as non-marketing
This workflow must be built manually in the HubSpot UI before running suppression scripts.
Phase 2: Data Enrichment (Week 3-4)
Fill data gaps to enable segmentation and scoring.
| Task | Trigger (from audit) | Skill | Automation | Est. Time |
|---|
| Enrich company name from association | Completeness: missing company name | INLINECODE12 | Fully scriptable | 1-2 hrs |
| Enrich contact industry from company |
Completeness: missing industry |
/enrich-industry | Fully scriptable | 1-2 hrs |
| Standardize country/state values | Completeness: inconsistent geo data |
/standardize-geo-values | Fully scriptable | 2-3 hrs |
| Backfill country/state from IP or company | Completeness: missing geo data |
/backfill-geo-data | Fully scriptable | 2-3 hrs |
| Fix lifecycle stages | Completeness: missing or incorrect lifecycle stages |
/fix-lifecycle-stages | Fully scriptable | 2-3 hrs |
| Assign unowned contacts | Owner Health: unowned contacts > 0 |
/assign-unowned-contacts | Fully scriptable | 1-2 hrs |
Key constraint: Lifecycle stage is forward-only in HubSpot. To set a contact to an earlier stage, you must first clear the property (set to empty string), then set the desired value. The script must handle this two-step process.
Phase 3: Segmentation & Scoring (Week 4-6)
Build the targeting infrastructure.
| Task | Trigger (from audit) | Skill | Automation | Est. Time |
|---|
| Create ICP tier property and workflows | Always (after enrichment) | INLINECODE18 | Hybrid (API + workflow) | 3-4 hrs |
| Build lead scoring model |
Always (after enrichment) |
/build-lead-scoring | Manual UI only | 4-6 hrs |
| Build smart lists for segments | Always (after scoring) |
/build-smart-lists | Fully scriptable (Lists API) | 2-3 hrs |
| Create segment lists for campaigns | Always (after smart lists) |
/create-segment-lists | Fully scriptable | 1-2 hrs |
Key constraint: HubSpot's lead scoring tool is UI-only. There is no API for configuring scoring rules. Build the scoring model manually based on the ICP tier data from the previous step.
Phase 4: Automation (Week 6-8)
Set up ongoing automated hygiene.
| Task | Trigger (from audit) | Skill | Automation | Est. Time |
|---|
| New contact hygiene workflow | Always | INLINECODE22 | Manual UI only | 2-3 hrs |
| Engagement-based suppression workflow |
Engagement grade D or F |
/engagement-suppression-workflow | Manual UI only | 2-3 hrs |
| Lifecycle stage progression workflow | Always |
/lifecycle-progression-workflow | Manual UI only | 2-3 hrs |
| Bounce monitoring workflow | Deliverability grade C or worse |
/bounce-monitoring-workflow | Manual UI only | 1-2 hrs |
Key constraint: The HubSpot Workflows API (v4) is beta and unstable. Do not attempt to create workflows via API. However, you have three options for building each workflow:
- 1. Manual UI Build -- Follow the step-by-step instructions in each skill. Most reliable, full control over triggers and actions.
- 2. HubSpot Breeze AI -- Use Breeze (Automation > Workflows > Create workflow > "Describe what you want") to generate a workflow skeleton from a natural language prompt. Each workflow skill includes a ready-to-paste Breeze prompt. Critical caveat: Breeze creates event-based triggers (OR logic) instead of filter-based triggers (AND logic). You MUST manually verify and fix trigger conditions after Breeze generates the workflow. Breeze also cannot create "is unknown" branch conditions, copy properties from associated objects, or configure re-enrollment rules.
- 3. Claude Anthropic Chrome Extension -- Use the Claude Chrome extension to interact with the HubSpot workflow builder UI directly. Claude can see the UI and click through each step, which is often more accurate than Breeze for complex workflows with nested branches or multi-condition AND triggers.
Each workflow skill (/new-contact-hygiene-workflow, /engagement-suppression-workflow, /lifecycle-progression-workflow, /bounce-monitoring-workflow) documents all three options with specific guidance and Breeze prompts tailored to that workflow. The ICP tier classification workflows in /create-icp-tiers also include these three options.
Note on Fast Mode: If you're using Claude Code's Fast Mode to speed up workflow creation,
be aware of the billing model: Haiku usage is included in your subscription, but Opus in
Fast Mode consumes extra credits. For workflow building tasks (which are UI-heavy and may
require many interactions), consider whether the speed tradeoff is worth the credit cost.
Phase 5: Ongoing Maintenance (Ongoing)
Recurring tasks to keep the CRM clean.
| Task | Frequency | Skill | Automation | Est. Time |
|---|
| Weekly cleanup routine | Weekly | INLINECODE31 | Checklist (manual) | 1 hr/week |
| Clean up unused lists |
Monthly |
/cleanup-lists | Partially scriptable | 1-2 hrs |
| Clean up unused forms | Monthly |
/cleanup-forms | Partially scriptable | 1-2 hrs |
| Clean up stale workflows | Monthly |
/cleanup-workflows | Partially scriptable | 1-2 hrs |
| Clean up dashboards | Quarterly |
/cleanup-dashboards | Manual UI only | 1-2 hrs |
| Clean up stale deals | Quarterly |
/cleanup-deals | Partially scriptable | 2-3 hrs |
| Clean up unused properties | Quarterly |
/cleanup-properties | Partially scriptable | 2-3 hrs |
| Review lead owners | Quarterly |
/cleanup-lead-owners | Partially scriptable | 1-2 hrs |
| Review bounced contacts | Monthly |
/review-bounced-contacts | Partially scriptable | 1 hr |
| Quarterly full database audit | Quarterly |
/hubspot-audit | Fully scriptable | 1 hr |
3. Build the Dependency Graph
Map dependencies between tasks. A task cannot start until its dependencies are complete:
CODEBLOCK0
4. Compute Effort Summary
Sum up estimated hours and present:
| Category | Hours |
|---|
| Fully scriptable tasks | X hrs |
| Hybrid tasks (API + manual workflow) |
X hrs |
| Manual UI tasks | X hrs |
|
Total estimated effort |
X hrs |
5. Key Technical Constraints Summary
Include this section in every plan:
- 1.
hs_marketable_status is read-only via API — This is the single biggest blocker. Any task that needs to suppress or unsuppress a contact as a marketing contact cannot do so directly via API. Workaround: set a custom flag property via API, then trigger a HubSpot workflow on that flag to change marketing status.
- 2. HubSpot Workflows API v4 is beta/unstable — Do not attempt to create workflows via API. Build all workflows manually in the HubSpot UI using the specifications from each skill.
- 3. Lifecycle stage is forward-only — HubSpot prevents setting a contact to an earlier lifecycle stage. To fix this, clear the property first (set to empty string via API), then set the desired stage in a second API call.
- 4. Search API caps at 10,000 results — Any query that might return more than 10K results must be segmented (e.g., by date range or property value) and summed. This affects most counting queries on large portals.
- 5. Rate limit: 100 requests per 10 seconds — All scripts must implement rate limiting. Use exponential backoff on HTTP 429 responses.
Output Format
Save the plan to reports/implementation-plan-{YYYY-MM-DD}.md with this structure:
CODEBLOCK1 text
[Phase 1] ──→ [Phase 2] ──→ [Phase 3] ──→ [Phase 4] ──→ [Phase 5]
│ │
├─ company name ├─ ICP tiers
│ └─→ industry │ └─→ lead scoring
├─ geo std │ └─→ smart lists
│ └─→ geo fill │
├─ lifecycle │
└─ assign owners │
CODEBLOCK2
6. Handle Gaps — Missing Skills
After mapping all audit findings to skills, check if any findings have no matching skill. This is expected — every HubSpot portal is different and some issues are unique.
For each unmapped finding:
- 1. Flag it in the plan: Add a section called "Custom Skills Needed" listing each gap.
- 2. Offer to create the skill:
CODEBLOCK3
- 3. Ask about upstream contribution:
CODEBLOCK4
- 4. If the user agrees, for each new skill:
- Create
skills/<name>/SKILL.md with proper frontmatter and the 4-stage pattern
- Add it to the plan as a regular task
- After all skills are created, commit and push to the user's fork
- Open a PR to
tomgranot/hubspot-admin-skills with a description of what each skill does
7. Contribution Quick-Start
If the user wants to help improve the skill set (whether they found gaps or not), provide these instructions:
CODEBLOCK5
After Running
- - Print the file path of the saved plan
- Highlight the Phase 1 tasks as immediate priorities
- Remind the user to build the suppression workflow in HubSpot UI before running hybrid tasks
- Suggest starting with
/delete-no-email-contacts as the first concrete action - Flag any findings that need custom skills (Step 6) and offer to create them
- Provide the contribution quick-start if the user shows interest in contributing
HubSpot 实施计划生成器
根据 HubSpot 审计报告生成分阶段、按优先级排序的清理和优化计划。此技能读取审计发现,将其按阶段排序并标注依赖关系,输出详细的实施路线图,并标明每项任务的自动化可行性。
前提条件
- - 在 reports/ 目录中存在一份完整的审计报告(由 /hubspot-audit 生成)
- 如果不存在审计报告,请指示用户先运行 /hubspot-audit
步骤
1. 加载审计报告
查找与 reports/hubspot-audit-*.md 匹配的最新文件。读取并提取以下内容:
- - 每个维度的字母等级
- 每个指标的精确计数
- 优先级建议部分
如果存在多份报告,使用文件名中日期最新的那份。
2. 生成分阶段计划
分析审计发现,将清理任务组织为五个阶段。每个阶段建立在前一个阶段的基础上。仅包含与审计发现相关的任务——如果某个维度评分为 A,则跳过或降低其任务的优先级。
阶段 1:即时卫生(第 1-2 周)
这些任务直接影响计费或送达率。优先处理。
| 任务 | 触发条件(来自审计) | 技能 | 自动化 | 预估时间 |
|---|
| 删除无邮箱地址的联系人 | 数据完整性:缺失邮箱计数 > 0 | /delete-no-email-contacts | 完全可脚本化 | 1 小时 |
| 抑制硬退回联系人 |
送达率:硬退回计数 > 0 | /suppress-hard-bounced | 混合(API + 工作流) | 1-2 小时 |
| 抑制全局退订联系人 | 送达率:全局退订计数 > 0 | /suppress-global-unsubscribes | 混合(API + 工作流) | 1-2 小时 |
| 抑制幽灵联系人(从未互动) | 互动率:从未互动计数 > 阈值 | /suppress-ghost-contacts | 混合(API + 工作流) | 2-3 小时 |
| 合并重复公司 | 重复:重复域名计数 > 0 | /merge-duplicate-companies | 完全可脚本化 | 2-4 小时 |
| 重新分配已停用所有者联系人 | 所有者健康:有记录的已停用所有者 > 0 | /reassign-deactivated-owners | 完全可脚本化 | 1-2 小时 |
关键约束: hsmarketablestatus 通过 API 为只读。所有抑制任务使用混合方法:
- 1. 脚本通过 API 设置自定义标记属性(例如 suppress_reason)
- HubSpot 工作流根据该标记触发,将联系人设置为非营销状态
在运行抑制脚本之前,必须在 HubSpot UI 中手动构建此工作流。
阶段 2:数据丰富(第 3-4 周)
填补数据空白,以实现细分和评分。
| 任务 | 触发条件(来自审计) | 技能 | 自动化 | 预估时间 |
|---|
| 从关联关系丰富公司名称 | 完整性:缺少公司名称 | /enrich-company-name | 完全可脚本化 | 1-2 小时 |
| 从公司丰富联系人行业 |
完整性:缺少行业 | /enrich-industry | 完全可脚本化 | 1-2 小时 |
| 标准化国家/州值 | 完整性:地理数据不一致 | /standardize-geo-values | 完全可脚本化 | 2-3 小时 |
| 从 IP 或公司回填国家/州 | 完整性:缺少地理数据 | /backfill-geo-data | 完全可脚本化 | 2-3 小时 |
| 修复生命周期阶段 | 完整性:缺少或错误生命周期阶段 | /fix-lifecycle-stages | 完全可脚本化 | 2-3 小时 |
| 分配无所有者联系人 | 所有者健康:无所有者联系人 > 0 | /assign-unowned-contacts | 完全可脚本化 | 1-2 小时 |
关键约束: HubSpot 中的生命周期阶段是单向前进的。要将联系人设置为更早的阶段,必须先清除该属性(设置为空字符串),然后设置所需值。脚本必须处理此两步过程。
阶段 3:细分与评分(第 4-6 周)
构建目标定位基础设施。
| 任务 | 触发条件(来自审计) | 技能 | 自动化 | 预估时间 |
|---|
| 创建 ICP 层级属性和工作流 | 始终(丰富后) | /create-icp-tiers | 混合(API + 工作流) | 3-4 小时 |
| 构建线索评分模型 |
始终(丰富后) | /build-lead-scoring | 仅手动 UI | 4-6 小时 |
| 构建细分智能列表 | 始终(评分后) | /build-smart-lists | 完全可脚本化(列表 API) | 2-3 小时 |
| 创建活动细分列表 | 始终(智能列表后) | /create-segment-lists | 完全可脚本化 | 1-2 小时 |
关键约束: HubSpot 的线索评分工具仅限 UI 操作。没有用于配置评分规则的 API。根据上一步的 ICP 层级数据手动构建评分模型。
阶段 4:自动化(第 6-8 周)
设置持续的自动化卫生维护。
| 任务 | 触发条件(来自审计) | 技能 | 自动化 | 预估时间 |
|---|
| 新联系人卫生工作流 | 始终 | /new-contact-hygiene-workflow | 仅手动 UI | 2-3 小时 |
| 基于互动率的抑制工作流 |
互动率等级 D 或 F | /engagement-suppression-workflow | 仅手动 UI | 2-3 小时 |
| 生命周期阶段推进工作流 | 始终 | /lifecycle-progression-workflow | 仅手动 UI | 2-3 小时 |
| 退回监控工作流 | 送达率等级 C 或更差 | /bounce-monitoring-workflow | 仅手动 UI | 1-2 小时 |
关键约束: HubSpot 工作流 API(v4)处于测试阶段且不稳定。不要尝试通过 API 创建工作流。但是,您有三种选项来构建每个工作流:
- 1. 手动 UI 构建——按照每个技能中的分步说明操作。最可靠,完全控制触发器和操作。
- 2. HubSpot Breeze AI——使用 Breeze(自动化 > 工作流 > 创建工作流 > 描述您想要的内容)从自然语言提示生成工作流骨架。每个工作流技能都包含一个可直接粘贴的 Breeze 提示。关键注意事项: Breeze 创建基于事件的触发器(OR 逻辑)而非基于过滤器的触发器(AND 逻辑)。在 Breeze 生成工作流后,您必须手动验证和修复触发器条件。Breeze 也无法创建未知分支条件、从关联对象复制属性或配置重新注册规则。
- 3. Claude Anthropic Chrome 扩展——使用 Claude Chrome 扩展直接与 HubSpot 工作流构建器 UI 交互。Claude 可以看到 UI 并逐步点击,对于具有嵌套分支或多条件 AND 触发器的复杂工作流,通常比 Breeze 更准确。
每个工作流技能(/new-contact-hygiene-workflow、/engagement-suppression-workflow、/lifecycle-progression-workflow、/bounce-monitoring-workflow)都记录了所有三种选项,并提供了针对该工作流的具体指导和 Breeze 提示。/create-icp-tiers 中的 ICP 层级分类工作流也包含这三种选项。
关于快速模式的说明:如果您使用 Claude Code 的快速模式来加速工作流创建,
请注意计费模式:Haiku 使用包含在您的订阅中,但快速模式下的 Opus
会消耗额外积分。对于工作流构建任务(这些任务 UI 密集且可能需要
多次交互),请考虑速度权衡是否值得积分成本。
阶段 5:持续维护(持续进行)
保持 CRM 清洁的重复性任务。
| 任务 | 频率 | 技能 | 自动化 | 预估时间 |
|---|
| 每周清理例程 | 每周 | /weekly-cleanup-routine | 清单(手动) | 1 小时/周 |
| 清理未使用列表 |
每月 | /cleanup-lists | 部分可脚本化 | 1-2 小时 |
| 清理未使用表单 | 每月 | /cleanup-forms | 部分可脚本化 | 1-2 小时 |
| 清理过期工作流 | 每月 | /cleanup-workflows |