Enrich Contact Industry from Associated Company
Copy industry data from company records to their associated contacts. In a typical B2B CRM, company records have industry populated at high rates (80-90%) while contact records have almost none. This workflow bridges that gap automatically.
Why This Matters
Without industry on contact records, you cannot segment email campaigns by vertical. For B2B companies targeting specific industries, this makes the difference between spray-and-pray email blasts and targeted, relevant messaging. Industry data on contacts also feeds ICP tier classification and lead scoring models.
Prerequisites
- - HubSpot Marketing Hub Professional or Sales Hub Professional (for Workflows)
- Company name enrichment (enrich-company-name skill) should be completed first, as it may trigger new company associations
- Access to Settings > Properties to verify/create the contact Industry property
Plan
- 1. Verify the contact Industry property exists and is compatible with the company Industry property
- Audit how many contacts can be enriched (before state)
- Build a workflow that copies industry from the associated company
- Verify enrichment results (after state)
Before State
Check Property Compatibility
This is the most important pre-step. Contacts may have TWO industry properties: industry and industry_name. You must verify which one HubSpot uses for lists and reports.
- 1. Go to Settings > Properties > Contact properties
- Search for "Industry"
- Note ALL industry-related properties on the contact object
- Check which property is used in existing lists, reports, and workflows
- The target property must be compatible with the company Industry property:
- If both are
dropdown select: option values must match exactly (same spelling, same case)
- If the contact property is
single-line text: it will accept any value (safest option)
- If unsure, use single-line text to avoid copy failures
If no contact Industry property exists, create one:
- - Object: Contact
- Group: Contact information
- Label: Industry
- Field type: Dropdown select (copy all values from the company Industry property) OR Single-line text (accepts any value)
Audit Enrichment Opportunity
CODEBLOCK0
Also create a HubSpot list to estimate enrichable contacts:
- - Filter 1: Contact Industry > is unknown
- Filter 2: AND Associated company > Industry > is known
- This count tells you how many contacts will actually be enriched
Execute
Create the Enrichment Workflow
This workflow is nearly identical to the company name enrichment workflow. If you already built that one, clone it and swap the property references.
- 1. Go to Automation > Workflows > Create workflow
- Select Contact-based > Blank workflow
- Name: INLINECODE2
Enrollment trigger:
- - Contact property > Industry > is unknown
- AND Associated company > Industry > is known
Re-enrollment:
- - Enable re-enrollment on the same criteria. This ensures contacts that later get associated with a company are also enriched.
Action: Copy property
- - Copy FROM: Company > Industry
- Copy TO: Contact > Industry
Activate:
- - Click Review > Turn on
- Select Yes, enroll existing contacts
Note: Unlike the company name workflow, no delay is needed here. If the contact already has an associated company with industry data (checked by the enrollment trigger), the copy can happen immediately.
After State
Wait 1-2 hours for the workflow to process, then verify.
Script approach:
CODEBLOCK1
Verification checklist:
- 1. Contact industry count should jump from near-zero to tens of thousands
- The enrichment list (missing industry + has company association) should be near 0
- Spot-check 20+ contacts for accuracy:
- Open the contact record
- Verify the Industry field shows a value
- Click the associated company and confirm the industry matches
- 4. Check that the industry distribution on contacts roughly mirrors the company industry distribution
- Check workflow history for failures — most common is property value mismatch (company has a value that does not match a dropdown option on the contact)
Key Technical Learnings
- - Two industry properties can exist. Some HubSpot portals have both
industry and industry_name on contacts. Verify which one is authoritative before building the workflow. Writing to the wrong one means your lists and reports will not see the data. - Dropdown value matching is case-sensitive and exact. If the company Industry has "Healthcare" and the contact Industry dropdown has "healthcare" (lowercase), the copy will fail. Ensure values match exactly.
- Consider consolidating similar industries. Many CRMs have overlapping values like "Healthcare" and "Hospital & Health Care". For segmentation, consider creating a separate "Industry Group" property that maps similar values into broader categories. This is optional but improves list usability.
- This does not overwrite existing values. The enrollment trigger requires "Industry is unknown", so contacts that already have industry data are not affected.
- If using a text field instead of dropdown: Enrichment works, but you lose the ability to filter by exact dropdown values in lists. You can convert to a dropdown later but will need to clean up inconsistent text values first.
- Run this after company name enrichment. Company name enrichment may trigger new company associations, which increases the number of contacts eligible for industry enrichment.
- Clone the company name workflow. The structure is nearly identical. Clone it in HubSpot and swap the property references to save time.
从关联公司丰富联系人行业信息
将公司记录中的行业数据复制到其关联联系人。在典型的B2B CRM中,公司记录的行业填充率很高(80-90%),而联系人记录几乎为零。此工作流自动填补这一空白。
为何重要
如果联系人记录中没有行业信息,就无法按垂直领域细分邮件营销活动。对于针对特定行业的B2B公司而言,这决定了是进行广撒网式群发邮件,还是发送精准、相关的信息。联系人上的行业数据还能为ICP层级分类和潜在客户评分模型提供支持。
前提条件
- - HubSpot Marketing Hub Professional 或 Sales Hub Professional(用于工作流)
- 应先完成公司名称丰富(enrich-company-name技能),因为它可能触发新的公司关联
- 可访问设置 > 属性以验证/创建联系人行业属性
计划
- 1. 验证联系人行业属性是否存在且与公司行业属性兼容
- 审计可被丰富的联系人数量(处理前状态)
- 构建一个从关联公司复制行业信息的工作流
- 验证丰富结果(处理后状态)
处理前状态
检查属性兼容性
这是最重要的前置步骤。联系人可能有两个行业属性:industry 和 industry_name。您必须验证HubSpot在列表和报告中使用的是哪一个。
- 1. 进入 设置 > 属性 > 联系人属性
- 搜索行业
- 记录联系人对象上所有与行业相关的属性
- 检查现有列表、报告和工作流中使用的是哪个属性
- 目标属性必须与公司行业属性兼容:
- 如果两者都是
下拉选择:选项值必须完全匹配(相同拼写、相同大小写)
- 如果联系人属性是
单行文本:它将接受任何值(最安全的选择)
- 如果不确定,请使用单行文本以避免复制失败
如果不存在联系人行业属性,请创建一个:
- - 对象:联系人
- 组:联系信息
- 标签:行业
- 字段类型:下拉选择(从公司行业属性复制所有值)或单行文本(接受任何值)
审计丰富机会
python
import os
from hubspot import HubSpot
from dotenv import load_dotenv
load_dotenv()
apiclient = HubSpot(accesstoken=os.getenv(HUBSPOTAPITOKEN))
统计缺少行业的联系人数量
result = api
client.crm.contacts.searchapi.do_search(
public
objectsearch_request={
filterGroups: [{
filters: [{
propertyName: industry,
operator: NOT
HASPROPERTY
}]
}],
limit: 0
}
)
print(f缺少行业的联系人数量: {result.total})
同时创建一个HubSpot列表以估算可丰富的联系人:
- - 筛选条件1:联系人行业 > 未知
- 筛选条件2:AND 关联公司 > 行业 > 已知
- 此计数告诉您实际将被丰富的联系人数量
执行
创建丰富工作流
此工作流与公司名称丰富工作流几乎相同。如果您已构建了该工作流,请克隆它并替换属性引用。
- 1. 进入 自动化 > 工作流 > 创建工作流
- 选择 基于联系人 > 空白工作流
- 名称:AUTO-ENRICH: 从公司复制行业
注册触发器:
- - 联系人属性 > 行业 > 未知
- AND 关联公司 > 行业 > 已知
重新注册:
- - 启用基于相同条件的重新注册。这确保后续与公司关联的联系人也得到丰富。
操作:复制属性
- - 从:公司 > 行业 复制
- 到:联系人 > 行业 复制
激活:
注意: 与公司名称工作流不同,此处无需延迟。如果联系人已有包含行业数据的关联公司(由注册触发器检查),复制可以立即进行。
处理后状态
等待1-2小时让工作流处理,然后验证。
脚本方法:
python
result = apiclient.crm.contacts.searchapi.do_search(
publicobjectsearch_request={
filterGroups: [{
filters: [{
propertyName: industry,
operator: NOTHASPROPERTY
}]
}],
limit: 0
}
)
print(f仍缺少行业的联系人数量: {result.total})
验证检查清单:
- 1. 联系人行业计数应从接近零跃升至数万
- 丰富列表(缺少行业 + 有关联公司)应接近0
- 抽查20+个联系人的准确性:
- 打开联系人记录
- 验证行业字段显示值
- 点击关联公司并确认行业匹配
- 4. 检查联系人上的行业分布是否大致反映公司行业分布
- 检查工作流历史记录中的失败情况——最常见的是属性值不匹配(公司有一个值与联系人上的下拉选项不匹配)
关键技术要点
- - 可能存在两个行业属性。 某些HubSpot门户在联系人上同时有industry和industry_name。在构建工作流之前,请验证哪个是权威属性。写入错误的属性意味着您的列表和报告将看不到数据。
- 下拉值匹配区分大小写且要求完全一致。 如果公司行业有Healthcare而联系人行业下拉有healthcare(小写),复制将失败。确保值完全匹配。
- 考虑合并相似行业。 许多CRM有重叠的值,如Healthcare和Hospital & Health Care。为了细分,考虑创建一个单独的行业组属性,将相似值映射到更广泛的类别中。这是可选的,但能提高列表的可用性。
- 此操作不会覆盖现有值。 注册触发器要求行业未知,因此已有行业数据的联系人不受影响。
- 如果使用文本字段而非下拉字段: 丰富功能有效,但您将失去在列表中按精确下拉值筛选的能力。您可以稍后转换为下拉字段,但需要先清理不一致的文本值。
- 在公司名称丰富后运行此操作。 公司名称丰富可能触发新的公司关联,从而增加符合行业丰富条件的联系人数量。
- 克隆公司名称工作流。 结构几乎相同。在HubSpot中克隆它并替换属性引用以节省时间。