Event:page.completed· Destinations:HubSpotActiveCampaignIntercomSlack
The problem
Most onboarding sequences still run on clocks instead of behavior. That creates the worst possible user experience: users complete a step and still get nudged to do it again because the downstream systems in that workspace never heard about the progress update in time.
The technical problem is not detecting that a page or step was completed. It is getting that signal into the systems that drive email, in-app messaging, and internal follow-up per workspace without building a fragile chain of destination-specific handlers.
This pattern applies far beyond course products — SaaS setup flows, activation wizards, membership onboarding, and any product where finishing step 3 should change what happens next immediately, in every tenant and every environment.
The event flow
Meshes receives the source event once, maps it to the right destinations per workspace, and keeps delivery visible when downstream APIs fail.
Event payload
page.completed{
"user_id": "usr_5012",
"email": "alex@northstar.io",
"page_id": "page_connect-crm",
"page_title": "Connect your CRM",
"sequence_step": 3,
"completed_at": "2026-03-21T15:06:00Z",
"time_on_page_seconds": 522
}Meshes updates onboarding-step fields using the workspace's HubSpot connection.
Each workspace's CRM stays aligned with actual setup progress instead of stale assumptions.
Meshes applies the next-step tag in the workspace's ActiveCampaign connection to trigger the right follow-up.
Email automation inside each workspace moves as soon as the user completes the page, not hours later.
Meshes tags the user via the workspace's Intercom connection for context-aware in-app guidance tied to the new onboarding state.
The next tutorial or message in each workspace can appear with the right context instead of guessing what the user already finished.
Meshes sends a progress update to the workspace's connected Slack channel with the sequence step and page context.
CS, implementation, or product teams inside each workspace can spot activation movement and stalls in real time.
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
page.completedenters Meshes onceimport MeshesEventsClient from '@mesheshq/events';
const meshes = new MeshesEventsClient(
process.env.WORKSPACE_PUBLISHABLE_KEY!,
);
await meshes.emit({
event: 'page.completed',
resource: 'onboarding_sequence',
resource_id: 'workspace-setup',
payload: {
user_id: 'usr_5012',
email: 'alex@northstar.io',
page_id: 'page_connect-crm',
page_title: 'Connect your CRM',
sequence_step: 3,
completed_at: '2026-03-21T15:06:00Z',
time_on_page_seconds: 522,
},
});Across destinations
On every delivery
Why this matters
When step completion triggers the next sequence immediately inside the workspace, activation feels responsive instead of artificially delayed.
No team wants to email someone about a step they already finished. Behavior-driven routing keeps follow-up based on reality — in every workspace.
This is just as useful for customer-facing SaaS setup flows and membership onboarding as it is for course-style sequences. Meshes gives every workspace a reusable routing layer.
Related
Docs
See the event-ingestion pattern behind behavior-driven onboarding flows.
Open linkDocs
See how a single onboarding event can fan out into multiple follow-up systems per workspace.
Open linkIntegration
Keep onboarding fields and segmentation current inside each workspace's HubSpot.
Open linkIntegration
Trigger context-aware in-app messaging from real onboarding progress, per workspace.
Open linkBlog
See why activation workflows break when delivery logic is scattered across ad hoc jobs.
Open linkUse Case
See a companion pattern for launching in-app guidance from visit intent instead of page completion.
Open linkCompare
Compare behavior-driven onboarding with maintaining brittle step-completion workers yourself.
Open linkpage.completed through Meshes once and let every workspace's email, in-app guidance, and team visibility stay aligned with what the user actually finished.