---
name: hubspot-properties-design
slug: hubspot-properties-design
description: This skill should be used when the user asks to "design HubSpot properties", "create custom properties in HubSpot", "organize HubSpot fields", "HubSpot property best practices", "design HubSpot contact properties", "structure HubSpot data fields", "HubSpot property naming conventions", "clean up HubSpot properties", "create custom fields in HubSpot", or any variation of designing and organizing custom properties in HubSpot CRM for B2B SaaS.
category: general
---

# HubSpot Properties Design

Properties are the fields that store data on contacts, companies, deals, and tickets in HubSpot. Well-designed properties give you clean data for reporting, segmentation, and automation. Poorly designed properties give you duplicates, blank fields, and reports that don't work.

The principle: design properties for the reports you need, not the data you might collect. Every property should answer: "What report or automation depends on this field?" If the answer is "none," the property probably shouldn't exist.

## Property Design Framework

### Before creating a property, answer these questions

| Question | Why it matters |
|----------|---------------|
| What report will use this property? | Properties without a reporting purpose become unused clutter |
| What automation will trigger on this property? | Workflows need structured, reliable data |
| Who is responsible for filling this property? | Properties nobody owns stay empty |
| How will this property be populated? (manual, automation, integration, enrichment) | Manual properties have lower fill rates. Automate where possible |
| Does this property already exist under a different name? | Duplicate properties are the #1 HubSpot data quality problem |

---

## Naming Conventions

### Property naming rules

| Rule | Example | Anti-pattern |
|------|---------|-------------|
| Use consistent case | "ICP Fit Score" or "icp_fit_score" (pick one style) | Mixing "ICP fit score", "Icp Fit Score", "icp_fit_Score" |
| Prefix custom properties by team/function | "Sales: Close Reason" or "Mkt: Lead Source Detail" | "Close Reason" (no prefix, unclear ownership) |
| Use specific names | "Outbound Reply Rate - Last 30d" | "Reply Rate" (which channel? what timeframe?) |
| Include the object in cross-object properties | "Company: Employee Count" on a contact record | "Employee Count" (is this the contact's or the company's?) |
| Avoid abbreviations unless universally known | "Annual Contract Value" or "ACV" (widely known) | "PPPR" (pipeline per rep per period - nobody will remember) |

### Internal name (API name) rules

- **Use snake_case for internal names.** `icp_fit_score`, not `ICPFitScore` or `ICP Fit Score`. HubSpot auto-generates internal names but you can customize them
- **Keep internal names short but clear.** `sales_close_reason`, not `the_reason_the_sales_deal_was_closed_or_lost`
- **Never change internal names after creation.** Integrations, APIs, and workflows reference internal names. Changing them breaks everything downstream

---

## Property Types

### Choosing the right field type

| Data type | HubSpot field type | When to use | When NOT to use |
|----------|-------------------|-------------|----------------|
| Predefined options | Dropdown select | Status fields, categories, stages | When users need to enter free text |
| Multiple predefined options | Checkbox (multi-select) | Tags, multiple categories | When only one value should apply |
| Yes/No | Single checkbox | Binary states (ICP fit: yes/no) | When there are more than 2 options |
| Short text | Single-line text | Names, emails, short identifiers | When options should be standardized |
| Long text | Multi-line text | Notes, descriptions | When you need structured data for reporting |
| Numbers | Number | Scores, counts, dollar amounts | When the value is categorical, not numeric |
| Dates | Date picker | Milestone dates, deadlines | When you need a timestamp (use datetime) |
| Calculated | Calculation property | Derived values (days since last activity) | When the calculation is complex (use workflow instead) |

### Field type rules

- **Use dropdowns over text fields for anything you'll filter or report on.** Free text "Industry" field: 47 variations of "SaaS" ("SAAS", "Software as a Service", "SaaS - B2B", "saas"). Dropdown: one value. Dropdowns produce clean data
- **Limit dropdown options to 15.** More than 15 and users struggle to find the right option. If you need more, consider a hierarchical approach (category dropdown → subcategory dropdown)
- **Use number fields for scores, not text.** "Lead Score: 75" as a number field can be filtered (> 50), averaged, and used in calculations. "Lead Score: 75" as a text field cannot
- **Use date fields for dates, not text.** "Last Activity: 2025-03-15" as a date field enables date math (days since last activity). As a text field, it's just a string

---

## Property Organization

### Property groups

| Group | Properties | Owner |
|-------|-----------|-------|
| ICP & Qualification | ICP fit score, ICP segment, qualification status, BANT fields | RevOps |
| Outbound | Outbound status, sequence enrolled, reply status, last outbound date | SDR/Sales Ops |
| Attribution | First touch source, last touch source, self-reported source | Marketing Ops |
| Enrichment | Enrichment source, enrichment date, data quality score | RevOps |
| Deal Intelligence | Close reason, competitor mentioned, champion identified | Sales |
| Product Usage | PQL score, activation status, feature adoption | Product/RevOps |

### Organization rules

- **Create custom property groups.** Don't dump everything into "Contact Information." Group properties by function. This makes forms, views, and admin navigation manageable
- **Limit total custom properties.** 50-100 custom properties is healthy. 200+ means many are unused. Audit quarterly and archive unused properties
- **Every property has an owner.** One team or person is responsible for the property's data quality. If nobody owns it, archive it

---

## Common Property Sets

### Contact properties

| Property | Type | Group | Purpose |
|----------|------|-------|---------|
| ICP Fit | Dropdown (Tier 1/2/3/Not ICP) | ICP & Qualification | Segment contacts by fit |
| Lead Source (Self-Reported) | Dropdown | Attribution | "How did you hear about us?" |
| Outbound Status | Dropdown (Not contacted/In sequence/Replied/Meeting booked) | Outbound | Track outbound engagement |
| Enrichment Source | Dropdown (Apollo/Clearbit/Manual) | Enrichment | Track where data came from |
| Last Outbound Date | Date | Outbound | Prevent double-contacting |

### Deal properties

| Property | Type | Group | Purpose |
|----------|------|-------|---------|
| Close Reason | Dropdown (5-7 reasons) | Deal Intelligence | Win/loss analysis |
| Competitor | Dropdown (top 5 competitors + Other) | Deal Intelligence | Competitive tracking |
| Champion | Contact lookup | Deal Intelligence | Track the internal champion |
| Source (Inbound/Outbound) | Dropdown | Attribution | Pipeline attribution |
| Qualification Score | Number | ICP & Qualification | Deal quality tracking |

### Company properties

| Property | Type | Group | Purpose |
|----------|------|-------|---------|
| ICP Segment | Dropdown | ICP & Qualification | Account-level ICP fit |
| Target Account | Checkbox | ABM | Flag ABM target accounts |
| Enrichment Date | Date | Enrichment | Track data freshness |
| Tech Stack | Multi-select | Enrichment | Technology indicators |
| ARR Tier | Dropdown | Firmographic | Revenue segmentation |

---

## Automation with Properties

### Common property-triggered workflows

| Trigger | Action | Example |
|---------|--------|---------|
| ICP Fit = Tier 1 | Route to enterprise SDR | High-fit leads get premium treatment |
| Outbound Status = Replied | Notify rep in Slack | Immediate notification on positive reply |
| Close Reason = Competitor | Add to competitive intelligence report | Auto-tag for win/loss analysis |
| Enrichment Date > 90 days ago | Re-enrich the record | Keep data fresh automatically |
| Deal Amount changes | Notify sales manager | Pipeline value changes trigger alerts |

---

## Measurement

| Metric | Definition | Target | Frequency |
|--------|-----------|--------|-----------|
| Property fill rate | % of records with the property populated | > 80% for required properties | Monthly |
| Total custom properties | Count of active custom properties | 50-100 (audit if > 150) | Quarterly |
| Unused properties | Properties with < 5% fill rate and no automation | 0 (archive them) | Quarterly |
| Duplicate properties | Properties with overlapping names or purposes | 0 | Quarterly |
| Data quality score | % of dropdown properties with valid values (not "Other" or blank) | > 90% | Monthly |

---

## Pre-Creation Checklist

- [ ] Property answers "what report or automation uses this?"
- [ ] Checked for existing duplicate properties (different name, same purpose)
- [ ] Naming follows team convention (prefix, consistent case)
- [ ] Field type matches the data (dropdown for categorical, number for numeric)
- [ ] Dropdown options limited to 15 or fewer
- [ ] Property assigned to a group
- [ ] Property has an owner (team responsible for data quality)
- [ ] Population method defined (manual, automation, enrichment, integration)
- [ ] Required on forms or stage transitions where applicable
- [ ] Internal name is clean and won't need changing

---

## Anti-Pattern Check

- Creating properties without a reporting purpose. "Favorite color of the prospect's dog." Why? Unless it drives a report or automation, it's clutter. Every property needs a reason to exist
- Text fields for categorical data. "Industry" as a free-text field produces 47 spellings of "SaaS." Use a dropdown. Always. For anything you'll filter, report, or segment on
- 300 custom properties with 60% unused. Every new initiative added properties. Nobody removed them. Quarterly audit: if a property has < 5% fill rate and isn't used in any report or workflow, archive it
- No naming convention. Properties named "lead_source," "Lead Source," "leadSource," "Source of Lead," and "LS" all exist. They all mean different things. Or the same thing. Nobody knows. Establish a convention and enforce it
- Duplicate properties across teams. Marketing created "Lead Source." Sales created "Source." RevOps created "Original Source." All track the same thing differently. Audit for duplicates before creating new properties
- Required fields on every form. Every form requires 15 fields. Form completion rate drops to 20%. Only require fields that are essential for routing or qualification. 3-5 fields per form maximum
- Never cleaning up. Properties from 2022 reference products you don't sell, personas you don't target, and integrations you've removed. Clean quarterly. Archive the dead weight