Client Events
Client events publish the current organization-configured Client data together with stable Sakneen identifiers.
Event types
| Event | Emitted when |
|---|---|
client.created | A Client is created in Sakneen |
client.updated | A Client is updated in Sakneen |
Both use eventVersion: 1, resource.type: "client", and the Client's
integration version as resource.version.
client.deleted is reserved in the subscription catalog but is not currently
emitted.
Data contract
| Field | Type | Required | Description |
|---|---|---|---|
clientId | string | Yes | Canonical Sakneen Client identifier |
clientCode | number | Yes | Organization-scoped Sakneen Client code |
| Organization-configured fields | JSON values | Varies | Current fields configured for the organization's Client record |
The data object is a current-state snapshot, not a field-level diff. Custom
Client fields can differ between Sakneen organizations.
The canonical clientId and clientCode values always override dynamic Client
fields with the same names.
The payload does not include Sakneen user attribution, sales ownership, view configuration, or fields outside the external Client event contract.
client.created example
{
"eventId": "019c0ea7-6316-7ff2-a880-cf6a7a659a9e",
"eventType": "client.created",
"eventVersion": 1,
"occurredAt": "2026-07-30T10:30:00.000Z",
"source": "sakneen",
"organizationId": "64f1a0d6d5d0a14a5c0e8a10",
"correlationId": "019c0ea7-6316-7ab4-8be3-c2f5bca42287",
"resource": {
"type": "client",
"id": "64f1a0d6d5d0a14a5c0e8a20",
"version": 1
},
"data": {
"clientId": "64f1a0d6d5d0a14a5c0e8a20",
"clientCode": 1234,
"name": "Ahmed Ali",
"emailAddress": "[email protected]",
"phoneNumber": "+201000000000",
"phoneNumber2": "+201100000000"
}
}
client.updated example
{
"eventId": "019c0eb1-8038-7c97-985e-3d36c0272fa0",
"eventType": "client.updated",
"eventVersion": 1,
"occurredAt": "2026-07-30T10:45:00.000Z",
"source": "sakneen",
"organizationId": "64f1a0d6d5d0a14a5c0e8a10",
"correlationId": "019c0eb1-8038-77d2-b91f-b27761d7387c",
"resource": {
"type": "client",
"id": "64f1a0d6d5d0a14a5c0e8a20",
"version": 3
},
"data": {
"clientId": "64f1a0d6d5d0a14a5c0e8a20",
"clientCode": 1234,
"name": "Ahmed Aly",
"emailAddress": "[email protected]",
"phoneNumber": "+201000000000"
}
}
For update handling, replace your stored Client snapshot only when the incoming
resource.version is newer than the version you have already processed.