tomgranot/hubspot-admin-skills/hubspot-implementation-plan

Claude Code and agent skill by tomgranot/hubspot-admin-skills

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Generate a phased implementation plan from a HubSpot audit report. Creates prioritized, sequenced cleanup processes with effort estimates, dependencies, and automation feasibility. Works from a full, marketing, or sales audit report. Use after running /hubspot-audit, /hubspot-marketing-audit, or /hubspot-sales-audit.

Install

npx vskill@latest install tomgranot/hubspot-admin-skills/hubspot-implementation-plan

SKILL.md

HubSpot Implementation Plan Generator

Generate a phased, prioritized cleanup and optimization plan from a HubSpot audit report. This skill reads audit findings, sequences them into phases with dependencies, and outputs a detailed implementation roadmap with automation feasibility for each task.

Prerequisites

  • A completed audit report in reports/, generated by /hubspot-audit (full), /hubspot-marketing-audit, or /hubspot-sales-audit
  • If no audit report exists, ask which side of the portal the user owns and point them at the matching audit

Steps

1. Load the Audit Report

Find the most recent audit report. The audit engine writes one of three names depending on scope:

ScopeReport
fullreports/hubspot-audit-*.md
marketingreports/hubspot-marketing-audit-*.md
salesreports/hubspot-sales-audit-*.md

Each has a .json twin with the same data in structured form: dimensions (grade, rows with count, percentage, and fix skill) and prescription (the ordered skill list). Prefer the JSON for counts and the markdown for context. Extract:

  • Letter grades per dimension, and each dimension's lens (shared, marketing, sales)
  • Exact counts for each metric
  • The Prescription table

If multiple reports exist, use the most recent by date in the filename. If a marketing report and a sales report share a date, plan from both: their shared dimensions are identical, so merge them rather than double-counting.

Plan only what the report covers. A marketing-scoped report yields a plan without the Sales Pipeline phase; a sales-scoped report yields a plan without the deliverability and suppression tasks. Do not pad a scoped plan with tasks the audit did not measure.

2. Generate the Phased Plan

Analyze the audit findings and organize cleanup tasks into five phases. Each phase builds on the previous one. Only include tasks that are relevant based on the audit findings — if a dimension scored A, skip or deprioritize its tasks.

Phase 1: Immediate Hygiene (Week 1-2)

These tasks have direct billing or deliverability impact. Do them first.

TaskTrigger (from audit)SkillAutomationEst. Time
Delete contacts with no email addressData Completeness: missing email count > 0/delete-no-email-contactsFully scriptable1 hr
Suppress hard bounced contactsDeliverability: hard bounce count > 0/suppress-hard-bouncedHybrid (API + workflow)1-2 hrs
Suppress global unsubscribesDeliverability: global unsub count > 0/suppress-global-unsubscribesHybrid (API + workflow)1-2 hrs
Suppress ghost contacts (never engaged)Engagement: never-engaged count > threshold/suppress-ghost-contactsHybrid (API + workflow)2-3 hrs
Merge duplicate companiesDuplicates: duplicate domain count > 0/merge-duplicate-companiesFully scriptable2-4 hrs
Reassign deactivated owner contactsOwner Health: deactivated owners with records > 0/reassign-deactivated-ownersFully scriptable1-2 hrs

Key constraint: hs_marketable_status is read-only via API. All suppression tasks use a hybrid approach:

  1. Script sets a custom flag property (e.g., suppress_reason) via API
  2. A HubSpot workflow triggers on that flag and sets the contact as non-marketing

This workflow must be built manually in the HubSpot UI before running suppression scripts.

Phase 2: Data Enrichment (Week 3-4)

Fill data gaps to enable segmentation and scoring.

TaskTrigger (from audit)SkillAutomationEst. Time
Enrich company name from associationCompleteness: missing company name/enrich-company-nameFully scriptable1-2 hrs
Enrich contact industry from companyCompleteness: missing industry/enrich-industryFully scriptable1-2 hrs
Standardize country/state valuesCompleteness: inconsistent geo data/standardize-geo-valuesFully scriptable2-3 hrs
Backfill country/state from IP or companyCompleteness: missing geo data/backfill-geo-dataFully scriptable2-3 hrs
Fix lifecycle stagesCompleteness: missing or incorrect lifecycle stages/fix-lifecycle-stagesFully scriptable2-3 hrs
Assign unowned contactsOwner Health: unowned contacts > 0/assign-unowned-contactsFully scriptable1-2 hrs

Key constraint: Lifecycle stage is forward-only in HubSpot. To set a contact to an earlier stage, you must first clear the property (set to empty string), then set the desired value. The script must handle this two-step process.

Phase 3: Segmentation & Scoring (Week 4-6)

Build the targeting infrastructure.

TaskTrigger (from audit)SkillAutomationEst. Time
Create ICP tier property and workflowsAlways (after enrichment)/create-icp-tiersHybrid (API + workflow)3-4 hrs
Build lead scoring modelAlways (after enrichment)/build-lead-scoringManual UI only4-6 hrs
Build smart lists for segmentsAlways (after scoring)/build-smart-listsFully scriptable (Lists API)2-3 hrs
Create segment lists for campaignsAlways (after smart lists)/create-segment-listsFully scriptable1-2 hrs

Key constraint: Build lead scoring rules in the UI. A beta Lead Scoring API now exists (/marketing/lead-scoring/2027-03-beta/scores) and is useful for snapshotting or cloning a finished score, but it is subject to change and does not document decay. Each score generates CRM properties that ARE readable and filterable via API. Build the scoring model manually based on the ICP tier data from the previous step; verify score distributions via the Search API.

Phase 4: Automation (Week 6-8)

Set up ongoing automated hygiene.

TaskTrigger (from audit)SkillAutomationEst. Time
New contact hygiene workflowAlways/new-contact-hygiene-workflowHybrid (API + UI review)1-2 hrs
Engagement-based suppression workflowEngagement grade D or F/engagement-suppression-workflowHybrid (API + UI review)1-2 hrs
Lifecycle stage progression workflowAlways/lifecycle-progression-workflowHybrid (API + UI review)1-2 hrs
Bounce monitoring workflowDeliverability grade C or worse/bounce-monitoring-workflowHybrid (API + UI review)1 hr
Export workflows as versioned JSONAfter any workflow build/workflows-as-codeFully scriptable30 min

Key update: The v4 Automation API (documented by HubSpot as beta, and subject to change) supports creating, updating, and batch-reading workflows for contacts, companies, deals, and tickets, with all action types (the v3 workflows API is now legacy). The workflow skills are API-first: each ships before/execute/after scripts that create the workflows via POST /automation/v4/flows — always disabled, so a human reviews them in the UI before enabling. Two options per workflow:

  1. v4 Automation API (primary) -- Run each skill's scripts, then complete the short UI review. Notes: flows touching sensitive-data properties require the corresponding sensitive-data scopes; a few action types (copy-from-associated-object, internal notifications) have undocumented API field shapes and are added in the UI during review.
  1. Manual UI Build (fallback) -- Follow the step-by-step instructions in each skill. Required on plan tiers where the Automation API returns 403. (HubSpot Breeze AI can also scaffold workflows from prompts, but it creates event-based OR triggers instead of filter-based AND triggers and cannot configure re-enrollment or "is unknown" conditions — verify everything it builds. The Claude Chrome extension can drive the workflow builder UI directly.)

Each workflow skill (/new-contact-hygiene-workflow, /engagement-suppression-workflow, /lifecycle-progression-workflow, /bounce-monitoring-workflow) documents both options. The ICP tier classification workflows in /create-icp-tiers are still built in the UI due to their multi-group demotion filter logic. After building, run /workflows-as-code to export everything to versioned JSON.

Sales Pipeline Track (runs alongside Phases 1-2)

Include this track when the report has sales dimensions. It touches deals rather than contacts, so it does not block or depend on the marketing phases, with one exception: reassigning deactivated owners in Phase 1 covers deals and contacts in the same pass.

TaskTrigger (from audit)SkillAutomationEst. Time
Reassign open deals from deactivated ownersSales Ownership: orphaned open deals > 0/reassign-deactivated-ownersFully scriptablewith Phase 1
Assign unowned SQL / Opportunity contactsSales Ownership: unowned sales-stage contacts > 0/assign-unowned-contactsFully scriptable1-2 hrs
Fix past-due close dates and missing amountsDeal Data Quality or Pipeline Hygiene graded C or worse/cleanup-dealsPartially scriptable (needs rep input)2-4 hrs
Review and close stale dealsPipeline Hygiene: stale open deals > 0/cleanup-dealsPartially scriptable (needs rep input)2-3 hrs
Retire empty or over-staged pipelinesPipeline Configuration graded C or worse/cleanup-dealsManual UI1-2 hrs
Reconcile Opportunity contacts with no dealSales Ownership: Opportunity contacts with no deal > 0/fix-lifecycle-stagesFully scriptable1-2 hrs

Key constraint: deal cleanup needs the people who own the deals. Scripts can find every stale or incomplete deal, but only the rep knows whether it is dead. Plan a review session per team rather than a bulk close, and coordinate with the Salesforce admin first if deals sync from Salesforce.

After cleanup, lock in prevention through portal settings: required properties per deal stage, pipeline rules, and a stale-deal task workflow.

Phase 5: Ongoing Maintenance (Ongoing)

Recurring tasks to keep the CRM clean.

TaskFrequencySkillAutomationEst. Time
Weekly cleanup routineWeekly/weekly-cleanup-routineChecklist (manual)1 hr/week
Clean up unused listsMonthly/cleanup-listsPartially scriptable1-2 hrs
Clean up unused formsMonthly/cleanup-formsPartially scriptable1-2 hrs
Clean up stale workflowsMonthly/cleanup-workflowsPartially scriptable1-2 hrs
Clean up dashboardsQuarterly/cleanup-dashboardsManual UI only1-2 hrs
Clean up stale dealsQuarterly/cleanup-dealsPartially scriptable2-3 hrs
Clean up unused propertiesQuarterly/cleanup-propertiesPartially scriptable2-3 hrs
Review lead ownersQuarterly/cleanup-lead-ownersPartially scriptable1-2 hrs
Review bounced contactsMonthly/review-bounced-contactsPartially scriptable1 hr
Quarterly audit (full, or scoped per team)Quarterly/hubspot-audit, /hubspot-marketing-audit, /hubspot-sales-auditFully scriptable1 hr
3. Build the Dependency Graph

Map dependencies between tasks. A task cannot start until its dependencies are complete:

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
56
Repository forks
15
7-day trend score
20

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/tomgranot/hubspot-admin-skills/hubspot-implementation-plan/badge)](https://verified-skill.com/skills/tomgranot/hubspot-admin-skills/hubspot-implementation-plan)

Something wrong with this skill or its page? Tell us.