Audiences

Segments

A segment is a filter that selects contacts by their fields or their activity. You build it as a list of conditions joined by AND or OR, and a live preview shows who matches as you edit.

A segment selects contacts by what is true about them: a field value, or something they did. You build one in the segment filter builder, which appears in four places: when you set up an audience in Filter mode, in the audience section of the campaign composer when you choose Filter rather than a saved list, in a journey's event-trigger enrollment conditions, and in a journey's branch condition nodes. Each row is one condition; all rows combine under a single match mode.

Choosing AND or OR

The Match dropdown at the top of the builder sets how the rows combine. all conditions requires every condition to be true (AND); any condition matches a contact that satisfies at least one (OR). The label between rows updates to read “and” or “or” so you can read the segment top to bottom. There is one match mode per segment; conditions cannot be nested into sub-groups.

An empty builder shows “No conditions yet: click ‘Add condition’ below.” A segment with no conditions matches no one, so saving an audience in Filter mode without at least one condition is rejected with “Add at least one condition or behavior, or switch to a contact list.”

Filtering by contact fields

Click Add condition. The first dropdown in the row is grouped into Contact fields and Activity. Under Contact fields you can pick a standard field, Email, First name, Last name, Lifecycle stage, City, Province / State, Country, Company, Job title, Source, or Created at, followed by any non-sensitive custom fields defined on your account. There is no inline field creation; the picker only lists fields that already exist.

The second dropdown is the operator, and the operators offered depend on the field's type. Text fields offer “equals”, “does not equal”, “contains”, “is one of”, “is empty”, and “is not empty”. Date fields swap in “is after” and “is before” in place of contains, and render a date picker for the value.

The value control adapts to the field too. An “is one of” operator shows a comma-separated text input (value1, value2, …); a select-type custom field shows its preset choices; a checkbox field offers “checked” or “unchecked”. Choosing “is empty” or “is not empty” hides the value control entirely.

Custom fields marked sensitive (encrypted at rest) never appear in the field picker. Their values live encrypted and are not filterable, so the resolver skips any reference to one: a segment can neither match nor probe an encrypted value.

Filtering by activity

Picking an entry under the Activity group switches the row to a behavioral condition: it matches contacts by something they did rather than a stored field. The signals available are:

  • Events: Registered for an event, Attended an event, or Viewed an event. A target dropdown lets you pin to one event or leave it on “any event”.
  • Email: Opened an email, Clicked an email, or Email bounced. When you have past campaigns, a target dropdown narrows it to one campaign or “any campaign”.
  • Web: Viewed a page or Submitted a form, with an optional “path contains…” text box to limit it to URLs containing a string.
  • Engagement tier: matches a contact's current tier: cold, warm, hot, or champion.

Each activity row (other than Engagement tier) carries its own operator, “did”, “did not”, or “did at least”, and a timeframe: “any time”, the last 7, 30, 90, or 180 days, or “last year”. Choosing “did at least” reveals a count box (minimum 1) followed by the word times, so you can require, for example, at least three opens in the last 30 days.

Previewing who matches

On the audience page, the Matching contacts panel beside the builder refreshes as you edit, showing the recipient count and a page of the contacts the segment resolves to. Changes to the conditions are debounced by 400ms so editing the builder does not hammer the server, and the search box has its own 300ms debounce. The count shows a trailing + when the segment hits the 50,000-row resolution cap.

The preview has two columns, Name and Company, with each contact's email shown beneath their name, and page sizes of 25, 50, 100, or 200 rows. You do not need to save to see results; the panel reflects the current draft of the segment.

Inspecting the raw filter

Below the conditions, the Show JSON toggle expands a read-only view of the exact filter object: its kind (the match mode) and its conditions array. This is the same structure stored on the audience or campaign. Use Hide JSON to collapse it again.

Adding and removing conditions

Use Add condition to append a new row, which starts as an Email field condition you can re-point. The trash icon at the right of each row removes that condition. Switching a row's first dropdown between a Contact field and an Activity signal replaces the rest of that row's controls to match the new type; any value you had typed in the old controls is not carried over.

Updated