From 980a8458d4fc2c490adea8e7ebcdb4e29d4092cc Mon Sep 17 00:00:00 2001 From: roo hutton Date: Fri, 13 Jun 2025 10:02:16 +0100 Subject: [PATCH] Merge pull request #26140 from overleaf/rh-cio-sub-status Use analyticsId as primary identifier in customer.io and support best-subscription property GitOrigin-RevId: d412f2edbff2e430d7fe3192b8843ad9ac2c226a --- .../app/src/Features/Project/ProjectListController.mjs | 10 ++++++++++ services/web/app/views/_customer_io.pug | 7 ++++--- .../unit/src/Project/ProjectListController.test.mjs | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/services/web/app/src/Features/Project/ProjectListController.mjs b/services/web/app/src/Features/Project/ProjectListController.mjs index 1faa2df017..ab2b0e3082 100644 --- a/services/web/app/src/Features/Project/ProjectListController.mjs +++ b/services/web/app/src/Features/Project/ProjectListController.mjs @@ -409,6 +409,15 @@ async function projectListPage(req, res, next) { 'papers-notification-banner' ) + const customerIoEnabled = + await SplitTestHandler.promises.hasUserBeenAssignedToVariant( + req, + userId, + 'customer-io-trial-conversion', + 'enabled', + true + ) + res.render('project/list-react', { title: 'your_projects', usersBestSubscription, @@ -440,6 +449,7 @@ async function projectListPage(req, res, next) { })), hasIndividualPaidSubscription, userRestrictions: Array.from(req.userRestrictions || []), + customerIoEnabled, }) } diff --git a/services/web/app/views/_customer_io.pug b/services/web/app/views/_customer_io.pug index 81d75f7d7f..781dfaab13 100644 --- a/services/web/app/views/_customer_io.pug +++ b/services/web/app/views/_customer_io.pug @@ -1,10 +1,12 @@ if(customerIoEnabled && ExposedSettings.cioWriteKey && ExposedSettings.cioSiteId) - script(type="text/javascript", id="cio-loader", nonce=scriptNonce, data-cio-write-key=ExposedSettings.cioWriteKey, data-cio-site-id=ExposedSettings.cioSiteId, data-session-analytics-id=getSessionAnalyticsId(), data-user-id=getLoggedInUserId()). + script(type="text/javascript", id="cio-loader", nonce=scriptNonce, data-best-subscription=(usersBestSubscription && usersBestSubscription.type), data-cio-write-key=ExposedSettings.cioWriteKey, data-cio-site-id=ExposedSettings.cioSiteId, data-session-analytics-id=getSessionAnalyticsId(), data-user-id=getLoggedInUserId()). var cioSettings = document.querySelector('#cio-loader').dataset; var analyticsId = cioSettings.sessionAnalyticsId; var siteId = cioSettings.cioSiteId; var writeKey = cioSettings.cioWriteKey; var userId = cioSettings.userId; + var usersBestSubscription = cioSettings.bestSubscription + !function(){var i="cioanalytics", analytics=(window[i]=window[i]||[]);if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware"];analytics.factory=function(e){return function(){var t=Array.prototype.slice.call(arguments);t.unshift(e);analytics.push(t);return analytics}};for(var e=0;e