diff --git a/packages/builder/src/analytics/IntercomClient.js b/packages/builder/src/analytics/IntercomClient.js index 10c2f99695..8cc7e35bbf 100644 --- a/packages/builder/src/analytics/IntercomClient.js +++ b/packages/builder/src/analytics/IntercomClient.js @@ -3,6 +3,9 @@ export default class IntercomClient { this.token = token } + /** + * Instantiate intercom using their provided script. + */ init() { if (!this.token) return @@ -43,6 +46,11 @@ export default class IntercomClient { } } + /** + * Show the intercom chat bubble. + * @param {Object} user - user to identify + * @returns Intercom global object + */ show(user = {}) { if (!this.initialised) return @@ -52,21 +60,35 @@ export default class IntercomClient { }) } + /** + * Update intercom user details and messages. + * @returns Intercom global object + */ update() { if (!this.initialised) return return window.Intercom("update") } + /** + * Capture analytics events and send them to intercom. + * @param {String} event - event identifier + * @param {Object} props - properties for the event + * @returns Intercom global object + */ captureEvent(event, props = {}) { if (!this.initialised) return - window.Intercom("trackEvent", event, props) + return window.Intercom("trackEvent", event, props) } + /** + * Disassociate the user from the current session. + * @returns Intercom global object + */ logout() { if (!this.initialised) return - window.Intercom("shutdown") + return window.Intercom("shutdown") } } diff --git a/packages/builder/src/analytics/PosthogClient.js b/packages/builder/src/analytics/PosthogClient.js index 8387c310d3..4c45c10216 100644 --- a/packages/builder/src/analytics/PosthogClient.js +++ b/packages/builder/src/analytics/PosthogClient.js @@ -20,24 +20,31 @@ export default class PosthogClient { this.initialised = true } + /** + * Set the posthog context to the current user + * @param {String} id - unique user id + */ identify(id) { if (!this.initialised) return posthog.identify(id) } + /** + * Update user metadata associated with current user in posthog + * @param {Object} meta - user fields + */ updateUser(meta) { if (!this.initialised) return posthog.people.set(meta) } - captureException(err) { - if (!this.initialised) return - - this.captureEvent("Error", { error: err.message ? err.message : err }) - } - + /** + * Capture analytics events and send them to posthog. + * @param {String} event - event identifier + * @param {Object} props - properties for the event + */ captureEvent(eventName, props) { if (!this.initialised) return @@ -45,6 +52,10 @@ export default class PosthogClient { posthog.capture(eventName, props) } + /** + * Submit NPS feedback to posthog. + * @param {Object} values - NPS Values + */ npsFeedback(values) { if (!this.initialised) return @@ -58,6 +69,9 @@ export default class PosthogClient { posthog.capture(Events.NPS.SUBMITTED, prefixedFeedback) } + /** + * Reset posthog user back to initial state on logout. + */ logout() { if (!this.initialised) return diff --git a/packages/builder/src/analytics/SentryClient.js b/packages/builder/src/analytics/SentryClient.js index b871ea15d9..25e4c37690 100644 --- a/packages/builder/src/analytics/SentryClient.js +++ b/packages/builder/src/analytics/SentryClient.js @@ -13,12 +13,20 @@ export default class SentryClient { } } + /** + * Capture an exception and send it to sentry. + * @param {Error} err - JS error object + */ captureException(err) { if (!this.initalised) return Sentry.captureException(err) } + /** + * Identify user in sentry. + * @param {String} id - Unique user id + */ identify(id) { if (!this.initalised) return