@vrplatform/log 2.0.24 → 2.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/main/tracking/index.d.ts +2 -2
- package/build/main/tracking/index.js +62 -51
- package/build/main/tracking/index.js.map +1 -1
- package/build/main/tracking/types.d.ts +16 -18
- package/build/module/tracking/index.d.ts +2 -2
- package/build/module/tracking/index.js +63 -52
- package/build/module/tracking/index.js.map +1 -1
- package/build/module/tracking/types.d.ts +16 -18
- package/package.json +2 -2
- package/src/tracking/index.ts +72 -62
- package/src/tracking/types.ts +27 -30
|
@@ -86,7 +86,7 @@ declare module 'intercom-client' {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
import { Analytics } from '@june-so/analytics-node';
|
|
89
|
-
import {
|
|
89
|
+
import { Intercom } from 'intercom-client';
|
|
90
90
|
import { PostHog } from 'posthog-node';
|
|
91
91
|
import { type LogBindings, type WorkerLog } from '../log';
|
|
92
92
|
import type { GroupProps, IdentifyProps, TrackProps, TrackingEvent } from './types';
|
|
@@ -113,6 +113,6 @@ export declare const useTracking: ({ dataset, env, name }: UseTracking, isDev?:
|
|
|
113
113
|
shutdown: () => Promise<any>;
|
|
114
114
|
log: WorkerLog;
|
|
115
115
|
june?: Analytics;
|
|
116
|
-
intercom?:
|
|
116
|
+
intercom?: Intercom;
|
|
117
117
|
posthog?: PostHog;
|
|
118
118
|
};
|
|
@@ -18,7 +18,6 @@ exports.useTracking = void 0;
|
|
|
18
18
|
const graphql_1 = require("@finalytic/graphql");
|
|
19
19
|
const analytics_node_1 = require("@june-so/analytics-node");
|
|
20
20
|
const intercom_client_1 = require("intercom-client");
|
|
21
|
-
const Fetcher_1 = require("intercom-client/core/fetcher/Fetcher");
|
|
22
21
|
const posthog_node_1 = require("posthog-node");
|
|
23
22
|
const log_1 = require("../log");
|
|
24
23
|
const utils_1 = require("../utils");
|
|
@@ -34,12 +33,13 @@ const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
34
33
|
: undefined;
|
|
35
34
|
const log = (0, log_1.useLog)({ name, dataset, env });
|
|
36
35
|
const intercom = env.INTERCOM_TOKEN
|
|
37
|
-
? new intercom_client_1.
|
|
38
|
-
|
|
39
|
-
fetcher: (args) =>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
36
|
+
? new intercom_client_1.Intercom({
|
|
37
|
+
accessToken: env.INTERCOM_TOKEN,
|
|
38
|
+
// fetcher: (args) =>
|
|
39
|
+
// fetcher({
|
|
40
|
+
// ...args,
|
|
41
|
+
// headers: { ...args.headers, accept: 'application/json' },
|
|
42
|
+
// }),
|
|
43
43
|
})
|
|
44
44
|
: undefined;
|
|
45
45
|
const june = env.JUNESO_TOKEN ? new analytics_node_1.Analytics(env.JUNESO_TOKEN) : undefined;
|
|
@@ -53,19 +53,16 @@ const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
53
53
|
track: async ({ userId, anonymousId, groupId, event, packageName, properties, timestamp = new Date(), }) => {
|
|
54
54
|
if (isDev || (0, utils_1.isTest)(userId || anonymousId || '', groupId))
|
|
55
55
|
return;
|
|
56
|
-
await client?.mutate((q) => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
});
|
|
67
|
-
return { id: e.id };
|
|
68
|
-
});
|
|
56
|
+
await client?.mutate((q) => q.insert_tracking_event_one({
|
|
57
|
+
object: {
|
|
58
|
+
name: event,
|
|
59
|
+
tenantId: groupId,
|
|
60
|
+
userId: userId,
|
|
61
|
+
props: properties,
|
|
62
|
+
createdAt: timestamp,
|
|
63
|
+
packageName,
|
|
64
|
+
},
|
|
65
|
+
}).id);
|
|
69
66
|
if (anonymousId) {
|
|
70
67
|
posthog?.capture({
|
|
71
68
|
distinctId: anonymousId,
|
|
@@ -109,11 +106,13 @@ const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
109
106
|
console.error(err);
|
|
110
107
|
});
|
|
111
108
|
try {
|
|
112
|
-
await intercom?.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
109
|
+
await intercom?.dataEvents.create({
|
|
110
|
+
body: {
|
|
111
|
+
user_id: userId,
|
|
112
|
+
event_name: event,
|
|
113
|
+
metadata: (0, convertValuesToString_1.convertValuesToString)(properties),
|
|
114
|
+
created_at: Math.floor(timestamp.getTime() / 1000),
|
|
115
|
+
},
|
|
117
116
|
});
|
|
118
117
|
}
|
|
119
118
|
catch (e) {
|
|
@@ -157,14 +156,14 @@ const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
157
156
|
const intercomUser = (await intercom?.contacts.search({
|
|
158
157
|
query: {
|
|
159
158
|
field: 'external_id',
|
|
160
|
-
operator:
|
|
159
|
+
operator: '=',
|
|
161
160
|
value: userId,
|
|
162
161
|
},
|
|
163
|
-
}))?.data
|
|
162
|
+
}))?.data?.at(0);
|
|
164
163
|
if (intercomUser?.id)
|
|
165
164
|
await intercom?.contacts.update(intercomUser?.id, data);
|
|
166
165
|
else
|
|
167
|
-
await intercom?.contacts.create(data);
|
|
166
|
+
await intercom?.contacts.create({ body: data });
|
|
168
167
|
}
|
|
169
168
|
catch (e) {
|
|
170
169
|
console.error(e);
|
|
@@ -179,6 +178,35 @@ const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
179
178
|
let intercomCompany;
|
|
180
179
|
try {
|
|
181
180
|
const cid = traits?.billingCustomerId || traits?.hyperlineCustomerId;
|
|
181
|
+
const partner = traits?.partner || traits?.accountingPartner;
|
|
182
|
+
const billingPartner = traits?.billingPartner ||
|
|
183
|
+
traits?.partner ||
|
|
184
|
+
traits?.accountingPartner;
|
|
185
|
+
const custom_attributes = { teamId: groupId };
|
|
186
|
+
if (traits?.name)
|
|
187
|
+
custom_attributes.team = traits?.name;
|
|
188
|
+
if (traits?.type)
|
|
189
|
+
custom_attributes.type = traits?.type;
|
|
190
|
+
if (traits?.status)
|
|
191
|
+
custom_attributes.status = traits?.status;
|
|
192
|
+
if (traits?.pms)
|
|
193
|
+
custom_attributes.pms = traits?.pms;
|
|
194
|
+
if (traits?.accountingSoftware)
|
|
195
|
+
custom_attributes.accountingSoftware = traits?.accountingSoftware;
|
|
196
|
+
if (traits?.activeListings)
|
|
197
|
+
custom_attributes.activeListings = `${traits?.activeListings}`;
|
|
198
|
+
if (traits?.paymentMethodType)
|
|
199
|
+
custom_attributes.paymentMethodType = traits?.paymentMethodType;
|
|
200
|
+
if (partner)
|
|
201
|
+
custom_attributes.partner = partner;
|
|
202
|
+
if (cid)
|
|
203
|
+
custom_attributes.billingPortalUrl = `https://billing.vrplatform.app/portal/${cid}`;
|
|
204
|
+
if (traits?.subscriptionStatus)
|
|
205
|
+
custom_attributes.billingStatus = traits?.subscriptionStatus;
|
|
206
|
+
if (billingPartner)
|
|
207
|
+
custom_attributes.billingPartner = billingPartner;
|
|
208
|
+
if (traits.trialUntil)
|
|
209
|
+
custom_attributes.trialUntil = traits.trialUntil;
|
|
182
210
|
intercomCompany = await intercom?.companies.create({
|
|
183
211
|
name: traits?.name,
|
|
184
212
|
company_id: groupId,
|
|
@@ -187,25 +215,8 @@ const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
187
215
|
? Math.floor(new Date(traits.createdAt).getTime() / 1000)
|
|
188
216
|
: undefined,
|
|
189
217
|
monthly_spend: traits?.mrr,
|
|
190
|
-
custom_attributes
|
|
191
|
-
|
|
192
|
-
team: traits?.name,
|
|
193
|
-
type: traits?.type,
|
|
194
|
-
status: traits?.status,
|
|
195
|
-
pms: traits?.pms,
|
|
196
|
-
accountingSoftware: traits?.accountingSoftware,
|
|
197
|
-
activeListings: traits?.activeListings,
|
|
198
|
-
paymentMethodType: traits?.paymentMethodType,
|
|
199
|
-
partnerName: traits?.partner || traits?.accountingPartner,
|
|
200
|
-
billingPortalUrl: cid
|
|
201
|
-
? `https://billing.vrplatform.app/portal/${cid}`
|
|
202
|
-
: undefined,
|
|
203
|
-
billingStatus: traits?.subscriptionStatus,
|
|
204
|
-
billingPartner: traits?.billingPartner ||
|
|
205
|
-
traits?.partner ||
|
|
206
|
-
traits?.accountingPartner,
|
|
207
|
-
},
|
|
208
|
-
});
|
|
218
|
+
custom_attributes,
|
|
219
|
+
}, {});
|
|
209
220
|
}
|
|
210
221
|
catch (e) {
|
|
211
222
|
console.error(e);
|
|
@@ -232,13 +243,13 @@ const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
232
243
|
const intercomUser = (await intercom?.contacts.search({
|
|
233
244
|
query: {
|
|
234
245
|
field: 'external_id',
|
|
235
|
-
operator:
|
|
246
|
+
operator: '=',
|
|
236
247
|
value: userId,
|
|
237
248
|
},
|
|
238
|
-
}))?.data
|
|
249
|
+
}))?.data?.at(0);
|
|
239
250
|
if (intercomUser?.id && intercomCompany?.id)
|
|
240
|
-
intercom?.companies.
|
|
241
|
-
|
|
251
|
+
intercom?.contacts.companies.create(intercomUser?.id, {
|
|
252
|
+
company_id: intercomCompany?.id,
|
|
242
253
|
});
|
|
243
254
|
}
|
|
244
255
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["tracking/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAoGA,gDAAoD;AACpD,4DAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["tracking/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,7 @@ export type GroupProps = OptionalUser<{
|
|
|
49
49
|
mrr?: number;
|
|
50
50
|
plan?: string;
|
|
51
51
|
paymentMethodType?: string;
|
|
52
|
+
trialUntil?: string;
|
|
52
53
|
[key: string]: string | number | boolean | null | undefined;
|
|
53
54
|
};
|
|
54
55
|
timestamp?: Date;
|
|
@@ -137,7 +138,6 @@ export type TenantType = 'admin' | 'partner' | 'propertyManager';
|
|
|
137
138
|
export type TenantStatus = 'active' | 'inactive';
|
|
138
139
|
export type SubscriptionStatus = 'active' | 'cancelled' | 'draft' | 'errored' | 'paused' | 'pending' | 'voided';
|
|
139
140
|
export type PaymentMethodType = 'card' | 'direct_debit_sepa' | 'direct_debit_ach' | 'direct_debit_bacs';
|
|
140
|
-
export type WebhookEventType = 'customer.created' | 'customer.updated' | 'subscription.activated' | 'subscription.cancelled' | 'subscription.created' | 'subscription.errored' | 'subscription.paused' | 'subscription.voided' | 'subscription.charged' | 'payment_method.created' | 'payment_method.errored' | 'payment_method.deleted';
|
|
141
141
|
type AccountInvitationAcceptedProps = Partial<{
|
|
142
142
|
userId: string;
|
|
143
143
|
userEmail: string;
|
|
@@ -257,7 +257,6 @@ type GlOwnerStatementPreviewOpenedProps = Partial<{
|
|
|
257
257
|
userType: 'owner' | 'property_manager';
|
|
258
258
|
}>;
|
|
259
259
|
type HyperlineCustomerCreatedProps = Partial<{
|
|
260
|
-
userId: string;
|
|
261
260
|
tenantId: string;
|
|
262
261
|
customerId: string;
|
|
263
262
|
billingEmail: string;
|
|
@@ -268,7 +267,6 @@ type HyperlineCustomerCreatedProps = Partial<{
|
|
|
268
267
|
webhookEventType: 'customer.created';
|
|
269
268
|
}>;
|
|
270
269
|
type HyperlineCustomerUpdatedProps = Partial<{
|
|
271
|
-
userId: string;
|
|
272
270
|
tenantId: string;
|
|
273
271
|
customerId: string;
|
|
274
272
|
billingEmail: string;
|
|
@@ -301,7 +299,6 @@ type HyperlineInvoiceSettledProps = Partial<{
|
|
|
301
299
|
settledAt: string;
|
|
302
300
|
}>;
|
|
303
301
|
type HyperlinePaymentMethodCreatedProps = Partial<{
|
|
304
|
-
userId: string;
|
|
305
302
|
tenantId: string;
|
|
306
303
|
subscriptionStartDate: string;
|
|
307
304
|
paymentMethodType: PaymentMethodType;
|
|
@@ -311,7 +308,6 @@ type HyperlinePaymentMethodCreatedProps = Partial<{
|
|
|
311
308
|
webhookEventType: 'payment_method.created';
|
|
312
309
|
}>;
|
|
313
310
|
type HyperlinePaymentMethodDeletedProps = Partial<{
|
|
314
|
-
userId: string;
|
|
315
311
|
tenantId: string;
|
|
316
312
|
subscriptionStartDate: string;
|
|
317
313
|
paymentMethodType: PaymentMethodType;
|
|
@@ -321,7 +317,6 @@ type HyperlinePaymentMethodDeletedProps = Partial<{
|
|
|
321
317
|
webhookEventType: 'payment_method.deleted';
|
|
322
318
|
}>;
|
|
323
319
|
type HyperlinePaymentMethodErroredProps = Partial<{
|
|
324
|
-
userId: string;
|
|
325
320
|
tenantId: string;
|
|
326
321
|
subscriptionStartDate: string;
|
|
327
322
|
paymentMethodType: PaymentMethodType;
|
|
@@ -331,20 +326,20 @@ type HyperlinePaymentMethodErroredProps = Partial<{
|
|
|
331
326
|
webhookEventType: 'payment_method.errored';
|
|
332
327
|
}>;
|
|
333
328
|
type HyperlineSubscriptionActivatedProps = Partial<{
|
|
334
|
-
|
|
335
|
-
tenantId: string;
|
|
329
|
+
subscriptionId: string;
|
|
336
330
|
subscriptionStatus: SubscriptionStatus;
|
|
331
|
+
plan: string;
|
|
332
|
+
tenantId: string;
|
|
337
333
|
webhookEventType: 'subscription.activated';
|
|
338
334
|
}>;
|
|
339
335
|
type HyperlineSubscriptionCancelledProps = Partial<{
|
|
340
|
-
trialEndAt: string;
|
|
341
|
-
plan: string;
|
|
342
336
|
subscriptionId: string;
|
|
343
|
-
subscriptionStartDate: string;
|
|
344
337
|
subscriptionStatus: SubscriptionStatus;
|
|
338
|
+
plan: string;
|
|
339
|
+
trialEndAt: string;
|
|
340
|
+
subscriptionStartDate: string;
|
|
345
341
|
paymentMethodType: string;
|
|
346
342
|
customerId: string;
|
|
347
|
-
userId: string;
|
|
348
343
|
tenantId: string;
|
|
349
344
|
webhookEventType: 'subscription.cancelled';
|
|
350
345
|
}>;
|
|
@@ -366,21 +361,25 @@ type HyperlineSubscriptionCreatedProps = Partial<{
|
|
|
366
361
|
customerId: string;
|
|
367
362
|
}>;
|
|
368
363
|
type HyperlineSubscriptionErroredProps = Partial<{
|
|
364
|
+
subscriptionId: string;
|
|
365
|
+
subscriptionStatus: SubscriptionStatus;
|
|
366
|
+
plan: string;
|
|
369
367
|
userId: string;
|
|
370
368
|
tenantId: string;
|
|
371
|
-
subscriptionStatus: SubscriptionStatus;
|
|
372
369
|
webhookEventType: 'subscription.errored';
|
|
373
370
|
}>;
|
|
374
371
|
type HyperlineSubscriptionPausedProps = Partial<{
|
|
375
|
-
|
|
376
|
-
tenantId: string;
|
|
372
|
+
subscriptionId: string;
|
|
377
373
|
subscriptionStatus: SubscriptionStatus;
|
|
374
|
+
plan: string;
|
|
375
|
+
tenantId: string;
|
|
378
376
|
webhookEventType: 'subscription.paused';
|
|
379
377
|
}>;
|
|
380
378
|
type HyperlineSubscriptionVoidedProps = Partial<{
|
|
381
|
-
|
|
382
|
-
tenantId: string;
|
|
379
|
+
subscriptionId: string;
|
|
383
380
|
subscriptionStatus: SubscriptionStatus;
|
|
381
|
+
plan: string;
|
|
382
|
+
tenantId: string;
|
|
384
383
|
webhookEventType: 'subscription.voided';
|
|
385
384
|
}>;
|
|
386
385
|
type HyperlineTrialEndedProps = Partial<{
|
|
@@ -394,7 +393,6 @@ type HyperlineTrialEndedProps = Partial<{
|
|
|
394
393
|
}>;
|
|
395
394
|
type HyperlineTrialStartedProps = Partial<{
|
|
396
395
|
tenantId: string;
|
|
397
|
-
userId: string;
|
|
398
396
|
subscriptionStatus: SubscriptionStatus;
|
|
399
397
|
trialUntil: string;
|
|
400
398
|
webhookEventType: 'payment_method.created';
|
|
@@ -86,7 +86,7 @@ declare module 'intercom-client' {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
import { Analytics } from '@june-so/analytics-node';
|
|
89
|
-
import {
|
|
89
|
+
import { Intercom } from 'intercom-client';
|
|
90
90
|
import { PostHog } from 'posthog-node';
|
|
91
91
|
import { type LogBindings, type WorkerLog } from '../log';
|
|
92
92
|
import type { GroupProps, IdentifyProps, TrackProps, TrackingEvent } from './types';
|
|
@@ -113,6 +113,6 @@ export declare const useTracking: ({ dataset, env, name }: UseTracking, isDev?:
|
|
|
113
113
|
shutdown: () => Promise<any>;
|
|
114
114
|
log: WorkerLog;
|
|
115
115
|
june?: Analytics;
|
|
116
|
-
intercom?:
|
|
116
|
+
intercom?: Intercom;
|
|
117
117
|
posthog?: PostHog;
|
|
118
118
|
};
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { createClientV2 } from '@finalytic/graphql';
|
|
2
2
|
import { Analytics } from '@june-so/analytics-node';
|
|
3
|
-
import { Intercom
|
|
4
|
-
import { fetcher } from 'intercom-client/core/fetcher/Fetcher';
|
|
3
|
+
import { Intercom } from 'intercom-client';
|
|
5
4
|
import { PostHog } from 'posthog-node';
|
|
6
5
|
import { useLog } from '../log';
|
|
7
6
|
import { convertKeysToSnakeCase, isTest } from '../utils';
|
|
@@ -17,12 +16,13 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
17
16
|
: undefined;
|
|
18
17
|
const log = useLog({ name, dataset, env });
|
|
19
18
|
const intercom = env.INTERCOM_TOKEN
|
|
20
|
-
? new
|
|
21
|
-
|
|
22
|
-
fetcher: (args) =>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
19
|
+
? new Intercom({
|
|
20
|
+
accessToken: env.INTERCOM_TOKEN,
|
|
21
|
+
// fetcher: (args) =>
|
|
22
|
+
// fetcher({
|
|
23
|
+
// ...args,
|
|
24
|
+
// headers: { ...args.headers, accept: 'application/json' },
|
|
25
|
+
// }),
|
|
26
26
|
})
|
|
27
27
|
: undefined;
|
|
28
28
|
const june = env.JUNESO_TOKEN ? new Analytics(env.JUNESO_TOKEN) : undefined;
|
|
@@ -36,19 +36,16 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
36
36
|
track: async ({ userId, anonymousId, groupId, event, packageName, properties, timestamp = new Date(), }) => {
|
|
37
37
|
if (isDev || isTest(userId || anonymousId || '', groupId))
|
|
38
38
|
return;
|
|
39
|
-
await client?.mutate((q) => {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
});
|
|
50
|
-
return { id: e.id };
|
|
51
|
-
});
|
|
39
|
+
await client?.mutate((q) => q.insert_tracking_event_one({
|
|
40
|
+
object: {
|
|
41
|
+
name: event,
|
|
42
|
+
tenantId: groupId,
|
|
43
|
+
userId: userId,
|
|
44
|
+
props: properties,
|
|
45
|
+
createdAt: timestamp,
|
|
46
|
+
packageName,
|
|
47
|
+
},
|
|
48
|
+
}).id);
|
|
52
49
|
if (anonymousId) {
|
|
53
50
|
posthog?.capture({
|
|
54
51
|
distinctId: anonymousId,
|
|
@@ -92,11 +89,13 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
92
89
|
console.error(err);
|
|
93
90
|
});
|
|
94
91
|
try {
|
|
95
|
-
await intercom?.
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
92
|
+
await intercom?.dataEvents.create({
|
|
93
|
+
body: {
|
|
94
|
+
user_id: userId,
|
|
95
|
+
event_name: event,
|
|
96
|
+
metadata: convertValuesToString(properties),
|
|
97
|
+
created_at: Math.floor(timestamp.getTime() / 1000),
|
|
98
|
+
},
|
|
100
99
|
});
|
|
101
100
|
}
|
|
102
101
|
catch (e) {
|
|
@@ -140,14 +139,14 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
140
139
|
const intercomUser = (await intercom?.contacts.search({
|
|
141
140
|
query: {
|
|
142
141
|
field: 'external_id',
|
|
143
|
-
operator:
|
|
142
|
+
operator: '=',
|
|
144
143
|
value: userId,
|
|
145
144
|
},
|
|
146
|
-
}))?.data
|
|
145
|
+
}))?.data?.at(0);
|
|
147
146
|
if (intercomUser?.id)
|
|
148
147
|
await intercom?.contacts.update(intercomUser?.id, data);
|
|
149
148
|
else
|
|
150
|
-
await intercom?.contacts.create(data);
|
|
149
|
+
await intercom?.contacts.create({ body: data });
|
|
151
150
|
}
|
|
152
151
|
catch (e) {
|
|
153
152
|
console.error(e);
|
|
@@ -162,6 +161,35 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
162
161
|
let intercomCompany;
|
|
163
162
|
try {
|
|
164
163
|
const cid = traits?.billingCustomerId || traits?.hyperlineCustomerId;
|
|
164
|
+
const partner = traits?.partner || traits?.accountingPartner;
|
|
165
|
+
const billingPartner = traits?.billingPartner ||
|
|
166
|
+
traits?.partner ||
|
|
167
|
+
traits?.accountingPartner;
|
|
168
|
+
const custom_attributes = { teamId: groupId };
|
|
169
|
+
if (traits?.name)
|
|
170
|
+
custom_attributes.team = traits?.name;
|
|
171
|
+
if (traits?.type)
|
|
172
|
+
custom_attributes.type = traits?.type;
|
|
173
|
+
if (traits?.status)
|
|
174
|
+
custom_attributes.status = traits?.status;
|
|
175
|
+
if (traits?.pms)
|
|
176
|
+
custom_attributes.pms = traits?.pms;
|
|
177
|
+
if (traits?.accountingSoftware)
|
|
178
|
+
custom_attributes.accountingSoftware = traits?.accountingSoftware;
|
|
179
|
+
if (traits?.activeListings)
|
|
180
|
+
custom_attributes.activeListings = `${traits?.activeListings}`;
|
|
181
|
+
if (traits?.paymentMethodType)
|
|
182
|
+
custom_attributes.paymentMethodType = traits?.paymentMethodType;
|
|
183
|
+
if (partner)
|
|
184
|
+
custom_attributes.partner = partner;
|
|
185
|
+
if (cid)
|
|
186
|
+
custom_attributes.billingPortalUrl = `https://billing.vrplatform.app/portal/${cid}`;
|
|
187
|
+
if (traits?.subscriptionStatus)
|
|
188
|
+
custom_attributes.billingStatus = traits?.subscriptionStatus;
|
|
189
|
+
if (billingPartner)
|
|
190
|
+
custom_attributes.billingPartner = billingPartner;
|
|
191
|
+
if (traits.trialUntil)
|
|
192
|
+
custom_attributes.trialUntil = traits.trialUntil;
|
|
165
193
|
intercomCompany = await intercom?.companies.create({
|
|
166
194
|
name: traits?.name,
|
|
167
195
|
company_id: groupId,
|
|
@@ -170,25 +198,8 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
170
198
|
? Math.floor(new Date(traits.createdAt).getTime() / 1000)
|
|
171
199
|
: undefined,
|
|
172
200
|
monthly_spend: traits?.mrr,
|
|
173
|
-
custom_attributes
|
|
174
|
-
|
|
175
|
-
team: traits?.name,
|
|
176
|
-
type: traits?.type,
|
|
177
|
-
status: traits?.status,
|
|
178
|
-
pms: traits?.pms,
|
|
179
|
-
accountingSoftware: traits?.accountingSoftware,
|
|
180
|
-
activeListings: traits?.activeListings,
|
|
181
|
-
paymentMethodType: traits?.paymentMethodType,
|
|
182
|
-
partnerName: traits?.partner || traits?.accountingPartner,
|
|
183
|
-
billingPortalUrl: cid
|
|
184
|
-
? `https://billing.vrplatform.app/portal/${cid}`
|
|
185
|
-
: undefined,
|
|
186
|
-
billingStatus: traits?.subscriptionStatus,
|
|
187
|
-
billingPartner: traits?.billingPartner ||
|
|
188
|
-
traits?.partner ||
|
|
189
|
-
traits?.accountingPartner,
|
|
190
|
-
},
|
|
191
|
-
});
|
|
201
|
+
custom_attributes,
|
|
202
|
+
}, {});
|
|
192
203
|
}
|
|
193
204
|
catch (e) {
|
|
194
205
|
console.error(e);
|
|
@@ -215,13 +226,13 @@ export const useTracking = ({ dataset, env, name }, isDev) => {
|
|
|
215
226
|
const intercomUser = (await intercom?.contacts.search({
|
|
216
227
|
query: {
|
|
217
228
|
field: 'external_id',
|
|
218
|
-
operator:
|
|
229
|
+
operator: '=',
|
|
219
230
|
value: userId,
|
|
220
231
|
},
|
|
221
|
-
}))?.data
|
|
232
|
+
}))?.data?.at(0);
|
|
222
233
|
if (intercomUser?.id && intercomCompany?.id)
|
|
223
|
-
intercom?.companies.
|
|
224
|
-
|
|
234
|
+
intercom?.contacts.companies.create(intercomUser?.id, {
|
|
235
|
+
company_id: intercomCompany?.id,
|
|
225
236
|
});
|
|
226
237
|
}
|
|
227
238
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["tracking/index.ts"],"names":[],"mappings":"AAoGA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"src/","sources":["tracking/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,7 @@ export type GroupProps = OptionalUser<{
|
|
|
49
49
|
mrr?: number;
|
|
50
50
|
plan?: string;
|
|
51
51
|
paymentMethodType?: string;
|
|
52
|
+
trialUntil?: string;
|
|
52
53
|
[key: string]: string | number | boolean | null | undefined;
|
|
53
54
|
};
|
|
54
55
|
timestamp?: Date;
|
|
@@ -137,7 +138,6 @@ export type TenantType = 'admin' | 'partner' | 'propertyManager';
|
|
|
137
138
|
export type TenantStatus = 'active' | 'inactive';
|
|
138
139
|
export type SubscriptionStatus = 'active' | 'cancelled' | 'draft' | 'errored' | 'paused' | 'pending' | 'voided';
|
|
139
140
|
export type PaymentMethodType = 'card' | 'direct_debit_sepa' | 'direct_debit_ach' | 'direct_debit_bacs';
|
|
140
|
-
export type WebhookEventType = 'customer.created' | 'customer.updated' | 'subscription.activated' | 'subscription.cancelled' | 'subscription.created' | 'subscription.errored' | 'subscription.paused' | 'subscription.voided' | 'subscription.charged' | 'payment_method.created' | 'payment_method.errored' | 'payment_method.deleted';
|
|
141
141
|
type AccountInvitationAcceptedProps = Partial<{
|
|
142
142
|
userId: string;
|
|
143
143
|
userEmail: string;
|
|
@@ -257,7 +257,6 @@ type GlOwnerStatementPreviewOpenedProps = Partial<{
|
|
|
257
257
|
userType: 'owner' | 'property_manager';
|
|
258
258
|
}>;
|
|
259
259
|
type HyperlineCustomerCreatedProps = Partial<{
|
|
260
|
-
userId: string;
|
|
261
260
|
tenantId: string;
|
|
262
261
|
customerId: string;
|
|
263
262
|
billingEmail: string;
|
|
@@ -268,7 +267,6 @@ type HyperlineCustomerCreatedProps = Partial<{
|
|
|
268
267
|
webhookEventType: 'customer.created';
|
|
269
268
|
}>;
|
|
270
269
|
type HyperlineCustomerUpdatedProps = Partial<{
|
|
271
|
-
userId: string;
|
|
272
270
|
tenantId: string;
|
|
273
271
|
customerId: string;
|
|
274
272
|
billingEmail: string;
|
|
@@ -301,7 +299,6 @@ type HyperlineInvoiceSettledProps = Partial<{
|
|
|
301
299
|
settledAt: string;
|
|
302
300
|
}>;
|
|
303
301
|
type HyperlinePaymentMethodCreatedProps = Partial<{
|
|
304
|
-
userId: string;
|
|
305
302
|
tenantId: string;
|
|
306
303
|
subscriptionStartDate: string;
|
|
307
304
|
paymentMethodType: PaymentMethodType;
|
|
@@ -311,7 +308,6 @@ type HyperlinePaymentMethodCreatedProps = Partial<{
|
|
|
311
308
|
webhookEventType: 'payment_method.created';
|
|
312
309
|
}>;
|
|
313
310
|
type HyperlinePaymentMethodDeletedProps = Partial<{
|
|
314
|
-
userId: string;
|
|
315
311
|
tenantId: string;
|
|
316
312
|
subscriptionStartDate: string;
|
|
317
313
|
paymentMethodType: PaymentMethodType;
|
|
@@ -321,7 +317,6 @@ type HyperlinePaymentMethodDeletedProps = Partial<{
|
|
|
321
317
|
webhookEventType: 'payment_method.deleted';
|
|
322
318
|
}>;
|
|
323
319
|
type HyperlinePaymentMethodErroredProps = Partial<{
|
|
324
|
-
userId: string;
|
|
325
320
|
tenantId: string;
|
|
326
321
|
subscriptionStartDate: string;
|
|
327
322
|
paymentMethodType: PaymentMethodType;
|
|
@@ -331,20 +326,20 @@ type HyperlinePaymentMethodErroredProps = Partial<{
|
|
|
331
326
|
webhookEventType: 'payment_method.errored';
|
|
332
327
|
}>;
|
|
333
328
|
type HyperlineSubscriptionActivatedProps = Partial<{
|
|
334
|
-
|
|
335
|
-
tenantId: string;
|
|
329
|
+
subscriptionId: string;
|
|
336
330
|
subscriptionStatus: SubscriptionStatus;
|
|
331
|
+
plan: string;
|
|
332
|
+
tenantId: string;
|
|
337
333
|
webhookEventType: 'subscription.activated';
|
|
338
334
|
}>;
|
|
339
335
|
type HyperlineSubscriptionCancelledProps = Partial<{
|
|
340
|
-
trialEndAt: string;
|
|
341
|
-
plan: string;
|
|
342
336
|
subscriptionId: string;
|
|
343
|
-
subscriptionStartDate: string;
|
|
344
337
|
subscriptionStatus: SubscriptionStatus;
|
|
338
|
+
plan: string;
|
|
339
|
+
trialEndAt: string;
|
|
340
|
+
subscriptionStartDate: string;
|
|
345
341
|
paymentMethodType: string;
|
|
346
342
|
customerId: string;
|
|
347
|
-
userId: string;
|
|
348
343
|
tenantId: string;
|
|
349
344
|
webhookEventType: 'subscription.cancelled';
|
|
350
345
|
}>;
|
|
@@ -366,21 +361,25 @@ type HyperlineSubscriptionCreatedProps = Partial<{
|
|
|
366
361
|
customerId: string;
|
|
367
362
|
}>;
|
|
368
363
|
type HyperlineSubscriptionErroredProps = Partial<{
|
|
364
|
+
subscriptionId: string;
|
|
365
|
+
subscriptionStatus: SubscriptionStatus;
|
|
366
|
+
plan: string;
|
|
369
367
|
userId: string;
|
|
370
368
|
tenantId: string;
|
|
371
|
-
subscriptionStatus: SubscriptionStatus;
|
|
372
369
|
webhookEventType: 'subscription.errored';
|
|
373
370
|
}>;
|
|
374
371
|
type HyperlineSubscriptionPausedProps = Partial<{
|
|
375
|
-
|
|
376
|
-
tenantId: string;
|
|
372
|
+
subscriptionId: string;
|
|
377
373
|
subscriptionStatus: SubscriptionStatus;
|
|
374
|
+
plan: string;
|
|
375
|
+
tenantId: string;
|
|
378
376
|
webhookEventType: 'subscription.paused';
|
|
379
377
|
}>;
|
|
380
378
|
type HyperlineSubscriptionVoidedProps = Partial<{
|
|
381
|
-
|
|
382
|
-
tenantId: string;
|
|
379
|
+
subscriptionId: string;
|
|
383
380
|
subscriptionStatus: SubscriptionStatus;
|
|
381
|
+
plan: string;
|
|
382
|
+
tenantId: string;
|
|
384
383
|
webhookEventType: 'subscription.voided';
|
|
385
384
|
}>;
|
|
386
385
|
type HyperlineTrialEndedProps = Partial<{
|
|
@@ -394,7 +393,6 @@ type HyperlineTrialEndedProps = Partial<{
|
|
|
394
393
|
}>;
|
|
395
394
|
type HyperlineTrialStartedProps = Partial<{
|
|
396
395
|
tenantId: string;
|
|
397
|
-
userId: string;
|
|
398
396
|
subscriptionStatus: SubscriptionStatus;
|
|
399
397
|
trialUntil: string;
|
|
400
398
|
webhookEventType: 'payment_method.created';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vrplatform/log",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.26",
|
|
4
4
|
"main": "build/main/index.js",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"@axiomhq/js": "1.0.0-rc.3",
|
|
21
21
|
"@finalytic/graphql": "1.12.133",
|
|
22
22
|
"@june-so/analytics-node": "8.0.0",
|
|
23
|
-
"intercom-client": "6.0.0-
|
|
23
|
+
"intercom-client": "6.0.0-beta.3",
|
|
24
24
|
"posthog-node": "4.0.1",
|
|
25
25
|
"serialize-error": "11.0.3"
|
|
26
26
|
},
|
package/src/tracking/index.ts
CHANGED
|
@@ -100,8 +100,7 @@ declare module 'intercom-client' {
|
|
|
100
100
|
|
|
101
101
|
import { createClientV2 } from '@finalytic/graphql';
|
|
102
102
|
import { Analytics } from '@june-so/analytics-node';
|
|
103
|
-
import { Intercom
|
|
104
|
-
import { fetcher } from 'intercom-client/core/fetcher/Fetcher';
|
|
103
|
+
import { Intercom } from 'intercom-client';
|
|
105
104
|
import { PostHog } from 'posthog-node';
|
|
106
105
|
import { type LogBindings, type WorkerLog, useLog } from '../log';
|
|
107
106
|
import { convertKeysToSnakeCase, isTest } from '../utils';
|
|
@@ -141,7 +140,7 @@ export const useTracking = (
|
|
|
141
140
|
shutdown: () => Promise<any>;
|
|
142
141
|
log: WorkerLog;
|
|
143
142
|
june?: Analytics;
|
|
144
|
-
intercom?:
|
|
143
|
+
intercom?: Intercom;
|
|
145
144
|
posthog?: PostHog;
|
|
146
145
|
} => {
|
|
147
146
|
const client = env.HASURA_GRAPHQL_ADMIN_SECRET
|
|
@@ -151,13 +150,13 @@ export const useTracking = (
|
|
|
151
150
|
: undefined;
|
|
152
151
|
const log = useLog({ name, dataset, env });
|
|
153
152
|
const intercom = env.INTERCOM_TOKEN
|
|
154
|
-
? new
|
|
155
|
-
|
|
156
|
-
fetcher: (args) =>
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
153
|
+
? new Intercom({
|
|
154
|
+
accessToken: env.INTERCOM_TOKEN,
|
|
155
|
+
// fetcher: (args) =>
|
|
156
|
+
// fetcher({
|
|
157
|
+
// ...args,
|
|
158
|
+
// headers: { ...args.headers, accept: 'application/json' },
|
|
159
|
+
// }),
|
|
161
160
|
})
|
|
162
161
|
: undefined;
|
|
163
162
|
const june = env.JUNESO_TOKEN ? new Analytics(env.JUNESO_TOKEN) : undefined;
|
|
@@ -180,20 +179,19 @@ export const useTracking = (
|
|
|
180
179
|
}: TrackProps<T>) => {
|
|
181
180
|
if (isDev || isTest(userId || anonymousId || '', groupId)) return;
|
|
182
181
|
|
|
183
|
-
await client?.mutate(
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
});
|
|
182
|
+
await client?.mutate(
|
|
183
|
+
(q) =>
|
|
184
|
+
q.insert_tracking_event_one({
|
|
185
|
+
object: {
|
|
186
|
+
name: event,
|
|
187
|
+
tenantId: groupId,
|
|
188
|
+
userId: userId,
|
|
189
|
+
props: properties,
|
|
190
|
+
createdAt: timestamp,
|
|
191
|
+
packageName,
|
|
192
|
+
},
|
|
193
|
+
}).id
|
|
194
|
+
);
|
|
197
195
|
|
|
198
196
|
if (anonymousId) {
|
|
199
197
|
posthog?.capture({
|
|
@@ -245,11 +243,13 @@ export const useTracking = (
|
|
|
245
243
|
);
|
|
246
244
|
|
|
247
245
|
try {
|
|
248
|
-
await intercom?.
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
246
|
+
await intercom?.dataEvents.create({
|
|
247
|
+
body: {
|
|
248
|
+
user_id: userId,
|
|
249
|
+
event_name: event,
|
|
250
|
+
metadata: convertValuesToString(properties),
|
|
251
|
+
created_at: Math.floor(timestamp.getTime() / 1000),
|
|
252
|
+
},
|
|
253
253
|
});
|
|
254
254
|
} catch (e) {
|
|
255
255
|
console.error(e);
|
|
@@ -305,14 +305,14 @@ export const useTracking = (
|
|
|
305
305
|
await intercom?.contacts.search({
|
|
306
306
|
query: {
|
|
307
307
|
field: 'external_id',
|
|
308
|
-
operator:
|
|
308
|
+
operator: '=',
|
|
309
309
|
value: userId,
|
|
310
310
|
},
|
|
311
311
|
})
|
|
312
|
-
)?.data
|
|
312
|
+
)?.data?.at(0);
|
|
313
313
|
if (intercomUser?.id)
|
|
314
314
|
await intercom?.contacts.update(intercomUser?.id, data);
|
|
315
|
-
else await intercom?.contacts.create(data);
|
|
315
|
+
else await intercom?.contacts.create({ body: data });
|
|
316
316
|
} catch (e) {
|
|
317
317
|
console.error(e);
|
|
318
318
|
}
|
|
@@ -332,34 +332,44 @@ export const useTracking = (
|
|
|
332
332
|
let intercomCompany: Intercom.Company | undefined;
|
|
333
333
|
try {
|
|
334
334
|
const cid = traits?.billingCustomerId || traits?.hyperlineCustomerId;
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
335
|
+
const partner = traits?.partner || traits?.accountingPartner;
|
|
336
|
+
const billingPartner =
|
|
337
|
+
traits?.billingPartner ||
|
|
338
|
+
traits?.partner ||
|
|
339
|
+
traits?.accountingPartner;
|
|
340
|
+
|
|
341
|
+
const custom_attributes: Record<string, string> = { teamId: groupId };
|
|
342
|
+
if (traits?.name) custom_attributes.team = traits?.name;
|
|
343
|
+
if (traits?.type) custom_attributes.type = traits?.type;
|
|
344
|
+
if (traits?.status) custom_attributes.status = traits?.status;
|
|
345
|
+
if (traits?.pms) custom_attributes.pms = traits?.pms;
|
|
346
|
+
if (traits?.accountingSoftware)
|
|
347
|
+
custom_attributes.accountingSoftware = traits?.accountingSoftware;
|
|
348
|
+
if (traits?.activeListings)
|
|
349
|
+
custom_attributes.activeListings = `${traits?.activeListings}`;
|
|
350
|
+
if (traits?.paymentMethodType)
|
|
351
|
+
custom_attributes.paymentMethodType = traits?.paymentMethodType;
|
|
352
|
+
if (partner) custom_attributes.partner = partner;
|
|
353
|
+
if (cid)
|
|
354
|
+
custom_attributes.billingPortalUrl = `https://billing.vrplatform.app/portal/${cid}`;
|
|
355
|
+
if (traits?.subscriptionStatus)
|
|
356
|
+
custom_attributes.billingStatus = traits?.subscriptionStatus;
|
|
357
|
+
if (billingPartner) custom_attributes.billingPartner = billingPartner;
|
|
358
|
+
if (traits.trialUntil) custom_attributes.trialUntil = traits.trialUntil;
|
|
359
|
+
|
|
360
|
+
intercomCompany = await intercom?.companies.create(
|
|
361
|
+
{
|
|
362
|
+
name: traits?.name,
|
|
363
|
+
company_id: groupId,
|
|
364
|
+
plan: traits?.plan,
|
|
365
|
+
remote_created_at: traits?.createdAt
|
|
366
|
+
? Math.floor(new Date(traits.createdAt).getTime() / 1000)
|
|
355
367
|
: undefined,
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
traits?.billingPartner ||
|
|
359
|
-
traits?.partner ||
|
|
360
|
-
traits?.accountingPartner,
|
|
368
|
+
monthly_spend: traits?.mrr,
|
|
369
|
+
custom_attributes,
|
|
361
370
|
},
|
|
362
|
-
|
|
371
|
+
{}
|
|
372
|
+
);
|
|
363
373
|
} catch (e) {
|
|
364
374
|
console.error(e);
|
|
365
375
|
}
|
|
@@ -393,14 +403,14 @@ export const useTracking = (
|
|
|
393
403
|
await intercom?.contacts.search({
|
|
394
404
|
query: {
|
|
395
405
|
field: 'external_id',
|
|
396
|
-
operator:
|
|
406
|
+
operator: '=',
|
|
397
407
|
value: userId,
|
|
398
408
|
},
|
|
399
409
|
})
|
|
400
|
-
)?.data
|
|
410
|
+
)?.data?.at(0);
|
|
401
411
|
if (intercomUser?.id && intercomCompany?.id)
|
|
402
|
-
intercom?.companies.
|
|
403
|
-
|
|
412
|
+
intercom?.contacts.companies.create(intercomUser?.id, {
|
|
413
|
+
company_id: intercomCompany?.id,
|
|
404
414
|
});
|
|
405
415
|
} catch (e) {
|
|
406
416
|
console.error(e);
|
package/src/tracking/types.ts
CHANGED
|
@@ -6,6 +6,17 @@ export type TrackProps<T extends TrackingEvent> = OptionalUser<{
|
|
|
6
6
|
properties: TrackingEventProps[T];
|
|
7
7
|
}>;
|
|
8
8
|
|
|
9
|
+
// const plan = [
|
|
10
|
+
// 'All-in-One VRP Subscription',
|
|
11
|
+
// 'Essentials VRP Subscription',
|
|
12
|
+
// 'Legacy - Percentage',
|
|
13
|
+
// 'Legacy - Tiered Listing',
|
|
14
|
+
// 'Ximplifi',
|
|
15
|
+
// 'Pro VRP Subscription',
|
|
16
|
+
// 'Legacy - Tiered Percentage',
|
|
17
|
+
// 'PMI Corporate VRP Subscription',
|
|
18
|
+
// ];
|
|
19
|
+
|
|
9
20
|
export type IdentifyProps = {
|
|
10
21
|
userId: string;
|
|
11
22
|
traits?: {
|
|
@@ -51,6 +62,7 @@ export type GroupProps = OptionalUser<{
|
|
|
51
62
|
mrr?: number;
|
|
52
63
|
plan?: string;
|
|
53
64
|
paymentMethodType?: string;
|
|
65
|
+
trialUntil?: string;
|
|
54
66
|
[key: string]: string | number | boolean | null | undefined;
|
|
55
67
|
};
|
|
56
68
|
timestamp?: Date;
|
|
@@ -161,19 +173,6 @@ export type PaymentMethodType =
|
|
|
161
173
|
| 'direct_debit_sepa'
|
|
162
174
|
| 'direct_debit_ach'
|
|
163
175
|
| 'direct_debit_bacs';
|
|
164
|
-
export type WebhookEventType =
|
|
165
|
-
| 'customer.created'
|
|
166
|
-
| 'customer.updated'
|
|
167
|
-
| 'subscription.activated'
|
|
168
|
-
| 'subscription.cancelled'
|
|
169
|
-
| 'subscription.created'
|
|
170
|
-
| 'subscription.errored'
|
|
171
|
-
| 'subscription.paused'
|
|
172
|
-
| 'subscription.voided'
|
|
173
|
-
| 'subscription.charged'
|
|
174
|
-
| 'payment_method.created'
|
|
175
|
-
| 'payment_method.errored'
|
|
176
|
-
| 'payment_method.deleted';
|
|
177
176
|
|
|
178
177
|
type AccountInvitationAcceptedProps = Partial<{
|
|
179
178
|
userId: string;
|
|
@@ -319,7 +318,6 @@ type GlOwnerStatementPreviewOpenedProps = Partial<{
|
|
|
319
318
|
}>;
|
|
320
319
|
|
|
321
320
|
type HyperlineCustomerCreatedProps = Partial<{
|
|
322
|
-
userId: string;
|
|
323
321
|
tenantId: string;
|
|
324
322
|
customerId: string;
|
|
325
323
|
billingEmail: string;
|
|
@@ -331,7 +329,6 @@ type HyperlineCustomerCreatedProps = Partial<{
|
|
|
331
329
|
}>;
|
|
332
330
|
|
|
333
331
|
type HyperlineCustomerUpdatedProps = Partial<{
|
|
334
|
-
userId: string;
|
|
335
332
|
tenantId: string;
|
|
336
333
|
customerId: string;
|
|
337
334
|
billingEmail: string;
|
|
@@ -367,7 +364,6 @@ type HyperlineInvoiceSettledProps = Partial<{
|
|
|
367
364
|
}>;
|
|
368
365
|
|
|
369
366
|
type HyperlinePaymentMethodCreatedProps = Partial<{
|
|
370
|
-
userId: string;
|
|
371
367
|
tenantId: string;
|
|
372
368
|
subscriptionStartDate: string;
|
|
373
369
|
paymentMethodType: PaymentMethodType;
|
|
@@ -378,7 +374,6 @@ type HyperlinePaymentMethodCreatedProps = Partial<{
|
|
|
378
374
|
}>;
|
|
379
375
|
|
|
380
376
|
type HyperlinePaymentMethodDeletedProps = Partial<{
|
|
381
|
-
userId: string;
|
|
382
377
|
tenantId: string;
|
|
383
378
|
subscriptionStartDate: string;
|
|
384
379
|
paymentMethodType: PaymentMethodType;
|
|
@@ -389,7 +384,6 @@ type HyperlinePaymentMethodDeletedProps = Partial<{
|
|
|
389
384
|
}>;
|
|
390
385
|
|
|
391
386
|
type HyperlinePaymentMethodErroredProps = Partial<{
|
|
392
|
-
userId: string;
|
|
393
387
|
tenantId: string;
|
|
394
388
|
subscriptionStartDate: string;
|
|
395
389
|
paymentMethodType: PaymentMethodType;
|
|
@@ -400,21 +394,21 @@ type HyperlinePaymentMethodErroredProps = Partial<{
|
|
|
400
394
|
}>;
|
|
401
395
|
|
|
402
396
|
type HyperlineSubscriptionActivatedProps = Partial<{
|
|
403
|
-
|
|
404
|
-
tenantId: string;
|
|
397
|
+
subscriptionId: string;
|
|
405
398
|
subscriptionStatus: SubscriptionStatus;
|
|
399
|
+
plan: string;
|
|
400
|
+
tenantId: string;
|
|
406
401
|
webhookEventType: 'subscription.activated';
|
|
407
402
|
}>;
|
|
408
403
|
|
|
409
404
|
type HyperlineSubscriptionCancelledProps = Partial<{
|
|
410
|
-
trialEndAt: string;
|
|
411
|
-
plan: string;
|
|
412
405
|
subscriptionId: string;
|
|
413
|
-
subscriptionStartDate: string;
|
|
414
406
|
subscriptionStatus: SubscriptionStatus;
|
|
407
|
+
plan: string;
|
|
408
|
+
trialEndAt: string;
|
|
409
|
+
subscriptionStartDate: string;
|
|
415
410
|
paymentMethodType: string;
|
|
416
411
|
customerId: string;
|
|
417
|
-
userId: string;
|
|
418
412
|
tenantId: string;
|
|
419
413
|
webhookEventType: 'subscription.cancelled';
|
|
420
414
|
}>;
|
|
@@ -439,23 +433,27 @@ type HyperlineSubscriptionCreatedProps = Partial<{
|
|
|
439
433
|
}>;
|
|
440
434
|
|
|
441
435
|
type HyperlineSubscriptionErroredProps = Partial<{
|
|
436
|
+
subscriptionId: string;
|
|
437
|
+
subscriptionStatus: SubscriptionStatus;
|
|
438
|
+
plan: string;
|
|
442
439
|
userId: string;
|
|
443
440
|
tenantId: string;
|
|
444
|
-
subscriptionStatus: SubscriptionStatus;
|
|
445
441
|
webhookEventType: 'subscription.errored';
|
|
446
442
|
}>;
|
|
447
443
|
|
|
448
444
|
type HyperlineSubscriptionPausedProps = Partial<{
|
|
449
|
-
|
|
450
|
-
tenantId: string;
|
|
445
|
+
subscriptionId: string;
|
|
451
446
|
subscriptionStatus: SubscriptionStatus;
|
|
447
|
+
plan: string;
|
|
448
|
+
tenantId: string;
|
|
452
449
|
webhookEventType: 'subscription.paused';
|
|
453
450
|
}>;
|
|
454
451
|
|
|
455
452
|
type HyperlineSubscriptionVoidedProps = Partial<{
|
|
456
|
-
|
|
457
|
-
tenantId: string;
|
|
453
|
+
subscriptionId: string;
|
|
458
454
|
subscriptionStatus: SubscriptionStatus;
|
|
455
|
+
plan: string;
|
|
456
|
+
tenantId: string;
|
|
459
457
|
webhookEventType: 'subscription.voided';
|
|
460
458
|
}>;
|
|
461
459
|
|
|
@@ -471,7 +469,6 @@ type HyperlineTrialEndedProps = Partial<{
|
|
|
471
469
|
|
|
472
470
|
type HyperlineTrialStartedProps = Partial<{
|
|
473
471
|
tenantId: string;
|
|
474
|
-
userId: string;
|
|
475
472
|
subscriptionStatus: SubscriptionStatus;
|
|
476
473
|
trialUntil: string;
|
|
477
474
|
webhookEventType: 'payment_method.created';
|