Home → Users Manual → Filters → Filter Conditions Reference
6.5. Filter Conditions Reference
Updated: 9 Sep 2026, 10:38 AM EDT
This page lists every condition available when building a filter, in the groups and order the condition dropdown uses.
Six operators recur throughout, referred to below as the text operators: Is, Is Not, Begins with, Ends with, Contains, Does not contain. Three more appear on numeric and time fields: Less than, Greater than, and Is.
Customer Information
All five take the text operators.
| Condition | Matches against |
|---|---|
| Customer ID | The customer's ID from your own system |
| Customer email address | |
| First name | Customer first name |
| Last name | Customer last name |
| Phone | Customer phone number |
Request Details
| Condition | Operator | Value |
|---|---|---|
| Request ID | Is / Less than / Greater than | A number |
| Assigned to | Is / Is Not | Staff list, plus Unassigned and Logged In User |
| Category | Is / Is Not | Category list — one category per condition. Two categories means a sub-condition group. |
| Status | Is / Is Not | Status list |
| Open/Closed | none | all / closed / open |
| Is urgent | none | none |
| Is Not urgent | none | none |
| Reporting Tags | none | A single Category / Tag pair. Tags belong to categories, so the same tag name in two categories is two different tags. |
| Without reporting tags | none | A single Category / Tag pair |
| Opened By | Is / Is Not | Staff list |
| Email subject | Text operators | Free text |
| Contacted via | Is / Is Not | See below |
| Mailbox | Is / Is Not | Mailbox list |
| Sending Mailbox | Is / Is Not | Mailbox list |
| Portal | Is / Is Not | Portal list |
| AI Detected Out of Office | none | Yes / No |
| AI Auto Categorized | none | Yes / No |
Note that urgency is two separate conditions with no value, not one condition with a yes/no.
Contacted via offers fourteen values, not the four people expect: Email, Phone, Walk In, Mail, Web Form, Other, Web Service, Forum, Instant Messenger, Fax, Voicemail, Staff Initiated, Tab Widget, HelpSpot Mobile App. Portal is not among them — it is the separate Portal condition.
Custom Fields
Every custom field appears under its own name. This group sits third in the list, not at the bottom.
| Field type | Operator | Value |
|---|---|---|
| Text, Large Text, Live Lookup | Text operators | Free text |
| Predefined List | Is / Is Not | The field's options |
| Checkbox | none | Checked / Not Checked |
| Number, Decimal | Is / Less than / Greater than | A number |
| Date | Is / Less than / Greater than, plus a relative list | A date, or a relative value including Date is set and Date is not set |
| Date/Time | Less than / Greater than, plus the relative list | As above |
| Drill Down | Is / Is Not / Begins with | The field's values |
| Regular Expression | Text operators | Free text — the regex validates what you type into the field, it is not a match operator |
Search
Request history full-text search for searches an index built from the request title and summary, customer details, custom field content, attachment filenames, and every history note.
Three things to know before relying on it:
- A search inside a filter is not the same as the global search function. When combined with other conditions, the filter falls back to a substring match rather than the full-text engine, so the same term can return different results in the two places.
- Results are capped — 2,000 requests on MySQL, 5,000 on SQL Server — silently. A broad search in a large installation will be silently truncated.
- The on-screen note applies: matches all words individually, not as an exact phrase. Use quotes for exact phrase matching, e.g. "Foo Bar".
Date and Time
Relative dates recalculate every time the filter runs. Five conditions, all sharing the same fourteen values — Today, Yesterday, Past 7 / 14 / 30 / 60 / 90 / 365 Days, This Week (Sun–Sat), This Month, This Year, Last Week (Sun–Sat), Last Month, Last Year. Two of them anchor on a single date:
| Condition | Anchored on |
|---|---|
| Relative Date Since Opened | Date opened |
| Relative Date Since Closed | Date closed |
The other three ask a different question. Rather than anchoring on one date, each matches a request that has any history entry of the relevant kind inside the window — so a request updated in August and again in September still matches a window of August. They are about whether something happened during the period, not about when the most recent thing happened.
| Condition | Matches a request with |
|---|---|
| Request Updated | Any history entry at all inside the window — notes and updates, public or private, from staff, customers or automation rules. |
| Request Publicly Updated | Any public note inside the window, whoever wrote it. |
| Customer Updated Request | Any public note written by the customer inside the window, excluding their opening message. |
Fixed dates — a date picker each: Opened Before Date, Opened After Date, Closed Before Date, Closed After Date.
Elapsed time — all of these are in MINUTES. The operator is Less than or Greater than only; there is no "equals". The field has a Calculate Minutes helper beside it.
| Condition | Measures |
|---|---|
| Minutes since opened | Age of the request |
| Minutes since closed | Time since it was closed |
| Minutes since last update | Time since any update, including internal notes |
| Minutes since last public update | Time since the last customer-visible note |
| Minutes since last customer update | Time since the customer last wrote |
| Minutes since first response (all hours) | Time from opening to the first staff reply. Only matches requests that have already been answered — see below. |
| Customer wait time (minutes) | Time the customer has been waiting since their last message — but only while that message is the most recent one on the request. If a staff member has replied since, the condition returns that past response gap instead — see below. |
Useful conversions: one hour 60 · four hours 240 · eight hours 480 · one day 1440 · one week 10080.
Minutes since first response (all hours) only matches requests that have already been answered. A request still waiting for its first reply has no response time, and is excluded from the condition entirely. So it cannot express "approaching the first-response target" — it can only report on responses already sent. For the live version, use Customer wait time (minutes), which on an unanswered request measures the time since the customer wrote. See Example: SLA Compliance Across Tiers.
Customer wait time (minutes) measures one of two different things, depending on who wrote last. When the customer's last public message is the most recent thing on the request, the condition returns now − that message — a live wait that grows until someone answers. When a staff member has replied since, it instead returns last staff reply − last customer message: a historical gap that is fixed and never changes again. A filter built on this condition alone therefore also matches requests nobody is waiting on — ones that were answered days ago. Pair it with Last public reply from → Customer to restrict the results to requests that have had no reply yet.
There is no business-hours condition. First Response Speed (biz hours) exists as a display column and as a sort option, so you can show and sort by it — but you cannot filter on it. An SLA measured in business hours can be displayed but not selected for.
Assignment Chain
These look at the whole history of assignments, not just the current one. None take an operator.
| Condition | Value |
|---|---|
| Reassigned from/to | Two staff dropdowns — from, and to |
| Was ever assigned to | Staff list |
| Reassigned by | Staff list, plus System |
Other
| Condition | Operator | Value |
|---|---|---|
| Number of public updates | Is / Less than / Greater than | A number |
| Last public reply from | none | Customer, Any staff member, Logged In User, or a named staff member |
|
Updated By (use with other conditions) |
none | Staff list |
Advanced
ALL of the following are true and ANY of the following are true create sub-condition groups. Choosing either one turns that condition row into a group header with its own + icon for the conditions inside it, and one blank condition appears in the group ready to fill in — see Sub-Condition Groups. Note that these two entries disappear from the dropdown when you are already inside a group: groups cannot be nested.
Custom "where" clause (SQL) appears for administrators only — see Custom SQL WHERE Clause in Filters.
Integrations
Thermostat conditions. They are always listed, whether or not Thermostat is set up; they simply match nothing when it isn't.
| Condition | Operator | Value |
|---|---|---|
| Thermostat NPS Score | Is / Less than / Greater than / Type | A number, or with Type: Promoter / Passive / Detractor |
| Thermostat CSAT Score | Is / Less than / Greater than / Type | A number, or with Type: Satisfied / Dissatisfied |
| Has Thermostat Feedback | none | Yes / No |
Note the third one: it asks whether written feedback exists, and cannot search the text of it.
Surveys
Native HelpSpot surveys add one condition each, named #[id] [Survey name] Score.
| Operator | Meaning |
|---|---|
| Is / Less than / Greater than | Compare the numeric score |
| Type | Match a scoring bucket — the options depend on that survey's scoring type (a 0–10 survey offers Detractors / Passives / Promoters, a 1–5 CSAT offers Dissatisfied / Satisfied) |
| Has Response / No Response | Whether the customer answered |
| Has Comment / No Comment | Whether they left written feedback |
There is no condition for searching survey comment text.
A note on case sensitivity
Text matching follows your database's collation. On a standard MySQL installation it is case-insensitive. On SQL Server it depends how the database was created. If case matters to a filter you are building, test it rather than assuming.