Using trigger fields
Every Alva Courses trigger starts with the student as a Shopify customer, followed by Course ID, Course title and Course URL. Lesson triggers add Lesson ID, Lesson title and Lesson URL. Every field is always sent: text that doesn't apply is empty, and a number that doesn't apply is 0.
In a Condition, choose the field from the trigger's data. In an action's text, insert it with Add a variable. Flow writes each field name in camelCase there, so Course title becomes {{ courseTitle }}. Use the picker rather than typing names, so fields with ID or URL in their name come out exactly right.
Course and lesson links open your storefront, where the student signs in to see the course. Dates and times are text in ISO 8601 format and in UTC, such as 2026-10-01T09:30:00.000Z.
Enrolment and progress triggers
These triggers follow a student through a course, from enrolment to completion. Use them to tag or thank students, sync progress to an email tool, or alert yourself when a quiz goes badly. Each fires once per real change, never for a repeated request.
Course enrollment created
A customer was enrolled in an Alva course by purchase, by you, or by CSV import, membership tag, free self-enrollment or a Flow action.
| Field | Type | What it holds |
|---|---|---|
| Customer | Shopify customer | The enrolled student, with every Shopify customer field such as email and tags |
Course ID |
Text | The Alva course ID |
Course title |
Text | The course title |
Course URL |
URL | Link to the course on the storefront (the student signs in to open it) |
Enrollment source |
Text | How the student was enrolled: purchase, manual, import, membership tag, free or flow |
Order name |
Text | The order that granted access, such as #1001. Empty unless purchased |
Access expires at |
Text | When access expires (ISO 8601). Empty means unlimited |
Fires once, when the enrolment is created. Extending, renewing or restoring access doesn't fire it again; removing a student and enrolling them again does, because that is a new enrolment. An enrolment made by the Enroll customer in course action has Enrollment source set to flow.
Course lesson completed
A student completed a lesson in an Alva course. Fires again if they complete it again after their progress was reset; see Repeat completion.
| Field | Type | What it holds |
|---|---|---|
| Customer | Shopify customer | The student who completed the lesson, with every Shopify customer field such as email and tags |
Course ID |
Text | The Alva course ID |
Course title |
Text | The course title |
Course URL |
URL | Link to the course on the storefront (the student signs in to open it) |
Lesson ID |
Text | The Alva lesson ID |
Lesson title |
Text | The lesson title |
Lesson URL |
URL | Link to the lesson on the storefront |
Lessons completed |
Number | Lessons the student has completed in this course |
Total lessons |
Number | Lessons in the course |
Percent complete |
Number | Course progress, 0 to 100 |
Repeat completion |
True or false | Whether the student completed this lesson before and their progress was reset since. Add a condition on this to reward each lesson only once |
Fires the first time a student completes a lesson. Completing it again sends nothing, unless their progress was reset in between: then it fires again with Repeat completion set to true. To reward each lesson once, add a condition that Repeat completion is false.
Course completed
A student completed an Alva course: every lesson, any required quizzes, and a passing evaluation where the course requires one.
| Field | Type | What it holds |
|---|---|---|
| Customer | Shopify customer | The student who completed the course, with every Shopify customer field such as email and tags |
Course ID |
Text | The Alva course ID |
Course title |
Text | The course title |
Course URL |
URL | Link to the course on the storefront (the student signs in to open it) |
Completed at |
Text | When the course was completed (ISO 8601) |
Grade |
Text | The evaluation letter grade. Empty when the course has none |
Final score |
Number | The evaluation score. 0 when the course has none |
Evaluation required |
True or false | Whether an instructor had to pass the student's coursework |
Fires the first time a student completes the course. For a course that requires evaluation, that is the moment you pass their coursework, not when they finish the last lesson. If you reset their progress, or the Reset course progress action does, completing the course again fires it again; a student resetting their own progress doesn't.
Course quiz graded
A student's quiz attempt in an Alva course passed, failed or timed out. Quizzes needing manual review fire once you've reviewed them.
| Field | Type | What it holds |
|---|---|---|
| Customer | Shopify customer | The student who took the quiz, with every Shopify customer field such as email and tags |
Course ID |
Text | The Alva course ID |
Course title |
Text | The course title |
Course URL |
URL | Link to the course on the storefront (the student signs in to open it) |
Lesson ID |
Text | The Alva lesson ID |
Lesson title |
Text | The lesson title |
Lesson URL |
URL | Link to the lesson on the storefront |
Quiz ID |
Text | The Alva quiz ID |
Quiz title |
Text | The quiz title |
Result |
Text | passed, failed or expired |
Passed |
True or false | Whether the student passed |
Score |
Number | The score as a percentage |
Passing score |
Number | The percentage needed to pass |
Attempt number |
Number | Which attempt this was, starting at 1 |
Manually reviewed |
True or false | Whether you graded any answers by hand |
Answers |
Text | One line per question: the question, the student's answer, and whether it was correct |
Fires when an attempt is passed or failed. A timed attempt that runs out fires with Result expired once Alva Courses notices: when the student submits, starts the quiz again or their answers are saved. Quizzes with answers you mark by hand fire after you review them, and changing a grade from passed to failed, or back, fires again with the new result.
Answers has one line per question with the student's answer and whether it was correct. On very long quizzes it may be shortened so the trigger stays within Shopify Flow's size limit.
Access triggers
These triggers report a student losing access, or about to. Use them for renewal reminders, win-back offers, or to tidy up tags and lists. Expiry triggers come from an hourly check, so they arrive within the hour rather than at the exact minute.
Course access removed
A student lost access to an Alva course: unenrolled, refunded, member deleted or revoked by Flow. Not fired by removing a membership tag.
| Field | Type | What it holds |
|---|---|---|
| Customer | Shopify customer | The student who lost access, with every Shopify customer field such as email and tags |
Course ID |
Text | The Alva course ID |
Course title |
Text | The course title |
Course URL |
URL | Link to the course on the storefront (the student signs in to open it) |
Reason |
Text | unenrolled, refunded, member deleted or revoked by flow |
Reason is unenrolled when you remove the student from the course, refunded after a refund, member deleted when you delete the member (once for each course they had), or revoked by flow. Removing a membership tag, deleting a course, uninstalling Alva Courses and customer data erasure don't fire it, and access running out fires Course access expired instead.
Course access expiring soon
A student's access to an Alva course expires in 14, 7, 3 or 1 days. Add a condition on Days until expiry to choose when to act.
| Field | Type | What it holds |
|---|---|---|
| Customer | Shopify customer | The student whose access is expiring, with every Shopify customer field such as email and tags |
Course ID |
Text | The Alva course ID |
Course title |
Text | The course title |
Course URL |
URL | Link to the course on the storefront (the student signs in to open it) |
Access expires at |
Text | When access expires (ISO 8601) |
Days until expiry |
Number | 14, 7, 3 or 1 |
Fires at most once for each of 14, 7, 3 and 1 days before access ends, and only for the nearest one already reached, so a student enrolled with 5 days left gets 7, never 14 and 7 at once. Extending their access starts the countdown again. Revoked students, membership-tag access and free courses are left out.
Course access expired
A student's access to an Alva course reached its expiry date, plus your grace period.
| Field | Type | What it holds |
|---|---|---|
| Customer | Shopify customer | The student whose access expired, with every Shopify customer field such as email and tags |
Course ID |
Text | The Alva course ID |
Course title |
Text | The course title |
Course URL |
URL | Link to the course on the storefront (the student signs in to open it) |
Access expired at |
Text | When access expired (ISO 8601) |
Access enforced |
True or false | Whether Alva blocks expired students. When off, the student can still open the course |
Fires once the expiry date plus any grace period has passed, whether or not you block expired students; Access enforced tells you which. It skips deadlines that passed more than 48 hours before the check, so turning on a workflow never replays old expiries. Access expired at is the expiry date itself, without the grace period.
See also
Was this helpful?
Last updated 2026-10-01
Comment, coursework and certificate triggers
These triggers cover conversations and assessed work: a student comments, you reply, a student submits coursework, you evaluate it, and a certificate goes out. Use them to post comments to Slack, email students your replies, or keep a record of grades.
Course lesson comment postedA student posted a comment or a reply on a lesson in an Alva course.
Course IDCourse titleCourse URLLesson IDLesson titleLesson URLComment IDComment textIs replyFires for comments and replies written by students, whether or not Alva Courses emails you about new comments. Your own replies fire
Course instructor reply postedinstead.Course instructor reply postedYou replied to a student's lesson comment in an Alva course. The customer is the student you replied to.
Course IDCourse titleCourse URLLesson IDLesson titleLesson URLReply textComment IDFires when you reply to a comment a student wrote. The customer is that student, so the workflow can email them. Alva Courses doesn't email students about your replies itself, which is what this trigger is for.
Course coursework submittedA student submitted their coursework for evaluation in an Alva course.
Course IDCourse titleCourse URLSubmission numberFires each time a student submits coursework for evaluation, including a resubmission after you asked for a revision.
Course coursework evaluatedYou evaluated a student's coursework in an Alva course, as a pass or as a request to revise.
Course IDCourse titleCourse URLOutcomeGradeFinal scoreFeedback visible to studentSubmission numberFires when you pass the coursework or ask for a revision. A pass that completes the course also fires
Course completed. Your written feedback isn't included, because it can be long and personal.Course certificate issuedAn Alva course certificate was emailed to a student.
Course IDCourse titleCourse URLIssued atFires when Alva Courses emails a student their certificate, including one sent by the
Send course certificateaction. Resending a certificate from the member page doesn't fire it again, and a certificate a student only downloads fires nothing.