返回技能列表

enrich-company-name

TomGranot
更新于 2 days ago
7 次查看
33
11
33
在 GitHub 上查看
开发apiautomation

关于

This HubSpot skill populates missing contact company name fields by automatically copying data from associated company records. It provides both workflow-based ongoing enrichment and optional API backfill for immediate updates. Use this to ensure contacts have company data for segmentation, personalization, and ICP classification.

快速安装

Claude Code

推荐
主要方式
npx skills add TomGranot/hubspot-admin-skills -a claude-code
插件命令备选方式
/plugin add https://github.com/TomGranot/hubspot-admin-skills
Git 克隆备选方式
git clone https://github.com/TomGranot/hubspot-admin-skills.git ~/.claude/skills/enrich-company-name

在 Claude Code 中复制并粘贴此命令以安装该技能

技能文档

Enrich Contact Company Name from Associated Company

Populate missing contact-level company name fields by copying the value from the associated company record. Uses a HubSpot workflow for ongoing enrichment and optionally an API backfill script for immediate results.

Why This Matters

Contacts missing a company name cannot be matched to ICP-classified companies, break email personalization tokens, and are invisible to company-based segmentation. In a typical neglected CRM, 40-60% of contacts may be missing this field even though the vast majority have a company association.

Prerequisites

  • HubSpot Marketing Hub Professional or Sales Hub Professional (for Workflows)
  • Phase 1 hygiene processes completed (invalid/deleted contacts removed first)
  • HubSpot auto-association enabled: Settings > Objects > Companies > "Create and associate companies with contacts" toggle must be ON. This lets HubSpot automatically create company records from email domains and associate them.

Plan

  1. Enable auto-association if not already on
  2. Audit how many contacts are missing company name (before state)
  3. Build a workflow that copies company name from the associated company record
  4. Optionally run an API backfill script for immediate results
  5. Verify enrichment results (after state)

Before State

Run a before-state audit to capture the baseline.

Script approach (recommended):

import os
from hubspot import HubSpot
from dotenv import load_dotenv

load_dotenv()
api_client = HubSpot(access_token=os.getenv("HUBSPOT_API_TOKEN"))

# Count contacts missing company name
result = api_client.crm.contacts.search_api.do_search(
    public_object_search_request={
        "filterGroups": [{
            "filters": [{
                "propertyName": "company",
                "operator": "NOT_HAS_PROPERTY"
            }]
        }],
        "limit": 0
    }
)
print(f"Contacts missing company name: {result.total}")

Manual approach: Go to Contacts > filter by Company name > is unknown. Record the count.

Save the count. This is your baseline for measuring success.

Execute

Method 1: HubSpot Workflow (Recommended — Handles Backlog + Future)

  1. Go to Automation > Workflows > Create workflow
  2. Select Contact-based > Blank workflow
  3. Name: AUTO-ENRICH: Copy Company Name from Association

Enrollment trigger:

  • Contact property > Company name > is unknown

Re-enrollment:

  • Enable re-enrollment when associated company changes. This is the safety net: if an association forms after the workflow already ran, the contact gets re-enrolled.

Action 1: Delay 10 minutes

  • This delay is critical. When a new contact enters HubSpot, the auto-association engine needs time to parse the email domain, find or create a matching company, and create the association. Without this delay, the workflow checks for an association before one exists.

Action 2: If/then branch

  • Condition: Associated company > Company name (or Name) > is known
  • YES branch: Add a Copy property action:
    • Copy FROM: Company > Name
    • Copy TO: Contact > Company name
  • NO branch: Leave empty (contact exits). These are typically contacts with personal email addresses (gmail, yahoo, etc.) where no company can be determined.

Activate:

  • Click Review > Turn on
  • When prompted, select Yes, enroll existing contacts. This enrolls the entire backlog.

Method 2: API Backfill Script (Optional — Immediate Results)

Use this if you need the data populated immediately rather than waiting for workflow processing.

# Pattern: Fetch contacts missing company name,
# look up their associated company, copy the name
from hubspot import HubSpot

api_client = HubSpot(access_token=os.getenv("HUBSPOT_API_TOKEN"))

# 1. Search for contacts missing company name
# 2. For each, get associations to companies
# 3. Fetch the primary company's name
# 4. Batch update the contact's company property

Key API notes:

  • Use the Search API to find contacts where company NOT_HAS_PROPERTY
  • Search API caps at 10,000 results. Segment by createdate ranges if needed.
  • Use Associations API v4 to get contact-to-company associations
  • Batch update contacts using crm.contacts.batch_api.update
  • Respect rate limits: 100 requests per 10 seconds

Why Do Both?

  • The workflow handles both backlog (enrolled on activation) AND future contacts automatically. It is the long-term solution.
  • The API backfill provides immediate results if you cannot wait for workflow processing (which may take hours for large databases).
  • If you only do the workflow, that is perfectly fine. It will process the backlog since existing contacts meeting the trigger criteria get enrolled on activation.

After State

Wait 1-2 hours after activating the workflow (longer for very large databases), then verify.

Script approach:

# Same search as before-state script
result = api_client.crm.contacts.search_api.do_search(
    public_object_search_request={
        "filterGroups": [{
            "filters": [{
                "propertyName": "company",
                "operator": "NOT_HAS_PROPERTY"
            }]
        }],
        "limit": 0
    }
)
print(f"Contacts still missing company name: {result.total}")

Verification checklist:

  1. The "missing company name" count should have dropped dramatically (typically from 40-60% to under 10%)
  2. Remaining contacts without company names should primarily be those with personal email addresses (gmail.com, yahoo.com, etc.)
  3. Spot-check 10-20 contacts to confirm the company name matches their associated company record
  4. Check workflow history for errors:
    • Property type mismatch (copying to wrong field type)
    • Multiple associated companies (HubSpot uses the primary company)
  5. Verify the workflow continues processing new contacts by checking for recent enrollments

Key Technical Learnings

  • The 10-minute delay is a balance. Auto-association typically completes in a few minutes, but 10 minutes provides a comfortable buffer. If many contacts go down the NO branch and later get associations, increase to 15-20 minutes.
  • Re-enrollment is the safety net. Even if the delay is not long enough, re-enrollment on "associated company changes" catches late associations. The delay handles the common case; re-enrollment handles edge cases.
  • Primary company wins. If a contact is associated with multiple companies, HubSpot copies from the primary associated company. Verify primary associations are correct for key contacts.
  • This workflow does NOT overwrite existing values. The enrollment trigger requires "Company name is unknown", so contacts with an existing company name are never touched.
  • Property type matters. Contact "Company name" is a single-line text field by default. If someone changed it to a dropdown, the copy action may fail. Check in Settings > Properties before running.
  • Personal email domains exit on the NO branch. Contacts with gmail.com, yahoo.com, hotmail.com, outlook.com, etc. will not get enriched. This is expected. They need manual enrichment or a third-party tool (ZoomInfo, Clearbit, Apollo) to determine their company.
  • Company name is a prerequisite for ICP Tier classification. Run this enrichment before creating ICP Tier workflows.
  • Schedule the "after" verification script. Workflow processing for large databases takes time. Do not check results immediately — schedule the verification for 2-4 hours after activation.

GitHub 仓库

TomGranot/hubspot-admin-skills
路径: skills/enrich-company-name
0

相关推荐技能

qmd

开发

这是一个本地搜索和索引的CLI工具,支持BM25、向量搜索和重排序功能。开发者可以用它快速索引本地文件(如Markdown文档)并进行混合搜索,特别适合代码库或文档的本地检索。它还提供MCP模式,能轻松集成到Claude开发环境中使用。

查看技能

subagent-driven-development

开发

该Skill用于在当前会话中执行包含独立任务的实施计划,它会为每个任务分派一个全新的子代理并在任务间进行代码审查。这种"全新子代理+任务间审查"的模式既能保障代码质量,又能实现快速迭代。适合需要在当前会话中连续执行独立任务,并希望在每个任务后都有质量把关的开发场景。

查看技能

mcporter

开发

mcporter Skill 让开发者能在Claude中直接管理和调用MCP服务器。它支持列出可用服务器、调用工具、处理OAuth认证以及管理服务器守护进程。开发者可以通过命令行式交互快速执行`mcporter list`查看服务器,或使用`mcporter call`直接调用工具,简化了MCP工作流程。

查看技能

adk-deployment-specialist

开发

这是一个用于部署和编排Google Vertex AI ADK智能体的Claude Skill,专为构建生产级多智能体系统而设计。它支持通过A2A协议进行智能体通信,提供代码执行沙箱和记忆库功能,并能处理智能体发现与任务提交。当开发者需要部署ADK智能体或编排多智能体协作时,可使用此Skill来简化Vertex AI Agent Engine的部署流程。

查看技能