SurveyMonkey Quiz Auto-Grade and Certificate
When a SurveyMonkey quiz/assessment is submitted, the flow scores the answers against an answer key, records pass/fail and the score in Dataverse, emails the participant their result (with a generated certificate on a pass via Adobe PDF Services), and flags failures for a retake. Automates training assessment and certification.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow automates training-assessment grading from SurveyMonkey quizzes. For each new quiz response it reads the participant's score, grades it against a configurable pass threshold, records the result (score, pass/fail, full answers payload) in Dataverse, and emails the participant a certificate of completion (pass) or a retake notice (fail) via Office 365 Outlook.
Why it matters: Manually grading assessments and issuing certificates doesn't scale. Auto-grading gives instant results and certification while tracking competency in Dataverse for reporting and audit.
Built as solution FlowLibs - SurveyMonkey Quiz Auto-Grade and Certificate (unmanaged). Flow ships Off; going live requires only authorizing the three connections and setting the flowlibs_QuizSurveyId environment variable.
*As-built note:* the certificate is delivered as inline HTML in the pass email, so the as-built flow uses only the three listed connectors (no external PDF service). A true PDF certificate (Word Online template + GetFilePDF, or Adobe PDF Services) is offered as a customization.
Use Case
L&D / compliance teams running knowledge checks through SurveyMonkey want automatic grading, instant certificates for passers, retake prompts for the rest, and a Dataverse record of every attempt for competency tracking and audit.
Flow Architecture
When a quiz response is submitted
SurveyMonkey OnNewResponseAddedSurvey (polling 3 min, splitOn body)Fires once per new quiz response.
Initialize Correlation ID
Init Variable (String = guid())Trace ID across Dataverse + email.
Initialize Pass Threshold
Init Variable (Integer = 70)Minimum score to pass.
Initialize Certificate Issuer
Init Variable (String)Issuer name on the certificate.
Initialize Retake Link
Init Variable (String)Link sent to participants who fail.
Get Survey Details
SurveyMonkey GetSurveySurvey/quiz title for emails + record.
Compose Participant Score
ComposeRead numeric score from the response.
Compose Participant Name
ComposeBuild full name from first/last.
Compose Grade Outcome
ComposePass/Fail vs threshold.
Log Result To Dataverse
Dataverse CreateRecordPersist score, outcome, answers payload.
Check Pass Or Fail
Condition (If)On pass: Send Certificate Email (Outlook, inline-HTML certificate). On fail: Send Retake Email (Outlook) with score + link.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_QuizSurveyId | String | 000000000 | SurveyMonkey survey/quiz ID the grader monitors. Referenced by the trigger and Get Survey Details. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| SurveyMonkey | shared_surveymonkey | OnNewResponseAddedSurvey GetSurvey |
| Microsoft Dataverse | shared_commondataserviceforapps | CreateRecord |
| Office 365 Outlook | shared_office365 | SendEmailV2 |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Answer-key grading
- Swap Compose Participant Score for a Filter/length over triggerOutputs()?['body/pages'] compared to a flowlibs_AnswerKey JSON env var if your quiz doesn't pre-compute a score.
- Pass mark
- Change varPassThreshold (no logic edits).
- PDF certificate
- Replace the inline-HTML certificate with a Word Online template populate + GetFilePDF, or Adobe PDF Services, attached to the pass email.
- Attempt limit
- Query the Dataverse table by participant email before grading to cap retakes and escalate after N fails.
- LMS / competency sync
- Extend the record step to write completion into an LMS or competency table.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Score
Reads the quiz score from custom_value.
EXPR.02Pass gate
Grades against the threshold.
EXPR.03Participant name
Builds the full name.
EXPR.04Survey title
Quiz title with fallback.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.