Activities: xAPI Launch Link

Maintained by Picture of David PesceDavid Pesce
Launch external xAPI (Tin Can) activities from Moodle and track on a Learning Record Store (LRS). Compatible with Storyline, Captivate, and others!
379 sites
45 fans
Current versions available: 1
This plugin allows the launching of xAPI activities from a Moodle course and tracks the resulting xAPI statements with an external Learning Record Store (LRS). This plugin is compatible with activities implementing the Rustici launch method. This includes content created with Articulate Storyline or Adobe Captivate (among others). 
Suggestions, bug reports, code reviews, and contributions are welcome! Please don't add comments or questions here. Use Github instead:

Note: In an effort to focus our resources on this project, only supported Moodle and PHP versions will be developed and tested against. That is currently Moodle 3.5, 3.7, 3.8, and 3.9. For PHP that is 7.2-7.4. As support drops from the providers of these items, we will drop support as well.


This plugin is part of set Tin Can.


Screenshot #0
Screenshot #1
Screenshot #2


Picture of David Pesce
David Pesce (Lead maintainer)
Picture of Andrew Downes
Andrew Downes: ex-maintainer
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Picture of Thom Olden
    Wed, Jan 11, 2017, 5:27 PM
    We're using Learning Locker to store the statements. We provide courses to different institutions and report back on department level. So I figured we could send that data as context so we can filter the statements on that. But that is not a good solution?
  • Picture of Andrew Downes
    Wed, Jan 11, 2017, 8:59 PM
    Hi Thom,
    In theory, this is a bad solution because you are associating metadata that really relates to the user to the statement, which is not quite right.

    In practice, your solution could work for statements sent directly from Moodle to an LRS because Moodle knows the metadata and can attach it to every statement. There's a bit of extra bloat in the statements, but it should work.

    The problems come with statements generated by other applications, such as learning activities outside of Moodle or e-learning courses loaded into Moodle and launched using this launch plugin. Here you have two problems to solve: 1. How do you get Moodle to communicate the user profile data to those applications and 2. How do you modify the applications sending the statements to append this data to their statements. Both of these are complex problems that require custom solutions for each application involved.

    The approach we take with the Watershed plugin of sending person metadata to the LRS via a separate mechanism avoids both of these problems. There's no need for other applications to know about the learner other than their identifier because that data does not need to be include in statements. This works not just for your current applications but for unknown future applications as well.

    I hope that's helpful. Let me know if you have any further questions.

  • Picture of Thom Olden
    Mon, Jan 23, 2017, 6:31 PM
    Hi Andrew,

    first of all I'd like to thank you for your help!

    Due to the lack of time remaining for my internship, we have decided to drop this. I just have one question left. You said my solution (adding a context field and filtering the statements on that) could work. But I read on several sites that it is not possible to filter on the context property. "Groups of statements can be fetched filtered by agent, verb, activity, registration and time period (using ‘since’ and ‘until’). No other filters are possible". This makes me confused. Is it impossible to filter on the context? Or is it possible (but does it require some coding)?
  • Picture of Andrew Downes
    Mon, Jan 23, 2017, 7:16 PM
    We're talking about different things. What you've quoted relates to filtering in xAPI GET Statements requests. I'm talking about filtering of reports in a Learning Analytics Platform. That all depends on the functionality of the platform you are using. With Watershed you can filter by any statement property.
  • Picture of Thom Olden
    Mon, Jan 23, 2017, 11:30 PM
    My bad! This clarifies it for me, thanks you so much! I will include Watershed in my report.
  • Picture of TheD 2000
    Mon, Apr 24, 2017, 5:59 PM
    Hi there, this looks like a great plugin. I am struggling to find correct settings for the 'Basic Login' and 'Basic Password' fields in SCORM Cloud. I can see the Identifier, Show Secret Key and PENS but none of these seem to work. Any helps would be greatly appreciated!!!
  • Paul
    Thu, Sep 7, 2017, 2:28 PM
    Hi Andrew,
    I'm sorry if I've asked you this else where, but there seem to be a multitude of Tin Can plugins on Moodle, and for me this complicates things.

    I'm now running a Moodle 3.3 platform and was wondering, will the 3.2 version of your plugin work on 3.3?

    If not, do you have any idea when a 3.3 version will be ready?

    Many thanks, and take care.
  • Picture of Craig Ferguson
    Fri, Oct 6, 2017, 3:00 AM
    Hi Andrew,

    First of all, thanks for this great plugin, it's exactly what my organization has been looking for.

    But I'm having a problem with it - I've connected it to my LRS (grassblade) and have been able to send statements successful from my moodle manager account, but when a student attempts to create a new registration they get an error message that says "This course is currently unavailable to students".

    Is this something you've seen before?

  • Picture of Thiago Ribeiro
    Sat, Oct 28, 2017, 1:49 AM
    Is there a way to make the videos to resume where user left off?
  • Picture of Andrew Downes
    Fri, Feb 23, 2018, 6:00 PM
    To everybody asking questions here, note that I don't check this page regularly. If your questions are still relevant, please email or even better, log an issue on the github site.
  • Picture of stefano monni
    Tue, Oct 30, 2018, 7:18 PM
    I'd like to install the tincanlaunch plugin on my installation of Moodle (v. 3.5) but I don't know if the plugin supports moodle version 3.5. Indeed, if I try to install the plugin from the official site I do not see the "install now" option. Is it a compatibility issue?
  • Picture of Andrew Downes
    Tue, Oct 30, 2018, 8:33 PM
    @Stefano - this is the official site isn't it? There's no reason why this plugin should not work in versions of Moodle above 3.4. However please note that I'm actively working on this plugin over the next few weeks, so you can expect a new release to fix a lot of bugs. Please help by testing the version on the master branch at github and logging any issues.
  • Picture of stefano monni
    Tue, Oct 30, 2018, 9:57 PM
    Ok, thank's for your reply. Yes, I'm referring to this site and this page ( where are mentioned Moodle 3.0, 3.1, 3.2, 3.3, 3.4 and NOT 3.5). If I click on the "Install now" button a page is loaded showing all my moodle installations (the first one installed on my local pc running version 3.0 where I can view the "Install" button and the second one remotely installed running 3.5 version where the button "Install now" doesn't appear. Maybe I need to install the plugin manually.
  • Picture of Jeff Villapando
    Thu, Feb 6, 2020, 2:09 PM
    Hi, is the current version available in the download link the most updated version? Trying to test the plugin in our moodle but a little hesitant since we are using Moodle 3.8. Can anyone help?
1 2 3
Please login to post comments