Track and present rich feedback on faculty behavior in Canvas (akin to the course analytics data on on students)

v2.0 2017-06-08 18:27 UTC

This package is auto-updated.

Last update: 2021-03-29 00:29:43 UTC


Latest Version Scrutinizer Code Quality

Generate some reporting on faculty grading practices. To start automated data-collection, run the private/ script once. It will harvest the first round of data and then create a crontab job to repeat that process every night at midnight.

A description of the information collected by is available online.



  • Apache 2
  • MySQL 5.5 or better
  • PHP 5.6 or better
  • Composer


This generically follows a standard PHP app install pattern, with some additional excitement thrown in for good measure.

  1. Clone the repository to your web root.
cd path/to/web/root
git clone
  1. Run the setup script (this will install dependencies, set file permissions, schedule Cron jobs, etc. -- it's good about telling you what it's doing as it does it, and it will require a sudo password periodically).
cd grading-analytics
  1. Edit the newly created config.xml file to include your credentials for the app (a MySQL login for data storage and credentials for Canvas to communicate with the API -- either a developer key and secret or an API access url and token).

  2. Point your browser at the install to finish the app setup (this will read in the configuration file, setup database tables and so forth).

If you need to re-run the install process later, point your browser at:

The end result of the install process is to drop you into the LTI consumers management page, where you will need to create a new consumer key and secret.

  1. Install the API in Canvas. It should be installed in the sub-account that contains all of the courses that will be monitored for example, we install into the Academics sub-account which contains all of our departmental sub-accounts. Use Canvas' "By Url" option to paste in the consumer key, shared secret and configuration URL from the consumers management page.

  2. Visit the account navigation placement of the LTI to complete installation (this will capture the account ID of that root account via LTI authentication, which allows the data collection script to know which account to monitor).

Upgrading from v1.x to v2.0

The rationale for switching from the 1.x branch to 2.0 is largely framed around the change in underlying LTI authentication structure. This requires that existing users both re-run the app install process described above (steps 1-4) and then also re-install the LTI in Canvas (steps 5-6).

Underlying data is preserved between the 1.x and 2.0 branches, without change. However, the change in LTI structure also created a tool_metadata table in the MySQL database which replaces the app_metadata table, which can be deleted.

In the course_statistics table, I did opt to run a quick script to update all of the analytics_page fields to point to the new LTI install, but that's not really necessary, since, as soon as new data is collected, those old links won't be visible again.