Synap Academy
Synap Home
  • ๐Ÿ‘‹Hello there
  • ๐Ÿ†•What's new
    • Big features
      • ๐Ÿ“ฉCustom messages from attempt tables
      • โณLimit membership duration for user groups
      • โ“Question based marking
      • ๐Ÿ‘ฝCloze questions & new editor
      • ๐Ÿฆ„Customise questions in exams
      • ๐Ÿคธโ€โ™‚๏ธFlexi retakes
      • ๐Ÿ’ฟRecords of learning
      • ๐Ÿ‡Override attempt scores, comments & history
      • ๐ŸงชLab values / Additional exam resources
      • ๐Ÿ”–Bookmarking
      • โœ๏ธSingle Sign On (SSO)
      • ๐ŸŽSub portals
      • ๐Ÿ›‚Multi-factor Authentication (MFA)
      • ๐Ÿ—’๏ธNotepad on attempts
      • ๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธSynoptic
      • ๐ŸŽ–Override Grades
      • ๐Ÿ“ธGet webcam shots for identity verification
      • ๐Ÿ”Exam security: Lock exam attempts
      • โ›“๏ธShare links
      • ๐Ÿ›ฉ๏ธThe attempts table
      • ๐Ÿ“‹Anti cheat: disable copy & paste
      • ๐ŸฆšStudents Insights page
      • ๐Ÿงžโ€โ™‚๏ธGenerating quizzes
      • ๐Ÿฅ‡Exam certificates & resits
      • ๐Ÿ” Mark schemes/rubric marking
      • โœ…Marking & definition of completed attempts events -
      • ๐Ÿ‘ฏโ€โ™€๏ธCloning
  • ๐ŸŽฎInteractive demos
  • ๐Ÿƒโ€โ™‚๏ธGetting started
    • Overview
    • Content management
      • Notes
        • Dynamic notes
      • Surveys
      • Uploading content
        • Embed presentations
    • Billing & usage
  • โ“Quizzes
    • Creating a Quiz
      • Question types
        • Cloze question types
        • Audio recording questions
        • Audio/Video Stems and configurations
      • EMQs
      • Quiz Experience
      • Instructions & sections
      • Scoring on Synap (Points vs Credits)
        • Negative Scoring
        • Score by choice
    • Importing & Exporting Questions
      • Importing
        • Word Doc to CSV Format
        • Questions
        • EMQs
        • Sections
      • HTML formatting
  • ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆUsers & Groups
    • User types
    • Creating groups
      • Adding & inviting users by email
      • Generating user accounts
      • Importing new and existing users via csv
      • Customising messages to users
      • Sharing user group links
      • Advanced group settings
    • Manage groups
    • User information
    • Permissions
      • Global permissions
      • Specific permissions
      • Educator permissions
      • Markers permissions
  • ๐Ÿ‘จโ€๐Ÿ’ปExams
    • Understanding Exams on Synap
    • Create and Manage Exams
      • ๐Ÿ—๏ธ1. Setup: Exam
        • Dynamic exams
        • Customisation
      • ๐Ÿ”จ2. Build: Exam
        • Sections
        • Grades
      • โš™๏ธ3. Configure
        • Experience
        • Instructions
        • Results
        • Resits
        • Certificates
      • ๐Ÿš€4. Advanced
      • ๐Ÿ–‹๏ธMarking - Double & Blind
        • Adding custom marks & a mark scheme
      • ๐Ÿ“จ5. Share
        • Schedule
        • Publishing
        • Versioning
      • ๐Ÿ‘€6. Manage
    • Mark/Score attempts
    • Anti-Cheat features
      • Disabling Spellcheck for Exams
    • Proctoring
      • Proctoring with Rosalyn
        • Rosalyn Lock-down exam
        • Rosalyn Live Proctoring exam
        • Sitting a Rosalyn Proctored exam
      • Proctoring with Synoptic
        • Create a Synoptic exam
        • Reviewing Synoptic Sessions
        • Sitting a Synoptic Proctored Exam
        • Synoptic Best Practices & Trouble Shooting
      • Proctor Pricing
  • ๐Ÿ„Collections
    • Creating collections
      • Configure collections
    • Manage user group visibility
    • Collection mocks
    • Collections and the Study
    • Collection use cases
  • ๐ŸŽ๏ธCourses
    • Assignments
    • Course builder
    • Assigning a course
      • Viewing assignments & publishing new versions
    • Courses and assignment use cases
  • โš™๏ธPortals
    • Trouble shooting for your students
    • Portal Settings
      • General and branding
      • Registration settings
      • Email settings
      • Locale / Language settings
      • SSO Authentication
        • Auth0
        • JSON Web Tokens (JWT)
        • SAML with Okta (EU)
        • SAML with Okta (US)
      • Study and Self Practice settings
    • User Access
    • Data Management
      • Tag manager
      • Attributes
      • Records of learning
    • Sub portals
      • Creating sub portals
      • Branding sub portals
  • ๐Ÿ“ŠAnalytics
    • Fractal
    • Tags & facets
      • Facet best practice
    • Student Insights
    • Question statistics
  • โฌ…๏ธExports & Reporting
    • Attempts table & exports
    • Reporting platform (Depreciated)
    • Flag exports
  • ๐Ÿ”ŒIntegrations
    • ๐ŸชWebhooks
      • User Updated Webhook
      • Attempt Completed Webhook
      • Attempt override created
      • User Registered Webhook
      • Exam Completed Webhook
      • Attempt Submitted Webhook
      • Exam Submitted Webhook
      • Attempt Certificate Generated
      • Store Purchase Webhook (Legacy)
      • Completed Assignment Webhook
      • Flag Planted Webhook
      • User Added to User Group Webhook
      • User Registered for Exam Webhook
      • Learning Record Webhooks
      • Invite sent
    • Integrations & APIs
    • Single Sign On
    • โšกZapier
      • ๐ŸŸขGet started
      • ๐Ÿ”ซTriggers
      • ๐ŸŽฌActions
      • ๐Ÿ—๏ธExample Workflows
    • Segment
      • Test & Question Analytics
    • Google Analytics
    • Custom Domain (CNAME)
    • Synap Mobile Apps
  • ๐Ÿš€Using Synap
    • Admin Account
    • Synap Students
Powered by GitBook
On this page

Was this helpful?

  1. Integrations
  2. Webhooks

Exam Submitted Webhook

This event is triggered when a user's Exam attempt has been Submitted by a user.

  • For exams which are automatically marked (e.g. pure MCQ exams), this will be sent at the same time as the Exam Completed webhook.

  • For exams which are manually marked, this will be sent before the Exam Completed webhook. Submitted means that the user has Submitted the exam. Completed means that the exam, along with any associated marking, has been completed.

  • This webhook will only be sent for an Exam attempt. To respond to any attempt on the platform, regardless of whether it is part of an Exam or not, you should use the Attempt Completed and/or Attempt Submitted webhooks

  • If you are looking to use mark/score information, you should generally use the Exam Completed webhook instead, as this will be guaranteed to include marking information even if an exam required manual marking. The Submitted webhooks will only contain marking information if the exam could be automatically marked.

Request Details

The request will POST a JSON payload that conforms to the following Typescript interface:

interface ExamSubmittedWebhookBody {
  user: {
    id: string;
    name: string;
    email: string;
    customAttributes: Record<string, unknown>;
  };
  portal: { id: string };
  meta: { timestamp: string };
  attempt: {
    score: number;
    scoreFrac: number;
    totalAnsweredCorrectly: number;
    id: string;
    isExam: true;
    state: {
      responseQuestionMap: string[][];
      isRevoked: boolean;
      isStarted: boolean;
      sections: {
        items: [
          {
            sectionId: string;
            responseIds: string[];
            isOpen: boolean;
            isUnlocked: boolean;
            isCompleted: boolean;
            totalQuestionsCompleted: number;
            totalQuestionsSkipped: number;
            marks: Marks;
            timeStarted: string;
            timeCompleted: string;
            timeSpentInMs: number;
            score: number;
            scoreFrac: number;
            totalCorrect: number;
          }
        ];
      };
      timeStarted: string;
      timeCompleted: string;
      timeSpentInMs: number;
      results: { markingStatus: string; pendingMarks: number; status: string };
    };
    marks: Marks;
    totalQuestions: number;
    tags: {
      nonFacetTags: string[];
      skill: string[];
      difficulty: string[];
      subtopic: string[];
      topic: string[];
      subject: string[];
      module: string[];
      exam: string[];
    };
    totalAnswered: number;
    timeStarted: string;
    timeCompleted: string;
    timeSpentInMs: number;
  };
  test: { id: string; title: string };
  exam: {
    id: string;
    name: string;
    resitCount: number;
    sourceTests: string[];
    sectionGrades: {
      id: string;
      marks: Marks;
    }[];
  };
  id: string;
  timeStarted: string;
  timeCompleted: string;
  timeSpentInMs: number;
}

This should contain all of the information you need for most common use cases, such as emailing a confirmation to the user, or adding the attempt information to another system. You can also use this in conjunction with our APIs to fetch more data if needed.

PreviousAttempt Submitted WebhookNextAttempt Certificate Generated

Last updated 6 months ago

Was this helpful?

๐Ÿ”Œ
๐Ÿช