mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) Add more telemetry events
Summary: Adds new telemetry events and a flag for whether an event originated from a team site. Test Plan: Manual. Reviewers: paulfitz Reviewed By: paulfitz Subscribers: jarek, dsagal Differential Revision: https://phab.getgrist.com/D4105
This commit is contained in:
@@ -745,6 +745,7 @@ export const TelemetryContracts: TelemetryContracts = {
|
||||
},
|
||||
},
|
||||
signupFirstVisit: {
|
||||
category: 'ProductVisits',
|
||||
description: 'Triggered when a new user first opens the Grist app',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
@@ -1058,6 +1059,86 @@ export const TelemetryContracts: TelemetryContracts = {
|
||||
},
|
||||
},
|
||||
},
|
||||
invitedMember: {
|
||||
category: 'TeamSite',
|
||||
description: 'Triggered when users are added to a team site.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
count: {
|
||||
description: 'The number of users added.',
|
||||
dataType: 'number',
|
||||
},
|
||||
siteId: {
|
||||
description: 'The id of the site.',
|
||||
dataType: 'number',
|
||||
},
|
||||
},
|
||||
},
|
||||
uninvitedMember: {
|
||||
category: 'TeamSite',
|
||||
description: 'Triggered when users are removed from a team site.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
count: {
|
||||
description: 'The number of users removed.',
|
||||
dataType: 'number',
|
||||
},
|
||||
siteId: {
|
||||
description: 'The id of the site.',
|
||||
dataType: 'number',
|
||||
},
|
||||
},
|
||||
},
|
||||
invitedDocUser: {
|
||||
category: 'DocumentUsage',
|
||||
description: 'Triggered when users are added to a document.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
access: {
|
||||
description: 'The access level granted to the added users.',
|
||||
dataType: 'string',
|
||||
},
|
||||
count: {
|
||||
description: 'The number of users added.',
|
||||
dataType: 'number',
|
||||
},
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
dataType: 'number',
|
||||
},
|
||||
},
|
||||
},
|
||||
madeDocPublic: {
|
||||
category: 'DocumentUsage',
|
||||
description: 'Triggered when public access to a document is enabled.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
access: {
|
||||
description: 'The access level granted to public users.',
|
||||
dataType: 'string',
|
||||
},
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
dataType: 'number',
|
||||
},
|
||||
},
|
||||
},
|
||||
madeDocPrivate: {
|
||||
category: 'DocumentUsage',
|
||||
description: 'Triggered when public access to a document is disabled.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
dataType: 'number',
|
||||
},
|
||||
},
|
||||
},
|
||||
openedTemplate: {
|
||||
category: 'TemplateUsage',
|
||||
description: 'Triggered when a template is opened.',
|
||||
@@ -1098,6 +1179,26 @@ export const TelemetryContracts: TelemetryContracts = {
|
||||
},
|
||||
},
|
||||
},
|
||||
copiedTemplate: {
|
||||
category: 'TemplateUsage',
|
||||
description: 'Triggered when a copy of a template is saved.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
templateId: {
|
||||
description: 'The document id of the template.',
|
||||
dataType: 'string',
|
||||
},
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
dataType: 'number',
|
||||
},
|
||||
altSessionId: {
|
||||
description: 'A random, session-based identifier for the user that triggered this event.',
|
||||
dataType: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
subscribedToPlan: {
|
||||
category: 'SubscriptionPlan',
|
||||
description: 'Triggered on subscription to a plan.',
|
||||
@@ -1138,7 +1239,7 @@ export const TelemetryContracts: TelemetryContracts = {
|
||||
metadataContracts: {
|
||||
workspaceId: {
|
||||
description: 'The id of the workspace.',
|
||||
dataType: 'string',
|
||||
dataType: 'number',
|
||||
},
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
@@ -1162,6 +1263,139 @@ export const TelemetryContracts: TelemetryContracts = {
|
||||
},
|
||||
},
|
||||
},
|
||||
visitedPage: {
|
||||
category: 'ProductVisits',
|
||||
description: 'Triggered when a page is loaded.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
docIdDigest: {
|
||||
description: 'A hash of the doc id. Only included on visits to doc pages.',
|
||||
dataType: 'string',
|
||||
},
|
||||
url: {
|
||||
description: 'The URL of the visited page. Link keys, doc ids, and other identifiers ' +
|
||||
'are excluded from the URL.',
|
||||
dataType: 'string',
|
||||
},
|
||||
path: {
|
||||
description: 'The path of the visited page (e.g. "app.html").',
|
||||
dataType: 'string',
|
||||
},
|
||||
userAgent: {
|
||||
description: 'The User-Agent HTTP request header.',
|
||||
dataType: 'string',
|
||||
},
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
dataType: 'number',
|
||||
},
|
||||
altSessionId: {
|
||||
description: 'A random, session-based identifier for the user that triggered this event.',
|
||||
dataType: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
openedDoc: {
|
||||
category: 'DocumentUsage',
|
||||
description: 'Triggered when a document is opened.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
docIdDigest: {
|
||||
description: 'A hash of the doc id.',
|
||||
dataType: 'string',
|
||||
},
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
dataType: 'number',
|
||||
},
|
||||
altSessionId: {
|
||||
description: 'A random, session-based identifier for the user that triggered this event.',
|
||||
dataType: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
'createdDoc-Empty': {
|
||||
category: 'DocumentUsage',
|
||||
description: 'Triggered when a new empty document is created.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
docIdDigest: {
|
||||
description: 'A hash of the doc id.',
|
||||
dataType: 'string',
|
||||
},
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
dataType: 'number',
|
||||
},
|
||||
altSessionId: {
|
||||
description: 'A random, session-based identifier for the user that triggered this event.',
|
||||
dataType: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
'createdDoc-FileImport': {
|
||||
category: 'DocumentUsage',
|
||||
description: 'Triggered when a document is created via file import.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
docIdDigest: {
|
||||
description: 'A hash of the doc id.',
|
||||
dataType: 'string',
|
||||
},
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
dataType: 'number',
|
||||
},
|
||||
altSessionId: {
|
||||
description: 'A random, session-based identifier for the user that triggered this event.',
|
||||
dataType: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
'createdDoc-CopyTemplate': {
|
||||
category: 'DocumentUsage',
|
||||
description: 'Triggered when a document is created by saving a copy of a template.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
docIdDigest: {
|
||||
description: 'A hash of the doc id.',
|
||||
dataType: 'string',
|
||||
},
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
dataType: 'number',
|
||||
},
|
||||
altSessionId: {
|
||||
description: 'A random, session-based identifier for the user that triggered this event.',
|
||||
dataType: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
'createdDoc-CopyDoc': {
|
||||
category: 'DocumentUsage',
|
||||
description: 'Triggered when a document is created by saving a copy of a document.',
|
||||
minimumTelemetryLevel: Level.full,
|
||||
retentionPeriod: 'indefinitely',
|
||||
metadataContracts: {
|
||||
docIdDigest: {
|
||||
description: 'A hash of the doc id.',
|
||||
dataType: 'string',
|
||||
},
|
||||
userId: {
|
||||
description: 'The id of the user that triggered this event.',
|
||||
dataType: 'number',
|
||||
},
|
||||
altSessionId: {
|
||||
description: 'A random, session-based identifier for the user that triggered this event.',
|
||||
dataType: 'string',
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
type TelemetryContracts = Record<TelemetryEvent, TelemetryEventContract>;
|
||||
@@ -1199,12 +1433,24 @@ export const TelemetryEvents = StringUnion(
|
||||
'deletedAccount',
|
||||
'createdSite',
|
||||
'deletedSite',
|
||||
'invitedMember',
|
||||
'uninvitedMember',
|
||||
'invitedDocUser',
|
||||
'madeDocPublic',
|
||||
'madeDocPrivate',
|
||||
'openedTemplate',
|
||||
'openedTemplateTour',
|
||||
'copiedTemplate',
|
||||
'subscribedToPlan',
|
||||
'cancelledPlan',
|
||||
'createdWorkspace',
|
||||
'deletedWorkspace',
|
||||
'visitedPage',
|
||||
'openedDoc',
|
||||
'createdDoc-Empty',
|
||||
'createdDoc-FileImport',
|
||||
'createdDoc-CopyTemplate',
|
||||
'createdDoc-CopyDoc',
|
||||
);
|
||||
export type TelemetryEvent = typeof TelemetryEvents.type;
|
||||
|
||||
@@ -1216,7 +1462,8 @@ type TelemetryEventCategory =
|
||||
| 'Welcome'
|
||||
| 'SubscriptionPlan'
|
||||
| 'DocumentUsage'
|
||||
| 'TeamSite';
|
||||
| 'TeamSite'
|
||||
| 'ProductVisits';
|
||||
|
||||
interface TelemetryEventContract {
|
||||
description: string;
|
||||
|
||||
Reference in New Issue
Block a user