Client list and search
Every client account at a glance — logo, name + address, contact count, status, live open-positions count, creation date. 9 built-in filters, three sort keys, two bulk actions, a 12-field XLSX export and a Bulk Import shortcut.
Statistics tiles at the top
Four counters above the toolbar. Each counter queries getAllClients with a date window and shows the total elements matching:
- Total — every client account ever created in your tenant.
- Last 365 days — clients whose Creation Date is within the past year (rolling).
- Last 30 days — clients created in the past month.
- Last 7 days — clients created in the past week.
The tiles do not respect the filter drawer or the search bar — they always show the unfiltered counts. Use them as a “how big is the book?” pulse, not as a filtered analytics widget.
Toolbar
Same six-control structure as every other list (see the Candidates list page for the shared layout), plus two right-side shortcuts:
- Refresh button (circular arrow icon).
- Add Client button (with permission to create clients). Opens a side panel asking for: Entity (only if multi-entity is enabled), Name (required), and an Address picked via the Google Places autocomplete (required — the form refuses to save without a valid geocoded address).
- Search input — 300 ms debounce, full-text across name and address.
- Filters button — opens the filter drawer.
- Sort button — opens the Sort popover.
- Bulk Import link (with permission to create clients) — navigates to
/clients/bulk-importfor spreadsheet-driven creation. - Export button (with permission to create clients) — opens the export side panel.
The Clients list has no page-level toggles — no archive switch, no closed-job switch, no spontaneous switch. The toolbar stays exactly the same regardless of selection or context.
Filters specific to Clients
The filter drawer exposes 9 built-in filters, plus every active client custom property defined in Settings → Customization → Client properties (those appear at the bottom of the available-filter list with the type chosen by your admin).
Name (text)
Operators: equals / contains / do not contains / has no value / has a value. Matches the client’s display name (case-insensitive, accent-insensitive). Useful when you remember part of a company name but the search bar is too broad.
Creation Date, Last Update Date (date)
Operators: equals / before / after / between / has no value / has a value. Creation Date is when the client account was first created in Nextal. Last Update Date is the most recent modification (any edit on the profile bumps it).
Status (select)
Operators: is / is not. Options come from your organization’s configured client statuses (Settings → Customization → Client statuses). Common shapes: Active, Prospect, Inactive, On hold.
Entities (select)
Operators: is / is not. Only meaningful when your tenant has multi-entity enabled. Lets you narrow to a specific division/subsidiary.
Tags, Locations, Departments, Segments (select-multi)
Four separate multi-select filters, each backed by its own admin-managed tag list:
- Tags — free-form tags from getClientTag().
- Locations — geography labels (e.g. “Montreal HQ”, “Toronto branch”) from getClientLocationTag().
- Departments — department labels (e.g. “Engineering”, “Operations”) from getClientDepartementTag().
- Segments — business-segment labels (e.g. “SMB”, “Mid-market”, “Enterprise”) from getClientSegmentTag().
Each filter has the standard 5 multi operators: has one of / has all / has none of / has no value / has a value.
Custom properties
Any active client custom property your admin has defined is appended to the available-filter list with the type configured there (text, number, date, select, select-multi).
Sort keys
The Sort popover (icon on a green chip on the right of the toolbar) exposes three keys, plus Relevance when search is active:
- Name — alphabetical.
- Status — by configured status order.
- Creation Date — the default. DESC by default (newest clients first).
- Relevance — only appears when a text search is active; becomes the new default sort.
Columns in the table (7)
From left to right:
- Checkbox — only visible if you have edit access to clients. Used for bulk select. The header checkbox toggles all rows on the current page.
- Name — three pieces inside one cell:
- A small round logo (SmallLogo) if the client has a
photoIdset; otherwise a colored avatar with the client’s initials. - The company name — clickable, opens
/clients/<id>. Requires read access to clients. - The formatted address on a second line below the name.
- A small round logo (SmallLogo) if the client has a
- Contacts — a number. Live query: counts how many Contact records have
clientIdscontaining this client’s id. Shows nothing while loading. Read this as “how many people on this client we have on file.” - Status — colored chip from the client’s configured status, with the chip color driven by the status’s level attribute (danger, primary, info, success, warning, default).
- Open Positions — a number. Live query: counts how many of the client’s jobs are not closed. A skeleton bar is shown while the count loads. Zero = no active hiring on this account.
- Creation Date — formatted with your locale’s short date format (e.g. 06/01/2026).
- Action — 3-dot menu. Only visible if you have edit access to clients.
Columns are not reorderable or resizable, and you cannot add or remove them — the column set is fixed.
Row actions (3-dot menu)
Visible only if you have edit access to clients. The current implementation renders two entries:
- Edit (pencil icon).
- Share (share icon).
Bulk select and bulk actions (2)
Ticking the master checkbox in the header selects every row on the current page; ticking a row checkbox adds that row to the selection. Selection persists across pages — switch to page 2, tick more rows, and the selection grows.
When at least one row is ticked, the toolbar is replaced by a bulk-action bar with exactly two buttons:
1. Add tag (tag icon)
Opens a tag picker side panel. Pick one or more tags from getClientTag(). Confirming appends the chosen tags to every selected client — existing tags on each client are kept. There is no bulk “Remove tag” — only addition is supported.
2. Change status (board icon)
Opens a status picker side panel. Pick one status from the configured client statuses. Confirming applies that single status to every selected client (the per-client status field is overwritten). Useful at quarter end to bulk-archive prospects that have gone cold.
Both bulk operations require edit access to clients. There is no bulk Share, no bulk Delete, no bulk Merge, no bulk Email/SMS, no bulk Export-selected — the export uses the current filter set, not the ticked selection.
Export
Where. Top-right of the toolbar, next to Bulk Import. Requires the permission to create clients.
How it works. Honors your active filter, search and sort exactly like the Candidates export. Generates a client-side XLSX via SheetJS, named clients_DD/MM/YYYY.xlsx, sheet name Client Information. Hard-capped at the first 1000 clients; if your filtered result exceeds that, a warning toast appears (“Only the first 1000 clients can be exported”) and the file contains the top 1000 per current sort.
The 12 exportable fields
On by default (4):
- Name.
- Address — flattened to a string (the structured address object is serialized).
- Status — exported as the human label (e.g. Active), not the numeric ID.
- Creation Date — formatted with your locale’s short date format.
Off by default (8) — toggle on if you need them:
- Last Update Date, Website, Industry.
- Locations, Departments, Segments — each exported as comma-separated strings within a single cell (e.g. “Montreal HQ, Toronto branch”).
- Tags — also comma-separated.
- Active — whether the client account is currently active.
Bulk Import
A Bulk Import shortcut sits in the toolbar next to Export (with permission to create clients). Clicking it navigates to /clients/bulk-import, a dedicated wizard that ingests a CSV or XLSX of clients with column mapping, validation and per-row error reporting. Use it whenever you have more than ~10 clients to add at once — manual creation via the Add Client side panel is faster for one-offs but slower for batches.
Pagination
Standard pagination footer at the bottom of the table — URL parameter ?page=0. Any filter, search, sort or page-toggle change resets page to 0 so you don’t land on an empty page 7.
Tips and shortcuts
- Build segment-based saved filters. Combine the Segments, Locations and Departments multi-selects to build per-vertical lists (“Quebec manufacturing clients”, “Toronto SMB”), then save and favorite them — one click each from the favorites bar above the table.
- The Open Positions column is a sales signal. A 0 there often means a client account that has not produced active hiring in months — a good candidate for a relationship check-in. Sort by Status and scan for inactive accounts with 0 positions.
- Status + Last Update Date together spot cold accounts. Filter Status: Active + Last Update Date before [3 months ago] — those are nominally-active clients who haven’t been touched in a quarter.
- Use the Contacts column as a relationship depth signal. 1 contact = single point of failure. 5+ contacts = healthy multi-stakeholder relationship.
- Export before quarterly account reviews. Tick on Tags + Segments + Industry + Website fields before exporting — that gives ops the most usable Excel for slicing the book.