The exact same survey can feel helpful or annoying depending entirely on when it appears. Timing is the single biggest factor in survey success.
Show surveys after positive moments, never during tasks. The best triggers are: completing an action, reaching a milestone, returning after time away, or after multiple successful sessions. Avoid: app launch, during checkout, after errors, or mid-task.
Users in different mental states respond completely differently to the same survey.
Just accomplished something. Feeling good about the app. Open to reflection.
Browsing casually. No strong feelings either way. Might engage if easy.
Frustrated by an error. Interrupted mid-task. Will resent the interruption.
Your goal: catch users in positive or neutral states. Never interrupt negative moments.
These moments consistently deliver high response rates.
User just accomplished something. They're in a good mood and have a moment before moving on. This is peak survey time.
Milestones are natural pause points where users reflect on their progress. They feel accomplished and are receptive to feedback requests.
Users who return after a break are re-engaging with your app. It's a natural moment to check in without interrupting a flow.
Users who've had 3-5 sessions have real experience with your app. They can give meaningful feedback without being total newbies.
When users explicitly indicate satisfaction (like resolving a support ticket marked "helpful"), strike while the iron is hot.
These moments guarantee low response rates and user frustration.
Users haven't done anything yet. They have nothing to say about an experience they haven't had. Plus, they're trying to use your app for a reason.
Users are in the middle of a critical flow. Any interruption risks abandonment. Wait until after they've completed the transaction.
Users are already frustrated. A survey at this moment feels tone-deaf at best, insulting at worst. Give them time to recover.
Users are waiting for something they want. Showing them something they didn't ask for during that wait is frustrating.
Never interrupt users while they're typing, dragging, or otherwise actively engaged in an action. Let them finish first.
Users are still learning how the feature works. They need more experience before they can give useful feedback.
Different app types have different optimal trigger points.
Even perfect timing fails if you ask too often.
Even if a user hits multiple triggers, never show more than one survey per month. Users remember being asked.
Never show more than one survey in a single session, no matter how many triggers they hit.
If a user dismisses surveys three times, they've clearly communicated they don't want to participate. Respect that.
Set up timing rules without writing complex logic.
Fire surveys after specific events in your app. Call a single line of code when the event happens.
Set minimum days between surveys directly in the dashboard. The SDK handles the rest.
Show surveys to only a percentage of users who hit triggers, reducing overall survey fatigue.
Change trigger settings without app updates. Adjust timing based on response data.
After positive moments: completing tasks, reaching milestones, or after multiple successful sessions. Never during tasks or after errors.
Maximum once per 30 days per user. Even if they hit multiple triggers, maintain this minimum gap.
No. Users have no experience to share yet and are trying to use your app. Wait until they've had meaningful interactions.
After 3 dismissals, stop showing surveys to that user. They've clearly communicated they don't want to participate.
Start collecting feedback at exactly the right moments.
Start free trial14-day free trial. Perfect timing awaits.