If you're running HubSpot, Salesforce, or Pipedrive and tired of manual lead routing and deal updates, this automates the repetitive stuff. It handles the standard workflow patterns like lead capture with enrichment through Clearbit, rule-based or AI scoring, automated deal stage progression, and bidirectional sync between multiple CRMs. The n8n templates are solid starting points for things like triggering Slack notifications when deals close or creating follow-up tasks when contracts go out. The AI-based lead scoring is more flexible than pure rules if your ICP isn't straightforward. Honestly most useful if you're already technical enough to tweak n8n workflows, since you'll want to adjust the thresholds and routing logic to match your actual sales process.
npx -y skills add claude-office-skills/skills --skill crm-automation --agent claude-codeInstalls into .claude/skills of the current project.
Automate CRM workflows for HubSpot, Salesforce, and Pipedrive including lead management, deal tracking, pipeline automation, and multi-CRM synchronization. Based on n8n workflow templates.
This skill covers:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Lead Source │───▶│ Enrich Data │───▶│ Score Lead │───▶│ Route to │
│ (Form/API) │ │ (Clearbit) │ │ (AI/Rules) │ │ Sales Rep │
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
│
┌─────────────┐ ┌─────────────┐ │
│ Start │◀───│ Create in │◀───┘
│ Sequence │ │ CRM │
└─────────────┘ └─────────────┘
n8n Configuration:
workflow: "Lead Capture to CRM"
trigger:
- type: webhook
event: form_submission
source: [website, landing_page, calendly]
steps:
1. capture_lead:
fields: [email, name, company, phone, source]
2. enrich_data:
provider: clearbit
lookup_by: email
append: [company_size, industry, title, linkedin]
3. score_lead:
model: ai_scoring # or rule-based
factors:
- company_size: {1-50: 10, 51-200: 20, 201+: 30}
- industry_fit: {high: 30, medium: 20, low: 10}
- title_seniority: {c-level: 30, director: 20, manager: 10}
threshold: 50 # MQL threshold
4. route_lead:
rules:
- if: score >= 80 AND industry == "tech"
assign_to: "Enterprise Team"
- if: score >= 50
assign_to: "SMB Team"
- else:
assign_to: "Marketing Nurture"
5. create_in_crm:
platform: hubspot
object: contact
properties:
email: "{email}"
firstname: "{first_name}"
company: "{company}"
lead_score: "{score}"
lead_source: "{source}"
6. start_sequence:
if: score >= 50
sequence: "New Lead Welcome"
delay: 1_hour
workflow: "Deal Stage Progression"
trigger:
- type: hubspot_deal_updated
property: dealstage
stages:
appointment_scheduled:
actions:
- create_task: "Prepare for meeting"
due: 1_day_before_meeting
- notify_slack: "#sales-pipeline"
- update_property: last_activity_date
qualified_to_buy:
actions:
- create_task: "Send proposal"
due: 3_days
- notify_manager: true
- add_to_forecast: true
presentation_scheduled:
actions:
- create_task: "Prepare demo environment"
- send_reminder: 1_hour_before
- log_activity: "Presentation scheduled"
contract_sent:
actions:
- set_close_date: 14_days_from_now
- create_task: "Follow up on contract"
due: 7_days
- notify_legal: if amount > 50000
closed_won:
actions:
- notify_slack: "#wins"
- trigger_onboarding: true
- update_forecast: remove
- celebrate: confetti # Slack celebration
closed_lost:
actions:
- log_loss_reason: required
- add_to_nurture: true
- schedule_reengagement: 90_days
workflow: "HubSpot + Salesforce + Pipedrive Sync"
sync_rules:
contacts:
master: hubspot
sync_to: [salesforce, pipedrive]
frequency: real_time
fields:
- email (unique_key)
- name
- company
- phone
- owner
conflict_resolution: most_recent_wins
deduplication:
provider: openai
similarity_threshold: 0.85
deals:
master: salesforce
sync_to: [hubspot, pipedrive]
frequency: every_15_minutes
field_mapping:
salesforce.Opportunity.Amount → hubspot.deal.amount
salesforce.Opportunity.CloseDate → hubspot.deal.closedate
salesforce.Opportunity.StageName → hubspot.deal.dealstage
activities:
aggregate_to: google_sheets
types: [calls, emails, meetings, notes]
columns: [date, contact, type, summary, outcome]
n8n Implementation:
// Multi-CRM Sync Node
{
"nodes": [
{
"name": "Get HubSpot Contacts",
"type": "n8n-nodes-base.hubspot",
"parameters": {
"operation": "getAll",
"limit": 100,
"additionalFields": {
"propertiesToInclude": ["email", "firstname", "lastname", "company"]
}
}
},
{
"name": "Get Salesforce Contacts",
"type": "n8n-nodes-base.salesforce",
"parameters": {
"operation": "getAll",
"sobject": "Contact"
}
},
{
"name": "Deduplicate with OpenAI",
"type": "n8n-nodes-base.openAi",
"parameters": {
"operation": "message",
"model": "gpt-4",
"prompt": "Compare these contacts and identify duplicates: {{$json}}"
}
},
{
"name": "Sync to Master Sheet",
"type": "n8n-nodes-base.googleSheets",
"parameters": {
"operation": "append",
"sheetId": "your-sheet-id"
}
}
]
}
lead_score_rules:
demographic:
job_title:
- C-Level|VP|Director: +30
- Manager|Head: +20
- Individual Contributor: +10
company_size:
- 1-50: +10
- 51-200: +20
- 201-1000: +25
- 1000+: +30
industry:
- Technology|SaaS: +30
- Finance|Healthcare: +25
- Manufacturing|Retail: +15
behavioral:
website_visits:
- 1-2: +5
- 3-5: +10
- 6+: +20
content_downloads:
- Whitepaper: +15
- Case Study: +20
- Pricing Page: +25
email_engagement:
- Opened: +5
- Clicked: +10
- Replied: +20
thresholds:
- MQL: 50
- SQL: 75
- Hot Lead: 90
ai_scoring_model:
provider: openai
prompt: |
Score this lead from 0-100 based on:
- Fit with our ICP (ideal customer profile)
- Buying intent signals
- Budget authority
- Timeline urgency
Lead Data: {lead_data}
ICP: B2B SaaS companies, 50-500 employees, Series A+
Return JSON: {"score": X, "reasoning": "...", "next_action": "..."}
sequence: "New Lead Welcome"
trigger: lead_created AND score >= 50
steps:
- day_0:
type: email
template: "welcome_intro"
subject: "Welcome to {Company} - Here's what's next"
- day_2:
type: email
template: "value_prop"
subject: "How {Similar_Company} achieved {Result}"
condition: not_replied
- day_4:
type: task
action: "LinkedIn connection request"
assign_to: owner
- day_7:
type: email
template: "case_study"
subject: "Quick case study for {Lead_Company}"
condition: not_replied
- day_10:
type: email
template: "meeting_request"
subject: "15 min to discuss {Pain_Point}?"
include: calendly_link
- day_14:
type: task
action: "Phone call attempt"
assign_to: owner
condition: not_responded
sequence: "Proposal Follow-Up"
trigger: deal_stage == "contract_sent"
steps:
- day_3:
type: email
template: "contract_check_in"
subject: "Any questions about the proposal?"
- day_7:
type: task
action: "Phone call - contract follow-up"
- day_10:
type: email
template: "deadline_reminder"
subject: "Pricing valid until {deadline}"
condition: not_responded
- day_14:
type: alert
notify: sales_manager
message: "Deal stuck in contract stage"
trigger: calendly.booking_created
actions:
1. search_contact:
hubspot.search: email == calendly.invitee_email
2. create_or_update:
if: contact_exists
hubspot.update_contact:
last_meeting_booked: calendly.start_time
else:
hubspot.create_contact:
email: calendly.invitee_email
firstname: calendly.invitee_name
lifecycle_stage: "salesqualifiedlead"
3. create_meeting:
hubspot.create_engagement:
type: MEETING
scheduled_time: calendly.start_time
title: calendly.event_name
4. notify:
slack.send:
channel: "#sales"
message: "Meeting booked: {name} at {time}"
trigger: linkedin.connection_accepted
actions:
1. enrich:
linkedin.get_profile: connection_id
2. create_contact:
hubspot.create:
email: linkedin.email
firstname: linkedin.first_name
lastname: linkedin.last_name
jobtitle: linkedin.title
company: linkedin.company
linkedin_url: linkedin.profile_url
lead_source: "LinkedIn"
3. add_to_sequence:
if: title contains ["CEO", "CTO", "VP"]
sequence: "LinkedIn C-Level Outreach"
# Sales Pipeline Report - Week {week_number}
## Pipeline Summary
| Stage | Deals | Value | Change |
|-------|-------|-------|--------|
| New | 15 | $150K | +5 |
| Qualified | 8 | $120K | +2 |
| Proposal | 5 | $85K | -1 |
| Negotiation | 3 | $45K | +1 |
| **Total Pipeline** | **31** | **$400K** | **+7** |
## This Week's Activity
- New leads: 45
- Meetings held: 12
- Proposals sent: 4
- Deals closed: 2 ($35K)
## Team Performance
| Rep | Meetings | Proposals | Closed |
|-----|----------|-----------|--------|
| Alice | 5 | 2 | 1 |
| Bob | 4 | 1 | 1 |
| Carol | 3 | 1 | 0 |
## Forecast
- Commit: $45K (3 deals)
- Best Case: $85K (5 deals)
- Pipeline: $400K (31 deals)
## Actions Needed
- [ ] Follow up on 3 stale deals (>14 days no activity)
- [ ] Schedule demo for Enterprise Lead X
- [ ] Send revised proposal to Company Y
data_hygiene_rules:
- deduplicate: weekly
method: email_match + company_fuzzy_match
- validate_emails: on_create
action: remove_invalid
- enrich_missing: daily
fields: [company, title, linkedin]
- archive_stale: monthly
criteria: no_activity > 180_days
action: move_to_archive
security_practices:
- api_keys: rotate_quarterly
- access_control: role_based
- audit_log: all_changes
- pii_handling: encrypt_at_rest
- gdpr_compliance: consent_tracking
CRM Automation Skill - Part of Claude Office Skills
sickn33/antigravity-awesome-skills
rohitg00/pro-workflow
supercent-io/skills-template