Segmentation
CRM segments allow you to group customers based on data from all connected services.
Key Concept
CRM defines segments using rich cross-service data. Messaging executes delivery.
flowchart LR
subgraph sources["Data Sources"]
SCL["🏌️ SCL Service<br/>─────────────<br/>• Membership tier<br/>• Member status<br/>• Payment history"]
TT["⛳ TeeTime Service<br/>─────────────<br/>• Bookings<br/>• Handicap<br/>• Tournament play"]
MSG_IN["📧 Messaging Service<br/>─────────────<br/>• Email opt-in<br/>• SMS consent<br/>• Engagement events"]
end
subgraph crm["CRM Platform"]
SEG["🎯 CustomerSegment<br/>─────────────────────<br/>Rich rule engine using:<br/>• SCL membership data<br/>• TeeTime activity<br/>• Engagement scores<br/>• Consent flags"]
end
subgraph messaging["Messaging Service"]
CONTACT["📋 Segment (simplified)<br/>─────────────────────<br/>Contact membership<br/>list only<br/>(for delivery)"]
end
SCL -->|events| SEG
TT -->|events| SEG
MSG_IN -->|events| SEG
SEG -->|"sync membership"| CONTACT
CONTACT -->|"📤 deliver"| EMAIL["Email"]
CONTACT -->|"📤 deliver"| SMS["SMS"]
CONTACT -->|"📤 deliver"| PUSH["Push"]
style crm fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style messaging fill:#e3f2fd,stroke:#2196f3,stroke-width:2px
style sources fill:#fff3e0,stroke:#ff9800,stroke-width:2px
How It Works
- Data Collection: CRM receives events from SCL, TeeTime, and Messaging services
- Segment Evaluation: CRM evaluates segment rules against rich customer profiles
- Membership Sync: CRM syncs simplified membership lists to Messaging
- Delivery: Messaging handles multi-channel delivery (email, SMS, push)
Segment Types
| Type | Description | Example |
|---|---|---|
| Static | Manual membership | "VIP List", "Board Members" |
| Dynamic | Rule-based, auto-computed | "Active members with handicap < 10" |
| Smart | ML-powered | "Likely to churn in 30 days" |
Dynamic Segment Example
const activeGolferSegment = {
name: "Active Golfers - Low Handicap",
rules: [
// From SCL
{ field: "membershipStatus", operator: "eq", value: "ACTIVE" },
{ field: "membershipTier", operator: "in", value: ["Gold", "Platinum"] },
// From TeeTime
{ field: "handicap", operator: "lt", value: 15 },
{ field: "bookingCount30d", operator: "gte", value: 2 },
// From CRM
{ field: "engagementScore", operator: "gte", value: 50 },
// From Messaging
{ field: "emailOptIn", operator: "eq", value: true }
],
combinator: "AND"
};
System Segments
Pre-defined segments that are auto-managed:
| Segment | Description | Rules |
|---|---|---|
| All Customers | Everyone | status = ACTIVE |
| Active Members | Current members | membershipStatus = ACTIVE |
| High Engagement | Engaged customers | engagementScore >= 70 |
| At Risk | Likely to churn | churnRiskScore >= 70 |
| Email Subscribers | Email opted-in | emailOptIn = true |
Refresh Frequencies
| Frequency | Use Case |
|---|---|
| Manual | Static segments, one-off |
| Hourly | Time-sensitive campaigns |
| Daily | Regular newsletters |
| Weekly | Monthly reports |