What Is a Monthly Active User (MAU)?
A Monthly Active User (MAU) is any unique user who has been identified in your Userflow environment within a rolling 30-day window. Your MAU count determines your billing tier. If it goes over your tier's limit, you're upgraded to the next MAU tier automatically.
What Counts as an MAU?
An MAU is counted when Userflow's identify() or identifyAnonymous() method is called for a user, regardless of whether that user ever sees or interacts with any Userflow content.
Important: MAU tracking is based on user identification, not flow engagement. A user counts toward your MAU total even if:
They never see any flow, checklist, banner, or other Userflow content
No flows are published or active in your account
Targeting rules exclude them from all content
They're in a staging or testing environment
What Does NOT Count as an MAU?
Users who visit your application but are never identified do not count as MAUs. If you only call userflow.init() without calling identify() or identifyAnonymous(), those visitors will not be counted.
Keeping internal users out of your MAU count
There's no setting in Userflow to exclude your own team, test accounts, or other internal users from your MAU count. Anyone you identify counts.
To keep internal users out, don't call userflow.identify() (or identifyAnonymous()) for them in your Userflow.js code. For example, skip anyone your app flags as internal:
if (!user.isInternal || user.buildsUserflowContent) {
userflow.identify(user.id, {
name: user.name,
email: user.email
});
}The trade-off: people you don't identify can't see live Userflow content. They also can't use the Current signed-in user option when previewing. If some of your team build or test flows, keep identifying those specific people. They'll count as MAUs, but they'll be able to preview.
Common Causes of Unexpected MAU Overages
1. Using identifyAnonymous() on Public or Unauthenticated Pages
If you call identifyAnonymous() on pages accessible to the public or unauthenticated users (such as marketing pages, sign-up flows, or respondent-facing pages), every visitor will be counted as an MAU.
Solution: Only call identifyAnonymous() for authenticated users, or use conditional logic to avoid identifying users who shouldn't count toward your MAU limit.
2. Identifying All Users Instead of a Specific Role
If your application serves multiple user types (e.g., teachers and students, or admins and end-users), identifying everyone will count all users as MAUs even if you only want to show Userflow content to one group.
Solution: Add conditional logic to only identify the users you want to engage. For example:
if (user.role === 'teacher') {
userflow.identify(user.id, {
name: user.name,
email: user.email,
role: user.role
});
}3. Installing Userflow in Staging or Testing Environments
If your staging or testing environment mirrors production traffic, every user identified there counts as an MAU. Deleted environments continue to count toward your MAU total for 30 days after deletion.
Solution: Use separate Userflow environments for production and staging, or conditionally initialize Userflow only in production:
if (window.location.hostname === 'app.yourproduct.com') {
userflow.init('YOUR_TOKEN');
userflow.identify(user.id);
}4. Deleted Environments Still Counting
When you delete an environment, users identified in that environment continue to count toward your MAU total on a rolling 30-day basis. It can take up to 30 days for those MAUs to fully clear.
How to Check Your Current MAU Usage
Important: Your MAU count includes users across ALL environments in your account. Checking MAU in just one environment will not show you the full picture.
Quickest way: Click here to check your current MAU count. This launches a guided flow that takes you straight to the Users page, pre-filtered to Last seen < 30 days ago — the same view as the manual steps below.
Or, to check it manually:
Go to Users in your Userflow dashboard
Filter by Last seen < 30 days ago
The total count shown represents your current MAU usage across the currently selected environment
Remember that your total MAU count reflects all environments combined, so if you have multiple environments (production, staging, testing), all identified users across these environments contribute to your total.
How Does MAU Reset?
MAU counts are calculated on a rolling 30-day basis, not on a monthly billing cycle. A user only stops counting as an MAU once they have not been identified for a full 30 days.
If you remove or conditionally disable Userflow identification, it will take up to 30 days to see your MAU count fully reflect the change.
Plan Limits and Overages
Your MAU allowance depends on your plan. To see your plan's included MAUs and your current usage, check your billing settings. Just exploring Userflow? See current pricing on our pricing page.
If you go over your plan's included MAUs, Userflow keeps running and you're upgraded to the next MAU tier automatically. You can see your current tier and usage in your billing settings.
How to Reduce Your MAU Count
To bring your MAU count down:
Remove
identifyAnonymous()calls from public or unauthenticated pagesAdd conditional logic to only identify users you want to engage with Userflow
Remove Userflow initialization from staging/testing environments, or use environment-specific logic
Stop identifying internal users who don't need to see Userflow content (see "Keeping internal users out of your MAU count")
Wait 30 days for users who are no longer being identified to age out of the rolling window
Note that manually deleting users from the Users page does not immediately reduce your MAU count—the rolling 30-day window still applies.
Related articles
Understanding your Userflow plan — features, limits, and plan changes
Userflow.js installation (for
identify()andidentifyAnonymous()reference)