New Contact Hygiene Workflow
Build a workflow that automatically enriches every new contact at creation time. This ensures contacts enter the database with a lifecycle stage, company name, and industry before any human touches them.
Why This Cannot Be Fully Automated via API
Three HubSpot API limitations prevent full automation:
- 1. "Is unknown" branch conditions are not supported programmatically — the Workflows API cannot create branches that check whether a property has never been set.
- Copy from associated object actions (e.g., copy company name from the associated company) are not available via API.
- Workflows API v4 is beta and unstable — production workflows should not depend on it.
You have three options for building this workflow, described below.
Building the Workflow: Three Options
Option 1: Manual UI Build
Follow the step-by-step instructions in the "Execute" section below. This is the most reliable method and gives you full control over every trigger, branch, and action.
Option 2: HubSpot Breeze AI
HubSpot's built-in Breeze AI can generate a workflow skeleton from a natural language prompt. Navigate to Automation > Workflows > Create workflow > "Describe what you want" and paste the following prompt:
CODEBLOCK0
CRITICAL WARNING: Breeze trigger limitations. Breeze creates event-based triggers (OR logic) instead of filter-based triggers (AND logic). After Breeze creates the workflow, you MUST manually verify and fix the trigger/enrollment conditions in the UI. Breeze is best used for creating the workflow skeleton (actions, branches, delays) -- the trigger conditions almost always need manual correction.
Additional Breeze limitations for this workflow:
- - Breeze cannot create "is unknown" branch conditions -- you must add these manually
- Breeze cannot create "copy property from associated object" actions -- you must add these manually
- Breeze cannot configure re-enrollment rules
Given these limitations, Breeze provides minimal value for this particular workflow. Manual build (Option 1) is recommended.
Option 3: Claude Anthropic Chrome Extension
The Claude Anthropic Chrome extension lets Claude see and interact with the HubSpot workflow builder UI directly. You can describe the workflow logic in natural language and Claude will click through the UI to build it. This is often more accurate than Breeze for complex workflows because Claude can verify each step visually, including "is unknown" branch conditions and copy-from-association actions that Breeze cannot handle.
To use this approach:
- 1. Open the HubSpot workflow builder in Chrome (Automation > Workflows > Create workflow)
- Activate the Claude Chrome extension
- Describe the workflow using the design diagram and instructions from this skill
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.
Prerequisites
- - HubSpot Marketing Professional or Enterprise plan
- Workflow creation permissions in HubSpot
- Company association enrichment completed (run
/enrich-company-name and /enrich-industry first for existing contacts)
Workflow Design
CODEBLOCK1
Step-by-Step Build Instructions
Stage 1: Before — Verify Prerequisites
- 1. Confirm company enrichment processes have run for existing data.
- Open HubSpot > Automation > Workflows > Create workflow.
- Select "Contact-based" workflow, start from scratch.
Stage 2: Execute — Build the Workflow
- 1. Set enrollment trigger:
- Property: "Create date" > "is known"
- This enrolls every new contact automatically.
- 2. Add action: Set property value
- Property: "Lifecycle stage"
- Value: "Lead"
- Condition: Only if lifecycle stage is unknown (use an if/then branch before this step, or rely on HubSpot's "only if empty" option if available in your plan).
- 3. Add action: Copy property
- Source: Associated company > "Company name"
- Target: Contact > "Company" property
- 4. Add action: Copy property
- Source: Associated company > "Industry"
- Target: Contact > "Industry" property
- 5. Add delay: a short delay (3-10 minutes, recommended: 5)
- Purpose: Allow time for company associations to sync (especially for form submissions or integrations that create contacts before associating them). Adjust the duration based on how quickly your integrations typically create associations.
- 6. Add if/then branch:
- Condition: Contact "Company" property is unknown
- YES branch: Add internal notification to CRM admin — "New contact {firstname} {lastname} ({email}) has no company association after enrichment attempt."
- NO branch: No further action needed (contact is enriched).
- 7. Review settings:
- Re-enrollment: OFF (each contact should only go through this once)
- Unenrollment: None needed
- Time zone: Not applicable (no time-based actions beyond delay)
- 8. Turn on the workflow.
Stage 3: After — Verify
- 1. Create a test contact manually. Confirm:
- Lifecycle stage is set to "Lead"
- Company name copied from associated company
- Industry copied from associated company
- 2. Create a test contact with no company association. Confirm:
- Admin notification fires after the configured delay
- 3. Check workflow history for any errors in the first 24 hours.
Stage 4: Rollback
- 1. Turn off the workflow in HubSpot > Automation > Workflows.
- Contacts already enriched retain their values — no destructive changes to undo.
- If lifecycle stages were set incorrectly, use the Search API to find contacts created after the workflow activation date and reset as needed.
Edge Cases
- - Contacts created via import: These fire the trigger. If imports include company name/industry, the copy action will overwrite with the associated company's values. Consider excluding imported contacts via a list filter.
- Contacts without company associations: The copy action silently fails. The branch handles notification.
- Multiple associated companies: HubSpot copies from the primary associated company only.
新联系人卫生工作流
构建一个工作流,在创建每个新联系人时自动丰富其信息。这确保联系人在任何人接触之前,就已带有生命周期阶段、公司名称和行业信息进入数据库。
为何无法通过API完全自动化
三个HubSpot API限制阻碍了完全自动化:
- 1. 是否未知分支条件无法通过编程方式支持——工作流API无法创建检查属性是否从未被设置的分支。
- 从关联对象复制操作(例如,从关联公司复制公司名称)无法通过API实现。
- 工作流API v4仍处于测试阶段且不稳定——生产环境工作流不应依赖它。
你有三个构建此工作流的选项,如下所述。
构建工作流:三个选项
选项1:手动UI构建
按照下方执行部分的分步说明操作。这是最可靠的方法,让你完全控制每个触发器、分支和操作。
选项2:HubSpot Breeze AI
HubSpot内置的Breeze AI可以从自然语言提示生成工作流骨架。导航至自动化 > 工作流 > 创建工作流 > 描述你想要的内容,粘贴以下提示:
创建一个基于联系人的工作流,在联系人创建时触发。它应:
- 1. 如果生命周期阶段为空,则设置为潜在客户
- 从关联公司复制公司名称到联系人的公司属性
- 从关联公司复制行业到联系人的行业属性
- 等待短暂延迟(3-10分钟,建议:5)
- 检查联系人的公司属性是否仍为空——如果是,向管理员发送内部通知,说明该联系人没有公司关联
关键警告:Breeze触发器限制。 Breeze创建的是基于事件的触发器(OR逻辑),而非基于筛选器的触发器(AND逻辑)。Breeze创建工作流后,你必须在UI中手动验证并修复触发器/注册条件。Breeze最适合用于创建工作流骨架(操作、分支、延迟)——触发器条件几乎总是需要手动修正。
此工作流的其他Breeze限制:
- - Breeze无法创建是否未知分支条件——你必须手动添加这些条件
- Breeze无法创建从关联对象复制属性操作——你必须手动添加这些操作
- Breeze无法配置重新注册规则
鉴于这些限制,Breeze对此特定工作流提供的价值极小。建议使用手动构建(选项1)。
选项3:Claude Anthropic Chrome扩展
Claude Anthropic Chrome扩展让Claude能够直接查看并与HubSpot工作流构建器UI交互。你可以用自然语言描述工作流逻辑,Claude将点击UI来构建它。对于复杂工作流,这通常比Breeze更准确,因为Claude可以直观地验证每个步骤,包括Breeze无法处理的是否未知分支条件和从关联复制操作。
使用此方法:
- 1. 在Chrome中打开HubSpot工作流构建器(自动化 > 工作流 > 创建工作流)
- 激活Claude Chrome扩展
- 使用此技能中的设计图和说明描述工作流
关于快速模式的说明:如果你使用Claude Code的快速模式来加速工作流创建,
请注意计费模式:Haiku使用包含在你的订阅中,但快速模式中的Opus
会消耗额外积分。对于工作流构建任务(这些任务UI操作密集,可能需要
多次交互),请考虑速度提升是否值得积分成本。
前提条件
- - HubSpot营销专业版或企业版计划
- HubSpot中的工作流创建权限
- 公司关联丰富已完成(先对现有联系人运行/enrich-company-name和/enrich-industry)
工作流设计
触发器:联系人创建日期已知
(为每个新联系人触发)
│
▼
┌─────────────────────────┐
│ 设置生命周期阶段 │
│ = 潜在客户(如果为空) │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 从关联公司复制公司名称 │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 从关联公司复制行业 │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 延迟:短暂等待 │
│ (3-10分钟,建议:5) │
└────────────┬────────────┘
│
▼
┌─────────────────────────┐
│ 如果/则分支: │
│ 公司名称是否未知? │
├──────────┬──────────────┘
│ 是 │ 否
│ │
▼ ▼
重试 继续
复制 (已丰富)
+ 通知
管理员
分步构建说明
阶段1:之前——验证前提条件
- 1. 确认公司丰富流程已对现有数据运行。
- 打开HubSpot > 自动化 > 工作流 > 创建工作流。
- 选择基于联系人的工作流,从头开始创建。
阶段2:执行——构建工作流
- 1. 设置注册触发器:
- 属性:创建日期 > 已知
- 这将自动注册每个新联系人。
- 2. 添加操作:设置属性值
- 属性:生命周期阶段
- 值:潜在客户
- 条件:仅当生命周期阶段未知时(在此步骤前使用if/then分支,或根据你的计划使用HubSpot的仅当为空时选项)。
- 3. 添加操作:复制属性
- 来源:关联公司 > 公司名称
- 目标:联系人 > 公司属性
- 4. 添加操作:复制属性
- 来源:关联公司 > 行业
- 目标:联系人 > 行业属性
- 5. 添加延迟:短暂延迟(3-10分钟,建议:5)
- 目的:留出时间让公司关联同步(特别是对于在关联之前创建联系人的表单提交或集成)。根据你的集成通常创建关联的速度调整持续时间。
- 6. 添加if/then分支:
- 条件:联系人公司属性未知
- 是分支:向CRM管理员添加内部通知——新联系人{名字}{姓氏}({邮箱})在丰富尝试后没有公司关联。
- 否分支:无需进一步操作(联系人已丰富)。
- 7. 检查设置:
- 重新注册:关闭(每个联系人应只经历一次此流程)
- 取消注册:无需
- 时区:不适用(除延迟外无基于时间的操作)
- 8. 打开工作流。
阶段3:之后——验证
- 1. 手动创建一个测试联系人。确认:
- 生命周期阶段设置为潜在客户
- 公司名称从关联公司复制
- 行业从关联公司复制
- 2. 创建一个没有公司关联的测试联系人。确认:
- 在配置的延迟后触发管理员通知
- 3. 检查工作流历史记录,查看前24小时内是否有任何错误。
阶段4:回滚
- 1. 在HubSpot > 自动化 > 工作流中关闭工作流。
- 已丰富的联系人保留其值——无需撤销破坏性更改。
- 如果生命周期阶段设置错误,使用搜索API查找在工作流激活日期后创建的联系人,并根据需要重置。
边缘情况
- - 通过导入创建的联系人: 这些会触发触发器。如果导入包含公司名称/行业,复制操作将用关联公司的值覆盖。考虑通过列表筛选器排除导入的联系人。
- 没有公司关联的联系人: 复制操作静默失败。分支处理通知。
- 多个关联公司: HubSpot仅从主要关联公司复制。