All guides
HubSpotHow-To

How to Search Across All Object Types in HubSpot

By SearchReplace··8 min read

Finding a specific piece of data in HubSpot should be simple. You have a CRM full of contacts, companies, deals, tickets, and maybe a few custom objects — and you need to find every record that contains a particular value. Maybe it's an old phone number format, a misspelled company name, or an outdated URL that appears somewhere across your portal.

HubSpot's built-in search has real limitations here. The global search bar at the top of the screen is designed for quick lookups — finding a specific contact by name or email. It's not built for the kind of comprehensive, cross-object search that data cleanup and auditing require.

This guide covers what HubSpot's native search can and can't do, and how to run thorough searches across every object type in your portal.

How HubSpot's global search works (and where it falls short)

The global search bar in HubSpot (the magnifying glass icon in the top navigation) searches across contacts, companies, deals, and tickets simultaneously. Type a name, email, phone number, or company domain, and HubSpot returns matching records from all four standard object types.

That sounds comprehensive, but there are several important gaps:

It only searches a handful of default properties. For contacts, global search checks first name, last name, email, and phone number. For companies, it checks name and domain. It doesn't search arbitrary custom properties, notes, or activity content. If you stored a reference number in a custom property and need to find it, global search won't help.

Custom objects are excluded. If your portal uses custom objects — and many Sales Hub and Service Hub Enterprise portals do — global search doesn't touch them. You have to navigate to the custom object's index page and use its local search bar separately.

No substring or pattern matching. Global search works on whole-word and prefix matching. You can't search for a partial string within a property value. Searching for "acme" will find "Acme Corp" but won't find "old-acme-domain.com" buried in a URL property.

No way to search property values across all records. If you want to find every record (of any type) that contains the text "2024" in any property, there's no native way to do that. You'd have to search each object type individually, and even then, only indexed properties are searchable.

Blog posts and CMS content have a separate search. HubSpot's CMS content — blog posts, landing pages, website pages — isn't included in CRM search at all. You'd need to search those through the Marketing > Website section of the UI, which has its own limitations.

Searching within a single object type

If you know which object type your data lives in, HubSpot gives you a few more options within that object's index page.

Using filters on index pages

Navigate to Contacts, Companies, Deals, or Tickets and use the filter panel. You can filter by specific property values, including:

  • "Contains" operators for text properties (finds substrings)
  • "Is equal to" / "Is not equal to" for exact matches
  • "Is known" / "Is unknown" for checking if a property has any value
  • Numeric ranges for number properties
  • Date ranges for date properties

This is more powerful than global search, but you can only filter one object type at a time. If you need to find a value that might exist in contacts, companies, and deals, you'd have to run the same filter three times across three different pages.

Saved views and active lists

For searches you run repeatedly, you can save filters as views on index pages, or create active lists (for contacts and companies) that automatically include records matching your criteria. These are useful for monitoring data quality over time — for instance, an active list that catches contacts with improperly formatted phone numbers.

But saved views and lists don't help with one-off cross-object searches. They're ongoing tools, not ad-hoc search tools.

The problem with one-object-at-a-time searching

For data cleanup and migration work, searching one object type at a time is a serious bottleneck. Consider these real scenarios:

A company rebrand. Your company (or a client's company) changes its name. The old name might appear in contact properties (company name field), company records (the company name itself), deal names ("Acme Corp - Enterprise Deal"), ticket subjects, email templates, and blog posts. Searching six different places manually is slow and error-prone — you'll inevitably miss something.

A domain migration. Your company moves from old-domain.com to new-domain.com. The old domain might be in contact email addresses, company domain fields, website URLs on contact and company records, CTA links in blog posts, and custom property values. A single global search can't find all of these.

Cleaning up after a bad import. A CSV import introduced bad data — maybe a rogue character, a wrong prefix, or values in the wrong format. The import might have touched contacts and companies simultaneously. Finding every affected record means searching both object types for the problematic pattern.

How to search across all objects effectively

The most reliable way to search across all object types is to use a tool that connects to HubSpot's API and can query every property on every object type systematically.

SearchReplace was built for exactly this workflow. When you set up a search operation, you choose the object type and property — but you can run multiple searches in quick succession to cover every corner of your portal. More importantly, the search supports three modes that go beyond what HubSpot's native search offers:

Exact match. Find records where a property value is exactly the string you specify. Useful for standardization work — finding every contact where the "Country" field is exactly "US" so you can change it to "United States."

Substring match. Find records where a property value contains your search term anywhere within it. This catches values that HubSpot's global search would miss — like finding "acme" inside "https://acme-corp.com/landing-page."

Regex match. Find records matching a regular expression pattern. This is the most powerful option for complex searches — finding all phone numbers that don't match a specific format, all emails from a particular domain pattern, or all URLs containing a specific path segment.

After finding the matching records, you can preview what a replacement would look like, or simply use the search results as an audit — identifying where a particular value exists across your portal.

Building a cross-object search workflow

When you need to search comprehensively across your HubSpot portal, here's a systematic approach:

Step 1: Identify the search term and likely locations

Before you start searching, think about where the value you're looking for might exist. A company name could be in:

  • Contact properties: Company name, job title, notes
  • Company properties: Name, domain, description
  • Deal properties: Deal name, description
  • Ticket properties: Subject, description
  • Blog posts: Title, body content, meta descriptions
  • Custom objects: Any text property

Step 2: Search each object type systematically

Run your search against each object type, focusing on the properties most likely to contain the value. Start with the most obvious locations and work outward.

Step 3: Document what you find

Keep a record of which object types and properties contained matches. This is important for two reasons: it tells you the scope of any replacement operation you'll need to run, and it helps you identify data quality patterns that need fixing upstream.

Step 4: Apply changes with preview

If you're replacing the found values (not just auditing), always preview changes before applying them. A single mistyped replacement value can corrupt thousands of records.

A note on API-based searching

Some teams write custom scripts using HubSpot's Search API endpoint to search across objects. This works, but the Search API has limitations worth knowing:

  • It only searches properties that are marked as "searchable" in HubSpot's settings
  • Full-text search behavior can be unpredictable with partial matches
  • Rate limits apply (currently 5 requests per second for search endpoints)
  • You need to handle pagination for large result sets
  • Custom objects require separate API endpoints with different query syntax

For one-off searches, the development time to write and debug a search script usually isn't justified. For repeated, automated searches, the API makes more sense — but you'll want robust error handling and logging.

Practical tips for better CRM search hygiene

Standardize property values proactively. The easier your data is to search, the less you'll need to search for problems. Use dropdown properties instead of free text wherever possible.

Use naming conventions. If you use consistent naming conventions for deals, tickets, and custom object records, searching for related records becomes much easier.

Audit regularly. Don't wait until a problem is urgent to search your portal. A monthly check for common issues — inconsistent formatting, outdated values, orphaned records — catches problems before they spread.

Log your search-and-replace operations. Keep a record of what you searched for, what you changed, and when. This audit trail is invaluable when debugging issues months later. Tools like SearchReplace maintain this log automatically.

A CRM is only as useful as the data inside it. The ability to search thoroughly across every object type isn't a nice-to-have — it's a prerequisite for maintaining the data quality that your sales, marketing, and service teams depend on.

Related HubSpot guides for planning, previewing, and validating the next step.

Still editing HubSpot records one by one?

Start with 100 free applied records — no credit card required.