Skip to main content

Webhook Hooks

Use these hooks to observe events that feed MentorKit webhook delivery and to filter the generated webhook payload envelope.

Only custom MentorKit hooks from docs-lms/hook-metadata.json are documented here. Classic WordPress, WooCommerce, Polylang, Astra, and other external hooks are intentionally excluded.

Documented hooks: 8.

Documented Hooks

HookTypeStatus
scorm_certificate_awardedActionPublic
scorm_course_retake_startedActionPublic
scorm_enrollment_createdActionPublic
scorm_group_certificate_awardedActionPublic
scorm_group_completedActionPublic
scorm_group_retake_startedActionPublic
scorm_player_course_status_transitionActionPublic
scorm_player_webhook_payloadFilterPublic

scorm_certificate_awarded

Type: Action Category: Webhook Source: includes/certificates/cpt-registration.php:2596 Status: Public

When It Runs

Fires when certificate awarded. The source call is inside scorm_player_award_certificate(). Source context: Award a certificate to a user.

Parameters

Callback parameterSource valueNotes
$user_id$user_idAdditional context passed by the hook.
$course_id$course_idAdditional context passed by the hook.
$certificate_id$certificate_idAdditional context passed by the hook.
$certificate_data$certificate_dataAdditional context passed by the hook.

Example

add_action(
'scorm_certificate_awarded',
function ( $user_id, $course_id, $certificate_id, $certificate_data ) {
// Add your integration logic here.
},
10,
4
);

Notes

  • MentorKit also registers internal callbacks for this hook. Keep custom callbacks narrowly scoped.

scorm_course_retake_started

Type: Action Category: Webhook Source: includes/utils/tracking.php:485 Status: Public

When It Runs

Fires when course retake started. The source call is inside scorm_player_reset_course_attempt(). Source context: Reset a user's SCORM attempt for a course, preparing for a retake.

Parameters

Callback parameterSource valueNotes
$user_id$user_idAdditional context passed by the hook.
$course_id$course_idAdditional context passed by the hook.

Example

add_action(
'scorm_course_retake_started',
function ( $user_id, $course_id ) {
// Add your integration logic here.
},
10,
2
);

Notes

  • MentorKit also registers internal callbacks for this hook. Keep custom callbacks narrowly scoped.

scorm_enrollment_created

Type: Action Category: Webhook Source: includes/admin/course-enrollments.php:154, includes/frontend/group-handlers.php:562, includes/woocommerce/woocommerce-integration.php:415, includes/woocommerce/woocommerce-integration.php:474 Status: Public

When It Runs

Fires when enrollment created. The source call is inside scorm_player_ajax_enrollments_enroll_user(). Source context: AJAX: Enroll a user in a course or group. This hook appears in 4 source locations.

Parameters

This hook is called from multiple source locations with different source signatures.

SourceCallback parameters
includes/admin/course-enrollments.php:154$user_id from $user_id
$object_type from 'course'
$post_id from $post_id
$source from 'admin'
$context from array()
includes/frontend/group-handlers.php:562$user_id from $user_id
$object_type from 'group'
$group_id from $group_id
$source from $source
$context from is_array($context) ? $context : array()
includes/woocommerce/woocommerce-integration.php:415$customer_id from $customer_id
$object_type from 'group'
$group_id from $group_id
$source from 'woocommerce'
$context from array('order_id' => (int) $order_id, 'product_id' => (int) $product->get_id(),)
includes/woocommerce/woocommerce-integration.php:474$customer_id from $customer_id
$object_type from 'course'
$course_id from $course->ID
$source from 'woocommerce'
$context from array('order_id' => (int) $order_id, 'product_id' => (int) $product->get_id(),)

Example

add_action(
'scorm_enrollment_created',
function ( $user_id, $object_type, $post_id, $source, $context ) {
// Add your integration logic here.
},
10,
5
);

Notes

  • Because the source signatures differ, write callbacks defensively when attaching the same callback across all contexts.
  • MentorKit also registers internal callbacks for this hook. Keep custom callbacks narrowly scoped.
  • Parameter names vary between call sites.

scorm_group_certificate_awarded

Type: Action Category: Webhook Source: includes/utils/tracking.php:995 Status: Public

When It Runs

Fires when group certificate awarded. The source call is inside scorm_player_award_group_certificate(). Source context: Award a group certificate to a user.

Parameters

Callback parameterSource valueNotes
$user_id$user_idAdditional context passed by the hook.
$group_id$group_idAdditional context passed by the hook.
$certificate_id$certificate_idAdditional context passed by the hook.
$certificate_data$certificate_dataAdditional context passed by the hook.

Example

add_action(
'scorm_group_certificate_awarded',
function ( $user_id, $group_id, $certificate_id, $certificate_data ) {
// Add your integration logic here.
},
10,
4
);

Notes

  • MentorKit also registers internal callbacks for this hook. Keep custom callbacks narrowly scoped.

scorm_group_completed

Type: Action Category: Webhook Source: includes/utils/tracking.php:826 Status: Public

When It Runs

Fires when group completed. The source call is inside scorm_player_recalculate_group_progress(). Source context: Recalculate group progress based on current course statuses.

Parameters

Callback parameterSource valueNotes
$user_id$user_idAdditional context passed by the hook.
$group_id$group_idAdditional context passed by the hook.
$completion_dataarray('total_courses' => $total_courses, 'completed_courses' => $completed_courses, 'in_progress_courses' => $in_progress_courses, 'progress_percentage' => $progress_percentage, 'status' => $group_status, 'completed_at' => $completed_at,)Additional context passed by the hook.

Example

add_action(
'scorm_group_completed',
function ( $user_id, $group_id, $completion_data ) {
// Add your integration logic here.
},
10,
3
);

Notes

  • MentorKit also registers internal callbacks for this hook. Keep custom callbacks narrowly scoped.

scorm_group_retake_started

Type: Action Category: Webhook Source: includes/utils/tracking.php:547 Status: Public

When It Runs

Fires when group retake started. The source call is inside scorm_player_reset_group_attempts(). Source context: Reset all course attempts inside a group and clear group tracking.

Parameters

Callback parameterSource valueNotes
$user_id$user_idAdditional context passed by the hook.
$group_id$group_idAdditional context passed by the hook.
$selected_courses$selected_coursesAdditional context passed by the hook.

Example

add_action(
'scorm_group_retake_started',
function ( $user_id, $group_id, $selected_courses ) {
// Add your integration logic here.
},
10,
3
);

Notes

  • MentorKit also registers internal callbacks for this hook. Keep custom callbacks narrowly scoped.

scorm_player_course_status_transition

Type: Action Category: Webhook Source: includes/utils/tracking.php:285 Status: Public

When It Runs

Fires for course status transition. The source call is inside scorm_player_update_scorm_status(). Source context: Updates the SCORM status for a user and package, respecting the status hierarchy.

Parameters

Callback parameterSource valueNotes
$user_id$user_idAdditional context passed by the hook.
$scorm_id$scorm_idAdditional context passed by the hook.
$current_status$current_statusAdditional context passed by the hook.
$new_status$new_statusAdditional context passed by the hook.
$score$scoreAdditional context passed by the hook.

Example

add_action(
'scorm_player_course_status_transition',
function ( $user_id, $scorm_id, $current_status, $new_status, $score ) {
// Add your integration logic here.
},
10,
5
);

Notes

  • MentorKit also registers internal callbacks for this hook. Keep custom callbacks narrowly scoped.

scorm_player_webhook_payload

Type: Filter Category: Webhook Source: includes/webhooks/webhook-functions.php:256 Status: Public

When It Runs

Filters webhook payload. The source call is inside scorm_player_webhooks_build_event_payload(). Source context: Build the common webhook event envelope.

Parameters

Callback parameterSource valueNotes
$payload$payloadValue passed through the filter. Source default: $payload.
$event_type$event_typeAdditional context passed by the hook.
$data$dataAdditional context passed by the hook.

Return Value

Return the filtered $payload value. Source default: $payload. If you do not need to change it, return the original value unchanged.

Example

add_filter(
'scorm_player_webhook_payload',
function ( $payload, $event_type, $data ) {
return $payload;
},
10,
3
);

Notes

  • Keep callbacks small and scoped to the source context shown above.