diff --git a/apps/portal/src/actions.js b/apps/portal/src/actions.js index 6aafb386b7..4c656273f4 100644 --- a/apps/portal/src/actions.js +++ b/apps/portal/src/actions.js @@ -79,7 +79,7 @@ async function signout({api, state}) { async function signin({data, api, state}) { try { - await api.member.sendMagicLink({...data, emailType: 'signin'}); + await api.member.sendMagicLink({...data, emailType: 'signin', outboundLinkTagging: state.site.outbound_link_tagging}); return { page: 'magiclink', lastPage: 'signin' @@ -100,7 +100,7 @@ async function signup({data, state, api}) { let {plan, tierId, cadence, email, name, newsletters, offerId} = data; if (plan.toLowerCase() === 'free') { - await api.member.sendMagicLink({emailType: 'signup', ...data}); + await api.member.sendMagicLink({emailType: 'signup', ...data, outboundLinkTagging: state.site.outbound_link_tagging}); } else { if (tierId && cadence) { await api.member.checkoutPlan({plan, tierId, cadence, email, name, newsletters, offerId}); @@ -487,6 +487,7 @@ async function oneClickSubscribe({data: {siteUrl}, state}) { name: member.name, email: member.email, autoRedirect: false, + outboundLinkTagging: state.site.outbound_link_tagging, customUrlHistory: [ { time: Date.now(), diff --git a/apps/portal/src/components/pages/RecommendationsPage.js b/apps/portal/src/components/pages/RecommendationsPage.js index 3d3199857b..5c5effa6e2 100644 --- a/apps/portal/src/components/pages/RecommendationsPage.js +++ b/apps/portal/src/components/pages/RecommendationsPage.js @@ -90,13 +90,17 @@ const openTab = (url) => { }; const RecommendationItem = (recommendation) => { - const {t, onAction, member} = useContext(AppContext); + const {t, onAction, member, site} = useContext(AppContext); const {title, url, reason, favicon, one_click_subscribe: oneClickSubscribe, featured_image: featuredImage} = recommendation; const allowOneClickSubscribe = member && oneClickSubscribe; const [subscribed, setSubscribed] = useState(false); const [loading, setLoading] = useState(false); + const outboundLinkTagging = site.outbound_link_tagging ?? false; const refUrl = useMemo(() => { + if (!outboundLinkTagging) { + return url; + } try { const ref = new URL(url); @@ -109,7 +113,7 @@ const RecommendationItem = (recommendation) => { } catch (_) { return url; } - }, [url]); + }, [url, outboundLinkTagging]); const visitHandler = useCallback(() => { // Open url in a new tab diff --git a/apps/portal/src/utils/api.js b/apps/portal/src/utils/api.js index 350753a912..346d3657f8 100644 --- a/apps/portal/src/utils/api.js +++ b/apps/portal/src/utils/api.js @@ -231,7 +231,7 @@ function setupGhostApi({siteUrl = window.location.origin, apiUrl, apiKey}) { }); }, - async sendMagicLink({email, emailType, labels, name, oldEmail, newsletters, redirect, customUrlHistory, autoRedirect = true}) { + async sendMagicLink({email, emailType, labels, name, oldEmail, newsletters, redirect, customUrlHistory, outboundLinkTagging, autoRedirect = true}) { const url = endpointFor({type: 'members', resource: 'send-magic-link'}); const body = { name, @@ -245,7 +245,7 @@ function setupGhostApi({siteUrl = window.location.origin, apiUrl, apiKey}) { autoRedirect }; const urlHistory = customUrlHistory ?? getUrlHistory(); - if (urlHistory) { + if (urlHistory && outboundLinkTagging) { body.urlHistory = urlHistory; } diff --git a/ghost/core/core/shared/settings-cache/public.js b/ghost/core/core/shared/settings-cache/public.js index 4797d1b86c..46bb460e97 100644 --- a/ghost/core/core/shared/settings-cache/public.js +++ b/ghost/core/core/shared/settings-cache/public.js @@ -41,5 +41,6 @@ module.exports = { portal_name: 'portal_name', portal_button: 'portal_button', comments_enabled: 'comments_enabled', - recommendations_enabled: 'recommendations_enabled' + recommendations_enabled: 'recommendations_enabled', + outbound_link_tagging: 'outbound_link_tagging' }; diff --git a/ghost/core/test/e2e-api/content/__snapshots__/settings.test.js.snap b/ghost/core/test/e2e-api/content/__snapshots__/settings.test.js.snap index 21d9e550dc..2a2015f320 100644 --- a/ghost/core/test/e2e-api/content/__snapshots__/settings.test.js.snap +++ b/ghost/core/test/e2e-api/content/__snapshots__/settings.test.js.snap @@ -47,6 +47,7 @@ Object { "og_description": null, "og_image": null, "og_title": null, + "outbound_link_tagging": true, "paid_members_enabled": true, "portal_button": true, "portal_button_icon": null, diff --git a/ghost/core/test/e2e-api/shared/__snapshots__/version.test.js.snap b/ghost/core/test/e2e-api/shared/__snapshots__/version.test.js.snap index af202d34eb..58ed9e5475 100644 --- a/ghost/core/test/e2e-api/shared/__snapshots__/version.test.js.snap +++ b/ghost/core/test/e2e-api/shared/__snapshots__/version.test.js.snap @@ -1391,6 +1391,7 @@ Object { "og_description": null, "og_image": null, "og_title": null, + "outbound_link_tagging": true, "paid_members_enabled": true, "portal_button": true, "portal_button_icon": null, @@ -1489,6 +1490,7 @@ Object { "og_description": null, "og_image": null, "og_title": null, + "outbound_link_tagging": true, "paid_members_enabled": true, "portal_button": true, "portal_button_icon": null,