Skip to main content

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

  1. Data Collection: CRM receives events from SCL, TeeTime, and Messaging services
  2. Segment Evaluation: CRM evaluates segment rules against rich customer profiles
  3. Membership Sync: CRM syncs simplified membership lists to Messaging
  4. Delivery: Messaging handles multi-channel delivery (email, SMS, push)

Segment Types

TypeDescriptionExample
StaticManual membership"VIP List", "Board Members"
DynamicRule-based, auto-computed"Active members with handicap < 10"
SmartML-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:

SegmentDescriptionRules
All CustomersEveryonestatus = ACTIVE
Active MembersCurrent membersmembershipStatus = ACTIVE
High EngagementEngaged customersengagementScore >= 70
At RiskLikely to churnchurnRiskScore >= 70
Email SubscribersEmail opted-inemailOptIn = true

Refresh Frequencies

FrequencyUse Case
ManualStatic segments, one-off
HourlyTime-sensitive campaigns
DailyRegular newsletters
WeeklyMonthly reports