Overview Statement Builder is a cloud-based web application that lets you add more and richer xAPI statements to your elearning. Without writing any code yourself, you can create a wide variety of statements and will provide you with the Javascript Triggers to add to Articulate Storyline so those statements get sent at the right times. You will need a account, an Articulate Storyline license, and an LRS for which you have the endpoint details.


There are several possible workflows using Two main ones are

Creating a Project and an Object

  1. Log in to You will then be shown the Build page.
  2. Click Add Project near the top left. Type in a project name and click the Create button.
  3. Click New Object to create the first object for your statement — the activity that the learner is acting upon. You can have one or more statements per object.
  4. Enter a brief Activity Name and choose the Activity Type from the drop-down list. Adding a longer Activity Description is strongly encouraged; this will be sent to the LRS as part of the statement. Notes are just for your benefit within, if there's any other information you want to keep track of.
  5. Click the Create button to save your new activity.
  6. Your activity shows as your first object; now you're ready to add statements using it.

Creating Statements

An xAPI statement has 3 required and 2 additional parts: The actor will be coming from outside Statement Builder based on who is taking your elearning, and the Object is the activity you created above. The remaining elements you'll specify in this section, keeping in mind that while the Verb is the last remaining required element, the richness of xAPI comes from these additional pieces.
  1. Click + New Statement to create a statement for this object.
  2. Guided Mode breaks things into four strings and provides step-by-step validation while Open Mode puts it all on one screen. Both modes provide tooltips if you hover over the field names on the left.

    In the top right are optional details--these don't go into the xAPI statement but may prove useful for you inside Statement Builder. Display or Screen Name is a name for your statement and will appear back in the statement list, while notes are for any more detailed information or reminders you wish to keep here.

    Statement Display shows a simple human-language version of the statement (note at this point there's no verb yet) while Output displays the actual code being created, which you'll paste into Storyline.

  3. Verb:Now that your object is complete, the only required field in the whole Create Statement sequence is the Verb. Select a verb from the list.
  4. Result includes the learner's response and scoring information. You can specify any, all, or none of these fields. When using Storyline variables, the Trigger will pull the value at the time that it's called.
    • Response: The actual learner comment, input, or answer. If you're specifying response here, Statement Builder expects the name of a Storyline variable.
    • Raw score: The learner's unscaled score; you can enter a number or flip the toggle to enter the name of a Storyline variable.
    • Minimum score: The lowest possible score; you can enter a number or flip the toggle to enter the name of a Storyline variable.
    • Maximum score: The highest possible score; you can enter a number or flip the toggle to enter the name of a Storyline variable.
    • Scaled score: The score expressed as a percentage, from -1.0 (-100%) to 1.0 (100%); you can enter a number or flip the toggle to enter the name of a Storyline variable.
    • Success: Whether the response was correct/successful or not; you can choose true or false or flip the toggle to enter the name of a Storyline variable.
    • Completion: Whether this completes the learner's interaction with this activity or not; you can choose true or false or flip the toggle to enter the name of a Storyline variable.
  5. Context provides additional information about the statement and how it fits with other activities. All context information is optional. For any of these, you'll create an activity similarly to how you created the initial object.
    • Parent: A larger activity which this statement is directly a part of. Typically an xAPI statement has only one Parent. This might be the course, the module within the course, or a larger interaction the current interaction is part of.
    • Grouping: A larger activity which this statement is a part of, but less directly than a Parent.
    • Category: Used to group similar things together, without implying it's a part-whole relationship.
    • Other: Indicates a looser relationship than the other types of Context.
  6. Extensions can fit in three possible locations in the xAPI statement.
    • Activity extensions specify more information about the Object.
    • Context extensions specify more information about the Context.
    • Result extensions specify more information about the Result.

    With Extensions, you can use a standard, defined extension by specifying its URI as the ID, or you can simply type a keyword for the ID for your own tagging purposes. For standard extensions, what the value should be is defined; if you're using a custom extension, you can enter whatever value you wish.

  7. If you're ready to put the trigger in Storyline now, click the Copy button on the lower right side of the page.
  8. When you're finished, hit the Save Statement button on the last screen of Guided Mode or the bottom of Open Mode. You'll return to the Build index; you can return to this statement by clicking its display name or its edit icon there.

Adding Statements to Storyline

After you copy a statement from, switch over to Storyline 3 or 360 then:
  1. Navigate to the slide (and, as appropriate, layer) where you want the statement sent.
  2. Add a Storyline trigger.
  3. Set the Action for the trigger to Execute Javascript.
  4. Click the ... button to enter the Script, then paste the copied code. Click OK to save the script within Storyline.
  5. Set the When and Object as appropriate for the trigger you want.
    • When a user answers a question, a good place to put the trigger can be on the feedback layer when the layer's timeline starts.
    • Whenever possible, move the Execute Javascript trigger to the top of the trigger list for the object. Storyline runs triggers in order from top to bottom; if you put the trigger after another trigger on an object, depending on the previous trigger's action the script may get skipped by Storyline.
    • If particular, when possible, don't have a trigger on the same event that causes Storyline to change slides.
      • For instance, in some situations you could send the statement when the timeline of the next slide starts, instead of when the previous slide changes.
      • If you can't use a different event, make sure that the Execute Javascript trigger is above the jump slide in the list of triggers.


Instructions vary based on your publishing situation; inside Build, go to the Publishing tab for more information.