Use Hidden Helper Properties to Normalise Data in HubSpot
Hidden helper properties create a system-controlled normalisation layer in HubSpot. They sit between messy user input and automation, reporting, and lifecycle logic, ensuring your CRM behaves predictably regardless of how data is entered.
Overview
This hack introduces a hidden normalisation layer inside HubSpot using helper properties and workflows.
Instead of relying on inconsistent user input, you standardise data behind the scenes, making automation, reporting, and lifecycle logic reliable and predictable.
The Problem
Uncontrolled data entry in HubSpot leads to:
- Inconsistent values
- “Paid Search” vs “paid search” vs “PPC”
- Duplicate properties representing the same concept
- Workflow enrollment failures due to unexpected values
- Broken lists and unreliable reports
The Hack
Create hidden helper properties that:
- Convert messy input into a controlled set of values
- Act as the single source of truth for automation and reporting
- Sit between raw data and business logic
Why It Works
- HubSpot workflows require exact value matches
- There is no native normalisation layer
- This approach creates one using:
- Properties (data model)
- Workflows (mapping logic)
Result:
When to Use This
Apply this hack to properties that are:
- Free-text or loosely controlled
- Populated from multiple sources (forms, imports, integrations)
- Used in:
- Workflows
- Lists
- Reports
- Lifecycle or routing logic
Common candidates:
- Lead Source
- Industry
- Product Interest
- Region / Territory
- Use Case
Step-by-Step Implementation
1. Define Your Clean Output Model
Decide what “good” looks like.
Example: Lead Source
Raw inputs:
- Google Ads
- PPC
- Adwords
Normalised values:
- Paid Search
- Organic Search
- Referral
- Direct
- Other
Keep this list:
- Short
- Stable
- Business-relevant
2. Create the Helper Property
- Go to Settings → Properties
- Select the correct object (e.g., Contacts)
- Create a new property:
Configuration
- Label:
Normalized Lead Source - Internal name:
normalized_lead_source - Field type: Dropdown select
- Options: your normalised values
- Visibility: Hidden
3. Build the Normalisation Workflow
- Go to Automation → Workflows
- Create a workflow (same object as property)
- Start from scratch
4. Set Enrollment Criteria
Use:
- Original property is known
- AND helper property is unknown
This prevents unnecessary overwrites during initial setup.
5. Add Mapping Logic
Use If/Then branches to map inputs → outputs.
Example:
- If Lead Source is:
- Google Ads
- PPC
- Adwords
→ Setnormalized_lead_source = Paid Search
- If Lead Source is:
- SEO
- Blog
→ Setnormalized_lead_source = Organic Search
- Else →
Other
Each branch ends with Set property value
6. Handle Edge Cases
Always account for unknowns:
- Add a fallback value:
OtherorUnknown - Optionally track issues:
7. Test Before Activating
- Manually enroll test records
- Validate:
- Correct mappings
- No overwrites
- No re-enrollment loops
Only activate when results are consistent.
8. Switch to the Helper Property
Once stable:
- Update workflows to use the helper property
- Update lists and filters
- Update reports
The original field becomes:
Input only — not logic-critical
Best Practices
Naming Convention
Use consistent prefixes:
_sys_
internal_
Do Not Expose Helper Properties
Keep them out of:
- Forms
- Default record views
- User-editable contexts
Allow Reprocessing (Advanced)
To keep data accurate over time:
- Enable re-enrollment
- Allow workflow to update the helper property if the source changes
Monitor Data Quality
Add supporting properties:
normalization_statusneeds_data_review
Flag anything that doesn’t map cleanly.
Limitations
This approach may not scale well if:
- You have hundreds of possible values
- Inputs require fuzzy matching or NLP
- Data should be standardised upstream (ETL, integrations)
