top of page

How to Send xAPI Actor Data from Workday Learning

  • Writer: ramonanicole
    ramonanicole
  • Feb 16
  • 3 min read

If you're sending xAPI statements from Articulate Storyline to an external LRS while hosting in Workday Learning, you may run into this issue:


Workday does not provide usable learner identity data for xAPI actor configuration. If you select the Supplied via launch URL in the Storyline publish settings, the xAPI statements will fail to send.

A selection interface with radio buttons labeled "Supplied via launch URL" and "JavaScript," with the first option selected and a button with three dots.

A simple workaround to this is to set up a random actor. This will get your statements to send over to the LRS. However, your data is really so much more useful when actors are identified.


Here’s the fix.


The Core Issue

An xAPI statement requires:

  • Actor

  • Verb

  • Object


In Storyline, the verb and object are easy — they’re defined in your xAPI trigger.


The problem is the actor.


Unlike many LMS platforms, Workday Learning does not seamlessly pass learner identity in a way that Storyline can automatically use via standard configuration.


So instead of relying on automatic launch parameters, you need to:

  • Capture the learner identity at launch

  • Store it in Storyline

  • Explicitly pass it into the xAPI actor configuration



The Fix (High-Level Steps)

A dialog box shows variable settings with fields for name, type, and default value, displaying "learnerName" as the name and text as the type.

1️⃣ Create a Storyline Text Variable


Create a new text variable:

learnerName


This will store the learner’s identity pulled at launch.





2️⃣ Add JavaScript on the First Slide


Add the below JavaScript trigger to initiate when the timeline starts on the first slide. This script retrieves the learner’s identity and stores it in learnerName, the variable we created in step 1. This ensures learner data is available before any xAPI statements fire.


let userName = lmsAPI.GetStudentName();

let array = userName.split(',');
let updatedName = array[1] + ' ' + array[0];

setVar("learnerName", updatedName);

Screenshot of a Trigger Wizard and JavaScript Editor interface, showing the configuration for executing JavaScript when a timeline starts, with a script for handling a username variable.


A publishing settings window with options to export a project to an LMS or LRS, showing reporting and tracking settings.

3️⃣ Set up Reporting and Tracking settings


On the LMS / LRS tab in the publish settings, select both Report to an LMS and Report to an external LRS. From the drop-down, select SCORM 2004. (Workday Learning does not support cmi5 or xAPI.)


Then, click the Reporting And Tracking button.







A configuration window for LRS settings, showing options to report to an external LRS, input fields for endpoint, key, and secret, and a "Test Settings" button.

4️⃣ Configure the LRS


On the LRS tab, enter your LRS details. Be sure to click Test Settings to ensure the connect works.










Settings interface for configuring reporting to an external Learning Record Store (LRS) with options for endpoint, key, secret, and actor setup.

5️⃣ Set the Actor via JavaScript


Select JavaScript for actor configuration. Then, click the (…) button just to the right.


Paste the below actor configuration script and click OK. Then, click OK one more time.








function getActor() {

var learnerName = "Unknown Learner";



try {

// Storyline player API

if (typeof GetPlayer === "function") {

var player = GetPlayer();

var nameFromVar = player.GetVar("learnerName");

if (nameFromVar && nameFromVar.trim() !== "") {

         learnerName = nameFromVar;

       }

     }

   } catch (e) {

     console.log("getActor: Error getting learnerName from Storyline variable:", e);
   }



// Optional: fallback to SCORM learner name if available

try {

if (typeof lmsAPI !== "undefined" && typeof lmsAPI.GetStudentName === "function") {

var scormName = lmsAPI.GetStudentName();

if (scormName && scormName.trim() !== "" && learnerName === "Unknown Learner") {

         learnerName = scormName;

       }

     }

   } catch (e) {

     console.log("getActor: Error getting learner name from lmsAPI:", e);

   }



return {

"objectType": "Agent",

"account": {

"homePage": "https://www.example.com",

"name": learnerName

     }

   };

 }


How to Confirm It’s Working

Publish the storyline file and upload the SCORM package into Workday Learning. Launch the course in Workday and trigger an xAPI statement. Check your LRS.


If successful, the actor field will display the actual learner’s identity.


Why This Works

Instead of relying on Workday to automatically supply actor data, you:

  • Capture learner identity manually at launch

  • Store it in Storyline

  • Explicitly define the actor in the LRS configuration


This approach bypasses Workday’s limitations and ensures your LRS receives accurate learner-level data.


If you're building custom xAPI interactions inside Storyline and deploying to Workday Learning, this method provides a reliable way to send clean actor data.


The full walkthrough — including debugging lessons learned — is in the video above.


If this worked for you, I’d love to hear about it.

Comments


A teal octopus illustration with a visible brain on its head and dark oval eyes.

© 2026 The NeuroInclusive Learning Lab

Stay Connected

Subscribe to our newsletter to receive news and updates. 

What type of content are you interested in? Required

Thanks for submitting!

bottom of page