What is a DAU?
A Daily Active User (DAU) represents one unique device that interacts with your app at least once during a calendar day.
Usercentrics counts a DAU when the Usercentrics SDK initializes on a device. This can happen when the app is opened or when the operating system wakes the app in the background.
How Usercentrics counts DAU
-
One count per device per day:
Usercentrics counts a DAU the moment the SDK initializes on a device.
Initialization can happen when the app is:Opened (user launches it)
Resumed (the app was in the background and the user comes back to it)
Woken by the system (the operating system briefly starts the app to handle things like notifications or background tasks).
No matter how many times this happens in the same day, the device is counted once.
Daily window (UTC)
DAU is calculated based on calendar days, meaning UTC time 00:00:00 to 23:59:59 UTC. If the SDK initializes before and after this window boundary (e.g., 23:58 and 00:02 UTC), the device is counted once for each day.Deduplication mechanism
To avoid multiple counts, the SDK stores the last day the device was counted. If another initialization happens on the same day, Usercentrics ignores it.
What is ADAU?
ADAU (Average Daily Active Users) represents the average number of DAUs your app has during a month.
Formula:
ADAU = (DAU Day 1 + DAU Day 2 + … + DAU Day n) / number of days in the month
Usercentrics uses monthly ADAU as the basis for pricing.
Why use an average?
Daily usage naturally fluctuates depending on the nature of the app.
Using an average ensures pricing reflects real usage patterns without penalizing spikes.
Examples:
A football app may see high activity only on match days.
A shopping app may peak during sales or holiday periods.
ADAU smooths these variations to give a fair and stable view of app activity.
When a device might be counted twice
There is one valid exception where a device may be counted more than once on the same day:
User manually clears app data
Clearing data removes the stored timestamp used for deduplication. The next initialization is treated as a new device state and results in another DAU count on the same day.Session restore
A session is restored when the app automatically deletes or rebuilds its local storage.
This can happen if the user reinstalls the app, the app restores a backup, or the app resets its own data. In these cases, the SDK timestamp is removed, and the next initialization may be counted as another DAU on the same day.
This behavior is expected, as the SDK cannot identify the device once its data has been erased.
Why DAU can differ between iOS and Android
The two platforms behave differently when handling background events. This affects how often the SDK initializes, and therefore how often a device can be counted (with deduplication still preventing overcounting within a day).
| Event | iOS | Android |
|---|---|---|
User manually opens app |
✅ SDK Initializes |
✅ SDK Initializes |
User taps notification |
✅ SDK Initializes |
✅ SDK Initializes |
Push notification arrives while the app is killed |
❌ App Remains Killed |
✅ SDK Initializes |
Push notification arrives while the app is in background |
❌ App Suspended |
✅ SDK Initializes |
App widget updates/Periodic refresh |
❌ App Suspended |
✅ App Process Wakes & SDK initializes |
Silent push (background update) |
⚠️ Throttled |
✅ SDK Initializes |
System Boot |
❌ No Action |
✅ SDK Initializes |
Conclusion
On iOS, SDK initialization usually reflects real user activity.
On Android, SDK initialization can also happen due to system-triggered background events.
Deduplication ensures only one DAU per day, but these differences affect when the first initialization happens.
SDK initialization best practices
Android
We recommend to initialize the SDK inApplication.onCreate()to ensure consent is ready before any background processing. These initializations come from a technical compliance standpoint (consent must be ready if background data processed). Background triggers may still cause initialization, but deduplication prevents multiple counts per day.iOS
We recommend to initialize the SDK inAppDelegate. iOS limits background starts, so SDK initialization usually aligns with actual user activity.
For more details on how we define a session, go to How is a session defined by Usercentrics?
Apps uses the same mechanism with a difference in how often a session is called:
- Web: Every 30 min
- Apps: every 24 hours