Segmentation is how you target campaigns at the right audience without manually maintaining membership lists. PortalHQ supports rule-based (dynamic) lists — you define the rules once and the list keeps itself up to date as contact attributes change.
Static vs. dynamic lists
| Type | Members determined by | Best for |
|---|---|---|
| Static | Manual add/remove | Small, stable lists (e.g. Board Members, Specific Project Stakeholders). |
| Dynamic / rule-based | Rules you define | Any list that should auto-update as data changes (year-level segments, role-based segments, opt-in segments). |
For school audiences, dynamic lists are almost always the right choice — students move year groups, parents become alumni parents, staff arrive and leave.
Creating a dynamic list
Go to Newsroom → Lists → New list.
- Pick Dynamic (rule-based) as the list type.
- Set the name.
- Add one or more rules — see below.
- Save.
The list shows a live count of matching contacts. As contact attributes change, the count updates automatically.
Rules
Each rule is a clause like contact field X matches value Y. Available fields:
- Custom fields — anything tracked on contacts. Year group, campus, role, region.
- Subscription tags — automatically applied tags from other modules (activity group memberships, booked event signups, slip completions).
- Activity — opened a recent campaign, clicked a link, didn’t open last 5 campaigns.
- Subscription status — subscribed, unsubscribed, bounced.
- Date fields — added before/after a date, etc.
Operators include: equals, contains, doesn’t contain, is empty, is in list, etc.
Combining rules
When you have multiple rules:
- Match all (AND) — contact must satisfy every rule to be in the list. Use for tight targeting (parents in Year 7 AND on the sports list).
- Match any (OR) — contact satisfies at least one rule. Use for broad targeting (parents OR alumni).
For more complex logic, nest rule groups (e.g. (Year 7 OR Year 8) AND signed up to camp).
Common segments
| Segment | Rules |
|---|---|
| Year 7 Parents | Custom field Year Group = 7 |
| Sports Parents | Subscription tag includes any Co-Curricular Sport tag |
| Engaged Parents (opened last 3 campaigns) | Activity: opened in last 30 days |
| Lapsed Contacts | Subscription tag empty AND last open over 6 months ago |
| Unsubscribed | Subscription status = Unsubscribed |
| New Parents | Custom field Enrolment year = current year |
Excluding from a campaign
You can exclude a segment from a campaign even if it overlaps with the recipient list:
- On the campaign, add the include list (e.g. All Parents).
- Add the exclude list (e.g. Year 12 Parents Already Notified).
The campaign goes to All Parents minus Year 12 Parents Already Notified.
Maintaining rules
Rule-based lists are low-maintenance, but a few periodic checks:
- Counts that look wrong — if a list count drops to zero or spikes unexpectedly, a custom field probably changed format or values.
- Stale custom fields — fields tracking time-bound data (e.g. Term 1 Sport) should be updated each term so the rules still match.
- Performance — very complex rule sets can slow list generation. If a list takes minutes to compute, simplify the rules or split into smaller lists.
Combining static and dynamic
A common pattern: a base dynamic list (All Parents) plus a small static override list (VIPs to always include). Add both to the campaign — every parent gets it, plus the VIPs guaranteed.
Testing a segment before campaigning
Before sending to a new segment:
- View the list and check the count is what you expect.
- Browse a sample of the contacts — confirm they’re the right people.
- Send a test campaign to a small portion of the segment first.
Catching a mis-targeted segment before send is much easier than apologising afterwards.