Skip navigation
All Places > Canvas Developers > Blog > 2019 > July

Canvas Tips & Tricks


During our migration from D2L to Canvas, we've identified various tips and tricks, and other resources, that may be helpful as you learn how to design and facilitate your courses within the Canvas LMS. This is a living document with new resources being added as the migration continues.

Homepage and Navigation Bar

  • The left navigation bar in your Canvas course can be edited to simplify navigation for students. Check with your ID on which links should be hidden from students. 
  • If an item in the left navigation bar is grayed out, the instructors can access it by clicking on it. Students will not be able to see it. 
  • There is a Syllabus button in the left navigation bar in your Canvas course. The online courses are not using the Canvas syllabus and will use a Canvas syllabus page that can be added to a module and easily edited. Ask your ID how to hide the Canvas Syllabus link in the left navigation bar.


  • Assignments Tool video
  • You can go into your course in the student view and submit an assignment. Then you can leave the student view and see how the assignment looks and test grading it.  


  • When you create announcements, the new announcement will be at the top of the announcements list on the homepage with the older announcements below it.


  • Instructors must make changes/updates to discussions. If an Instructional Designer or anybody other than the instructor makes changes to a discussion, it shows the edit as a post and includes the name and icon of the person who made the edit.
  • Canvas discussions are arranged by chronological order. If you want the discussions to be in the same order, make sure you pin your discussions. 
  • By default, students are able to create discussion topics. Instructors must change this in Settings > Course Details > More Options.
  • The default setting for discussions is not the threaded discussion. To have a threaded discussion, choose the threaded reply option. If you have any questions, you can contact your instructional designer.  

Top 10 Tips Canvas Tips & Tricks


1. Hide unnecessary navigation items.

• Only necessary items are Home, Syllabus, Modules, and Grades

• If you use Announcements you will want to include that as well

• If you want students to be able to see the list of their classmates or self-enroll in groups you’ll want to include the People page


2. Build Chronological Modules

• Modules can be organized per week, topic, or theme

• When you name your module, include a topic key word or phrase as a subtitle so the students know the topic (e.g. Module


3: Desert Irrigation)

• Make sure to include all course components in a module so students can find them


3. Use Text Headers and Indentation to subdivide modules

• If your modules are long, you may want to consider creating a Page to consolidate items


4. Include a Course Resources module for items that don’t fit in a week/topic

• This could also include a page pointing your students to Canvas instructions


5. Write a brief course introduction and attach your Syllabus

• Once you’ve added the link to your Syllabus file, you can use the “Auto-open inline preview” function to let students see the syllabus without downloading


6. Use headers to organize information anywhere that you enter text

• Get comfortable with the Rich Content Editor since it is commonplace

• Keep your design simple and organized


7. Set due dates on all assignments

• Due dates feed into the Syllabus, Calendar, and To-Do List. Including dates is important not only for letting students know when it is due, but also helping them easily locate their assignments

• You can use the “Undated” area of the Calendar page to identify any assignments that you haven’t given a due date

• Use the “Available Until” date to set a hard deadline. Students will not be able to submit at all after this date has passed


8. Create “On Paper” or “No Submission” assignments for classroom assignments and activities

• These items should still have due dates


9. Embed resources rather than linking outside of Canvas to avoid distractions

• Sites like YouTube and Reddit know what kinds of content will grab your students’ attention. If you send them to those sites they are very likely to get distracted


10. These are generic guidelines. To identify more specific areas where you can improve your course design, contact your Instructional Designer


Optimize File Size

Each course has a limit of 450 MB. Here are some tips to optimize the size of your PowerPoint, Word and .pdf files and using our Box system (unlimited storage) with Canvas.

Here is a handy video on reducing file size for Word, PP, and .pdf files:

Managing course data

These steps will help you stay within your course quota of 450 MB.

If you decide to use Box here is a short instructional video on how it can be quickly done:

Sharing a Box folder in Canvas


Use Box with Canvas
Box is a perfect partner with Canvas for storing and sharing files in a course. You can share an entire folder of items to numerous Canvas courses and make changes/updates in just your Box folder. All references in courses are updated immediately and simply.
Install the Box app on mobile devices for better .pdf viewing.

Helpful resource:

original Canvas 101 for Instructors

Course Modules: original Canvas 101 for Instructors 

This is a self-paced Canvas Instructor Orientation course designed to familiarize instructors with the basic need-to-know tools and features of Canvas in an effort to prepare them for course design and delivery.



Larson reever

Assistant Professor of Practice College of Journalism & Mass Communications

A couple of days ago I decided to re-examine an issue that has annoyed me several times, the lack of a Question Bank API. The process began with some postings to followup the question raised by Jared Chapman in


This lead to some Tampermoney scripts (such as that enabled me to add question banks. This success lead to a desire for further automation and this lead me to investigate the combination of Puppeteer ( and Node to run Javascripts to create a question bank- the first result was Using Puppeteer to insert new question bank: Chip sandbox. After seeing what Puppeteer could do I expanded upon the program to have a program that would not only let me add question banks but would also output a JSON file of the resulting set of question banks (which of course could then be used with the Canvas API to insert questions into question banks!). The resulting program is documented at


Some obvious programs that could be derived from this last script would be:

  • to read a JSON file or CSV file that contains a list of question banks that one wants to create along with the course_id to create them in
  • a program to simply output the JSON for the existing question banks in a course

Of course, the real solution is to add a Question bank API. Meanwhile, quite a lot can be done despite the lack of such an API.


Once again I wish to thank James Jones and the many others who have provided examples of JavaScript and Puppeteer scripts. I still do not know how to use Puppeteer (well) and lack confidence in navigating DOM structures (especially of pages that have elements that lack IDs or that dynamically modify the Javascript on a page).

Embulk is an open-source bulk data loader that helps data transfer between various databases, storages, file formats, and cloud services. github contributors


Simply put, Embulk makes importing gzipped CSV files into any RDBMS* and managing the data and workflow necessary for Canvas Data using command line tools easy, really easy, specifically solving issues we experience working with Canvas Data without fancier tools.


with support for

Linux, OSX, Windows

MySQL, MS SQL Server, Oracle, PostgreSQL, RedShift


* Embulk goes beyond SQL, List of Embulk Plugins by Category


and features useful for Canvas Data

  • Decode gzipped files
  • The ability to intelligently guess the format and data types of CSV files
  • Parallel execution of tasks, multi-threading per CPU core, and a task for each batch file
  • Input CSV Plugin as default Input for Embulk
  • Filter data with Filter Plugins,
  • Output Data to SQL
    • Insert, Insert Direct, Replace, Merge, Truncate and Truncate Insert
    • Timestamp formatting
    • TimeZone conversion from UTC for date time columns
    • before_load and after_load, config options to run queries before (truncate) and after import (indexes)
    • and more


Embulk uses YAML config files for each task, for Canvas Data this means each input source (table files) and it's output destination (db table) is 1 file. This includes differences between staging, test and production destinations. I imagine your workflow and setup will be different than mine and many others. You may only need a few tables, or only have one database, or you could simply use Embulk to manage, manipulate, filter and possibly join CSV files to examine with Tableau if that's your thing. For this reason, I have only shared each set of config files for MySQL, MSSQL, Oracle, and PostgreSQL. I have not worked with RedShift.


Our old workflow, requires that we attempt to maintain the newest data from Canvas Data for reporting, attendance, API services and automation, and LTIs. One of our biggest issues is the size of the daily batch without deltas and the growing use of Canvas within our schools and how long importing everything can take, how slow and unnecessary it is to hold 6 years worth of data for this semester, tried different things in SQL and bash to limit the data quickly for the current school year in production, never implement. LTI queries for attendance and submissions are really slow. Then some days the downloaded files are 0 bytes, we must have lost internet, or there was duplicates and the table didn't load, and it takes until 2pm to get everything loaded. Sometimes there's new columns in the table and I forgot to read the release notes and we've truncated the table before importing, and it takes hours to import. And so on.


Some of these are human, some of these are manageable.


Our new workflow uses Embulk

  1. Download with Canvas Data CLI, some of that documented here
  2. Import all CD tables using CSV in SQL out to staging environment with Replace mode, this creates temporary tables for the import, if it fails, the previous version is still intact. After successful import, Embulk will drop the old table and run the after_load queries, I use this for enumerable constraints and indexes. I left a lot of examples in the configs.

    The Requests table config uses Insert mode to append the new rows.
  3. I use staging for Tableau reporting. For production, I only need to load the tables necessary for our LTIs and API services. Some of these configs are straight copies of the staging imports, except they point to production. Some of the configs create new tables using SQL in SQL out and importing filtered or composite tables from query results using

    heres' an example


Using RHEL7, 6 CPUs with 12 cores, and 16GB Ram, Embulk imports 7.9GB of CSVs into >1TB of SQL (no requests) in less than 4.5 hours, depending on which indexes you keep in the configs.


GitHub - ccsd/canvas-data-embulk-configs: YAML configs for importing Canvas Data with Embulk


Poh Duong

Ruby GEM for REST calls

Posted by Poh Duong Jul 3, 2019

The University of Adelaide has built a REST Client GEM as part of one of our integration projects.


The GEM has now been open sourced and available via The source code can be found at


The GEM main features are:

  • Retries for API calls
  • Ability to set authentication types and automatically populating the request with auth parameters
  • Re-auth for: OAUTH
  • Getting all data for paginated endpoints. (Only if the API implements pagination with headers links)


The GEM is built as a wrapper around the rest-client GEM (