Skip to main content

SCL Service Events

Events from the Sports Club Loyalty (SCL) service.


Overview

SCL is the membership management system. Events from SCL drive member profile updates, tier changes, and financial tracking.


scl.member.created

Fired when a new member is created in SCL.

{
id: "evt_123",
type: "scl.member.created",
version: "1.0",
timestamp: "2025-12-14T10:00:00Z",
tenantId: "tenant_123",
source: "scl",
identity: {
sclMemberId: 5678,
email: "john@example.com",
authUserId: "auth0|123"
},
payload: {
id: 5678,
firstName: "John",
lastName: "Smith",
email: "john@example.com",
status: "ACTIVE",
membershipTierId: 1,
membershipTierName: "Gold",
dateOfBirth: "1985-03-15",
createdAt: "2025-12-14T10:00:00Z"
}
}

CRM Actions:

  1. Resolve identity → find or create CustomerProfile
  2. Link sclMemberId to profile
  3. Sync member data (firstName, lastName, etc.)
  4. Create MEMBER_CREATED activity
  5. Set lifecycleStage to MEMBER

Priority: Normal


scl.member.updated

Fired when member details are updated.

{
type: "scl.member.updated",
identity: { sclMemberId: 5678 },
payload: {
id: 5678,
changes: ["email", "phoneNumber"],
email: "john.new@example.com",
phoneNumber: "+27829999999",
updatedAt: "2025-12-14T11:00:00Z"
}
}

CRM Actions:

  1. Find profile by sclMemberId
  2. Update changed fields
  3. Create MEMBER_UPDATED activity
  4. If email/phone changed, update identity aliases

Priority: Normal


scl.member.deleted

Fired when a member is deleted (soft or hard).

{
type: "scl.member.deleted",
identity: { sclMemberId: 5678 },
payload: {
id: 5678,
deletionType: "soft",
reason: "member_request",
deletedAt: "2025-12-14T11:00:00Z"
}
}

CRM Actions:

  1. Update profile status based on deletion type
  2. Create MEMBER_DELETED activity
  3. If hard delete, consider GDPR data removal

Priority: Normal


scl.member.tier.changed

Fired when member's tier changes.

{
type: "scl.member.tier.changed",
identity: { sclMemberId: 5678 },
payload: {
id: 5678,
previousTierId: 2,
previousTierName: "Silver",
newTierId: 1,
newTierName: "Gold",
reason: "upgrade",
effectiveDate: "2025-12-14T00:00:00Z"
}
}

CRM Actions:

  1. Update membershipTier on profile
  2. Create TIER_UPGRADED or TIER_DOWNGRADED activity
  3. Trigger engagement score refresh
  4. Check segment membership changes

Priority: Normal


scl.member.status.changed

Fired when member status changes (active/inactive/suspended).

{
type: "scl.member.status.changed",
identity: { sclMemberId: 5678 },
payload: {
id: 5678,
previousStatus: "ACTIVE",
newStatus: "INACTIVE",
reason: "non_payment",
effectiveDate: "2025-12-14T00:00:00Z"
}
}

CRM Actions:

  1. Update membershipStatus on profile
  2. If INACTIVE → update lifecycleStage to LAPSED
  3. Create MEMBERSHIP_SUSPENDED or MEMBERSHIP_CANCELLED activity
  4. Trigger churn risk recalculation

Priority: High


scl.payment.received

Fired when a payment is processed.

{
type: "scl.payment.received",
identity: { sclMemberId: 5678 },
payload: {
id: "payment_123",
memberId: 5678,
amount: 150000, // cents
currency: "ZAR",
type: "membership_renewal",
invoiceId: "inv_456",
paidAt: "2025-12-14T10:00:00Z"
}
}

CRM Actions:

  1. Increment lifetimeValue on profile
  2. Update lastPaymentAt
  3. Create PAYMENT_RECEIVED activity
  4. Trigger engagement score refresh

Priority: Normal


scl.payment.failed

Fired when a payment fails.

{
type: "scl.payment.failed",
identity: { sclMemberId: 5678 },
payload: {
id: "payment_123",
memberId: 5678,
amount: 150000,
reason: "insufficient_funds",
attemptedAt: "2025-12-14T10:00:00Z"
}
}

CRM Actions:

  1. Create PAYMENT_FAILED activity
  2. Increase churnRiskScore
  3. Consider triggering retention workflow

Priority: High


scl.invoice.sent

Fired when an invoice is sent to a member.

{
type: "scl.invoice.sent",
identity: { sclMemberId: 5678 },
payload: {
id: "inv_123",
memberId: 5678,
amount: 150000,
dueDate: "2025-12-28T00:00:00Z",
type: "membership_renewal",
sentAt: "2025-12-14T10:00:00Z"
}
}

CRM Actions:

  1. Create INVOICE_SENT activity
  2. Update financial tracking

Priority: Low


Event Priority Summary

EventPriorityReason
scl.member.createdNormalStandard profile creation
scl.member.updatedNormalStandard profile update
scl.member.deletedNormalProfile status change
scl.member.tier.changedNormalSegment/scoring implications
scl.member.status.changedHighChurn risk, lifecycle change
scl.payment.receivedNormalFinancial tracking
scl.payment.failedHighChurn risk, intervention needed
scl.invoice.sentLowInformational only