Appearance
Product analytics and NPS inside the console
The console measures its own use and asks account administrators how likely they are to recommend the platform. Both are built into the platform: no third-party provider receives anything, and nothing about the people you collect from is recorded. This page says what is recorded, what is not, how long it is kept, and the three routes the console uses.
What is recorded
For every person who signs in to the console, the console reports which screen they opened and which function they used. A record has four things:
| Field | Content |
|---|---|
| Account | The tenant the person signed in to. The server takes it from the login; a request cannot name another one. |
| Person | The console user. |
| Event | A key from a closed list: screen.<route> (for example screen.campaigns) or feature.<function> (for example feature.campaign.created). |
| Time | Stamped by the server. |
The event is a key, never text. There is no field for free text and none for a payload, and the database rejects any key that does not have the shape screen.… or feature.…. A key that is not on the list is dropped and counted in the response (rejected), so a console newer than the server breaks nothing.
What is not recorded
- Anything a person types or sees on a screen: no field value, no search text, no page content.
- Anything about the people you collect from: no consumer name, phone number, account or debt data, call or recording identifier.
- Ids in the address of a screen: a screen with a parameter (an AI agent, a compliance decision) reports the key of its template, never the value.
- Anything done by platform support while it looks at an account: a support session is read-only and cannot write events.
- Anything sent to a third party: there is no analytics script, no tracker and no cookie for this.
NPS
Account administrators (account_admin) are asked to rate the platform from 0 to 10 and may add a short comment (up to 500 characters). The console asks at most once every 90 days per administrator; answering and choosing "Not now" both postpone the next question by the same interval. Other users are never asked. The comment is text a person types, so the console asks them not to include customer data in it.
How long it is kept
| Data | Kept for |
|---|---|
| Usage events | 180 days |
| NPS answers | 24 months |
A daily job deletes what is older. It is the only way a row is removed; nobody edits a row.
Who sees it
Aggregates are visible to the platform operator: adoption by screen and function per account, funnels of key flows (for example, opening campaigns, creating one, launching it) and NPS per account with the latest comments. The operator view shows figures per account and never names a person. Account administrators do not read each other's answers.
Availability
| Capability | Availability |
|---|---|
| Usage events and NPS | Always on for every tenant: there is no switch, and neither takes part in any dialing decision. They ship with the core release that includes core#2233 and the dashboard release that includes dashboard#1024. |
Routes
All three need a dashboard login (a person). A dd_ key has no person behind it and gets 403.
| Route | Operation | What it does |
|---|---|---|
POST /v1/product-analytics/events | recordProductAnalyticsEvents | Records up to 50 event keys. Answers 202 with accepted and rejected. |
GET /v1/product-analytics/nps | getProductAnalyticsNpsPrompt | { "due": true, "interval_days": 90 } for an administrator who is due, due: false for everyone else. |
POST /v1/product-analytics/nps | submitProductAnalyticsNps | { "score": 0-10, "comment": "…" } or { "dismissed": true }. 201 with the stored record; 409 before the interval has passed; 403 for a user who is not an administrator. |
http
POST /v1/product-analytics/events
Authorization: Bearer ddu_…
{ "events": ["screen.campaigns", "feature.campaign.created"] }json
{ "accepted": 2, "rejected": 0 }