The CRM Segment Connector gives Evo Researcher direct, live access to your hotel CRM's audience segmentation engine. You can research, build, manage, and monitor segments entirely within Evo Researcher, without switching tools.
â ď¸ Important: You need an active Evo Researcher subscription with the CRM Connectors enabled before you begin. Evo works within your property's configured data, all live and specific to your CRM setup. Ask Evo what is available before building something new.
What Evo Researcher can do with your CRM segments
Evo Researcher has full read-write access to your CRM's segmentation engine. You can look up, analyse, create, edit, publish, unpublish, refresh, and delete segments, all through natural language conversation.
Discover
Find out what segments already exist before building something new. Search by name, filter by published or global status, and see contact counts at a glance.
Validate
Preview how many contacts would match a proposed set of filter rules without saving anything. Test ideas safely before committing.
Understand
Inspect the exact filter logic behind any segment, including what fields, operators, and values are used, and see what emails or reward rules are linked to it.
Build
Create new segments with full filter logic, names, aliases, tags, reward rules, and publish settings, all through a conversation with Evo.
Manage
Edit existing segments, update filter criteria, publish or unpublish, refresh on demand, or delete segments you no longer need.
Monitor health
Check when a segment was last refreshed, track contact growth over time, and identify segments that are stale, empty, erroring, or never refreshed.
Explore fields
Browse the full catalogue of available filter fields, including guest profile, reservation data, loyalty, preferences, and RFM scores, and see valid operators and values for each.
Organise
Search and create segment tags to keep your library organised. Bulk-refresh or bulk-delete multiple segments at once.
Alert
Get proactive alerts for failed or stalled segment refreshes, so you can act before campaigns are impacted.
How it works
Segment data model
Every segment in the CRM has the following core properties.
Property | Description |
name / alias | Human-readable name and unique URL-safe alias. |
isPublished | Whether the segment is active and being refreshed. |
isGlobal | Visible to all users vs. private to the creator. |
isPreferenceCenter | Exposed in guest preference centre. |
emailUnique | Deduplicates contacts by email address. |
ignoreUnsubscribe | Includes unsubscribed contacts (use with care). |
contacts | Current contact count as of last refresh. |
lastRefreshedAt | Timestamp of the most recent successful refresh. |
rewardRuleId | Optional linked reward rule (e.g. loyalty discount). |
filters | Array of filter items defining the audience criteria. |
Filter items
Each filter item has five key parts.
Part | Example | What it means |
field | reservationStayThrough | The data field being tested. |
object | lead or reservation | Which data entity the field belongs to. |
type | date, text, select, boolean, number | Data type, determines valid operators. |
operator | lte, =, like, !empty | Comparison logic. |
filter | -12 months, OTA, today | The value to compare against. |
glue | and / or / (blank on the last row) | How this row connects to the next row. |
đ Note: The glue value sits at the end of each row and describes the connector to the next row, not the previous one. The first row always starts with AND (connecting forward to row 2). The last row always ends blank (nothing follows).
Date filter value modes
Date fields such as Reservation Stay Through, Birthday, and Book Time have a two-step value selection. First choose an operator, then choose how to express the value.
Operators available | Value mode | What it means |
equals, greater than, greater than or equal, less than, less than or equal | By Date | Match against a specific calendar date. |
equals, greater than, greater than or equal, less than, less than or equal | By Month | Match against a specific month (ignores year, useful for birthday campaigns). |
equals, greater than, greater than or equal, less than, less than or equal | By Timeframe | Relative offset from today: direction (+ future / - past), number, and unit (Days, Weeks, Months, Years). |
equals, greater than, greater than or equal, less than, less than or equal | Special Keyword | Named dynamic dates (e.g. today, start/end of month, start/end of year). |
đ¤ Tip: Use By Timeframe for rolling windows (e.g. 'last 12 months', 'next 30 days') so the segment stays current on every refresh without needing a hardcoded date. Use By Date only when you need to target a fixed point in time.
Filter logic: AND groups and OR chains
CRM segments use a flat list of filter items, each joined to the next by a glue value of and or or. Three valid structures are supported.
Pure AND chain: all filters joined with and. A contact must match every condition. Example: Checked-out AND OTA channel AND not unsubscribed.
Pure OR chain: all filters joined with or. A contact must match at least one condition. Example: Email = A OR Email = B OR Email = C.
OR-separated AND groups: groups of AND conditions separated by an or. The OR appears on the last row of each group, connecting to the first row of the next. Example: (Lapsed AND High-Stays) OR (Lapsed AND High-Revenue).
đ Note: An or on a row ends the current AND group and starts a new one. Within a group, all conditions must match. Across groups, matching any one complete group is sufficient.
Filter objects
lead (Guest Profile): fields on the guest record including name, email, birthday, city, country, language, gender, loyalty tier, loyalty member ID, DNC status, lifetime stays, RFM scores, UDF fields, tags, and more.
reservation: fields on reservation records including status, booking channel, book time, stay-through date, hotel ID, and other booking attributes.
Refresh lifecycle
Only published segments are refreshed automatically.
Manual refresh is available once per 15 minutes per segment.
Unpublished segments show contacts: 0 and no lastRefreshedAt.
Evo can bulk-refresh multiple segments in a single request.
Evo can report stalled or failed refreshes for proactive alerting.
What you can ask Evo Researcher
Segment discovery
"How many segments do I have?" / "Show me all published segments".
"Find segments tagged VIP".
"Are there any existing win-back segments?".
"Which segments have never been refreshed?".
"Find segments with more than 500 contacts".
Segment inspection
"What are the filter rules for segment X?".
"What emails are linked to this segment?".
"Does this segment have a reward rule attached?".
"Show me the contact growth trend for segment X over the last 7 days".
Audience sizing (preview)
"How many guests have a birthday this month?".
"How many contacts would match: loyalty tier = Gold AND city = Houston?".
"Preview the audience for guests who haven't booked in 12 months".
Preview counts are live. They run against the current data without saving anything.
Building and editing segments
You can describe a segment in plain language and Evo will translate it into the correct filter logic, validate all field IDs and values against the live catalogue, and create it. Here are some examples.
OTA Win-Back: "Create a segment called OTA Win-Back for guests who have a past reservation made on the OTA booking channel with a checked-out status, do not have an email opt-out, and are not enrolled in the loyalty programme."
Lapsed High-Value Win-Back: "Create a win-back segment for lapsed high-value guests. Their last stay should be between 12 and 36 months ago, and they should either have three or more lifetime stays, or lifetime revenue above [threshold]. Exclude anyone who has unsubscribed from email."
Loyalty Tier Progress: "Build a segment for loyalty members who are not yet at the top tier and are close to qualifying for the next tier by stays, nights, or spend, and whose qualifying credits expire before the end of the programme cycle."
First-Timer Nurture: "Create a segment for guests who have had exactly one stay in the last 12 months, are not enrolled in the loyalty programme, and have not unsubscribed from email."
Refresh and health
"Refresh segment X".
"Bulk-refresh all segments tagged 'VIP'".
"Are there any segments that failed to refresh today?".
"Show me the refresh history for segment X".
Filter field exploration
"What loyalty tiers are available to filter on?".
"What hotels can I filter by?".
"What operators are available for date fields?".
"What reward rules exist that I could attach to a segment?".
Available filter categories
Category | Example fields |
Guest identity | First name, last name, email, gender, birthday, city, country, language. |
Loyalty | Loyalty Member Tier (memberlevel), Loyalty Member ID (loyaltymemberid), Loyalty Join Date (signuptime), Credits, Lifetime Stays, Qualifying Stays/Nights/Spend. |
Reservation | Reservation Status (ResStatus), Booking Channel (ChannelCode: e.g. OTA, GDS, Booking Engine, PMS), Book Time, Stay-Through Date (reservationStayThrough), Hotel ID. |
Engagement | Unsubscribed Email (dnc_unsubscribed), Unsubscribed SMS (dnc_unsubscribed_sms), email open/click behaviour. |
RFM | Recency, Frequency, Monetary category scores (separate from loyalty stay/spend counters). |
Preferences | Guest preference details (RequestDetailID), survey responses. |
Custom (UDF) | Client-defined fields specific to your property configuration (separate from standard loyalty and RFM fields). |
Recommended workflow in Researcher
Check first: ask Evo to search for existing segments before building something new.
Explore available filter fields: ask Evo what fields, operators, and values are valid for your use case.
Preview the audience size: test your proposed filter combination before committing.
Create the segment: tell Evo to build it. Evo validates all field IDs and values against the live catalogue before saving.
Publish and refresh: ask Evo to publish the segment and trigger an initial refresh to populate contacts.
Monitor health: check refresh status, contact growth, and linked campaign performance over time.
đ¤ Tip: Evo Researcher always fetches live data from the connector, so contact counts, filter options, and segment lists are always current at the time you ask.
