Segments
Segments are saved sets of rules that match groups of profiles. They power targeted communications, campaign audiences, automation triggers, and reporting filters. Segments combine rules from multiple data sources — profile fields, application status, event attendance, campaign engagement, and more — into flexible queries.
Overview
A segment is a collection of rules that define criteria for matching profiles. Rules can be combined with AND logic (all rules must match) or OR logic (any rule can match). Multiple segments can be layered together for complex targeting.
Segment Types
FullFabric has four segment types, each serving a different purpose:
| Type | Reusable | Description |
|---|---|---|
| Embedded | No | Defined directly within a campaign or form. Scoped to its parent entity. |
| Shared | Yes | Reusable across campaigns and automations. Can be assigned to specific teams. |
| Pinned | Yes | Mandatory filters always applied with AND logic. Cannot be combined with OR. |
| Static | No | Snapshots created when a campaign is dispatched. Preserves the audience at send time. |
Embedded Segments
Embedded segments are one-off targeting definitions created inside a campaign or form. They cannot be reused elsewhere. When a campaign is duplicated, its embedded segments are deep-copied.
Shared Segments
Shared segments are the most common type. They act as reusable audience definitions (e.g., "All Active Students", "Alumni in London") that can be referenced by multiple campaigns and automations. Shared segments:
- Track their creator
- Can be scoped to specific teams
- Report whether they are in use (referenced by campaigns or automation rules)
Pinned Segments
Pinned segments act as mandatory institutional filters. They are always applied with AND logic on top of other segments. Use cases include enforcing compliance requirements (e.g., "must have marketing consent") or institutional boundaries.
Static Segments
Static segments are snapshots created automatically when a campaign is dispatched. They capture:
| Property | Description |
|---|---|
ids |
All matching profile IDs at dispatch time |
addressable_ids |
Profiles with valid email addresses |
bounced_ids |
Profiles with bounced emails |
marked_as_spam_ids |
Profiles who marked previous emails as spam |
unsubscribed_ids |
Profiles who have unsubscribed |
Static segments ensure consistent reporting — even if the underlying rules would produce different results today, the static snapshot reflects the actual audience at send time.
Rule Categories
Rules define the filtering criteria within a segment. Each rule category queries a different data source.
Profile Rules
Rules that filter on direct profile properties.
| Rule | Description |
|---|---|
TaggedWith |
Profiles with specific tags |
InTeams |
Assigned to specific teams (supports AND/OR) |
IsActive / IsInactive |
Account active status |
IsSubscribed / IsUnsubscribed |
Email subscription status |
IsForgotten / IsNotForgotten |
GDPR forgotten status |
EmailIsBouncing |
Primary email has bounced |
HasRoles |
Has specific lifecycle roles |
Search |
Free-text search across profile fields |
Context Rules
Rules based on a profile's roles in classes, courses, and programmes.
| Rule | Description |
|---|---|
IsIn / IsNotIn |
In (or not in) specific classes, courses, themes, or campuses |
PlaysRole |
Has a specific role with optional state/substate filter |
NotRole |
Does NOT have a specific role |
OwnedBy / NotOwned |
Owned by specific staff or unassigned |
HasWithdrawn / HasNotWithdrawn |
Withdrawal status in a context |
Unassigned |
No owner assigned |
Application Rules
Rules based on application (applic) status.
| Rule | Description |
|---|---|
HasApplic / DoesNotHaveApplic |
Has any application |
HasStartedApplic |
Has started an application |
HasSubmittedApplic |
Has submitted an application |
HasPendingPaymentApplic |
Has an application awaiting payment |
Submitted |
Submitted a specific application template |
HasStartedApplicByThemself / ByProxy / ByStaff |
Who initiated the application |
Evaluation Rules
Rules based on application evaluations.
| Rule | Description |
|---|---|
HasEvaluation / HasNoEvaluation |
Has an evaluation |
HasStartedEvaluation |
Evaluation initiated |
HasSubmittedEvaluation |
Evaluation completed |
HasAssignedEvaluationTo |
Evaluation assigned to a specific reviewer |
Campaign Rules
Rules based on email campaign engagement.
| Rule | Description |
|---|---|
Sent / NotSent |
Received (or did not receive) specific campaigns |
Open / DidNotOpen |
Opened (or did not open) a campaign |
Click |
Clicked a link in a campaign |
Event Rules
Rules based on event registration and attendance.
| Rule | Description |
|---|---|
Registered / DidNotRegister |
Registered (or not) for an event |
Attended / DidNotAttend |
Attended (or not) an event |
RegisteredButDidNotAttend |
Registered but did not attend |
Form Rules
| Rule | Description |
|---|---|
Submitted / DidNotSubmit |
Submitted (or not) a specific form |
Field Rules
Rules that filter on custom field values.
| Rule | Description |
|---|---|
Is / IsNot |
Field equals / does not equal a value |
Contains / DoesNotContain |
Field contains / does not contain a substring |
After / Before |
Date is after / before a value |
AfterOrOn / BeforeOrOn |
Date comparisons inclusive of boundary |
Exists / DoesNotExist |
Field has / does not have a value |
Policy Rules
Rules based on consent and policy agreements.
| Category | Rules |
|---|---|
| Marketing | HasAgreed, DoesNotWant, HasNotResponded, Selection, DoesNotIncludeEmail |
| Privacy | HasAgreed, HasNotAgreed, HasNotResponded |
| Data Processing | HasConsentGivenByStaff, DoesNotHaveConsent |
Organisation Rules
| Rule | Description |
|---|---|
IsInTheCommunityOf |
In an organisation's community |
IsPrimaryContact |
Is the primary contact for an organisation |
Other Rules
| Category | Rules |
|---|---|
| Transcripts | HasTranscript |
| Course Registrations | StateIs, RegistrationStateIs, CourseStateIs |
| Experience | HasExperienceAt |
Query Resolution
The segment query engine translates rules into MongoDB queries and resolves matching profile IDs.
How Rules Combine
- Pinned segments are always combined with AND — all must match
- Filter segments are combined with OR by default — matching any is sufficient
- The pinned result is ANDed with the filter result for the final query
Within a Single Segment
- Inclusive = false (default): All rules must match (AND logic)
- Inclusive = true: Any rule can match (OR logic)
- System rules: Rules marked as
system: trueare always required, even in inclusive mode
Selected Profiles
In addition to rule-based matching, segments support manual profile selection. Staff can hand-pick profiles to include in a segment, which is combined with rule results.
Scoping
Segments can be scoped to specific contexts, limiting which campaigns or automations can use them. This supports institutional boundaries and team-based access control. See Data Access Scopes for how scopes integrate with the authorization system.
Use Cases
| Use Case | Segment Type | Example |
|---|---|---|
| Email campaigns | Shared or Embedded | Target alumni who attended events in 2025 |
| Automation triggers | Shared | Trigger welcome email for new prospects |
| Compliance enforcement | Pinned | Ensure marketing consent before any campaign |
| Campaign reporting | Static | Know exactly who received a campaign |
| Audience building | Shared | "MBA Prospects in Europe" reused across campaigns |
| One-off targeting | Embedded | Custom audience for a single email blast |