Once a tenant holds thousands or tens of thousands of records across dozens of types, navigation stops scaling. Menus get long, filters take a moment to compose, and the user who already knows the name of the thing they need shouldn't have to climb through three levels of hierarchy to reach it. Search is the fastest path from intent to record. We treat it as a foundational feature, not a convenience — and we do so because the alternative is worse than useless: users learn not to trust a half-built search, and a search people don't trust goes unused.
The mechanics are straightforward. Every type has properties, and implementers choose which of those properties are searchable. An indexing layer maintains a live index of those properties as records are created, updated, and deleted. When a user types into the search bar, the index answers, and the user sees matches in milliseconds across every type they have permission to see.
Two words in that sentence are quietly doing a lot of work. The first is permission. Search results respect the same role and field-level access rules as every other part of the platform. A user who cannot see a record never sees it in search — not even a title, not even a redacted stub. That removes an entire category of inadvertent leakage that plagues bolt-on search systems and that sometimes surfaces in audits. If a user can't reach a record by clicking, they can't reach it by searching either.
The second is live. Type-ahead results appear as you type, not after a submit. For common queries — the name of a customer, a reference number, a partial subject line — the target record surfaces within a handful of keystrokes, and a single click opens it. The live-search component is reusable: the same mechanism that powers the global search bar also drives the picker dialogs for choosing references, the lookup popups on forms, and the quick-jump dialogs scattered through the UI. Users learn the search experience once and use it everywhere.
For more deliberate searching, a dedicated search page offers the full experience. All matching records across all types, grouped by type, with filters for narrowing the result set and the same column customization as a regular table view. That page is where users go when they don't know exactly which type they're looking for, or when they want to explore the shape of the results before picking a specific record. It's the difference between a quick lookup and an investigation.
Search across related objects is a small but important touch. The search for a customer name can surface not just the Customer record but the Orders and Contracts that point to it — with their context visible in the result. That means a user who remembers an order by the customer's name, rather than the order's own identifier, still finds it. In a tenant with a well-connected data model, that kind of contextual search is often where users first notice the platform is paying attention.
Graceful handling of special characters is the feature that shows up silently in international tenants. Accented characters match their unaccented equivalents; multiple scripts coexist in the same index; punctuation doesn't break matching; case doesn't matter. Users type the way they think, and the search responds accordingly. For tenants with multi-language content — customer names in several scripts, product descriptions in several languages — this is the difference between a search that works for everyone and one that quietly favors one user base.
Sensitive-field exclusion is the other side of the same coin. Some properties — personal notes, internal diagnostic fields, the confidential comments on a record — shouldn't be globally searchable even for users with broad access, simply because a global search isn't the right surface for them. Admins can exclude fields from search indexing without affecting their visibility elsewhere. The index reflects what should be findable; the record itself remains unaffected.
A keyboard shortcut to the global search bar is the last piece that turns a good search feature into one power users actually prefer over navigation. For anyone who has adopted a few keyboard habits, the shortcut is often the most-used gesture in the application.
Through the REST API, search is available as its own endpoint, with the same permission-aware, type-aware, full-text behavior that drives the UI. Integrations and external frontends can expose the same search experience to their users, without having to build a parallel index or maintain a separate copy of the permission rules. One source of truth for what's findable and by whom — and the same answer from every surface that asks. The roles and permissions article and the REST API article are both worth reading alongside this one, since search sits at the intersection of both.