🧑Filter Options
The filter categories, operators, and semantics of the Gleantap segment builder — plus troubleshooting for common count mismatches.
Segments are built by combining filters. Each filter has three parts: an attribute (what field you're filtering on), an operator (how you're comparing it), and a value. This page covers:
The filter categories available in the segment builder
The operators you can pick and exactly what each one matches
How missing (null) data is handled — the #1 source of unexpected segment counts
Troubleshooting for common "why is my count wrong?" situations
Filter categories
The segment builder groups filters into these categories. Pick a category first, then a specific attribute inside it.

Personal Info
Basic contact fields
Name, Birthday, Address, Added On
Account Info
Their account status in your CRM + Gleantap
Status, Location, Tags, Member/Prospect
Membership Info
Active memberships
Membership Type, Status, Start/End dates
Contract Info
Longer-term agreements from your CRM
Contract Type, Status, Start/End dates
Purchase Info
Items purchased
Last Purchased Item, Has Purchased, No. of Purchases
Visit Info
Check-ins tracked from your CRM
First Visit, Last Visit, No. of Visits in a period
Pipeline
Sales pipeline activity
Stage, Status, Assigned to
Email Engagement
Past email-campaign behavior
Targeted By, Opened, Clicked, Engagement score
SMS Engagement
Past SMS-campaign behavior
Targeted By, Clicked, Opted In, Replied
Segments
Membership in other segments
Is In Segment, Is Not In Segment
Inbound Keywords
Words in replies to your SMS
Keyword
Ratings
Internal rating scores
Rating value
Forms
Form submissions and answers
Form filled, Specific question response
Appointments
Appointments in Gleantap (not CRM visits)
Status, Time, Type
What each category contains
Personal Info — Attributes such as name, birthday, and address. Most of these are informational; Added On and Birthday are the ones most often used to build segments.

Account Info — Fields from your integrated CRM plus a few Gleantap-native ones like Tags. Includes Status, Location, and Member/Prospect flags.

Membership Info — Based on your users' memberships. Membership specifics vary by business/CRM, but the basics are consistent: Type, Status, and when the membership began or ended.

Contract Info — Similar to memberships, but contracts come through from your CRM as term-based agreements. Filter on contract Status, Start/End Date, and Type.
A membership typically renews monthly, while a contract lasts the length of the contract term.

Purchase Info — Segment based on what someone bought (memberships or physical items). Filter on Last Purchased Item, Has Purchased Item, or No. of Purchases within a timeframe.

Visit Info — Filter on check-in activity. As long as visits are tracked from your CRM, you can build lists based on First Visit, Last Visit, and No. of Visits in a period.

Pipeline — Where a user is in the Sales Pipeline, their stage status, and who owns the lead.

Email Engagement — Segment based on past email-campaign behavior. Build audiences of people who opened, clicked, or were targeted by a campaign — plus overall engagement scores.

SMS Engagement — Same idea as Email Engagement, for SMS campaigns. Includes SMS opt-in status and reply activity within a timeframe.

Segments — Use Is In Segment or Is Not In Segment to layer pre-built segments into your filter. See the Cross-segment operators section below for exactly how these behave.

Inbound Keywords — Filter by SMS replies that contained specific keywords.
Ratings — Use Gleantap's built-in rating system to segment on internal feedback.
Forms — Segment users who filled out a Gleantap form. A segment is auto-created for each form's submitters; this filter lets you go deeper — filter by which specific question they answered and what they responded.

Appointments — Appointments booked in Gleantap, not visits synced from your CRM. Filter on Status, Time, and Type.

Custom — Your own custom attributes. See Custom Attributes for how to define and use them.
Operators — what each one matches
The operators available depend on the attribute type. Here's what each one does.
On number fields
Examples: No. of Visits, Points Balance, No. of Purchases, Total Purchases.
Is Equal To
Value exactly equals the number
Anything else, including null
Is Not Equal To
Value differs from the number
Value that equals it (null is excluded — see below)
Is Greater Than
Value is strictly higher (11+ for > 10)
Value ≤ 10, or null
Is Less Than
Value is strictly lower (0 or 1 for < 2)
Value ≥ 2, or null
Is Empty
Field is missing or blank
Field has any value
Is Not Empty
Field has a value
Field is missing or blank
Exists
Field is present (not null)
Field never set
Does Not Exist
Field is absent or null
Field is present
Greater Than 10will include people with 54, 100, or 1000. It's an unbounded upper range. If you want "10 or fewer", useLess Than 11. If you want an exact match, useIs Equal To.
On date fields
Examples: Added On, Last Visit, Last Purchase Date, Birthday.
In Last N days
Date is within the last N days from now
In Last Hours
Date is within the last N hours
Over Days
Date is more than N days ago
Over Hours
Date is more than N hours ago
Before
Date is before a specific date
After
Date is after a specific date
Between
Date is between two specific dates (inclusive)
Is Today
Date is today
This Week / Last Week
Within this calendar week / last calendar week
In Next / In Next Hours
Future date within N days / N hours
Day In Last / Day In Next
Specific day-of-year in the past / future (e.g., birthdays this month)
All date operators use your account timezone.
On text fields
Examples: First Name, Email, City, Source, Notes.
Is Equal To
Exact match (case-insensitive)
Is Not Equal To
Anything other than the exact value
Is One Of
Value matches any of the listed options
Is Not One Of
Value matches none of the listed options
Contains
Value contains the substring anywhere
Does Not Contain
Value does not contain the substring
Is Empty
No value set
Is Not Empty
Any value set
Email-specific: Is Invalid, Is Not Invalid, Is Not Opted-Out. Phone-specific: Is Valid, Is Not Valid.
On list / multi-value fields
Examples: Tags, Membership Type, Badges, Rewards, Products.
Is One Of
Contact has at least one of the listed values
Is Not One Of
Contact has none of the listed values
On boolean / flag fields
Examples: Is Member, Has Membership, No Purchase Ever.
Is True
Flag is set to true
Is False
Flag is set to false
Exists
Flag has been set to something
Does Not Exist
Flag was never set
Cross-segment operators
Available under Segments category.
Is In Segment
Contact is currently a member of the referenced segment
Is Not In Segment
Contact is not a member of the referenced segment (or was never evaluated for it)
Both operators evaluate in real time — the referenced segment's current membership is used. If you change the referenced segment's definition, the parent segment updates on next calculation.
Campaign engagement operators
Under Email Engagement and SMS Engagement.
Targeted By
Contact was in the send list of a specific campaign
Targeted By & Opened
Was sent and opened
Targeted By & Clicked
Was sent and clicked a link
Targeted By & Not Opened
Was sent but didn't open
Targeted By & Not Clicked
Was sent but didn't click
Targeted By & Failed Delivery
Send failed (bounce, invalid, etc.)
Not Targeted By
Contact was never in the send list
Location operators
Under Personal Info for address-based filtering.
In 1 Mile / In 5 Miles / In 10 Miles / In 25 Miles
Contact address is within that radius of a reference location
How missing data (null) is handled
This is the #1 cause of unexpected segment counts. Gleantap follows standard database rules: null / missing values are excluded from Is Less Than, Is Greater Than, Is Equal To, Is Not Equal To, and all date operators.
What this means in practice:
No. of Visits Is Less Than 2matches people with a recorded visit count of 0 or 1. It does not match people who have no visit data at all (i.e., the field was never set).Last Visit Before Jan 1matches people whose last visit is on record and predates Jan 1. It does not match people who have never visited (no last-visit date).Is Not Equal To "Member"matches people whose status has a value that isn't "Member". It does not match people whose status is missing.
If you want to include people with missing data, add a second filter using Does Not Exist on the same field and combine with OR (in the segment builder's group logic).
Reverse case — to find only people who have data: use Exists first, then apply your comparison.
Troubleshooting: "Why is my segment count wrong?"
"Less Than 2 returns fewer people than Equal To 1"
Cause: Nulls are excluded from comparisons. If you have 500 contacts and only 200 have any visit data, Less Than 2 searches only those 200 — and returns the subset with 0 or 1 visits. Equal To 1 returns just the 1-visit subset, but if there's a group of contacts with visit=1 in the "has data" cohort, that count can end up higher than expected relative to the null-inclusive picture you had in your head.
Fix: Decide whether "no visit data" counts as "less than 2" for your purpose. If yes, add a second filter No. of Visits Does Not Exist with OR logic. If no, the current behavior is correct.
"More Than 10 check-ins returns people with 54"
Cause: This is correct. More Than 10 matches any value greater than 10 — 11, 20, 54, 1000, all qualify. It has no upper bound.
Fix: Pick the operator that matches what you want:
Exactly 10
Is Equal To 10
10 or fewer (11 excluded)
Is Less Than 11
Between 5 and 10
Two filters: Greater Than 4 AND Less Than 11
More than 10 but not "power users" (say, cap at 50)
Two filters: Greater Than 10 AND Less Than 51
"This person is in Segment A but I don't see them in Segment B, even though B's filter is Is In Segment A"
Two likely causes:
B needs a refresh.
Is In Segmentevaluates against the referenced segment's current members at query time. If Segment A was just updated, Segment B may not have re-run yet. Click the three-dot menu on Segment B → Refresh to force a recalculation. See Segments Auto-Refresh.The contact's segment membership hasn't been recomputed. When a contact's attributes change, their segment memberships recalculate — but there can be a short delay. If you just changed a contact's attribute (e.g., manually added a tag), give it a minute, then refresh Segment A and B in that order.
"My count is wildly off from what I expect"
Walk through in order:
Is the segment Dynamic? Static segments freeze at save time and never update. Marketing/automation should use Dynamic. See Static vs Dynamic.
Did you click Calculate before checking the count? The number only refreshes after Calculate.
Are nulls at play? See "How missing data is handled" above.
Timezone. Date filters use your account timezone.
In Last 7 Daysmoves as time passes — the same segment can return different counts an hour later.Attribute you're filtering on may not be the one you think. For example, "No. of Visits" from your CRM's Visit sync is different from "No. of Appointments" in Gleantap. Confirm the attribute name.
"Is In Segment returns 0 people even though the referenced segment has members"
The referenced segment may not have been calculated yet after its last edit. Refresh it manually.
Confirm you selected the right segment in the picker (segments with similar names are easy to swap).
"Suppressed contacts are showing up in my segment"
Suppression is separate from segment membership. A suppressed contact is still in the segment; they're just excluded when a campaign or flow tries to send to them. If your goal is "who will actually receive this send", use the audience preview when creating the campaign — it applies suppression on top of segment membership. See Understanding Suppression.
Related pages
Creating Segments
Last updated
Was this helpful?