diff --git a/packages/server/modules/auth/strategies.js b/packages/server/modules/auth/strategies.js index e8d759d92..ff411e84a 100644 --- a/packages/server/modules/auth/strategies.js +++ b/packages/server/modules/auth/strategies.js @@ -76,7 +76,7 @@ module.exports = async (app) => { const userId = req.user.email ? resolveMixpanelUserId(req.user.email) : null const isInvite = !!req.user.isInvite if (userId) { - mixpanel({ mixpanelUserId: userId }).track('Sign Up', { + await mixpanel({ mixpanelUserId: userId }).track('Sign Up', { isInvite }) } diff --git a/packages/server/modules/shared/utils/mixpanel.ts b/packages/server/modules/shared/utils/mixpanel.ts index bb48ed9a7..faf45eaf3 100644 --- a/packages/server/modules/shared/utils/mixpanel.ts +++ b/packages/server/modules/shared/utils/mixpanel.ts @@ -53,7 +53,7 @@ export function mixpanel(params: { mixpanelUserId: Optional }) { }) return { - track: (eventName: string, extraProperties?: Record) => { + track: async (eventName: string, extraProperties?: Record) => { const payload = { ...getUserIdentificationProperties(), ...getBaseTrackingProperties(), @@ -62,15 +62,23 @@ export function mixpanel(params: { mixpanelUserId: Optional }) { const client = getClient() if (client) { - mixpanelLogger.info( - { - eventName, - payload - }, - 'Mixpanel track() invoked' - ) - client.track(eventName, payload) + return new Promise((resolve, reject) => { + client.track(eventName, payload, (err) => { + mixpanelLogger.info( + { + eventName, + payload, + err: err || false + }, + 'Mixpanel track() invoked' + ) + if (err) return reject(err) + resolve() + }) + }) } + + return false } } }