Lead #3454

Company
BM Sports Therapy
Website
https://linktr.ee
Best Contact
Email
()

Override

Captured Pages

View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeReport a Safety ViolationIf you encounter content on Linktree that might violate our Community Standards or Terms and Conditions, please complete the form below. We take abuse reports very seriously, review all requests, and take action as necessary.Other options:To appeal a decision made regarding your account, e.g. a termination, a monetization restriction, or a sensitive content label on a link, please complete our appeals form.For copyright and trademark issues, please complete our IP infringement form.For general support and technical assistance with your Linktree, please visit our Help Centre or contact our Support team. const iframeUrl = `https://bolster.formstack.com/forms/linktree_report_violations${window.location.search}` document.getElementById('bolsterForm').src = iframeUrl; Jumpstart your corner of the internet todayOops! Something went wrong while submitting the form.CompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville St, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); .w-select { -webkit-appearance: none; -moz-appearance: none; }
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeAre you a charitable organization?We have great respect for the work you do. That’s why all authorized charities get free Linktree Pro, on us.You’ll need an existing Linktree free account to be eligible, so create one here to begin.Then, take a minute to fill out the form below. Once we’ve reviewed your answers, you’ll be upgraded to Pro – free, for life.Jumpstart your corner of the internet todayOops! Something went wrong while submitting the form.CompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville St, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); const element = document.querySelector('.swiper.is-swiper-scroll'); if (!element) return; document.addEventListener('DOMContentLoaded', function () { var swiper = new Swiper('.swiper.is-swiper-scroll', { direction: "vertical", autoplay: { delay: 2000, }, freeMode: false, centeredSlides: true, slidesPerView: 'auto', speed: 300, loop: true, mousewheel: { forceToAxis: true, invert: false, sensitivity: 1 }, allowTouchMove: true, mousewheel: false, }); // Use Intersection Observer to control autoplay var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { swiper.autoplay.start(); } else { swiper.autoplay.stop(); } }); }, { threshold: 0.5 // Adjust as needed, 0.5 means 50% of the Swiper must be visible }); observer.observe(element); }); var swiperNodes = ""; var pagination = '<div class=swiper-pagination></div>'; var next_prev_buttons = '<div class="swiper-button-prev"></div><div class="swiper-button-next"></div>'; var scrollbar = '<div class="swiper-scrollbar"></div>'; var swiperNodes = swiperNodes.concat(pagination, next_prev_buttons); /* loop throw all swipers on the page */ $('.swiper').each(function( index ) { $( this ).append(swiperNodes); }); var mySwiper = new Swiper ('.start-swiper', { slidesPerView: 'auto', spaceBetween: 16, centeredSlides: true, loop: true, grabCursor: true, allowTouchMove: true, freemode: true, speed: 4500, lazy: false, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 20, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 'auto', spaceBetween: 16, } }, autoplay: { delay: 0, speed: 100, disableOnInteraction: false, pauseOnMouseEnter: true, }, }) var mySwiper = new Swiper ('.reg-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.15, spaceBetween: 32, centeredSlides: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, }, 767: { /* when window >= 767px - webflow tablet */ slidesPerView: 0, spaceBetween: 0, }, 991: { /* when window >= 988px - webflow desktop */ slidesPerView: 0, spaceBetween: 0, }, 1920: { /* when window >= 988px - webflow desktop */ slidesPerView: 0, spaceBetween: 0, } }, }) document.addEventListener('DOMContentLoaded', () => { const menuLinks = document.querySelectorAll('.menu-link'); menuLinks.forEach(link => { link.addEventListener('click', () => { menuLinks.forEach(link => link.classList.remove('active')); link.classList.add('active'); }); }); window.addEventListener('scroll', () => { let current = ''; document.querySelectorAll('.section').forEach(section => { const sectionTop = section.offsetTop; const sectionHeight = section.clientHeight; if (pageYOffset >= (sectionTop - sectionHeight / 3)) { current = section.getAttribute('id'); } }); menuLinks.forEach(link => { link.classList.remove('active'); if (link.getAttribute('href').includes(current)) { link.classList.add('active'); } }); }); });
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeEasily Manage Linktree at ScaleTake control of all your Linktrees under one powerful, easy-to-use platform. Oversee multiple profiles, track performance across accounts, and assign admins as needed, while unlocking exclusive volume discounts. Perfect for Agencies and Enterprise.How many Linktrees do you need?*Please Select1-1011-2021-4041-100101+This does not qualify for our Enterprise offering, however you can get started straight away by creating your Linktree using the button below.Get started for freeFirst Name*Last Name*Email Address*Company Name*Company Website*Business Model*Please SelectAgencyFranchiseeCorporate Head OfficeRegional Multi-Location ChainLocal Independent BrandNon-ProfitOther - Single LocationOther - Multi-LocationSpecific number of Linktrees needed? (So we can give you a quote.)*What challenges can we help you solve?*Thank you! Someone from our Key Accounts team will be in touch ASAP.Oops! Something went wrong while submitting the form.Jumpstart your corner of the internet todayOops! Something went wrong while submitting the form.CompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville St, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); window.intercomSettings = { app_id: "gzvhbbai", custom_launcher_selector:'#openIntercom' }; const element = document.querySelector('.swiper.is-swiper-scroll'); if (!element) return; document.addEventListener('DOMContentLoaded', function () { var swiper = new Swiper('.swiper.is-swiper-scroll', { direction: "vertical", autoplay: { delay: 2000, }, freeMode: false, centeredSlides: true, slidesPerView: 'auto', speed: 300, loop: true, mousewheel: { forceToAxis: true, invert: false, sensitivity: 1 }, allowTouchMove: true, mousewheel: false, }); // Use Intersection Observer to control autoplay var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { swiper.autoplay.start(); } else { swiper.autoplay.stop(); } }); }, { threshold: 0.5 // Adjust as needed, 0.5 means 50% of the Swiper must be visible }); observer.observe(element); }); var swiperNodes = ""; var pagination = '<div class=swiper-pagination></div>'; var next_prev_buttons = '<div class="swiper-button-prev"></div><div class="swiper-button-next"></div>'; var scrollbar = '<div class="swiper-scrollbar"></div>'; var swiperNodes = swiperNodes.concat(pagination, next_prev_buttons); /* loop throw all swipers on the page */ $('.swiper').each(function( index ) { $( this ).append(swiperNodes); }); var mySwiper = new Swiper ('.start-swiper', { slidesPerView: 'auto', spaceBetween: 16, centeredSlides: true, loop: true, grabCursor: true, allowTouchMove: true, freemode: true, speed: 4500, lazy: false, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 20, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 'auto', spaceBetween: 16, } }, autoplay: { delay: 0, speed: 100, disableOnInteraction: false, pauseOnMouseEnter: true, }, }) var mySwiper = new Swiper ('.reg-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.15, spaceBetween: 32, centeredSlides: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, }, 767: { /* when window >= 767px - webflow tablet */ slidesPerView: 0, spaceBetween: 0, }, 991: { /* when window >= 988px - webflow desktop */ slidesPerView: 0, spaceBetween: 0, }, 1920: { /* when window >= 988px - webflow desktop */ slidesPerView: 0, spaceBetween: 0, } }, }) document.addEventListener('DOMContentLoaded', () => { const menuLinks = document.querySelectorAll('.menu-link'); menuLinks.forEach(link => { link.addEventListener('click', () => { menuLinks.forEach(link => link.classList.remove('active')); link.classList.add('active'); }); }); window.addEventListener('scroll', () => { let current = ''; document.querySelectorAll('.section').forEach(section => { const sectionTop = section.offsetTop; const sectionHeight = section.clientHeight; if (pageYOffset >= (sectionTop - sectionHeight / 3)) { current = section.getAttribute('id'); } }); menuLinks.forEach(link => { link.classList.remove('active'); if (link.getAttribute('href').includes(current)) { link.classList.add('active'); } }); }); });
Emails:
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeContact usNeed to contact Linktree? Simply tap the button below for your options.Contact LinktreeJumpstart your corner of the internet todayOops! Something went wrong while submitting the form.CompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville St, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); const element = document.querySelector('.swiper.is-swiper-scroll'); if (!element) return; document.addEventListener('DOMContentLoaded', function () { var swiper = new Swiper('.swiper.is-swiper-scroll', { direction: "vertical", autoplay: { delay: 2000, }, freeMode: false, centeredSlides: true, slidesPerView: 'auto', speed: 300, loop: true, mousewheel: { forceToAxis: true, invert: false, sensitivity: 1 }, allowTouchMove: true, mousewheel: false, }); // Use Intersection Observer to control autoplay var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { swiper.autoplay.start(); } else { swiper.autoplay.stop(); } }); }, { threshold: 0.5 // Adjust as needed, 0.5 means 50% of the Swiper must be visible }); observer.observe(element); }); var swiperNodes = ""; var pagination = '<div class=swiper-pagination></div>'; var next_prev_buttons = '<div class="swiper-button-prev"></div><div class="swiper-button-next"></div>'; var scrollbar = '<div class="swiper-scrollbar"></div>'; var swiperNodes = swiperNodes.concat(pagination, next_prev_buttons); /* loop throw all swipers on the page */ $('.swiper').each(function( index ) { $( this ).append(swiperNodes); }); var mySwiper = new Swiper ('.start-swiper', { slidesPerView: 'auto', spaceBetween: 16, centeredSlides: true, loop: true, grabCursor: true, allowTouchMove: true, freemode: true, speed: 4500, lazy: false, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 20, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 'auto', spaceBetween: 16, } }, autoplay: { delay: 0, speed: 100, disableOnInteraction: false, pauseOnMouseEnter: true, }, }) var mySwiper = new Swiper ('.reg-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.15, spaceBetween: 32, centeredSlides: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, } }, }) var mySwiper = new Swiper ('.profile-card-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1, spaceBetween: 32, centeredSlides: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 'auto', spaceBetween: 16, }, 767: { /* when window >= 767px - webflow tablet */ slidesPerView: 'auto', spaceBetween: 16, }, 991: { /* when window >= 988px - webflow desktop */ slidesPerView: 'auto', spaceBetween: 16, }, 1920: { /* when window >= 988px - webflow desktop */ slidesPerView: 'auto', spaceBetween: 16, } }, }) var mySwiper = new Swiper ('.testimonial-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 0, loop: true, speed: 250, centeredSlides: true, lazy: true, allowTouchMove: true, mousewheel: false, navigation: { nextEl: '.testimonial-swiper_next', prevEl: '.testimonial-swiper_prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1, spaceBetween: 0, } }, }) var mySwiper = new Swiper ('.fade-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 'auto', spaceBetween: 0, loop: true, centeredSlides: true, speed: 0.1, lazy: true, allowTouchMove: false, mousewheel: false, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1, spaceBetween: 0, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, } }, autoplay: { speed: .01, delay: 3000, disableOnInteraction: false, }, }) document.addEventListener('DOMContentLoaded', () => { const menuLinks = document.querySelectorAll('.menu-link'); menuLinks.forEach(link => { link.addEventListener('click', () => { menuLinks.forEach(link => link.classList.remove('active')); link.classList.add('active'); }); }); window.addEventListener('scroll', () => { let current = ''; document.querySelectorAll('.section').forEach(section => { const sectionTop = section.offsetTop; const sectionHeight = section.clientHeight; if (pageYOffset >= (sectionTop - sectionHeight / 3)) { current = section.getAttribute('id'); } }); menuLinks.forEach(link => { link.classList.remove('active'); if (link.getAttribute('href').includes(current)) { link.classList.add('active'); } }); }); }); window.intercomSettings = { app_id: "gzvhbbai", custom_launcher_selector:'#openIntercom' };
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeLinktree's social responsibilityLinktree is committed to creating a positive impact on the communities and environment we live in through a variety of social good initiatives.We build tools to empower and drive changeWe build new features and tools with social impact in mind. We strive to empower our users to support the causes they care about. From banners to themes, we are constantly evolving our product to raise awareness and channel donations.We offer our team 20 hours paid volunteering leaveWe support everyone on the team to support the cause they care about. We are proud to offer everyone 20 hours paid volunteering leave to help out, give back and make a difference with their chosen charity or community organization.We care deeply about our environment and are proudly carbon neutralLinktree has teamed up with Trace to measure our carbon footprint across our business. We are offsetting our CO2 emissions via our portfolio of climate credit projects.We care about giving back to our local communityAs part of our social good initiative, we provide a dedicated pod of desks on level 7 of our Melbourne office at no cost to not-for-profits that are making a positive impact in the world.Trusted by 70M+creatorsinfluencerssmall businessesathletesmodelsmonetizershealth educatorsstreamersvloggersfitness coachesecommerce sellersretailersproductswellness leadersmusiciansbandspodcastersfashion designersculture creatorsmerch sellerswritersDJs/sdfoodbank/wwf_australia/onetreeplanted/bgca/1millionwomen/rspcasaReady to grow your cause?We are waiving fees for Linktree Pro. So far we have helped over 12,000 charities get free Linktree Pro accounts.Apply nowJumpstart your corner of the internet todayOops! Something went wrong while submitting the form.CompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville St, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); document.addEventListener('DOMContentLoaded', function () { var swiper = new Swiper('.swiper.is-swiper-scroll', { direction: "vertical", autoplay: { delay: 2000, disableOnInteraction: false, }, freeMode: false, centeredSlides: true, slidesPerView: 'auto', speed: 300, loop: true, mousewheel: { forceToAxis: true, invert: false, sensitivity: 1 }, allowTouchMove: true, mousewheel: false, }); // Use Intersection Observer to control autoplay var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { swiper.autoplay.start(); } else { swiper.autoplay.stop(); } }); }, { threshold: 0.5 // Adjust as needed, 0.5 means 50% of the Swiper must be visible }); observer.observe(document.querySelector('.swiper.is-swiper-scroll')); }); var swiperNodes = ""; var pagination = '<div class=swiper-pagination></div>'; var next_prev_buttons = '<div class="swiper-button-prev"></div><div class="swiper-button-next"></div>'; var scrollbar = '<div class="swiper-scrollbar"></div>'; var swiperNodes = swiperNodes.concat(pagination, next_prev_buttons); /* loop throw all swipers on the page */ $('.swiper').each(function( index ) { $( this ).append(swiperNodes); }); var mySwiper = new Swiper ('.start-swiper', { slidesPerView: 'auto', spaceBetween: 16, centeredSlides: true, loop: true, grabCursor: true, allowTouchMove: true, freemode: true, speed: 4500, lazy: false, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 20, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 'auto', spaceBetween: 16, } }, autoplay: { delay: 0, speed: 100, disableOnInteraction: false, pauseOnMouseEnter: true, }, }) var mySwiper = new Swiper ('.reg-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.15, spaceBetween: 32, centeredSlides: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, }, 767: { /* when window >= 767px - webflow tablet */ slidesPerView: 0, spaceBetween: 0, }, 991: { /* when window >= 988px - webflow desktop */ slidesPerView: 0, spaceBetween: 0, }, 1920: { /* when window >= 988px - webflow desktop */ slidesPerView: 0, spaceBetween: 0, } }, }) document.addEventListener('DOMContentLoaded', () => { const menuLinks = document.querySelectorAll('.menu-link'); menuLinks.forEach(link => { link.addEventListener('click', () => { menuLinks.forEach(link => link.classList.remove('active')); link.classList.add('active'); }); }); window.addEventListener('scroll', () => { let current = ''; document.querySelectorAll('.section').forEach(section => { const sectionTop = section.offsetTop; const sectionHeight = section.clientHeight; if (pageYOffset >= (sectionTop - sectionHeight / 3)) { current = section.getAttribute('id'); } }); menuLinks.forEach(link => { link.classList.remove('active'); if (link.getAttribute('href').includes(current)) { link.classList.add('active'); } }); }); });
Emails: career@linktree.at
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeGrow your career at Linktree.At Linktree, we’re empowering everyone with the tools to curate and grow their digital universe. We bet you’ve got some ideas.Link, Laugh, LoveThe team at Linktree is a thriving community spread across Australia, EU, and the US. We spend our days tackling fun technical challenges, building interactive tools, forming partnerships and teasing out unique insights: everything it takes to empower our base of 50M+ Linkers to keep selling, sharing, growing and linking limitlessly.Thrive, your wayStaying healthy, inspired and motivated to bring your full self to work is something that we think everyone deserves. Linktree’s industry-leading approach to benefits puts you in the driver’s seat to shape a life where you can flourish (at and away from your laptop).Flex BenefitNobody knows you better than you. That’s why every Linktree employee gets $7,000 AUD / $4,900 USD to spend on their wellness, growth, lifestyle, and on social impact. From gym memberships to courses, childcare, pet insurance, and green energy initiatives: the benefits that fuel your inspiration and keep you coming to work in tip top shape are yours to define.Leave for whatever life bringsOur 18-week parental leave policy for birthing and non-birthing parents is designed to help enable everyone at Linktree to support their families and ease the transition back to work, including a return experience program offering backup childcare support, a stipend for expenses like expressing devices, and more. We’re also committed to providing time for our people experiencing pregnancy loss or other hardships that could benefit from being with loved ones and finding the support they need.Transpositive Inclusion PolicyAll of our inclusion policies are built closely in partnership with community members. Our Transpositive Inclusion Policy begins with gender inclusion training for all Linktree employees. Our trans and gender diverse employees have access to a mental health support stipend, and for those on a gender affirmation journey, we provide both financial support and leave for your consultations and procedures.Mental health and wellbeing supportIn addition to our flex benefit that can be used on wellness perks like gym memberships or massages, we also provide access to tailored counseling through Mindfit and subscription to Calm. We understand that some days you just need to switch off, so we also offer 10 mental health days to help you reinvigorate your mind and get back on track.Flexible and asynchronous workplaceWe primarily operate out of Australia, London and the US, with offices in Melbourne, LA and SF. Given our team’s distribution across multiple time zones, we’ve embraced remote and flexible work from the start, valuing collaboration above all. So depending on team and location, Linkies work either fully remote or a flex hybrid approach. We’re piloting a new program called ‘Linkie Leaps’ where teams meet in-person for days of collaboration and team-bonding.Our commitment to social impactThis commitment starts with the individual: we offer 20 hours of volunteering and mentorship leave for every team member to support causes they care about. We commit 1% of all revenue to support social good causes and initiatives. To date, we’ve gifted 5,500+ lifetime Pro plans to nonprofits incl. Greenpeace, Planned Parenthood, UN Refugee Agency and 1 Million Women.A workplace that lets you know you belongAt Linktree, you’re part of an empathetic, vibrant and globally-minded culture where your voice always matters. As we scale, we meet challenges and grow together, connected by how much we care about the meaningful work we do. Through training, workshops, events, community, support and inclusion policies, we foster a culture that appreciates each human in it for exactly who they are.How we make the magic happenWe all bring something different to the table (and we wouldn’t have it any other way). Here are the values that we operate with to findthe right path forward together.Go further togetherWe champion collaboration, drawing from our collective strength.Defy the ordinaryOur individual roles are different, but we’re here to do the best work of our lives.Act then adaptWe take big leaps forward through thoughtful risks. We jump in, make tracks and course-correct as we’re moving.Own your partIf we see something that needs fixing, we speak up, fix it and follow through.Let curiosity leadWe believe in the wide-eyed wonder that drives us to new discoveries. We never stop learning, so we never stop growing.Pursue deliberate simplicityWe seek clarity in the complex.Jumpstart your corner of the internet todayOops! Something went wrong while submitting the form.CompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville St, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); var swiperNodes = ""; var pagination = '<div class=swiper-pagination></div>'; var next_prev_buttons = '<div class="swiper-button-prev"></div><div class="swiper-button-next"></div>'; var scrollbar = '<div class="swiper-scrollbar"></div>'; var swiperNodes = swiperNodes.concat(pagination, next_prev_buttons); /* loop throw all swipers on the page */ $('.swiper').each(function( index ) { $( this ).append(swiperNodes); }); var mySwiper = new Swiper ('.shape-swiper', { slidesPerView: 'auto', spaceBetween: 16, centeredSlides: true, loop: true, grabCursor: true, allowTouchMove: true, freemode: true, speed: 300, lazy: false, navigation: { nextEl: '.shape-swiper_next', prevEl: '.shape-swiper_prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 16, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 3.2, spaceBetween: 16, } }, }) var mySwiper = new Swiper ('.reg-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 16, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 16, centeredSlides: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, } }, }) document.addEventListener('DOMContentLoaded', () => { const menuLinks = document.querySelectorAll('.menu-link'); menuLinks.forEach(link => { link.addEventListener('click', () => { menuLinks.forEach(link => link.classList.remove('active')); link.classList.add('active'); }); }); window.addEventListener('scroll', () => { let current = ''; document.querySelectorAll('.section').forEach(section => { const sectionTop = section.offsetTop; const sectionHeight = section.clientHeight; if (pageYOffset >= (sectionTop - sectionHeight / 3)) { current = section.getAttribute('id'); } }); menuLinks.forEach(link => { link.classList.remove('active'); if (link.getAttribute('href').includes(current)) { link.classList.add('active'); } }); }); });
Emails: press@linktr.ee
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freePressWe love working alongside global media to share share our unique well of data about the creator economy with the world.Whether you’re looking to run valuable, exciting and important stories about the changing digital landscape, or spotlight our inspiring users and what’s going on at Linktree HQ – if you’re a member of the media, you can connect with our press team at press@linktr.ee. Not a member of the media but need to get in touch? Let’s chat.Wanna chat? Get in touch.Jumpstart your corner of the internet todayOops! Something went wrong while submitting the form.CompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville St, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })();
Emails:
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeOur Founders' StoryLinktree is a tool to help you share everything you are, in one simple link – making your online content more discoverable, easier to manage and more likely to convert. Here’s where it all began.In 2016 brothers Alex and Anthony Zaccaria and their business partner Nick Humphreys found a common pain point when running their digital agency, Bolster, managing social media accounts for their clients. Endlessly updating singular bio links felt like a waste of time, or worse, often got overlooked. Overnight, the first iteration of Linktree was live, and we haven’t looked back since!Today, with 70M+ users worldwide, we’re helping brands, artists, publishers, agencies and influencers better control their presence online. As the internet became more fragmented, we grew Linktree’s functionality to better serve those using it and to streamline the content-sharing process.We’re a passionate team of developers, designers, marketers and biz ops, committed to equipping content-creators with the best tools for getting their work seen. We’re headquartered in Melbourne, Australia and have offices in Sydney, San Francisco and Los Angeles.In 2019 we were thrilled to be one of CNBC’s ‘Upstart 100’, a list of the “brightest, most intriguing, young startups promising to become the great companies of tomorrow”. In March 2020, Fast Company honored us in their ‘Most Innovative Companies of 2020’ list, placing us number four in the Social Media category. Previous honorees of the Social Media fourth place include Glossier and Reddit.Jumpstart your corner of the internet todayOops! Something went wrong while submitting the form.CompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville St, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })();
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeSuccess StoriesBest PracticesCreatorsHow ToProduct NewsSuccess StoriesJune 24, 20255 min readHow Creators Are Using Linktree’s Instagram Auto-Reply Feature to Grow Their Audience and RevenueTurn comments into conversions. See how top creators are using Linktree’s Instagram Auto-reply to grow their audience and drive results.June 5, 20252 min readThe All-American Rejects – How a Viral House Tour Drove 350K+ RSVPs with LinktreeThe All-American Rejects used Linktree to turn secret house shows into a viral fan movement—driving 350K RSVPs and 22M+ TikTok views.June 24, 20255 min readHow Creators Are Using Linktree’s Instagram Auto-Reply Feature to Grow Their Audience and RevenueTurn comments into conversions. See how top creators are using Linktree’s Instagram Auto-reply to grow their audience and drive results.June 5, 20252 min readThe All-American Rejects – How a Viral House Tour Drove 350K+ RSVPs with LinktreeThe All-American Rejects used Linktree to turn secret house shows into a viral fan movement—driving 350K RSVPs and 22M+ TikTok views.May 28, 20253 min readHow Coach Suz Chadwick Has Grown An Engaged Instagram Community With Linktree's Social PlannerDiscover how business and mindset coach Suz Chadwick uses Linktree's Social Planner to grow her audience, attract dream clients, and streamline her content strategy with powerful data-driven insights and time-saving tools. 4oMay 13, 20255 min readFrom Conversation Series to Courses: How Skylar Sorkin Streamlined Her Creative Business with LinktreeDiscover how multi-hyphenate creator Skylar Sorkin transformed her brand with Linktree, turning a once-disjointed digital presence into a streamlined, mission-driven business hub. May 7, 20256 min read6 Artists and Creators with Digital Products on LinktreeEver wanted to say ‘thanks’ to your audience for showing up day after day? Well, you can – with an exclusive Linktree Digital Product! Get some inspo from these 6 successful artists and creators. May 1, 202510 min read13 Creators Creating Courses with Linktree From content creation tips to no-BS fitness advice, here are 13 of the best Linktree Courses available right now to inspire you to create your own. See more postsGET MONTHLY TIPS FOR CREATORSOops! Something went wrong while submitting the form.CompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville st, Collingwood VIC 3066 .p.blog-summary_p { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 3; /* number of lines to show */ line-clamp: 3; -webkit-box-orient: vertical; } .h3.blog_h3 { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 3; /* number of lines to show */ line-clamp: 3; -webkit-box-orient: vertical; } a { text-decoration-thickness: 0.1em; text-underline-offset: 0.1em; } /* width */ ::-webkit-scrollbar { width: 0px; } /* track */ ::-webkit-scrollbar-track { background: transparent; } /* handle */ ::-webkit-scrollbar-thumb { background: transparent; } /* handle on hover */ ::-webkit-scrollbar-thumb:hover { background: transparent; } body { -webkit-font-smoothing: antialiased; } body { overflow: -moz-scrollbars-none; -ms-overflow-style: none; } :root{ scrollbar-width: none !important; } body{ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } ::-webkit-scrollbar { display: none; // Safari and Chrome } A EmpresaAdsArtArtistsBest PracticesBhad BhadieBlogBoomerangBrandingCaroline PolachekClassyCompanyCreativeCreatorsCriadores de ConteúdoDrag Story HourEmojiFAQsFeature UpdatesFeedFemale AthletesFitnessFollowersFoodFoodiesFrankie LaPennaGenZGeneralGoogle MapsHavanna WinterHow ToIdeasInspirationInstagram strategyInternational Women's DayJada KingdomJenna RaineJon DrettoJustin BaldoniKatey SagalKatie FeeneyLil Miss Hot MessLinkedInLinktree PROLocationMarketingMaya HawkeMeaningsMelhores PráticasMiranda KerrMusicMusiciansNFTsNetworkingNoah BeckNotificationNovidades do ProdutoOnline BusinessPRO featurePartnershipPinterestPortfolioPostsPrideProductProduct NewsPromotionQuotesReal EstateRecord labelReleasesRestaurantsSaratiScreenshotShenseeaSnapchatSportsStella HudgensSubscriptionSubscription businessSuccess StoriesTai VerdesTash SultanaTendênciasTess HollidayTrendsUSAVerifiedViralWomanWork from homeactivismamazonanalyticsartistathletesava julesbeyond the feedbiobiosNextAll document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); window.fsAttributes = window.fsAttributes || []; window.fsAttributes.push([ 'cmsload', (listInstances) => { window.fsAttributes.cmsnest.init(); }, ]); // when the DOM is ready document.addEventListener("DOMContentLoaded", function() { // get the the span element const yrSpan = document.querySelector('.blog-date'); // get the day and months const month = ["January","February","March","April","May","June","July","August","September","October","November","December"]; // get the current date const d = new Date(); let newDate = month[d.getMonth()]+' '+d.getDate()+', '+ d.getFullYear(); // set the date span element's text to the current date console.log = newDate; yrSpan.textContent = newDate; });
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freegrow your email listSync Linktree leads to Mailchimp, Kit and KlaviyoAutomatically connect Linktree subscribers to your email platform and keep your lists up to date. No manual exports needed.Connect your email toolMaximize your contact listDon’t let contacts waste away in a spreadsheet.Kickstart conversations and email campaigns immediately with a form on your Linktree. Sync contacts to your preferred email platform and build a campaign your subscribers won’t be able to resist.Get started todayHow it worksConnect instantly and grow effortlessly.Collect emails and grow your list, fast. Just add a signup form, connect your provider, and you’re ready to grow – right from your link in bio.Step 1: Sync your platformSelect Mailchimp, Kit, Klaviyo or Google Sheets as the location for your email contacts.Step 2: AuthenticateConnect your account to authenticate and begin syncing contacts.Step 3: Start sending emailsYou’re ready to go live! Use your platform to plan and send emails to your list.Get started for freesync contactsGrow your email list with every Linktree tool.Collect email subscribers from forms, digital products or online courses, and sync them all to your email list.Get started todayAudienceManage and organize your audience.See who’s subscribing to your Linktree, where they came from and how they’re engaging with your content.Get started todayEmail integrations for everyone.Course creatorsSend welcome emails to new online course students.Small businessesBuild a list from your contact form and market your products.InfluencersDrop exclusive content or brand deals to your email list.Community buildersSync contacts to your email tool for newsletters and announcements.Frequently asked questionsWho can use audience integrations? Integration tools are available to all users on Pro and Premium plans. Syncing contacts to Google Sheets is available to users on all plans.What are audience integrations? You can connect tools like Mailchimp and Google Sheets to your Linktree to automatically collect and sync audience data from forms – like contact forms, digital product, or course sign-ups.This helps streamline your email marketing or CRM workflows, so you can spend less time copying and pasting and more time engaging your audience.What audience integrations are available at Linktree? Mailchimp, Kit, Klaviyo, and Google Sheets.Jumpstart your corner of the internet todayGet started for freeCompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville st, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); var swiperNodes = ""; var pagination = '<div class=swiper-pagination></div>'; var next_prev_buttons = '<div class="swiper-button-prev"></div><div class="swiper-button-next"></div>'; var scrollbar = '<div class="swiper-scrollbar"></div>'; var swiperNodes = swiperNodes.concat(pagination, next_prev_buttons); /* loop throw all swipers on the page */ $('.swiper').each(function( index ) { $( this ).append(swiperNodes); }); var mySwiper = new Swiper ('.reg-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 16, centeredSlides: true, allowTouchMove: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, allowTouchMove: false, } }, }) var mySwiper = new Swiper ('.grow-tab-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1, spaceBetween: 32, centeredSlides: true, allowTouchMove: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, allowTouchMove: false, } }, }) var mySwiper = new Swiper ('.testimonial-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 0, loop: true, speed: 500, centeredSlides: true, lazy: true, allowTouchMove: true, mousewheel: false, navigation: { nextEl: '.testimonial-swiper_next', prevEl: '.testimonial-swiper_prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1, spaceBetween: 0, } }, }) document.addEventListener("DOMContentLoaded", function () { const tabLinks = document.querySelectorAll(".2-col-tab-link"); let originalActiveTab; tabLinks.forEach(link => { const tabId = link.getAttribute("data-w-tab"); link.addEventListener("mouseenter", () => { // Save currently active tab originalActiveTab = document.querySelector('.w--current'); // Trigger the tab link.click(); }); link.addEventListener("mouseleave", () => { if (originalActiveTab && originalActiveTab !== link) { originalActiveTab.click(); } }); }); }); document.addEventListener('DOMContentLoaded', function() { const hoverTabElements = document.querySelectorAll('[ms-code-onhover="click"]'); hoverTabElements.forEach(hoverTabElement => { hoverTabElement.addEventListener('mouseenter', function() { hoverTabElement.click(); // Click on the element when hovering }); }); }); // Load the YouTube API var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubeIframeAPIReady() { player = new YT.Player('youtube-player'); } // Helper to add event listener safely function addPlayTrigger(id) { const el = document.getElementById(id); if (el) { el.addEventListener('click', function () { if (player && typeof player.playVideo === 'function') { player.playVideo(); } }); } } // Add triggers for both button IDs addPlayTrigger('play-video-btn'); addPlayTrigger('play-video'); (function ($) { 'use strict'; $(".faq-head").on("click", function () { $(this).find(".toggle-arrow-faq").toggleClass("rotate"); $(".toggle-arrow-faq").not($(this).find(".toggle-arrow-faq")).removeClass("rotate"); $(this).next().slideToggle(300); $(".faq-body").not($(this).next()).slideUp("fast"); }); }(jQuery));
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeoptimize and growCollect and organize leads in one placeCollect leads, filter contacts, see where they came from, and sync their info to your email tools – all from your Linktree account.Explore moreTrusted by 70M+creatorsinfluencerssmall businessesathletesmodelsmonetizershealth educatorsstreamersvloggersfitness coachesecommerce sellersretailersproductswellness leadersmusiciansbandspodcastersfashion designersculture creatorsmerch sellerswritersDJsindie artistsproducersrecording studiostouring companiesevent spacesmanagerslabelslive eventsbrand collaboratorspublisherstastemakersglobal artists/laclippers/selenagomez/funkynutmeg/hbo/comedycentral/pharrell/tonyhawkmanage your audienceOrganize your audience and target with ease.Group your audience by interest, intent or signup source. Whether you're launching a campaign or just staying organized, you’ve got everything you need to be successful.Get started todayEmail integrationsSync with Mailchimp, Kit, Klaviyo and more.Grow your email list from your Linktree with a sign-up form and sync responses directly to your email marketing tool.Get started todaynotifyUpdate your subscribers and drive traffic.Send notifications to your subscribers directly from Linktree – all for free. Share your next big launch, drive traffic and more.Get started todayFrequently asked questionsWhat is Audience Manager on Linktree? Audience Manager is a built-in CRM for tracking and managing leads collected via your Linktree.Can I see where my leads are coming from? Yes – Linkers on a Pro plan can view referral sources (e.g., Instagram, TikTok and QR codes) and audience locations.Can I sync my contacts with Mailchimp or Klaviyo? Absolutely. Linktree integrates with popular third-party email and SMS marketing tools to seamlessly sync your contact list.Is Audience Manager free? Audience Manager is available on all plans, but on a Pro plan, you can unlock additional insights and integrations.Jumpstart your corner of the internet todayGet started for freeCompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville st, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); var swiperNodes = ""; var pagination = '<div class=swiper-pagination></div>'; var next_prev_buttons = '<div class="swiper-button-prev"></div><div class="swiper-button-next"></div>'; var scrollbar = '<div class="swiper-scrollbar"></div>'; var swiperNodes = swiperNodes.concat(pagination, next_prev_buttons); /* loop throw all swipers on the page */ $('.swiper').each(function( index ) { $( this ).append(swiperNodes); }); var mySwiper = new Swiper ('.start-swiper', { slidesPerView: 'auto', spaceBetween: 16, centeredSlides: true, loop: true, grabCursor: true, allowTouchMove: true, freemode: true, speed: 4500, lazy: false, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 20, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 'auto', spaceBetween: 16, } }, autoplay: { delay: 0, speed: 100, disableOnInteraction: false, pauseOnMouseEnter: true, }, }) var mySwiper = new Swiper ('.reg-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 16, centeredSlides: true, allowTouchMove: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, allowTouchMove: false, } }, }) var mySwiper = new Swiper ('.grow-tab-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1, spaceBetween: 32, centeredSlides: true, allowTouchMove: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, allowTouchMove: false, } }, }) var mySwiper = new Swiper ('.testimonial-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 0, loop: true, speed: 500, centeredSlides: true, lazy: true, allowTouchMove: true, mousewheel: false, navigation: { nextEl: '.testimonial-swiper_next', prevEl: '.testimonial-swiper_prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1, spaceBetween: 0, } }, }) document.addEventListener("DOMContentLoaded", function () { const tabLinks = document.querySelectorAll(".2-col-tab-link"); let originalActiveTab; tabLinks.forEach(link => { const tabId = link.getAttribute("data-w-tab"); link.addEventListener("mouseenter", () => { // Save currently active tab originalActiveTab = document.querySelector('.w--current'); // Trigger the tab link.click(); }); link.addEventListener("mouseleave", () => { if (originalActiveTab && originalActiveTab !== link) { originalActiveTab.click(); } }); }); }); document.addEventListener('DOMContentLoaded', function() { const hoverTabElements = document.querySelectorAll('[ms-code-onhover="click"]'); hoverTabElements.forEach(hoverTabElement => { hoverTabElement.addEventListener('mouseenter', function() { hoverTabElement.click(); // Click on the element when hovering }); }); }); // Load the YouTube API var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubeIframeAPIReady() { player = new YT.Player('youtube-player'); } // Helper to add event listener safely function addPlayTrigger(id) { const el = document.getElementById(id); if (el) { el.addEventListener('click', function () { if (player && typeof player.playVideo === 'function') { player.playVideo(); } }); } } // Add triggers for both button IDs addPlayTrigger('play-video-btn'); addPlayTrigger('play-video'); (function ($) { 'use strict'; $(".faq-head").on("click", function () { $(this).find(".toggle-arrow-faq").toggleClass("rotate"); $(".toggle-arrow-faq").not($(this).find(".toggle-arrow-faq")).removeClass("rotate"); $(this).next().slideToggle(300); $(".faq-body").not($(this).next()).slideUp("fast"); }); }(jQuery));
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeTurn visitors into leadsGrow your email list with a custom formAdd a beautiful, branded form to your Linktree to collect emails, inquiries and more – then engage every lead and keep them coming back for more.Get started for freeFully customizable formsCustomize your form to fit your needs.Collect emails, names and any other info you need with a form built directly into your Linktree. From growing your email list to capturing leads and building your community – forms help you do it all.Get started todaygrow your email listTurn visitors into customers.Meet your audience where they’re at and capture high-intent leads right from your Linktree — no redirects, no extra clicks.Get started todayexport email listSync with your marketing tool and expand your reach.Connect your form to Mailchimp, Kit, Klaviyo and more — so every subscriber flows directly into your list, ready for follow-up.Get started todayelevate your marketingOrganize your contacts for targeted campaigns.View and manage every submission in your Linktree Audience dashboard – or export to CSV, Google Sheets or your email tool.Get started todayFrequently asked questionsHow do I see and manage form submissions? Responses to all of your forms can be found in the Audience page in your Linktree admin. Audience is the home for all submissions, including other Audience tools like Subscribe.Head to the Manage tab to see and filter all responses.What audience integrations are available at Linktree? Mailchimp, Kit, Klaviyo and Google Sheets.Jumpstart your corner of the internet todayGet started for freeCompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville st, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); var swiperNodes = ""; var pagination = '<div class=swiper-pagination></div>'; var next_prev_buttons = '<div class="swiper-button-prev"></div><div class="swiper-button-next"></div>'; var scrollbar = '<div class="swiper-scrollbar"></div>'; var swiperNodes = swiperNodes.concat(pagination, next_prev_buttons); /* loop throw all swipers on the page */ $('.swiper').each(function( index ) { $( this ).append(swiperNodes); }); var mySwiper = new Swiper ('.reg-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 16, centeredSlides: true, allowTouchMove: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, allowTouchMove: false, } }, }) var mySwiper = new Swiper ('.grow-tab-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 32, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1, spaceBetween: 32, centeredSlides: true, allowTouchMove: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, allowTouchMove: false, } }, }) var mySwiper = new Swiper ('.testimonial-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 0, loop: true, speed: 500, centeredSlides: true, lazy: true, allowTouchMove: true, mousewheel: false, navigation: { nextEl: '.testimonial-swiper_next', prevEl: '.testimonial-swiper_prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1, spaceBetween: 0, } }, }) document.addEventListener("DOMContentLoaded", function () { const tabLinks = document.querySelectorAll(".2-col-tab-link"); let originalActiveTab; tabLinks.forEach(link => { const tabId = link.getAttribute("data-w-tab"); link.addEventListener("mouseenter", () => { // Save currently active tab originalActiveTab = document.querySelector('.w--current'); // Trigger the tab link.click(); }); link.addEventListener("mouseleave", () => { if (originalActiveTab && originalActiveTab !== link) { originalActiveTab.click(); } }); }); }); document.addEventListener('DOMContentLoaded', function() { const hoverTabElements = document.querySelectorAll('[ms-code-onhover="click"]'); hoverTabElements.forEach(hoverTabElement => { hoverTabElement.addEventListener('mouseenter', function() { hoverTabElement.click(); // Click on the element when hovering }); }); }); // Load the YouTube API var tag = document.createElement('script'); tag.src = "https://www.youtube.com/iframe_api"; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubeIframeAPIReady() { player = new YT.Player('youtube-player'); } // Helper to add event listener safely function addPlayTrigger(id) { const el = document.getElementById(id); if (el) { el.addEventListener('click', function () { if (player && typeof player.playVideo === 'function') { player.playVideo(); } }); } } // Add triggers for both button IDs addPlayTrigger('play-video-btn'); addPlayTrigger('play-video'); (function ($) { 'use strict'; $(".faq-head").on("click", function () { $(this).find(".toggle-arrow-faq").toggleClass("rotate"); $(".toggle-arrow-faq").not($(this).find(".toggle-arrow-faq")).removeClass("rotate"); $(this).next().slideToggle(300); $(".faq-body").not($(this).next()).slideUp("fast"); }); }(jQuery));
https://linktr.ee/
Status: 200
Emails:
View text
Time to convert clicks into customers. Linktree’s new growth tools are here! body { padding: 0 !important; } @media screen and (max-width: 479px) { .nav-dd-link img { transition: transform .3s ease-in-out; } .nav-dd-link.w--open img { transform: rotate(180deg); } .nav-menu:has(.mobile-tab-open) :where(.navbar-link, .nav-dd-link, .nav-link-item:not(.w--current)) { display: none!important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current :where(._w-nav-link-icon, .nav-link-text) { display: none !important; } .nav-menu:has(.mobile-tab-open) .nav-link-item.w--current svg { transform: rotate(180deg) } .nav-menu:has(.mobile-tab-open) .nav-dropdown { border: none; } .mobile-tab-open { transform: translate(0%); height: auto; } .nav-slide-out { transform: translate(100%); } } document.addEventListener('DOMContentLoaded', function () { if (window.innerWidth > 479) { $('nav .w-tabs').on('mouseleave', function() { $(".w-dropdown").trigger("w-close") }) $('.nav-link-item.w-tab-link').on('mouseenter', function() { $(this).trigger('click'); }); } $('.nav-link-item.w-tab-link').on('click', function (event) { var url = $(this).attr('data-href'); if (url && event.originalEvent !== undefined && (window.innerWidth > 991) ) { window.open(url, (event.ctrlKey || event.metaKey) ? '_blank' : '_self'); } if ($('.nav-sublink-menu-wrapper').hasClass('mobile-tab-open')) { $('.nav-sublink-menu-wrapper').addClass('nav-slide-out') setTimeout(() => { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }, 300) } else { $('.nav-sublink-menu-wrapper').addClass('mobile-tab-open') } event.preventDefault(); event.stopPropagation(); }) $('.nav-hamburger').on('click', function() { $('.nav-sublink-menu-wrapper').removeClass('mobile-tab-open nav-slide-out'); }) }); Products Link in bio + toolsManage your social mediaGrow and engage your audienceMonetize your followingMeasure your successLink in bio + toolsLink in bioCustomize your LinktreeLink shortenerCreate trackable, shareable short linksQR code generatorTurn links into scannable QR codesCanva Background EditorImport your custom designs from Canva into your profileLinktree for every social platformGrow and engage your audience everywhereFeaturedJoin 70M+ using Linktree as their link in bioOne link to share everything you create, curate, and sell across all your socials.Manage your social mediaSchedule and auto-postHands-free, hassle-free social media planningInstagram auto replyAutomated replies and DMs triggered by commentsAI content & caption generatorInstant AI-powered post ideas and captionsHashtag generatorTrending hashtag suggestions for better reachSocial integration for every social platformPlan, auto post, and share across all platformsWhat’s NewBoost sales with Instagram Auto-replyInstantly reply to comments, send traffic to your offers, and turn engagement into sales—automatically.Grow and engage your audienceCollect leads with contact formsTurn visitors into subscribersManage and activate your audienceOrganize, tag, and track contactsSend contacts to email toolsSync with Mailchimp, Klaviyo, Kit & moreFeaturedConnect your email tools, activate your audienceSend new contacts straight from Linktree to Mailchimp, Klaviyo, Kit and more.Monetize your followingEarn with a Linktree ShopSell products and earn commission Sell an online courseCreate and sell your expertise easilyHost digital productsSell digital products and build your email listEarn by hosting sponsored linksShare brand offers and earn for every sign-up or saleGet rewarded for growing your LinktreeEarn points, level up and unlock cash bonusesBooked and paid, easilyOffer sessions and earn from your expertiseFeaturedTurn Your Linktree into a Storefront That PaysAdd affiliate products, share what you love, and start earning in minutes with industry-leading commissions.Measure your successSocial + link analyticsTrack clicks, engagement and audience insightsFeaturedGrow engagement with analyticsMake data-driven decisions for your Linktree and social media platforms with analytics that are easy to understand.TemplatesMarketplaceLearnResourcesHow to use LinktreeResourcesRead our blogAll the latest tips, tricks and growth strategiesSuccess StoriesReal people, real results on LinktreeLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...How to use LinktreeLinktree Help CentreGet answers, guides and supportLearn with LinktreeCreate & sell your own online CourseIf you’ve got something to share, you’ve got something to sell. Easily create and share an online course that...PricingLog inSign up freeA link in bio built for you.Join 70M+ people using Linktree for their link in bio. One link to help you share everything you create, curate and sell from your Instagram, TikTok, Twitter, YouTube and other social media profiles.Oops! Something went wrong while submitting the form. Create and customize your Linktree in minutesConnect all your content across social media, websites, stores and more in one link in bio. Customize every detail or let Linktree automatically enhance it to match your brand and drive more clicks.Get started for freeShare your Linktree anywhere you like!Add your unique Linktree URL to all the platforms and places you find your audience. Then use your QR code to drive your offline traffic back to your link in bio.Get started for free Analyze your audience and keep them engagedTrack your engagement over time, monitor revenue and learn what’s converting your audience. Make informed updates on the fly to keep them coming back.Get started for freeThe only link in bio trusted by 70M+creatorsinfluencerssmall businessesathletesmodelsmonetizershealth educatorsstreamersvloggersfitness coachesecommerce sellersretailersproductswellness leadersmusiciansbandspodcastersfashion designersculture creatorsmerch sellerswritersDJs/selenagomez/funkynutmeg/hbo/comedycentral/pharrell/tonyhawk/laclippersShare every type of content in limitless waysSell products, collect payments and make monetization simpleGrow, own and engage your audience across all of your channelsThe fast, friendly and powerful link in bio tool.Explore all plansAs featured in...“Linktree simplifies the process for creators to share multiple parts of themselves in one inclusive link.”Riley Lemon,Youtuber, Content Creator“Linktree helps my customers get where they need to go. It's fast and easy.”Patti Chimkire,Founder and Pastry Chef, Mali Bakes“I use Linktree's analytics to better understand my audience and what converts them.”Luke Kidgell,Comedian“My Linktree resume stood out from the rest, securing me my first full-time job as a TV reporter!”Rise Utama,TV Reporter and Producer“With Linktree, I can definitely see the monetization of my following becoming a full-time thing.”David Coleman,Founder, MechanicallyincleyendQuestions? AnsweredWhy do I need a link in bio tool? Right now, every time you’ve got something new to share, you have to go to every single one of your channels to change the link in each of your bios. It’s time-consuming and complicated – making it so much harder to keep everything up to date.A link in bio tool means you never have to compromise, or remove one link from your bio so you can add another. You can keep everything you want to share online in one link. When you’ve got a change, you only ever have to make it once.Is Linktree the original link in bio tool? The short answer? Yes!Back in 2016, we created Linktree as an easy way to link out to all socials and unify digital ecosystems, pioneering the link-in-bio category. Linktree remains the leading, biggest and most popular link-in-bio solution – but that’s just the beginning. You can use your Linktree URL or QR code anywhere your audience is, including on your business cards, in your email signature, on paper-based posters and brochures, and even on your resumé. If you don’t have a website, that’s fine. If you have a Linktree, you don’t need one!Can you get paid and sell things from a Linktree? Yes, you can! We offer plenty of ways to sell products and monetize your audience. You can collect revenue from affiliate links, and sell your products right in your Linktree. Monetisation features are only available for selected countries, see this Help Article for more.A lot of Linktree creators see incredible results with online sales on Linktree, because it removes the extra steps involved in a purchase.‍“We love how Linktree has helped us manage our business by having all social media and ways to pay in one location. The QR code has made it easy for customers to access it all!” – TiffanyIs Linktree safe to use on all of my social media profiles? Linktree is trusted by all social platforms, and is even used on many of Facebook, Instagram and TikTok’s own social media accounts! Because Linktree is the original and most popular link-in-bio tool, the linktr.ee URL is a trusted, identifiable and familiar link that audiences feel comfy and safe clicking on.What makes Linktree better than the other link in bio options? We have our own opinions here, of course, but the stories of the people who use Linktree matter more. Let’s hear what they have to say:“Four months into creating, someone messaged me like: You need a Linktree. I can’t remember what I was using at the time, but it was one of those ones that were supposed to be easy. Once I got Linktree set up, I was like, oh my god – why did I spend $100 on a website? I don’t need all of that! Now, I can see the monetization of my following becoming a full-time thing.” – David ColemanIt’s so much easier to set up and have all of your links in one place in a well designed format.” – Catie T”Websites are cool (I have one) but Linktrees just make it so much easier.” – Tan Nguyen“I love their analytics. Other link-in-bio companies don’t provide extensive data on what’s going on.” – Riley LemonLinktree invented the bio link tool in 2016, and it continues to be the world’s most popular bio link to this day – with 50M+ people using it as their trusted place to share, sell and grow online. Join them on Linktree today and see for yourself!How can I drive more traffic to and through my Linktree? Sharing your Linktree on every social platform you have makes it easy for your most important content to be seen and engaged with by all of your followers. You can even use QR codes to generate online traffic in offline places, and drive people to your links.Once visitors arrive on your Linktree, easy-to-understand analytics help you quickly and easily discover where they’re coming from, and what they’re clicking on. You can immediately see what’s working and what’s not and improve your Linktree on the fly with different link placement, prioritized links, subheadings, animation and more to make sure your traffic is landing exactly where you want it!How many links should I have on my Linktree? This depends on two things. If your priority is click-throughs and conversion, we recommend having 3-7 links on your Linktree at once (based on our most successful creators). Including too many options for your visitors slows down their course of action.That said: for certain creators whose priority is display, education and showcasing (e.g. a record label with a library of new releases to promote, or a management company looking to showcase their full roster of clients), including more than seven links fulfils their purpose perfectly.You can use features on Linktree to add subheadings, sections, animation and other prioritisation methods to your links – so no matter how many things you’ve got to share, you can drive your visitors to what’s most important, first.Do I need a website to use Linktree? No, you don’t! Linktree can act as your very own mini-website to share, sell and grow without any of the time and effort it takes to build and maintain a regular website. You can create a design that fully reflects your personality and brand in seconds, with no knowledge, skills or experience needed. If you already have a website, that’s great: you can add it to your Linktree.“I hardly touch my website any more. I just send people to my Linktree! It’s a good-looking, fresh interface… so much more dynamic. I can take a few minutes, update my links and put my phone away rather than spending 45 struggling on WordPress.” – @ashleyhopeperezWhere can I download the app? Find it in the App Store, and in the Google Play store!Jumpstart your corner of the internet todayOops! Something went wrong while submitting the form.CompanyThe Linktree BlogEngineering BlogMarketplaceWhat's NewAboutPressCareersLink in BioSocial GoodContactCommunityLinktree for Enterprise2023 Creator Report2022 Creator ReportCharitiesCreator Profile DirectoryExplore TemplatesSupportHelp TopicsGetting StartedLinktree ProFeatures & How-TosFAQsReport a ViolationTrust & LegalTerms & ConditionsPrivacy NoticeCookie NoticeTrust CenterCookies PreferencesTransparency ReportLaw Enforcement Access PolicyHuman RightsLog inGet started for free .apple-app-store-icon svg { fill: rgb(255, 255, 255); } .google-play-icon svg { fill: rgb(255, 255, 255); } We acknowledge the Traditional Custodians of the land on which our office stands, The Wurundjeri people of the Kulin Nation, and pay our respects to Elders past, present and emerging. Linktree Pty Ltd (ABN 68 608 721 562), 1-9 Sackville St, Collingwood VIC 3066 document.addEventListener("DOMContentLoaded", function() { const cookiePrefsLink = document.querySelector('.footer-link.ot-sdk-show-settings'); if (cookiePrefsLink) { cookiePrefsLink.addEventListener("click", function(event) { event.preventDefault(); const api = window?.DG_BANNER_API; if (!api || typeof api.config !== 'function' || typeof api.showLayer !== 'function' || typeof api.showConsentBanner !== 'function') { return; } const config = api.config?.(); const layers = config?.layout?.consent_layers || {}; const categoriesLayer = Object.values(layers).find(layer => { const id = (layer?.banner_api_id || '').toLowerCase(); return id.includes('categories'); }); if (categoriesLayer?.banner_api_id) { api.showLayer(categoriesLayer.banner_api_id); } else { api.showConsentBanner(); } }); } }); (async function () { // Black Friday Banner - Show on home page and products pages function addBlackFridayBanner() { const currentPath = window.location.pathname; // Exclude showing banner on all pages that contain '/s/black-friday-2025' in the URL if (window.location.pathname.includes('/black-friday-2025')) { return; } // Check if we're on home page '/' or under '/products/' if (currentPath === '/' || currentPath.startsWith('/products/')) { $('body').prepend('<div class="black-friday-banner"><div class="black-friday-banner-wrapper"><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw hide-mobile-portrait">Black Friday Sale: Up to 40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a><a href="/s/black-friday-2025" class="banner-text max-width-mobile_80vw show-mobile">Black Friday Sale: <br>40% off annual plans. &nbsp;<span class="underline-span offset_2px">Explore Now →</span></a></div></div>'); } else { $('body').prepend('<section class="marquee-text_component"><a href="/s/black-friday-2025" class="swiper bf-marquee-slider background-color_shade text-color_chartreuse w-inline-block"><div class="swiper-wrapper marquee-swiper-wrapper"><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Black Friday Sale&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Up to 40% Off annual plans&nbsp;&nbsp;&nbsp;•</div><div class="swiper-slide marquee-item">Explore Now&nbsp;&nbsp;&nbsp;•</div></div><div class="swiper-pagination"></div><div class="swiper-button-prev"></div><div class="swiper-button-next"></div></a></section>') try { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); } catch(e) { document.addEventListener("DOMContentLoaded", function () { new Swiper('.bf-marquee-slider', { slidesPerView: 'auto', loop: true, freeMode: true, allowTouchMove: false, autoplay: { delay: 0, // No delay between transitions disableOnInteraction: false, // Continue autoplay after user interaction }, speed: 5000, }); }); } } } async function isLoggedIn() { const loginCookie = Cookies.get("lt_uid"); if (!loginCookie) { return false; } try { // Need to check the server, Safari seems to hold on to cookies after logout const response = await fetch('/api/token/'); if (!response.ok) { Cookies.remove("lt_uid"); return false; } const json = await response.json(); if (json?.accessToken) { return true; } } catch (error) { console.warn('Network error or JSON parsing error during token validation. Assuming user is still logged in.', error); return true; // Optimistic: assume logged in if API is unreachable or response is malformed. } Cookies.remove("lt_uid"); return false; } document.body.setAttribute("data-user-status", "fetching"); const userLoggedIn = await isLoggedIn(); window.userLoggedIn = userLoggedIn; if (userLoggedIn) { updateNavBarButtons(); } else { resetCtaLinks(); document.body.setAttribute("data-user-status", "non-authenticated"); addBlackFridayBanner() } document.dispatchEvent(new CustomEvent('LinktreeAuth', { detail: { authenticated: userLoggedIn } })) })(); function updateNavBarButtons() { const logInButt = document.getElementById('logInButton'); const signUpButt = document.getElementById('signUpButton'); if (logInButt) { logInButt.innerText = 'Admin'; logInButt.href = '/admin'; } if (signUpButt) { signUpButt.innerText = 'Log out'; signUpButt.href = '/logout'; } document.body.setAttribute('data-user-status', 'authenticated'); } // CTA links deep link to specific admin pages, if user is logged out, just take them to register function resetCtaLinks() { const elements = document.querySelectorAll('[data-auth-link]'); elements.forEach((el) => { if (el.tagName === 'A') { el.setAttribute("href", "https://linktr.ee/register"); } else if (el.tagName === 'BUTTON') { el.addEventListener('click', function (e) { e.preventDefault(); window.location.href = "https://linktr.ee/register"; }); } }); } function setupProtectedInput(inputElementId) { const inputElement = document.getElementById(inputElementId); if (!inputElement) return; const protectedValue = 'linktr.ee/'; if (!inputElement.value) { inputElement.value = protectedValue; } inputElement.addEventListener('input', () => { const currentValue = inputElement.value; // Handle paste and input if (!currentValue.startsWith(protectedValue)) { inputElement.value = protectedValue; return; } const userInput = currentValue.slice(protectedValue.length).trim(); inputElement.value = protectedValue + userInput; }); // Prevent cursor from moving before protected value inputElement.addEventListener('click', () => { const position = Math.max(protectedValue.length, inputElement.selectionStart); inputElement.setSelectionRange(position, position); }); } setupProtectedInput('username-header'); setupProtectedInput('username-footer'); var form = document.getElementById('Claim-your-linktree-form-footer') if (form) { form.addEventListener('submit', function(event) { event.preventDefault(); var user = document.getElementById('username-footer').value.slice('linktr.ee/'.length) window.location = 'https://linktr.ee/register?username=' + user; }); } (function () { if (window.location.pathname.includes('/join-linktree-pro-for-free')) { document.getElementById('signUpButton').href = 'https://linktr.ee/register?freeTrial=true&freeTrialEntryPoint=PAID_MEDIA&frequency=annual'; } })(); (function initializeStatsig() { const MAX_RETRIES = 10; let retryCount = 0; function checkAndInitStatsig() { const browserId = deviceId; if (!browserId && retryCount < MAX_RETRIES) { retryCount++; setTimeout(checkAndInitStatsig, 500); return; } if (!browserId) { console.warn("Failed to initialize Statsig: browserId not found after maximum retries"); return; } // Initialize Statsig with the browserId window.statsigUser = { customIDs: { stableID: browserId, }, }; const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/statsig-sidecar/dist/index.min.js?apikey=client-Yt2aefGbdNyvtoxMAgOY2lwA4QZ1R7EwQxVhfgeYZrJ"; document.head.appendChild(script); } checkAndInitStatsig(); })(); // Need to wait for OneTrust to load so the GTM triggers have access to the consent values const cookieHandler = (event) => { if (event.data === 'cookie-update-event') { setTimeout(() => { // need to wait for GTM to finish loading tags dataLayer.push({ event: "ViewContent" }); }, 1000); window.removeEventListener('message', cookieHandler); } } window.addEventListener("message", cookieHandler); document.addEventListener("DOMContentLoaded", function () { document.getElementById("logInButton").addEventListener("click", function () { dataLayer.push({ event: "log-in-button-click", }); }); document .getElementById("signUpButton") .addEventListener("click", function () { dataLayer.push({ event: "sign-up-button-click", }); }); }); document.addEventListener("DOMContentLoaded", function () { if (window.innerWidth <= 479) { const navItems = document.querySelectorAll('.nav-link-item'); navItems.forEach(item => { item.addEventListener("click", function () { const chevron = item.querySelector('.nav-chevron-icon-prev'); if (chevron) { if (chevron.style.display === "none" || chevron.style.display === "") { chevron.style.display = "inline-block"; // or "block" depending on layout } else { chevron.style.display = "none"; } } }); }); } const queryString = window.location.search; if (queryString) { const links = document.querySelectorAll('a'); links.forEach(link => { const href = link.getAttribute('href'); if (href && (href.includes('/register') || href.includes('/login'))) { const newHref = href.includes('?') ? `${href}&${queryString.substring(1)}` : `${href}${queryString}`; link.setAttribute('href', newHref); } }); } }); (function() { 'use strict'; var MAX_RETRIES = 10; var POLL_INTERVAL = 250; var retryCount = 0; var pollTimer = null; // Only get from sessionStorage to be consent-compliant function getSessionValue(name) { try { return window.sessionStorage.getItem(name) } catch (e) { return null; } } function encodeSessionDataCompact() { try { if (!window.__lter.generateSesDat) { return null; } var browserId = getSessionValue('browserId'); var sessionId = getSessionValue('sessionId'); var sessionExpiry = getSessionValue('sessionExpiry'); var sessionStart = getSessionValue('sessionStart'); var originalReferrer = getSessionValue('originalReferrer'); return window.__lter.generateSesDat({ 'browserId': browserId, 'sessionId': sessionId, 'sessionExpiry': sessionExpiry, 'sessionStart': sessionStart, 'originalReferrer': originalReferrer }); } catch (e) { return null; } } function waitForSessionData(callback) { if (typeof callback !== 'function') return; function check() { try { retryCount++; var encodedData = encodeSessionDataCompact(); // Use compact format if (encodedData || retryCount >= MAX_RETRIES) { if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(encodedData); return; } } catch (e) { // If check fails, clean up and call callback with null console.warn('Session data check failed:', e); if (pollTimer) { clearInterval(pollTimer); pollTimer = null; } callback(null); } } try { check(); if (retryCount < MAX_RETRIES && !encodeSessionDataCompact()) { pollTimer = setInterval(check, POLL_INTERVAL); } } catch (e) { console.warn('Failed to start session data polling:', e); callback(null); } } function updateAuthUrls(sesData) { if (!sesData) return; try { // Find all links that point to register/login pages var links = document.querySelectorAll('a[href]'); var authKeywords = ['/register', '/login']; // Use Array.prototype.forEach for better browser compatibility Array.prototype.forEach.call(links, function(link) { try { var href = link.getAttribute('href'); if (!href) return; var lowerHref = href.toLowerCase(); // Check if this is an auth-related URL using includes var isAuthUrl = authKeywords.some(function(keyword) { return lowerHref.includes(keyword); }); if (isAuthUrl && href.indexOf('ses_dat=') === -1) { // Add ses_dat parameter var separator = href.indexOf('?') !== -1 ? '&' : '?'; link.setAttribute('href', href + separator + 'ses_dat=' + sesData); } } catch (linkError) { // Skip this link if there's an error processing it console.warn('Failed to process link:', linkError); } }); } catch (e) { // Don't break the page if URL updating fails console.warn('Failed to update auth URLs:', e); } } function hasPerformanceConsent() { try { return window.DG_BANNER_API && typeof window.DG_BANNER_API?.categoryEnabled === 'function' && window.DG_BANNER_API.categoryEnabled('performance'); } catch (e) { // If DataGrail is not available or throws an error, assume no consent return false; } } // Initialize the script safely try { waitForSessionData(function(sesData) { try { // If consent is given, we don't need to append ses_dat to the url if (hasPerformanceConsent()) { return; } else { // No consent - append session data to auth URLs updateAuthUrls(sesData); } } catch (e) { console.warn('Failed to process session data:', e); } }); } catch (e) { // Don't break the page if the entire script fails console.warn('Session encoder initialization failed:', e); } })(); document.addEventListener('DOMContentLoaded', function () { var swiper = new Swiper('.swiper.is-swiper-scroll', { direction: "vertical", autoplay: { delay: 2000, disableOnInteraction: false, }, freeMode: false, centeredSlides: true, slidesPerView: 'auto', speed: 300, loop: true, mousewheel: { forceToAxis: true, invert: false, sensitivity: 1 }, allowTouchMove: true, mousewheel: false, }); // Use Intersection Observer to control autoplay var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { swiper.autoplay.start(); } else { swiper.autoplay.stop(); } }); }, { threshold: 0.5 // Adjust as needed, 0.5 means 50% of the Swiper must be visible }); observer.observe(document.querySelector('.swiper.is-swiper-scroll')); }); // Hero Swiper new Swiper ('.start-swiper-vertical', { direction: 'vertical', slidesPerView: 1, spaceBetween: 40, loop: true, grabCursor: true, allowTouchMove: true, freemode: true, speed: 4000, lazy: false, keyboard: { enabled: false, }, autoplay: { delay: 0, speed: 1000, disableOnInteraction: false, pauseOnMouseEnter: true, }, breakpoints: { '@0.75': { spaceBetween: 20, }, '@1.00': { spaceBetween: 40, }, 0: { direction: 'horizontal', slidesPerView: 'auto', }, 489: { direction: 'vertical', } }, }) var swiperNodes = ""; var pagination = '<div class=swiper-pagination></div>'; var next_prev_buttons = '<div class="swiper-button-prev"></div><div class="swiper-button-next"></div>'; var scrollbar = '<div class="swiper-scrollbar"></div>'; var swiperNodes = swiperNodes.concat(pagination, next_prev_buttons); /* loop throw all swipers on the page */ $('.swiper').each(function( index ) { $( this ).append(swiperNodes); }); var mySwiper = new Swiper ('.start-swiper', { slidesPerView: 'auto', spaceBetween: 16, centeredSlides: true, loop: true, grabCursor: true, allowTouchMove: true, freemode: true, speed: 4500, lazy: false, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 20, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 'auto', spaceBetween: 16, } }, autoplay: { delay: 0, speed: 100, disableOnInteraction: false, pauseOnMouseEnter: true, }, }) var mySwiper = new Swiper ('.reg-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 16, loop: false, speed: 400, centeredSlides: false, centeredSlidesBounds: true, lazy: true, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1.1, spaceBetween: 16, centeredSlides: true, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, } }, }) var mySwiper = new Swiper ('.testimonial-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 1, spaceBetween: 0, loop: true, speed: 250, centeredSlides: true, lazy: true, allowTouchMove: true, mousewheel: false, navigation: { nextEl: '.testimonial-swiper_next', prevEl: '.testimonial-swiper_prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 1, spaceBetween: 0, } }, }) var mySwiper = new Swiper ('.fade-swiper', { mousewheel: { invert: false, forceToAxis: true, }, // Optional parameters slidesPerView: 'auto', spaceBetween: 0, loop: true, centeredSlides: true, speed: 0.1, lazy: true, allowTouchMove: false, mousewheel: false, navigation: { nextEl: '.arrow-next', prevEl: '.arrow-prev', }, keyboard: { enabled: false, }, breakpoints: { 0: { /* when window >=0px - webflow mobile portriat */ slidesPerView: 0, spaceBetween: 0, }, 480: { /* when window >= 478px - webflow mobile landscape */ slidesPerView: 0, spaceBetween: 0, } }, autoplay: { speed: .01, delay: 3000, disableOnInteraction: false, }, }) document.addEventListener('DOMContentLoaded', () => { const menuLinks = document.querySelectorAll('.menu-link'); menuLinks.forEach(link => { link.addEventListener('click', () => { menuLinks.forEach(link => link.classList.remove('active')); link.classList.add('active'); }); }); window.addEventListener('scroll', () => { let current = ''; document.querySelectorAll('.section').forEach(section => { const sectionTop = section.offsetTop; const sectionHeight = section.clientHeight; if (pageYOffset >= (sectionTop - sectionHeight / 3)) { current = section.getAttribute('id'); } }); menuLinks.forEach(link => { link.classList.remove('active'); if (link.getAttribute('href').includes(current)) { link.classList.add('active'); } }); }); }); // Append form username to URL document.getElementById("Claim-your-linktree-form-header").addEventListener("submit", function(e){ e.preventDefault(); // Get the value from the email input field var usernameValue = document.getElementById("username-header").value.slice("linktr.ee/".length) // Redirect to the destination page with the email as a URL parameter window.location = "https://linktr.ee/register?username=" + usernameValue; }); document.getElementById("Claim-your-linktree-form-footer").addEventListener("submit", function(e){ e.preventDefault(); // Get the value from the email input field var usernameValue = document.getElementById("username-footer").value.slice("linktr.ee/".length) // Redirect to the destination page with the email as a URL parameter window.location = "https://linktr.ee/register?username=" + usernameValue; }); const usernamePlaceholder = document.getElementById('username-header') const textInput = document.getElementById('username-header') function addInputText(){ textInput.value = "linktr.ee/" } usernamePlaceholder.addEventListener("click", addInputText); const usernamePlaceholderFooter = document.getElementById('username-footer') const textInputFooter = document.getElementById('username-footer') function addInputTextFooter(){ textInputFooter.value = "linktr.ee/" } usernamePlaceholderFooter.addEventListener("click", addInputTextFooter); (function ($) { 'use strict'; $(".faq-head").on("click", function () { $(this).find(".toggle-arrow-faq").toggleClass("rotate"); $(".toggle-arrow-faq").not($(this).find(".toggle-arrow-faq")).removeClass("rotate"); $(this).next().slideToggle(300); $(".faq-body").not($(this).next()).slideUp("fast"); }); }(jQuery)); function isSafari() { const userAgent = navigator.userAgent; return userAgent.includes('Safari') && !userAgent.includes('Chrome'); } // Run the script when the DOM is ready document.addEventListener('DOMContentLoaded', () => { if (isSafari()) { const video = document.getElementById('customize-your-linktree'); if (video) { const firstSource = video.querySelector('source'); if (firstSource) { video.removeChild(firstSource); console.log('Detected Safari, removed the first video source.'); video.load(); } } } });