Overview
There are two ways to gather data.
- Dashboard in the back office: perfect for gaining quick insights into key behavioral metrics without the need Watchers provides a robust method for additional integration. No extra setup is required partners to access this data.
- Data collection via webhook: recommended for those needing deeper, receive real-time analytics. This approach involves setting up a webhook URL in the admin panel to receive event data directly in your system. These on user interactions within chat environments by sending events can be used directly to create custom scenarios triggered through your backend, such as rewarding users for specific actions.
Back Office Dashboard
The back office dashboard includes the following sections and functionalities:
- Overview Metrics
- DAU/WAU/MAU metrics available for daily, weekly, and monthly user engagement tracking.
- Messages and User Activity
- Metrics for total messages sent, animated reactions, and reactions to messages are available for the last 90 days and 6 months.
- Active users and users who sent at least one message are tracked over the same periods for comprehensive insights.
- Data Updates
- A "Refresh" button for instant data updates.
- Automated synchronization with the latest metrics occurs at 00:00 GMT (0).
This dashboard system allows partners to track key behavioural metrics in chats. For deeper analytics, we recommend implementing a system to monitor and respond to user activities, ensuring seamless integration with your data collection via a webhook, which is described in the next section.


Webhooks
Note: All event timestamps are stored in GMT+0. Please take this into account when building charts to ensure accurate time-based analysis.
handling protocols.
Enabling Event Tracking
Webhooks can be configured to receive real-time events directly into an external database. Here’s how to set it up:
All Events Webhook: To begin receiving chats, are tagged. A list of events can be found below.
- Enable events, enable this feature through the toggle under the "All events" section.
- Provide a valid URL where events Admin Panel. Once enabled, our system will be sent.
- Click "Save" to transmit event data to confirm the settings.
- Use the "Test" button to verify the webhook configuration.
Room Events Webhook:
- Enable the toggle under the "Rooms" section.
- Provide the desired URL for room-specific events.
- Events include:
- Create your specified API endpoint each time a scheduled room is created.
- Updates to scheduled room details (date, time, name), including status changes.
- Deletion of a scheduled room.
- Updates to the list of users with voice permissions (speakers) whenever room data is modified.
- Save and test relevant user interaction occurs within the configuration as needed.
Webhooks enable seamless integration of platform events into external systems for further analysis and processing.

API Endpoint Requirements
Each event is communicated via a POST request to your API. The general structure of these requests is as follows:
{
"event": "event_name",
"value": {
"user_id": "user_id",
"project": "project_name",
...other fields depends on event
}
}
Recommendations for Data Storage and Analysis Tools
ClickHouse is a columnar database management system that is ideal for handling large volumes of event data due to its:
- High performance for real-time data ingestion.
- Excellent support for analytical queries.
- Compatibility with structured and semi-structured data formats.
Recommended Steps:
- Create a dedicated table for events: Depending on your specific needs, design a schema that includes necessary fields such as event_type, user_id, timestamp, and additional properties.
- Process webhook events directly: Capture webhook payloads in real-time and write them into ClickHouse using an HTTP endpoint.
- Partition data: Partition your tables by time (e.g., daily or hourly) to optimize query performance and simplify data management.
Optional: If you anticipate high throughput or require buffering, consider integrating tools like Kafka to preprocess or distribute webhook events before storing them in ClickHouse.
Events and Properties
This section outlines the key events tracked for product analytics, offering insights into user behavior and interactions within chats. Each event is detailed in the table below, including its name, associated properties, and a brief description.
List of Events
Note: Events highlighted in bold in the ‘Event’ column are mandatory for tracking basic product metrics related to user interactions within the chat.
\{
"event": "following\\_filter\\_toggle",
"value": \\{
"event\\_id": "test\\_33",
"screen\\_size": "2056x1164",
"platform": "none",
"platformUserAgent": “”
"source": "room",
"status": "on",
"project": "dev",
"user\\_id": "454334341212"
"nickname": "Andy"
},
}
Event | Additional Properties | Description | Payload example |
---|---|---|---|
session_started | room_status = on_air, soon, unavailable, ended | Sent when the userId and roomId are present in the URL parameters and the iframe is open. Tracking it by unique values makes sense since one person can send multiple events within one session. |
|
room_opened | Triggered every time messages are loaded after entering the chat. It helps to determine how many people opened the chat based on session_started and did not load the messages. |
| |
la_opened | A user opens the License Agreement. |
| |
la_closed | A user clicks on the close icon of the License Agreement (x). |
| |
agreement_accepted | A user clicks on the Accept and Continue buttons (accepts PP and LA). |
| |
name_set | User clicks on Save and Continue button after entering their name. |
| |
avatar_set | User clicks on Save button after setting their avatar. |
| |
Settings | |||
settings_opened | User clicks on the Settings button. |
| |
settings_closed | User clicks on the close icon of the settings (x). |
| |
profile_opened | User clicks on the Profile button. |
| |
change_avatar_pressed | User clicks on the Change Avatar button. |
| |
avatar_changed | User changes their avatar (selects a different avatar and clicks Save). |
| |
change_name_pressed | User clicks on the Change button in the name input field. |
| |
name_changed | User changes their name (re-sets the name). |
| |
banned_opened | User clicks on the Blocked button. |
| |
unblocking_pressed | User clicks on the Unblock button, action is performed. |
| |
delete_profile_pressed | User clicks on the Delete Profile button. |
| |
delete_profile_confirmed | User confirms the deletion of the profile. |
| |
delete_profile_cancelled | User cancels the deletion of the profile. |
| |
account_restored | User restores the account. |
| |
User-list | |||
user-list_opened | User opens the user list (clicks on the participant counter). |
| |
user-list_closed | User closes the user list (clicks on (x)). |
| |
Messaging | |||
message_sent | message_type = text / sticker (sticker_sent is not removed) / reply / bot_request\ | Message is sent\ |
|
message_changed | User edits the message. |
| |
scrolled_to_unread_messages | User scrolls to unread/latest messages by clicking the down arrow. |
| |
message_text_copied | User copies the text of a message. |
| |
Moderation by User | |||
report_pressed | User clicks on the "Reports" menu item. |
| |
report_sent | type - type of report as a string (Violence, Provocations, Personal Details, Flood, Spam, Fraud, Begging, Other) | User confirms sending the selected report item. |
|
report_cancelled | type - type of report as a string (Violence, Provocations, Personal Details, Flood, Spam, Fraud, Begging, Other) | User cancels sending the selected report item. |
|
Emotions | |||
emo_panel_pressed | User opens the Emotion Panel (taps on the heart icon). |
| |
emoji_sent | sending the ordinal number of the emoji as a parameter, where the far left one is number 1 | User sends an emoji. |
|
Poll/Quiz | |||
pq_opened | type - poll type, quiz type, multiple_poll type, multiple_quiz type user_status - user status (authorized or not) question - question text img - whether the poll has an image (true, false) | User opens a poll in which they have not yet participated. |
|
pq_viewed | type - poll type, quiz type, multiple_poll type, multiple_quiz type question - question text img - whether the poll has an image (true, false) | User opens a poll to view the results. |
|
pq_answer_sent | type - poll type, quiz type, multiple_poll type, multiple_quiz type question - question text answer - answer text, for multiple answers, multiple options are sent as separate strings img - whether the poll has an image (true, false) | User votes/answers the poll. |
|
pq_closed | type - poll type, quiz type, multiple_poll type, multiple_quiz type question - question text img - whether the poll has an image (true, false) | User closes the poll. |
|
Marketing offers | |||
hl_viewed | hl_content - highlight text (if there is a heading, if there is no text, pass none) | User views the highlight. |
|
hl_button_pressed | hl_content - highlight text (if there is a heading, if there is no text, pass none) hl_button_text - text on the button | User clicks on the button in the highlight. |
|
Stream | |||
bad_connection | Agora indicates that the user has poor connection quality. |
| |
Feedback form | |||
ff_stream_evaluated | evaluation - rating from 1 to 5 | User rates the stream. |
|
ff_stream_type_of_problem_selected | type - dn_work, interruptions, microphone | User selects the type of problem. |
|
ff_stream_connection_tested | speed - speed measurement result ping - connection ping | User performs an internet connection test. |
|
ff_stream_success | User completes all steps. |
| |
ff_stream_closed | step - at which step the user closed the form | User closes the form. |
|
Reactions | |||
message_reaction_sent | sending the ordinal number of the emoji as a parameter, where the far left one is number 1 | User sends a reaction to a message. |
|
Stickers | |||
sticker_button_pressed | User opens the sticker panel. |
| |
sticker_sent | sending the ordinal number of the sticker as a parameter, where the far left one is number 1 | User sends a sticker in the chat. |
|
Slow mode | |||
message_sending_blocked_slowmode | Message sending is blocked due to slow mode. |
| |
Copybetting | |||
betshare_list_opened | User clicks on the Share button in the chat (gray button). |
| |
betshare_list_bet_shared | User clicks on the "Share" button in the list of bets (green button). |
| |
betshare_chat_repeated | User clicks on the "Repeat Bet" button in the chat. |
| |
Profile | |||
profile_opened | Event of viewing an open profile. |
| |
Records | |||
records_player | View = minimized/expanded | User clicks on the collapse/expand button of the player. |
|
records_play | time_stamp = 1/2/3.../50 - second of audio playback when the button is pressed | User clicks on the Play button. |
|
records_pause | User clicks on the Pause button. |
| |
records_forward | Duration = 15 | User clicks on the Forward button. |
|
records_back | Duration = 15 | User clicks on the Back button. |
|
records_speed_changed | Speed - 1/1.5/2 | User changes the playback speed. |
|
Session time | |||
session_time | Duration = 10/20/30/60... | Tracking the length of user's session in the room. |
|
Info Pop-ups | |||
ip_viewed | header = Welcome to... - text of the header, if there is no header, pass none show = once/multiple_times show_when = on_each_entry/once_daily - type of display selected | User is shown a pop-up. |
|
ip_button_pressed | User clicks on the button in the pop-up. |
| |
Autotranslate | |||
autotranslation_toggle | status = on/off | Status changed by the user by pressing the button |
|
autotranslation_language | language_selected = english/spanish/...\ | Language selected by the user\ |
|
User following | |||
following_filter_toggle | status = on/off | Triggered when the user presses the button to filter chat content based on following status. |
|
/
Properties Contained in Each Event
The table below outlines the properties contained in each event, ensuring you have all the necessary information to process and analyze user interactions effectively:
Properties | Description | Example |
---|---|---|
user_id | User ID | BUmXxFyNMNE6FUVhL+ECSQ== |
event_id | Room ID | 16888417 |
platform* | platform | web, ios, android (*—if sent via GET) |
platformUserAgent | platformUserAgent | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 |
screen_size | Physical screen size | 360x800 |
project | project id | partner-prod |
Q&A on Data Storage and Processing
-
Location of Storage and Processing
Data is processed and stored entirely within Google Cloud infrastructure. Data distribution is carried out based on territorial principles to ensure compliance with local data protection laws and regulations. For instance, data subject to GDPR regulations is stored in Google Cloud’s European regions. This approach provides enhanced protection a complete understanding of users’ personal data and ensures compliance with GDPR requirements for data processing and storage within the European Union. We strictly adhere to Google Cloud’s policies and technical security measures to safeguard our users’ data in line with best practices and international standards. -
How Long?
We retain users’ personal data only as long as necessary to provide our services in accordance with the contract and GDPR requirements. Once the data is no longer needed for these purposes, it is deleted or anonymized. Our processes ensure compliance with GDPR’s principle of storage limitation, and we regularly review stored data to remove any unnecessary information.
Scenarios and Retention Periods for Data Deletion:
a. End of Collaboration with a Partner. When the collaboration (contract) with a partner ends, we delete all data accumulated during the partnership, except for information that may be required by regulators. We ensure no information is retained longer than necessary.
b. User-Initiated Data Deletion:
-
If a user or their representative requests data deletion from the platform where the chat is integrated, all data related to the user is erased.
-
Users can delete their accounts through the chat interface. After deletion, chat messages what events are anonymized immediately, and all other user data is deleted within 30 days of the request. During this 30-day period, the user has the option to recover their data. After this period, all user data stored on Watchers’ side is permanently deleted.
-
Users can also delete their messages sent in the chat. Once deleted, the message becomes hidden for all chat users and is marked as deleted in the database. After 30 days, the message is also removed from the message feed in the admin panel. However, if the message had any complaints filed against it, it will continue to appear in the report list. Once the complaints are reviewed and processed, the message will be moved to the archive
c. API Tracked, including payload examples for immediate data deletion. We provide an API that allows Watchers platform users to send requests for the immediate deletion of all data associated with each specific user, except for data required to meet regulatory requirements. This ensures partners can respond to user deletion requests promptly and securely, further enhancing GDPR compliance.
- What Type of Data is Stored and Processed
To ensure the operation of our chats and analyze user interactions, we work with two types of data:
- Operational Data: These data are necessary for the direct operation of the chats. They include the user's name or nickname, which may be classified as personal data. We use these data solely so that users can use our chats without issues.
- Chat Name / Nickname
- IP (optional)
- User messages
- Analytical Data: These data are used event, refer to analyze how users interact with our chats and which features they use. For analytics, we apply anonymized data, meaning they contain no personal information about the user. detailed event list section below. This allows us section will help you configure your systems to improve our services without compromising user confidentiality.
Thus, we clearly differentiate data necessary for the operation of the chats (operational) handle and data necessary for analysis and improvement of our services (analytical), while ensuring the protection of our users' personal information.
Updated 9 days ago