Developers

Reference

Event catalogue

62 events, each with the capability a key needs to subscribe and the fields its payload carries. Payloads are identifiers, states and timestamps only — no names, titles or free text — so read the details you need through the API with the ids you receive. That is a privacy rule, not a style choice: the event log is outside the reach of anonymisation.

Machine-readable

The same catalogue is served as JSON Schema (draft 2020-12), so you can generate types and validate deliveries instead of trusting this table.

curl
curl https://api.kelomo.fi/v1/webhook-events \
  -H "Authorization: Bearer kelomo_…"

# → { "events": [ { "event": "workday.approved",
#                   "capabilities": ["worktime.supervise"],
#                   "payloadSchema": { "$schema": "…draft/2020-12/schema", … } } ] }

Subscribe with POST /v1/webhooks. Subscribing to an event also requires the capability that guards it — a key that cannot see payroll data cannot receive payroll events either.

The events

quote.decided

Capability: crm.useprojects.manage

Field Type
quoteId string
quoteKey string
decision "accepted" | "declined"
projectId string | null

batch.created

Capability: payroll.runprojects.manage

Field Type
batchId string
lineCount integer
customerCount integer
grossCents integer
periodFrom string
periodTo string

status_update.posted

Capability: projects.read

Field Type
projectId string
statusUpdateId string
rag string
createdAt string

deal.won

Capability: crm.use

Field Type
dealId string
customerId string | null
valueCents integer | null
wonAt string | null
projectId string | null

lead.created

Capability: crm.use

Field Type
leadId string
source string | null

workday.approved

Capability: worktime.supervise

Field Type
workDayId string
membershipId string
workDate string
approvedAt string

export_batch.created

Capability: payroll.run

Field Type
batchId string
periodStart string
periodEnd string
dayCount integer
groupId string | null
createdAt string

export_batch.delivered

Capability: payroll.run

Field Type
batchId string
targetId string
deliveryId string
transport string | null
deliveredAt string | null

export_batch.delivery_failed

Capability: payroll.run

Field Type
batchId string
targetId string
deliveryId string
transport string | null
failedAt string

absence.submitted

Capability: worktime.supervise

Field Type
periodId string
membershipId string
startDate string
endDate string
status string

absence.decided

Capability: worktime.supervise

Field Type
periodId string
membershipId string
startDate string
endDate string
status string

shift.published

Capability: scheduling.plan

Field Type
publishEventId string
planningUnitId string
periodFrom string
periodTo string
publishedCount integer
recipientCount integer

invoice.issued

Capability: payroll.run

Field Type
invoiceId string
invoiceNumber string
customerId string | null
totalGrossCents integer
dueDate string | null
issuedAt string

invoice.credited

Capability: payroll.run

Field Type
creditNoteId string
originalInvoiceId string
totalGrossCents integer
createdAt string

invoice.dispatched

Capability: payroll.run

Field Type
invoiceId string
dispatchId string
channel string
dispatchedAt string

invoice.delivered

Capability: payroll.run

Field Type
invoiceId string
dispatchId string
deliveredAt string

invoice.delivery_failed

Capability: payroll.run

Field Type
invoiceId string
dispatchId string
failedAt string

payment.recorded

Capability: payroll.run

Field Type
paymentId string
invoiceId string | null
amountCents integer
recordedAt string

payment.allocated

Capability: payroll.run

Field Type
paymentId string
invoiceId string
amountCents integer
allocatedAt string

payment.imported

Capability: payroll.run

Field Type
importBatchId string
entryCount integer
importedAt string

invoice.overdue

Capability: payroll.run

Field Type
invoiceId string
dueDate string
overdueDays integer

invoice.drafts_ready

Capability: payroll.runprojects.manage

Field Type
draftCount integer
createdAt string

recurring_plan.run_completed

Capability: payroll.runprojects.manage

Field Type
runId string
draftCount integer
completedAt string

batch.delivered

Capability: payroll.run

Field Type
batchId string
targetId string | null
deliveredAt string

workday.confirmed

Capability: worktime.supervise

Field Type
workDayId string
membershipId string
workDate string
confirmedAt string

workday.returned

Capability: worktime.supervise

Field Type
workDayId string
membershipId string
workDate string
returnedAt string

workday.corrected

Capability: worktime.supervise

Field Type
workDayId string
membershipId string
workDate string
correctedAt string

workday.unapproved

Capability: worktime.supervise

Field Type
workDayId string
membershipId string
workDate string
unapprovedAt string

absence.cancelled

Capability: worktime.supervise

Field Type
periodId string
membershipId string
startDate string
endDate string
cancelledAt string

absence.certificate_provided

Capability: worktime.supervise

Field Type
periodId string
membershipId string
providedAt string

shift.changed

Capability: scheduling.plan

Field Type
shiftId string
planningUnitId string
workDate string | null
changedAt string

open_shift.claimed

Capability: scheduling.plan

Field Type
openShiftId string
claimId string
membershipId string
claimedAt string

open_shift.claim_decided

Capability: scheduling.plan

Field Type
claimId string
openShiftId string
membershipId string
decision string
decidedAt string

shift_swap.proposed

Capability: scheduling.plan

Field Type
swapId string
fromMembershipId string
toMembershipId string
proposedAt string

shift_swap.decided

Capability: scheduling.plan

Field Type
swapId string
decision string
decidedAt string

export_batch.cancelled

Capability: payroll.run

Field Type
batchId string
cancelledAt string

payroll_period.locked

Capability: payroll.run

Field Type
lockId string
periodStart string
periodEnd string
lockedAt string

payroll_period.lock_lifted

Capability: payroll.run

Field Type
lockId string
liftedAt string

member.created

Capability: members.manage

Field Type
membershipId string
role string
createdAt string

member.invited

Capability: members.manage

Field Type
membershipId string
invitedAt string

member.deactivated

Capability: members.manage

Field Type
membershipId string
deactivatedAt string

employment.terminated

Capability: hr.managemembers.manage

Field Type
membershipId string
endDate string
recordedAt string

task.created

Capability: projects.read

Field Type
taskId string
projectId string | null
createdAt string

task.status_changed

Capability: projects.read

Field Type
taskId string
status string
changedAt string

task.approval_responded

Capability: projects.read

Field Type
taskId string
approvalId string
decision string
respondedAt string

quote.sent

Capability: crm.useprojects.manage

Field Type
quoteId string
quoteKey string
sentAt string

quote.accepted

Capability: crm.useprojects.manage

Field Type
quoteId string
quoteKey string
acceptedAt string

deal.lost

Capability: crm.use

Field Type
dealId string
customerId string | null
lostAt string

deal.stage_changed

Capability: crm.use

Field Type
dealId string
stageId string
changedAt string

lead.converted

Capability: crm.use

Field Type
leadId string
dealId string | null
customerId string | null
convertedAt string

intake.received

Capability: projects.manage

Field Type
intakeItemId string
source string | null
receivedAt string

change_order.approved

Capability: projects.manage

Field Type
changeOrderId string
projectId string
approvedAt string

project.created

Capability: projects.read

Field Type
projectId string
createdAt string

project.closed

Capability: projects.read

Field Type
projectId string
closedAt string

contact.anonymized

Capability: crm.use

Field Type
contactId string
anonymizedAt string

lead.anonymized

Capability: crm.use

Field Type
leadId string
anonymizedAt string

invoice.paid

Capability: payroll.run

Field Type
invoiceId string
invoiceNumber string
totalGrossCents integer
paidAt string

customer.created

Capability: crm.useprojects.manage

Field Type
customerId string
createdAt string

customer.updated

Capability: crm.useprojects.manage

Field Type
customerId string
updatedAt string

project.updated

Capability: projects.read

Field Type
projectId string
updatedAt string

member.updated

Capability: members.manage

Field Type
membershipId string
updatedAt string

shift.unpublished

Capability: scheduling.plan

Field Type
publishEventId string | null
planningUnitId string
periodFrom string
periodTo string
unpublishedCount integer
unpublishedAt string