Skip to content

Candidate list & search

Find every candidate in your database — with full-text search across name/CV content, a rich filter drawer covering every candidate field, a separate sort picker, saved filters with one-click favorites, and a pagination footer.

Where to find it
Top menu → Candidates
Who can use it
Anyone with access to candidates

The candidate list is the front door to your talent pool. Right of the title, the list’s total is followed by a small ⟳ button (Refresh the list) that reloads the list. The toolbar holds, from left to right, a search field, a Filters button and the sort button — it names the current order, for example Newest first — then, on the right, Bulk Import, Export and Add Candidate. On a narrow window, that right-hand group moves to a second line. Below the toolbar, a row of favorite-filter chips lets you re-apply your most-used saved filters in one click. Below that, the results table shows seven columns: Name, an Eye icon to preview the latest CV, Email, Phone Number, Status, Stars, Creation Date. Click anywhere on a row to open the candidate. Pagination sits at the bottom.

The same controls appear on the Jobs list, Clients list, Contacts list and Job Applications list — they all share the ListPage component. So everything on this page applies to those lists too; only the column set, the available filter fields and the sort keys change.

The full candidate list. From top: title, total and ⟳; search, Filters, sort, then Bulk Import, Export, Add Candidate; favorite filter chips; results table; pagination.
The search field. Type at least 2 characters; the list updates 300 ms after you stop typing.

What it does. Full-text search across the candidate’s indexed content — name, email, and the parsed text of any uploaded CVs. The search runs server-side; the input has a 300 ms debounce so the list does not requery on every keystroke.

How to use it.

  1. Click in the search field

    The wide input with a magnifier icon, at the start of the toolbar, right before the Filters button.

  2. Type at least 2 characters

    The list waits until you stop typing for 300 ms, then refreshes. Shorter terms are ignored.

  3. Watch the Sort option flip to Relevance

    Once a search is active, an extra sort key called Relevance (server-side score) is added to the Sort picker and becomes the default order — best matches first. Clear the search and Relevance disappears again.

  4. Clear when done

    Empty the field. The result set returns to whatever your filters + sort produce without text search.

Filters button — the drawer

The Filters drawer. The top input filters the list of available filters by name; pick one to open its editor.

What it is. The Filters button (filter funnel icon), right after the search field. When filters are applied, their number shows next to the label. Clicking it opens an off-canvas drawer from the right edge. The drawer has three sections, from top to bottom:

  • Search-within-filters input — type to narrow the list of available filters by their label (handy when there are many custom-property filters).
  • Available filter list — every filter you can add, grouped by source: built-in candidate fields, then your organisation’s custom properties.
  • Saved filters list — the filters you (or a teammate) previously saved, with a star icon to toggle Favorite, a load action to apply, and a delete action.

Selecting a filter opens its editor inside the drawer — see filter types below for what each editor looks like. Clicking Apply at the bottom adds the criterion to the URL (?filter=…); the drawer stays open so you can add another. Use the back arrow at the top to return to the available-filter list.

Clearing filters

The drawer has a Clear filters action at the top. Clicking it wipes every active filter (sets ?filter= to empty) and resets the page to 0. Use it when you want a fresh start.

You can also remove a single filter without opening the drawer: each active filter shows a small label badge above the results table; clicking the trash icon on that badge removes only that one filter.

The 6 filter types

Every filter in Nextal is one of six types — the exact same editors are used on the Jobs, Clients, Contacts and Job Applications lists. Understanding these six covers every filter you will ever meet.

Text filter (name, email, phone, source, free-text custom properties)

Text filter editor — pick one operator, fill the value if needed, click Apply.

What it does. Tests a text field against a value or for emptiness. Used on Name, Email, Phone Number, Source, and any text-type custom property.

Operators (radio buttons):

  • equals — exact match (case-insensitive). Active when the chip shows ”… equals X”.
  • contains — substring match (case-insensitive). Chip shows ”… contains X”.
  • do not contains — substring that should NOT appear. Chip shows ”… do not contains X”.
  • doesn’t have a value — the field is empty/missing. No value input shown. Chip shows ”… has no value”.
  • has a value — the field is set to anything. No value input shown. Chip shows ”… has any value”.

How to use it.

  1. Open Filters, pick a text field

    e.g. Email.

  2. Choose an operator

    Click one of the 5 radios. A text input appears under equals, contains, and do not contains. The two presence operators have no value input.

  3. Type the value if needed

    e.g. “@gmail.com” for contains.

  4. Click Apply

    The filter is added; the drawer returns to the filter list.

Number filter (Stars, Requested Salary, Current Salary, Years of Experience, Years of Management, number custom properties)

Number filter editor. The "between" option shows two inputs.

What it does. Tests a numeric field against a value or range. Used on Stars, Requested Salary, Current Salary, Years of Experience, Years of Management, and any number-type custom property.

Years of Experience and Years of Management are entered in years (decimals are accepted: 2.5); the comparison runs against the months of experience and months in management recorded in the profile Overview. A candidate with no experience entered is only found by doesn’t have a value.

Operators:

  • equals — exact integer match. Chip ”… equals 80000”.
  • greater than — strictly greater. Chip ”… greater than 80000”.
  • lower than — strictly less. Chip ”… lower than 80000”.
  • between — inclusive range; two inputs (low, high) joined by and. Chip ”… between 70000 and 90000”.
  • doesn’t have a value — empty. Chip ”… has no value”.
  • has a value — anything set. Chip ”… has any value”.

Date filter (Available Date, Creation Date, Last Update Date, date custom properties)

Date filter editor. "Between" shows two date pickers.

What it does. Tests a date field against a single date or a range.

Operators:

  • equals — same calendar day.
  • before — strictly before the picked date.
  • after — strictly after the picked date.
  • between — inclusive range; two date pickers.
  • doesn’t have a value — no date set.
  • has a value — any date set.

Date inputs are native HTML date pickers — your computer’s locale decides the visual format (MM/DD/YYYY in US, DD/MM/YYYY in FR-CA, etc.).

Select (single) filter (Status, Preferred Language, French Level, English Level, Preferred Communication Channel, Relocation, Recruiter, Referred by, single-choice custom properties)

Select-single filter — pick "is" or "is not", then choose a value in the dropdown.

What it does. Tests a field against one value taken from a known list.

Operators:

  • is — equal to the picked value.
  • is not — anything except the picked value.

The value picker is a single-select searchable dropdown — start typing to narrow the options. Options come from your organisation’s configuration (for Status, French / English levels are fixed 1–5 lists; Relocation offers No / Open / Yes; Recruiter and Referred by list the users of your organisation).

Select (multi) filter (Actual Position, Requested Position, Other Positions, City, Province, Work mode, Region, Tags, Technologies, multi-choice custom properties)

Select-multi filter — pick the operator, then pick one or more values.

What it does. Tests whether the candidate’s list field matches a set of picked values.

Operators:

  • has one of — the candidate has at least one of the picked values. Chip “Tags has any of [‘senior’, ‘remote’]”.
  • has all — the candidate has every picked value. Chip “Tags has all of […]”.
  • has none of — the candidate has none of the picked values. Chip “Tags has none of […]”.
  • doesn’t have a value — the list is empty. Chip ”… has no value”.
  • has a value — the list has any value. Chip ”… has any value”.

The value picker is a multi-select. Click × on a chip inside the picker to remove that value, or pick more from the dropdown.

Where the options come from: Actual Position, Requested Position and Other Positions offer your organisation’s positions (the same list as the profile’s Edit overview panel); City and Province the cities and provinces of your client addresses — the province in its stored form (e.g. QC); Work mode the three modes On-site / Hybrid / Remote; Region your cities and provinces merged into one list.

File filter (Files, Comments)

File filter — only two operators, no value input. Tests presence only.

What it does. Tests whether the candidate has any attached items of that kind. This is a presence-only filter — there is no count, no search inside file contents.

Operators:

  • does not have any — the candidate has zero files / zero comments. Chip “Files does not have any”.
  • have any — the candidate has at least one file / one comment. Chip “Files have any”.

All filters available on the Candidates list

The filter drawer offers, in order:

  • Text filters: Name, Email, Phone Number, Source.
  • Date filters: Available Date, Creation Date, Last Update Date.
  • Number filters: Requested Salary, Current Salary, Stars, Years of Experience, Years of Management.
  • File filters: Files, Comments.
  • Select-single filters: Status, Preferred Language, French Level (1–6), English Level (1–6), Preferred Communication Channel (Email / Phone Call / Text message), Relocation (No / Open / Yes), Recruiter, Referred by.
  • Select-multi filters: Actual Position, Requested Position, Other Positions, City, Province, Work mode (On-site / Hybrid / Remote), Region, Tags, Technologies.
  • Custom properties: every active candidate custom property your admin defined (Settings → Customization → Candidate properties) — each takes the type configured there (text, number, date, select, etc.).

Where candidates live, where they can work

Two families of filters look alike without overlapping:

  • City and Province read the candidate’s address — where they live (the key-facts row of the profile).
  • Work mode, Region and Relocation read the Mobility section of the profile — where they can work. Region compares your cities and provinces with the regions the candidate declared; a region typed by hand in the profile (outside the list) is not found by this filter. See Mobility on the candidate profile.

A candidate from Laval open to Montréal is therefore found with Region has one of Montréal, not with City. For “remote or hybrid”, pick both modes in Work mode with has one of.

Actual Position now offers your organisation’s position list — the filter used to ship with an empty list. A saved filter that used it keeps working as-is.

Active filter badges

Each active filter renders as a labelled badge with a trash icon — click the icon to remove only that filter.

Each active filter shows up as a labelled badge inside the drawer’s “Selected filters” section. The badge text reflects the operator: e.g. “Email contains @gmail.com”, “Stars greater than 3”, “Tags has any of [senior, remote]”. Click the trash icon on a badge to remove that filter; the others stay active.

Edit an applied filter. On list pages, click an already-applied filter badge to reopen its editor pre-filled with its current value. Adjust the operator or value, then click Apply to replace the filter in place — no duplicate is created. A pencil icon appears when you hover the badge to signal that it is editable; the trash icon still removes the filter.

Sort button

The Sort popover. Top section: which field to sort on. Bottom section: ascending or descending.

What it is. A separate button on the toolbar, right after Filters, that names the list’s current order: Newest first (the default), Oldest first, Relevance while searching, or the chosen field followed by ↑ (ascending) or ↓ (descending) — for example Name ↑. Clicking it opens a small popover with two radio groups: sort key (which field) and direction (ascending / descending).

Important: column headers in the results table are not clickable for sorting. All sorting goes through this Sort popover. The URL parameter is ?sort=key,DIRECTION (e.g. ?sort=creationDate,DESC).

Sort keys on the Candidates list

  • Name — by last name then first name.
  • Email — alphabetical.
  • Status — by candidate status order.
  • Stars — by candidate range / star rating.
  • Creation Date — the default. Newest first when DESC.
  • Relevance — only available when a text search is active. Sorts by server-side full-text score, best matches first. When you type in the search bar, Relevance is added to the list and becomes the new default.

How to change the sort

  1. Click the sort button

    The button that names the current order, to the right of Filters.

  2. Pick a sort key

    Click the radio next to the field you want to sort by.

  3. Pick a direction

    Ascending (A → Z, oldest first) or Descending (Z → A, newest first). Both are radio buttons in the same popover.

  4. Close the popover

    Click anywhere outside it. The list immediately re-queries with the new sort and the button names the new order. The URL updates to ?sort=key,DIRECTION.

Saving a filter and marking it favorite

The Save filter modal. Name is required (1–50 chars, must be unique); favorite is optional.

What it does. Saves your current combination of filters + search text + sort under a name, attached to your user account. Saved filters are per-user — they don’t appear in your teammates’ drawers. The point is to skip recreating the same complex filter every time.

What gets saved. Every part of the current URL state that drives the list:

  • The active filter string (?filter=…).
  • The text-search criteria (?textCriteria=…).
  • The current sort (?sort=…).
  • The name you typed.
  • The “favorite” boolean.

How to save your current filter

  1. Build the filter and sort you want

    Apply filters, type in the search field, change the sort — anything you would want re-applied later.

  2. Click Save filter

    Inside the Filters drawer. A small modal opens in the centre.

  3. Type a name (1–50 characters)

    Must be unique across your saved filters for this list. If the name already exists, an inline error “A filter with this name already exists” is shown and the Save button stays disabled.

  4. Tick Mark as favorite (optional)

    Favorites get pinned as chips above the results table — see Favorites bar below — so you can re-apply with one click without opening the drawer.

  5. Click Save

    The modal closes; a green success toast appears. The filter is now in your saved-filter list (at the top of the Filters drawer, below the search input).

The favorites bar — one-click re-apply

The favorites bar. Each chip is a saved filter you marked favorite. Click any chip to apply that filter.

What it is. A horizontal strip of chips above the results table — only shows up if you have at least one filter marked favorite. Each chip carries the filter’s name and a star icon; chips are sorted alphabetically.

How to use it.

  • Click a chip — applies that saved filter (sets ?filter=…&textCriteria=…&sort=… exactly as you saved them). The active chip is highlighted in the primary brand color.
  • Click the highlighted chip again — toggles it off; you return to an empty filter view.

Favorites disappear when you remove the star from inside the Filters drawer or delete the saved filter.

Managing saved filters

Inside the Filters drawer, your saved-filter list shows three actions per filter:

  • Apply — clicking the filter name applies it.
  • Star icon — toggles favorite on/off. Favorited items appear in the favorites bar; unfavorited ones only appear inside the drawer.
  • Trash icon — deletes the saved filter from your account. A confirmation appears before the delete is committed.

Saved filters are sorted favorites-first, then alphabetical by name, inside the drawer.

Opening a candidate from the list

Click anywhere on a row to open the candidate’s profile — that is where you edit it. To open it in a new tab, Ctrl + click (⌘ + click on a Mac) or middle-click the name. Selecting text in a row (to copy an email, for example) does not open the profile.

A few things in the row keep their own action:

  • The checkbox — adds the row to the selection (see below).
  • The Eye (Preview the latest CV) — previews the latest CV in a side panel, without leaving the list.
  • The stars — stay clickable: you rate the candidate right in the list.

Rows have no 3-dot menu and no Action column: to act on one or more candidates, tick them and use the selection bar. Without read access to candidates, rows do not open.

Bulk select and bulk actions

When you tick at least one row, the selection bar replaces the toolbar: the number of ticked candidates, Clear and the actions.

How selection works. Team members with edit access to candidates see a checkbox at the start of every row and a master checkbox in the header. Tick at least one row: the selection bar replaces the toolbar (search, Filters, sort, Bulk Import, Export, Add Candidate). It shows how many rows are ticked — for example 2 candidates selected —, a Clear button that unticks every row at once, then the actions. The bar disappears as soon as no row is ticked.

The master checkbox in the header column ticks every row visible on the current page; clicking it again unticks them. It does not affect rows on other pages — bulk actions apply only to what you have explicitly ticked.

The selection persists across pages. If you tick 5 candidates on page 1 and navigate to page 2, your 5 selections remain in memory. The bulk bar stays visible. You can keep adding to the selection across pages.

The 8 bulk actions

They are listed here in the bar’s order. Every action opens a side panel on the right of the screen pre-filled with the entire selection. Each one acts on every selected candidate. Available when at least one candidate is ticked, unless noted otherwise.

1. Send email (mail icon)

The Send email side panel. The To list shows every selected candidate; templates and merge tags work as on a single send.

What it does. Opens the email compose side panel pre-filled with every selected candidate as a recipient. Picking a template applies the same body and merge tags to all — each candidate gets their own personalised copy at send time ({firstName}, {lastName}, etc. resolve per-recipient). This is the standard way to send a mass touch (e.g. “we’ll get back to you by Friday”).

2. Send text message (message icon)

The Send SMS side panel. Same per-recipient personalisation as bulk email.

What it does. Opens the SMS compose side panel pre-filled with every selected candidate’s phone number. Each candidate receives a personalised SMS (with their first name) when you click Send. Requires a configured SMS provider on the workspace.

3. Share (share-forward icon)

The Share side panel from the list — Colleague or Email address, the whole selection in one send.

What it does. Opens the Share candidate side panel, pre-filled with every ticked candidate. Pick Colleague (a link that opens each candidate in Nextal) or Email address (a public link per candidate, with the documents you tick on the next step attached — the latest résumé is ticked for you), edit the email if you like, send. The Client contact option is not offered here — it needs a job, so use the kanban for that.

4. Apply job (list-check icon)

The Apply job side panel. Pick a target job; one new application is created for each selected candidate.

What it does. Opens a job-picker side panel. Pick a single job — one new application is created for every selected candidate on that job, all in the same starting status. This is the fast way to push a shortlist onto a kanban: filter the candidate list to your target shortlist, tick them all, Apply job → pick the job. They appear on the kanban immediately. See Applications tab for the per-candidate flow.

5. Add tag (tag icon)

The Add tag side panel. Pick one or more tags; they are appended (not replaced) to every selected candidate.

What it does. Opens a tag picker side panel. You can pick existing tags or type to create new ones (they are saved as candidate tags). Confirming appends the chosen tags to every selected candidate — existing tags on each candidate are kept. This is the right tool to mark a batch (e.g. imported-2026-02-01) or to attach a campaign label across a wide selection.

6. Change status (board icon)

The Change status side panel. Pick one new status; every selected candidate is set to it.

What it does. Opens a status picker side panel. Pick one of your organisation’s configured candidate statuses; clicking Apply sets every selected candidate to that status. The list refreshes after the update completes. Use it after a sourcing review to bulk-promote a batch from New to Active, or to bulk-archive after a campaign ends.

7. Send survey (question icon)

The Send survey side panel. Each candidate gets their own unique private link to the same survey template.

What it does. Opens the survey side panel pre-filled with every selected candidate. Each one receives their own unique one-click link to the chosen survey template — useful for post-decline feedback batches or intake forms.

8. Merge (git-merge icon, conditional)

Merge appears only when exactly 2 candidates are ticked AND the user has edit and delete access on candidates.

When it appears. Only when exactly 2 candidates are selected, AND the user has both edit and delete access on candidates. Clicking it opens the Merge modal pre-loaded with the two selected candidates as source/target. See Merge candidates for the full merge flow.

If you click Merge with the wrong number of selections (zero, one, or three or more), a warning notification appears: “Please select exactly 2 candidates to merge”.

Permissions matrix

  • Selection checkboxes and all bulk actions require edit access on candidates.
  • The Merge bulk button also requires delete access (because the merge deletes one of the two records).
  • Send email, Send text message and Send survey additionally need the corresponding messaging permissions configured on your role.
  • Apply job needs job-creation / application-creation permission on the target job.

Export

The Export side panel. Pick which fields to include; only ticked fields appear as columns in the XLSX file.

What it does. Exports the currently-filtered list to an Excel (.xlsx) file. Honors your active search text, your active filters and your current sort — the export is a faithful snapshot of what you see on screen, not a global dump of every candidate. The file is generated client-side using SheetJS and downloaded immediately by your browser.

Where to find it. On the right of the candidate list toolbar, between Bulk Import and Add Candidate. Requires create-access on candidates — if your role doesn’t have it, the Export button isn’t shown.

The 20 exportable fields

The Export side panel lists 20 candidate fields as on/off toggles. Seven are on by default (the same columns you see in the list table, plus Last Update Date is off by default):

  • On by default: First Name, Last Name, Email, Phone Number, Status, Stars, Creation Date.
  • Off by default — toggle on if you need them: Last Update Date, Tags, Skills, Available Date, LinkedIn URL, Communication Channel, Language, Address, Mobility, French Level, English Level, Actual Salary, Requested Salary.

How to export

  1. Build the view first

    Apply the filters, search text and sort that define which candidates you want to export. The export uses the same query as the list — if a candidate isn’t in your current results, it won’t be in the file.

  2. Click Export

    On the right of the list toolbar. A side panel slides in from the right with the title Export data.

  3. Pick the fields

    The seven default fields are pre-ticked. Toggle on any of the remaining 13 you need — Skills and Tags are particularly useful for downstream analysis in Excel.

  4. Click Export at the bottom of the panel

    The button shows Exporting… while the data is fetched. Don’t close the panel.

  5. The file downloads automatically

    Named candidates_DD/MM/YYYY.xlsx (the date format follows your locale). Sheet name: Candidate Information.

The 1000-row cap

How values appear in the file

The export does some translation so the file is human-readable, not a raw database dump:

  • Dates — formatted using your locale’s short format (e.g. 2/1/2026 in English, 01/02/2026 in Quebec French). Applied to Creation Date, Last Update Date and Available Date.
  • Status — exported as the human label (e.g. Active), not the numeric ID stored in the database.
  • French Level / English Level — exported as the label (e.g. Highly proficient in spoken and written), not the 1–6 numeric value.
  • Preferred Language — exported as the language name (e.g. English).
  • Communication Channel — exported as Email, Phone Call, or Text message.
  • Tags / Skills — exported as comma-separated strings within a single cell (e.g. “react, typescript, node”).
  • Address — exported as the formatted address string, not the structured object.
  • Mobility — exported on one line, like the profile’s Can work line (e.g. “Hybrid · Remote · Montréal, Laval · ≤ 45 min · Relocation: open” followed by the note), with every region included.
  • Empty values — exported as empty cells, never as null or undefined.

Tips

  • Export before bulk operations. Run an export first so you have a snapshot of the pre-change state. If a bulk Add tag or Change status goes wrong, you can recreate or audit from the file.
  • Pair with the favorites bar. Save the filter that defines your export view as a favorite. Re-applying it next quarter is one click, and the export will match the exact same definition.
  • Need more than 1000 rows? Split by Status (run one export per status), by Creation Date range, or by Tag — each export then captures a slice under the cap.
  • Open in Excel or Google Sheets. The .xlsx file is standard — both apps handle it natively. The first row is the column headers; data starts on row 2.

Pagination

A pagination footer sits at the bottom of the list. The table scrolls inside its card: the column header stays visible while you scroll the rows, and the pagination stays in view at the bottom. It shows page navigation (Previous, page numbers, Next) driven by the URL parameter ?page=0. Any change to filters or search resets page to 0 so you don’t end up on an empty page 7 of 2.

Tips and shortcuts

  • Share a view. Copy the URL — it contains the filter string, the search text, the sort key/direction, and the page number. A teammate opening that URL sees exactly the same view.
  • Favorite your top 3. Pick the three filters you reapply daily (“Active senior devs”, “New this week”, “No CV yet”) and mark them favorite. One click each from the chip bar above the table.
  • Combine text search with filters. The search bar and the filter drawer compose. Filter to Status: Active then type “react” — you get Active candidates whose name/CV mentions React, sorted by Relevance.
  • To open one specific candidate, the global search is faster. Ctrl + K (⌘ K on a Mac), from any page: type their name, phone or email, then Enter. No filters or sort — 5 results per group. See Global search.
  • Use “has a value” before pulling reports. Want to see which candidates have a salary captured? Filter Requested Salary has a value. The result count immediately shows your data-completeness rate.