Operators & Fields
Available fields and comparison operators for segment rules.
Each segment rule is made up of three parts: a field (the piece of contact data to test), an operator (how to compare it), and a value (what to compare it against). This reference lists every field and operator available in SendBeam. The same fields and operators are accepted by the segments API, and previews and sends evaluate them identically.
Available fields
SendBeam exposes the following fields for use in segment rules.
| Field | Type | Description |
|---|---|---|
email | Text | The contact's email address |
first_name | Text | The contact's first name |
last_name | Text | The contact's last name |
status | Text | Contact status: subscribed, unsubscribed, bounced or complained |
source | Text | How the contact was added: manual, import, form or api |
language | Text | The language the contact reads in, as a two-letter code (fr). is empty finds contacts with no language |
created_at | Date | The date and time the contact was added to the workspace |
tag | Whether the contact carries a tag. Use with has tag / does not have tag and pick the tag (the API takes the tag id as the value). | |
campaign | Engagement | What the contact did with one sent campaign. Use with opened, received but did not open, clicked a link in or received but did not click and pick the campaign (the API takes the campaign id as the value). The "did not" forms only match people the campaign actually reached — never people it was not sent to. |
activity | Engagement | Any open or click on any email from this workspace — campaigns, automations and transactional — in the last N days (1–365). Opened nothing in the last 90 days is the usual re-engagement or list-pruning segment. |
custom_fields.<key> | Text | Any custom field stored on the contact, for example custom_fields.country |
country); through the API, pass the field as custom_fields.country. A custom field registered as a Number is compared numerically, so "greater than 9" correctly excludes 10. A field with no registered type is compared as text, where "greater than" is alphabetical — register the field as a Number if you want it to sort like one.Available operators
Most operators work with most fields, but not every pairing is valid: the
tag field takes only has tag and does not have tag,
and campaign takes only opened and clicked. A rule
that pairs them wrongly is refused with a 400 rather than quietly ignored.
The table below lists them with the name shown
in the segment form and the value used in the API.
| Operator | API value | Description |
|---|---|---|
| equals | equals (or is) | Field value matches the given value exactly, ignoring case |
| does not equal | not_equals (or is_not) | Field value does not match the given value |
| contains | contains | Field value includes the given text anywhere within it (case-insensitive) |
| does not contain | not_contains | Field value does not include the given text (case-insensitive) |
| starts with | starts_with | Field value begins with the given text (case-insensitive) |
| ends with | ends_with | Field value ends with the given text (case-insensitive) |
| is empty | is_empty | The field is empty or has never been given a value for this contact (no value needed) |
| is not empty | is_not_empty | The field has a non-empty value for this contact (no value needed) |
| is after / greater than | greater_than | The field is later than the given date, or sorts after the given value |
| is before / less than | less_than | The field is earlier than the given date, or sorts before the given value |
| has tag | has_tag | The contact carries the chosen tag (field tag only) |
| does not have tag | not_has_tag | The contact does not carry the chosen tag (field tag only) |
| opened / clicked a link in | opened / clicked | The contact opened, or clicked a link in, the chosen campaign (field campaign only). A click counts as an open. |
not_opened / not_clicked | received but did not open / click | The campaign reached the contact and they have not opened it, or not clicked in it (field campaign only). Bounced and complained recipients are excluded. |
opened_within / clicked_within | opened / clicked any email in the last N days | At least one open, or one click, on any email from this workspace in the window (field activity only) |
not_opened_within / not_clicked_within | opened / clicked nothing in the last N days | Every contact without an open, or a click, in the window — including contacts who were sent nothing (field activity only) |
Example rules
The table below shows practical examples of rules you might use when building segments in SendBeam.
| Goal | Field | Operator | Value |
|---|---|---|---|
| All subscribed contacts | status | equals | subscribed |
| Contacts from the UK | custom_fields.country | equals | United Kingdom |
| Signed up this year | created_at | is after / greater than | 2026-01-01 |
| Came in through a form | source | equals | form |
| Everyone at one company | email | ends with | @acme.com |
| Missing first name | first_name | is empty | — |
| On the Pro plan | custom_fields.plan | equals | pro |
Stuck, or found a gap? Ask in the community — questions, tips and every release note, with this page as the source of truth.