← All use cases
LMS & course platforms

Instructors want course evaluations without leaving your LMS. Give them a survey tool for every course.

Instructors build course evaluations and knowledge checks inside your LMS, filed under their course. Learners answer on your course pages, in their own language.

Example: Coursewell is a fictional product and all numbers are sample data.

Start 14-day Pro trial with the Course Evaluation templateTalk to sales

Needs Pro. No card required for the trial.

9:41●●● ▮
Clearn.coursewell.example
Intro to Data Analysis · 3 minutes

How would you rate this course overall?

PoorExcellent
Secured by Coursewell

The phone is live: tap through the Coursewell survey.

Why platforms add it

What instructors ask you for

Learning management systems, course marketplaces, and corporate training platforms whose instructors want to ask learners questions.

“An evaluation at the end of every course”

The same questions for every run, so this cohort can be compared with the last one, without copying the learner list into another tool.

“A quick knowledge check after the module”

A few questions with an answer key and an explanation for each one, inside the lesson instead of on another site.

“Only my course’s results”

Each instructor sees the answers for their own course and exports them for the course review.

  • Instructors stay in your LMS
  • Learners answer on your course pages, in 18 languages
  • Each course sees only its own surveys and results
How it works

Three steps from sign-up to live

Your LMS signs the course as the subject of a five-minute embed token, together with the instructor and what they may do. Instructors get the survey list, the builder, and results for that course only. Learners answer in a respondent embed on the course page, signed with their learner ID, and a signed webhook tells your backend about every completed response, so the LMS can mark the evaluation as done.

  1. Step 1

    Instructors get a workspace for their course

    When an instructor opens the course’s surveys tab, your backend signs the course as the subject, together with the instructor and what they may do. Everything they create is filed under that course.

    server/course-surveys.ts
    const res = await fetch('https://api.responsedock.com/api/v1/auth/embed-token', {
      method: 'POST',
      headers: {
        Authorization: `Bearer ${process.env.RESPONSEDOCK_SECRET_KEY}`,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        workspaceId: process.env.RESPONSEDOCK_WORKSPACE_ID,
        role: 'admin',
        mode: 'workspace',
        allowedOrigin: 'https://lms.yourplatform.com',
        tenant: { id: school.id, name: school.name },
        user: { id: instructor.id, name: instructor.name },
        capabilities: ['questionnaire:create', 'questionnaire:edit',
          'questionnaire:publish', 'results:view'],
        subject: { type: 'course', id: course.id, label: course.title },
        theme, // parsed from your version-controlled theme file
      }),
    });
    const { embedUrl } = await res.json(); // { token, expiresIn: 300, embedUrl }
    // In the iframe page, file each new survey (blank or from a template)
    // under the course: 'responsedock.survey.created' → event.data.survey.id
  2. Step 2

    Learners answer on the last course page

    At the end of the course, request a respondent embed signed with the learner’s ID; with the “one per external user ID” rule, each learner answers once. Or send track('course_completed') with the browser SDK and let a trigger rule open the survey in a modal, or email the cohort from your dashboard.

    server/course-complete.ts
    const { embedUrl } = await fetch('https://api.responsedock.com/api/v1/auth/embed-token', {
      method: 'POST',
      headers,
      body: JSON.stringify({
        workspaceId,
        role: 'respondent',
        surveyId: course.evaluationSurveyId,
        allowedSurveyIds: [course.evaluationSurveyId],
        externalUserId: learner.id,
        allowedOrigin: 'https://lms.yourplatform.com',
      }),
    }).then((res) => res.json());
  3. Step 3

    A signed webhook reports each completed response

    Subscribe a webhook to survey.response.completed. Verify the signature and timestamp, then mark the evaluation or knowledge check as done for that learner. The payload carries the learner’s ID, the answer count and, for quizzes, the score and pass result, never the answers themselves.

    server/responsedock-webhook.ts
    import { createHmac, timingSafeEqual } from 'node:crypto';
    
    const secret = process.env.RESPONSEDOCK_WEBHOOK_SECRET;
    const ts = Number(req.headers['x-responsedock-timestamp']);
    const expected = 'sha256=' + createHmac('sha256', secret)
      .update(`${ts}.${rawBody}`).digest('hex');
    const received = String(req.headers['x-responsedock-signature-v2'] ?? '');
    if (Math.abs(Date.now() - ts) > 5 * 60_000 || received.length !== expected.length
      || !timingSafeEqual(Buffer.from(received), Buffer.from(expected))) {
      return res.status(401).end();
    }
    
    const { event, data } = JSON.parse(rawBody);
    if (event === 'survey.response.completed' && data.externalUserId) {
      await markCourseTaskDone({
        learnerId: data.externalUserId,
        surveyId: data.surveyId,
        completedAt: data.completedAt,
      });
    }
Product walkthrough

What your users see

ResponseDock supplies the survey engine. Your application keeps the relationship, context, and visual identity.

Your app signs the user, their course, and what they may do, and the survey list opens inside Coursewell. No second login and no separate dashboard.

Example screens: Coursewell is fictional and the data is sample data.

Start from a template

The Course Evaluation template, ready to use

These are the template’s real questions. Tap through the phone, then change anything in the builder. The colors come from your theme, not from the template.

9:41●●● ▮
Clearn.coursewell.example
Course Evaluation · about 4 min

How would you rate the overall quality of this course?

PoorExcellent
Secured by Coursewell
  1. Rating · requiredHow would you rate the overall quality of this course?
  2. Rating · requiredHow well did the course meet your learning objectives?
  3. Rating · requiredHow would you rate the instructor / facilitator?
  4. Multiple choiceWhich elements were most valuable to you?Course materials / slides · Live / interactive exercises · Q&A sessions · Real-world examples & case studies · Peer discussions
  5. Yes / no · requiredWould you recommend this course to a colleague?
  6. Long textWhat could be improved in future sessions?
Plans

What’s included on Pro

Surveys inside your product, under your brand. $39 per month. Needs Pro. No card required for the trial.

Pro · $39 per month

Surveys inside your product, under your brand

  • 10,000 responses / month
  • 50 surveys · 3 workspaces · 10 team members
  • 100 AI survey generations / month
  • 2,000 survey invitation emails / month
  • Embedded builder and results with signed sessions
  • Respondent embeds: inline, modal, or hosted
  • Browser SDK and React SDK (preview), API keys, and webhooks
  • Registration forms
  • Basic white-label: remove ResponseDock branding from surveys
Start 14-day Pro trial with the Course Evaluation template

When you need Business or Platform

Business · $149 per month

Your domain, 10 client workspaces, full white-label

50,000 responses / month · 200 surveys · 10 workspaces · 25 team members · 500 AI survey generations / month · 10,000 survey invitation emails / month · Full white-label, including a custom domain (set up with our team) · Option to send invitation emails without “via ResponseDock”

Platform · Custom

For platforms offering surveys to their own customers

Survey limits across all tenants, full white-label and custom domain, DPA, and priority support. Price on request.

Compare all plans →

Honest limits

What it does not do (yet)

  • There is no LTI or SCORM package. You connect your LMS from your own backend with the embed token, the browser SDK, and webhooks.
  • No completion certificates or badges: issue them from your LMS when the completed-response webhook arrives.
  • Learners see their quiz score, and the correct answers with your explanations, only when you turn those quiz settings on. Retakes need a survey that accepts more than one response per learner.
  • Open-text answers that cannot be graded on submission stay marked for review. ResponseDock does not grade them later, so give the final mark in your LMS.
  • The completed-response webhook carries the response ID, the learner’s ID, the number of answers, and for a quiz the score and pass or fail, not the answers themselves. Instructors read and export the answers in the course workspace.
  • Choice, yes/no, and number answers are scored automatically. Open-text quiz answers are graded against a reference answer by an AI model, and only when the server has one configured.
  • Feedback analysis runs in your ResponseDock dashboard, not inside the embedded course workspace.
FAQ

Questions platforms ask

Can each instructor see only their own course?

Yes. Sign the course as the subject of the embed token. Questionnaires created in that session are filed under the course, and list, results, and export requests for other courses are refused on the API.

How do learners get the evaluation at the end of a course?

Request a respondent embed with the learner’s ID and the course’s survey, and show it on the last course page. Or load the browser SDK, send track('course_completed', { courseId }) and let a trigger rule with the once-per-context frequency open the survey in a modal, once per learner per course. You can also send email invitations with one reminder from your ResponseDock dashboard.

Can course evaluations be anonymous?

Yes. Set the survey to anonymous: responses are stored without the learner’s ID, source, or device, and the completed-response webhook carries no learner ID, so your LMS can count completions without seeing who said what.

Do learners see their quiz score?

If you want them to. With “Show score at the end” on, the thank-you screen shows their points, the percentage, and whether they passed. With “Show correct answers and explanations” on, it adds a review of every scored question. The score is calculated on the server, and the answer key never reaches the browser before the learner submits. The completed-response webhook carries the score too, so your LMS can record a grade.

Does it work with LTI?

Not yet. There is no LTI or SCORM package; the integration runs from your backend with a secret key, an iframe, and webhooks, so it works with any LMS or course platform you control.

Can learners answer in their own language?

Yes. Respondent screens are translated into 18 languages, including right-to-left Arabic and Hebrew. Translate your questions in the builder, by hand or with the AI survey designer.

Which plan do we need?

Pro ($39 per month) includes the embedded workspace, the SDK, API keys, and webhooks, and you can try it for 14 days without a card. Business adds full white-label with a custom domain. Platform sets limits across all your tenants and is priced on request.