Webhooks
Event Catalogue Every webhook event type, when it fires, and what data it carries.
Every envelope is { id, type, created_at, institution_id, data }. GET /v1/events/types returns this catalogue with a sample payload per type; the portal shows the same under Developers → Deliveries .
Type When datastudent.createdStudent provisioned (API, portal or batch) user_id, email, user_type, student_id, sourcestudent.email_mappedPersonal email linked user_id, generated_email, student_id, full_namestudent.updatedStatus or profile changed via API user_id, changes[], status?faculty.createdFaculty provisioned user_id, email, user_type, faculty_idfaculty.profile_completedTeacher finished first-login profile user_id, email, employee_id, department, positionguardian.invitedGuardian link created student_id, guardian_type, guardian_nameguardian.verifiedGuardian signed in for the first time student_id, guardian_type
Type When datalicense.generatedLicense issued license_id, license_type, user_id, email, expires_at, is_lifetime, max_activationslicense.expiredPassed expiry license_id, user_id, expires_atlicense.device_registeredNew device seat user_id, app_id, device_name, platform, app_version, kicked
Type When dataexam.publishedExam visible to students exam_id, title, exam_type, app, faculty_id, due_dateexam.assignedExam assigned to a group exam_id, group_id, assigned_byexam.attempt_startedStudent opened the exam attempt_id, exam_id, student_id, started_at, expires_atexam.submittedSubmission (each version) submission_id, exam_id, student_id, is_late, submitted_at, version, appexam.gradedGraded or resubmission requested submission_id, exam_id, student_id, score, max_score, percentage, resubmission_required, graded_by
Type When datamerits.creditedWallet credit from any source email, user_id, amount_cents, reason, balance_after_centscoupon.batch_requestedBatch filed for approval batch_id, count, value_cents, requested_bycoupon.batch_approvedGrout approved it batch_id, approved_bycoupon.redeemedCode redeemed by your user coupon_id, user_email, value_cents
Type When dataalpha.points_awardedPoints ledger entry student_id, reason, points, ref_type, ref_id, notealpha.badge_grantedBadge earned student_id, badge, title
Type When pingTest event from the portal or POST /webhooks/endpoints/{id}/test
Subscriptions accept *, <category>.* (e.g. exam.*) or exact types. Events are deduplicated server-side on (type, ref), so re-running an import does not re-fire student.created for the same email.
© 2026 Grout · Neural Nest Technologies llms.txt AGENTS.md SKILLS.md