Setting up Zulip for a class
Welcome to Zulip! This page will guide you through setting everything
up for teaching with Zulip. If you
are using Zulip for a different purpose, we recommend checking out the
moving to Zulip guide instead.
If you are a student, or if your Zulip organization is already set up,
you can proceed to the Using Zulip for a
class guide.
If you encounter any problems as you're getting started, please drop
by our friendly development community and let
us know!
Trying out Zulip
You can start by reading about Zulip for Education,
and how Zulip can become the communication hub for your class. Zulip
is the only modern team chat app that is
ideal for both live and asynchronous
conversations. Post lecture notes and announcements, answer students’
questions, and coordinate with teaching staff all in one place.
We also highly recommend trying Zulip for yourself! You can:
Choosing between Zulip Cloud and self-hosting
Whether signing up for Zulip Cloud or self-hosting
Zulip is the right choice for you depends on your needs.
If you aren’t sure what you need, our high quality export and import
tools (cloud, self-hosted)
ensure you can always move from our hosting to yours (and back).
Advantages of Zulip Cloud
- Simple managed solution, with no setup or maintenance
overhead. Sign up with just a few clicks.
- Always updated to the latest version of Zulip.
- Anyone can start with Zulip Cloud Free, which works well for a typical class.
- For large classes and departments, we offer special Zulip for
Education pricing, with the same
features as Zulip Cloud Standard. You can always get started with
Zulip Cloud Free, and upgrade down the line if needed.
Advantages of self-hosting Zulip
- Zulip is 100% open-source software, with
no "open core" catch.
- We work hard to make it easy to set up,
back up, and maintain a self-hosted
Zulip installation.
- Retain full control over your data. If cloud hosting is not an
option due to stringent data and privacy requirements (e.g., in the
European Union), self-hosting is the option for you.
- Customize Zulip for all your needs.
Do I need a separate Zulip organization for each class?
There are a few ways to set up Zulip, and different ones may be convenient for your needs:
-
If your school or department already has a Zulip organization,
you will probably find it easiest to just add your class to
it. Advantages:
- Students and staff can use a single Zulip account for all classes.
- You can create department-wide channels, e.g., for announcing talks or other events.
- You don’t need to set up a separate server if you’re self-hosting Zulip.
-
You can set up a separate Zulip organization for each class
you’re teaching. Advantages:
- This makes it simple to manage permissions, e.g., if you want to
make sure TAs from one class cannot moderate discussion from a
different class.
- Students can’t see who is in channels for other classes.
- You can easily switch between multiple Zulip organizations in
the Zulip desktop apps.
-
You can use a single Zulip organization for several classes
you’re teaching, perhaps re-purposing a Zulip organization from a
prior term. Advantages:
- Information from your classes is all in one place, e.g., if you
want to re-post a response to a question that was also asked
last time you taught the class.
If you change your mind down the line, you can rename your Zulip
organization by sending a request to
support@zulip.com.
Create your organization profile
The information in your organization profile is displayed on the
registration and login page for your organization, and in the Zulip app.
Edit organization profile
Your organization profile picture should be a square image. It will be displayed at
100×100 pixels, or more on high-resolution displays.
- Instructions for all platforms
-
Click on the gear () icon in the upper
right corner of the web or desktop app.
-
Select Organization settings.
-
On the left, click Organization profile.
-
Edit your organization name, type, description, and
profile picture.
-
(optional) Click Preview organization profile to see a preview of your
organization's login page in a new browser tab.
-
Click Save changes.
Add a wide logo
You can customize the logo users see in the top left corner
of the Zulip app. For best results:
-
The logo should be a wide rectangle image with an 8:1 width to height ratio.
It will be displayed at 200×25 pixels, or more on high-resolution displays.
-
Make sure your logo has a transparent background, and trim any bordering
whitespace.
To upload a logo:
- Instructions for all platforms
-
Click on the gear () icon in the upper
right corner of the web or desktop app.
-
Select Organization settings.
-
On the left, click Organization profile.
-
Under Organization logo, upload a new logo.
Make sure to test the logo in both light theme and dark theme.
Customize organization settings
Review the settings for your organization to set everything up how you
want it to be.
- Instructions for all platforms
-
Click on the gear () icon in
the upper right corner of the web or desktop app.
-
Select Organization settings.
-
Click on the Organization settings and Organization
permissions tabs, as well as any others that are of interest.
A few settings to highlight:
Roles and permissions
Zulip offers several levels of permissions based on user
roles. Here are some recommendations for
how to assign roles and permissions for a class.
Recommended roles and permissions for a single-class Zulip organization
Who |
Role |
Lead instructor, IT |
Owner (also has all Administrator permissions) |
Other instructors, head TA |
Administrator |
Teaching assistants, lab assistants |
Moderator |
Students |
Member |
Settings
These are the default permissions for new Education
(non-profit) and Education (for-profit) organizations.
Recommended roles and permissions for a department
Who |
Role |
IT |
Owner (also has all Administrator permissions) |
IT, department leadership |
Administrator |
Professors, Lecturers, head TAs |
Moderator |
Teaching assistants, lab assistants, students |
Member |
Settings
Create channels
Channels organize conversations based on who needs to see them. For example, it
is common to have a channel for each team in an organization. Because Zulip
further organizes messages into conversations labeled with
topics, there is generally no need to create
dedicated channels for specific projects.
We recommend setting up some channels before inviting other users to
join Zulip, so that you can automatically subscribe
everyone to the right set of
channels.
If you later create additional channels, no worries! You can always add
a group of users or all the members of another channel to a new channel.
Add clear descriptions to your channels, especially public channels.
How to create a channel
- Instructions for all platforms
-
Click on the gear () icon in
the upper right corner of the web or desktop app.
-
Select Channel settings.
-
Click All channels in the upper left.
-
Click Create channel on the right.
-
Fill out the requested info, and click Create.
For more details about channel settings, see Create a
channel.
Tips for creating channels
For most classes, the following channels are recommended:
- #announcements: For general announcements about the class. When
creating this channel, restrict posting
permissions so that only course staff
(administrators and moderators) are
allowed to post.
- #staff (private): For discussions among course staff.
- #general: For random topics, e.g., students forming study groups.
- A channel for each lecture or unit, e.g., “Lecture 1: Course
intro” or “Unit 3: Sorting algorithms”.
- A channel for each section/tutorial group (e.g., “Section 1”)
You can start by creating channels for just the first few
lectures/units at this point. When you create a new channel,
you will be able to copy channel membership from existing channels.
A few notes:
- Small classes may need just one discussion channel for all lectures.
- If you are using a single Zulip organization for
more than one class, all channel names should be prefixed with the
name of the class, e.g., “CS101 > Lecture 1: Course intro”.
Customize settings for new users
Customize settings for new users to get them off to a great start.
If using your Zulip organization for a single class, set default
channels for new users to include #announcements, #general,
and all lecture/unit channels.
Invite users to join
How to invite users to join
To simplify subscription management, be sure to set the channels
students and staff should be added to when you create the
invitations. You may choose to send invitations to course staff
separately, so that they can immediately be added to private channels
for your class.
- Require invitations
- Allow anyone to join
- Imported organizations
-
Configure allowed authentication
methods. Zulip offers a variety of
authentication methods, including email/password, Google, GitHub, GitLab,
Apple, LDAP and SAML. Users can log
in with any allowed authentication method, regardless of how
they signed up.
-
Invite users by sending email invitations or
sharing a reusable invitation link.
-
Allow users to join without an invitation.
-
Configure the appropriate email domain restrictions
for your organization.
-
Share a link to your registration page, which is
https://organization.zulipchat.com for Zulip Cloud organizations.
-
Configure allowed authentication
methods. Zulip offers a variety of
authentication methods, including email/password, Google, GitHub, GitLab,
Apple, LDAP and SAML. Users can immediately log
in with any allowed authentication method that does not require
a password.
-
Share a link to your Zulip organization, which is
https://organization.zulipchat.com on Zulip Cloud.
-
(optional) To log in with an email/password, users will need to set their
initial password. You can:
-
Automatically send password reset emails to all users in your
organization. If you imported your organization into Zulip Cloud, simply
email support@zulip.com to request this. Server
administrators for self-hosted organizations should follow these
instructions.
-
Let users know that they can request a password
reset
on your organization's login page.
To get everyone off to a good start, you may wish to share the guide
to Getting started with Zulip and the guide to
Using Zulip for a class.
If you create new channels later on, you can add users
by group or copy membership from another
channel (e.g., from Lecture 5 to Lecture 6).
Create user groups
User groups allow you to mention
multiple users at once,
notifying them about a
message. For example, you may find it useful to set up the following
user groups:
- @staff
- @TAs
- @graders
- @students
- @section1, @section2, etc.
How to create a user group
-
Click on the gear () icon in
the upper right corner of the web or desktop app.
-
Select Group settings.
-
Click Create user group on the right, or click the plus
() icon in the upper right.
-
Fill out the requested information, and click Continue to add
members.
-
Add users who will be members of the group, and click Create.
Note: You will only see the Create user group button if you have
permission to create user groups.
Set up integrations
Zulip integrates directly with dozens of products, and with hundreds
more through Zapier and
IFTTT. Popular Zulip integrations include
GitHub and
Twitter. The integrations
page has instructions for integrating with each
product.
Cleaning up at the end of a class
If you plan to use the same Zulip organization in future terms (either
for your own classes or for your department), you will likely want to:
- Rename all channels to indicate the class and term in which they were used, for
example:
- #announcements → #FA21 - CS101 - announcements
- #CS101 > Lecture 1: Course intro → #FA21 - CS101 > Lecture 1: Course
intro
- If you do not want students from future classes to see messages
from the prior term (e.g., because you posted homework solutions),
make all the channels from the class private. You’ll
be able to find and reuse content yourself, and invite course
staff to these private channels as needed.
- You may choose to deactivate students’ Zulip
accounts when the class is over.
- Unpin channels from the class from your
personal view.
If you do not plan to reuse the Zulip organization, you can instead:
Further reading