Overview
This webhook sends notifications when User accounts of type Learner or Participant are created or updated.
It does not support other user types (e.g. Admin, Employer).
The payload for a User webhook mirrors the payload of a GetUserById API response:
id
status
jobActiveSync
username
firstName
lastName
email
phone
caseOwnerId
caseOwnerFirstName
caseOwnerLastName
referenceNumber
groupId
dateOfBirth
postCode
address1
address2
townCity
countyState
programmeId
programmeStartDate
programmeEndDate
employerId
employerAddressId
mentorId
IAEnglish
IAMath
IAICT
diagEnglish
diagMath
diagIct
managerFirstName
managerLastName
managerEmail
managerPhone
title
preferredName
gender
personalEmail
authenticationType
authType
idP
samlUserId
recognisedPriorLearningHours
plannedHours
weeklyHours
nationalInsuranceNumber
programmeStatus
country
landline
managerId
learningProviderId
AND event (“update” or “create”)
Create event
For the Create event type, the webhook is sent once a new learner is created in the tenant.
Note: A Create webhook is typically followed by an Update webhook. This is because some user properties (e.g. address, group, programme) are only assigned after the learner is created.
Payload
The payload for Create event type includes “event”:”create” field.
Example:
{
"id": 5060,
"status": "Prospect",
"jobActiveSync": false,
"username": "",
"firstName": "Patricia",
"lastName": "Holland",
"email": "",
"phone": null,
"caseOwnerId": 0,
"caseOwnerFirstName": null,
"caseOwnerLastName": null,
"referenceNumber": null,
"groupId": 0,
"dateOfBirth": "",
"postCode": null,
"address1": null,
"address2": null,
"townCity": null,
"countyState": null,
"programmeId": null,
"programmeStartDate": null,
"programmeEndDate": null,
"employerId": null,
"employerAddressId": null,
"mentorId": null,
"IAEnglish": null,
"IAMath": null,
"IAICT": null,
"diagEnglish": null,
"diagMath": null,
"diagIct": null,
"managerFirstName": null,
"managerLastName": null,
"managerEmail": null,
"managerPhone": null,
"title": null,
"preferredName": null,
"gender": null,
"personalEmail": null,
"authenticationType": "Aptem",
"authType": "Aptem",
"idP": null,
"samlUserId": null,
"recognisedPriorLearningHours": null,
"plannedHours": null,
"weeklyHours": null,
"nationalInsuranceNumber": null,
"programmeStatus": null,
"country": null,
"landline": null,
"managerId": null,
"learningProviderId": null,
"event": "create"
}
Update event
For the Update event type, the webhook is triggered when specific user fields are updated.
The webhook is sent when changes occur to key fields, including:
id
firstName
lastName
username
title
preferredName
gender
email
personalEmail
dateOfBirth
postCode
address1
address2
townCity
countyState
phone (Mobile phone number)
status (Subscription status)
caseOwnerId
referenceNumber
groupId
employerId
managerId
employerAddressId
authenticationType
idP (‘SAML Identity provider’ field from the Edit User screen)
programmeId (including scenario where a learner is moved to an account programme)
programmeStartDate
programmeEndDate
Notes
- Due to the API returning only a single groupId, changes to group assignments across multiple hierarchies may not always trigger a webhook. A webhook is only sent when the groupId value itself changes in the API response.
-
Updates to the following fields alone will not trigger a webhook:
- Country
- Programme Status
- Landline
- CaseOwnerFirstName
- CaseOwnerLastName
- NationalInsuranceNumber
- ManagerFirstName
- ManagerLastName
- ManagerEmail
- ManagerPhone
- MentorId
- LearningProviderId
- authType
- samlUserId
- recognisedPriorLearningHours
- plannedHours
- weeklyHours
- IAEnglish
- IAMath
- IAICT
- diagEnglish
- diagMath
- diagIct
- jobActiveSync
Payload
The payload for update event type includes “event”:”update” field.
Example:
{
"id": 1000,
"status": "Full access",
"jobActiveSync": false,
"username": "exampleuser",
"firstName": "Jane",
"lastName": "Smith",
"email": "jane.smith@example.com",
"phone": "+44700000000",
"caseOwnerId": 1001,
"caseOwnerFirstName": "John",
"caseOwnerLastName": "Doe",
"referenceNumber": null,
"groupId": 1,
"dateOfBirth": "2000-01-01",
"postCode": "EX1 1AA",
"address1": "1 Example Street",
"address2": "Example Area",
"townCity": "Example Town",
"countyState": "Example County",
"programmeId": 1000,
"programmeStartDate": "2026-01-01",
"programmeEndDate": "2027-01-01",
"employerId": 1,
"employerAddressId": 1,
"mentorId": 1000,
"IAEnglish": 6,
"IAMath": null,
"IAICT": null,
"diagEnglish": null,
"diagMath": null,
"diagIct": null,
"managerFirstName": "Example",
"managerLastName": "Manager",
"managerEmail": "manager@example.com",
"managerPhone": null,
"title": "Mrs",
"preferredName": "Jane",
"gender": "Female",
"personalEmail": "jane.personal@example.com",
"authenticationType": "Aptem",
"authType": "Aptem",
"idP": null,
"samlUserId": null,
"recognisedPriorLearningHours": null,
"plannedHours": 125,
"weeklyHours": 30,
"nationalInsuranceNumber": "AA000000A",
"programmeStatus": "Active",
"country": "United Kingdom",
"landline": "+44000000000",
"managerId": 1000,
"learningProviderId": 1,
"event": "update"
}
Delete event
The Delete event type is not supported.
Duplicated webhooks
You may occasionally receive multiple webhooks for the same learner in quick succession. This happens because updates are processed in stages within the system.
For example, when moving a learner to an account programme:
- One webhook may be sent when programmeId is updated to the new value
- A second webhook may follow when programmeId is updated again (e.g. set to null)
Each change will be reflected in the payload.