What Each List Type Is
Active Lists
An active list continuously re-evaluates its membership criteria. Every time a contact's properties change, HubSpot checks whether that contact still meets the list's filters. Contacts are added automatically when they qualify, and removed automatically when they no longer do.
Active lists live under Contacts > Lists in HubSpot. You build them with the same filter logic as smart content and workflow enrolment criteria: property values, activity history, association data, list membership, and more.
The list itself is stateless. It has no memory of who was ever in it, only who qualifies right now.
Static Lists
A static list is a fixed snapshot. Contacts are added once, either manually or via an import, and they stay on the list until someone removes them. Nothing in HubSpot removes a contact from a static list automatically, not even if every property that originally justified adding them has changed.
Static lists also live under Contacts > Lists. They are the right tool when the "at this moment in time" fact is what matters, not the contact's ongoing state.
One thing both list types share: they count against your HubSpot list limit, which varies by tier.
---
Why the Difference Matters Operationally
The distinction is not cosmetic. It affects four things teams rely on daily.
Automation enrolment
Workflow enrolment criteria in HubSpot work the same way active lists do: they evaluate at trigger time. If you use an active list as an enrolment trigger, contacts are enrolled when they join the list and, depending on your settings, re-enrolled when they re-qualify. If you use a static list, enrolment is a one-time event keyed to the import or manual addition.
Mixing these up creates two failure modes. First, you enrol contacts in an onboarding workflow they already completed because someone re-imported a static list they were on. Second, you miss new contacts who meet the criteria because the list was set as static and never updated.
Segmentation drift
An active list that filters for "HubSpot lifecycle stage is Customer" will grow and shrink as lifecycle stages change. A static list built from a one-off export of customers will become stale the moment the next deal closes. Teams that pull campaign recipients from a static list rather than an active one are always working with yesterday's data.
Performance at scale
Active list membership is recalculated incrementally. HubSpot's backend updates active list membership in near real-time as contact records change, rather than recomputing the whole list on demand. For large portals (100,000+ contacts), this means active lists are generally faster to query for enrolment and sending than running a fresh filter each time.
Static lists are flat. They're essentially a stored array of contact IDs. Extremely fast to read, no computation required, but the freshness guarantee is zero.
Reporting integrity
If you use active lists as the basis for saved views or report filters, the report reflects current membership, not historical membership. This is correct for some reports (how many contacts qualify for the criteria right now) and wrong for others (how many contacts received this campaign). For campaign-audience reporting, a static list is the honest record.
---
- Enrolment triggers evaluate at trigger time and re-enrol as contacts re-qualify
- Segmentation reflects current lifecycle stage, not a past export
- Membership is recalculated incrementally in near real-time
- Reports answer how many contacts currently meet the criteria
- Enrolment is a one-time event keyed to the import or manual addition
- Segment becomes stale the moment the next deal closes
- Flat stored array: extremely fast to read, zero freshness guarantee
- Reports answer who received this campaign, the honest historical record
How Active List Re-evaluation Works
HubSpot re-evaluates active list membership when any of the following occur:
A contact property that the list filters on changes value.
An activity (email open, form submission, page view) is logged that the list filters on.
A contact is added to or removed from another list used as a filter criterion.
A manual re-evaluation is triggered from the list settings (available for some plans).
Re-evaluation is event-driven, not scheduled. There is no nightly batch job. Membership changes propagate within minutes for most portals, though very large portals with complex filter chains can take longer.
One important nuance: active list re-evaluation does not retroactively affect workflow enrolment history. If a contact was enrolled in a workflow because they were on an active list, and they later drop off the list, they are not automatically unenrolled from the workflow unless you have added a specific goal or suppression step.
Filter complexity and performance
Active lists with deeply nested OR conditions, multiple cross-object filters, or very large association lookups will re-evaluate more slowly. HubSpot does not publish exact performance thresholds, but in practice, lists with more than five nested OR branches and cross-object conditions (filtering on Deal or Company properties from the Contact list view) add latency.
If a list is used as a workflow enrolment trigger and takes several minutes to update, there will be a corresponding delay before contacts are enrolled. For time-sensitive automations (like a speed-to-lead sequence), this matters.
---
- 1Property changeA contact property the list filters on changes value
- 2Activity loggedAn email open, form submission, or page view matching a filter is recorded
- 3List membership shiftA contact joins or leaves another list used as a filter criterion
- 4HubSpot evaluatesEvent-driven check runs within minutes for most portals, not a nightly batch job
- 5Membership updatesContact is added or removed; workflow enrolment history is not retroactively changed
When to Use Each Type: A Decision Frame
Use an active list when membership should track the contact's current state. Use a static list when you need to record who was in a group at a specific point in time.
Use active lists for:
Workflow enrolment triggers where you want ongoing enrolment as contacts qualify.
Suppression lists in email sends, so contacts who unsubscribed or converted are always excluded, even if they did so after you built the send.
Smart content targeting, where the content shown should reflect who the contact is right now.
Dashboard reports that answer "how many contacts currently meet X."
Segmented views for sales teams so they always see live data.
Use static lists for:
Campaign audience records. Once you send an email to a segment, freeze the list so you can answer "who received this?" six months later.
Import holding lists. When you import a CSV, HubSpot creates a static list automatically. Use it as an audit trail, not a live segment.
One-off manual outreach where the sales rep hand-picked the contacts and the selection shouldn't change.
A/B test cohorts where you need stable, non-shifting groups across the test window.
GDPR or compliance holds where a defined, frozen set of records needs to be acted on.
Tier note
Active lists require a paid HubSpot tier for most use cases. HubSpot Free gives you a limited number of lists and restricts advanced filter types. Active list membership as a workflow trigger requires Marketing Hub Starter or above. Complex multi-filter active lists with cross-object criteria generally require Marketing Hub Professional. If a client is on Free and complaining that their list isn't updating, the tier is likely the answer.
---
How Lists Interact with the Rest of HubSpot
Lists are not isolated objects. They sit at the centre of HubSpot's contact management layer and interact with several other features.
Workflows
Active lists can trigger workflow enrolment. Static lists can be used to manually bulk-enrol contacts via workflow history (Actions > Enrol in workflow). Neither list type controls workflow behaviour once a contact is inside a workflow, only enrolment.
Email sends
Both list types appear in the recipients picker for marketing emails. Use active lists when you want to include anyone who qualifies at send time (the list membership is evaluated at the moment of send). Use static lists when the cohort is fixed and intentional.
Suppression lists should almost always be active, so that new unsubscribes and lifecycle-stage changes exclude the right people automatically.
Sequences (Sales Hub)
Sequences do not use lists for enrolment directly. A sales rep enrols contacts one at a time or via a bulk action from a view. However, active lists can feed a saved contacts view that the rep uses as their enrolment queue.
Lead scoring
Active lists are commonly used in HubSpot's lead scoring rules as "is a member of list X" criteria. If those lists are static, the scoring rule stagnates. If they're active, scoring updates as membership changes.
Reporting
The Contacts by List report in HubSpot's reporting library counts current active members. For historical reporting (who was on this list on 1 January), you need a static list created on that date, or a custom report using list membership history data (available on Enterprise).
---
Common Failures
Using a static list as an always-on suppression list. A team builds a list of opted-out contacts as a static list, imports 500 names, and uses it to suppress a campaign. Three months later, another 200 contacts opt out but are never added to the static list. Those contacts receive the next campaign. Fix: use an active list filtered on email opt-out status, which updates automatically.
Triggering a re-enrolment workflow with an active list and not setting a re-enrolment limit. The workflow is set to re-enrol contacts whenever they re-join the list. A contact's property oscillates (lifecycle stage flips between Lead and MQL due to a sync issue), and they go through the workflow dozens of times. Fix: add a workflow suppression list or re-enrolment cap, or fix the upstream data issue causing the oscillation.
Relying on an active list for campaign reporting. A marketing manager checks the active list from a campaign sent three months ago to count recipients. The active list has since shrunk because some contacts changed lifecycle stage. The count is wrong. Fix: at send time, clone the active list as a static list and label it with the campaign date. That frozen list is the reporting source.
Building deeply nested active lists for high-frequency automations. A portal has an active list with seven OR branches and three cross-object filters used as an enrolment trigger for a speed-to-lead workflow. At high inbound volume, enrolment delays reach 8 to 12 minutes because list re-evaluation can't keep up. Fix: simplify the filter logic, split into two lists, or use a workflow trigger directly instead of routing through a list.
Importing to a static list and expecting automation to pick it up. A team imports 1,000 contacts for an onboarding campaign. They expect the onboarding workflow, which triggers off an active list, to pick them up automatically. The import creates a static list; the active list's criteria are not matched by those contacts. Fix: check whether the imported contacts actually meet the active list's filter conditions, and if so, verify the data was imported correctly.
---
What to Ship the Team
If you're standardising list hygiene in your HubSpot portal, here is what to communicate:
Every email campaign gets a static list created at send time. Name it with the campaign name and the send date.
Every automation enrolment trigger uses an active list. Review the filter logic quarterly.
Suppression lists are always active, filtered on opt-out status, lifecycle stage, or whatever combination your use case requires.
No static list used for suppression. Ever.
Active lists used in workflows are reviewed when the workflow is reviewed, not on a separate schedule.
This gives you a clear audit trail for campaigns, live automation, and a single suppression source of truth.
---
- 1Campaign audienceEvery email campaign gets a static list created at send time, named with the campaign name and send date
- 2Automation triggersEvery automation enrolment trigger uses an active list, with filter logic reviewed quarterly
- 3SuppressionSuppression lists are always active, filtered on opt-out status, lifecycle stage, or a combination
- 4No static suppressionNo static list is ever used for suppression, no exceptions
- 5Workflow review cadenceActive lists used in workflows are reviewed when the workflow is reviewed, not on a separate schedule
Related.
Talk it through
If this maps to something you are wrestling with in your own portal, book a free thirty-minute consult and we will tell you where to start.
Book a free consult