System variables in Captivate 6


Update: for readers using Captivate 7-9, updated list with system variables in this article.

Quite a while ago I wrote some articles about using variables in Captivate 5. And they had links to complete lists with the system variables available in that version. Nothing much changed for 5.5 but now in version 6 there are not only a bunch of new variables, but the old variables starting with 'rd' have disappeared (from lists). At the end of the article you'll find the link to download a pdf with all the system variables, grouped in categories. For each variable I offer you the explanation (not always the same as in the Variables dialog), the type (number, text, Boolean or other), Default value (if available), comment (sometimes with a link to an example). 

In this article I will focus on some tips, and on the new variables in the categories.

1. Movie Control

This category is very important, because most of the system variables here can be controlled by using simple or advanced actions. One exception: cpCmndPlaybarMoved is an internal variable, read-only.

Deprecated old variables starting with 'rd' have been replaced, in the list those names are orange instead of white. Their functionality remains the same. 

  • cpCmndGotoFrame & cpCmndGotoFrameAndResume
  • cpCmndNextSlide & cpCmndPrevious
  • cpCmndPause & cpCmndResume

Warning: in version 5.5 both variables cpInfoCurrentSlide and rdInfoCurrentSlide (see next category) existed, now the last one is not available in dropdown lists any more. But they were not identical: numbering for cpInfoCurrentSlide starts with 1, whereas it starts with 0 for rdInfoCurrentSlide! In a some of my blog posts about 5/5.5 I used this statement to Replay a slide in advanced actions:

Assign cpCmndGotoSlide = rdInfoCurrentSlide    (in CP5/5.5)

This worked fine because both variables started with index 0. In 6.0 you can still create the same statement, by choosing the option 'literal' instead of 'variable' and typing in the rd-variable (not available in the list). If you do not like typing, you have to replace the previous statement by:

Expression cpCmndGotoSlide = cpInfoCurrentSlide - 1  (in CP6)

This explains the perhaps confusing snippets (small advanced actions) attached to the shapes in the button category. Have a look at the buttons Start (snippet: startSlide) and End (snippet: lastSlide).

New variables: only one cpCmndTOCVisible allows you to show/hide the TOC if this is in Overlay mode. It is a Boolean variable, with default value = 0, which means that the TOC is not visible.  Too bad that this variable was not added in the dropdown list for "Assign" in the Actions accordion. This list only shows these variables like in previous versions:

  • cpCmndShowPlaybar
  • cpCmndMute
  • cpLockTOC
  • cpCmndCC

2. Movie Information  

All the variables in this category are read-only. They are often used in combination with the Movie control vars described above.

Deprecated old variables: marked again in orange in the table:

  • cpInfoCurrentFrame
  • cpInfoFPS
  • cpInfoFrameCount & cpInfoSlideCount

Not replaced: rdInfoCurrentSlide  (see Warning in 1. Movie Control)

New variablesnone


3. Movie MetaData

Those variables are also read only. Most values are looked for in the fields of the Project Information dialog box. Two mystery variable are cpInfoCourseID and cpInfoCourseName.  The explanation in the Variables dialog box points to the same Project Information, but no fields are available there. I also checked if they point perhaps to the SCO information, but seems not to be the case either. Perhaps the mystery will be cleared ... in version 10? 

No new variables, no deprecated ones neither in this category.

These variables are useful to insert in Text Captions on (master) slide or in templates, instructing the user to fill in the fields in Project Information.


4. System Information

Logically those variables are also read-only, can be useful in the same way as the variables of the previous category. Sorry for the comments about certain variables that seem to assume that all Captivate users should be American. 

No new variables, no deprecated ones neither in this category.


5. Quizzing

All variables in this category are (still) read only. With a lot of new features in Quizzing, there are several new system variables available. Not enough for me, as you can detect from some of my comments in the table. 

There are no deprecated old variables, all were already cp-variables.

New variables

cpInQuizScope: Quiz scope is now dynamic, whereas in previous version the scope was very 'rigid', linear, starting with the first slide having a scored object (question slide or scored interactive objects) and finishing with the score slide or - in case of no score slide - with the last slide having a scored object. No way to jump out of that sequence of slides, which caused a lof ot frustration. In Captivate 6 the scope starts the same way, but now the scope will extend dynamically when the user jumps out of the sequence to view a content slide. It will only end when the user views the score slide. This system variable, if you insert it in a text caption (on master slide or timed for all the project) will show you whether you are in a quiz scope. It will have the value 0 (default) before the first slide with a scored object. Then its values switches to 1, will remain so until the score slide has been viewed.

cpQuizInfoNegativePointsOnCurrentQuestionSlide: Penalty is now possible, and this variable will show the maximum Penalty on each question slide, it is a reused variable. Its positive companion is cpQuizInfoPointsPerQuestionSlide. Do not confuse with the points scored by the user for a question slide, which will be stored after the slide in the variable cpQuizInfoLastSlidePointScored.

cpQuizInfoPretestPointsscored:  this will be populated with the score obtained for pretest question slides only. Its counterpart for the real test is cpQuizInfoPointsscored. This last variable is visible on the score slide.

cpQuizInfoPretestScorePercentage:  is the pretest version of cpInfoPercentage (which is for the real test, visible on the score slide).

cpQuizInfoPartialScoreOn: for questions where you choose the option partial scoring this variable will have the value 1, whereas the default value (no partial scoring) is 0.

Missing variables

I really think some more variables should be available. If you have a look at the Advanced Interaction view (F9) for a project that has a pretest as well as a normal test, you will see that the value of Total Points is the sum of the maximum possible scores for both pretest and test:

This shouldn't be a problem, you can see clearly the difference in this view between the pretest and normal test questions. But I have problems with:

  1. cpQuizInfoTotalProjectPoints/cpQuizInfoTotalQuizPoints: both variables will have the same value after the project, although they are not populated at the same moment. BUT: this will be the same total as you see in the Advanced Interaction view. This means that you do not have the separate values of the maximum for the Pretest and for the Test, and that there is no system variable available for the maximum score that is visible on the Score slide (which is for the Test only). If you want to create your own score slide, you'll have to do some maths yourself or by advanced actions. Same if you want to show a score slide for the Pretest alone (which is by default not available).
    I would like to have a system variable for the maximum score of the Pretest (that is used by CP to calculate cpQuizInfoPretestScorePercentage) and for the maximum score of the Text (use by CP for cpInfoPercentage).
  2. cpQuizInfoTotalQuestionsPerProject/cpQuizInfoTotalUnansweredQuestions: again, the numbers will be the sum for Pretest and Test. And the values shown on the score slide are for the Test only. System variables to create a custom score slide are not available, whether you want one for the Pretest or for the Test.

  3.  cpQuizInfoTotalCorrectAnswers: happy to tell you that here only the Test questions are counted, not the Pretest questions. However, if you have activated partial scoring, you have to know that a question is counted correct always when at least part of the question is correct. Depending on the settings, this can mean that a question is considered correct even if it has a negative result (example: many answers, one correct, lot of penalties for all the incorrect answers). That seems a bit weird.


The PDF is no longer available, please download the table with system variables in CP8, link is in the top of this post. There are indications about changes with former versions.

10 responses
Another great and helpful blog post, Lieve! Thank you.

Two comments.
!. I believe you made a small mistake when you wrote:

Assign cpCmndGotoSlide with cpInfoCurrentSlide - 1 (in CP6)

Assign does not allow for mathematical operations. I think the above has to be an Expression action.

2. A variable I would also like to see for quizzes is cpCurrentQuizQuestion. I have a client who would like to show a list of the questions missed on the results slide. The only way I can think to make it work right now is to set the question number in a user variable for each quiz question, but that means having to update all those in those cases when we delete or add more questions in the middle of quiz. If you can think of a better solution, let me know.

Thanks again!

Thanks Joe. You are right for the Assign, since you can only change cpCmndGotoSlide with an advanced action, never with a simple action, so it has to be replaced by Expression.
Assign is possible with a 'mathematical' operation if you use it for a simple action. I think there is an example in my blog post about toggles: you can choose Assign, choose 'cpCmndMute' and then type '1-cpCmndMute' in the With-field. For a statement in an advanced action this is not possible.
What would be the value of 'cpCurrentQuizQuestion'? The text of the question itself? And shouldn't we then have both this variable for Pretest and Test?
Yes, we should have it for pretest and test too. I meant the question number, the one you see on the slide when you use the Progress option: Question 1 of 5, for instance.
I see, can never use that Progress indicator for my own tutorials, because it still cannot be localized. But that will be tricky, if one has scored objects, this indicator can screw up. Not so hard to store the failed questions in user variables I think.
thanks for the info!
Hi Lieve
I'm having trouble accessing the variables document with Is there another way you could get them to me please?
Would be ever so grateful as I'm ploughing through some quizzing advanced actions in my project this week.
Loraine, I just checked it and the link is public, you don't need an Adobe ID to get it. Can you try again? If not, can send it to you, but then I need an email address. In the regular forums of CP, you send it by private message. Or if you are following me on Twitter (@Lilybiri), can follow back and you can send me a direct message with the address.
Is there a system variable that will control the back button you can turn on in the skin editor. My boss is tied to that button but i don't think there's anyway you can control it.
The buttons in the playbar are not linked to a system variable. To change their behavior you need a programmer to create a custom playbar. Back button will always go to the previous slide, never to the last visited slide. I suppose that is what you wanted to change?
First of all. I'd like to say how happy i was to see your response after a couple of hours! THANK YOU And yes, this answered my question. My boss loves the built in pause, play, back, & forward button but when you get to branching it's not going to work. I wanted to make sure there wasn't a way to keep that built in back button and have it function correctly with branches in your elearning.