@JoeGrogan Welcome!
Yes, there is a way! You mention uploading a large number of users to a course. I would recommend using a CSV file formatted with the enrollments.csv columns (instructions here) and then performing a SIS import. The default behavior is to NOT notify the user when they're added to a course using a SIS import.
To prevent access to the course, you can do either the following:
- Set the start and end date for each enrollment -- this overrides any term dates if you have any set
- Just don't publish the course until you're ready
Pro-tip! The easiest way to get a properly formatted file and prevent any issues is to download enrollments.csv from a Report (instructions here) and then wipe all rows except row 1 and then fill in the correct data. ALSO please try this import in the BETA instance of your Canvas instance before pushing it out to the live instance and ensure that the students are loaded correctly into the course.
Hope this helps!