---
title: Integration and Billing Model
updatedAt: 2026-03-23T15:02:05.000Z
---

Fetch the complete documentation index at: https://docs.watchers.io/llms.txt

# Integration and Billing Model

## 1. User Classification

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

### **DAU/MAU (Full Access)**

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 initialisation.

### **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 (Full Access)** 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 Full Access**.  
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 initialised**:

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

* **Chat loaded on user action (e.g., "Open Chat" button):**  
  Send the initialisation 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 initialised 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 initialise the chat** before actual user interaction.
* **Understand the difference** between active and read-only users.
* **Use Watchers Analytics** to verify usage behaviour.
