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:
- Resolve identity → find or create CustomerProfile
- Link
sclMemberIdto profile - Sync member data (firstName, lastName, etc.)
- Create
MEMBER_CREATEDactivity - Set
lifecycleStagetoMEMBER
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:
- Find profile by
sclMemberId - Update changed fields
- Create
MEMBER_UPDATEDactivity - 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:
- Update profile status based on deletion type
- Create
MEMBER_DELETEDactivity - 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:
- Update
membershipTieron profile - Create
TIER_UPGRADEDorTIER_DOWNGRADEDactivity - Trigger engagement score refresh
- 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:
- Update
membershipStatuson profile - If INACTIVE → update
lifecycleStagetoLAPSED - Create
MEMBERSHIP_SUSPENDEDorMEMBERSHIP_CANCELLEDactivity - 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:
- Increment
lifetimeValueon profile - Update
lastPaymentAt - Create
PAYMENT_RECEIVEDactivity - 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:
- Create
PAYMENT_FAILEDactivity - Increase
churnRiskScore - 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:
- Create
INVOICE_SENTactivity - Update financial tracking
Priority: Low
Event Priority Summary
| Event | Priority | Reason |
|---|---|---|
scl.member.created | Normal | Standard profile creation |
scl.member.updated | Normal | Standard profile update |
scl.member.deleted | Normal | Profile status change |
scl.member.tier.changed | Normal | Segment/scoring implications |
scl.member.status.changed | High | Churn risk, lifecycle change |
scl.payment.received | Normal | Financial tracking |
scl.payment.failed | High | Churn risk, intervention needed |
scl.invoice.sent | Low | Informational only |