attempt.submitted
EVENT attempt.submitted
An attempt is handed in
Trigger
The examinee submits, the timer runs out, an invigilator hands the attempt in, or the auto-close sweep submits it. An attempt abandoned without being handed in sends nothing.
Payload fields
| Field | Type | Meaning |
|---|---|---|
attempt_id |
integer |
The attempt. Fetch it with GET /attempts/{id}. |
exam_id |
integer |
|
exam_title |
string |
|
user_id |
integer|null |
Null for a guest. |
guest_email |
string|null |
|
examinee_name |
string |
|
attempt_number |
integer |
|
status |
string |
submitted while a question waits for a person to grade it, graded when final. |
passed |
boolean |
Meaningful only once is_graded is true. |
is_graded |
boolean |
|
score |
number|null |
|
max_score |
number|null |
|
percent |
number|null |
|
submitted |
string|null |
UTC, as YYYY-MM-DD HH:MM:SS. |
result_url |
string |
The examinee's result page. |
Payload
{
"event": "attempt.submitted",
"timestamp": "2026-10-18T12:51:30+00:00",
"site": "https://your-site.example",
"data": {
"attempt_id": 263,
"exam_id": 7,
"exam_title": "Safety induction",
"user_id": 412,
"guest_email": null,
"examinee_name": "Dana Kovacs",
"attempt_number": 1,
"status": "submitted",
"passed": false,
"is_graded": false,
"score": null,
"max_score": 20,
"percent": null,
"submitted": "2026-10-18 12:51:30",
"result_url": "https://your-site.example/exams/result/263"
}
}
See also
- Webhook events — envelope, signing and delivery