Skip navigation
All Places > Canvas Admins > Blog > 2017 > July

For admins who do dozens of searches per day on Canvas, here are a couple of tips that save a few clicks (and a few seconds) each time. I use these many times a day. (This post is an adaptation of the "Customer Lightning Round" 10-minute presentation I did last week at InstructureCon 2017, called "Save 1 Minute Per Day.")


The Problem:

Searching for a user or a course takes too many clicks.


The Solution: Use Google Chrome's Custom Search feature


(This is similar to John Thomson's "Efficiency Tips" from two years ago, with screen shots added, plus some extra suggestions.)


The Chrome browser has a cool feature that lets you create custom searches, which you can use to quickly search for a user or a course on Canvas. Here are detailed instructions for using this feature:

  1. Using Chrome, log in to Canvas and do a search (as you normally would) for user Waldo
  2. From the search results page, copy the link from the address bar, which will look like something like this: 
  3. Next create custom search by clicking on the three dots "Customize" link on the top-right of the browser, and choose "Settings"
    Screen shot - Google Settings
  4. Then open the "Manage Search Engines" by clicking on the little triangle to the right, then on the next page click "ADD" on the "Other Search Engines" line:
    Screen shot - manage search engines and add
  5. Fill in a name (like "Canvas Users") and a keyword (just "u" in this example), then paste the link from step #2 above, and replace Waldo with %s
    Screen shot - custom Google search
  6. Click "Save" and you're finished.


To use this new search, type this sequence of keys:
  <CTRL> L u Bob Smith <Enter> 
(or <COMMAND> L on Macs)
<CTRL> L puts your cursor in the address bar, where you can begin typing a search or URL. Next, typing u then the space bar switches to this new search. Type the name Bob Smith and then Enter, and you will be taken directly to the search results (no clicks, just keys!)


You can re-do the above steps to make another customer search for courses (or really, for any common search you do). I use one to search for a class in the current term by first searching for a course, filtering for the term, then copying / pasting that search URL.


Another Tip / Feature Idea: Make the Enrollments search result larger

Screen shot - Enrollments Window too small


This is more complicated, and I've created a Feature Idea (go vote!). See the comments in that post for a work-around using a TamperMonkey script to fix this on your own, until Canvas gets updated.


Another Tip / Feature Idea: Add More Links to Courses Search

Screen shot - add course links example

This also can be added with a TamperMonkey script. I've created a second Feature Idea (vote here too!). Again, see the comments in that post for the script that can add a "Users" link to the list of links.


admin admin tips ui improved ui

24 Jan 2019 Update: This guide is still relevant, but you should also learn more about some new features that have been released since this was posted. Thanks for all the comments and feedback that helped me understand where the knowledge gaps and confusion are surrounding our new developer key features!

When working with an integration provider (i.e. vendor, internal development, etc.), they will often ask for a developer key. Many integrations require Canvas API access to function correctly, and developer keys are currently the most secure way to allow integrations to access the API. This documentation covers some of my recommendations for how to decide whether issuing a developer key to a vendor is secure and safe. There is no general “best practice” for addressing this challenge since every institution has it’s own sets of requirements and procedures for security and privacy.

Developer keys can be issued by a Canvas Account Admin in order to allow an integration to request access on behalf of the user to the API. The user is prompted to approve access to the application and upon approving an API token is granted to the integration.

     An example of the UI shown when a developer key to requests access to a user's Canvas API

After authorization, Canvas generates an access code that is later exchanged for an API token by the external application. The integration can then make API requests as if they were that user. In other words, they are able to make API requests to all of the same endpoints that the authorizing user has permission to.


Considering API tokens inherit the permissions of the granting user therefore granting that same level of access to the vendor, you might consider doing the following before issuing a developer key:


  • Ensure you have a formal written contract with the vendor and that your relationship with the vendor is in good standing.
  • Ask the vendor to explicitly document all of the API endpoints their integration will be using (this should be a list of all the data that is being read and written) and, optionally, why.
  • Reserve the right, in writing, to take any actions your team deems appropriate should the vendor make API calls outside of the scope that they defined without notifying your team.
    • NOTE: Developer keys can be disabled via the Admin UI which will invalidate all issued API tokens to the integration.
  • Ask the vendor to clearly state how it complies with FERPA and any other laws that apply to your students (e.g. COPPA, accessibility laws etc...).
  • Ensure you understand the vendor’s security policy surrounding how they store API tokens and developer keys (ex. they should never be exposing the developer key or API tokens in any kind of UI, including error reports; only their core engineering team should have access).
  • If available, ensure that your institution's security team has reviewed the application’s security.


Again, whether you follow some, all, or even more of these guidelines is up to your team to decide. Hopefully this discussion can help you make the best choice for your institution.


Discuss: What are some of the policies that your institution has taken to determine when to issue developer keys?

For the last several years I’ve been developing a library of Python code that makes my life as Samuel Merritt University’s Canvas admin easier and enables me to turn institutional ideas into reality. Though I’ve always intended to share this code with the Canvas Community in case someone else might find it helpful, it's always been a work in progress, and it’s been all-too-easy to fall into believing it’s not complete enough, not polished enough, not professional enough, not documented enough....


But now, in a mighty effort to stop letting the perfect being the enemy of the good, I’m sharing it just as it is, with these few words of introduction.


I began developing this library in response to an institutional need to import learning outcomes into Canvas courses from CMI, our homebrew, stand-alone assessment tool. I accomplished that through the use of Python, the Requests module, and the Canvas API documentation, as well as PyCharm, the Python IDE I can’t say enough good things about! (Python coders in academic institutions can get a free academic license).


Over time, the library of API call wrappers and utility functions has grown in the process of writing scripts to automate new tasks. Among the tasks I’ve automated using this library are:


  • Sync subaccount-level learning outcomes with outcomes in an external repository.
  • Sync course-level learning outcomes with subaccount-level outcomes.
  • Import outcomes into a course from a formatted Word document.
  • Generate a syllabus for a course by wrangling data from Canvas, our SIS, and CMI into a Word template.
  • Download all syllabus files from courses.
  • List assignments that use the Turnitin API.
  • Retrieve an SIS report.
  • Do an SIS import of enrollments by uploading a CSV file created by running a SQL file against the SIS.
  • Assist in assessing Canvas course design best practices by generating an inventory of specific Canvas features that courses use.
  • Find and replace text in Canvas pages.
  • List all cross-listed courses.
  • List admins at the account and subaccount level.


You can find the code for the core API functions, the utility functions, and the scripts that use them at my GitHub repository. I welcome any and all questions about the code or how to use it, and I’d be supremely grateful to receive recommendations for improving it.


Many thanks to Colin Murtaugh, Tobias Murray, and James Jones--sharing your work has inspired me to share mine.

Filter Blog

By date: By tag: