Trusted by the best in the industry


tag or in Webflow's custom code section document.addEventListener('DOMContentLoaded', function() { // Get elements const trigger = document.getElementById('nav-animation-trigger'); const signInBtn = document.querySelector('[data-nav-btn="signin"]'); const bookDemoBtn = document.querySelector('[data-nav-btn="demo"]'); let lastScrollY = window.scrollY; let isTransitioning = false; // Check if element is visible in viewport function isElementVisible(element) { if (!element) return false; const rect = element.getBoundingClientRect(); return rect.top < window.innerHeight && rect.bottom > 0; } // Smooth transition between buttons function switchButtons(showSignIn) { if (isTransitioning) return; isTransitioning = true; const activeBtn = showSignIn ? signInBtn : bookDemoBtn; const inactiveBtn = showSignIn ? bookDemoBtn : signInBtn; // Only transition if the states are different if (activeBtn.style.opacity === '1' || activeBtn.style.opacity === '') { isTransitioning = false; return; } // Ensure buttons have transition CSS [signInBtn, bookDemoBtn].forEach(btn => { if (btn) { btn.style.transition = 'opacity 0.3s ease-in-out'; btn.style.pointerEvents = 'auto'; } }); // Fade out inactive button if (inactiveBtn) { inactiveBtn.style.opacity = '0'; inactiveBtn.style.pointerEvents = 'none'; } // Fade in active button setTimeout(() => { if (activeBtn) { activeBtn.style.opacity = '1'; activeBtn.style.pointerEvents = 'auto'; } isTransitioning = false; }, 50); } // Initial state on page load function setInitialState() { if (!trigger || !signInBtn || !bookDemoBtn) { console.warn('Missing required elements. Make sure you have:'); console.warn('- Element with id "nav-animation-trigger"'); console.warn('- Button with data-nav-btn="signin"'); console.warn('- Button with data-nav-btn="demo"'); return; } // Disable transitions for initial state (immediate change) [signInBtn, bookDemoBtn].forEach(btn => { if (btn) { btn.style.transition = 'none'; } }); const triggerVisible = isElementVisible(trigger); if (triggerVisible) { // Show Sign In immediately signInBtn.style.opacity = '1'; signInBtn.style.pointerEvents = 'auto'; bookDemoBtn.style.opacity = '0'; bookDemoBtn.style.pointerEvents = 'none'; } else { // Show Book a Demo immediately signInBtn.style.opacity = '0'; signInBtn.style.pointerEvents = 'none'; bookDemoBtn.style.opacity = '1'; bookDemoBtn.style.pointerEvents = 'auto'; } // Re-enable transitions after initial state is set setTimeout(() => { [signInBtn, bookDemoBtn].forEach(btn => { if (btn) { btn.style.transition = 'opacity 0.3s ease-in-out'; } }); }, 50); } // Scroll handler function handleScroll() { if (!trigger) return; const currentScrollY = window.scrollY; const triggerVisible = isElementVisible(trigger); const scrollingDown = currentScrollY > lastScrollY; if (scrollingDown && !triggerVisible) { // Scrolling down and past trigger - show Book a Demo switchButtons(false); } else if (!scrollingDown && triggerVisible) { // Scrolling up and trigger is visible - show Sign In switchButtons(true); } lastScrollY = currentScrollY; } // Throttle scroll events for better performance let scrollTimeout; function throttledScroll() { if (scrollTimeout) return; scrollTimeout = setTimeout(() => { handleScroll(); scrollTimeout = null; }, 16); // ~60fps } // Initialize setInitialState(); // Listen for scroll events window.addEventListener('scroll', throttledScroll, { passive: true }); // Optional: Re-check on window resize window.addEventListener('resize', setInitialState); });
Trusted by the best in the industry


Built AI-first, Akkio unifies all your data to drive performance across every campaign stage.
Anyone on your team can turn complex data into clear, explainable, client-ready insights.
Purpose-built for how agencies actually work—fast timelines, complex clients, and full campaign workflows.
Work with powerful pre-built agents to streamline campaign tasks or create custom ones for your clients' specific needs.
Instantly discover and define custom audiences.
Analyze insights and refine segments for impactful campaigns.
Expand audiences with one-click lookalike modeling.
Curate a rich knowledge base for easy chat exploration.
Make agency and client context accessible to your entire team.
Proprietary data meets web search for a powerful research tool.
Chat to turn data into tables, charts, and graphs in seconds.
Never miss reporting SLA by automating recurring reports.
Use insights to optimize performance and plan what’s next.
Learn more about our full agent ecosystem and imagine what's possible for your agency.
Agencies like Horizon Media use Akkio to drive standout client results.
Bill Koenigsberg
CEO at Horizon Media
"What we have formed is bigger than a partnership; we are transforming our business and engagement model to bring our clients transformative platform access."
Horizon Media partners with Akkio to strengthen their growth platform, Blu, delivering AI-enhanced insights, faster workflows, and a stronger competitive edge.
With Akkio powering key capabilities, Horizon teams build audiences 150x faster.
Transform your campaign workflows with powerful AI that delivers measurable results.