Available Webhook Topics
Webhooks can be registered for the following topics:
Model | Topics | Trigger |
Order | order.created | When an order is successfully completed |
User | user.signup | Triggered when a new user signs up to your site |
user.signin | Triggered when a user signs into your site signs in by all the existing ways (regular sign in, LinkedIn sign in, express sign in, checkout sign in and sso) | |
user.updated | Triggered when a user's email, name, or role is changed | |
Enrollment | enrollment.trial | Triggered when a user enrolls for a trial in any course |
enrollment.created | Triggered when a full enrollment is created in any of your courses | |
enrollment.completed | Triggered when a enrollment reaches 100% progress completion | |
enrollment.progress | Triggered when a student progresses forward through a course (ie. when they complete lessons or a lesson is removed from a course and admin updates users's progress). Note: This event is similar to the lesson.completed event, but delivers a payload that includes the % progress in a course. |
|
Course | course.created | Triggered when a new course is created |
course.deleted | Triggered when a course is deleted | |
course.updated | Triggered when a course's name or settings are changed | |
Lesson | lesson.completed | Triggered when a student completes a lesson in their course |
Quiz | quiz.attempted | Triggered when a student answers the final question of a quiz |
App | app.uninstalled | Triggered when a user uninstalls an app (see here) |
Product | product.created | Triggered when a new product is created |
product.deleted | Triggered when a product is deleted | |
product.updated | Triggered when a product or its price is changed | |
Plan | plan.updated | Triggered when a tenant changes their subscription plan |
Example Payloads
Order Created
Payload
{
"id": "20180126172320940835610",
"resource": "order",
"action": "created",
"tenant_id": "3",
"created_at": "2018-01-26T22:23:20.808Z",
"payload": {
"affiliate_referral_code": null,
"amount_cents": 5000,
"amount_dollars": 50,
"billing_name": "Robert Smith",
"coupon": {
"id": 12345678,
"code": "discount123",
"promotion_id": 1234567
},
"created_at": "2018-01-26T22:23:18.400Z",
"id": 19796,
"order_number": 1010,
"payment_type": "one-time",
"product_id": 1,
"product_name": "Introduction to Webhooks",
"status": "Complete",
"items": [
{
"product_id": 1,
"product_name": "Introduction to Webhooks",
"amount_dollars": 50,
"amount_cents": 5000
}
],
"user": {
"email": "ninjas@thinkific.com",
"first_name": "Robert",
"id": 123456,
"last_name": "Smith"
}
}
}
User Signin
Payload
{
"id": "20180123154501518395902",
"resource": "user",
"action": "signin",
"tenant_id": "73394",
"created_at": "2018-01-23T20:45:00.314Z",
"payload": {
"administered_course_ids": null,
"affiliate_code": "e7c7eb",
"affiliate_commission": "15.00",
"affiliate_commission_type": "%",
"affiliate_payout_email": "user@thinkific.com",
"avatar_url": "https://s3.amazonaws.com/thinkific/profiles/002/121/9021516740299.thumb.?1516740299",
"bio": null,
"company": "",
"created_at": "2017-07-23T02:42:13.043Z",
"custom_profile_fields": [],
"email": "ninjas@thinkific.com",
"external_source": null,
"first_name": "Robert",
"headline": "Software Engineer",
"id": 123456,
"last_name": "Smith",
"roles": [
"affiliate"
]
}
}
User Signup
Payload
{
"id": "20180123170248040678392",
"resource": "user",
"action": "signup",
"tenant_id": "73394",
"created_at": "2018-01-23T22:02:45.001Z",
"payload": {
"administered_course_ids": null,
"affiliate_code": null,
"affiliate_commission": null,
"affiliate_commission_type": "%",
"affiliate_payout_email": null,
"avatar_url": null,
"bio": null,
"company": null,
"created_at": "2018-01-23T22:02:44.987Z",
"custom_profile_fields": [],
"email": "ninjas@thinkific.com",
"external_source": null,
"first_name": "Robert",
"headline": null,
"id": 123456,
"last_name": "Smith",
"roles": []
}
}
User Updated
Payload
{
"id": "01G2RB8T432BGTQ7J7S8JQJS3X",
"resource": "user",
"action": "updated",
"tenant_id": "73394",
"tenant_global_id": "507a2dd6-0c09-4452-b8cd-69c9adaf2a24",
"created_at": "2022-05-11T01:20:54.000Z",
"timestamp": 1652232054,
"payload": {
"id": 2017237,
"first_name": "John",
"last_name": "Doo",
"email": "john@doo.com",
"roles": [],
"site": {
"id": "507a2dd6-0c09-4452-b8cd-69c9adaf2a24"
}
}
}
Enrollment Created
Payload
{
"id": "20180126171756020665195",
"resource": "enrollment",
"action": "created",
"tenant_id": "3",
"created_at": "2018-01-26T22:17:01.924Z",
"payload": {
"activated_at": "2018-01-26T22:16:52.255Z",
"completed_at": null,
"course": {
"id": 4,
"name": "Introduction to Webhooks"
},
"course_id": 4,
"created_at": "2018-01-26T22:16:52.285Z",
"expiry_date": null,
"free_trial": false,
"id": 97472,
"percentage_completed": "0.0",
"started_at": "2018-01-26T22:17:01.891Z",
"updated_at": "2018-01-26T22:17:01.924Z",
"user": {
"email": "ninjas@thinkific.com",
"first_name": "Robert",
"id": 123456,
"last_name": "Smith"
}
}
}
Enrollment Trial
Payload
{
"id": "20180116184610563698247",
"resource": "enrollment",
"action": "trial",
"tenant_id": "1008",
"created_at": "2018-01-16T23:45:06.466Z",
"payload": {
"activated_at": null,
"completed_at": null,
"course": {
"id": 2692,
"name": "Introduction to Webhooks"
},
"course_id": 2692,
"created_at": "2018-01-16T23:45:03.227Z",
"expiry_date": null,
"free_trial": true,
"id": 97197,
"percentage_completed": "0.0",
"started_at": "2018-01-16T23:45:06.436Z",
"updated_at": "2018-01-16T23:45:06.466Z",
"user": {
"email": "ninjas@thinkific.com",
"first_name": "Robert",
"id": 123456,
"last_name": "Smith"
}
}
}
Enrollment Completed
Payload
{
"id": "20180126171947527620204",
"resource": "enrollment",
"action": "completed",
"tenant_id": "3",
"tenant_global_id": "09b66093-fc51-409d-af42-4c40d5a0f529",
"created_at": "2018-01-26T22:19:47.432Z",
"payload": {
"activated_at": "2018-01-26T22:19:26.972Z",
"completed_at": "2018-01-26T22:19:47.308Z",
"course": {
"id": 3891,
"name": "Introduction to Webhooks"
},
"course_id": 3891,
"created_at": "2018-01-26T22:19:26.995Z",
"expiry_date": null,
"free_trial": false,
"id": 97473,
"percentage_completed": "1.0",
"started_at": "2018-01-26T22:19:29.025Z",
"updated_at": "2018-01-26T22:19:47.432Z",
"user": {
"email": "ninjas@thinkific.com",
"first_name": "Robert",
"id": 123456,
"last_name": "Smith"
}
}
}
Enrollment Progress
Payload
{
"id": "20180118171806111886309",
"resource": "enrollment",
"action": "progress",
"tenant_id": "987",
"created_at": "2018-01-18T22:18:05.984Z",
"payload": {
"activated_at": "2018-01-18T22:17:52.380Z",
"completed_at": null,
"course": {
"id": 3035,
"name": "Introduction to Webhooks"
},
"course_id": 3035,
"created_at": "2018-01-18T22:17:52.459Z",
"expiry_date": null,
"free_trial": false,
"id": 97254,
"last_percentage_completed": "0.0",
"percentage_completed": "0.333333333333333",
"started_at": "2018-01-18T22:17:58.569Z",
"updated_at": "2018-01-18T22:18:05.984Z",
"user": {
"email": "ninjas@thinkific.com",
"first_name": "Robert",
"id": 123456,
"last_name": "Smith"
}
}
}
Course Created
Note: This event can only be created using the Webhooks API
Payload
{
"id": "01EJ79N9456763TEVEAKD2YWWC",
"resource": "course",
"action": "created",
"tenant_id": "12345",
"tenant_global_id": "e266fqp6-6789-41cd-a283-544f123233ff",
"created_at": "2020-09-14T21:52:13.000Z",
"timestamp": 1600120333,
"payload": {
"id": 909850,
"name": "New Webhooks Course",
"slug": "new-webhooks-course",
"subtitle": null,
"description": null,
"contact_information": null,
"keywords": null,
"duration": null,
"banner_image_url": null,
"course_card_image_url": "/assets/defaults/default-product-card.png",
"course_card_text": null,
"created_at": "2020-09-14T21:52:13.530Z",
"updated_at": "2020-09-14T21:52:13.530Z",
"product": {
"id": 234567
},
"instructor": {
"id": 890789,
"first_name": "John",
"last_name": "Donald",
"title": ""
}
}
}
Course Deleted
Note: This event can only be created using the Webhooks API
Payload
{
"id": "01EJ795432A1HNPQFCH5Y4G0TSR",
"resource": "course",
"action": "deleted",
"tenant_id": "12345",
"tenant_global_id": "e266fqp6-6789-41cd-a283-544f123233ff",
"created_at": "2020-09-14T21:55:26.000Z",
"timestamp": 1600120526,
"payload": {
"id": 909850,
"name": "New Webhooks Course",
"slug": "the-webhooks-course",
"subtitle": null,
"description": null,
"contact_information": null,
"keywords": null,
"duration": null,
"banner_image_url": null,
"course_card_image_url": "/assets/defaults/default-product-card.png",
"course_card_text": null,
"created_at": "2020-09-14T21:52:13.530Z",
"updated_at": "2020-09-14T21:54:55.275Z",
"product": {
"id": 234567
},
"instructor": {
"id": 890789,
"first_name": "John",
"last_name": "Donald",
"title": ""
}
}
}
Course Updated
Note: This event can only be created using the Webhooks API. This event does not include changes related to course pricing.
Payload
{
"id": "0111237A8R3468VNZGAG62PQO",
"resource": "course",
"action": "updated",
"tenant_id": "12345",
"tenant_global_id": "e266fqp6-6789-41cd-a283-544f123233ff",
"created_at": "2020-09-14T21:54:55.000Z",
"timestamp": 1600120495,
"payload": {
"id": 909850,
"name": "New Webhooks Course",
"slug": "the-webhooks-course",
"subtitle": null,
"description": null,
"contact_information": null,
"keywords": null,
"duration": null,
"banner_image_url": null,
"course_card_image_url": "/assets/defaults/default-product-card.png",
"course_card_text": null,
"created_at": "2020-09-14T21:52:13.530Z",
"updated_at": "2020-09-14T21:54:55.275Z",
"product": {
"id": 234567
},
"instructor": {
"id": 890789,
"first_name": "John",
"last_name": "Donald",
"title": ""
}
}
}
Lesson Completed
The Lesson Completed Webhook events will fire whenever a lesson is completed in Thinkific, however the lesson types available in Thinkific have different rules that guide when that lesson may be completed. The following is a guide for the different lesson types available:
Video Lessons
Video Lessons are completed in one of two ways: (a) Automatically upon the successful playthrough of the video in the lesson (b) When the student manually selects the "Complete Lesson" button. (Some course creators will use custom CSS classes to remove this button entirely so only the first case may apply).
Text, Audio, PDF, Multimedia, Download, & Presentation Lessons
In all of the following lessons, Thinkific relies on the completion of the lesson to be done by the Students using the "Complete Lesson" button. The event fires when the student presses this button in the UI.
Survey Lessons
Survey Lessons are completed upon the completion of the survey in full by the Student. Once they have completed their answers and submitted the survey the Lesson Completion event will fire.
Quiz Lessons
Quiz Lessons are completed depending on the configuration the Course Creator sets for the Quiz in question. If the Course Creator has defined a minimum grade for the Quiz, the lesson is only completed once this passing grade is achieved by the student. A failure to achieve this grade will not fire a lesson completion event and require the student to retake the quiz. If no passing grade is defined, the Quiz Lesson Completed Event will fire on any completion of the quiz, regardless of final grade.
Note: This event does not send any data that is unique to just one lesson type. For example - The grade of a quiz is not currently available because it does not relevant to the other lesson types available.
Assignment Lessons
Assignment lessons are unique in Thinkific because they are completed by the Instructor, not by the student. In an Assignment lesson, the student completes their portion of the work by submitting an assignment to the instructor. The Lesson is completed only once the Instructor reviews the assignment submission and approves the work. If the Instructor reviews and rejects the student's assignment, the lesson will not be completed and will be sent back to the student to review and resubmit.
Exam (Brillium) Lessons
Exam Lessons refer to our integration with Brillium. Because this is an external integration, the definition of a successful exam completion is defined in the Brillium system. When a student reaches an Exam Lesson in their learning they are directed to Brilliums exam tool and a Lesson Completion is only sent back to Thinkific
Payload
{
"id": "20191029145629636106318",
"resource": "lesson",
"action": "completed",
"tenant_id": "12345",
"tenant_global_id": "feb8d00d-8040-4382-afee-491a6c8013af",
"created_at": "2019-10-29T18:56:29.474Z",
"payload": {
"chapter": {
"id": 123,
"name": "Chapter 1"
},
"course": {
"id": 123,
"name": "Introduction to Webhooks"
},
"enrollment": {
"id": 1084282
},
"lesson": {
"id": 24220,
"name": "Getting started with Webhooks",
"position": 0,
"type": "Video"
},
"user": {
"email": "ninjas@thinkific.com",
"first_name": "Robert",
"id": 123456,
"last_name": "Smith"
}
}
}
Quiz Attempted
Payload
{
"id": "20191029145629636106318",
"resource": "quiz",
"action": "attempted",
"tenant_id": "12345",
"tenant_global_id": "zd29cd8r-l18e-4288-adce-5f999c27e00a",
"created_at": "2019-08-27T21:02:50.000Z",
"timestamp": 1598562170,
"payload": {
"attempts": 2,
"correct_count": 1,
"grade": 20,
"incorrect_count": 4,
"result_id": 12511,
"user": {
"id": 124567,
"first_name": "Sam",
"last_name": "Davis",
"email": "sammy@thinkific.com"
},
"quiz": {
"id": 43811,
"name": "Webhook Quiz"
}
}
}
App Uninstalled
Payload
{
"id": "01EWG55HHGG8BA3E2PGMPRH04E",
"resource": "app",
"action": "uninstalled",
"created_at": "2021-01-20T15:02:50.000Z",
"payload": {
"site": {
"id": "zd29cd8r-l18e-4288-adce-5f999c27e00a",
"subdomain": "connecting-the-dots"
}
}
}
Product Created
Payload
{
"id": "01G2Z97HB88R49AXA13MS25C6J",
"resource": "product",
"action": "updated",
"tenant_id": "3147",
"tenant_global_id": "e46fad25-02e3-4539-a989-bab075b09f12",
"created_at": "2022-05-13T17:59:57.000Z",
"timestamp": 1652464797,
"payload": {
"id": 12938,
"productable_id": 650,
"productable_type": "Bundle",
"status": "published",
"name": "API Bundle of Joy",
"private": false,
"hidden": false,
"slug": "my-bundle",
"card_image_url": "https://import.cdn.thinkific-staging.com/3147/xfaPbIi8TXKwynWCNfLg_Neymar-665.png",
"created_at": "2019-09-18T23:09:11.438Z",
"updated_at": "2022-05-13T17:59:25.753Z",
"product_prices": [
{
"id": 14020,
"is_primary": true,
"payment_type": "one-time",
"label": null,
"price": "99.99",
"days_until_expiry": null,
"pay_button_text": null,
"number_of_payments": null,
"interval": null,
"interval_count": null,
"trial_interval": null,
"trial_interval_count": null
}
],
"description": "This is a bundle with great courses about APIs, come and learn more about it!",
"site": {
"id": "e46fad25-02e3-4539-a989-bab075b09f12"
}
}
}
Product Deleted
Payload
{
"id": "01FWRQ2HCQ05N62BTRMPZGH29F",
"resource": "product",
"action": "deleted",
"created_at": "2022-02-25T15:13:01.000Z",
"timestamp": 1645801981,
"payload": {
"site": {
"id": "3088d468-983d-4fe4-8bc2-b98a6d2d78a8"
},
"id": 28570,
"productable_id": 27309,
"productable_type": "Course"
}
}
Product Updated
Payload
{
"id": "01G2Z97HB88R49AXA13MS25C6J",
"resource": "product",
"action": "updated",
"tenant_id": "3147",
"tenant_global_id": "e46fad25-02e3-4539-a989-bab075b09f12",
"created_at": "2022-05-13T17:59:57.000Z",
"timestamp": 1652464797,
"payload": {
"id": 12938,
"productable_id": 650,
"productable_type": "Bundle",
"status": "published",
"name": "API Bundle of Joy",
"private": false,
"hidden": false,
"slug": "my-bundle",
"card_image_url": "https://import.cdn.thinkific-staging.com/3147/xfaPbIi8TXKwynWCNfLg_Neymar-665.png",
"created_at": "2019-09-18T23:09:11.438Z",
"updated_at": "2022-05-13T17:59:25.753Z",
"product_prices": [
{
"id": 14020,
"is_primary": true,
"payment_type": "one-time",
"label": null,
"price": "99.99",
"days_until_expiry": null,
"pay_button_text": null,
"number_of_payments": null,
"interval": null,
"interval_count": null,
"trial_interval": null,
"trial_interval_count": null
}
],
"description": "This is a bundle with great courses about APIs, come and learn more about it!",
"site": {
"id": "e46fad25-02e3-4539-a989-bab075b09f12"
}
}
}
Plan Updated
Payload
{
"id": "01GAPP19FN58RB4YKCYPZCEQGG",
"resource": "plan",
"action": "updated",
"tenant_id": "12345",
"tenant_global_id": "d317931e-6b96-4756-a181-18b692aef014",
"created_at": "2022-08-30T19:56:08.000Z",
"timestamp": 1660766168,
"payload": {
"site": {
"id": "d317931e-6b96-4756-a181-18b692aef014",
"plan": "premier",
"features": [
{
"product_payees": {
"enabled": true,
"max_product_payees": "50"
}
},
{
"course_admins": {
"enabled": true,
"max_course_admins": "50"
}
},
{
"site_admins": {
"enabled": true,
"max_site_admins": "5"
}
},
{
"courses": {
"enabled": true,
"max_published_courses": "99999999"
}
},
{
"group_analysts": {
"enabled": true,
"max_group_analysts": "15"
}
},
{
"groups": {
"enabled": true,
"max_users_per_group": "99999999"
}
},
{
"bundles": {
"enabled": true
}
},
{
"coupons": {
"enabled": true
}
}
]
}
}
}