A common SaaS lifecycle pattern: celebrate when a user completes onboarding, and re-engage the users who stall. This recipe sets up both with two workflows. The core idea: fire an event from your app when the user completes onboarding and update anDocumentation Index
Fetch the complete documentation index at: https://loops.so/docs/llms.txt
Use this file to discover all available pages before exploring further.
onboardingCompletedAt contact property in the same request. The celebration workflow triggers from the event, and the stalled-user workflow filters out contacts with a completion timestamp.
What you need
- A timestamp contact property like
onboardingCompletedAt - A named event for “onboarding completed”
- The Loops API or an integration writing into Loops
Set up the trigger
Use the Event received workflow trigger with an event name likeonboardingCompleted.
Update the contact’s onboardingCompletedAt property at the same time so your stalled-user workflow can exclude users who already finished.
If you prefer using contact property changes as the trigger, see the Contact updated approach used in the lifecycle emails guide.
Send the event from your app
Call the Send event endpoint when the user finishes the last onboarding step. The API accepts contact properties as top-level fields in the same request:
Create the workflow
In the Workflow builder, pick Event received and select
onboardingCompleted.Catching users who stall
The other half of this recipe is a separate workflow that fires when a contact is added but does not complete onboarding within a timer window.Trigger on Contact added
Pick Contact added as the trigger.
Filter on onboarding state
Use an audience filter to only send if
onboardingCompletedAt is empty.Measuring success
- Open rate on the celebration email: should be >50% because it is expected
- Click-through on the stall nudge: track with the
email.clickedwebhook - Completion lift: compare
daysToCompletedistributions before and after this workflow ships

