- Re-evaluates criteria every time a contact property changes
- Contacts are added and removed automatically
- No memory of past members, only who qualifies right now
- Powers workflow enrolment, suppression and smart content
- Contacts added once via import or manual selection
- Nothing in HubSpot removes a contact automatically
- Preserves who was in a group at a specific point in time
- Honest record for campaign audiences and compliance holds
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, then 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 on it, only of 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 once every property that originally justified adding them has changed.
Static lists also live under Contacts, then Lists. They are the right tool when the fact that matters is “at this moment in time”, 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. Use an active list as an enrolment trigger and contacts are enrolled when they join the list, and, depending on your settings, re-enrolled when they re-qualify. Use a static list and enrolment is a one-time event keyed to the import or manual addition.
Mixing these up creates two failure modes. First, a contact gets enrolled in an onboardingworkflow they already completed, because someone re-imported a static list they were on. Second, new contacts who meet the criteria get missed, because the list was set as static and never updated.
Segmentation drift
An active list filtered on lifecycle stage is Customer will grow and shrink as lifecycle stages change. A static list built from a one-off export of customers goes 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), that means active lists are generally faster to query for enrolment and sending than running a fresh filter each time.
Static lists are flat: essentially a stored array of contact IDs. Extremely fast to read, no computation required, but the freshness guarantee is zero.
Reporting integrity
Use active lists as the basis for saved views or report filters and the report reflects current membership, not historical membership. That 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 happen: a contact property the list filters on changes value, an activity such as an email open, a form submission or a page view is logged that the list filters on, a contact is added to or removed from another list used as a filter criterion, or a manual re-evaluation is triggered from the list settings on plans that allow it.
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. Say a contact was enrolled in a workflow because they were on an active list, and they later drop off that list. They are not automatically unenrolled from the workflow. That needs 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 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, a speed-to-lead sequence for example, that 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 evaluatesAn event-driven check runs within minutes for most portals, not a nightly batch job
- 5Membership updatesA contact 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 stay excluded even if they did so after the send was built, smart content targeting where the content shown should reflect who the contact is right now, dashboard reports that answer how many contacts currently meet a given condition, and segmented views for sales teams so they always see live data.
Use static lists for campaign audience records, so once you send an email to a segment you can freeze the list and answer who received it six months later, import holding lists, since HubSpot creates a static list automatically on every CSV import and it is useful as an audit trail rather than a live segment, one-off manual outreach where a rep hand-picked the contacts and the selection should not change, A/B test cohorts that need stable, non-shifting groups across the test window, and GDPR or compliance holds where a defined, frozen set of records needs to be acted on.
Tier note
Active lists are limited on HubSpot Free, which gives you only a small number with restricted filter types, so most real segmentation needs a paid tier. 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 a list is not updating, the tier is usually the answer.
- Workflow enrolment triggersActive
- Use active: contacts enrol as they qualify and re-enrol when they re-qualify
- Suppression listsActive
- Use active: new unsubscribes and lifecycle changes are excluded automatically
- Smart content targetingActive
- Use active: content shown should reflect who the contact is right now
- Campaign audience recordsStatic
- Use static: freeze the list at send time so you can answer who received it later
- A/B test cohortsStatic
- Use static: groups must be stable and non-shifting across the test window
- GDPR or compliance holdsStatic
- Use static: a defined, frozen set of records needs to be acted on
Active list membership as a workflow trigger needs Marketing Hub Starter or above, and complex multi-filter active lists generally need Professional. If a list is not updating on a Free portal, the tier is usually why.
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, through Actions, then 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, since 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 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. Active lists can still 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 are 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 a given date, you need a static list created on that date, or a custom report built on 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 because of 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 eight to twelve minutes because list re-evaluation cannot keep up. Fix: simplify the filter logic, split into two lists, or trigger the workflow 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.
- Static list as always-on suppression
- New opt-outs after the import are never excluded. Fix: use an active list filtered on email opt-out status.
- Re-enrolment workflow with no cap
- Property oscillation sends a contact through the workflow dozens of times. Fix: add a suppression list or re-enrolment cap.
- Active list for campaign reporting
- The list shrinks after send as contacts change stage, so the count is wrong. Fix: clone as a static list at send time.
- Deeply nested list on high-frequency automation
- Complex OR branches and cross-object filters delay enrolment. Fix: simplify the filter logic or trigger the workflow directly.
- Import to static, expecting active pickup
- Import creates a static list; the active list criteria may not match. Fix: verify the imported contacts meet the active filter.
What to ship the team
If you are standardising list hygiene in your HubSpot portal, here is what to communicate: every email campaign gets a static list created at send time, named with the campaign name and the send date; every automation enrolment trigger uses an active list, with the filter logic reviewed quarterly; suppression lists are always active, filtered on opt-out status, lifecycle stage, or whatever combination the use case requires; no static list is ever used for suppression; and active lists used in workflows are reviewed when the workflow is reviewed, not on a separate schedule.
That 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 HubSpot concepts
Understanding active versus static lists is easier once you see how they connect to the broader HubSpot data model.
Lifecycle stages are the most common filter property in active lists. If the lifecycle stage logic is wrong, every active list built on it is wrong too.
Calculation and rollup properties are another property type active lists filter on. Because HubSpot recalculates them on the record, updating a calculation property re-evaluates every active list that filters on it, the same event-driven trigger described above.
Workflow enrolment triggers share the same filter engine as active lists. A useful mental model: an active list is a named, saved version of a workflow enrolment trigger.
Smart content uses the same “is a member of list X” logic as active lists. Active lists power dynamic site personalisation; static lists do not.
Contact views in HubSpot are similar to active lists but not the same. Views do not trigger workflows or suppress sends. Lists do.
Sequences sit outside the list layer entirely. They are a Sales Hub concept, not a Marketing Hub one.
If you are auditing an existing portal’s list architecture, start with the automations that use lists as triggers. Those are the highest-risk places for an active-versus-static mismatch.
Common questions
What is the difference between an active list and a static list in HubSpot?
An active list updates its membership automatically. HubSpot re-evaluates it every time a contact property changes, adding and removing contacts as they qualify. A static list is a fixed snapshot: contacts are added once and stay until you remove them manually. Active lists track the present state, static lists record a moment in time.
Do active lists require a paid HubSpot plan?
Active lists are limited on HubSpot Free, which gives you a small number with restricted filter types, so most real segmentation runs on a paid tier. Using active list membership as a workflow enrolment trigger needs Marketing Hub Starter or above. Complex multi-filter or cross-object active lists generally need Professional.
Should a HubSpot suppression list be active or static?
Always active. An active suppression list filtered on opt-out status or lifecycle stage automatically excludes new unsubscribes and converted contacts on every send. A static suppression list freezes the moment it is built, so anyone who opts out afterwards keeps receiving emails. That is a common cause of compliance breaches.
Which HubSpot list type should I use for campaign reporting?
A static list created at send time. Freeze the audience when the email goes out, and name it with the campaign and date. Months later you can still answer who received it. An active list from the same campaign drifts, since its membership reflects who qualifies now, not who was actually sent the email.