Event: lesson.completed · Destinations: HubSpot, Mailchimp, Slack, ActiveCampaign
The problem
Course platforms and LMS products rarely struggle to record that a lesson was completed. They struggle to make the rest of the business react to that moment quickly and consistently. Marketing wants the next lesson sequence, instructors want visibility into momentum, and lifecycle tooling needs current progress context.
Without a delivery layer, teams end up stitching together one CRM sync, one email audience update, one Slack notifier, and one tag-based automation path. Those branches drift fast, especially when progress-based workflows depend on module milestones instead of calendar timing.
Students who finish Module 3 should not get the same follow-up as students stuck on Module 1. Behavioral routing keeps the business aligned with what the learner actually did, not what day they signed up.
The event flow
Each use case follows the same product story: Meshes receives the source event once, maps it to the right destinations, and keeps delivery visible when downstream APIs fail.
Event payload
{
"student_id": "stu_2048",
"email": "nina@academyflow.io",
"lesson_id": "lesson_customer-research",
"lesson_title": "Customer Research Fundamentals",
"module_id": "module_growth-foundations",
"module_title": "Growth Foundations",
"course_id": "course_creator-accelerator",
"completion_percentage": 62,
"time_spent_seconds": 1840,
"completed_at": "2026-03-21T14:18:00Z"
}HubSpot
Meshes updates lesson and progress properties so marketing and lifecycle automation can segment students by milestone.
Students who reach the right milestone can move into next-lesson or reminder paths without manual exports.
Mailchimp
Meshes adds the student to the right audience or list for next-lesson, reminder, or re-engagement sequences.
Email follow-up is driven by actual course progress instead of a fixed calendar drip.
Slack
Meshes sends a real-time lesson completion alert to #instructor-alerts with course and module context.
Instructors and customer education teams can see momentum while it is happening.
ActiveCampaign
Meshes applies a milestone tag tied to the module or completion threshold.
Behavior-driven automation can branch on the progress signal that matters most.
How Meshes handles it
Instead of maintaining separate workers, retry logic, and visibility per destination, Meshes gives you one event path, destination-aware routing, and built-in delivery guarantees.
From your product
import MeshesEventsClient from '@mesheshq/events';
const meshes = new MeshesEventsClient(
process.env.WORKSPACE_PUBLISHABLE_KEY!,
);
await meshes.emit({
event: 'lesson.completed',
resource: 'course',
resource_id: 'creator-accelerator',
payload: {
student_id: 'stu_2048',
email: 'nina@academyflow.io',
lesson_id: 'lesson_customer-research',
lesson_title: 'Customer Research Fundamentals',
module_id: 'module_growth-foundations',
module_title: 'Growth Foundations',
course_id: 'course_creator-accelerator',
completion_percentage: 62,
time_spent_seconds: 1840,
completed_at: '2026-03-21T14:18:00Z',
},
});Across destinations
On every delivery
Why this matters
Students respond better to the next lesson, reminder, or encouragement when it is triggered by actual progress instead of an arbitrary delay.
Course businesses need to know who is stalled, who is engaged, and who is moving fast. Progress-based routing keeps the rest of the stack aligned with that reality.
Completion-driven workflows are easy to imagine and messy to maintain. Meshes gives you the delivery layer those milestone automations depend on.
Related
Docs
See the fastest path from first event to routed delivery inside Meshes.
Open linkDocs
See how Meshes maps a single progress event to multiple downstream destinations.
Open linkIntegration
Keep progress-related properties and segmentation current inside HubSpot.
Open linkIntegration
Push lesson-completion alerts straight into the channel your team watches.
Open linkBlog
See why behavior-driven routing works better than one-off integration branches.
Open linkUse Case
See a related pattern for onboarding steps and multi-stage activation flows.
Open linkCompare
Compare milestone routing with maintaining course-progress workers and queue logic yourself.
Open link