enrich-company-name
À propos
Cette compétence HubSpot remplit automatiquement les champs manquants du nom de l'entreprise du contact en copiant les données des fiches entreprises associées. Elle offre à la fois un enrichissement continu basé sur des workflows et une option de rattrapage par API pour des mises à jour immédiates. Utilisez-la pour garantir que les contacts disposent de données d'entreprise pour la segmentation, la personnalisation et la classification du profil client idéal (ICP).
Installation rapide
Claude Code
Recommandénpx skills add TomGranot/hubspot-admin-skills -a claude-code/plugin add https://github.com/TomGranot/hubspot-admin-skillsgit clone https://github.com/TomGranot/hubspot-admin-skills.git ~/.claude/skills/enrich-company-nameCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
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
- Enable auto-association if not already on
- Audit how many contacts are missing company name (before state)
- Build a workflow that copies company name from the associated company record
- Optionally run an API backfill script for immediate results
- 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)
- Go to Automation > Workflows > Create workflow
- Select Contact-based > Blank workflow
- 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
companyNOT_HAS_PROPERTY - Search API caps at 10,000 results. Segment by
createdateranges 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:
- The "missing company name" count should have dropped dramatically (typically from 40-60% to under 10%)
- Remaining contacts without company names should primarily be those with personal email addresses (gmail.com, yahoo.com, etc.)
- Spot-check 10-20 contacts to confirm the company name matches their associated company record
- Check workflow history for errors:
- Property type mismatch (copying to wrong field type)
- Multiple associated companies (HubSpot uses the primary company)
- 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.
Dépôt GitHub
Compétences associées
subagent-driven-development
DéveloppementCette compétence exécute des plans de mise en œuvre en déployant un nouveau sous-agent pour chaque tâche indépendante, avec une revue de code entre les tâches. Elle permet une itération rapide tout en maintenant des contrôles de qualité grâce à ce processus de revue. Utilisez-la lorsque vous travaillez sur des tâches principalement indépendantes au sein d'une même session pour assurer une progression continue avec des vérifications de qualité intégrées.
qmd
Développementqmd est un outil CLI de recherche et d'indexation locale qui permet aux développeurs d'indexer et de rechercher dans des fichiers locaux en utilisant une recherche hybride combinant BM25, des embeddings vectoriels et du reranking. Il prend en charge à la fois une utilisation en ligne de commande et un mode MCP (Model Context Protocol) pour l'intégration avec Claude. L'outil utilise Ollama pour les embeddings et stocke les index localement, ce qui le rend idéal pour rechercher dans de la documentation ou des bases de code directement depuis le terminal.
mcporter
DéveloppementLa compétence mcporter permet aux développeurs de gérer et d'appeler des serveurs Model Context Protocol (MCP) directement depuis Claude. Elle fournit des commandes pour lister les serveurs disponibles, appeler leurs outils avec des arguments, et gérer l'authentification ainsi que le cycle de vie du démon. Utilisez cette compétence pour intégrer et tester les fonctionnalités des serveurs MCP dans votre flux de travail de développement.
adk-deployment-specialist
DéveloppementCette compétence déploie et orchestre des agents Vertex AI ADK en utilisant le protocole A2A, gérant la découverte d'AgentCard, la soumission de tâches, et prenant en charge des outils tels que le bac à sable d'exécution de code et la banque de mémoire. Elle permet de construire des systèmes multi-agents avec des modèles d'orchestration séquentiels, parallèles ou en boucle en Python, Java ou Go. Utilisez-la lorsqu'on vous demande de déployer des agents ADK ou d'orchestrer des flux de travail d'agents sur Google Cloud.
