Webhooks

training.enrollment.created

A user was enrolled in a training campaign — by schedule, by joining the campaign's audience, by a triggered rule (e.g. phishing failure remediation), or manually by an admin. Fires once per enrollment episode; re-enrollment fires again.

Subscription filters

  • campaign — filter to specific campaign ids
postWebhooktraining.enrollment.created

Payload

datacontenttypestring

media type of data

idstring

unique id for event

sourcestring

the event source; always /adaptive

specversionstring

CloudEvents spec version

subjectstring

reserved for the event's primary entity id; currently never set, so always omitted

timestring date-time

when the event occurred

type'training.enrollment.created'

the event type

Example payload

{
  "data": {
    "payload": {
      "campaign": {
        "id": "6c1d9a4e-2f7b-4d3a-9e8c-5b0a7f2d1c43",
        "name": "Q3 Security Essentials"
      },
      "due_date": "2026-07-01T00:00:00Z",
      "late_completions_allowed": true,
      "user": {
        "email": "jordan.lee@example.com",
        "id": "8d2c1f6a-9b3e-4c7a-bf21-2a5e9c1d4b88"
      }
    }
  },
  "datacontenttype": "application/json",
  "id": "9b2f6c1e-8d3a-4f0b-a1c2-5e7d9f3b6a48",
  "source": "/adaptive",
  "specversion": "1.0",
  "time": "2026-06-09T18:00:00Z",
  "type": "training.enrollment.created"
}

Response

Return any 2xx status to acknowledge the delivery. Timeouts, 408, 429, and 5xx responses other than 501 are retried; any other status is a permanent failure.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.