1<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"><link rel="help" type="text/plain" href="/llms.txt"><link rel="help" type="text/plain" href="/llms-full.txt"><!-- GA4 Consent Mode v2 â MUST be first script before any GA/GTM loading -->
1<script>(function(){const analyticsContentGroup = "company"; 2const analyticsLocale = "en"; 3const analyticsTagId = "GT-NBXPWL5"; 4 5 /* eslint-disable prefer-rest-params */ 6 window.dataLayer = window.dataLayer || []; 7 function gtag() { 8 dataLayer.push(arguments); 9 } 10 window.gtag = gtag; 11 // Global default: analytics ON by default; ad signals are not used. 12 gtag('consent', 'default', { 13 analytics_storage: 'granted', 14 ad_storage: 'denied', 15 ad_user_data: 'denied', 16 ad_personalization: 'denied', 17 }); 18 // EU/EEA + UK + Switzerland: deny everything by default until the visitor opts in 19 // (Necessary or Accept all). GDPR/ePrivacy require prior consent for analytics here. 20 gtag('consent', 'default', { 21 region: [ 22 'AT', 23 'BE', 24 'BG', 25 'HR', 26 'CY', 27 'CZ', 28 'DK', 29 'EE', 30 'FI', 31 'FR', 32 'DE', 33 'GR', 34 'HU', 35 'IE', 36 'IT', 37 'LV', 38 'LT', 39 'LU', 40 'MT', 41 'NL', 42 'PL', 43 'PT', 44 'RO', 45 'SK', 46 'SI', 47 'ES', 48 'SE', 49 'IS', 50 'LI', 51 'NO', 52 'GB', 53 'CH', 54 ], 55 analytics_storage: 'denied', 56 ad_storage: 'denied', 57 ad_user_data: 'denied', 58 ad_personalization: 'denied', 59 wait_for_update: 500, 60 }); 61 // Restore saved consent before the initial GA config/pageview is queued. 62 // Stored values: 63 // 'accepted' -> analytics consent, ad signals denied 64 // 'essential'/'analytics' -> analytics only, ad signals denied 65 // 'rejected' (legacy) -> all denied; honor prior opt-outs 66 const consentCookie = (document.cookie.match(/(^|; )properly_consent=([^;]*)/) || [])[2]; 67 if (consentCookie === 'accepted') { 68 gtag('consent', 'update', { 69 analytics_storage: 'granted', 70 ad_storage: 'denied', 71 ad_user_data: 'denied', 72 ad_personalization: 'denied', 73 }); 74 } else if (consentCookie === 'essential' || consentCookie === 'analytics') { 75 gtag('consent', 'update', { 76 analytics_storage: 'granted', 77 ad_storage: 'denied', 78 ad_user_data: 'denied', 79 ad_personalization: 'denied', 80 }); 81 } else if (consentCookie === 'rejected') { 82 gtag('consent', 'update', { 83 analytics_storage: 'denied', 84 ad_storage: 'denied', 85 ad_user_data: 'denied', 86 ad_personalization: 'denied', 87 }); 88 } 89 gtag('js', new Date()); 90 const analyticsPageLocation = window.location.href.split('#')[0]; 91 gtag('set', 'user_properties', { locale: analyticsLocale }); 92 gtag('config', analyticsTagId, { 93 send_page_view: true, 94 page_location: analyticsPageLocation, 95 content_group: analyticsContentGroup, 96 linker: { 97 domains: [ 98 'app.getproperly.com', 99 'getproperly.com', 100 'help.getproperly.com', 101 'findacleaner.getproperly.com', 102 ], 103 }, 104 }); 105 /* eslint-enable prefer-rest-params */ 106 })();</script>
106<!-- Preconnect to Google Fonts for faster font loading --><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><!-- Google Fonts: Plus Jakarta Sans (headings), DM Sans (body), JetBrains Mono (mono/stats) --><!-- Preload critical font (headings) for LCP, async-load the full stylesheet --><link rel="preload" as="style" href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500;600;700&display=swap"><link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet" media="print" onload="this.media='all'"><noscript><link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500;600;700&display=swap" rel="stylesheet"></noscript><!-- DNS prefetch for external domains --><link rel="dns-prefetch" href="https://app.getproperly.com"><link rel="dns-prefetch" href="https://images.getproperly.com"><link rel="dns-prefetch" href="https://bookings.zoho.com"><link rel="dns-prefetch" href="https://www.youtube.com"><link rel="dns-prefetch" href="https://i.ytimg.com"><link rel="dns-prefetch" href="https://widget.intercom.io"><link rel="dns-prefetch" href="https://www.googletagmanager.com"><!-- Favicon --><link rel="icon" type="image/x-icon" href="/favicon.ico"><!-- SEO Head --><!-- Primary Meta --><title>About Properly â Founded 2014</title> <meta name="description" content="Founded in 2014, Properly provides vacation rental operations for 10,000+ hosts in 45+ countries, with Cohost Pro from $119/active property/month and Guest Support Plus at $149/listing/month."> <link rel="canonical" href="https://getproperly.com/about"> <!-- Open Graph --> <meta property="og:type" content="website"> <meta property="og:title" content="About Properly â Founded 2014"> <meta property="og:description" content="Founded in 2014, Properly provides vacation rental operations for 10,000+ hosts in 45+ countries, with Cohost Pro from $119/active property/month and Guest Support Plus at $149/listing/month."> <meta property="og:image" content="https://getproperly.com/images/og-default.jpg"> <meta property="og:url" content="https://getproperly.com/about"> <meta property="og:site_name" content="Properly"> <!-- Twitter Card --> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="@GetProperly"> <meta name="twitter:creator" content="@GetProperly"> <meta name="twitter:title" content="About Properly â Founded 2014"> <meta name="twitter:description" content="Founded in 2014, Properly provides vacation rental operations for 10,000+ hosts in 45+ countries, with Cohost Pro from $119/active property/month and Guest Support Plus at $149/listing/month."> <meta name="twitter:image" content="https://getproperly.com/images/og-default.jpg"> <!-- Hreflang â only emitted when the page has localized variants. English-only 107 pages (e.g. /careers) skip these so we don't advertise URLs that 404. --> <link rel="alternate" hreflang="en" href="https://getproperly.com/about"><link rel="alternate" hreflang="fr" href="https://getproperly.com/fr/about"><link rel="alternate" hreflang="de" href="https://getproperly.com/de/about"><link rel="alternate" hreflang="it" href="https://getproperly.com/it/about"><link rel="alternate" hreflang="pt-BR" href="https://getproperly.com/pt-br/about"><link rel="alternate" hreflang="es" href="https://getproperly.com/es/about"><link rel="alternate" hreflang="hr" href="https://getproperly.com/hr/about"><link rel="alternate" hreflang="ru" href="https://getproperly.com/ru/about"> <link rel="alternate" hreflang="x-default" href="https://getproperly.com/about"> <!-- JSON-LD Structured Data -->
107<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://getproperly.com"},{"@type":"ListItem","position":2,"name":"About Properly â Founded 2014","item":"https://getproperly.com/about"}]}</script>
107<link rel="stylesheet" href="/_astro/Footer.BognTUcR.css">
107<script type="module" src="/_astro/page.BZqDKivF.js"></script>
107</head> <body class="bg-white text-gray-900 font-body antialiased"> <a href="#main-content" class="sr-only focus:not-sr-only focus:fixed focus:top-4 focus:left-4 focus:z-[100] focus:bg-white focus:px-4 focus:py-2 focus:rounded-lg focus:shadow-lg focus:text-primary-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2"> Skip to content </a> <header id="site-header" class="fixed top-0 left-0 right-0 z-50 transition-all duration-500" role="banner"> <!-- Background â frosted glass on scroll --><div id="header-bg" class="absolute inset-0 transition-all duration-500 border-b border-transparent"></div> <nav class="relative mx-auto flex h-[72px] max-w-[1280px] items-center justify-between px-5 max-[374px]:px-4 sm:px-8 lg:px-10" aria-label="Main navigation"> <!-- Logo --><a href="/" class="relative z-10 flex items-center gap-2.5 no-underline hover:no-underline shrink-0 group" aria-label="Properly home"> <img src="/images/properly-logo-horizontal.png" alt="Properly: Vacation Rental Quality Management" width="224" height="50" loading="eager" fetchpriority="high" class="h-[25px] max-[359px]:h-5.5 w-auto transition-opacity duration-200 group-hover:opacity-80"> </a> <!-- Desktop Navigation â centered --> <div class="hidden lg:flex lg:items-center lg:gap-0.5 xl:gap-1"> <div class="nav-dropdown group relative" data-dropdown> <button class="nav-trigger relative flex items-center gap-1 px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 text-gray-600 hover:text-gray-900" aria-expanded="false" aria-haspopup="true" data-dropdown-trigger> Products <svg class="h-3.5 w-3.5 opacity-50 transition-transform duration-300 group-hover:rotate-180 group-hover:opacity-80" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg> <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] scale-x-0 rounded-full bg-primary-500 transition-transform duration-300 origin-left group-hover:scale-x-100"></span> </button> <div class="mega-panel pointer-events-none invisible absolute left-1/2 top-full -translate-x-1/2 pt-3 opacity-0 transition-all duration-300 translate-y-2 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100 group-hover:translate-y-0" data-dropdown-panel> <div class="relative overflow-hidden rounded-2xl bg-white/95 backdrop-blur-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.15)] ring-1 ring-black/[0.06]"> <div class="absolute top-0 left-0 right-0 h-[2px] bg-gradient-to-r from-primary-400 via-primary-500 to-accent-400"></div> <div class="p-2 min-w-[240px] sm:min-w-[280px]"> <a href="/platform" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Platform"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M3.75 3A1.75 1.75 0 002 4.75v3.5C2 9.216 2.784 10 3.75 10h3.5A1.75 1.75 0 009 8.25v-3.5A1.75 1.75 0 007.25 3h-3.5zM12.75 3a1.75 1.75 0 00-1.75 1.75v3.5c0 .966.784 1.75 1.75 1.75h3.5A1.75 1.75 0 0018 8.25v-3.5A1.75 1.75 0 0016.25 3h-3.5zM2 12.75c0-.966.784-1.75 1.75-1.75h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 017.25 18h-3.5A1.75 1.75 0 012 16.25v-3.5zM12.75 11a1.75 1.75 0 00-1.75 1.75v3.5c0 .966.784 1.75 1.75 1.75h3.5A1.75 1.75 0 0018 16.25v-3.5A1.75 1.75 0 0016.25 11h-3.5z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Platform </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Self-service tools from $12.99/property/mo </span> </span> </a><a href="/actionable-intelligence" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Actionable Intelligence"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M15.98 1.804a1 1 0 00-1.96 0l-.24 1.192a1 1 0 01-.784.785l-1.192.238a1 1 0 000 1.962l1.192.238a1 1 0 01.785.785l.238 1.192a1 1 0 001.962 0l.238-1.192a1 1 0 01.785-.785l1.192-.238a1 1 0 000-1.962l-1.192-.238a1 1 0 01-.785-.785l-.238-1.192zM6.949 5.684a1 1 0 00-1.898 0l-.683 2.051a1 1 0 01-.633.633l-2.051.683a1 1 0 000 1.898l2.051.684a1 1 0 01.633.632l.683 2.051a1 1 0 001.898 0l.683-2.051a1 1 0 01.633-.633l2.051-.683a1 1 0 000-1.898l-2.051-.683a1 1 0 01-.633-.633L6.95 5.684zM13.949 13.684a1 1 0 00-1.898 0l-.184.551a1 1 0 01-.632.633l-.551.183a1 1 0 000 1.898l.551.183a1 1 0 01.633.633l.183.551a1 1 0 001.898 0l.184-.551a1 1 0 01.632-.633l.551-.183a1 1 0 000-1.898l-.551-.184a1 1 0 01-.633-.632l-.183-.551z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Actionable Intelligence <span class="inline-flex items-center rounded-full bg-accent-500/15 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wider text-accent-600"> New </span> </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> AI onboarding: video â workflows </span> </span> </a><a href="/real-time-inspection" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Real-Time Inspection"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Real-Time Inspection </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Expert-led review at $5/inspection </span> </span> </a><a href="/co-host" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Cohost Pro"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Cohost Pro </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600">
107 Managed service for property managers </span> </span> </a><a href="/co-host-owners" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Guest Support Plus"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Guest Support Plus </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Managed guest and turnover support for owners </span> </span> </a> </div> </div> </div> </div><div class="relative group" data-navlink> <a href="/ai" class="relative block px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 no-underline hover:no-underline text-gray-600 hover:text-gray-900"> AI <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] rounded-full bg-primary-500 transition-transform duration-300 origin-left scale-x-0 group-hover:scale-x-100"></span> </a> </div><div class="nav-dropdown group relative" data-dropdown> <button class="nav-trigger relative flex items-center gap-1 px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 text-gray-600 hover:text-gray-900" aria-expanded="false" aria-haspopup="true" data-dropdown-trigger> Features <svg class="h-3.5 w-3.5 opacity-50 transition-transform duration-300 group-hover:rotate-180 group-hover:opacity-80" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg> <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] scale-x-0 rounded-full bg-primary-500 transition-transform duration-300 origin-left group-hover:scale-x-100"></span> </button> <div class="mega-panel pointer-events-none invisible absolute left-1/2 top-full -translate-x-1/2 pt-3 opacity-0 transition-all duration-300 translate-y-2 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100 group-hover:translate-y-0" data-dropdown-panel> <div class="relative overflow-hidden rounded-2xl bg-white/95 backdrop-blur-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.15)] ring-1 ring-black/[0.06]"> <div class="absolute top-0 left-0 right-0 h-[2px] bg-gradient-to-r from-primary-400 via-primary-500 to-accent-400"></div> <div class="p-2 min-w-[240px] sm:min-w-[280px]"> <a href="/autoscheduler" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Autoscheduler"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm.75-11.25a.75.75 0 00-1.5 0v2.5c0 .414.336.75.75.75h2.5a.75.75 0 000-1.5h-1.75v-1.75z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Autoscheduler </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Automated turnover scheduling </span> </span> </a><a href="/features/photo-checklists" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Photo Checklists"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M1 8a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 018.07 3h3.86a2 2 0 011.
107664.89l.812 1.22A2 2 0 0016.07 6H17a2 2 0 012 2v7a2 2 0 01-2 2H3a2 2 0 01-2-2V8zm13.5 3a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0zM10 14a3 3 0 100-6 3 3 0 000 6z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Photo Checklists </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Photo-verified cleaning </span> </span> </a><a href="/features/marketplace" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Marketplace"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zm0 16a3 3 0 01-3-3h6a3 3 0 01-3 3z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Marketplace </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Find trusted cleaners </span> </span> </a><a href="/skills" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Skills & Training"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10.394 2.08a1 1 0 00-.788 0l-7 3a1 1 0 000 1.84L5.25 8.051a.999.999 0 01.356-.257l4-1.714a1 1 0 11.788 1.838L7.667 9.088l1.94.831a1 1 0 00.787 0l7-3a1 1 0 000-1.838l-7-3zM3.31 9.397L5 10.12v4.102a8.969 8.969 0 00-1.05-.174 1 1 0 01-.89-.89 11.115 11.115 0 01.25-3.762zM9.3 16.573A9.026 9.026 0 007 14.935v-3.547l1.607.688a3 3 0 002.346 0l1.607-.688v3.547a9.026 9.026 0 00-2.3 1.638z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Skills & Training </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Certification and training library </span> </span> </a><a href="/features" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="All Features"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M3.75 3A1.75 1.75 0 002 4.75v3.5C2 9.216 2.784 10 3.75 10h3.5A1.75 1.75 0 009 8.25v-3.5A1.75 1.75 0 007.25 3h-3.5zM12.75 3a1.75 1.75 0 00-1.75 1.75v3.5c0 .966.784 1.75 1.75 1.75h3.5A1.75 1.75 0 0018 8.25v-3.5A1.75 1.75 0 0016.25 3h-3.5zM2 12.75c0-.966.784-1.75 1.75-1.75h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 017.25 18h-3.5A1.75 1.75 0 012 16.25v-3.5zM12.75 11a1.75 1.75 0 00-1.75 1.75v3.5c0 .966.784 1.75 1.75 1.75h3.5A1.75 1.75 0 0018 16.25v-3.5A1.75 1.75 0 0016.25 11h-3.5z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> All Features </span> </span> </a> </div> </div> </div> </div><div class="nav-dropdown group relative" data-dropdown> <button class="nav-trigger relative flex items-center gap-1 px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 text-gray-600 hover:text-gray-900" aria-expanded="false" aria-haspopup="true" data-dropdown-trigger> Solutions <svg class="h-3.5 w-3.5 opacity-50 transition-transform duration-300 group-hover:rotate-180 group-hover:opacity-80" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg> <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] scale-x-0 rounded-full bg-primary-500 transition-transform duration-300 origin-left group-hover:scale-x-100"></span> </button> <div class="mega-panel pointer-events-none invisible absolute left-1/2 top-full -translate-x-1/2 pt-3 opacity-0 transition-all duration-300 translate-y-2 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100 group-hover:translate-y-0" data-dropdown-panel> <div class="relative overflow-hidden rounded-2xl bg-white/95 backdrop-blur-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.15)] ring-1 ring-black/[0.06]"> <div class="absolute top-0 left-0 right-0 h-[2px] bg-gradient-to-r from-primary-400 via-primary-500 to-accent-400"></div> <div class="p-2 min-w-[240px] sm:min-w-[280px]"> <a href="/" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="For Property Owners"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> For Property Owners </span> </span> </a><a href="/property-managers" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="For Property Managers"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M4 4a2 2 0 012-2h8a2 2 0 012 2v12a1 1 0 110 2h-3a1 1 0 01-1-1v-2a1 1 0 00-1-1H9a1 1 0 00-1 1v2a1 1 0 01-1 1H4a1 1 0 110-2V4zm3 1h2v2H7V5zm2 4H7v2h2V9zm2-4h2v2h-2V5zm2 4h-2v2h2V9z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> For Property Managers </span> </span> </a><a href="/service-providers" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="For Service Providers"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M11.3 1.046A1 1 0 0112 2v5h4a1 1 0 01.82 1.573l-7 10A1 1 0 018 18v-5H4a1 1 0 01-.82-1.573l7-10a1 1 0 011.12-.38z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> For Service Providers </span> </span> </a> </div> </div> </div> </div><div class="nav-dropdown group relative" data-dropdown> <button class="nav-trigger relative flex items-center gap-1 px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 text-primary-700" aria-expanded="false" aria-haspopup="true" data-dropdown-trigger> Resources <svg class="h-3.5 w-3.5 opacity-50 transition-transform duration-300 group-hover:rotate-180 group-hover:opacity-80" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg> <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] scale-x-0 rounded-full bg-primary-500 transition-transform duration-300 origin-left group-hover:scale-x-100"></span> </button> <div class="mega-panel pointer-events-none invisible absolute left-1/2 top-full -translate-x-1/2 pt-3 opacity-0 transition-all duration-300 translate-y-2 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100 group-hover:translate-y-0" data-dropdown-panel> <div class="relative overflow-hidden rounded-2xl bg-white/95 backdrop-blur-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.15)] ring-1 ring-black/[0.06]"> <div class="absolute top-0 left-0 right-0 h-[2px] bg-gradient-to-r from-primary-400 via-primary-500 to-accent-400"></div> <div class="p-2 min-w-[240px] sm:min-w-[280px]"> <a href="/blog" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Blog"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M2 5a2 2 0 012-2h7a2 2 0 012 2v4a2 2 0 01-2 2H9l-3 3v-3H4a2 2 0 01-2-2V5z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Blog </span> </span> </a><a href="/case-studies" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Case Studies"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M4 2a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V7.414A2 2 0 0015.414 6L12 2.586A2 2 0 0010.586 2H4zm5 3a1 1 0 012 0v2a1 1 0 11-2 0V5zm-2 6a1 1 0 011-1h4a1 1 0 110 2H8a1 1 0 01-1-1zm1 3h6a1 1 0 110 2H8a1 1 0 110-2z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Case Studies </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Measured customer outcomes </span> </span> </a><a href="/str-shopping-list" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Vacation Rental Shopping List"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M4 3a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V5a2 2 0 00-2-2H4zm1 4.75A.75.75 0 015.75 7h2.5a.75.75 0 010 1.5h-2.5A.75.75 0 015 7.75zm0 3A.75.75 0 015.75 10h7.5a.75.75 0 010 1.5h-7.5A.75.75 0 015 10.75zm0 3A.75.75 0 015.75 13h5.5a.75.75 0 010 1.5h-5.5A.75.75 0 015 13.75zM15.5 7a1 1 0 100 2 1 1 0 000-2z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Vacation Rental Shopping List </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Room-by-room STR setup picks </span> </span> </a><a href="/properly-vs-turno" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Properly vs Turno"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M7 3a3 3 0 00-3 3v8a3 3 0 003 3h6a3 3 0 003-3V6a3 3 0 00-3-3H7zm0 2h6a1 1 0 011 1v1H6V6a1 1 0 011-1zm-1 4h8v5a1 1 0 01-1 1H7a1 1 0 01-1-1V9zm2 2a1 1 0 100 2h1a1 1 0 100-2H8zm4 0a1 1 0 100 2h1a1 1 0 100-2h-1z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Properly vs Turno </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Compare scheduling vs verification </span> </span> </a><a href="/properly-vs-breezeway" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-start py-2.5 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Properly vs Breezeway"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5 3a2 2 0 00-2 2v3a2 2 0 002 2h3a2 2 0 002-2V5a2 2 0 00-2-2H5zm7 0a1 1 0 100 2h3v10h-3a1 1 0 100 2h3a2 2 0 002-2V5a2 2 0 00-2-2h-3zm-7 9a2 2 0 00-2 2v1a2 2 0 002 2h3a2 2 0 002-2v-1a2 2 0 00-2-2H5z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Properly vs Breezeway </span> <span class="mt-0.5 text-[12px] leading-relaxed text-gray-500 group-hover/item:text-gray-600"> Compare property operations tools </span> </span> </a><a href="/partners" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="
107Partners"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M13 6a3 3 0 11-6 0 3 3 0 016 0zM18 8a2 2 0 11-4 0 2 2 0 014 0zM14 15a4 4 0 00-8 0v3h8v-3zM6 8a2 2 0 11-4 0 2 2 0 014 0zM16 18v-3a5.972 5.972 0 00-.75-2.906A3.005 3.005 0 0119 15v3h-3zM4.75 12.094A5.973 5.973 0 004 15v3H1v-3a3 3 0 013.75-2.906z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Partners </span> </span> </a><a href="/about" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 bg-primary-50/80 text-primary-700" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="About Us"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-primary-100 text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-primary-700"> About Us </span> </span> </a><a href="https://help.getproperly.com/en/" class="group/item flex gap-3 rounded-xl px-3.5 text-sm no-underline hover:no-underline transition-all duration-200 items-center py-2 text-gray-700 hover:bg-gray-50/80" target="_blank" rel="noopener noreferrer" data-ga-event="navigation_click" data-ga-category="nav" data-ga-label="Support"> <span class="flex h-8 w-8 shrink-0 items-center justify-center rounded-lg transition-colors duration-200 bg-gray-100 text-gray-500 group-hover/item:bg-primary-50 group-hover/item:text-primary-600"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3a1 1 0 00-.867.5 1 1 0 11-1.731-1A3 3 0 0113 8a3.001 3.001 0 01-2 2.83V11a1 1 0 11-2 0v-1a1 1 0 011-1 1 1 0 100-2zm0 8a1 1 0 100-2 1 1 0 000 2z" clip-rule="evenodd"></path> </svg> </span> <span class="flex flex-col min-w-0"> <span class="font-semibold text-[13px] leading-tight flex items-center gap-1.5 text-gray-900 group-hover/item:text-gray-900"> Support <svg class="h-3 w-3 text-gray-400" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M4.25 5.5a.75.75 0 00-.75.75v8.5c0 .414.336.75.75.75h8.5a.75.75 0 00.75-.75v-4a.75.75 0 011.5 0v4A2.25 2.25 0 0112.75 17h-8.5A2.25 2.25 0 012 14.75v-8.5A2.25 2.25 0 014.25 4h5a.75.75 0 010 1.5h-5zm7.25-.75a.75.75 0 01.75-.75h3.5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0V6.31l-5.47 5.47a.75.75 0 01-1.06-1.06l5.47-5.47H12.25a.75.75 0 01-.75-.75z" clip-rule="evenodd"></path> </svg> </span> </span> </a> </div> </div> </div> </div><div class="relative group" data-navlink> <a href="/pricing" class="relative block px-2.5 xl:px-3.5 py-2 text-[13px] xl:text-[13.5px] font-medium tracking-wide transition-colors duration-200 no-underline hover:no-underline text-gray-600 hover:text-gray-900"> Pricing <span class="absolute bottom-0 left-2.5 right-2.5 xl:left-3.5 xl:right-3.5 h-[2px] rounded-full bg-primary-500 transition-transform duration-300 origin-left scale-x-0 group-hover:scale-x-100"></span> </a> </div> </div> <!-- Right side: Login, Language, dual CTAs --> <div class="hidden lg:flex lg:items-center lg:gap-1 xl:gap-1.5"> <a href="https://app.getproperly.com/login" class="px-2.5 py-2 text-[13px] font-medium text-gray-500 no-underline hover:no-underline transition-colors duration-200 hover:text-gray-800" data-ga-event="login" data-ga-label="nav"> Log in </a> <div class="h-4 w-px bg-gray-200 mx-1" aria-hidden="true"></div> <!-- Language switcher â compact globe --> <div class="lang-dropdown group relative" data-dropdown> <button class="flex items-center gap-1 rounded-full px-2 py-2 text-gray-500 transition-all duration-200 hover:bg-gray-100 hover:text-gray-700" aria-expanded="false" aria-haspopup="true" aria-label="Select language" data-dropdown-trigger> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M4.083 9h1.946c.089-1.546.383-2.97.837-4.118A6.004 6.004 0 004.083 9zM10 2a8 8 0 100 16 8 8 0 000-16zm0 2c-.076 0-.232.032-.465.262-.238.234-.497.623-.737 1.182-.389.907-.673 2.142-.766 3.556h3.936c-.093-1.414-.377-2.649-.766-3.556-.24-.56-.5-.948-.737-1.182C10.232 4.032 10.076 4 10 4zm3.971 5c-.
107089-1.546-.383-2.97-.837-4.118A6.004 6.004 0 0115.917 9h-1.946zm-2.003 2H8.032c.093 1.414.377 2.649.766 3.556.24.56.5.948.737 1.182.233.23.389.262.465.262.076 0 .232-.032.465-.262.238-.234.497-.623.737-1.182.389-.907.673-2.142.766-3.556zm1.166 4.118c.454-1.147.748-2.572.837-4.118h1.946a6.004 6.004 0 01-2.783 4.118zm-6.268 0C6.412 13.97 6.118 12.546 6.03 11H4.083a6.004 6.004 0 002.783 4.118z" clip-rule="evenodd"></path> </svg> <span class="text-[11px] font-semibold tracking-wider">EN</span> </button> <div class="mega-panel pointer-events-none invisible absolute right-0 top-full pt-2 opacity-0 transition-all duration-300 translate-y-2 group-hover:pointer-events-auto group-hover:visible group-hover:opacity-100 group-hover:translate-y-0" data-dropdown-panel> <div class="relative overflow-hidden rounded-xl bg-white/95 backdrop-blur-xl shadow-[0_20px_60px_-15px_rgba(0,0,0,0.15)] ring-1 ring-black/[0.06]"> <div class="absolute top-0 left-0 right-0 h-[2px] bg-gradient-to-r from-primary-400 via-primary-500 to-accent-400"></div> <div class="p-2 min-w-[180px]"> <p class="px-3 py-1.5 text-[10px] font-bold uppercase tracking-[0.15em] text-gray-400"> Language </p> <a href="/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 bg-primary-50 text-primary-700 font-semibold" data-ga-event="select_content" data-ga-category="locale" data-ga-label="en"> <span>English</span> <span class="text-[10px] font-semibold tracking-wider text-primary-500"> EN </span> </a><a href="/fr/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="fr"> <span>Français</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> FR </span> </a><a href="/de/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="de"> <span>Deutsch</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> DE </span> </a><a href="/it/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="it"> <span>Italiano</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> IT </span> </a><a href="/pt-br/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="pt-br"> <span>Português</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> PT </span> </a><a href="/es/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="es"> <span>Español</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> ES </span> </a><a href="/hr/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="hr"> <span>Hrvatski</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> HR </span> </a><a href="/ru/about" class="flex items-center justify-between rounded-lg px-3 py-2 text-[13px] no-underline hover:no-underline transition-colors duration-150 text-gray-600 hover:bg-gray-50 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="ru"> <span>Ð ÑÑÑкий</span> <span class="text-[10px] font-semibold tracking-wider text-gray-400"> RU </span> </a> </div> </div> </div> </div> <a href="https://app.getproperly.com/hostSignUpForm" class="inline-flex items-center rounded-full border border-gray-300 bg-white px-4 py-[7px] text-[13px] font-semibold text-gray-700 no-underline hover:no-underline shadow-sm transition-all duration-200 hover:border-gray-400 hover:text-gray-900 hover:shadow-md active:scale-[0.97]" data-ga-event="sign_up" data-ga-label="nav"> Start Free Trial </a> <!-- Primary CTA â path-aware --> <a href="/book-demo" class="cta-primary group relative inline-flex items-center gap-1.5 overflow-hidden rounded-full bg-accent-500 px-5 py-[7px] text-[13px] font-bold text-gray-900 no-underline hover:no-underline shadow-[0_1px_3px_rgba(245,158,11,0.4)] transition-all duration-200 hover:bg-accent-600 hover:shadow-[0_4px_16px_rgba(245,158,11,0.35)] active:scale-[0.97]" data-ga-event="demo_cta_click" data-ga-label="nav"> <span class="relative z-10">Book a Demo</span> <svg class="relative z-10 h-3.5 w-3.5 transition-transform duration-200 group-hover:translate-x-0.5" viewB
107ox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M3 10a.75.75 0 01.75-.75h10.638L10.23 5.29a.75.75 0 111.04-1.08l5.5 5.25a.75.75 0 010 1.08l-5.5 5.25a.75.75 0 11-1.04-1.08l4.158-3.96H3.75A.75.75 0 013 10z" clip-rule="evenodd"></path> </svg> <span class="absolute inset-0 -translate-x-full bg-gradient-to-r from-transparent via-white/25 to-transparent transition-transform duration-700 group-hover:translate-x-full" aria-hidden="true"></span> </a> </div> <!-- Mobile: CTA + Hamburger. The CTA wraps long localized labels instead of nowrap (checked 320-414px, 8 locales); the toggle never shrinks. --> <div class="ml-2 flex items-center gap-2.5 max-[359px]:gap-2 lg:hidden"> <a href="/book-demo" class="inline-flex items-center min-h-11 rounded-full bg-accent-500 px-5 py-1.5 max-[359px]:px-3 text-center text-sm leading-tight text-balance wrap-anywhere max-[359px]:text-[13px] font-bold text-gray-900 no-underline hover:no-underline shadow-sm transition-all duration-200 hover:bg-accent-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-accent-500 focus-visible:ring-offset-2" data-ga-event="demo_cta_click" data-ga-label="nav_mobile"> Book a Demo </a> <button id="mobile-menu-toggle" class="relative z-50 flex h-11 w-11 shrink-0 items-center justify-center rounded-xl text-gray-600 transition-all duration-200 hover:bg-gray-100 hover:text-gray-900" aria-expanded="false" aria-controls="mobile-menu" aria-label="Toggle navigation menu"> <svg id="hamburger-icon" class="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path> </svg> <svg id="close-icon" class="hidden h-5 w-5" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path> </svg> </button> </div> </nav> </header> <!-- Mobile menu overlay â rendered outside header to preserve z-index stacking --> <!-- Mobile Menu â slide-in from right with backdrop --><div id="mobile-menu" class="fixed inset-0 z-40 hidden" role="dialog" aria-modal="true" aria-label="Navigation menu"> <div class="mobile-backdrop absolute inset-0 bg-black/40 backdrop-blur-sm opacity-0 transition-opacity duration-300"></div> <div class="mobile-panel absolute top-0 right-0 bottom-0 w-full max-w-[min(380px,90vw)] translate-x-full transition-transform duration-300 ease-out bg-white overflow-hidden flex flex-col shadow-2xl"> <!-- Panel header --><div class="flex items-center justify-between px-6 h-[72px] border-b border-gray-100 shrink-0"> <a href="/" class="no-underline hover:no-underline"> <img src="/images/properly-logo-horizontal.png" alt="Properly: Vacation Rental Quality Management" width="224" height="50" loading="eager" class="h-[22px] w-auto"> </a> </div> <!-- CTAs first â conversion optimized, path-aware primary --> <div class="px-5 pt-5 pb-3 space-y-2.5 shrink-0"> <a href="/book-demo" class="mobile-nav-link flex items-center justify-center gap-2 rounded-xl bg-accent-500 px-5 py-3 text-[14px] font-bold text-gray-900 no-underline hover:no-underline shadow-md transition-all duration-200 hover:bg-accent-600" data-ga-event="demo_cta_click" data-ga-label="mobile_menu"> Book a Demo <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M3 10a.75.75 0 01.75-.75h10.638L10.23 5.29a.75.75 0 111.04-1.08l5.5 5.25a.75.75 0 010 1.08l-5.5 5.25a.75.75 0 11-1.04-1.08l4.158-3.96H3.75A.75.75 0 013 10z" clip-rule="evenodd"></path> </svg> </a> <a href="https://app.getproperly.com/hostSignUpForm" class="mobile-nav-link flex items-center justify-center rounded-xl border border-gray-200 bg-white px-5 py-2.5 text-[14px] font-semibold text-gray-700 no-underline hover:no-underline transition-colors hover:bg-gray-50" data-ga-event="sign_up" data-ga-label="mobile_menu"> Start Free Trial </a> </div> <!-- Scrollable nav --> <nav class="flex-1 overflow-y-auto px-5 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))]" aria-label="Mobile navigation"> <ul class="space-y-0.5" role="list"> <li class="mobile-nav-item" style="--delay: 0ms"> <div class="mobile-nav-group"> <button class="mobile-nav-group-toggle flex w-full items-center justify-between rounded-xl px-4 py-3 text-left text-[14px] font-semibold text-gray-800 transition-colors hover:bg-gray-50" aria-expanded="false" aria-controls="mobile-nav-products"> Products <svg class="mobile-chevron h-4 w-4 text-gray-400 transition-transform duration-200" viewB
107ox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd"></path> </svg> </button> <ul id="mobile-nav-products" class="mobile-nav-children hidden space-y-0.5 pb-1 pl-3" role="list"> <li> <a href="/platform" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Platform </span> <span class="text-[11px] text-gray-400 mt-0.5"> Self-service tools from $12.99/property/mo </span> </a> </li><li> <a href="/actionable-intelligence" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Actionable Intelligence <span class="inline-flex items-center rounded-full bg-accent-500/15 px-1.5 py-0.5 text-[10px] font-bold uppercase tracking-wider text-accent-600"> New </span> </span> <span class="text-[11px] text-gray-400 mt-0.5"> AI onboarding: video â workflows </span> </a> </li><li> <a href="/real-time-inspection" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Real-Time Inspection </span> <span class="text-[11px] text-gray-400 mt-0.5"> Expert-led review at $5/inspection </span> </a> </li><li> <a href="/co-host" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Cohost Pro </span> <span class="text-[11px] text-gray-400 mt-0.5"> Managed service for property managers </span> </a> </li><li> <a href="/co-host-owners" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Guest Support Plus </span> <span class="text-[11px] text-gray-400 mt-0.5"> Managed guest and turnover support for owners </span> </a> </li> </ul> </div> </li><li class="mobile-nav-item" style="--delay: 50ms"> <a href="/ai" class="mobile-nav-link block rounded-xl px-4 py-3 text-[14px] font-semibold no-underline hover:no-underline transition-colors text-gray-800 hover:bg-gray-50"> AI </a> </li><li class="mobile-nav-item" style="--delay: 100ms"> <div class="mobile-nav-group"> <button class="mobile-nav-group-toggle flex w-full items-center justify-between rounded-xl px-4 py-3 text-left text-[14px] font-semibold text-gray-800 transition-colors hover:bg-gray-50" aria-expanded="false" aria-controls="mobile-nav-features"> Features <svg class="mobile-chevron h-4 w-4 text-gray-400 transition-transform duration-200" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd"></path> </svg> </button> <ul id="mobile-nav-features" class="mobile-nav-children hidden space-y-0.5 pb-1 pl-3" role="list"> <li> <a href="/autoscheduler" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Autoscheduler </span> <span class="text-[11px] text-gray-400 mt-0.5"> Automated turnover scheduling </span> </a> </li><li> <a href="/features/photo-checklists" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Photo Checklists </span> <span class="text-[11px] text-gray-400 mt-0.5"> Photo-verified cleaning </span> </a> </li><li> <a href="/features/marketplace" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Marketplace </span> <span class="text-[11px] text-gray-400 mt-0.5"> Find trusted cleaners </span> </a> </li><li> <a href="/skills" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Skills & Training </span> <span class="text-[11px] text-gray-400 mt-0.5"> Certification and training library </span> </a> </li><li> <a href="/features" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> All Features </span> </a> </li> </ul> </div> </li><li class="mobile-nav-item" style="--delay: 150ms"> <div class="mobile-nav-group"> <button class="mobile-nav-group-toggle flex w-full items-center justify-between rounded-xl px-4 py-3 text-left text-[14px] font-semibold text-gray-800 transition-colors hover:bg-gray-50" aria-expanded="false" aria-controls="mobile-nav-solutions"> Solutions <svg class="mobile-chevron h-4 w-4 text-gray-400 transition-transform duration-200" viewB
107ox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd"></path> </svg> </button> <ul id="mobile-nav-solutions" class="mobile-nav-children hidden space-y-0.5 pb-1 pl-3" role="list"> <li> <a href="/" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> For Property Owners </span> </a> </li><li> <a href="/property-managers" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> For Property Managers </span> </a> </li><li> <a href="/service-providers" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> For Service Providers </span> </a> </li> </ul> </div> </li><li class="mobile-nav-item" style="--delay: 200ms"> <div class="mobile-nav-group"> <button class="mobile-nav-group-toggle flex w-full items-center justify-between rounded-xl px-4 py-3 text-left text-[14px] font-semibold text-gray-800 transition-colors hover:bg-gray-50" aria-expanded="false" aria-controls="mobile-nav-resources"> Resources <svg class="mobile-chevron h-4 w-4 text-gray-400 transition-transform duration-200" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M7.21 14.77a.75.75 0 01.02-1.06L11.168 10 7.23 6.29a.75.75 0 111.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z" clip-rule="evenodd"></path> </svg> </button> <ul id="mobile-nav-resources" class="mobile-nav-children hidden space-y-0.5 pb-1 pl-3" role="list"> <li> <a href="/blog" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Blog </span> </a> </li><li> <a href="/case-studies" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Case Studies </span> <span class="text-[11px] text-gray-400 mt-0.5"> Measured customer outcomes </span> </a> </li><li> <a href="/str-shopping-list" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Vacation Rental Shopping List </span> <span class="text-[11px] text-gray-400 mt-0.5"> Room-by-room STR setup picks </span> </a> </li><li> <a href="/properly-vs-turno" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Properly vs Turno </span> <span class="text-[11px] text-gray-400 mt-0.5"> Compare scheduling vs verification </span> </a> </li><li> <a href="/properly-vs-breezeway" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Properly vs Breezeway </span> <span class="text-[11px] text-gray-400 mt-0.5"> Compare property operations tools </span> </a> </li><li> <a href="/partners" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900"> <span class="text-[13.5px] font-medium flex items-center gap-1.5">
107 Partners </span> </a> </li><li> <a href="/about" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors bg-primary-50 text-primary-700"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> About Us </span> </a> </li><li> <a href="https://help.getproperly.com/en/" class="mobile-nav-link flex flex-col rounded-xl px-4 py-2.5 no-underline hover:no-underline transition-colors text-gray-600 hover:bg-gray-50 hover:text-gray-900" target="_blank" rel="noopener noreferrer"> <span class="text-[13.5px] font-medium flex items-center gap-1.5"> Support </span> </a> </li> </ul> </div> </li><li class="mobile-nav-item" style="--delay: 250ms"> <a href="/pricing" class="mobile-nav-link block rounded-xl px-4 py-3 text-[14px] font-semibold no-underline hover:no-underline transition-colors text-gray-800 hover:bg-gray-50"> Pricing </a> </li> </ul> <!-- Footer links --> <div class="mt-6 border-t border-gray-100 pt-5 space-y-1 mobile-nav-item" style="--delay: 300ms"> <a href="https://app.getproperly.com/login" class="flex items-center gap-2 rounded-xl px-4 py-2.5 text-[13.5px] font-medium text-gray-600 no-underline hover:no-underline transition-colors hover:bg-gray-50 hover:text-gray-900" data-ga-event="login" data-ga-label="mobile_menu"> <svg class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M3 4.25A2.25 2.25 0 015.25 2h5.5A2.25 2.25 0 0113 4.25v2a.75.75 0 01-1.5 0v-2a.75.75 0 00-.75-.75h-5.5a.75.75 0 00-.75.75v11.5c0 .414.336.75.75.75h5.5a.75.75 0 00.75-.75v-2a.75.75 0 011.5 0v2A2.25 2.25 0 0110.75 18h-5.5A2.25 2.25 0 013 15.75V4.25z" clip-rule="evenodd"></path> <path fill-rule="evenodd" d="M6 10a.75.75 0 01.75-.75h9.546l-1.048-.943a.75.75 0 111.004-1.114l2.5 2.25a.75.75 0 010 1.114l-2.5 2.25a.75.75 0 11-1.004-1.114l1.048-.943H6.75A.75.75 0 016 10z" clip-rule="evenodd"></path> </svg> Log in to Dashboard </a> <div class="px-4 pt-3"> <p class="mb-2 text-[10px] font-bold uppercase tracking-[0.15em] text-gray-400"> Language </p> <div class="flex flex-wrap gap-1.5"> <a href="/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-primary-600 text-white" data-ga-event="select_content" data-ga-category="locale" data-ga-label="en"> EN </a><a href="/fr/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="fr"> FR </a><a href="/de/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="de"> DE </a><a href="/it/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="it"> IT </a><a href="/pt-br/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="pt-br"> PT </a><a href="/es/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="es"> ES </a><a href="/hr/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="hr"> HR </a><a href="/ru/about" class="mobile-nav-link inline-flex items-center justify-center rounded-lg px-3 py-2 text-xs font-semibold tracking-wide no-underline hover:no-underline transition-colors min-w-[44px] min-h-[44px] bg-gray-100 text-gray-600 hover:bg-gray-200 hover:text-gray-900" data-ga-event="select_content" data-ga-category="locale" data-ga-label="ru"> RU </a> </div> </div> </div> </nav> </div> </div> <!-- Spacer for fixed header --> <div class="h-[72px]" aria-hidden="true"></div>
107<script type="module" src="/_astro/Nav.astro_astro_type_script_index_0_lang.DbJaRtW2.js"></script>
107 <main id="main-content" tabindex="-1">
107<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Properly","url":"https://getproperly.com","logo":"https://getproperly.com/_astro/properly-logo-horizontal.BGFSTgfB.png","foundingDate":"2014","description":"Vacation rental operations platform with two managed remote-service offers â Cohost Pro from $119 per active property per month for property managers, working with their systems and local vendors, and Guest Support Plus at $149 per listing per month for owner guest and turnover support. Founded 2014; 4.5M+ turnovers across 10,000+ hosts in 45+ countries.","areaServed":"Global","sameAs":["https://www.facebook.com/GetProperly/","https://www.linkedin.com/company/properly-inc/","https://www.instagram.com/theproperlyteam/","https://x.com/GetProperly","https://www.youtube.com/@getproperly"]}</script>
107 <section class="relative overflow-hidden grain" style="background: radial-gradient(ellipse 80% 50% at 60% 30%, rgba(20,145,155,0.2) 0%, transparent 100%), radial-gradient(ellipse 40% 60% at 15% 70%, rgba(34,184,199,0.1) 0%, transparent 100%), linear-gradient(170deg, #0A2E33 0%, #0D4D56 55%, #107080 100%);"> <div class="relative z-10 mx-auto max-w-[1280px] px-6 py-28 text-center md:px-12 lg:px-20 lg:py-36"> <p class="inline-flex items-center gap-2 text-xs font-semibold uppercase tracking-[0.15em] text-primary-400"> <span class="inline-block h-px w-6 bg-primary-500" aria-hidden="true"></span> About Properly <span class="inline-block h-px w-6 bg-primary-500" aria-hidden="true"></span> </p> <h1 class="mx-auto mt-6 max-w-3xl font-display text-4xl font-extrabold tracking-tight text-white sm:text-5xl lg:text-[3.75rem]"> Founded by Hosts, for <span class="text-primary-400">Hosts</span> </h1> <p class="mx-auto mt-6 max-w-2xl text-lg leading-relaxed text-white/60 md:text-xl"> Since 2014, we've built vacation-rental tools and remote operating services. Today Properly serves 10,000+ hosts across 45+ countries through the self-service Platform, Cohost Pro, and Guest Support Plus. </p> <!-- Above-fold CTAs --> <div class="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row sm:flex-wrap sm:*:whitespace-nowrap"> <a href="/book-demo" class="inline-flex items-center gap-2 rounded-full bg-accent-500 px-8 py-4 text-base font-bold text-primary-950 shadow-lg shadow-accent-500/20 transition-all duration-300 hover:scale-[1.03] hover:bg-accent-600 hover:shadow-xl hover:shadow-accent-500/30 active:scale-[0.98] no-underline hover:no-underline"> Book a Demo <svg class="h-4 w-4 transition-transform duration-300 group-hover:translate-x-0.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </a> <a href="https://app.getproperly.com/hostSignUpForm" class="inline-flex items-center rounded-full border-2 border-white/30 px-8 py-4 text-base font-semibold text-white transition-all duration-300 hover:scale-[1.02] hover:border-white/60 hover:bg-white/10 no-underline hover:no-underline"> Start Free Trial </a> </div> <!-- Stats row --> <div class="mx-auto mt-14 grid max-w-xl grid-cols-3 gap-6"> <div> <p class="font-mono text-3xl font-extrabold tracking-tighter text-white md:text-4xl"> 1082014 109</p> <p class="mt-1 text-xs text-white/60">Founded</p> </div> <div> <p class="font-mono text-3xl font-extrabold tracking-tighter text-white md:text-4xl"> 11045+ 111</p> <p class="mt-1 text-xs text-white/60">Countries</p> </div> <div> <p class="font-mono text-3xl font-extrabold tracking-tighter text-white md:text-4xl"> 11210K+ 113</p> <p class="mt-1 text-xs text-white/60">Hosts</p> </div> </div> </div> </section> <section class="section-padding bg-white"> <div class="mx-auto max-w-[1280px] px-6 md:px-12 lg:px-20"> <div class="grid grid-cols-1 items-center gap-12 md:grid-cols-2 md:gap-16" data-animate> <div> <div class="mb-6 flex h-12 w-12 items-center justify-center rounded-xl bg-primary-100"> <svg class="h-6 w-6 text-primary-700" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M15.59 14.37a6 6 0 01-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 006.16-12.12A14.98 14.98 0 009.631 8.41m5.96 5.96a14.926 14.926 0 01-5.841 2.58m-.119-8.54a6 6 0 00-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 00-2.58 5.841m2.699-2.842a4.5 4.5 0 10-.92-.814"></path> </svg> </div> <h2 class="font-display text-3xl font-extrabold tracking-tight text-gray-900 md:text-4xl"> Our Mission </h2> <p class="mt-6 text-lg leading-relaxed text-gray-600">Properly started with a simple idea: every vacation rental guest deserves a perfect arrival, and every host deserves the tools to make that happen without burning out. Today, the Properly Platform helps hands-on operators run their own workflows, while Cohost Pro and Guest Support Plus add clearly scoped remote operating support for property managers and owners.</p> </div> <div class="flex justify-center"> <img src="/_astro/about-company.CxVTtKte_ZJIfkh.webp" alt="The Properly team building vacation rental quality management tools" loading="lazy" decoding="async" width="751" height="871" class="w-full max-w-lg"> </div> </div> </div> </section> <section class="section-padding bg-gray-50"> <div class="mx-auto max-w-[1280px] px-6 md:px-12 lg:px-20"> <div class="mx-auto mb-16 max-w-2xl text-center" data-animate> <p class="text-xs font-semibold uppercase tracking-[0.2em] text-primary-600"> Our Journey </p> <h2 class="mt-4 font-display text-3xl font-extrabold tracking-tight text-gray-900 md:text-4xl"> Our Story </h2> <p class="mt-4 text-base leading-relaxed text-gray-500">From a simple idea born of real frustration to a global quality management platform.</p> </div> <!-- Timeline --> <div class="relative mx-auto max-w-4xl"> <div class="absolute left-8 top-0 bottom-0 w-px bg-gradient-to-b from-primary-400 via-primary-300 to-primary-200 md:left-1/2 md:-translate-x-px" aria-hidden="true"></div> <div class="relative mb-10 last:mb-0 md:mb-12 md:flex md:items-start md:flex-row" data-animate> <div class="absolute left-8 top-1 z-10 -translate-x-1/2 md:left-1/2" aria-hidden="true"> <div class="flex h-5 w-5 items-center justify-center rounded-full border-[3px] border-white bg-primary-600 shadow-sm shadow-primary-200"> <div class="h-1.5 w-1.5 rounded-full bg-white"></div> </div> </div> <div class="ml-16 md:ml-0 md:w-[calc(50%-2.5rem)] md:pr-4"> <div class="rounded-2xl border border-gray-200/80 bg-white p-6 shadow-sm transition-shadow duration-300 hover:shadow-md md:p-8"> <span class="inline-block rounded-full bg-primary-100 px-4 py-1 font-mono text-sm font-bold text-primary-700"> 2014 </span> <h3 class="mt-4 font-display text-xl font-extrabold text-gray-900"> Founded </h3> <p class="mt-3 text-sm leading-relaxed text-gray-600 md:text-base"> Properly was created by hosts who were frustrated with unreliable turnovers. The idea was simple: use checklists and photo verification to ensure every turnover is done right. </p> </div> </div> </div><div class="relative mb-10 last:mb-0 md:mb-12 md:flex md:items-start md:flex-row-reverse" data-animate> <div class="absolute left-8 top-1 z-10 -translate-x-1/2 md:left-1/2" aria-hidden="true"> <div class="flex h-5 w-5 items-center justify-center rounded-full border-[3px] border-white bg-primary-600 shadow-sm shadow-primary-200"> <div class="h-1.5 w-1.5 rounded-full bg-white"></div> </div> </div> <div class="ml-16 md:ml-0 md:w-[calc(50%-2.5rem)] md:pl-4"> <div class="rounded-2xl border border-gray-200/80 bg-white p-6 shadow-sm transition-shadow duration-300 hover:shadow-md md:p-8"> <span class="inline-block rounded-full bg-primary-100 px-4 py-1 font-mono text-sm font-bold text-primary-700">
113 2016-2020 </span> <h3 class="mt-4 font-display text-xl font-extrabold text-gray-900"> Growth </h3> <p class="mt-3 text-sm leading-relaxed text-gray-600 md:text-base"> Expanded from a simple checklist tool to a full quality management platform â adding autoscheduling, a certified service provider marketplace, real-time inspections with AI, and an extensive skills training library. </p> </div> </div> </div><div class="relative mb-10 last:mb-0 md:mb-12 md:flex md:items-start md:flex-row" data-animate> <div class="absolute left-8 top-1 z-10 -translate-x-1/2 md:left-1/2" aria-hidden="true"> <div class="flex h-5 w-5 items-center justify-center rounded-full border-[3px] border-white bg-primary-600 shadow-sm shadow-primary-200"> <div class="h-1.5 w-1.5 rounded-full bg-white"></div> </div> </div> <div class="ml-16 md:ml-0 md:w-[calc(50%-2.5rem)] md:pr-4"> <div class="rounded-2xl border border-gray-200/80 bg-white p-6 shadow-sm transition-shadow duration-300 hover:shadow-md md:p-8"> <span class="inline-block rounded-full bg-primary-100 px-4 py-1 font-mono text-sm font-bold text-primary-700"> 2021âPresent </span> <h3 class="mt-4 font-display text-xl font-extrabold text-gray-900"> Global </h3> <p class="mt-3 text-sm leading-relaxed text-gray-600 md:text-base"> Properly now serves 10,000+ hosts across 45+ countries with the self-service Platform, Real-Time Inspection, Cohost Pro, and Guest Support Plus, working alongside customers' local teams and vendors. </p> </div> </div> </div> </div> </div> </section> <section class="section-padding bg-white"> <div class="mx-auto max-w-[1280px] px-6 md:px-12 lg:px-20"> <div class="mx-auto mb-14 max-w-2xl text-center" data-animate> <p class="text-xs font-semibold uppercase tracking-[0.2em] text-primary-600"> What We Believe </p> <h2 class="mt-4 font-display text-3xl font-extrabold tracking-tight text-gray-900 md:text-4xl"> Our Values </h2> </div> <div class="grid grid-cols-1 gap-8 lg:grid-cols-3" data-animate> <div class="group rounded-2xl border border-gray-100 bg-gray-50/50 p-8 transition-all duration-300 hover:border-primary-200 hover:bg-white hover:shadow-lg hover:shadow-primary-100/50 md:p-10 lg:p-8 xl:p-10"> <div class="mb-5 flex h-12 w-12 items-center justify-center rounded-xl bg-primary-100 transition-colors duration-300 group-hover:bg-primary-600"> <svg class="h-6 w-6 text-primary-700 transition-colors duration-300 group-hover:text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M18 18.72a9.094 9.094 0 003.741-.479 3 3 0 00-4.682-2.72m.94 3.198l.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0112 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 016 18.719m12 0a5.971 5.971 0 00-.941-3.197m0 0A5.995 5.995 0 0012 12.75a5.995 5.995 0 00-5.058 2.772m0 0a3 3 0 00-4.681 2.72 8.986 8.986 0 003.74.477m.94-3.197a5.971 5.971 0 00-.94 3.197M15 6.75a3 3 0 11-6 0 3 3 0 016 0zm6 3a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0zm-13.5 0a2.25 2.25 0 11-4.5 0 2.25 2.25 0 014.5 0z"></path> </svg> </div> <h3 class="font-display text-xl font-extrabold text-gray-900 hyphens-auto"> Collaboration </h3> <p class="mt-3 text-base leading-relaxed text-gray-600">Success is built on alignment between hosts, service providers, and platforms.</p> </div> <div class="group rounded-2xl border border-gray-100 bg-gray-50/50 p-8 transition-all duration-300 hover:border-primary-200 hover:bg-white hover:shadow-lg hover:shadow-primary-100/50 md:p-10 lg:p-8 xl:p-10"> <div class="mb-5 flex h-12 w-12 items-center justify-center rounded-xl bg-primary-100 transition-colors duration-300 group-hover:bg-primary-600"> <svg class="h-6 w-6 text-primary-700 transition-colors duration-300 group-hover:text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75m-3-7.036A11.959 11.959 0 013.598 6 11.99 11.99 0 003 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285z"></path> </svg> </div> <h3 class="font-display text-xl font-extrabold text-gray-900 hyphens-auto"> Quality </h3> <p class="mt-3 text-base leading-relaxed text-gray-600">Every turnover should meet hotel-grade standards, consistently.</p> </div> <div class="group rounded-2xl border border-gray-100 bg-gray-50/50 p-8 transition-all duration-300 hover:border-primary-200 hover:bg-white hover:shadow-lg hover:shadow-
113primary-100/50 md:p-10 lg:p-8 xl:p-10"> <div class="mb-5 flex h-12 w-12 items-center justify-center rounded-xl bg-primary-100 transition-colors duration-300 group-hover:bg-primary-600"> <svg class="h-6 w-6 text-primary-700 transition-colors duration-300 group-hover:text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z"></path> </svg> </div> <h3 class="font-display text-xl font-extrabold text-gray-900 hyphens-auto"> Empowerment </h3> <p class="mt-3 text-base leading-relaxed text-gray-600">We equip every person in the process to excel in their role.</p> </div> </div> </div> </section> <section class="relative overflow-hidden bg-gradient-to-br from-primary-800 to-primary-900"> <div class="absolute inset-0 opacity-10" aria-hidden="true" style="background-image: radial-gradient(circle at 20% 50%, rgba(34,184,199,0.3) 0%, transparent 50%), radial-gradient(circle at 80% 50%, rgba(245,158,11,0.15) 0%, transparent 50%);"></div> <div class="relative mx-auto max-w-[1280px] px-6 py-20 text-center md:px-12 lg:px-20 lg:py-24" data-animate> <h2 class="mx-auto max-w-2xl font-display text-3xl font-extrabold tracking-tight text-white md:text-4xl lg:text-[2.75rem]"> Join the Properly Community </h2> <p class="mx-auto mt-5 max-w-xl text-lg leading-relaxed text-primary-100/80"> Thousands of hosts, property managers, and service providers trust Properly to deliver quality at every turnover. Start your free trial today. </p> <div class="mt-10 flex flex-col items-center justify-center gap-4 sm:flex-row sm:flex-wrap sm:*:whitespace-nowrap"> <a href="/book-demo" class="inline-flex items-center gap-2 rounded-full bg-accent-500 px-8 py-4 text-base font-bold text-primary-950 shadow-lg shadow-accent-500/25 transition-all duration-300 hover:scale-[1.03] hover:bg-accent-600 hover:shadow-xl hover:shadow-accent-500/30 active:scale-[0.98] no-underline hover:no-underline"> Book a Demo <svg class="h-4 w-4 transition-transform duration-300 group-hover:translate-x-0.5" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5" aria-hidden="true"> <path stroke-linecap="round" stroke-linejoin="round" d="M13 7l5 5m0 0l-5 5m5-5H6"></path> </svg> </a> <a href="https://app.getproperly.com/hostSignUpForm" class="inline-flex items-center rounded-full border-2 border-white/30 px-8 py-4 text-base font-semibold text-white transition-all duration-300 hover:scale-[1.02] hover:border-white/60 hover:bg-white/10 no-underline hover:no-underline"> Start Free Trial </a> </div> </div> </section> </main> <!-- Pre-footer CTA block --> <!-- Footer --> <footer class="bg-primary-900 text-white/80" role="contentinfo"> <div class="mx-auto max-w-[1200px] px-6 py-12 md:px-12 lg:px-20 lg:py-16"> <!-- Footer grid: the brand column gets 1.5 shares at lg so its app-store badges aren't squeezed. --><div class="grid grid-cols-2 gap-10 sm:grid-cols-3 lg:grid-cols-[1.5fr_repeat(5,minmax(0,1fr))] lg:gap-6 xl:grid-cols-6"> <!-- Column 1: Brand --><div class="col-span-2 sm:col-span-3 lg:col-span-1"> <a href="/" class="inline-block font-display text-2xl font-extrabold tracking-tight text-white no-underline hover:no-underline"> 114PROPERLY 115</a> <p class="mt-4 max-w-xs text-sm leading-relaxed">Remote vacation-rental operations for owners and professional property managers.</p> <div class="mt-6 flex flex-col gap-3"> <a href="https://apple.co/3cpJDrS" target="_blank" rel="noopener noreferrer" class="inline-flex w-fit items-center gap-2.5 rounded-lg border border-white/15 bg-white/5 px-4 py-2.5 text-xs font-semibold text-white/90 transition-colors duration-200 hover:border-white/30 hover:bg-white/10 hover:text-white" aria-label="Download on the App Store" data-ga-event="app_store_click" data-ga-category="app_download" data-ga-label="app_store"> <!-- Apple icon --><svg class="h-5 w-5 shrink-0" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.8-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5.13 1.17-.34 2.35-1.04 3.19-.69.85-1.83 1.51-2.95 1.42-.15-1.15.41-2.35 1.05-3.11z"></path> </svg> <span class="flex flex-col leading-tight"> <span class="text-[10px] font-normal text-white/60">Download on the</span> <span class="text-sm">App Store</span> </span> </a> <a href="https://play.google.com/store/apps/details?id=com.getproperly.properlyv2" target="_blank" rel="noopener noreferrer" class="inline-flex w-fit items-center gap-2.5 rounded-lg border border-white/15 bg-white/5 px-4 py-2.5 text-xs font-semibold text-white/90 transition-colors duration-200 hover:border-white/30 hover:bg-white/10 hover:text-white" aria-label="Get it on Google Play" data-ga-event="app_store_click" data-ga-category="app_download" data-ga-label="google_play"> <!-- Google Play icon -->
115<svg class="h-5 w-5 shrink-0" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M3.609 1.814L13.792 12 3.61 22.186a.996.996 0 01-.61-.92V2.734a1 1 0 01.609-.92zm10.89 10.893l2.302 2.302-10.937 6.333 8.635-8.635zm3.199-3.199l2.302 1.33-3.066 1.775-2.093-2.093 2.857-1.012zM5.864 2.658L16.8 8.99l-2.302 2.302-8.635-8.635z"></path> </svg> <span class="flex flex-col leading-tight"> <span class="text-[10px] font-normal text-white/60">Get it on</span> <span class="text-sm">Google Play</span> </span> </a> </div> </div> <!-- Column 2: Products --> <div> <h3 class="text-xs font-bold uppercase tracking-widest text-white/60"> Products </h3> <ul class="mt-5 space-y-3.5"> <li> <a href="/platform" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Platform"> Platform </a> </li><li> <a href="/actionable-intelligence" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Actionable Intelligence"> Actionable Intelligence </a> </li><li> <a href="/real-time-inspection" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Real-Time Inspection"> Real-Time Inspection </a> </li><li> <a href="/co-host" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Cohost Pro"> Cohost Pro </a> </li><li> <a href="/co-host-owners" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Guest Support Plus"> Guest Support Plus </a> </li> </ul> </div> <!-- Column 3: Features --> <div> <h3 class="text-xs font-bold uppercase tracking-widest text-white/60"> Features </h3> <ul class="mt-5 space-y-3.5"> <li> <a href="/autoscheduler" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Autoscheduler"> Autoscheduler </a> </li><li> <a href="/features/photo-checklists" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Photo Checklists"> Photo Checklists </a> </li><li> <a href="/features/marketplace" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Marketplace"> Marketplace </a> </li><li> <a href="/skills" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Skills & Training"> Skills & Training </a> </li><li> <a href="/ai" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="AI & Innovation"> AI & Innovation </a> </li><li> <a href="/features" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="All Features"> All Features </a> </li> </ul> </div> <!-- Column 4: Solutions --> <div> <h3 class="text-xs font-bold uppercase tracking-widest text-white/60"> Solutions </h3> <ul class="mt-5 space-y-3.5"> <li> <a href="/" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="For Property Owners"> For Property Owners </a> </li><li> <a href="/property-managers" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="For Property Managers"> For Property Managers </a> </li><li> <a href="/service-providers" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="For Service Providers"> For Service Providers </a> </li> </ul> </div> <!-- Column 5: Resources --> <div> <h3 class="text-xs font-bold uppercase tracking-widest text-white/60"> Resources </h3> <ul class="mt-5 space-y-3.5"> <li> <a href="/blog" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Blog"> Blog </a> </li><li> <a href="/case-studies" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Case Studies"> Case Studies </a> </li><li> <a href="/str-shopping-list" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Vacation Rental Shopping List"> Vacation Rental Shopping List </a> </li><li> <a href="/properly-vs-turno" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Properly vs Turno"> Properly vs Turno </a> </li><li> <a href="/properly-vs-breezeway" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Properly vs Breezeway"> Properly vs Breezeway </a> </li><li> <a href="/partners" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Partners"> Partners </a> </li><li> <a href="/about" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="About"> About Us </a> </li><li> <a href="/pricing" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Plans & Pricing"> Plans & Pricing </a> </li><li> <a href="/careers" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Careers"> Careers </a> </li><li> <a href="https://help.getproperly.com/en/" target="_blank" rel="noopener noreferrer" class="block py-1 text-sm text-white/80 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Support"> Support </a> </li> </ul> </div> <!-- Column 6: Connect --> <div> <h3 class="text-xs font-bold uppercase tracking-widest text-white/60"> Connect </h3> <ul class="mt-5 flex flex-wrap gap-3"> <li> <a href="https://www.facebook.com/GetProperly/" target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/60 transition-all duration-200 hover:border-primary-500/40 hover:bg-primary-500/10 hover:text-primary-500" aria-label="Facebook" data-ga-event="social_click" data-ga-label="facebook"> <svg class="h-[18px] w-[18px]" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"></path> </svg> </a> </li> <li> <a href="https://www.linkedin.com/company/properly-inc/" target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/60 transition-all duration-200 hover:border-primary-500/40 hover:bg-primary-500/10 hover:text-primary-500" aria-label="LinkedIn" data-ga-event="social_click" data-ga-label="linkedin"> <svg class="h-[18px] w-[18px]" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 01-2.063-2.065 2.064 2.064 0 112.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"></path> </svg> </a> </li> <li> <a href="https://www.instagram.com/theproperlyteam/" target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/60 transition-all duration-200 hover:border-primary-500/40 hover:bg-primary-500/10 hover:text-primary-500" aria-label="Instagram" data-ga-event="social_click" data-ga-label="instagram"> <svg class="h-[18px] w-[18px]" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24
11512 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678a6.162 6.162 0 100 12.324 6.162 6.162 0 100-12.324zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405a1.441 1.441 0 11-2.88 0 1.441 1.441 0 012.88 0z"></path> </svg> </a> </li> <li> <a href="https://x.com/GetProperly" target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/60 transition-all duration-200 hover:border-primary-500/40 hover:bg-primary-500/10 hover:text-primary-500" aria-label="X (formerly Twitter)" data-ga-event="social_click" data-ga-label="twitter"> <svg class="h-[16px] w-[16px]" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path> </svg> </a> </li> <li> <a href="https://www.youtube.com/@getproperly" target="_blank" rel="noopener noreferrer" class="inline-flex h-11 w-11 items-center justify-center rounded-lg border border-white/10 bg-white/5 text-white/60 transition-all duration-200 hover:border-primary-500/40 hover:bg-primary-500/10 hover:text-primary-500" aria-label="YouTube" data-ga-event="social_click" data-ga-label="youtube"> <svg class="h-[18px] w-[18px]" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"></path> </svg> </a> </li> </ul> </div> </div> <!-- Bottom bar --> <div class="mt-12 border-t border-primary-700/50 pt-8 lg:mt-16"> <div class="flex flex-col items-center gap-4 text-center sm:flex-row sm:justify-between sm:text-left"> <!-- Copyright + legal links --><div class="flex flex-col items-center gap-x-5 gap-y-2 sm:flex-row"> <p class="text-xs text-white/60"> © 2014â2026 Properly Inc. All rights reserved. </p> <ul class="flex items-center gap-5"> <li> <a href="/terms" class="text-xs text-white/60 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Terms of Service"> Terms of Service </a> </li><li> <a href="/privacy" class="text-xs text-white/60 transition-colors duration-200 hover:text-primary-500 hover:no-underline" data-ga-event="navigation_click" data-ga-category="footer" data-ga-label="Privacy Policy"> Privacy Policy </a> </li> </ul> </div> <!-- Positioning descriptor --> <p class="text-xs text-white/60">Vacation rental quality management</p> </div> </div> </div> </footer> <!-- Intercom Chat Widget â delayed until interaction or 10s after load to protect initial LCP -->
115<script> 116 (function () { 117 let loaded = false; 118 let passiveLoadTimer; 119 function loadIntercom() { 120 if (loaded) return; 121 if (passiveLoadTimer) { 122 window.clearTimeout(passiveLoadTimer); 123 passiveLoadTimer = undefined; 124 } 125 // Intercom is functional support chat (not advertising/analytics), so it 126 // loads regardless of cookie consent â deferred so it does not compete 127 // with first paint/LCP work. 128 loaded = true; 129 window.intercomSettings = { 130 api_base: 'https://api-iam.intercom.io', 131 app_id: 'qr66vi0q', 132 // Below lg the sticky bottom CTA bar (~65px) owns the bottom edge; 133 // lift the launcher above it so it never covers the CTA button. 134 vertical_padding: window.matchMedia('(max-width: 1023px)').matches ? 88 : 20, 135 }; 136 const w = window; 137 const ic = w.Intercom; 138 if (typeof ic === 'function') { 139 ic('reattach_activator'); 140 ic('update', w.intercomSettings); 141 } else { 142 /* eslint-disable prefer-rest-params, no-var */ 143 var d = document; 144 var i = function () { 145 i.c(arguments); 146 }; 147 i.q = []; 148 i.c = function (args) { 149 i.q.push(args); 150 }; 151 w.Intercom = i; 152 var s = d.createElement('script'); 153 s.type = 'text/javascript'; 154 s.async = true; 155 s.src = 'https://widget.intercom.io/widget/qr66vi0q'; 156 var x = d.getElementsByTagName('script')[0]; 157 x.parentNode.insertBefore(s, x); 158 /* eslint-enable prefer-rest-params, no-var */ 159 } 160 // Track Intercom chat engagement via GA4 161 function trackIntercom(ic) { 162 if (typeof ic !== 'function') return; 163 ic('onShow', function () { 164 if (w.__properly && w.__properly.trackEvent) { 165 w.__properly.trackEvent('chat_open', { chat_provider: 'intercom' }); 166 } 167 }); 168 ic('onUserReplyMessage', function () { 169 if (w.__properly && w.__properly.trackEvent) { 170 w.__properly.trackEvent('chat_message_sent', { chat_provider: 'intercom' }); 171 } 172 }); 173 } 174 // Intercom may not be fully ready yet â poll briefly 175 let pollCount = 0; 176 const pollTimer = setInterval(function () { 177 pollCount++; 178 if (typeof w.Intercom === 'function' && w.Intercom.booted !== false) { 179 trackIntercom(w.Intercom); 180 clearInterval(pollTimer); 181 } else if (pollCount > 50) { 182 clearInterval(pollTimer); 183 } 184 }, 200); 185 186 // Clean up listeners after loading 187 window.removeEventListener('scroll', loadIntercom); 188 window.removeEventListener('click', loadIntercom); 189 window.removeEventListener('touchstart', loadIntercom); 190 window.removeEventListener('pointerdown', loadIntercom); 191 window.removeEventListener('keydown', loadIntercom); 192 } 193 window.addEventListener('scroll', loadIntercom, { once: true, passive: true }); 194 window.addEventListener('click', loadIntercom, { once: true }); 195 window.addEventListener('touchstart', loadIntercom, { once: true, passive: true }); 196 window.addEventListener('pointerdown', loadIntercom, { once: true, passive: true }); 197 window.addEventListener('keydown', loadIntercom, { once: true }); 198 199 // Fallback: load for passive visitors, but outside the initial Lighthouse 200 // mobile measurement window. 201 function schedulePassiveLoad() { 202 passiveLoadTimer = window.setTimeout(loadIntercom, 10000); 203 } 204 if (document.readyState === 'complete') { 205 schedulePassiveLoad(); 206 } else { 207 window.addEventListener('load', schedulePassiveLoad, { once: true }); 208 } 209 })(); 210 </script>
210<!-- Scroll-triggered animations via Intersection Observer -->
210<script> 211 (function () { 212 function initObserver() { 213 const els = document.querySelectorAll('[data-animate]'); 214 if (!els.length) return; 215 // Respect prefers-reduced-motion 216 if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { 217 els.forEach(function (el) { 218 el.classList.remove('data-animate-hidden'); 219 }); 220 return; 221 } 222 const observer = new IntersectionObserver( 223 function (entries) { 224 entries.forEach(function (entry) { 225 if (entry.isIntersecting) { 226 const el = entry.target; 227 el.classList.remove('data-animate-hidden'); 228 // Support custom animation direction via data-animate value 229 const anim = el.getAttribute('data-animate') || 'fade-in-up'; 230 el.classList.add('animate-' + anim); 231 // Support animation delay via data-animate-delay 232 const delay = el.getAttribute('data-animate-delay'); 233 if (delay) el.style.animationDelay = delay; 234 // Auto-stagger children with [data-animate-child] 235 const children = el.querySelectorAll('[data-animate-child]'); 236 children.forEach(function (child, i) { 237 child.classList.remove('data-animate-hidden'); 238 const childAnim = child.getAttribute('data-animate-child') || 'fade-in-up'; 239 child.classList.add('animate-' + childAnim); 240 child.style.animationDelay = i * 120 + 'ms'; 241 }); 242 observer.unobserve(el); 243 } 244 }); 245 }, 246 { threshold: 0.1, rootMargin: '0px 0px -40px 0px' }, 247 ); 248 els.forEach(function (el) { 249 el.classList.add('data-animate-hidden'); 250 // Also hide children that will be staggered 251 const children = el.querySelectorAll('[data-animate-child]'); 252 children.forEach(function (child) { 253 child.classList.add('data-animate-hidden'); 254 }); 255 observer.observe(el); 256 }); 257 } 258 if (document.readyState === 'complete' || document.readyState === 'interactive') { 259 initObserver(); 260 } else { 261 document.addEventListener('DOMContentLoaded', initObserver); 262 } 263 document.addEventListener('astro:page-load', initObserver); 264 })(); 265 </script>
265<!-- Sticky mobile CTA bar â appears after scrolling past hero --> <div id="sticky-cta" class="fixed bottom-0 left-0 right-0 z-40 translate-y-full transition-transform duration-300 lg:hidden" aria-hidden="true" inert> <div class="flex items-center justify-between gap-3 border-t border-gray-200 bg-white/95 px-4 py-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] backdrop-blur-lg shadow-[0_-4px_16px_rgba(0,0,0,0.08)]"> <a href="/book-demo" class="block w-full rounded-full bg-accent-500 px-5 py-3 text-center text-sm font-bold text-primary-950 shadow-sm transition-all duration-200 hover:bg-accent-600 no-underline hover:no-underline" data-ga-event="demo_cta_click" data-ga-label="sticky_mobile"> Book a Demo </a> </div> </div>
265<script> 266 (function () { 267 let stickyCta = document.getElementById('sticky-cta'); 268 if (!stickyCta) return; 269 let shown = false; 270 271 /** Returns true when the cookie-consent banner is currently visible (not translated off-screen). */ 272 function isCookieBannerVisible() { 273 const banner = document.getElementById('cookie-consent'); 274 // Banner is visible when it exists, is not aria-hidden, and has not been slid away 275 if (!banner) return false; 276 if (banner.getAttribute('aria-hidden') === 'true') return false; 277 return banner.classList.contains('translate-y-full') === false; 278 } 279 280 function checkScroll() { 281 const shouldShow = window.scrollY > 600 && !isCookieBannerVisible(); 282 if (shouldShow && !shown) { 283 stickyCta.classList.remove('translate-y-full'); 284 stickyCta.setAttribute('aria-hidden', 'false'); 285 // Keep the bar's link out of the tab order / a11y tree while hidden, 286 // and restore it here. inert mirrors aria-hidden so keyboard and 287 // screen-reader users can't reach an off-screen CTA. 288 stickyCta.removeAttribute('inert'); 289 shown = true; 290 } else if (!shouldShow && shown) { 291 stickyCta.classList.add('translate-y-full'); 292 stickyCta.setAttribute('aria-hidden', 'true'); 293 stickyCta.setAttribute('inert', ''); 294 shown = false; 295 } 296 } 297 298 window.addEventListener('scroll', checkScroll, { passive: true }); 299 300 // Re-evaluate when the cookie banner is dismissed so the sticky CTA can appear immediately 301 window.addEventListener('consentGranted', checkScroll); 302 // Also re-check when the banner hides after a rejection (fired by cookie-consent script) 303 window.addEventListener('consentDismissed', checkScroll); 304 305 document.addEventListener('astro:page-load', function () { 306 stickyCta = document.getElementById('sticky-cta'); 307 shown = false; 308 checkScroll(); 309 }); 310 })(); 311 </script>
311<!-- Google Analytics â always load gtag.js; Consent Mode gates storage -->
311<script>(function(){const analyticsTagId = "GT-NBXPWL5"; 312 313 (function () { 314 const s = document.createElement('script'); 315 s.async = true; 316 s.src = 'https://www.googletagmanager.com/gtag/js?id=' + encodeURIComponent(analyticsTagId); 317 document.head.appendChild(s); 318 })(); 319 })();</script>
319<!-- Analytics event tracking initialization -->
319<script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_0_lang.INiKB_zu.js"></script>
319<!-- UTM parameter forwarding to external links (signup, login, findacleaner) -->
319<script type="module" src="/_astro/BaseLayout.astro_astro_type_script_index_1_lang.ocehvnp3.js"></script>
319<div id="cookie-consent" class="fixed bottom-0 inset-x-0 z-[60] translate-y-full transition-transform duration-500 ease-out" role="alertdialog" aria-label="Cookie consent" aria-describedby="cookie-consent-message" aria-hidden="true" inert> <div class="mx-auto max-w-[820px] px-4 pb-[max(1rem,env(safe-area-inset-bottom))] sm:px-6"> <div class="rounded-2xl border border-gray-200 bg-white p-5 shadow-[0_-8px_30px_rgba(0,0,0,0.1)] sm:p-6"> <div id="cookie-consent-message" class="text-sm leading-relaxed text-gray-600"> We use cookies for analytics and to improve your experience. We share data with Google Analytics and Intercom. See our Privacy Policy for details. <a href="/privacy" class="font-medium text-primary-600 underline underline-offset-2 transition-colors duration-150 hover:text-primary-700"> Privacy Policy </a> </div> <!-- Consent choices: decline (all denied) / accept (analytics granted, no ad signals) --> <div class="mt-4 flex flex-wrap items-center gap-2 sm:justify-end"> <button id="cookie-reject" type="button" class="min-h-11 rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-semibold text-gray-700 transition-colors duration-150 hover:bg-gray-50 hover:border-gray-400"> Decline </button> <button id="cookie-accept" type="button" class="min-h-11 rounded-lg bg-primary-600 px-4 py-2 text-sm font-semibold text-white shadow-sm transition-colors duration-150 hover:bg-primary-700"> Accept </button> </div> </div> </div> </div>
319<script> 320 (function () { 321 const COOKIE_NAME = 'properly_consent'; 322 323 function getCookie(name) { 324 const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); 325 return match ? match[2] : null; 326 } 327 328 function setCookie(name, value, days) { 329 const d = new Date(); 330 d.setTime(d.getTime() + days * 24 * 60 * 60 * 1000); 331 const secure = location.protocol === 'https:' ? ';Secure' : ''; 332 document.cookie = 333 name + '=' + value + ';expires=' + d.toUTCString() + ';path=/;SameSite=Lax' + secure; 334 } 335 336 function trackConsentEvent(eventName, params) { 337 if (window.__properly && window.__properly.trackEvent) { 338 window.__properly.trackEvent(eventName, params || {}); 339 return; 340 } 341 342 const eventParams = Object.assign({}, params || {}, { page_path: window.location.pathname }); 343 if (typeof window.gtag === 'function') { 344 window.gtag('event', eventName, eventParams); 345 } else { 346 window.dataLayer = window.dataLayer || []; 347 window.dataLayer.push(['event', eventName, eventParams]); 348 } 349 } 350 351 // If consent has already been recorded, do nothing 352 if (getCookie(COOKIE_NAME)) return; 353 354 const banner = document.getElementById('cookie-consent'); 355 if (!banner) return; 356 357 let bannerShownAt = 0; 358 359 // Show the banner after a short delay so it doesn't block first paint 360 setTimeout(function () { 361 banner.classList.remove('translate-y-full'); 362 banner.setAttribute('aria-hidden', 'false'); 363 // Only reachable by keyboard/AT while actually shown â mirrors the 364 // sticky-CTA inert pattern in BaseLayout.astro. 365 banner.removeAttribute('inert'); 366 bannerShownAt = Date.now(); 367 trackConsentEvent('consent_banner_shown'); 368 }, 800); 369 370 function hideBanner() { 371 banner.classList.add('translate-y-full'); 372 banner.setAttribute('aria-hidden', 'true'); 373 banner.setAttribute('inert', ''); 374 } 375 376 function timeToConsent() { 377 return bannerShownAt > 0 ? Math.round((Date.now() - bannerShownAt) / 1000) : 0; 378 } 379 380 /** "Accept" â grants analytics; ad signals stay denied because ad tracking is not used */ 381 document.getElementById('cookie-accept').addEventListener('click', function () { 382 setCookie(COOKIE_NAME, 'accepted', 365); 383 hideBanner(); 384 // Update GA4 Consent Mode: analytics consent only 385 if (typeof window.gtag === 'function') { 386 window.gtag('consent', 'update', { 387 analytics_storage: 'granted', 388 ad_storage: 'denied', 389 ad_user_data: 'denied', 390 ad_personalization: 'denied', 391 }); 392 } 393 // Dispatch event so analytics-dependent scripts can re-initialize 394 window.dispatchEvent(new CustomEvent('consentGranted')); 395 // Track consent acceptance with time to decision 396 const ttc = timeToConsent(); 397 trackConsentEvent('consent_update', { 398 action: 'accept', 399 time_to_consent_sec: ttc, 400 }); 401 }); 402 403 /** "Decline" â denies all signals so the visitor can opt out as easily as opt in */ 404 document.getElementById('cookie-reject').addEventListener('click', function () { 405 setCookie(COOKIE_NAME, 'rejected', 365); 406 hideBanner(); 407 // Explicitly signal denial to GA4 Consent Mode for all four signals 408 if (typeof window.gtag === 'function') { 409 window.gtag('consent', 'update', { 410 analytics_storage: 'denied', 411 ad_storage: 'denied', 412 ad_user_data: 'denied', 413 ad_personalization: 'denied', 414 }); 415 } 416 // Track the rejection through gtag; Consent Mode gates storage/identifiers. 417 const ttc = timeToConsent(); 418 trackConsentEvent('consent_update', { 419 action: 'reject', 420 time_to_consent_sec: ttc, 421 }); 422 // Notify other scripts (e.g. sticky CTA) that the banner has been dismissed 423 window.dispatchEvent(new CustomEvent('consentDismissed')); 424 }); 425 })(); 426</script>
426 </body> </html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.