create-segment-lists
Skill75 starsChanged 20 days agoMITView on GitHub
Create business segment lists in HubSpot for customers, partners, competitors, employees, ICP tiers, and industries. Enables segment-based targeting, suppression, and analytics.
- Reads credentials
We split this skill into the rules it gives an agent
12 rules. About 0 are common, 11 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈11
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 24
Before executing, collect the following information from the user:
- Distinctive: line 28
Default: Core business segments (Customers, Partners, Competitors, Internal) plus ICP tiers and engagement-based segments
- Distinctive: line 32
Default: Any email engagement (open or click) within the last 90 days
- Distinctive: line 74
Run the requirements interview above and decide which segments are relevant to the business.
- Distinctive: line 75
Check for existing lists that overlap — merge or rename rather than creating duplicates.
- Distinctive: line 84
Use the Lists API (v3) to create active (smart) lists:
- Distinctive: line 121
Create each list, verify member count, and document the list ID.
- Distinctive: line 127
Check member counts for each list — do they match expectations?
- Distinctive: line 128
Verify no contacts appear in mutually exclusive lists (e.g., both Customer and Competitor).
- Distinctive: line 135
Check if any workflows or emails reference the list before deleting.
- Very specific: line 139
Use a consistent naming convention: [Category] - Segment Name (e.g., [ICP] - Tier 1, [Industry] - Manufacturing).
- Distinctive: line 141
Use these lists as building blocks for email sends, ad audiences, and workflow enrollment triggers.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Create Segment Lists
Build a library of segment lists that enable targeted marketing, accurate reporting, and proper suppression. These lists form the foundation of segment-based operations.
Prerequisites
- A HubSpot service key (
HUBSPOT_ACCESS_TOKENin.env; an existing legacy private app token also works) withcrm.lists.readandcrm.lists.writescopes - Python 3.10+ with
uv - ICP tier property created (run
/create-icp-tiersfirst) - Lifecycle stages cleaned up (run
/fix-lifecycle-stagesfirst)
Interview: Gather Requirements
Before executing, collect the following information from the user:
Q1: What are your key customer segments?
- Examples: Industry verticals (Manufacturing, Professional Services, Retail, Education, Logistics), company size tiers (Enterprise, Mid-Market, SMB), geographic regions (North America, EMEA, APAC)
- Default: Core business segments (Customers, Partners, Competitors, Internal) plus ICP tiers and engagement-based segments
Q2: What engagement criteria define "active" for your business?
- Examples: Email open or click in last 90 days, website visit in last 60 days, form submission in last 30 days, meeting booked in last 90 days
- Default: Any email engagement (open or click) within the last 90 days
Recommended Segments
Core Business Segments
| List Name | Type | Criteria |
| All Customers | Active | Lifecycle stage = Customer |
| All Partners | Active | Contact type = Partner (or custom property) |
| Competitors | Static | Manually curated from known competitor domains |
| Internal Employees | Active | Email domain matches company domain |
| Suppressed Contacts | Active | Marketing status = non-marketing OR globally unsubscribed |
ICP-Based Segments
| List Name | Type | Criteria |
| ICP Tier 1 | Active | ICP tier property = Tier 1 |
| ICP Tier 2 | Active | ICP tier property = Tier 2 |
| ICP Tier 3 | Active | ICP tier property = Tier 3 |
| Non-ICP | Active | ICP tier property = Non-ICP or unknown |
Industry Segments
| List Name | Type | Criteria |
| [Industry Name] | Active | Industry = [value] |
| (Create one per target industry) |
Engagement Segments
| List Name | Type | Criteria |
| Highly Engaged (90 days) | Active | Email open or click in last 90 days |
| Disengaged (6+ months) | Active | No email engagement in 180+ days |
| Never Engaged | Active | No email opens ever AND created 30+ days ago |
Step-by-Step Instructions
Stage 1: Plan
- Run the requirements interview above and decide which segments are relevant to the business.
- Check for existing lists that overlap — merge or rename rather than creating duplicates.
Stage 2: Before
- Confirm the properties these lists depend on are populated (ICP tier, lifecycle stage, industry).
- Inventory existing lists (
POST /crm/v3/lists/search) and record the baseline count.
Stage 3: Execute — Create Lists
Use the Lists API (v3) to create active (smart) lists:
import os, requests
from dotenv import load_dotenv
load_dotenv()
TOKEN = os.environ["HUBSPOT_ACCESS_TOKEN"]
BASE = "https://api.hubapi.com"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}
# Example: Create "All Customers" list
resp = requests.post(f"{BASE}/crm/v3/lists", headers=HEADERS, json={
"name": "All Customers",
"objectTypeId": "0-1", # contacts
"processingType": "DYNAMIC",
"filterBranch": {
"filterBranchType": "OR",
"filterBranches": [{
"filterBranchType": "AND",
"filterBranches": [],
"filters": [{
"filterType": "PROPERTY",
"property": "lifecyclestage",
"operation": {
"operationType": "ENUMERATION",
"operator": "IS_ANY_OF",
"values": ["customer"],
},
}],
}],
"filters": [],
},
})
resp.raise_for_status()Create each list, verify member count, and document the list ID.
For static lists (Competitors), create the list and manually add contacts or import from a CSV.
Stage 4: After
- Check member counts for each list — do they match expectations?
- Verify no contacts appear in mutually exclusive lists (e.g., both Customer and Competitor).
- Confirm lists are visible to the appropriate teams.
Rollback
- Lists can be deleted via the API or UI.
- Deleting a list does not affect the contacts in it — only the list definition is removed.
- Check if any workflows or emails reference the list before deleting.
Tips
- Use a consistent naming convention:
[Category] - Segment Name(e.g.,[ICP] - Tier 1,[Industry] - Manufacturing). - Review segment membership quarterly — segments should grow or shrink in expected ways.
- Use these lists as building blocks for email sends, ad audiences, and workflow enrollment triggers.
In this repository40 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- assign-unowned-contactsSkill
- audit-api-usageSkill
- backfill-geo-dataSkill
- bounce-monitoring-workflowSkill
- build-lead-scoringSkill
- build-smart-listsSkill
- cleanup-dashboardsSkill
- cleanup-dealsSkill
- cleanup-formsSkill
- cleanup-lead-ownersSkill
- cleanup-listsSkill
- cleanup-propertiesSkill
- cleanup-workflowsSkill
- connect-hubspot-agent-cliSkill
- connect-hubspot-mcpSkill
- create-icp-tiersSkill
- delete-no-email-contactsSkill
- engagement-suppression-workflowSkill
- enrich-company-nameSkill
- enrich-industrySkill
- fix-lifecycle-stagesSkill
- hubspot-auditSkill
- hubspot-implementation-planSkill
- hubspot-marketing-auditSkill
- hubspot-sales-auditSkill
- lifecycle-progression-workflowSkill
- merge-duplicate-companiesSkill
- new-contact-hygiene-workflowSkill
- quarterly-database-cleanupSkill
- reassign-deactivated-ownersSkill
- review-bounced-contactsSkill
- sandbox-self-testSkill
- standardize-geo-valuesSkill
- suppress-ghost-contactsSkill
- suppress-global-unsubscribesSkill
- suppress-hard-bouncedSkill
- waterfall-enrich-contactsSkill
- weekly-cleanup-routineSkill
- workflows-as-codeSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

