Skip to the documentation
Knowledge base

Search by words or meaning

Forgiving words, operators like from: and has:, and search by meaning, inside the folder you are reading.

Details

  • Nextmail-hosted mail is indexed per mailbox for listing and search.
  • The query is ANDed with the folder you are in, so a search from Inbox does not reach Archive, Sent or Spam. Name another folder in the query to look there instead: in:sent, in:archive, a folder is: such as is:spam, or in:anywhere for every folder at once, which works on its own as well as beside other terms. Drafts is the one folder a query cannot leave.
  • Words are forgiving. Case, accents and separators are ignored and part of a word counts, so “min”, “BEN” and “ben jamin” all find Benjamin, and so would Ben-Jamin. Every word has to appear. A quoted phrase is stricter: it has to appear as written, give or take case and accents, so “ben jamin” in quotes will not find Ben-Jamin while “quarterly invoice” finds Quarterly invoice. Filler such as “show me emails about” is dropped when there is something else to look for. A small typo in a word of four letters or more is forgiven too, so “benjimin” still finds Benjamin: exact matches are shown whenever there are any, and near misses only when there are none.
  • Operators narrow it: from:, to:, cc:, subject:, body:, label:, filename:, in:, is:unread, is:starred, has:attachment, has:pdf, after:2026/01/31, before:, newer_than:7d and older_than:1y. OR, parentheses and a leading minus combine them, so (from:stripe OR from:paddle) has:pdf -is:read reads the way it looks. Recipients are held as one list without roles and never include a Bcc, so cc: reads the same names as to: and bcc: matches nothing of its own. from:me is mail you sent, and to:me is mail with one of your addresses, aliases included, among the recipients or as the address it was delivered to.
  • A value search cannot use is skipped rather than narrowing, so a typo in a value widens the results instead of emptying them. That is larger:, smaller:, size:, messagesize:, list:, rfc822msgid:, received: and sent:, a has: word that names no kind of attachment, an importance: other than high or low, a date that cannot be read, and a period whose unit is not h, d, w, m or y. An operator name it does not know, project: for one, is searched as plain text.
  • Words and the from:, to:, cc:, subject: and body: operators read the newest message in the thread, and the next reply replaces all of it: sender, recipients, subject, and a plain-text body snippet with HTML stripped, whitespace collapsed and the first 4,000 characters kept. A word that appears only in an earlier message, or past that cut, will not match. The whole thread is kept, it is simply not what search reads. A sealed message has no body text here, so only its sender, recipients and subject can match. A plain word also matches the name of any attachment in the thread, whichever message carried it.
  • Labels, folders and attachments are the exception: label:, in: and is: read the whole thread, and filename: and has: read every attachment on it. Dates read the thread’s newest activity in UTC, with after: including the day you name and before: leaving it out. Search by meaning, below, puts the best match first. With it turned off, or with only operators in the query, results come back in the list’s own order, with no ranking above that.
  • Every mailbox is searched this way, and the query never leaves for anybody else’s search engine. Search by meaning, below, is the one exception.
  • The REST API, the SDK and the MCP server list threads with the same controls the thread list has: newest or oldest first, by sender or by subject, a date range, and only mail from saved contacts, each order paging to the end.
  • Every search is also a search by meaning. The words you type are matched by what a thread is about rather than how it is spelt, in any language, so “invoices I still owe” or “the flight to Berlin” find the mail that fits however it is worded, best match first, along with every thread that contains the words. A thread is shown only when it is clearly closer to your words than the rest of the mailbox, so a description nothing fits shows the ordinary matches alone. Operators such as from: and is:unread still narrow it, and the sort order does not apply. Meaning is read from the whole conversation, newest messages first and up to 12,000 characters, so a thread is found by what an earlier message said too, which plain words cannot do. A thread with a sealed message is found by its text alone, and new mail joins in about a minute after it arrives. To work out what a thread is about, its subject, the people on it and that text go to an embedding model through the same no-retention routing as the other AI features, and the result is stored with the thread and deleted with it. Your words go to the same model when you search. Turning off Search by meaning in the workspace’s privacy settings stops all of this, deletes what was stored and leaves search matching words only. It works on the phone too, and in the REST API (semantic=true), the SDKs, the CLI (--semantic) and the MCP server.