What you need
- An event from your app when the user approaches a plan limit
- A way to pass the usage context as event properties
- A Stripe integration is handy but not required
Send the signal from your app
When a free-plan user hits 80% of any plan limit, fire an event via the Send event endpoint:approachingPlanLimit event is specific to your app’s usage tracking. The Stripe integration covers subscription, invoice, checkout, quote, and dispute events (see the full list in the integration doc), but usage-limit events still need to come from your own backend.
Build the workflow
1
Trigger on Event received
In the Workflow builder, pick Event received and select
approachingPlanLimit.2
Filter on plan
Add an audience filter to your workflow so you only send to
free-plan users:
planName = Free. Set the filter scope to All following nodes.3
Personalize the email
Use event properties directly in the email. In the
editor, click the
⚡️ icon above the editor or type { and then the event property name:4
Send a follow-up email
Add a follow-up email to your workflow that is sent 3 days after the initial email.
Your initial “All following nodes” audience filter will still be applied to the follow-up email.
Why event-triggered beats scheduled
Scheduled “here is our pro plan” campaigns hit people who aren’t close to a limit and who did nothing to prompt the message. Event triggers mean every send goes to a user with a concrete reason to upgrade right now.Measuring success
- Open rate: should be higher than a generic upsell because the subject can cite the specific resource
- Upgrade conversion: track via your existing billing system, not in Loops
- Unsubscribe rate: watch this closely, over-sending upsells is a fast way to lose users

