HubSpot CRM Operations Skill
Purpose: Design and implement HubSpot workflows, custom properties, deal pipelines, and reporting. Build lead routing, enrichment sync, and data quality automation.
When to Use This Skill
Use this skill when:
- •Designing HubSpot workflows and automation
- •Creating custom property architecture
- •Building deal pipeline and lifecycle stages
- •Implementing lead routing and assignment
- •Setting up reporting and dashboards
- •Managing data quality and deduplication
Workflow Patterns
Lead Routing Workflow
code
New Lead Created
↓
Check Lead Source → Assign Owner Based on Rules
↓
├── Inbound Demo → Round Robin (AEs)
├── Outbound Reply → Original Sequence Owner
├── Partner Referral → Partner Manager
└── Enterprise (>500 emp) → Named Account Owner
↓
Send Notification → Create Task
Deal Stage Progression
code
Discovery → Qualification → Demo → Proposal → Negotiation → Closed
↓ ↓ ↓ ↓ ↓
[Auto-tasks] [Required] [Meeting] [Doc Gen] [Approval]
[Properties] [Booked]
Enrichment Sync Pattern
code
Clay Webhook → HubSpot Workflow
↓
Parse Enrichment Data
↓
├── Company exists? → Update properties
└── Company new? → Create + Associate contacts
↓
Set "Last Enriched" timestamp
↓
Trigger segmentation re-evaluation
Custom Property Architecture
Naming Convention
code
[Object]_[Category]_[Property Name] Examples: - contact_enrichment_last_enriched_date - company_signal_tech_stack_score - deal_process_forecast_category
Property Categories
| Category | Purpose | Examples |
|---|---|---|
| Enrichment | Data from Clay/Apollo | tech_stack, funding_stage |
| Signal | Intent/pain indicators | intent_score, pain_signals |
| Process | Internal workflow data | routing_reason, sla_status |
| Attribution | Marketing touchpoints | first_touch, last_touch |
Required Properties by Object
Contacts:
- •Lead Source
- •Lead Status
- •Last Enriched Date
- •Enrichment Confidence
Companies:
- •Industry (standardized)
- •Employee Range
- •Tech Stack (multi-select)
- •Signal Score (calculated)
Deals:
- •Forecast Category
- •Competitor Mentioned
- •Use Case
- •Champion Contact
Lead Routing Logic
Territory Assignment
javascript
// Pseudo-logic for HubSpot workflow
IF company.region == "EMEA" THEN
IF company.employees > 1000 THEN
owner = enterprise_ae_emea
ELSE
owner = round_robin(smb_team_emea)
END
ELSE IF company.region == "APAC" THEN
owner = apac_team_lead
ELSE
// Default to North America
IF company.state IN named_account_territories THEN
owner = territory_lookup(company.state)
ELSE
owner = round_robin(na_team)
END
END
Capacity Checking
Before assignment:
- •Check owner's current open deals
- •Compare against capacity limit
- •If over capacity → next in rotation
- •Log assignment reason
Data Quality Management
Deduplication Strategy
| Object | Match Criteria | Action |
|---|---|---|
| Contacts | Email (exact) | Merge, keep most recent |
| Companies | Domain (normalized) | Merge, keep most complete |
| Deals | Company + Close Date | Flag for review |
Hygiene Workflows
Weekly:
- •Flag contacts with bounced email
- •Identify companies without recent activity
- •Check for duplicate detection
Monthly:
- •Standardize industry values
- •Normalize job titles
- •Archive stale records
Reporting Templates
Pipeline Dashboard
| Report | Metrics | Filters |
|---|---|---|
| Pipeline by Stage | Count, Value | Close Date = This Quarter |
| Stage Velocity | Avg Days in Stage | Created = Last 90 Days |
| Win Rate by Source | Won/Total | Closed = Last Quarter |
| Forecast vs Actual | Commit vs Closed | By Rep, By Month |
Lead Performance
| Report | Metrics | Purpose |
|---|---|---|
| Lead to MQL | Conversion Rate, Time | Funnel efficiency |
| MQL to SQL | Conversion Rate | SDR effectiveness |
| Source Performance | Leads, MQLs, Opps | Channel ROI |
Integration Patterns
Clay → HubSpot
code
Trigger: New row in Clay table
↓
Webhook to HubSpot workflow
↓
Parse payload:
- company_domain
- enrichment_data (JSON)
- signal_scores
↓
Lookup company by domain
↓
Update/Create with enrichment
↓
Associate contacts if included
Slack Notifications
code
Deal Stage = "Closed Won"
↓
Format message:
🎉 Deal closed: {deal.name}
Value: {deal.amount}
Owner: {deal.owner}
Days to close: {calculated}
↓
Send to #wins channel
Troubleshooting
| Issue | Diagnosis | Solution |
|---|---|---|
| Workflow not triggering | Check enrollment criteria | Review filters, test with known record |
| Properties not updating | Check field mapping | Verify property type matches data |
| Duplicates created | Lookup failing | Add unique identifier check |
| Slow workflows | Too many actions | Break into multiple workflows |
Best Practices
- •Always test in sandbox before production changes
- •Document workflow logic in workflow description
- •Use delay actions to avoid rate limits
- •Set up error notifications for workflow failures
- •Version control major workflow changes (screenshots + notes)
- •Regular audit of active workflows (monthly)