1Getting started
You need a presenter account to build and run sessions. Your audience needs nothing — no app, no sign-up.
- Register a presenter account. Open your ClassPulse site and choose Get started. On a brand-new deployment the first person to register becomes the administrator automatically, already verified — so you can sign in immediately.
- Verify your email (everyone after the first). Later sign-ups receive a short code by email and enter it once to activate the account. Lost the email? Use resend verification code on the verification page.
- Sign in. That's it — you land on your dashboard, where sessions live on the left and the one you're editing opens on the right.
2Sessions
A session is a container for your questions and the join code your audience uses. Build it once; reuse it whenever you like.
- Create a session. Click + New session. It opens with the title selected, so just type its name; the session list updates as you type and the name saves itself. Rename it any time by clicking the title. The list can be sorted newest or oldest first, by name, or by recently used (the menu beside the Active/Archived tabs; your choice is remembered). Each session gets a unique 6-character code (letters and numbers) and a matching QR code and join link.
- Add questions. Click + Add question, pick a type, write the prompt, and fill in its options. Reorder questions with the arrows beside each one; duplicate, copy or delete from each question's row.
- Activate it. A session is closed to the audience until you Activate it. Activating opens joining and unlocks Present. Deactivate any time to stop new responses.
Reusing questions
- Copy to… on a question copies it into another of your sessions, with its options and quiz answer but not its responses. Uploaded images are copied too, so the copy keeps working if you later delete the original session.
- New session from this starts a fresh session with copies of every question (no responses) and its own join code. Use it to run the same lesson with another class. It works from archived sessions too.
- Hide a question (● Live / ○ Hidden) to take it off the audience page and Present while keeping its results. The session's Results view still shows it.
- Delete a question to remove it for good. If it has responses, you're told how many and asked to confirm; they're deleted with it.
- Archive a session you've finished with. It moves to the Archived tab, closes to the audience and can't be edited, but its results and export stay available. Unarchive brings it back.
How the audience joins
Share any of these — all three lead to the same place:
- The QR code (shown in present mode and on the session) — scan and go.
- The join link for the session.
- The 6-character code, typed into the Join a session page.
Participants are anonymous and need no account. Each person gets one response per question; submitting again replaces their previous answer rather than adding a vote.
3Question types
Fifteen types, mixable within one session. Options are entered one per line unless noted.
Multiple Choice
One answer from a list. The classic poll or comprehension check.
Select All
Like multiple choice, but participants can pick several options at once.
Poll w/ Other
Multiple choice plus a free-text “Other” box for the option you didn't list. Results list the typed “Other” answers under the chart.
Ranking
The audience puts a set of items in order, best first, using the up/down arrows beside each one. Results show each item's score, best first: a longer bar means ranked higher.
Rating Scale
A star rating for confidence, satisfaction, or agreement. Results show the distribution.
Numeric
Collect a number, decimals included. Results include the running average.
Short Answer
Free-text responses, shown as a live list.
Word Cloud
Short answers that build a word cloud in real time — great for warm-ups and sentiment. Each answer counts as a whole phrase, so “machine learning” stays together.
Image Choice
Vote between images — design critiques, “which looks right?”, spot the difference. Results display the images with live tallies.
Label|https://image-url per line. At least two.Emoji Poll
Answer with a single emoji — instant mood checks and reactions. Results grow each glyph with its share of the vote.
Grid / Matrix
Tap one cell of a labelled grid. A 2×2 “Likelihood × Impact” grid is a classic risk matrix; bigger grids work as heatmaps.
Scatter Plot
Drop a point anywhere on a labelled plane — predictions, estimates, “where do you stand?” Results plot every respondent's dot live.
Pin on Image
Tap a spot on an image: label a diagram, find the bug in a screenshot, mark a place on a map. Results show every pin on the image; clusters show where the room agrees.
Slider
Drag a slider between two labelled ends, e.g. “How confident are you?” from “Not at all” to “Completely”. Results show the spread with the average and median.
Points Allocation
Each person shares out a budget of points across the items, so you see how strongly the room prefers each one, not just which won. Answers must use exactly the full budget.
Quiz mode
Multiple choice, select-all, image choice and numeric questions can carry a correct answer. Set it in the question editor under Quiz answer (for select-all, list every correct option; for numeric, give the value and how close counts). In Present, a quiz question shows only how many have answered, so early answers don't steer the room. Press Reveal answer (or R) to show the results with the correct answer in green and the percentage who got it right. Revealing closes the question, and each student's page tells them whether they were right. You can hide the answer again, and fix a wrong answer key even after responses arrive. Answers stay anonymous: there is no leaderboard.
4Presenting live
Present mode is the big-screen view for the room — questions and results, updating as answers land.
From an active session, click Present. You get:
- A full-screen join page (QR code and session code) to open with — press space to flip between it and the results.
- A slim join panel beside the results, so latecomers can still scan while you present.
- One question at a time, with its live chart, word cloud, or image tallies.
- An overview grid of every question — click any card to enlarge it.
- Move between questions with the on-screen ← Prev / Next → buttons or the ← → arrow keys.
- Reveal quiz answers with the Reveal answer button or the R key (see Quiz mode).
Because everything streams over a live connection, you never refresh — bars grow, words appear, and counts tick up while you talk.
5Results & export
Review responses live during the session or afterward, and take the raw data with you.
Reading results
- Choice, select-all, numeric, poll-with-other render as bar charts (numeric also shows the average; poll-with-other lists the typed “Other” answers). Quiz questions show the correct answer in green with the percentage correct.
- Ranking shows each item's score, best first: a longer bar means ranked higher.
- Slider shows how answers spread between the two end labels, with the average and median.
- Points allocation shows the average points each item received per person.
- Pin on image draws every pin on the image.
- Rating shows the spread across the star scale.
- Word cloud and short answer show the text — as a cloud or a list.
- Image choice shows each image with its live vote tally.
- Emoji sizes each glyph by its share of the vote, with counts and percentages.
- Grid / matrix shades the cells as a heatmap — hot cells are where the room clustered.
- Scatter plots every respondent's dot; colour and size carry the extra dimensions if enabled.
Exporting to CSV
Export a whole session or a single question. The file has one row per response with these columns:
response_id, question_id, session_id, response_value, respondent_id, timestamp
Open it in any spreadsheet for grading, analysis, or your records.
6Cohort mode: let the audience ask
Turn on cohort mode and your audience can propose questions and upvote each other's — you stay in control of what actually goes live.
- Enable it on the session. Open the Audience proposals panel and switch it on.
- The audience proposes and votes. Participants see a + Propose a question button and can anonymously suggest questions and upvote the ones they'd most like asked.
- Moderation runs automatically. Every proposal passes a keyword filter first; if an AI provider is configured, an extra check runs too. Anything flagged is hidden from the public list and waits for you.
- You decide. Review proposals from your dashboard — approve, reject, unflag, or merge. Approving a proposal turns it into a live question in your session.
instance/moderation_keywords.txt on the server.
7Accounts & admin
Administrators manage who can present. Most presenters never need this section.
- The first registrant is the admin; there is no built-in default account.
- From Manage Users, an admin can Verify a user directly (handy if a verification email went astray), Block someone (they can't sign in or re-register until unblocked), or Delete an account permanently.
- Sign-ups can be restricted to specific email domains (for example, only your institution's addresses).
- Every page footer shows the exact build running, linked to its commit — handy when reporting an issue.
Deleting your own account
Any presenter can delete their own account from the Account page (confirm with your password). Deletion is permanent and immediate — it removes your account and every session, question, and result you created, with no recovery. ClassPulse treats survey data as disposable, so there is no trash to restore from afterward.
8Self-hosting
ClassPulse is open source and runs anywhere Docker does. The repository is the source of truth for setup and operations.
- README — features, local setup, and configuration overview.
- DEPLOYMENT.md — Docker / reverse proxy / persistence, and email & AI provider settings.
- SECURITY.md — the security model and required settings.
- .env.example — every environment variable, documented.
EMAIL_PROVIDER (Resend, SMTP, or Gmail) in your .env to send mail. The app warns about this at startup.