Segment Best Practices
Well-organized segments make your flows easier to manage and your targeting more precise. Here are recommendations for getting the most out of segments in Synapse.
Naming Conventions
Use clear, descriptive names that tell your team exactly who's in the segment:
| Good Name | Bad Name | Why |
|---|---|---|
| Active Standard Users - Singapore | Segment 1 | Describes the audience clearly |
| Subscribed - All Products | My Segment | Anyone can understand who's included |
| Onboarding Incomplete - Last 30 Days | Test | Specifies the criteria and timeframe |
| Premium Plan - Opted In | Premium Users | Distinguishes from unsubscribed premium users |
Use a consistent format across your team. A pattern like "[Status] [Product/Group] - [Region/Qualifier]" works well and keeps segments sortable.
Use Exclusion Rules for Product Separation
If your platform serves multiple products or customer types, use exclusion rules to prevent cross-product communications:
Example: You want to email all active users, but not Premium or unsubscribed users.
- Inclusion:
subscription_statusissubscribed - Exclusion:
product_typeinPremium, Unsub
This is safer than trying to list every included product type, because new products are automatically included unless explicitly excluded.
Always double-check exclusion rules when adding new product types to your platform. If a new product should be excluded from existing segments, remember to update those exclusion rules.
Dynamic vs Static Segments
Synapse segments are dynamic by default -- they are recalculated automatically on a regular schedule (typically hourly). This means:
- As contacts' properties change, they may enter or leave segments automatically.
- When a flow uses a dynamic segment, it always checks the latest data at the moment a trigger event arrives.
- The cached contact count shown on the segment list updates periodically.
When Dynamic Works Best
- Targeting "all subscribed contacts" -- new subscribers are automatically included
- Behavioral segments like "has not completed onboarding" -- contacts leave the segment once they complete onboarding
- Property-based segments that reflect real-time status
When to Consider Static Segments
If you need a fixed list of contacts for a one-time campaign, build the segment, preview the contacts, and note the count. The segment will continue to recalculate, but flows triggered at a specific point in time will only process contacts who matched at that moment.
Keep Segments Focused
A segment should represent one clearly defined audience. Avoid "catch-all" segments that try to combine too many criteria:
Too broad:
- "Everyone who signed up in the last year and is in Singapore or Malaysia and has purchased or has a premium plan"
Better -- split into focused segments:
- "Active Subscribers - Singapore"
- "Active Subscribers - Malaysia"
- "Premium Plan Holders"
You can always use multiple flows with different segments instead of one complex segment.
Regularly Review Segments
Over time, segments can become outdated as your product and data evolve:
- Check contact counts periodically. If a segment has zero contacts, it might be obsolete or the criteria might need updating. Use the Membership Trend graph to spot declining segments.
- Archive unused segments instead of deleting them. Archived segments are hidden from the default list but can be restored later. Check the Used By section to see if any flows still reference a segment before archiving.
- Verify data availability when segment counts seem unexpectedly low. The contact property you're filtering on may have changed names or stopped being sent.
- Duplicate before experimenting. If you want to try new filters on an existing segment, duplicate it first so you can compare results side by side without affecting active flows.
Test Before Attaching to Flows
Before using a new segment in a live flow:
- Preview the contacts to make sure the right people are included (and the wrong people aren't).
- Check the count against your expectations. If you expect 5,000 contacts but the segment shows 50, something is wrong with the filters.
- Test with a draft flow first to see if events trigger correctly for segmented contacts.
Remember that segments are evaluated in real time when a flow's trigger event arrives. The preview count may differ slightly from who actually enters the flow, because contacts' data may change between evaluation times.
Common Segment Patterns
| Use Case | Filters |
|---|---|
| All subscribed contacts | subscription_status is subscribed |
| New signups (last 7 days) | created_at date_in_last 7d |
| Premium users only | properties.plan is premium |
| Contacts without email | email not_exists |
| Engaged users | has_executed email_opened |
| Dormant users | has_not_executed login AND created_at date_before [90 days ago] |