Conditional trigger based on viewing all pages in a course?

Hi all,

Thanks in advance for any feedback. Need help creating a conditional trigger to view a page based on the user viewing all the pages in a course.

SCENARIO: My client has created over twenty 100-page Storyline courses. There is no LMS. A late request (all the courses have been built) is to add -- on the last page of the course -- a link to a certificate if (and only if) the user has viewed all 100 pages in the course.

How can this be done?

Note 1: The course is open navigation, so the link cannot simply be always present on the last page, otherwise users will simply jump to that page and print the certificate.

Note 2: The user has to have visited each unique page. It can't simply be a count of 100 page views. I.e. viewing the same page 100 times.

Note 3: My preference is to find a solution that does NOT require putting code on each page, given how time-consuming that would be. I'm ideally searching for a solution that looks something like this (in prose):

On the current last page of course:

> If each of the 100 pages have been viewed, show the certificate button, else show the message "You have not viewed all the pages in the course. Please do so, and then return here to print your certificate."

Thanks very much!


3 Replies
Ashley Terwilliger-Pollard

Hi Dave,

The only way to ensure that the users visited each and every page would likely be to track a variable on each page - it could be something as adding one to a numeric variable when each slides timeline starts/ends - although if users are going to revisit a slide it could keep adding a variable depending on your slide properties.  So unfortunately there isn't an "easy" method...

Also, we don't officially support certificates, although there is a method here on how to modify the report.html file to create a certificate. 

Alexandros Anoyatis

Hi Dave,

I'm not sure how comfortable you are with coding but it's probably better/faster/more elegant to use JS to achieve this :

  • Create a text variable in the form of "0 0 0 0 ... 0" (that's right, 100 zeros!) say slideArray.
  • Then create a numeric variable (say slideNumber)
  • Place a trigger on slide 1 to adjust slideNumber to 1, then do the same for slide 2 (only this time adjust to 2), and so on...
  • Then place some JS code (on each slide) that does the following :
    • Get slideNumber
    • Get slideArray
    • Convert text variable slideArray to an actual array.
    • Replace the element[slidenumber] with 1
    • Convert array back to string.
    • SetVar slideArray

Have a look at this for reference :

It has all the functionality you requested, albeit using a slightly different approach.

Hope this helps,