Skip to main content

Turn on webhooks

This article shows how to turn on webhooks on your platform to connect it with other services. It is for the platform admin.

What are webhooks?​

Webhooks are an advanced feature that sends the events that happen on your platform to a link you choose. This lets you connect your platform with other services, such as automation tools or outside systems.

How to set up webhooks​

Note

Webhooks are available on the Growth and Pro website plans, and during the free trial. On other plans, you see a message asking you to upgrade your plan.

  1. Sign in to your platform with an admin account.

    The sign-in button on the home page

  2. From the side menu, go to Settings and choose Integrations.

    The Settings menu and the Integrations page in the side menu

  3. On the Integrations page, choose Webhooks.

    The Webhooks card on the Integrations page

  4. A side panel opens where you set up Webhooks.

    The side panel for setting up webhooks

Add a new webhook​

  1. In the Webhook url field, enter the link that will receive the data, for example https://example.com/webhook.

  2. Choose the Events you want to track:

    • submission.created: a POST request is sent when a student submits a new assignment.
    • ticket.created: a POST request is sent when a new support ticket is created.
    • student.created: a POST request is sent when a new student enrolls in a course.
    • payment.completed: a POST request is sent when a student completes a payment for a course, book, consultation, or diploma.

    The webhook link and the chosen events

  3. Turn on Active.

  4. Click Add Endpoint. An HMAC key appears for you to use.

    The added webhook endpoint with its HMAC key

Event examples​

student.created​

{
"event": "student.created",
"timestamp": "2026-03-30T12:00:00Z",
"data": {
"id": 42,
"user": {
"id": 10,
"name": "Ahmed Ali",
"email": "ahmed@example.com"
},
"cohort": {
"id": 3,
"name": "Cohort 2026"
},
"course": {
"id": 5,
"name": "Web Development"
},
"team": {
"id": 7,
"name": "Team Alpha"
},
"tags": ["scholarship", "part-time"],
"created_at": "2026-03-30T12:00:00.000Z"
}
}

submission.created​

{
"event": "submission.created",
"timestamp": "2026-03-30T12:00:00Z",
"data": {
"id": 101,
"course": {
"id": 5,
"name": "Web Development"
},
"students": [42, 43],
"created_at": "2026-03-30T12:00:00.000Z",
"updated_at": "2026-03-30T12:00:00.000Z",
"target_id": 20,
"checklist": [
{
"kind": "longText",
"title": "Describe your approach",
"result": "I used a modular architecture...",
"status": "noAnswer"
}
],
"level_number": 2,
"target": {
"id": 20,
"title": "Build a REST API",
"evaluation_criteria": [
{
"id": 1,
"name": "Code Quality",
"max_grade": 4,
"grade_labels": ["Bad", "Okay", "Good", "Excellent"]
}
]
},
"files": [
{
"filename": "solution.zip",
"content_type": "application/zip",
"byte_size": 204800,
"checksum": "abc123def456...",
"url": "https://www.example.com/rails/active_storage/blobs/..."
}
],
"evaluator": "Dr. Sarah",
"evaluated_at": "2026-03-30T14:00:00.000Z",
"grades": {
"1": 3
}
}
}

ticket.created​

{
"event": "ticket.created",
"timestamp": "2026-03-30T12:00:00Z",
"data": {
"id": 55,
"title": "Cannot access course materials",
"description": "I'm getting a 403 error when trying to view lessons",
"status": "open",
"user": {
"id": 10,
"name": "Ahmed Ali",
"email": "ahmed@example.com"
},
"created_at": "2026-03-30T12:00:00.000Z"
}
}

payment.completed​

{
"event": "payment.completed",
"data": {
"id": 1234,
"user": {
"id": 567,
"name": "Ahmed",
"email": "ahmed@example.com"
},
"product": {
"id": 89,
"type": "Course",
"name": "Introduction to Web Development"
},
"price": 299.99,
"gateway": "ZamnPay",
"payment_method": "VISA/MASTER",
"end_at": null,
"subscription": null,
"created_at": "2026-04-05T14:30:00.000Z"
}
}

payment.completed for a recurring subscription payment​

{
"event": "payment.completed",
"data": {
"id": 1235,
"user": {
"id": 567,
"name": "Ahmed",
"email": "ahmed@example.com"
},
"product": {
"id": 12,
"type": "Consultation",
"name": "Consultation Name"
},
"price": 150.0,
"gateway": "ZamnPay",
"payment_method": "MADA",
"end_at": "2026-05-05T23:59:59.999Z",
"subscription": {
"id": 42,
"status": "active"
},
"created_at": "2026-04-05T14:45:00.000Z"
}
}