How to Enforce Mandatory Seat-Time & Per-Question Analytics (cmi.interactions) in SCORM Courses
Need to prevent learners from clicking "Next → Next → Finish" in 10 seconds? Here is how to enforce per-slide countdown locks, track total session time, and log granular question responses in SCORM 1.2 and 2004.
- Compliance regulators (OSHA, HIPAA, Financial Services) frequently require proof that learners spent a minimum mandatory seat time reviewing safety material before unlocking the final assessment.
- A proper SCORM package enforces seat time at two levels: a client-side countdown lock on the "Next Unit" button (e.g., 15s, 30s, or 60s per slide) and server-side session time reporting via cmi.core.session_time / cmi.session_time.
- Implementing cmi.interactions.N allows LMS administrators to inspect which specific quiz questions learners miss most often and how many seconds they spent deliberating.
Solving the "Next-Button Speedrun" Problem in Compliance Training
One of the most common technical requests on r/elearning comes from compliance developers asking: "How do I restrict SCORM completion until and unless the user has spent a specific amount of time on each module?"
Without a seat-time lock, employees assigned a mandatory 20-page safety SOP will click the "Next" button 20 times in 8 seconds and guess on the quiz until they pass. If an workplace incident occurs later, audit logs showing an 8-second completion time can invalidate the company’s compliance defense.
How Per-Slide Anti-Skip Timers + Session Time Reporting Work Together
In DocScorm Studio, enabling the "Anti-Skip Lock" lets you select a mandatory per-slide dwell time of 5 seconds, 15 seconds, 30 seconds, or 60 seconds. Whenever a learner advances to an unvisited slide, the "Next Unit" button is disabled and displays a live countdown badge until the timer expires.
Simultaneously, the underlying scormdriver.js calculates the total elapsed session duration and formats it into both SCORM 1.2 (HHHH:MM:SS.SS) and SCORM 2004 ISO-8601 (PT#H#M#S) formats upon course exit.
// DocScorm automatically logs every quiz response to the LMS gradebook:
recordInteraction: function(index, id, response, isCorrect, latencySec) {
if (this.version === '2004') {
this.setValue('cmi.interactions.' + index + '.id', id);
this.setValue('cmi.interactions.' + index + '.type', 'choice');
this.setValue('cmi.interactions.' + index + '.learner_response', response);
this.setValue('cmi.interactions.' + index + '.result', isCorrect ? 'correct' : 'incorrect');
this.setValue('cmi.interactions.' + index + '.latency', 'PT' + latencySec + 'S');
} else {
this.setValue('cmi.interactions.' + index + '.id', id);
this.setValue('cmi.interactions.' + index + '.type', 'choice');
this.setValue('cmi.interactions.' + index + '.student_response', response);
this.setValue('cmi.interactions.' + index + '.result', isCorrect ? 'correct' : 'wrong');
}
}Automating Batch PDF-to-SCORM Conversion via REST API
For developers and operations teams who need an automated script to convert dozens of PDFs into seat-time-locked SCORM packages, DocScorm provides both the web Studio and the `/api/v1/convert` REST endpoint.
You can pass your document units, target languages, and seat-time rules to generate standardized, WCAG 2.1 AA compliant SCORM packages without writing custom JavaScript timers by hand.
Convert PDFs, DOCX, PPTX, MP4 Videos, or Claude HTML into SCORM in 60 Seconds
Try DocScorm Studio free or claim 30% OFF your first month of the Pro Plan (50 monthly credits + 1-click multi-language bundles + embedded course-source.json round-trip editing).
Frequently Asked Questions
Does the seat-time lock re-lock slides the learner has already completed?
No. Once a learner has satisfied the mandatory countdown timer on a slide (e.g., 15 seconds), that slide is marked as unlocked in their session so they can freely review previous slides without frustration.