diff --git a/services/web/app/src/Features/StaticPages/HomeController.mjs b/services/web/app/src/Features/StaticPages/HomeController.mjs index cc7361217d..9b0b0fb563 100644 --- a/services/web/app/src/Features/StaticPages/HomeController.mjs +++ b/services/web/app/src/Features/StaticPages/HomeController.mjs @@ -6,6 +6,7 @@ import ErrorController from '../Errors/ErrorController.js' import SessionManager from '../Authentication/SessionManager.js' import { expressify } from '@overleaf/promise-utils' import logger from '@overleaf/logger' +import SplitTestHandler from '../SplitTests/SplitTestHandler.js' const __dirname = new URL('.', import.meta.url).pathname @@ -31,7 +32,15 @@ async function home(req, res) { page: req.path, }) - res.render('external/home/index') + const hotjarAssignment = await SplitTestHandler.promises.getAssignment( + req, + res, + 'hotjar-marketing' + ) + + res.render('external/home/index', { + shouldLoadHotjar: hotjarAssignment?.variant === 'enabled', + }) } else { res.redirect('/login') } diff --git a/services/web/app/views/layout-website-redesign.pug b/services/web/app/views/layout-website-redesign.pug index a6d621d8b2..61ed83043b 100644 --- a/services/web/app/views/layout-website-redesign.pug +++ b/services/web/app/views/layout-website-redesign.pug @@ -6,6 +6,9 @@ include ./_mixins/bootstrap_js block entrypointVar - entrypoint = 'marketing' +block append meta + meta(name='ol-shouldLoadHotjar' data-type='boolean' content=shouldLoadHotjar) + block body if typeof suppressNavbar == 'undefined' if bootstrapVersion === 5 diff --git a/services/web/frontend/js/features/cookie-banner/index.js b/services/web/frontend/js/features/cookie-banner/index.js index 4acb2a6a6c..3d9b2b8d6c 100644 --- a/services/web/frontend/js/features/cookie-banner/index.js +++ b/services/web/frontend/js/features/cookie-banner/index.js @@ -30,7 +30,8 @@ function setConsent(value) { if ( getMeta('ol-ExposedSettings').gaToken || getMeta('ol-ExposedSettings').gaTokenV4 || - getMeta('ol-ExposedSettings').propensityId + getMeta('ol-ExposedSettings').propensityId || + getMeta('ol-ExposedSettings').hotjarId ) { document .querySelectorAll('[data-ol-cookie-banner-set-consent]') diff --git a/services/web/frontend/js/marketing.ts b/services/web/frontend/js/marketing.ts index 5e360b2dd7..df9fd27d83 100644 --- a/services/web/frontend/js/marketing.ts +++ b/services/web/frontend/js/marketing.ts @@ -1,5 +1,6 @@ import './utils/webpack-public-path' import './infrastructure/error-reporter' +import './infrastructure/hotjar' import './features/form-helpers/hydrate-form' import './features/form-helpers/password-visibility' import './features/link-helpers/slow-link' diff --git a/services/web/frontend/js/pages/marketing/homepage.js b/services/web/frontend/js/pages/marketing/homepage.js index 47b0e7e55e..99059756fd 100644 --- a/services/web/frontend/js/pages/marketing/homepage.js +++ b/services/web/frontend/js/pages/marketing/homepage.js @@ -1,4 +1,5 @@ import '../../marketing' +import '@/infrastructure/hotjar' function homepageAnimation(homepageAnimationEl) { function createFrames(word, { buildTime, holdTime, breakTime }) {