Merging, Importing, and Listing Contacts in HubSpot (and Where It Still Takes a Person)
HubSpot merges duplicate contacts from a record's Actions menu, imports and exports them as CSV or Excel through Settings, and builds lists (active, which auto-update, or static, which don't) off any property or filter you've got. All three are native, no plugin needed. Where it gets harder is keeping your marketing contact count, and your list criteria, accurate once the data a list depends on lives outside HubSpot.
What the native toolkit actually handles
Merging two contact records is a manual action in the UI: open either record, choose Merge, pick the surviving record, and HubSpot combines activity history, associations, and property values, favoring the primary record on conflicts. HubSpot also runs its own duplicate-detection pass in the background and surfaces likely matches for review under Data Quality tools, but it still asks a person to confirm each merge rather than doing it silently on its own.
Import and export are both built in. Import maps a CSV's columns to HubSpot properties, lets you choose whether new rows create records or just update existing ones, and can drop the whole batch into a new static list automatically. Export works the same way in reverse: select contacts (or an entire list), choose a format, and HubSpot generates the file.
Lists come in two flavors. A static list is a fixed snapshot, the people in it at save time, useful for a one-time send or an import batch you want to track. An active list re-evaluates its filter criteria continuously, so a 'customers in Texas with an open deal' list stays current without anyone touching it.
Where marketing contact status and list logic get expensive
HubSpot bills separately for marketing contacts, the subset you actually send email or run ads to, versus the rest of your CRM contacts, which you can keep for free as non-marketing. Flip a contact to non-marketing (manually, or on a list) and they stop counting toward that tier, but nothing does this for you automatically out of the box. A lot of businesses pay for thousands of marketing-tier contacts who haven't opened an email in two years, simply because nobody built a rule to reclassify them.
The other real limit is that a list filter can only see properties already sitting on the HubSpot record. If your actual segmentation logic depends on something that lives in your ERP, your support desk, or a spreadsheet nobody synced over, like last order value or ticket volume, the list builder has no way to reach it, no matter how the filter is written. It can only act on what's already there.
What that looks like built out
Marketing contact status that updates itself
A contact who hasn't engaged in six months, or who was only ever a vendor and not a prospect, gets reclassified to non-marketing automatically on a schedule, instead of a person reviewing the list by hand once a quarter.
List criteria that reach past HubSpot
Order history from your accounting system or ticket counts from your helpdesk land on the contact record as a synced property, so your lists can finally filter on the thing you actually care about, not a proxy for it.
What does your contact list actually need to know?
If the real answer to a segment is sitting in another tool, that's a sync, not a new HubSpot field someone updates by hand.
Paying for marketing contacts who never open anything?
Tell us how your marketing contact count and your lists got built, by hand, by a one-time import, or by a filter that's gone stale. We'll look at what's quietly costing you and what a sync from outside HubSpot would actually fix. Contacts are one example; n-frames automates whatever's manual anywhere in your business, HubSpot or otherwise.
Let's talk