Documentation

User Classification and Billing Guide

1. User Classification

In Watchers Analytics (https://chatadmin.watchers.io/analytics), users are divided into two categories:

DAU/MAU Active

These are active users who have full access to chat functionality, such as sending messages, reacting, etc. Uniqueness is determined by the userId passed by the client upon chat initialization.

DAU/MAU Read-Only

These are users who can view the chat but cannot interact with it. This mode is triggered by passing the readonly GET parameter.

  • When readonly is present, the client-provided userId is ignored.
  • Instead, a unique internal userId is generated and stored in the browser's localStorage.

If the user changes devices, browsers, or clears cache, a new internal userId is generated.
This may lead to a discrepancy between your internal metrics and Watchers Analytics.

2. Billing Model

The standard Watchers billing model is based on the number of MAU Active users each month.

Optional Add-on: Read-Only Mode

If Read-Only Mode is implemented, you are granted a quota of free MAU Read-Only users, typically 3× your MAU Active.
Any additional Read-Only users beyond that quota are billed at a reduced rate.

Note: Your integration method directly affects the number of MAU Active and MAU Read-Only users, which in turn impacts your monthly billing.

3. Integration Recommendations

Accurate user tracking and fair billing depend on when the chat is initialized:

  • Chat loaded with the page UI:
    Send the chat initialization request as soon as the interface is rendered.

  • Chat loaded on user action (e.g., "Open Chat" button):
    Send the initialization request only after the user performs the action.

This ensures that only users who actually interact with or view the chat are counted and billed accordingly.

4. Impact of Background Loading

If the chat is initialized in the background—even if it is not visible to the user:

  • A socket connection is opened.
  • Backend processes are triggered: message fetching, auto-translation, caching, etc.
  • These actions consume resources, even though the user may never see the chat.

Summary

To ensure accurate user tracking and avoid unnecessary costs:

  • Do not initialize the chat before actual user interaction.
  • Understand the difference between active and read-only users.
  • Use Watchers Analytics to verify usage behavior.