diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 269e14231..0e5300f9b 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -1936,7 +1936,7 @@ "content": "" }, "link_start": { - "content": "
" + "content": "
" } } }, diff --git a/app/hub/Views/PlusView/PlusView.jsx b/app/hub/Views/PlusView/PlusView.jsx index 6457f84fe..7a56806a4 100644 --- a/app/hub/Views/PlusView/PlusView.jsx +++ b/app/hub/Views/PlusView/PlusView.jsx @@ -29,7 +29,7 @@ class PlusView extends Component { */ _renderButton = (additionalClasses) => { const { isPlus, onPlusClick } = this.props; - const buttonHref = `https://checkout.${globals.GHOSTERY_DOMAIN}.com/plus`; + const buttonHref = `https://checkout.${globals.GHOSTERY_DOMAIN}.com/plus?utm_source=gbe&utm_campaign=intro_hub_plus`; const buttonClassNames = ClassNames('PlusView__button', 'button', additionalClasses, { disabled: isPlus, }); diff --git a/app/hub/Views/PlusView/__tests__/PlusView.test.jsx b/app/hub/Views/PlusView/__tests__/PlusView.test.jsx index 3e2c4fa4e..14d2912ca 100644 --- a/app/hub/Views/PlusView/__tests__/PlusView.test.jsx +++ b/app/hub/Views/PlusView/__tests__/PlusView.test.jsx @@ -70,7 +70,7 @@ describe('app/hub/Views/PlusView component', () => { component.find('.PlusView__button').first().simulate('click'); expect(initialState.onPlusClick.mock.calls.length).toBe(1); - expect(component.find('.PlusView__button').first().props().href).toBe('https://checkout.ghosterystage.com/plus') + expect(component.find('.PlusView__button').first().props().href).toBe('https://checkout.ghosterystage.com/plus?utm_source=gbe&utm_campaign=intro_hub_plus') expect(component.find('.PlusView__button').length).toBe(8); expect(component.find('.PlusView__button.disabled').length).toBe(0); diff --git a/app/hub/Views/PlusView/__tests__/__snapshots__/PlusView.test.jsx.snap b/app/hub/Views/PlusView/__tests__/__snapshots__/PlusView.test.jsx.snap index c673637ca..f4b3356eb 100644 --- a/app/hub/Views/PlusView/__tests__/__snapshots__/PlusView.test.jsx.snap +++ b/app/hub/Views/PlusView/__tests__/__snapshots__/PlusView.test.jsx.snap @@ -361,7 +361,7 @@ exports[`app/hub/Views/PlusView component Snapshot tests with react-test-rendere > { sendMessage('ping', 'hist_plus_cta'); - openCheckoutPage(); + openCheckoutPage({ + utm_source: 'gbe', + utm_campaign: 'in_app_hstats' + }); } /** diff --git a/app/panel/components/Subscribe.jsx b/app/panel/components/Subscribe.jsx index 1bc92505d..81222e88a 100644 --- a/app/panel/components/Subscribe.jsx +++ b/app/panel/components/Subscribe.jsx @@ -21,7 +21,10 @@ import { sendMessage, openCheckoutPage } from '../utils/msg'; */ function _handleBecomeClick() { sendMessage('ping', 'plus_cta_extension'); - openCheckoutPage(); + openCheckoutPage({ + utm_source: 'gbe', + utm_campaign: 'in_app_plus' + }); } /** @@ -36,7 +39,7 @@ const Subscribe = (props) => {
- + {t('subscribe_pitch_learn_more')}
diff --git a/app/panel/utils/msg.js b/app/panel/utils/msg.js index 7081254df..78deb224a 100644 --- a/app/panel/utils/msg.js +++ b/app/panel/utils/msg.js @@ -124,8 +124,8 @@ export function openSubscriptionPage() { * This should be used for messages that don't require a callback. * @memberOf PanelUtils */ -export function openCheckoutPage() { - sendMessage('account.openCheckoutPage'); +export function openCheckoutPage(utm) { + sendMessage('account.openCheckoutPage', { utm }); window.close(); } diff --git a/src/background.js b/src/background.js index b1063f70d..107290cfe 100644 --- a/src/background.js +++ b/src/background.js @@ -849,7 +849,12 @@ function onMessageHandler(request, sender, callback) { return false; } if (name === 'account.openCheckoutPage') { - utils.openNewTab({ url: `https://checkout.${globals.GHOSTERY_DOMAIN}.com/plus`, become_active: true }); + let url = `https://checkout.${globals.GHOSTERY_DOMAIN}.com/plus`; + const { utm } = message || null; + if (utm) { + url += `?utm_source=${utm.utm_source}&utm_campaign=${utm.utm_campaign}`; + } + utils.openNewTab({ url, become_active: true }); return false; } if (name === 'account.openSupportPage') {