Flow not showing to users
Step 1 — Verify the flow is published
A flow only shows to real users when its status is Published. Check the flow in the dashboard — if it shows Draft or Paused, click Publish.
Step 2 — Check the snippet is loading
If the snippet isn't loading, no flows will show. Open your site, open DevTools (F12) → Network tab, filter by "iife.js". You should see a successful 200 response to cdn.getzenstep.com.
If there's no request or you see a 4xx/5xx error, see snippet not loading.
Step 3 — Check your URL rules
The most common cause of a flow not showing is a URL rule that doesn't match.
Open the flow's targeting settings and look at the URL rules. Then:
- Copy the exact URL path of the page you're testing (from the browser address bar — just the path, e.g.,
/dashboard/users) - Compare it against your URL rule character by character
- Check for: trailing slashes, subpaths you didn't account for, query strings
Common mistakes:
- Rule says
/dashboardbut page is/dashboard/(trailing slash) - Rule says
starts with /appbut page is/application/...— the prefix matches incorrectly - Rule says
equals /settingsbut you're on/settings/billing
Use the Preview function in the Chrome extension to test the flow on your exact URL. Preview mode bypasses targeting rules, so if it works in preview but not live, the issue is definitely in your targeting rules.
Step 4 — Check user attribute rules
If your flow has user attribute rules, verify that:
window.zenstep.identify()is being called on the page before the flow is evaluated- The attributes being passed include the fields your rules reference
- The attribute values match (check case —
"Grow"≠"grow")
Open the browser console and type window.zenstep to verify the snippet is loaded. If loaded, you can check identify has been called by checking for window.zenstep._identity (if exposed in your version).
Step 5 — Check frequency settings
If the flow is set to Once and the user has already seen it, it won't show again. Test in an incognito window (which has no stored frequency state) to rule this out.
If it shows in incognito but not for real users, the user has already completed or dismissed the flow.
To reset a user's frequency state: in the dashboard, go to the flow → Analytics → the user's hash → Reset. (Scale plan only.)
To reset your own state for testing: clear your browser's localStorage for your domain, or use an incognito window.
Step 6 — Check plan limits
On the Free plan, you can have 3 active flows. If you're at the limit and try to publish a 4th, it won't publish. Check Settings → Billing to see your active flow count vs your plan limit.
Step 7 — Verify identify() is called before flow evaluation
Zenstep evaluates targeting rules when the snippet initializes — approximately 500ms after page load. If your app calls identify() asynchronously after a network request, there can be a race condition where the flow evaluates before the user's attributes are available.
To fix: call window.zenstep.identify() as early as possible in your app's auth flow, before the user's first navigation to a page with flows.
Still not working?
If you've checked all of the above and the flow still isn't showing, contact support with:
- The flow ID (from the URL in the dashboard)
- The exact URL you're testing
- The user attributes being passed to
identify() - A screenshot of the flow's targeting rules
Was this helpful?
Related articles