Skip to main content
A segment is a rule that selects an audience. Campaigns send to segments, automations enter and exit on segments, and email blocks can be shown only to a segment. Segments live under Lists & Segments in the sidebar. That screen has three tabs: Lists, Segments and Segment library.

Lists and segments are different things

A list is a static group

People join by their own action: a form, an import, an opt-in. Membership only changes when someone adds or removes them.

A segment is a rule

Membership follows the filter. Someone joins the moment they match and leaves the moment they stop matching.
Use a list when you want to hand-pick who is in it. Use a segment when membership should follow the data. See Lists for the list side. A segment can point at a list, so a hand-curated list can still be the audience for a campaign. Add an Is in a list condition and pick the list.

Dynamic and static segments

A filter. Membership is worked out from your contact data every time the segment is read, so it is always current. This is the default and it is what almost every segment should be.
You choose the type when you create the segment. The type cannot be changed afterwards. Create a new segment instead.
To freeze a dynamic segment at a point in time, open its row menu and choose Convert Segment to List. That creates a real list holding everyone who matches right now. It is a one-time snapshot and it will not update when contacts enter or leave the segment.

What you can filter on

Conditions sit in groups. Conditions inside a group are joined with AND or OR, and the groups themselves are joined with AND or OR. That is enough to express things like “subscribed to email, AND (opened or clicked in the last 30 days)”. There are two kinds of condition: a property the contact has, and an activity they did or did not do.

Profile and identity

Within the EU is derived from the country, not stored separately. It covers the EU-27 plus Iceland, Liechtenstein, Norway and the United Kingdom, 31 codes in total. A contact with no country reads as not in the EU, so a GDPR-scoped send never quietly widens because a country is missing.
RFM tier is filled from your own data, not calculated by Senderz. It is populated when you map an RFM column during a contact import. Store syncs do not set it. If you never imported one, the field will be empty for everyone.
Consent is tracked per channel, and each channel has its own state and its own timestamp. Consent state is what a segment matches on. Whether a message actually goes out is decided again at send time, so a segment is never a way around an opt-out. See Consent and compliance.

List membership and sampling

Random sample is stable. A contact who falls inside a 10 percent sample stays inside it on every read, so a holdout group does not reshuffle between sends. Each condition gets its own independent sample, so two segments each taking 10 percent are not the same 10 percent.

Predictive scores

Four scores are recalculated once a day for every contact from their real order and engagement history over the last year.
purchase_likelihood. Likely, Unlikely or Unknown.
churn_likelihood. High risk, Medium risk, Low risk or Unknown.
vip_likelihood. Likely, Unlikely or Unknown.
responsive_channel. Email, SMS, Both, None or Unknown.
A contact with no score yet reads as Unknown rather than being left out, so a headcount and a filter can never disagree about who is unscored. Every value is stored with the model that produced it and the inputs it used, so a score can always be traced back and recomputed. The current model is a heuristic, not a black box.

Custom fields

Every custom contact field you create is filterable. The operators follow the field’s type:
is, is not, contains, does not contain, starts with, ends with, is set, is not set
equals, does not equal, greater than, at least, less than, at most, between, is set, is not set
before, after, between, in the last days, is set, is not set
is, is not
in, not in, is set, is not set
Custom fields written by a connected store or app are grouped under that integration in the field picker, so you can tell at a glance where a value comes from.
A few field names are reserved and rejected: city, source, status, engagement, clv and last_order_days. They are placeholders for properties Senderz does not compute yet. Use a custom field instead.

Activity conditions

An activity condition asks whether someone did something, how often, and when.

The events you can use

Placed an order, Paid for an order, Was refunded and Cancelled an order. The first three can be filtered by Order value.
Ordered a product, Viewed a product and Added to cart.Ordered a product can be filtered by Product, Product name, SKU, Variant, Price, quantity, order ID, category and category ID. Category is what makes “bought something from this collection” possible without listing every product by ID. Viewed and Added to cart filter on Product.
Started checkout.
Opened an email and Clicked an email.
Submitted a review, filterable by Product, Rating, Has photo, Has video, Published, Verified buyer and App. Earned loyalty points.
Metrics you track yourself appear in their own group. Their properties are discovered from the events you send, so a property you started sending yesterday becomes filterable without waiting for anything to be configured.
Each event carries a small badge saying what feeds it in your workspace. If nothing connected can produce it, the badge says so, so you never build a segment that can only return zero.

How often

Pick a frequency, and a number where one is needed.
zero times ignores the number. “Did not do this” asks whether anything matching exists at all, so there is nothing to count.

What the number counts

For Ordered a product you also choose what a count means, because a purchase is stored one row per order line. Buying 3 different products in one order counts as 3 order lines, 3 units and 1 order. The control only appears on events where the choice is real, so you are never shown an option that would be ignored.

When

Dates are read in UTC. Months are calendar months, not 30 days, and the day is clamped, so one month before 31 March is 28 or 29 February. One extra timeframe, since starting this flow, exists only inside an automation, because only an automation has an enrolment to measure from. It is rejected in a segment.

Building a segment

1

Start from the library, or from scratch

The Segment library tab holds 25 ready-made segments across five goals: Increase engagement, Understand consent, Grow revenue, Reduce churn and Find new profiles. Filter by goal and by channel, then create one in a click and edit it like any other segment. Or use New segment on the Segments tab for an empty builder.
2

Add conditions

Pick a field or an activity, an operator and a value. Add more conditions to the group, or add another group to change how they combine. Conditions can be dragged to reorder.
3

Watch the live size

Live size counts the matching contacts as you build, before you save anything. Use it to catch a rule that selects everyone or nobody.
4

Name it and save

Give it a name, an optional description and a color. Dynamic segments start matching immediately.

Describing an audience in plain language

The Describe your audience box turns a sentence into a filter. Type something like “VIP customers subscribed to email”, then choose Parse with AI.
The assistant checks its draft against your real data before proposing it, and the result is shown as an editable rule, not saved directly. Review it before you press Build segment.
The assistant can express these nine fields: RFM tier, email consent, SMS consent, tag, locale, likely to purchase, churn risk, likely VIP and best channel. If it proposes something outside that set, the unusable parts are dropped and you are told which fields were dropped, so you never get a narrower audience than the description implied without noticing. If no AI provider is configured, a built-in keyword parser handles the common cases (RFM tier, email and SMS consent, tags) and labels its result Local interpretation so you can tell the two apart. Configure a provider under AI provider. The same box appears in the campaign audience step and in the automation segment picker, so you can build a segment without leaving what you were doing.

Building one from a selection of contacts

On the Contacts page, tick the contacts you want, then choose Save as list in the bulk action bar. That creates a static segment holding exactly those contacts, named after the selection.

Segments that ship with every workspace

Every new workspace starts with three segments so a first campaign has somewhere to go:
  • Email subscribers, everyone opted in to email marketing
  • SMS subscribers, everyone opted in to SMS marketing
  • Push subscribers, everyone opted in to web push
These are ordinary dynamic segments. You can edit or delete them. The campaign builder knows which is which. It hides the channel defaults that do not match the campaign’s channel, so an SMS campaign never offers you “Email subscribers”, and it selects the matching one for you when you have not chosen an audience yet. Your own segments are always offered, whatever the channel.

Managing the list of segments

The Segments tab has All and Smart RFM views, a search box, and a Filter control with:
  • Source, to narrow to segments created manually, built with AI, or imported
  • Show archived, off by default so archived segments stay out of the way
Each row shows the type, the profile count, when it was last updated and how many campaigns use it. The row menu offers Edit, Duplicate, Use in campaign, Convert Segment to List, View details and Delete.
Deleting a segment does not touch the contacts in it. Only the rule is removed.
Opening a segment shows its conditions, its profile count and when that count was last worked out, how many campaigns use it, and a searchable table of its members that you can export to CSV.
Profile counts on the segments list are refreshed a few at a time. At most eight stale counts are recalculated per page load, oldest first, and the rest catch up on later loads. A count can therefore be slightly behind for a moment. The count inside the builder and the audience estimate in the campaign builder are always calculated fresh.

Where segments get used

Campaigns

Pick one or more segments under Send to, and optionally some under Exclude. Overlaps are counted once, and the builder shows the unique recipient count plus how many are reachable on each channel.

Automations

Entry filters (In segments) decide who may enter. Exit rules (Exit when in segment) pull people out mid-flow. Individual message steps can Exclude segments so a contact skips just that message.

Conditional content

Any email block can be set to show to Everyone or to a Specific segment. Membership is worked out per recipient when the email is sent.

Popups

Target a popup at profiles in a specific list or segment.
A conditional block whose segment has been deleted is hidden, not shown to everyone. Conditional content fails closed on purpose, so removing a segment can never blast a targeted message to your whole list.

Using segments from the API

In the public API, segments are exposed under lists. You can enumerate every segment in the workspace, and add or remove members on a static one. A dynamic segment works out its own membership, so it cannot be mutated.
  • Enumerate segments with their name, type and current profile count.
  • Add contacts to a static segment by ID or by email.
  • Remove a contact from a static segment.
See Lists for the endpoints and Authentication for the headers.
Creating and editing segment rules is done in the app, not through the public API. A filter is validated when it is saved, so an unknown field, an operator a field does not support, or a timeframe that only makes sense inside an automation is rejected with a clear error rather than silently ignored.