PageSourceSearch

https://www.snitcher.com/pricing

html snitcher.com collected 2026-09-24 08:46:57 UTC 276,389 bytes, 1,858 lines download raw bytes

1<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="description" content="Simple, transparent pricing for B2B visitor identification. Start at $49/mo. Unlimited team members. All integrations included. 14-day free trial."><meta name="author" content="Snitcher"><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><!-- Canonical URL --><link rel="canonical" href="https://www.snitcher.com/pricing/"><!-- Open Graph --><meta property="og:title" content="Pricing - Plans from $49/mo"><meta property="og:description" content="Simple, transparent pricing for B2B visitor identification. Start at $49/mo. Unlimited team members. All integrations included. 14-day free trial."><meta property="og:type" content="website"><meta property="og:url" content="https://www.snitcher.com/pricing/"><meta property="og:site_name" content="Snitcher"><meta property="og:locale" content="en_US"><meta property="og:image" content="https://www.snitcher.com/og-image.png"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta property="og:image:alt" content="Pricing - Plans from $49/mo"><!-- Twitter Card --><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Pricing - Plans from $49/mo"><meta name="twitter:description" content="Simple, transparent pricing for B2B visitor identification. Start at $49/mo. Unlimited team members. All integrations included. 14-day free trial."><meta name="twitter:image" content="https://www.snitcher.com/og-image.png"><meta name="twitter:image:alt" content="Pricing - Plans from $49/mo"><!-- Favicon --><link rel="icon" type="image/png" href="/favicon.png"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- Web App Manifest --><link rel="manifest" href="/manifest.json" crossorigin="use-credentials"><!-- LLM-readable content reference --><link rel="alternate" type="text/plain" href="/llms.txt" title="LLM-readable site description"><!-- Font preloads --><link rel="preload" href="/fonts/AtypText-Semibold.otf" as="font" type="font/opentype" crossorigin><link rel="preload" href="/fonts/PlusJakartaSans-Regular.woff2" as="font" crossorigin><!-- Preconnects for performance --><link rel="dns-prefetch" href="https://app.snitcher.com"><title>Pricing - Plans from $49/mo | Snitcher</title><!-- Structured Data -->
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"Organization","name":"Snitcher","url":"https://www.snitcher.com","logo":"https://www.snitcher.com/logo.png","sameAs":["https://linkedin.com/company/snitcher"],"description":"Uncover your hidden website visitors. Snitcher turns anonymous intent into predictable revenue."}</script>
1<script type="application/ld+json">{"@context":"https://schema.org","@type":"WebSite","name":"Snitcher","url":"https://www.snitcher.com","description":"Uncover your hidden website visitors. Snitcher turns anonymous intent into predictable revenue."}</script>
1<!-- Personalisation URL capture — MUST run before HeadScripts so the
2         inline capture beats the Radar tracker's URL strip. Always-on (the
3         capture itself is just an indexOf + window assignment); the actual
4         personalisation UI is opted in per page via <PersonalizationProvider />. --><!-- Restore H1 visibility for JS-disabled / crawler agents. Lives next to
5     the capture (not the Provider) because JS-off visitors should always
6     see the original copy regardless of which page they land on. --><noscript><style>[data-personalize-template]{visibility:visible!important}</style></noscript>
6<script>
7  (function () {
8    // Stash the raw URL search on `window` — sessionStorage at this stage
9    // can be wiped by Cookiebot (or other CMP/tracker init) before our
10    // bundled script reads it. `window` survives.
11    var search = window.location.search || '';
12    if (
13      search &&
14      (search.indexOf('sn_email=') !== -1 || search.indexOf('sn_eid=') !== -1)
15    ) {
16      window.__snitcherPersonalizationRawSearch = search;
17    }
18  })();
19</script>
19<!-- Analytics & Tracking --><!-- Preconnects for analytics services --><link rel="preconnect" href="https://cdn.snitcher.com"><link rel="preconnect" href="https://radar.snitcher.com"><link rel="preconnect" href="https://touch.snitcher.com"><link rel="dns-prefetch" href="https://www.googletagmanager.com"><link rel="dns-prefetch" href="https://consent.cookiebot.com"><link rel="dns-prefetch" href="https://connect.facebook.net"><!-- Snitcher Radar -->
19<script>
20!function(e){"use strict";var t=e&&e.namespace;if(t&&e.profileId&&e.cdn){var i=window[t];if(i&&Array.isArray(i)||(i=window[t]=[]),!i.initialized&&!i._loaded)if(i._loaded)console&&console.warn("[Radar] Duplicate initialization attempted");else{i._loaded=!0;["track","page","identify","group","alias","ready","debug","on","off","once","trackClick","trackSubmit","trackLink","trackForm","pageview","screen","reset","register","setAnonymousId","addSourceMiddleware","addIntegrationMiddleware","addDestinationMiddleware","giveCookieConsent"].forEach((function(e){var a;i[e]=(a=e,function(){var e=window[t];if(e.initialized)return e[a].apply(e,arguments);var i=[].slice.call(arguments);return i.unshift(a),e.push(i),e})})),-1===e.apiEndpoint.indexOf("http")&&(e.apiEndpoint="https://"+e.apiEndpoint),i.bootstrap=function(){var t,i=document.createElement("script");i.async=!0,i.type="text/javascript",i.id="__radar__",i.setAttribute("data-settings",JSON.stringify(e)),i.src=[-1!==(t=e.cdn).indexOf("http")?"":"https://",t,"/releases/latest/radar.min.js"].join("");var a=document.scripts[0];a.parentNode.insertBefore(i,a)},i.bootstrap()}}else"undefined"!=typeof console&&console.error("[Radar] Configuration incomplete")}({
21  apiEndpoint: "radar.snitcher.com",
22  cdn: "cdn.snitcher.com",
23  namespace: "Snitcher",
24  profileId: "8395164",
25  features: {
26    formTracking: true,
27    downloadTracking: true,
28  },
29});
30</script>
30<!-- Shared dual-emit tracking helper: Snitcher Radar + GTM dataLayer.
31     Module scripts use the identical `track()` from src/lib/track.ts;
32     this global exists so `is:inline` scripts can emit the same way. -->
32<script>
33window.snitcherTrack = function (event, properties) {
34  var props = properties || {};
35  // Product-stream pages tag events with a product_stream property
36  // (explicit properties win). Keep in sync with src/lib/track.ts.
37  try {
38    var streams = { 'partners': 'partners', 'radar': 'radar', 'platform': 'platform', 'ip-to-company-api': 'ip2c' };
39    var firstSegment = window.location.pathname.split('/').filter(Boolean)[0] || '';
40    if (streams[firstSegment] && !('product_stream' in props)) {
41      var tagged = { product_stream: streams[firstSegment] };
42      for (var pk in props) {
43        if (Object.prototype.hasOwnProperty.call(props, pk)) tagged[pk] = props[pk];
44      }
45      props = tagged;
46    }
47  } catch (e) { /* fall through untagged */ }
48  try {
49    if (window.Snitcher && typeof window.Snitcher.track === 'function') {
50      // Radar names are namespaced so marketing-site events stay separable
51      // from app-emitted events; the dataLayer name below stays bare for
52      // GTM triggers.
53      window.Snitcher.track('website.' + event, props);
54    }
55  } catch (e) { /* analytics must never break the page */ }
56  try {
57    window.dataLayer = window.dataLayer || [];
58    var entry = { event: event };
59    for (var key in props) {
60      if (Object.prototype.hasOwnProperty.call(props, key)) entry[key] = props[key];
61    }
62    window.dataLayer.push(entry);
63  } catch (e) { /* ignore */ }
64};
65</script>
65<!-- Google Tag Manager (consent-gated, then lazy loaded) -->
65<script>
66/*
67 * GTM is injected as a DOM-created 
67<script>. Cookiebot's `data-blockingmode="auto"`
68 * rewrites tags it can see in the markup, so it never intercepts this one — which is
69 * why the container, and the GA, Google Ads, Reddit and Clarity tags inside it, used
70 * to load before the visitor had answered the banner. Consent is therefore checked
71 * here explicitly; the static tags further down stay covered by auto-blocking.
72 */
73function gtmConsentGranted() {
74  var consent = window.Cookiebot && window.Cookiebot.consent;
75  return Boolean(consent && (consent.statistics || consent.marketing));
76}
77function initGTM() {
78  if (window.gtmDidInit || !gtmConsentGranted()) {
79    return false;
80  }
81  window.gtmDidInit = true;
82  const script = document.createElement('script');
83  script.type = 'text/javascript';
84  script.async = true;
85  script.onload = () => {
86    window.dataLayer = window.dataLayer || [];
87    window.dataLayer.push({ event: 'gtm.js', 'gtm.start': new Date().getTime(), 'gtm.uniqueEventId': 0 });
88  };
89  script.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-THP98M8';
90  document.head.appendChild(script);
91  return true;
92}
93function initGTMOnEvent(event) {
94  // Only spend the listener once the container actually loaded — before consent
95  // initGTM() is a no-op, and dropping the listener there would lose the trigger.
96  if (initGTM()) {
97    event.currentTarget.removeEventListener(event.type, initGTMOnEvent);
98  }
99}
100document.addEventListener('DOMContentLoaded', () => {
101  setTimeout(initGTM, 500);
102});
103document.addEventListener('scroll', initGTMOnEvent);
104document.addEventListener('mousemove', initGTMOnEvent);
105document.addEventListener('touchstart', initGTMOnEvent);
106// Consent usually lands after the lazy triggers have already run and no-opped, so
107// load on Cookiebot's own events too.
108window.addEventListener('CookiebotOnAccept', initGTM);
109window.addEventListener('CookiebotOnConsentReady', initGTM);
110</script>
110<!-- Google Consent Mode v2 defaults — MUST run before Cookiebot and any Google tag.
111     Without these Google's tags assume consent, which is what Cookiebot's scan reports
112     as "GCM consent parameters set as Default: At risk". Cookiebot updates the signal
113     once the visitor answers; until then everything non-essential stays denied. -->
113<script>
114window.dataLayer = window.dataLayer || [];
115function gtag() { window.dataLayer.push(arguments); }
116gtag('consent', 'default', {
117  ad_storage: 'denied',
118  ad_user_data: 'denied',
119  ad_personalization: 'denied',
120  analytics_storage: 'denied',
121  functionality_storage: 'denied',
122  personalization_storage: 'denied',
123  security_storage: 'granted',
124  wait_for_update: 500,
125});
126gtag('set', 'ads_data_redaction', true);
127gtag('set', 'url_passthrough', true);
128</script>
128<!-- Cookiebot CMP (Cookie Consent) -->
128<script id="Cookiebot" src="https://consent.cookiebot.com/uc.js" data-cbid="61d78ce6-ca00-4e9d-9b95-3dd373e04e20" data-blockingmode="auto" type="text/javascript"></script>
128<!-- Segment Analytics -->
128<script>
129!function(){var i="analytics",analytics=window[i]=window[i]||[];if(!analytics.initialize)if(analytics.invoked)window.console&&console.error&&console.error("Segment snippet included twice.");else{analytics.invoked=!0;analytics.methods=["trackSubmit","trackClick","trackLink","trackForm","pageview","identify","reset","group","track","ready","alias","debug","page","screen","once","off","on","addSourceMiddleware","addIntegrationMiddleware","setAnonymousId","addDestinationMiddleware","register"];analytics.factory=function(e){return function(){if(window[i].initialized)return window[i][e].apply(window[i],arguments);var n=Array.prototype.slice.call(arguments);if(["track","screen","alias","group","page","identify"].indexOf(e)>-1){var c=document.querySelector("link[rel='canonical']");n.push({__t:"bpc",c:c&&c.getAttribute("href")||void 0,p:location.pathname,u:location.href,s:location.search,t:document.title,r:document.referrer})}n.unshift(e);analytics.push(n);return analytics}};for(var n=0;n<analytics.methods.length;n++){var key=analytics.methods[n];analytics[key]=analytics.factory(key)}analytics.load=function(key,n){var t=document.createElement("script");t.type="text/javascript";t.async=!0;t.setAttribute("data-global-segment-analytics-key",i);t.src="https://touch.snitcher.com/analytics.js/v1/" + key + "/analytics.min.js";var r=document.getElementsByTagName("script")[0];r.parentNode.insertBefore(t,r);analytics._loadOptions=n};analytics._writeKey="fS7MHBg3XdVWDj1Gf6mi7xqpGDv6atOV";;analytics.SNIPPET_VERSION="5.2.0";
130analytics.load("fS7MHBg3XdVWDj1Gf6mi7xqpGDv6atOV");
131analytics.page();
132}}();
133</script>
133<!-- Meta Pixel -->
133<script>
vendor: 399 bytes, lines 133-142
133
134!function(f,b,e,v,n,t,s)
135{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
136n.callMethod.apply(n,arguments):n.queue.push(arguments)};
137if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
138n.queue=[];t=b.createElement(e);t.async=!0;
139t.src=v;s=b.getElementsByTagName(e)[0];
140s.parentNode.insertBefore(t,s)}(window, document,'script',
141'https://connect.facebook.net/en_US/fbevents.js');
142fbq('init', '
1421377135903938422
vendor: 30 bytes, lines 142-143
142');
143fbq('track', 'PageView');
144</script>
144<noscript><img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1377135903938422&ev=PageView&noscript=1"></noscript><link rel="stylesheet" href="/_astro/about.D_2VM18I.css">
145<style>.referral-offer-banner[data-astro-cid-nahiwob6].hidden{display:none}.referral-offer-banner[data-astro-cid-nahiwob6].is-visible{display:block}.referral-offer-banner[data-astro-cid-nahiwob6].is-dismissing{transition:opacity .2s ease-out,max-height .2s ease-out,padding .2s ease-out;opacity:0;max-height:0;padding-top:0;padding-bottom:0}#hero .section-container{-o-border-image:linear-gradient(to bottom,transparent,rgba(228,228,231,.5)) 1;border-image:linear-gradient(to bottom,transparent,rgba(228,228,231,.5)) 1}#hero .section-container:before,#hero .section-container:after{-webkit-mask-image:linear-gradient(to bottom,transparent,black);mask-image:linear-gradient(to bottom,transparent,black)}
146:root{--color-palatinate-50: #efefff;--color-palatinate-100: #dadaff;--color-palatinate-200: #b4b4ff;--color-palatinate-300: #8e8eff;--color-palatinate-400: #6a6aff;--color-palatinate-500: #4c4cff;--color-palatinate-600: #3e3ee6;--color-palatinate-700: #3131c2;--color-palatinate-800: #26269e;--color-palatinate-900: #1d1d7a;--color-palatinate-950: #171761;--color-lavender-50: #efefff;--color-lavender-100: #e9e8ff;--color-lavender-200: #d5d4ff;--color-lavender-300: #b8b1ff;--color-lavender-400: #9485ff;--color-lavender-500: #7153ff;--color-lavender-600: #5f30f7;--color-lavender-700: #511ee3;--color-lavender-800: #4318bf;--color-lavender-900: #38169c;--color-lavender-950: #210b6a;--color-jade-50: #ecfdf3;--color-jade-100: #d1fae1;--color-jade-200: #a7f3c9;--color-jade-300: #6de8ab;--color-jade-400: #33d489;--color-jade-500: #0ead69;--color-jade-600: #04975b;--color-jade-700: #03794c;--color-jade-800: #05603d;--color-jade-900: #064e34;--color-jade-950: #022c1e;--color-coral-50: #fef8f7;--color-coral-100: #fdedea;--color-coral-200: #fbd4cc;--color-coral-300: #fabaab;--color-coral-400: #f8a087;--color-coral-500: #f78154;--color-coral-600: #d0602a;--color-coral-700: #a1491f;--color-coral-800: #753313;--color-coral-900: #491d08;--color-coral-950: #351404;--color-honey-50: #feedd1;--color-honey-100: #fde4ba;--color-honey-200: #fcd38d;--color-honey-300: #fbc261;--color-honey-400: #fab034;--color-honey-500: #f99f07;--color-honey-600: #cd8305;--color-honey-700: #a06604;--color-honey-800: #744a03;--color-honey-900: #472d02;--color-honey-950: #301f01;--color-lava-50: #fef2f3;--color-lava-100: #fde3e5;--color-lava-200: #fcccd0;--color-lava-300: #f9a8ae;--color-lava-400: #f3767f;--color-lava-500: #e63946;--color-lava-600: #d52d3a;--color-lava-700: #b3222d;--color-lava-800: #942029;--color-lava-900: #7b2128;--color-lava-950: #430c10;--color-zinc-600: #52525b;--alpha-border: rgba(0, 0, 0, .08)}.dark{--alpha-border: rgba(255, 255, 255, .1)}
147.hero-logo-scatter[data-astro-cid-s4rxgulo]{position:absolute;inset:0;z-index:0;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:0}.hero-logo-scatter[data-astro-cid-s4rxgulo][data-ready=true]{opacity:1}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo]{position:absolute;width:48px;height:48px;-o-object-fit:contain;object-fit:contain;background:#fff;border-radius:12px;padding:6px;box-shadow:0 1px 2px #0000000a,0 6px 16px #0000000f}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="0"]{top:6%;left:4%;width:56px;height:56px;transform:rotate(-8deg);opacity:.6}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="1"]{top:22%;left:11%;width:44px;height:44px;transform:rotate(6deg);opacity:.75}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="2"]{top:54%;left:3%;width:48px;height:48px;transform:rotate(-12deg);opacity:.6}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="3"]{top:78%;left:13%;width:40px;height:40px;transform:rotate(9deg);opacity:.5}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="4"]{top:8%;right:5%;width:52px;height:52px;transform:rotate(7deg);opacity:.6}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="5"]{top:26%;right:12%;width:44px;height:44px;transform:rotate(-5deg);opacity:.75}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="6"]{top:56%;right:4%;width:48px;height:48px;transform:rotate(10deg);opacity:.6}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="7"]{top:80%;right:14%;width:40px;height:40px;transform:rotate(-8deg);opacity:.5}.hero-logo-scatter[data-astro-cid-s4rxgulo][data-align=right] .hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="0"],.hero-logo-scatter[data-astro-cid-s4rxgulo][data-align=right] .hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="1"],.hero-logo-scatter[data-astro-cid-s4rxgulo][data-align=right] .hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="2"],.hero-logo-scatter[data-astro-cid-s4rxgulo][data-align=right] .hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="3"]{display:none}@media (max-width: 1024px){.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="1"],.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="5"]{display:none}}@media (max-width: 640px){.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="2"],.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="3"],.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="6"],.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="7"]{display:none}.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="0"],.hero-logo-scatter__logo[data-astro-cid-s4rxgulo][data-logo-slot="4"]{width:40px;height:40px}}
148</style>
149<link rel="stylesheet" href="/_astro/demo.SKPlMlYs.css">
150<style>.personalized-modal[data-astro-cid-y42wqjr7]{position:fixed;inset:0;z-index:9998;display:flex;align-items:center;justify-content:center;padding:1.5rem;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility 0s linear .2s}.personalized-modal[data-astro-cid-y42wqjr7][data-open=true]{opacity:1;visibility:visible;transition:opacity .2s ease-out,visibility 0s linear 0s}.personalized-modal__backdrop[data-astro-cid-y42wqjr7]{position:absolute;inset:0;background:#09090b99;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.personalized-modal__card[data-astro-cid-y42wqjr7]{position:relative;z-index:1;width:100%;max-width:460px;max-height:calc(100vh - 3rem);overflow-y:auto;background:#fff;border-radius:1.25rem;padding:2.5rem 2rem 2rem;text-align:center;box-shadow:0 20px 60px -20px #0000004d,0 8px 24px -8px #0000001a;transform:scale(.96);transition:transform .2s ease-out}.personalized-modal[data-astro-cid-y42wqjr7][data-open=true] .personalized-modal__card[data-astro-cid-y42wqjr7]{transform:scale(1)}.personalized-modal__close[data-astro-cid-y42wqjr7]{position:absolute;top:.875rem;right:.875rem;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:999px;background:transparent;color:#71717a;cursor:pointer;transition:background .15s ease-out,color .15s ease-out}.personalized-modal__close[data-astro-cid-y42wqjr7]:hover{background:#f4f4f5;color:#18181b}.personalized-modal__close[data-astro-cid-y42wqjr7]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-palatinate-500)}.personalized-modal__lockup[data-astro-cid-y42wqjr7]{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-bottom:1.5rem}.personalized-modal__logo-tile[data-astro-cid-y42wqjr7]{display:inline-flex;align-items:center;justify-content:center;width:64px;
150height:64px;border-radius:14px;background:#fff;padding:10px;box-shadow:0 1px 2px #0000000a,0 6px 20px #00000014}.personalized-modal__logo-tile--snitcher[data-astro-cid-y42wqjr7]{background:#f5f5ff}.personalized-modal__logo-tile[data-astro-cid-y42wqjr7] img[data-astro-cid-y42wqjr7]{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.personalized-modal__logo-tile--company[data-astro-cid-y42wqjr7]{display:none}.personalized-modal[data-astro-cid-y42wqjr7][data-has-company-logo=true] .personalized-modal__logo-tile--company[data-astro-cid-y42wqjr7]{display:inline-flex}.personalized-modal[data-astro-cid-y42wqjr7][data-has-company-logo=true] .personalized-modal__lockup-glue[data-astro-cid-y42wqjr7]{display:inline}.personalized-modal__lockup-glue[data-astro-cid-y42wqjr7]{display:none;font-size:1.5rem;font-weight:600;color:#a1a1aa;line-height:1}.personalized-modal__heading[data-astro-cid-y42wqjr7]{font-size:1.5rem;line-height:1.2;font-weight:700;color:#18181b;margin:0 0 .75rem}.personalized-modal__body[data-astro-cid-y42wqjr7]{font-size:.9375rem;line-height:1.55;color:#52525b;margin:0 0 1.75rem}.personalized-modal__actions[data-astro-cid-y42wqjr7]{display:flex;flex-direction:column;align-items:stretch;gap:.5rem}.personalized-modal__cta[data-astro-cid-y42wqjr7]{justify-content:center;width:100%}.personalized-modal__dismiss[data-astro-cid-y42wqjr7]{display:inline-flex;align-items:center;justify-content:center;padding:.5rem .75rem;border:0;background:transparent;color:#71717a;font-size:.875rem;cursor:pointer;border-radius:.375rem;transition:color .15s ease-out}.personalized-modal__dismiss[data-astro-cid-y42wqjr7]:hover{color:#18181b}.personalized-modal__dismiss[data-astro-cid-y42wqjr7]:focus-visible{outline:none;box-shadow:0 0 0 2px var(--color-palatinate-500)}@media (prefers-reduced-motion: reduce){.personalized-modal[data-astro-cid-y42wqjr7],.personalized-modal__card[data-astro-cid-y42wqjr7]{transition:none}}
151.underline-animated[data-astro-cid-drt2y2q3].ready .underline-path[data-astro-cid-drt2y2q3]{animation:drawStroke .3s ease-out forwards}@keyframes drawStroke{to{stroke-dashoffset:0}}
152.arrow-btn-icon-wrap{position:relative;width:16px;height:16px;overflow:hidden;display:flex;align-items:center;justify-content:center}.arrow-btn-icon{will-change:transform}.arrow-btn-icon.slide-in-right{animation:arrow-btn-slide-in-right .2s ease-in-out forwards}.arrow-btn-icon.slide-out-right{animation:arrow-btn-slide-out-right .2s ease-in-out forwards}.arrow-btn-icon.slide-in-left{animation:arrow-btn-slide-in-left .2s ease-in-out forwards}.arrow-btn-icon.slide-out-left{animation:arrow-btn-slide-out-left .2s ease-in-out forwards}.arrow-btn-icon.slide-in{animation:arrow-btn-slide-in-right .2s ease-in-out forwards}.arrow-btn-icon.slide-out{animation:arrow-btn-slide-out-right .2s ease-in-out forwards}@keyframes arrow-btn-slide-in-right{0%{transform:translate(0);opacity:1}50%{transform:translate(100%);opacity:0}50.01%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes arrow-btn-slide-out-right{0%{transform:translate(0);opacity:1}50%{transform:translate(-100%);opacity:0}50.01%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes arrow-btn-slide-in-left{0%{transform:translate(0);opacity:1}50%{transform:translate(-100%);opacity:0}50.01%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes arrow-btn-slide-out-left{0%{transform:translate(0);opacity:1}50%{transform:translate(100%);opacity:0}50.01%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}
153.feature-card[href]{color:inherit;text-decoration:none}.feature-card[href]:hover{text-decoration:none}
154.scrollbar-hide[data-astro-cid-27qgd3zz]{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide[data-astro-cid-27qgd3zz]::-webkit-scrollbar{display:none}
155.pixel-reveal[data-astro-cid-kt72rz56]{display:inline-block;position:relative;white-space:nowrap}.pixel-reveal-text[data-astro-cid-kt72rz56]{display:inline-block;position:relative}.pixel-reveal-decorative[data-astro-cid-kt72rz56]{position:absolute;top:0;left:0;opacity:0;pointer-events:none;display:inline-block;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;letter-spacing:inherit;text-transform:inherit;white-space:inherit;color:inherit}.pixel-word[data-astro-cid-kt72rz56]{display:inline;white-space:nowrap}.pixel-char[data-astro-cid-kt72rz56]{display:inline-block;position:relative;line-height:1em;vertical-align:baseline}.pixel-reveal-decorative[data-astro-cid-kt72rz56] .pixel-char[data-astro-cid-kt72rz56]{color:var(--pixel-color);overflow:visible}.pixel-dots[data-astro-cid-kt72rz56]{position:absolute;inset:-4px;pointer-events:none;opacity:0;z-index:-1}.pixel-dot[data-astro-cid-kt72rz56]{position:absolute;width:3px;height:3px;background:var(--brand-color, #4C4CFF);opacity:0;will-change:transform,opacity}.pixel-char-current[data-astro-cid-kt72rz56]{display:inline-block;position:relative;transition:transform .06s ease-out}.pixel-char[data-astro-cid-kt72rz56].scrambling .pixel-char-current[data-astro-cid-kt72rz56]{color:var(--brand-color, #4C4CFF);animation:pixel-scramble .06s ease-out}.pixel-char[data-astro-cid-kt72rz56].scrambling .pixel-dots[data-astro-cid-kt72rz56]{opacity:1}@keyframes pixel-scramble{0%{transform:translateY(-20%);opacity:.7}to{transform:translateY(0);opacity:1}}.pixel-char[data-astro-cid-kt72rz56].sparkle .pixel-char-current[data-astro-cid-kt72rz56]{animation:pixel-sparkle .15s ease-out}@keyframes pixel-sparkle{0%{filter:brightness(1)}30%{filter:brightness(1.8)}to{filter:brightness(1)}}.pixel-char[data-astro-cid-kt72rz56].revealed .pixel-char-current[data-astro-cid-kt72rz56]{color:inherit;animation:pixel-settle .25s cubic-bezier(.34,1.56,.64,1)}.pixel-char[data-astro-cid-kt72rz56].revealed .pixel-dots[data-astro-cid-kt72rz56]{animation:dots-scatter .4s ease-out forwards}@keyframes pixel-settle{0%{transform:translateY(-15%) scale(1.05);filter:brightness(1.3)}50%{transform:translateY(3%)}to{transform:translateY(0) scale(1);filter:brightness(1)}}@keyframes dots-scatter{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.5)}}@media (prefers-reduced-motion: reduce){.pixel-reveal-decorative[data-astro-cid-kt72rz56]{display:none}.pixel-char-current[data-astro-cid-kt72rz56],.pixel-dots[data-astro-cid-kt72rz56],.pixel-dot[data-astro-cid-kt72rz56]{animation:none!important;transition:none!important}}.pixel-reveal[data-astro-cid-kt72rz56][data-animated=true] .pixel-reveal-text[data-astro-cid-kt72rz56]{opacity:0}
155.pixel-reveal[data-astro-cid-kt72rz56][data-animated=true] .pixel-reveal-decorative[data-astro-cid-kt72rz56],.pixel-reveal[data-astro-cid-kt72rz56][data-animated=true][data-complete=true] .pixel-reveal-text[data-astro-cid-kt72rz56]{opacity:1}.pixel-reveal[data-astro-cid-kt72rz56][data-animated=true][data-complete=true] .pixel-reveal-decorative[data-astro-cid-kt72rz56]{opacity:0}
156</style>
157<link rel="stylesheet" href="/_astro/FlipCountdown_astro_astro_type_style_index_0_lang.C_FS9Ten.css">
158<link rel="stylesheet" href="/_astro/PageSection_astro_astro_type_style_index_0_lang.BD2u2Sx1.css">
159<style>.divider-band[data-astro-cid-bj7qugvw]{margin-inline:calc(var(--section-px, 0px) * -1)}.divider-dots[data-astro-cid-bj7qugvw],.divider-lines[data-astro-cid-bj7qugvw]{position:relative}.divider-dots[data-astro-cid-bj7qugvw]:after,.divider-lines[data-astro-cid-bj7qugvw]:after{content:"";position:absolute;inset:0}.divider-dots[data-astro-cid-bj7qugvw]:after{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24'><g opacity='0.4'><rect x='10.75' y='10.75' width='1.5' height='1.5' fill='%234c4cff'/></g></svg>");background-size:24px 24px;background-position:50% 50%}.divider-lines[data-astro-cid-bj7qugvw]:after{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='6'><rect width='1' height='3' fill='%23e4e4e7'/></svg>");background-size:24px 6px;background-position:50% 0}[data-astro-cid-bj7qugvw][data-fade=bottom]:after{mask-image:linear-gradient(to bottom,black,transparent);-webkit-mask-image:linear-gradient(to bottom,black,transparent)}[data-astro-cid-bj7qugvw][data-fade=top]:after{mask-image:linear-gradient(to bottom,transparent,black);-webkit-mask-image:linear-gradient(to bottom,transparent,black)}[data-astro-cid-bj7qugvw][data-fade=both]:after{mask-image:linear-gradient(to bottom,transparent,black 35%,black 65%,transparent);-webkit-mask-image:linear-gradient(to bottom,transparent,black 35%,black 65%,transparent)}.divider-lines[data-astro-cid-bj7qugvw][data-fade=top]:after{background-position:50% 100%}
160.carousel-visual[data-astro-cid-bjcxd7r3]{transition:opacity .3s ease-out}
161.carousel-progress-wrapper[data-astro-cid-algf2pu2]{opacity:0;transition:opacity .15s ease-out}.carousel-progress-visible[data-astro-cid-algf2pu2]{opacity:1}.carousel-progress[data-astro-cid-algf2pu2]{width:20px;height:20px;transform:rotate(-90deg)}.carousel-progress-track[data-astro-cid-algf2pu2]{fill:none;stroke:#e4e4e7;stroke-width:2}.carousel-progress-fill[data-astro-cid-algf2pu2]{fill:none;stroke:var(--color-palatinate-500);stroke-width:2;stroke-linecap:round;stroke-dasharray:50.265482;stroke-dashoffset:50.265482}.carousel-progress-active[data-astro-cid-algf2pu2]{animation:carousel-progress-fill var(--animation-duration, 10s) linear forwards}.carousel-progress-paused[data-astro-cid-algf2pu2]{animation-play-state:paused}@keyframes carousel-progress-fill{0%{stroke-dashoffset:50.265482}to{stroke-dashoffset:0}}
162</style>
163<link rel="stylesheet" href="/_astro/index_astro_astro_type_style_index_0_lang.BBVdYB7R.css">
164<style>.footer-nav-link[data-astro-cid-fqw42ge2]{font-size:1rem;line-height:1.6;--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.footer-nav-link[data-astro-cid-fqw42ge2]:hover{--tw-text-opacity: 1;color:rgb(212 212 216 / var(--tw-text-opacity, 1))}.footer-bottom-link[data-astro-cid-fqw42ge2]{font-size:.875rem;line-height:1.25;--tw-text-opacity: 1;color:rgb(161 161 170 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.footer-bottom-link[data-astro-cid-fqw42ge2]:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.fingerprint-canvas[data-astro-cid-fqw42ge2]{display:block}.partner-arrow[data-astro-cid-fqw42ge2]{animation:partner-arrow-bob 3.2s ease-in-out infinite;transform-origin:80% 30%}@keyframes partner-arrow-bob{0%,to{transform:translate(0) rotate(0)}50%{transform:translate(-2px,1px) rotate(-5deg)}}@media (prefers-reduced-motion: reduce){.partner-arrow[data-astro-cid-fqw42ge2]{animation:none}}
165.blob-card-blob[data-astro-cid-gijzu423]{position:absolute;border-radius:50%;filter:blur(40px);will-change:transform;pointer-events:none;animation-play-state:paused}.blob-card-blob-1[data-astro-cid-gijzu423]{width:750px;height:650px;background:#00000040;top:-450px;left:-450px;animation:blob-card-drift-1 18s ease-in-out infinite;filter:blur(40px)}.blob-card-blob-2[data-astro-cid-gijzu423]{width:650px;height:650px;background:#0000004d;top:-300px;right:-400px;animation:blob-card-drift-2 22s ease-in-out infinite;filter:blur(40px)}.blob-card-blob-3[data-astro-cid-gijzu423]{width:700px;height:550px;background:#00000038;bottom:-400px;left:-350px;animation:blob-card-drift-3 26s ease-in-out infinite;filter:blur(40px)}.blob-card-blob-4[data-astro-cid-gijzu423]{width:550px;height:480px;background:#ffffff0a;top:-350px;right:-320px;animation:blob-card-drift-4 24s ease-in-out infinite;filter:blur(35px)}.blob-card-blob-5[data-astro-cid-gijzu423]{width:600px;height:550px;background:#0000000d;bottom:-380px;right:-400px;animation:blob-card-drift-5 30s ease-in-out infinite;filter:blur(35px)}.blob-card-noise[data-astro-cid-gijzu423]{position:absolute;inset:0;z-index:2;opacity:.35;mix-blend-mode:overlay;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:200px 200px}@keyframes blob-card-drift-1{0%,to{transform:translate(0) scale(1)}25%{transform:translate(30px,40px) scale(1.1)}50%{transform:translate(60px,20px) scale(.95)}75%{transform:translate(20px,50px) scale(1.05)}}@keyframes blob-card-drift-2{0%,to{transform:translate(0) scale(1)}33%{transform:translate(-40px,30px) scale(1.15)}66%{transform:translate(-20px,-20px) scale(.9)}}@keyframes blob-card-drift-3{0%,to{transform:translate(0) scale(1)}20%{transform:translate(40px,-30px) scale(1.1)}
16540%{transform:translate(20px,40px) scale(.95)}60%{transform:translate(-30px,20px) scale(1.05)}80%{transform:translate(-20px,-40px) scale(1)}}@keyframes blob-card-drift-4{0%,to{transform:translate(0) scale(1)}30%{transform:translate(-50px,30px) scale(1.08)}60%{transform:translate(30px,-40px) scale(.92)}85%{transform:translate(-20px,15px) scale(1.05)}}@keyframes blob-card-drift-5{0%,to{transform:translate(0) scale(1)}25%{transform:translate(35px,25px) scale(.95)}50%{transform:translate(-25px,-35px) scale(1.12)}75%{transform:translate(15px,-20px) scale(1)}}@media (prefers-reduced-motion: reduce){.blob-card-blob[data-astro-cid-gijzu423]{animation:none}}
166@keyframes pop-in{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.95)}to{opacity:1;transform:scale(1)}}.integration-bento[data-astro-cid-7rb7ltoj][data-animate=true] .integration-logo[data-astro-cid-7rb7ltoj]{opacity:0;transform:scale(.3)}.integration-bento[data-astro-cid-7rb7ltoj][data-animate=true].animate-in .integration-logo[data-astro-cid-7rb7ltoj]{animation:pop-in .5s cubic-bezier(.34,1.56,.64,1) forwards;animation-delay:var(--delay, 0ms)}@media (prefers-reduced-motion: reduce){.integration-bento[data-astro-cid-7rb7ltoj][data-animate=true] .integration-logo[data-astro-cid-7rb7ltoj]{opacity:1;transform:scale(1)}.integration-bento[data-astro-cid-7rb7ltoj][data-animate=true].animate-in .integration-logo[data-astro-cid-7rb7ltoj]{animation:none;opacity:1;transform:scale(1)}}
167.testimonial-section__dot{width:8px;height:8px;border-radius:9999px;background-color:var(--ts-dot-inactive, rgba(63, 63, 70, .25));transition:background-color .2s ease,width .2s ease;cursor:pointer;border:0;padding:0}.testimonial-section__dot:hover{background-color:var(--ts-dot-inactive-hover, rgba(63, 63, 70, .5))}.testimonial-section__dot.is-active{background-color:var(--ts-dot-active, var(--color-palatinate-600, #3e3ee6));width:24px}.testimonial-section__dot:focus-visible{outline:2px solid var(--ts-dot-focus, var(--color-palatinate-500, #4c4cff));outline-offset:2px}@media (prefers-reduced-motion: reduce){.testimonial-section__dot{transition:none}}
168.testimonial-section__slide[data-astro-cid-7ajslof7]{grid-area:1 / 1;width:100%;height:100%;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .7s ease;pointer-events:none}.testimonial-section__slide[data-astro-cid-7ajslof7].is-active{opacity:1;pointer-events:auto}@media (prefers-reduced-motion: reduce){.testimonial-section__slide[data-astro-cid-7ajslof7]{transition:none}}
169.page-section:has([data-testimonial-section])>.section-container{padding:0}.page-section:has([data-testimonial-section][data-variant=light]),.page-section:has([data-testimonial-section][data-variant=particles]){background-color:var(--color-lavender-50, #eef0ff)}[data-testimonial-section][data-variant=light],[data-testimonial-section][data-variant=particles]{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='48' height='48'><g opacity='0.4'><path d='M24 23H23V24H24V23Z' fill='%234c4cff'/></g></svg>");background-size:48px 48px;background-position:50% 0}[data-testimonial-section][data-variant=grid]:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(ellipse 34% 52% at 50% 50%,#ffffffeb,#ffffff8c 45%,#fff0 75%),linear-gradient(to right,rgba(0,0,0,.06) 1px,transparent 1px),linear-gradient(to bottom,rgba(0,0,0,.06) 1px,transparent 1px);background-size:100% 100%,25px 25px,25px 25px;background-position:center,50% 50%,50% 50%;mask-image:radial-gradient(ellipse 46% 58% at 50% 50%,#000 0%,rgba(0,0,0,.85) 45%,transparent 100%);-webkit-mask-image:radial-gradient(ellipse 46% 58% at 50% 50%,#000 0%,rgba(0,0,0,.85) 45%,transparent 100%)}[data-testimonial-section][data-variant=grid]>*{position:relative;z-index:1}.page-section:has([data-testimonial-section][data-variant=dark]){background-color:#09090b}[data-testimonial-section][data-variant=dark]{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='48' height='48'><g opacity='0.3'><path d='M24 23H23V24H24V23Z' fill='%23fafafa'/></g></svg>");background-size:48px 48px;background-position:50% 0}
170.tab-active-shadow[data-astro-cid-twm5uxey]{box-shadow:0 0 0 1px var(--alpha-border),0 1px 3px #0000001a}.badge-dark-inactive[data-astro-cid-twm5uxey]{background-color:#0003}
171</style>
172<link rel="stylesheet" href="/_astro/Navbar_astro_astro_type_style_index_0_lang.CnosfN-w.css">
173<style>.g2-badge-wall__grid[data-astro-cid-ukhf4yhl]{margin-inline:calc(var(--section-px) * -1)}.g2-badge-wall__grid[data-astro-cid-ukhf4yhl]>*{border-radius:0;border-inline:0;box-shadow:none}@media (min-width: 1024px){.g2-badge-wall[data-astro-cid-ukhf4yhl]{margin-top:-4rem}.g2-badge-wall__grid[data-astro-cid-ukhf4yhl]>*{border-top:0}}
174.accordion[data-astro-cid-u4rtwtdm]:not(.accordion-dark) .accordion-trigger[data-astro-cid-u4rtwtdm]:hover{background-color:#f4f4f580}.accordion[data-astro-cid-u4rtwtdm].accordion-dark{transition:border-color .2s ease}.accordion[data-astro-cid-u4rtwtdm].accordion-dark:hover{border-color:#fff3!important}.accordion[data-astro-cid-u4rtwtdm]:not(.accordion-dark) .accordion-trigger[data-astro-cid-u4rtwtdm]{border-radius:1rem}
175.faq-answer a{color:inherit;text-decoration:underline;text-underline-offset:3px}.faq-answer a:hover{text-decoration:none}
176.hero-dot-grid[data-astro-cid-wlyiyr5g]{top:24px;left:50%;transform:translate(-50%);width:1050px;z-index:-30}.hero-dot-grid[data-astro-cid-wlyiyr5g] canvas[data-astro-cid-wlyiyr5g]{width:100%;height:auto;display:block;opacity:.75}@media (max-width: 1100px){.hero-dot-grid[data-astro-cid-wlyiyr5g]{width:900px}}@media (max-width: 768px){.hero-dot-grid[data-astro-cid-wlyiyr5g]{top:0;width:700px}.hero-dot-grid[data-astro-cid-wlyiyr5g] canvas[data-astro-cid-wlyiyr5g]{opacity:.6}}@media (max-width: 480px){.hero-dot-grid[data-astro-cid-wlyiyr5g]{width:600px}}
177.marquee-track[data-astro-cid-kijovlsi]{animation:marquee 60s linear infinite;animation-play-state:paused}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(calc(var(--card-set-width) * -1))}}.marquee-track[data-astro-cid-kijovlsi] p[data-astro-cid-kijovlsi]{margin-bottom:0}@media (prefers-reduced-motion: reduce){.marquee-track[data-astro-cid-kijovlsi]{animation:none}}
178.measure-visual[data-astro-cid-a6yjhbsd] p[data-astro-cid-a6yjhbsd]{margin:0}.measure-source-pill[data-astro-cid-a6yjhbsd]{display:flex;align-items:center;gap:6px;background:#fff;padding:7px 14px;white-space:nowrap;opacity:0;transform:translateY(6px);transition:opacity .4s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.22,1,.36,1),box-shadow .3s ease}.measure-source-pill[data-astro-cid-a6yjhbsd].visible{opacity:1;transform:translateY(0)}.measure-source-pill[data-astro-cid-a6yjhbsd].-rotate-2.visible{transform:translateY(0) rotate(-2deg)}.measure-source-pill[data-astro-cid-a6yjhbsd].rotate-1.visible{transform:translateY(0) rotate(1deg)}.measure-visual[data-astro-cid-a6yjhbsd][data-hovering] .measure-source-pill[data-astro-cid-a6yjhbsd][data-pill-delay="0"].visible{transform:translate(-8px) translateY(-4px) rotate(-3deg)}.measure-visual[data-astro-cid-a6yjhbsd][data-hovering] .measure-source-pill[data-astro-cid-a6yjhbsd][data-pill-delay="1"].visible{transform:translate(8px) translateY(-4px) rotate(2deg)}.measure-visual[data-astro-cid-a6yjhbsd][data-hovering] .measure-source-pill[data-astro-cid-a6yjhbsd][data-pill-delay="2"].visible{transform:translateY(4px) rotate(1deg)}.measure-pill-label[data-astro-cid-a6yjhbsd]{font-size:12px;font-weight:600;color:#3f3f46;flex-shrink:0}.measure-pill-sep[data-astro-cid-a6yjhbsd]{font-size:12px;color:#d4d4d8;flex-shrink:0}.measure-pill-sub[data-astro-cid-a6yjhbsd]{font-size:12px;color:#a1a1aa;overflow:hidden;text-overflow:ellipsis;min-width:0}.measure-source-pill[data-astro-cid-a6yjhbsd] svg{width:16px;height:16px}@media (prefers-reduced-motion: reduce){.measure-source-pill[data-astro-cid-a6yjhbsd]{transition:none!important;opacity:1!important;transform:none!important}}
179.signal-card[data-astro-cid-l3ae6lyb]{transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s cubic-bezier(.22,1,.36,1)}.feature-card:hover .signal-card[data-astro-cid-l3ae6lyb]{transform:scale(1.02) rotate(-2deg);box-shadow:0 0 0 1px var(--alpha-border),0 4px 12px #0000001a,0 2px 4px -1px #0000001a}.signal-visual[data-astro-cid-l3ae6lyb] p[data-astro-cid-l3ae6lyb]{margin:2px 0 0}.signal-timeline-item[data-astro-cid-l3ae6lyb]{opacity:0;transform:translateY(8px);transition:opacity .4s cubic-bezier(.22,1,.36,1),transform .4s cubic-bezier(.22,1,.36,1)}.signal-timeline-item[data-astro-cid-l3ae6lyb].visible{opacity:1;transform:translateY(0)}.signal-hover-event[data-astro-cid-l3ae6lyb]{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s cubic-bezier(.22,1,.36,1)}.signal-hover-event[data-astro-cid-l3ae6lyb]>div[data-astro-cid-l3ae6lyb]{overflow:hidden}.signal-hover-event[data-astro-cid-l3ae6lyb].visible{grid-template-rows:1fr}.signal-hover-content[data-astro-cid-l3ae6lyb]{opacity:0;transform:translateY(-8px);transition:opacity .3s cubic-bezier(.22,1,.36,1),transform .3s cubic-bezier(.22,1,.36,1)}.signal-hover-event[data-astro-cid-l3ae6lyb].visible .signal-hover-content[data-astro-cid-l3ae6lyb]{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion: reduce){.signal-timeline-item[data-astro-cid-l3ae6lyb],.signal-hover-event[data-astro-cid-l3ae6lyb],.signal-hover-content[data-astro-cid-l3ae6lyb]{opacity:1!important;transform:none!important;transition:none!important}}
180.engage-visual[data-astro-cid-ybnukg4e] p[data-astro-cid-ybnukg4e]{margin:0}.engage-flip-container[data-astro-cid-ybnukg4e]{perspective:800px}.engage-flip-inner[data-astro-cid-ybnukg4e]{position:relative;transition:transform .5s cubic-bezier(.22,1,.36,1);transform-style:preserve-3d}.engage-face[data-astro-cid-ybnukg4e]{backface-visibility:hidden;-webkit-backface-visibility:hidden}.engage-front[data-astro-cid-ybnukg4e]{position:relative}.engage-back[data-astro-cid-ybnukg4e]{position:absolute;inset:0;transform:rotateY(180deg)}.feature-card:hover .engage-flip-inner[data-astro-cid-ybnukg4e]{transform:rotateY(180deg)}@media (prefers-reduced-motion: reduce){.engage-flip-inner[data-astro-cid-ybnukg4e]{transition:none!important}}
181.snv-card[data-astro-cid-fjxicinn]{position:absolute;
181left:0;right:0;top:50%;opacity:0;transform:translateY(-50%) translate(0) scale(.85);transition:transform .5s cubic-bezier(.22,1,.36,1),opacity .35s ease;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border-radius:16px}.snv-body[data-astro-cid-fjxicinn]{background:#ffffffb8;border-radius:16px;padding:10px 14px;box-shadow:0 0 0 .5px #0000000f,0 1px 2px #0000000a,0 4px 12px #0000000f,0 12px 32px #0000000a}.snv-icon-wrap[data-astro-cid-fjxicinn]{width:22px;height:22px;border-radius:5px;background:#fff;box-shadow:0 0 0 .5px #00000014,0 1px 2px #0000000f;display:flex;align-items:center;justify-content:center;flex-shrink:0}.snv-card[data-astro-cid-fjxicinn].s-top{opacity:1;transform:translateY(-50%) translate(0) scale(1)}.snv-card[data-astro-cid-fjxicinn].s-mid{opacity:1;transform:translateY(calc(-50% + 12px)) translate(0) scale(.96)}.snv-card[data-astro-cid-fjxicinn].s-bot{opacity:1;transform:translateY(calc(-50% + 22px)) translate(0) scale(.92)}.snv-card[data-astro-cid-fjxicinn].s-mid .snv-body[data-astro-cid-fjxicinn]{opacity:.92}.snv-card[data-astro-cid-fjxicinn].s-bot .snv-body[data-astro-cid-fjxicinn]{opacity:.82}.snv-group[data-astro-cid-fjxicinn].ready.hovered .snv-card[data-astro-cid-fjxicinn]{transition:transform .4s cubic-bezier(.22,1,.36,1),opacity .3s ease}.snv-group[data-astro-cid-fjxicinn].ready.hovered .snv-card[data-astro-cid-fjxicinn].s-top{transform:translateY(calc(-50% - 93px)) translate(0) scale(1)}.snv-group[data-astro-cid-fjxicinn].ready.hovered .snv-card[data-astro-cid-fjxicinn].s-mid{transform:translateY(-50%) translate(0) scale(1)}.snv-group[data-astro-cid-fjxicinn].ready.hovered .snv-card[data-astro-cid-fjxicinn].s-bot{transform:translateY(calc(-50% + 93px)) translate(0) scale(1)}.snv-group[data-astro-cid-fjxicinn].ready.hovered .snv-card[data-astro-cid-fjxicinn] .snv-body[data-astro-cid-fjxicinn]{opacity:1;transition:opacity .3s ease}@media (prefers-reduced-motion: reduce){.snv-card[data-astro-cid-fjxicinn]{transition:none!important;opacity:1!important}.snv-card[data-astro-cid-fjxicinn]:nth-child(1){transform:translateY(calc(-50% + 93px)) translate(0) scale(1)!important}.snv-card[data-astro-cid-fjxicinn]:nth-child(2){transform:translateY(-50%) translate(0) scale(1)!important}.snv-card[data-astro-cid-fjxicinn]:nth-child(3){transform:translateY(calc(-50% - 93px)) translate(0) scale(1)!important}.snv-body[data-astro-cid-fjxicinn]{opacity:1!important}}
182@media (prefers-reduced-motion: reduce){.feedback-face[data-astro-cid-kububvzn]{transition:none!important}.feedback-face[data-astro-cid-kububvzn]:hover{transform:none!important}}
183.scrollbar-hide[data-astro-cid-iyzr5htm]{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide[data-astro-cid-iyzr5htm]::-webkit-scrollbar{display:none}.carousel-fade[data-astro-cid-iyzr5htm]{position:absolute;top:0;bottom:0;width:var(--fade-width);pointer-events:none;z-index:10;opacity:0;transition:opacity .3s ease-out}.carousel-fade-left[data-astro-cid-iyzr5htm]{left:0;background:linear-gradient(to right,var(--carousel-bg, rgb(250, 250, 250)),transparent)}.carousel-fade-right[data-astro-cid-iyzr5htm]{right:0;background:linear-gradient(to left,var(--carousel-bg, rgb(250, 250, 250)),transparent)}.carousel-fade[data-astro-cid-iyzr5htm][data-visible=true]{opacity:1}
184.tier-medal[data-astro-cid-7evo3er2]{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:var(--medal-size);height:var(--medal-size);border-radius:calc(var(--medal-size) / 7);border:1px solid var(--alpha-border);background-image:var(--medal-field)}.tier-medal__mark[data-astro-cid-7evo3er2]{display:block;width:72%;height:72%}
185.integration-gallery[data-astro-cid-lmzdgq7c]{margin:1.5rem 0 2rem}.gallery-item[data-astro-cid-lmzdgq7c]{padding:.5rem}.gallery-thumbnail[data-astro-cid-lmzdgq7c]{display:block}
186.lightbox-trigger[data-astro-cid-fcyb6yui]{cursor:zoom-in}.lightbox-overlay[data-astro-cid-fcyb6yui]{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;padding:2rem;opacity:0;visibility:hidden;transition:opacity .2s ease-out,visibility .2s ease-out}.lightbox-overlay[data-astro-cid-fcyb6yui][data-open=true]{opacity:1;visibility:visible}.lightbox-backdrop[data-astro-cid-fcyb6yui]{position:absolute;inset:0;background:#000000d9;backdrop-filter:blur(4px)}.lightbox-close[data-astro-cid-fcyb6yui]{position:absolute;top:1.5rem;right:1.5rem;z-index:10;display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:50%;color:#fff;cursor:pointer;transition:background .15s ease-out,transform .15s ease-out}.lightbox-close[data-astro-cid-fcyb6yui]:hover{background:#fff3;transform:scale(1.05)}.lightbox-close[data-astro-cid-fcyb6yui]:focus{outline:none;box-shadow:0 0 0 2px #ffffff80}.lightbox-nav[data-astro-cid-fcyb6yui]{position:absolute;top:50%;transform:translateY(-50%);z-index:10;display:flex;align-items:center;justify-content:center;width:48px;height:48px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:50%;color:#fff;cursor:pointer;transition:background .15s ease-out,transform .15s ease-out,opacity .15s ease-out;opacity:0;pointer-events:none}.lightbox-overlay[data-astro-cid-fcyb6yui][data-open=true] .lightbox-nav[data-astro-cid-fcyb6yui][data-visible=true]{opacity:1;pointer-events:auto}.lightbox-nav[data-astro-cid-fcyb6yui]:hover{background:#fff3}.lightbox-nav[data-astro-cid-fcyb6yui]:focus{outline:none;box-shadow:0 0 0 2px #ffffff80}.lightbox-nav-prev[data-astro-cid-fcyb6yui]{left:1.5rem}.lightbox-nav-next[data-astro-cid-fcyb6yui]{right:1.5rem}.lightbox-content[data-astro-cid-fcyb6yui]{position:relative;z-index:1;max-width:90vw;display:flex;flex-direction:column;align-items:center;transform:scale(.95);transition:transform .2s ease-out}.lightbox-overlay[data-astro-cid-fcyb6yui][data-open=true] .lightbox-content[data-astro-cid-fcyb6yui]{transform:scale(1)}.lightbox-image[data-astro-cid-fcyb6yui]{display:block;max-width:100%;max-height:80vh;width:auto;height:auto;border-radius:.75rem;box-shadow:0 25px 50px -12px #00000080}.lightbox-caption[data-astro-cid-fcyb6yui]{color:#fffc;font-size:.875rem;line-height:1.5;text-align:center;margin-top:1rem;max-width:36rem;margin-left:auto;margin-right:auto}
187.code-block-content pre{margin:0;padding:1rem;background:transparent!important;font-size:.875rem;line-height:1.7}@media (min-width: 768px){.code-block-content pre{padding:1.5rem}}.code-block-content code{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.code-block-content.show-line-numbers pre{counter-reset:line}.code-block-content.show-line-numbers .line:before{counter-increment:line;content:counter(line);display:inline-block;width:2rem;margin-right:1rem;text-align:right;color:#71717a}
188.bg-warning-banner{background-color:color-mix(in srgb,var(--color-honey-50) 60%,transparent)}.banner-content p,.banner-content strong,.banner-content em,.banner-content a,.banner-content span,.banner-content code{color:inherit!important;font-size:inherit!important}.banner-content p:last-of-type{margin-bottom:0!important}.prose .banner-content p,.prose .banner-content strong,.prose .banner-content em,.prose .banner-content a,.prose .banner-content span,.prose .banner-content code{color:inherit!important;font-size:inherit!important}.prose .banner-content p:last-of-type{margin-bottom:0!important}
189.campaign-offer-banner[data-astro-cid-ukinoyt4].hidden{display:none}.campaign-offer-banner[data-astro-cid-ukinoyt4].is-visible{display:block}
189.campaign-offer-banner[data-astro-cid-ukinoyt4].is-dismissing{transition:opacity .2s ease-out,max-height .2s ease-out,padding .2s ease-out;opacity:0;max-height:0;padding-top:0;padding-bottom:0}
190.btn-arrow-wrap{position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden}.btn-arrow-icon{will-change:transform}.btn-arrow-icon.slide-in{animation:btn-arrow-slide-in .2s ease-in-out forwards}.btn-arrow-icon.slide-out{animation:btn-arrow-slide-out .2s ease-in-out forwards}@keyframes btn-arrow-slide-in{0%{transform:translate(0);opacity:1}50%{transform:translate(100%);opacity:0}50.01%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes btn-arrow-slide-out{0%{transform:translate(0);opacity:1}50%{transform:translate(-100%);opacity:0}50.01%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}
191</style>
191<script type="module" src="/_astro/hoisted.BaopxmOR.js"></script>
vendor: 1 bytes, line 191
191
192<script type="module" src="/_astro/page.SrI4KvC9.js"></script>
192<script src="/_astro/Carousel.astro_astro_type_script_index_0_lang.B67nIeQ3.js" type="module"></script>
192<script src="/_astro/index.astro_astro_type_script_index_0_lang.C7CMHlP6.js" type="module"></script>
192<script src="/_astro/BackToBlogButton.astro_astro_type_script_index_0_lang.BTDMzPQk.js" type="module"></script>
192<script src="/_astro/HorizontalScroll.astro_astro_type_script_index_0_lang.DhdA3_ZH.js" type="module"></script>
192<script src="/_astro/Accordion.astro_astro_type_script_index_0_lang.DUPnZFt0.js" type="module"></script>
192<script src="/_astro/AnimatedNumber.astro_astro_type_script_index_0_lang.DiLzjbdR.js" type="module"></script>
192<script src="/_astro/AttributionProvider.astro_astro_type_script_index_0_lang.CONL_cQN.js" type="module"></script>
192<script src="/_astro/CampaignAttribution.astro_astro_type_script_index_0_lang.C5MTLdpH.js" type="module"></script>
192<script src="/_astro/HeroLogoScatter.astro_astro_type_script_index_0_lang.DPA_kUae.js" type="module"></script>
192<script src="/_astro/PersonalizationProvider.astro_astro_type_script_index_0_lang.9No35mQv.js" type="module"></script>
192<script src="/_astro/PersonalizedModal.astro_astro_type_script_index_0_lang.NHXdZ2Ld.js" type="module"></script>
192<script src="/_astro/PersonalizedIntercom.astro_astro_type_script_index_0_lang.Cx6CJISi.js" type="module"></script>
192<script src="/_astro/AnimatedUnderline.astro_astro_type_script_index_0_lang.0s19GudC.js" type="module"></script>
192<script src="/_astro/Select.astro_astro_type_script_index_0_lang.B0QIBLoc.js" type="module"></script>
192<script src="/_astro/PhoneInput.astro_astro_type_script_index_0_lang.95tY0pxw.js" type="module"></script>
192<script src="/_astro/Lightbox.astro_astro_type_script_index_0_lang.B5qU3jcM.js" type="module"></script>
192<script src="/_astro/ProgressBar.astro_astro_type_script_index_0_lang.DZB6HqlH.js" type="module"></script>
192<script src="/_astro/StatsBlock.astro_astro_type_script_index_0_lang.DIfLLOg2.js" type="module"></script>
192<script src="/_astro/CountdownTimer.astro_astro_type_script_index_0_lang.C7bnPoTa.js" type="module"></script>
192<script src="/_astro/FlipCountdown.astro_astro_type_script_index_0_lang.BJHLpb-p.js" type="module"></script>
192<script src="/_astro/FilterDropdown.astro_astro_type_script_index_0_lang.CDPXChMo.js" type="module"></script>
192<script src="/_astro/index.astro_astro_type_script_index_0_lang.zff9A3ip.js" type="module"></script>
192<script src="/_astro/Footer.astro_astro_type_script_index_0_lang.CvqvulG3.js" type="module"></script>
192<script src="/_astro/CustomerLogoGrid.astro_astro_type_script_index_0_lang.DHap_pOY.js" type="module"></script>
192<script src="/_astro/Navbar.astro_astro_type_script_index_0_lang.D9H0g9Xi.js" type="module"></script>
192<script src="/_astro/TestimonialSection.astro_astro_type_script_index_0_lang.DdsFcpa0.js" type="module"></script>
192<script src="/_astro/BookDemoHero.astro_astro_type_script_index_0_lang.BmWJMuzU.js" type="module"></script>
192<script src="/_astro/Tabs.astro_astro_type_script_index_0_lang.yml2lhxm.js" type="module"></script>
192<script src="/_astro/Pagination.astro_astro_type_script_index_0_lang.CJlGM6u6.js" type="module"></script>
192<script src="/_astro/BlogPostSidebar.astro_astro_type_script_index_0_lang.CXd27PrM.js" type="module"></script>
192<script src="/_astro/LogoQuoteCarousel.astro_astro_type_script_index_0_lang.uqbLt6h0.js" type="module"></script>
192<script src="/_astro/IntegrationBento.astro_astro_type_script_index_0_lang.BnJtnno8.js" type="module"></script>
192<script src="/_astro/Banner.astro_astro_type_script_index_0_lang.BhAmXWHC.js" type="module"></script>
192<script src="/_astro/CampaignOfferBanner.astro_astro_type_script_index_0_lang.Dz3tN17E.js" type="module"></script>
192<script src="/_astro/CurrencyProvider.astro_astro_type_script_index_0_lang._hfMJyOE.js" type="module"></script>
192<script src="/_astro/NativeHubSpotForm.astro_astro_type_script_index_0_lang.-2MM8nji.js" type="module"></script>
192</head> <body class="bg-white overscroll-y-none font-sans w-full overflow-x-clip"> <!-- Google Tag Manager (noscript) -->
vendor: 67 bytes, line 192
192<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
192GTM-THP98M8
vendor: 83 bytes, line 192
192" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> 
192<aside id="referral-offer-banner" class="referral-offer-banner hidden relative z-[60] w-full overflow-hidden border-b border-white/10 bg-[var(--color-lavender-600)] text-white" role="region" aria-label="Referral offer" hidden data-astro-cid-nahiwob6> <div class="pointer-events-none absolute inset-0 opacity-90" aria-hidden="true" style="background-image: linear-gradient(120deg, var(--color-lavender-600) 0%, var(--color-palatinate-500) 50%, var(--color-lavender-500) 100%);" data-astro-cid-nahiwob6></div> <div class="pointer-events-none absolute inset-0 opacity-50 mix-blend-overlay" aria-hidden="true" style="background-image: radial-gradient(circle at 15% 50%, rgba(255,255,255,0.35) 0, transparent 35%), radial-gradient(circle at 85% 50%, rgba(255,255,255,0.25) 0, transparent 40%);" data-astro-cid-nahiwob6></div> <div class="relative px-4 sm:px-6 lg:px-16" data-astro-cid-nahiwob6> <div class="mx-auto flex max-w-7xl items-center gap-3 py-2.5 sm:gap-4 sm:py-3" data-astro-cid-nahiwob6> <span class="hidden h-9 w-9 shrink-0 items-center justify-center rounded-full bg-white/15 ring-1 ring-inset ring-white/25 backdrop-blur-sm sm:inline-flex" aria-hidden="true" data-astro-cid-nahiwob6> <svg width="20" height="20" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M6.25 4.41667C6.25 3.08198 7.33198 2 8.66667 2C10.043 2 11.2603 2.68092 12 3.72427C12.7397 2.68092 13.957 2 15.3333 2C16.668 2 17.75 3.08198 17.75 4.41667C17.75 5.39677 17.4047 6.29622 16.8291 7H18.875C20.0486 7 21 7.9514 21 9.125C21 10.2986 20.0486 11.25 18.875 11.25H12.75V7H13.6667C15.0934 7 16.25 5.8434 16.25 4.41667C16.25 3.91041 15.8396 3.5 15.3333 3.5C13.9066 3.5 12.75 4.6566 12.75 6.08333V7H11.25V6.08333C11.25 4.6566 10.0934 3.5 8.66667 3.5C8.16041 3.5 7.75 3.91041 7.75 4.41667C7.75 5.8434 8.9066 7 10.3333 7H11.25V11.25H5.125C3.95139 11.25 3 10.2986 3 9.125C3 7.9514 3.95139 7 5.125 7H7.1709C6.5953 6.29622 6.25 5.39677 6.25 4.41667Z" fill="currentColor"/><path d="M12.75 12.75H20V18.25C20 19.7688 18.7688 21 17.25 21H12.75V12.75Z" fill="currentColor"/><path d="M11.25 12.75H4V18.25C4 19.7688 5.23122 21 6.75 21H11.25V12.75Z" fill="currentColor"/></svg>
193 </span> <div class="flex flex-1 flex-wrap items-center gap-x-2 gap-y-0.5 text-sm sm:text-base" data-astro-cid-nahiwob6> <span class="inline-flex sm:hidden" aria-hidden="true" data-astro-cid-nahiwob6> <svg width="18" height="18" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M6.25 4.41667C6.25 3.08198 7.33198 2 8.66667 2C10.043 2 11.2603 2.68092 12 3.72427C12.7397 2.68092 13.957 2 15.3333 2C16.668 2 17.75 3.08198 17.75 4.41667C17.75 5.39677 17.4047 6.29622 16.8291 7H18.875C20.0486 7 21 7.9514 21 9.125C21 10.2986 20.0486 11.25 18.875 11.25H12.75V7H13.6667C15.0934 7 16.25 5.8434 16.25 4.41667C16.25 3.91041 15.8396 3.5 15.3333 3.5C13.9066 3.5 12.75 4.6566 12.75 6.08333V7H11.25V6.08333C11.25 4.6566 10.0934 3.5 8.66667 3.5C8.16041 3.5 7.75 3.91041 7.75 4.41667C7.75 5.8434 8.9066 7 10.3333 7H11.25V11.25H5.125C3.95139 11.25 3 10.2986 3 9.125C3 7.9514 3.95139 7 5.125 7H7.1709C6.5953 6.29622 6.25 5.39677 6.25 4.41667Z" fill="currentColor"/><path d="M12.75 12.75H20V18.25C20 19.7688 18.7688 21 17.25 21H12.75V12.75Z" fill="currentColor"/><path d="M11.25 12.75H4V18.25C4 19.7688 5.23122 21 6.75 21H11.25V12.75Z" fill="currentColor"/></svg>
194 </span> <span class="font-semibold tracking-tight" data-astro-cid-nahiwob6>
195You've been referred — enjoy <span class="whitespace-nowrap" data-astro-cid-nahiwob6>15% off</span> your first purchase
196</span> <span class="hidden text-white/80 sm:inline" data-astro-cid-nahiwob6>
197Applied automatically when you subscribe.
198</span> </div> <a href="https://app.snitcher.com/register" class="hidden shrink-0 items-center gap-1.5 rounded-full bg-white px-4 py-1.5 text-sm font-semibold text-lavender-700 shadow-sm transition-colors hover:bg-zinc-100 sm:inline-flex" data-referral-cta data-astro-cid-nahiwob6>
199Start free
200<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" width="14" height="14" aria-hidden="true" data-astro-cid-nahiwob6> <path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-nahiwob6></path> </svg> </a> <button type="button" class="referral-offer-dismiss group shrink-0 rounded-full p-1.5 text-white/80 transition-colors hover:bg-white/15 hover:text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/60" aria-label="Dismiss referral offer" data-astro-cid-nahiwob6> <svg width="18" height="18" class="text-current" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M17.2197 5.71967C17.5126 5.42678 17.9873 5.42678 18.2802 5.71967C18.5731 6.01256 18.5731 6.48732 18.2802 6.78022L13.0605 11.9999L18.2802 17.2197C18.5731 17.5126 18.5731 17.9873 18.2802 18.2802C17.9873 18.5731 17.5126 18.5731 17.2197 18.2802L11.9999 13.0605L6.78022 18.2802C6.48732 18.5731 6.01256 18.5731 5.71967 18.2802C5.42678 17.9873 5.42678 17.5126 5.71967 17.2197L10.9394 11.9999L5.71967 6.78022C5.42678 6.48732 5.42678 6.01256 5.71967 5.71967C6.01256 5.42678 6.48732 5.42678 6.78022 5.71967L11.9999 10.9394L17.2197 5.71967Z" fill="currentColor"/></svg>
201 </button> </div> </div> </aside>   <aside id="campaign-offer-banner" class="campaign-offer-banner hidden relative z-[60] w-full overflow-hidden border-b border-white/10 bg-[var(--color-lavender-600)] text-white" role="region" aria-label="Campaign offer" hidden data-astro-cid-ukinoyt4> <div class="pointer-events-none absolute inset-0 opacity-90" aria-hidden="true" style="background-image: linear-gradient(120deg, var(--color-lavender-600) 0%, var(--color-palatinate-500) 50%, var(--color-lavender-500) 100%);" data-astro-cid-ukinoyt4></div> <div class="pointer-events-none absolute inset-0 opacity-50 mix-blend-overlay" aria-hidden="true" style="background-image: radial-gradient(circle at 15% 50%, rgba(255,255,255,0.35) 0, transparent 35%), radial-gradient(circle at 85% 50%, rgba(255,255,255,0.25) 0, transparent 40%);" data-astro-cid-ukinoyt4></div> <div class="relative px-4 sm:px-6 lg:px-16" data-astro-cid-ukinoyt4> <div class="mx-auto flex max-w-7xl items-center gap-3 py-2.5 sm:gap-4 sm:py-3" data-astro-cid-ukinoyt4> <span class="hidden h-9 w-9 shrink-0 items-center justify-center rounded-full bg-white/15 ring-1 ring-inset ring-white/25 backdrop-blur-sm sm:inline-flex" aria-hidden="true" data-astro-cid-ukinoyt4> <svg width="20" height="20" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M6.25 4.41667C6.25 3.08198 7.33198 2 8.66667 2C10.043 2 11.2603 2.68092 12 3.72427C12.7397 2.68092 13.957 2 15.3333 2C16.668 2 17.75 3.08198 17.75 4.41667C17.75 5.39677 17.4047 6.29622 16.8291 7H18.875C20.0486 7 21 7.9514 21 9.125C21 10.2986 20.0486 11.25 18.875 11.25H12.75V7H13.6667C1
2015.0934 7 16.25 5.8434 16.25 4.41667C16.25 3.91041 15.8396 3.5 15.3333 3.5C13.9066 3.5 12.75 4.6566 12.75 6.08333V7H11.25V6.08333C11.25 4.6566 10.0934 3.5 8.66667 3.5C8.16041 3.5 7.75 3.91041 7.75 4.41667C7.75 5.8434 8.9066 7 10.3333 7H11.25V11.25H5.125C3.95139 11.25 3 10.2986 3 9.125C3 7.9514 3.95139 7 5.125 7H7.1709C6.5953 6.29622 6.25 5.39677 6.25 4.41667Z" fill="currentColor"/><path d="M12.75 12.75H20V18.25C20 19.7688 18.7688 21 17.25 21H12.75V12.75Z" fill="currentColor"/><path d="M11.25 12.75H4V18.25C4 19.7688 5.23122 21 6.75 21H11.25V12.75Z" fill="currentColor"/></svg>
202 </span> <div class="flex flex-1 flex-wrap items-center gap-x-2 gap-y-0.5 text-sm sm:text-base" data-astro-cid-ukinoyt4> <span class="inline-flex sm:hidden" aria-hidden="true" data-astro-cid-ukinoyt4> <svg width="18" height="18" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M6.25 4.41667C6.25 3.08198 7.33198 2 8.66667 2C10.043 2 11.2603 2.68092 12 3.72427C12.7397 2.68092 13.957 2 15.3333 2C16.668 2 17.75 3.08198 17.75 4.41667C17.75 5.39677 17.4047 6.29622 16.8291 7H18.875C20.0486 7 21 7.9514 21 9.125C21 10.2986 20.0486 11.25 18.875 11.25H12.75V7H13.6667C15.0934 7 16.25 5.8434 16.25 4.41667C16.25 3.91041 15.8396 3.5 15.3333 3.5C13.9066 3.5 12.75 4.6566 12.75 6.08333V7H11.25V6.08333C11.25 4.6566 10.0934 3.5 8.66667 3.5C8.16041 3.5 7.75 3.91041 7.75 4.41667C7.75 5.8434 8.9066 7 10.3333 7H11.25V11.25H5.125C3.95139 11.25 3 10.2986 3 9.125C3 7.9514 3.95139 7 5.125 7H7.1709C6.5953 6.29622 6.25 5.39677 6.25 4.41667Z" fill="currentColor"/><path d="M12.75 12.75H20V18.25C20 19.7688 18.7688 21 17.25 21H12.75V12.75Z" fill="currentColor"/><path d="M11.25 12.75H4V18.25C4 19.7688 5.23122 21 6.75 21H11.25V12.75Z" fill="currentColor"/></svg>
203 </span> <a href="#" class="font-semibold tracking-tight hover:underline" data-campaign-headline data-astro-cid-ukinoyt4></a> <span class="hidden text-white sm:inline" data-campaign-detail data-astro-cid-ukinoyt4></span> <span class="whitespace-nowrap font-semibold text-white" data-campaign-countdown data-astro-cid-ukinoyt4></span> </div> <a href="#" class="hidden shrink-0 items-center gap-1.5 rounded-full bg-white px-4 py-1.5 text-sm font-semibold text-lavender-700 shadow-sm transition-colors hover:bg-zinc-100 sm:inline-flex" data-campaign-cta data-astro-cid-ukinoyt4> <span data-campaign-cta-label data-astro-cid-ukinoyt4>Claim offer</span> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" width="14" height="14" aria-hidden="true" data-astro-cid-ukinoyt4> <path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-ukinoyt4></path> </svg> </a> <button type="button" class="campaign-offer-dismiss group shrink-0 rounded-full p-1.5 text-white/80 transition-colors hover:bg-white/15 hover:text-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/60" aria-label="Dismiss campaign offer" data-astro-cid-ukinoyt4> <svg width="18" height="18" class="text-current" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M17.2197 5.71967C17.5126 5.42678 17.9873 5.42678 18.2802 5.71967C18.5731 6.01256 18.5731 6.48732 18.2802 6.78022L13.0605 11.9999L18.2802 17.2197C18.5731 17.5126 18.5731 17.9873 18.2802 18.2802C17.9873 18.5731 17.5126 18.5731 17.2197 18.2802L11.9999 13.0605L6.78022 18.2802C6.48732 18.5731 6.01256 18.5731 5.71967 18.2802C5.42678 17.9873 5.42678 17.5126 5.71967 17.2197L10.9394 11.9999L5.71967 6.78022C5.42678 6.48732 5.42678 6.01256 5.71967 5.71967C6.01256 5.42678 6.48732 5.42678 6.78022 5.71967L11.9999 10.9394L17.2197 5.71967Z" fill="currentColor"/></svg>
204 </button> </div> </div> </aside> 
204<script type="application/json" id="campaign-offer-data">{"close":{"agency":{"path":"/lp/offer/close-crm/agencies","claimEndDate":"2026-09-30T23:59:59+02:00","signupUrl":"https://app.snitcher.com/register?utm_source=close&utm_medium=referral&utm_campaign=close-2026q3-offer-agency","ctaLabel":"Claim 1,200 leads per client","bannerHeadline":"Close agency offer: 1,200 free leads for every client you onboard","bannerDetail":"Plus 50% off Snitcher for life for your agency."},"end-user":{"path":"/lp/offer/close-crm","claimEndDate":"2026-09-30T23:59:59+02:00","signupUrl":"https://app.snitcher.com/register?utm_source=close&utm_medium=referral&utm_campaign=close-2026q3-offer-enduser","ctaLabel":"Claim 1,200 free leads","bannerHeadline":"Close customer offer: 1,200 free leads on any Snitcher plan","bannerDetail":"100 extra leads a month, for a year, on us."}}}</script>
204   <nav class="sticky top-0 z-50 w-full border-b transition-[border-color,box-shadow] duration-200" id="navbar" data-astro-cid-voiollt5> <!-- Background overlay --> <div id="navbar-bg" class="pointer-events-none absolute inset-0 z-0 opacity-0 transition-opacity duration-200 bg-white" data-astro-cid-voiollt5></div> <!-- Main navbar content --> <div class="relative z-10 w-full pt-4 pb-4" data-astro-cid-voiollt5> <div class="px-4 sm:px-6 lg:px-16" data-astro-cid-voiollt5> <div class="max-w-7xl mx-auto" data-astro-cid-voiollt5> <div class="relative flex items-center justify-between" data-astro-cid-voiollt5> <!-- Logo --> <div class="flex flex-1 items-center pointer-events-none" data-astro-cid-voiollt5> <a href="/" class="relative z-10 flex items-center gap-2.5 pointer-events-auto" data-astro-cid-voiollt5> <img src="/logo-symbol.svg" alt="Snitcher symbol" class="h-8 w-8 shrink-0 object-contain" loading="lazy" decoding="auto" data-astro-cid-voiollt5> <img src="/logo-wordmark.svg" alt="Snitcher" class="h-6 w-32 shrink-0 object-contain" loading="lazy" decoding="auto" data-astro-cid-voiollt5> </a> </div> <div class="absolute inset-0 hidden items-center lg:flex" data-astro-cid-voiollt5> <!-- Left nav group --> <div class="flex flex-1 items-center justify-end gap-1 xl:gap-2" data-astro-cid-voiollt5> <!-- Product Dropdown --> <div class="nav-dropdown-wrapper" data-dropdown="product" data-astro-cid-voiollt5> <button type="button" class="nav-link nav-link-dropdown" data-astro-cid-voiollt5>
205Product
206<span class="chevron-icon" data-astro-cid-voiollt5></span> </button> <div class="nav-dropdown-panel nav-dropdown-panel-wide bg-white" data-astro-cid-voiollt5> <div class="grid grid-cols-[320px_320px_192px] gap-x-6 px-6" data-astro-cid-voiollt5> <!-- Products Column --> <div class="flex flex-col gap-5 py-6" data-astro-cid-voiollt5> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>GTM Platform</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/platform" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-primary-500 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M3 5.75C3 4.23122 4.23122 3 5.75 3H8.25C8.66421 3 9 3.33579 9 3.75C9 4.16421 8.66421 4.5 8.25 4.5H5.75C5.05964 4.5 4.5 5.05964 4.5 5.75V8.25C4.5 8.66421 4.16421 9 3.75 9C3.33579 9 3 8.66421 3 8.25V5.75ZM15 3.75C15 3.33579 15.3358 3 15.75 3H18.25C19.7688 3 21 4.23122 21 5.75V8.25C21 8.66421 20.6642 9 20.25 9C19.8358 9 19.5 8.66421 19.5 8.25V5.75C19.5 5.05964 18.9404 4.5 18.25 4.5H15.75C15.3358 4.5 15 4.16421 15 3.75ZM7.75 8C8.16421 8 8.5 8.33579 8.5 8.75V10.25C8.5 10.6642 8.16421 11 7.75 11C7.33579 11 7 10.6642 7 10.25V8.75C7 8.33579 7.33579 8 7.75 8ZM12.25 8C12.6642 8 13 8.33579 13 8.75V11C13 12.4029 11.9501 13.5595 10.5928 13.7288C10.1818 13.78 9.80702 13.4884 9.75576 13.0773C9.70451 12.6663 9.99616 12.2915 10.4072 12.2403C11.023 12.1635 11.5 11.6369 11.5 11V8.75C11.5 8.33579 11.8358 8 12.25 8ZM16.25 8C16.6642 8 17 8.33579 17 8.75V10.25C17 10.6642 16.6642 11 16.25 11C15.8358 11 15.5 10.6642 15.5 10.25V8.75C15.5 8.33579 15.8358 8 16.25 8ZM8.3508 15.3218C8.5582 14.9632 9.017 14.8407 9.37554 15.0481C10.147 15.4944 11.0425 15.75 12 15.75C12.9575 15.75 13.853 15.4944 14.6245 15.0481C14.983 14.8407 15.4418 14.9632 15.6492 15.3218C15.8566 15.6803 15.7341 16.1391 15.3755 16.3465C14.3819 16.9213 13.2282 17.25 12 17.25C10.7718 17.25 9.61805 16.9213 8.62446 16.3465C8.26591 16.1391 8.14339 15.6803 8.3508 15.3218ZM3.75 15C4.16421 15 4.5 15.3358 4.5 15.75V18.25C4.5 18.9404 5.05964 19.5 5.75 19.5H8.25C8.66421 19.5 9 19.8358 9 20.25C9 20.6642 8.66421 21 8.25 21H5.75C4.23122 21 3 19.7688 3 18.25V15.75C3 15.3358 3.33579 15 3.75 15ZM20.25 15C20.6642 15 21 15.3358 21 15.75V18.25C21 19.7688 19.7688 21 18.25 21H15.75C15.3358 21 15 20.6642 15 20.25C15 19.8358 15.3358 19.5 15.75 19.5H18.25C18.9404 19.5 19.5 18.9404 19.5 18.25V15.75C19.5 15.3358 19.8358 15 20.25 15Z" fill="currentColor"/></svg>
207  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Platform </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Turn anonymous traffic into pipeline</span> </div> </a> </div> </div> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Powered by Snitcher</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/radar" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M4.30523 9.50117C3.86611 9.76669 3.33777 10 2.75 10C2.33579 10 2 9.66421 2 9.25C2 8.83579 2.33579 8.5 2.75 8.5C2.94339 8.5 3.19298 8.42081 3.52907 8.21758C3.86431 8.01487 4.20974 7.73714 4.6035 7.41762C4.61402 7.40908 4.62458 7.40051 4.63519 7.3919C5.00222 7.09399 5.41507 6.7589 5.8368 6.50087C6.26916 6.23634 6.79252 6 7.375 6C7.96055 6 8.4868 6.23456 8.9231 6.49968C9.35333 6.76112 9.77246 7.10128 10.1437 7.40254L10.1623 7.41763C10.5569 7.73789 10.9012 8.01573 11.2347 8.21876C11.5694 8.42254 11.814 8.5 12 8.5C12.1825 8.5 12.4248 8.42337 12.7589 8.21931C13.0916 8.01613 13.4353 7.73823 13.8304 7.41763L13.8429 7.40749C14.216 7.10467 14.6381 6.76215 15.0723 6.49914C15.5104 6.23375 16.038 6 16.625 6C17.2062 6 17.7284 6.23708 18.1592 6.50135C18.5775 6.75799 18.9878 7.09104 19.3531 7.38759L19.3901 7.41761C19.7835 7.73684 20.1294 8.01452 20.4654 8.21711C20.8021 8.42013 21.0537 8.5 21.25 8.5C21.6642 8.5 22 8.83579 22 9.25C22 9.66421 21.6642 10 21.25 10C20.661 10 20.1315 9.76737 19.6908 9.50164C19.2509 9.23638 18.8247 8.89051 18.4488 8.58549L18.445 8.58239C18.0493 8.26129 17.7063 7.98331 17.3747 7.7799C17.0415 7.57542 16.8025 7.5 16.625 7.5C16.4335 7.5 16.1852 7.57875 15.8495 7.78211C15.5147 7.98491 15.1695 8.26266 14.7756 8.58237L14.7473 8.60535C14.3791 8.90413 13.9647 9.24053 13.5408 9.49944C13.1074 9.76413 12.5833 10 12 10C11.4153 10 10.8898 9.76496 10.4546 9.49999C10.0267 9.23949 9.60936 8.90074 9.2393 8.6004L9.21708 8.58237C8.82269 8.26232 8.47811 7.9845 8.14415 7.78157C7.80905 7.57794 7.56305 7.5 7.375 7.5C7.19444 7.5 6.95344 7.57616 6.61965 7.78038C6.28742 7.98365 5.94399 8.26158 5.54867 8.58238L5.53954 8.58978C5.16532 8.89346 4.74163 9.23728 4.3
2070523 9.50117ZM4.30523 17.5012C3.86611 17.7667 3.33777 18 2.75 18C2.33579 18 2 17.6642 2 17.25C2 16.8358 2.33579 16.5 2.75 16.5C2.94339 16.5 3.19298 16.4208 3.52907 16.2176C3.86431 16.0149 4.20974 15.7371 4.6035 15.4176L4.6352 15.3919C5.00223 15.094 5.41507 14.7589 5.8368 14.5009C6.26916 14.2363 6.79252 14 7.375 14C7.96055 14 8.4868 14.2346 8.9231 14.4997C9.35334 14.7611 9.77247 15.1013 10.1437 15.4025L10.1623 15.4176C10.5569 15.7379 10.9012 16.0157 11.2347 16.2188C11.5694 16.4225 11.814 16.5 12 16.5C12.1825 16.5 12.4248 16.4234 12.7589 16.2193C13.0916 16.0161 13.4353 15.7382 13.8304 15.4176L13.8429 15.4075C14.216 15.1047 14.6381 14.7622 15.0723 14.4991C15.5104 14.2337 16.038 14 16.625 14C17.2062 14 17.7284 14.2371 18.1592 14.5014C18.5775 14.758 18.9878 15.091 19.3531 15.3876C19.3655 15.3976 19.3778 15.4076 19.3901 15.4176C19.7835 15.7368 20.1294 16.0145 20.4654 16.2171C20.8021 16.4201 21.0537 16.5 21.25 16.5C21.6642 16.5 22 16.8358 22 17.25C22 17.6642 21.6642 18 21.25 18C20.661 18 20.1315 17.7674 19.6908 17.5016C19.2509 17.2364 18.8247 16.8905 18.4488 16.5855L18.445 16.5824C18.0493 16.2613 17.7063 15.9833 17.3747 15.7799C17.0415 15.5754 16.8025 15.5 16.625 15.5C16.4335 15.5 16.1852 15.5788 15.8495 15.7821C15.5147 15.9849 15.1695 16.2627 14.7756 16.5824L14.7472 16.6054C14.3791 16.9041 13.9647 17.2405 13.5408 17.4994C13.1074 17.7641 12.5833 18 12 18C11.4153 18 10.8898 17.765 10.4546 17.5C10.0267 17.2395 9.60936 16.9007 9.2393 16.6004L9.21708 16.5824C8.82269 16.2623 8.47811 15.9845 8.14415 15.7816C7.80905 15.5779 7.56305 15.5 7.375 15.5C7.19444 15.5 6.95344 15.5762 6.61965 15.7804C6.28742 15.9837 5.94399 16.2616 5.54867 16.5824L5.53955 16.5898C5.16533 16.8935 4.74164 17.2373 4.30523 17.5012Z" fill="currentColor"/></svg>
208  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Radar </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Embed visitor intelligence in product</span> </div> </a><a href="/ip-to-company-api" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M2 12C2 6.47715 6.47715 2 12 2C17.5228 2 22 6.47715 22 12C22 17.5228 17.5228 22 12 22C6.47715 22 2 17.5228 2 12ZM14.5565 8.36774C15.2096 8.18959 15.809 8.78895 15.6309 9.44213L14.5114 13.5467C14.3833 14.0164 14.0164 14.3833 13.5467 14.5114L9.44213 15.6309C8.78894 15.809 8.18959 15.2096 8.36774 14.5565L9.48716 10.4519C9.61526 9.98221 9.98221 9.61526 10.4519 9.48715L14.5565 8.36774Z" fill="currentColor"/></svg>
209  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> IP to Company </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Resolve any IP to a company via API</span> </div> </a> </div> </div> </div> <!-- How It Works Column --> <div class="flex flex-col py-6" data-astro-cid-voiollt5> <span class="mb-3 px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>How It Works</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/identify" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M5.75 3C4.23122 3 3 4.23122 3 5.75V18.25C3 19.7688 4.23122 21 5.75 21H13.5833C13.568 20.9851 13.5528 20.9701 13.5377 20.955C11.4874 18.9047 11.4874 15.5806 13.5377 13.5303C15.5879 11.4801 18.9121 11.4801 20.9623 13.5303C20.975 13.543 20.9875 13.5557 21 13.5684V5.75C21 4.23122 19.7688 3 18.25 3H5.75ZM10.9896 7.15224C11.321 7.40077 11.3881 7.87087 11.1396 8.20224L9.26797 10.6978C9.02914 11.0162 8.58314 11.0926 8.25194 10.8718L7.12694 10.1218C6.7823 9.89203 6.68917 9.42637 6.91893 9.08173C7.1487 8.73708 7.61435 8.64395 7.95899 8.87372L8.49366 9.23016L9.9396 7.30224C10.1881 6.97087 10.6582 6.90371 10.9896 7.15224ZM13.058 9C13.058 8.58579 13.3937 8.25 13.808 8.25H16.308C16.7222 8.25 17.058 8.58579 17.058 9C17.058 9.41421 16.7222 9.75 16.308 9.75H13.808C13.3937 9.75 13.058 9.41421 13.058 9ZM10.9896 13.1534C11.321 13.4019 11.3881 13.872 11.1396 14.2034L9.26797 16.6989C9.02914 17.0173 8.58314 17.0937 8.25194 16.8729L7.12694 16.1229C6.7823 15.8932 6.68917 15.4275 6.91893 15.0829C7.14869 14.7382 7.61435 14.6451 7.95899 14.8748L8.49366 15.2313L9.9396 13.3034C10.1881 12.972 10.6582 12.9048 10.9896 13.1534Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M18.841 15.6517C17.9623 14.773 16.5377 14.773 15.659 15.6517C14.7803 16.5303 14.7803 17.955 15.659 18.8336C16.5377 19.7123 17.9623 19.7123 18.841 18.8336C19.7197 17.955 19.7197 16.5303 18.841 15.6517ZM14.5983 14.591C16.0628 13.1265 18.4372 13.1265 19.9016 14.591C21.1845 15.8738 21.3436 17.8549 20.3789 19.3109L21.7803 20.7123C22.0732 21.0052 22.0732 21.4801 21.7803 21.773C21.4874 22.0659 21.0126 22.0659 20.7197 21.773L19.3183 20.3716C17.8623 21.3362 15.8812 21.1771 14.5983 19.8943C13.1339 18.4298 13.1339 16.0555 14.5983 14.591Z" fill="currentColor"/></svg>
210  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Identify </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>See who visits your site</span> </div> </a><a href="/signal" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M11.5455 15.7345C9.45546 15.1509 7.58124 14.7024 5.5 15.5655V21.2496C5.5 21.6638 5.16421 21.9996 4.75 21.9996C4.33579 21.9996 4 21.6638 4 21.2496V4.39872C4 3.74584 4.37163 3.093 5.04245 2.82695C7.52875 1.84088 9.76493 2.37886 11.7734 2.93538C11.9051 2.97188 12.0357 3.00836 12.1653 3.04455C14.0634 3.57485 15.7401 4.04331 17.5642 3.60129C18.6368 3.34137 20 4.04343 20 5.38675V14.4616C20 15.1144 19.6284 15.7673 
21018.9576 16.0333C16.3236 17.078 13.9537 16.4115 11.8464 15.8189C11.7455 15.7906 11.6452 15.7623 11.5455 15.7345Z" fill="currentColor"/></svg>
211  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Signal </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Spot intent as it happens</span> </div> </a><a href="/automate" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M9.32916 2C8.70285 2 8.12428 2.33472 7.81208 2.87768L3.21208 10.8777C2.54125 12.0443 3.38339 13.5 4.72916 13.5H7.67252C7.83072 13.5 7.94915 13.6451 7.91745 13.8001L6.68268 19.8386C6.33503 21.5388 8.40755 22.6537 9.63464 21.4267L20.5739 10.4874C21.6763 9.385 20.8955 7.5 19.3364 7.5H16.8687C16.6828 7.5 16.562 7.30442 16.6451 7.1382L17.9479 4.53262C18.5296 3.36905 17.6835 2 16.3826 2H9.32916Z" fill="currentColor"/></svg>
212  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Automate </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Trigger workflows instantly</span> </div> </a><a href="/engage" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M1.46783 6.05797C0.265136 4.9889 1.02132 3 2.63047 3H21.2788C22.6218 3 23.4643 4.45027 22.799 5.61691L13.6528 21.6554C12.8643 23.038 10.7893 22.7356 10.4282 21.1855L8.36566 12.3316L14.9744 8.65542C15.3364 8.45407 15.4666 7.9974 15.2653 7.63542C15.0639 7.27344 14.6072 7.14322 14.2453 7.34458L7.27632 11.2211L1.46783 6.05797Z" fill="currentColor"/></svg>
213  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Engage </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Reach accounts at the right time</span> </div> </a><a href="/measure" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M3.75 3C4.16421 3 4.5 3.33579 4.5 3.75V15.3456L7.60248 12.2431C8.60731 11.2383 10.2364 11.2383 11.2413 12.2431C11.6603 12.6621 12.3397 12.6621 12.7587 12.2431L15.2117 9.79013C16.2856 8.71619 18.0269 8.71619 19.1008 9.79013L19.7491 10.4384C20.042 10.7313 20.042 11.2062 19.7491 11.4991C19.4562 11.792 18.9813 11.792 18.6884 11.4991L18.0401 10.8508C17.552 10.3626 16.7605 10.3626 16.2724 10.8508L13.8194 13.3038C12.8146 14.3086 11.1854 14.3086 10.1806 13.3038C9.76157 12.8847 9.08218 12.8847 8.66314 13.3038L4.5 17.4669V18.25C4.5 18.9404 5.05964 19.5 5.75 19.5H20.25C20.6642 19.5 21 19.8358 21 20.25C21 20.6642 20.6642 21 20.25 21H5.75C4.23122 21 3 19.7688 3 18.25V3.75C3 3.33579 3.33579 3 3.75 3Z" fill="currentColor"/></svg>
214  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Measure </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Prove &amp; scale what works best</span> </div> </a> </div> </div> <!-- Explore Column --> <div class="flex flex-col border-l pl-6 py-6 border-zinc-200" data-astro-cid-voiollt5> <span class="mb-3 px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Explore</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/changelog" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Changelog  </span> </a><a href="/integrations" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Integrations  </span> </a><a href="https://trust.snitcher.com" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Trust centre <svg width="14" height="14" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
215 </span> </a><a href="/demo" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Talk to sales  </span> </a> </div> </div> </div> </div> </div> <!-- Solutions Dropdown --> <div class="nav-dropdown-wrapper" data-dropdown="solutions" data-astro-cid-voiollt5> <button type="button" class="nav-link nav-link-dropdown" data-astro-cid-voiollt5>
216Solutions
217<span class="chevron-icon" data-astro-cid-voiollt5></span> </button> <div class="nav-dropdown-panel bg-white" data-astro-cid-voiollt5> <div class="grid grid-cols-[320px_240px] gap-x-6 px-6" data-astro-cid-voiollt5> <!-- Teams Column --> <div class="flex flex-col py-6" data-astro-cid-voiollt5> <span class="mb-3 px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Teams</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/solutions/sales" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M14.5634 13.5799C14.6 13.2593 14.4292 12.9316 14.1078 12.9024C14.102 12.9019 14.0961 12.9014 14.0903 12.9009L9.19669 12.5131C8.65686 12.4704 8.11351 12.5323 7.5996 12.6952L3.69783 13.932C3.28233 14.0637 3 14.4494 3 14.8852V20.0199C3 20.5721 3.44772 21.0199 4 21.0199H4.83831L4.85056 21.0237C4.95989 21.0574 5.11685 21.1047 5.31199 21.1604C5.70161 21.2716 6.24688 21.4174 6.87145 21.5561C8.09069 21.8267 9.72522 22.0966 11.0994 21.9661C12.5697 21.8264 14.3876 21.1358 15.958 20.4236C17.5608 19.6966 19.0337 18.8864 19.8515 18.4189C20.5815 18.0016 21 17.2562 21 16.472C21 14.9261 19.557 14.5558 18 15L15.5 15.75C14.5 17 13.9507 17.3157 12.3751 17.6528L11.1171 17.922C10.7369 18.0033 10.3614 17.7659 10.2718 17.3875C10.1795 16.9975 10.426 16.6078 10.8179 16.5239L12.0458 16.2612C13.4015 15.9711 14.4132 14.8936 14.5634 13.5799Z" fill="currentColor"/><path d="M18 7.5C18 9.433 16.433 11 14.5 11C12.567 11 11 9.433 11 7.5C11 5.567 12.567 4 14.5 4C16.433 4 18 5.567 18 7.5Z" fill="currentColor"/><path d="M12.0731 3.12743C10.5384 3.98106 9.5 5.61927 9.5 7.5C9.5 8.01995 9.57937 8.52136 9.72664 8.99278C9.65171 8.99757 9.57614 9 9.5 9C7.567 9 6 7.433 6 5.5C6 3.567 7.567 2 9.5 2C10.5175 2 11.4336 2.4342 12.0731 3.12743Z" fill="currentColor"/></svg>
218  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Sales </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Find &amp; close warm accounts</span> </div> </a><a href="/solutions/marketing" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M15.4348 2.83302C17.2037 2.28685 18.9961 3.60929 18.9961 5.46062V7.32497C20.7078 7.67242 21.9961 9.18574 21.9961 11C21.9961 12.8142 20.7078 14.327
2185 18.9961 14.6749V16.5393C18.9961 18.3906 17.2037 19.7131 15.4348 19.1669L13.2817 18.5021C12.7667 19.9564 11.3792 21 9.74609 21C7.67503 21 5.99609 19.321 5.99609 17.25V16.2526L3.93481 15.6162C2.78222 15.2603 1.99609 14.1949 1.99609 12.9886V9.01131C1.99609 7.80504 2.78222 6.73958 3.93481 6.38371L6.51034 5.5885C6.5212 5.58487 6.53218 5.58148 6.54326 5.57833L15.4348 2.83302ZM7.49609 16.7158V17.25C7.49609 18.4926 8.50345 19.5 9.74609 19.5C10.7025 19.5 11.5212 18.9029 11.8465 18.059L7.49609 16.7158ZM20.4961 11C20.4961 11.9796 19.87 12.813 18.9961 13.1219V8.87798C19.87 9.18686 20.4961 10.0203 20.4961 11ZM5.99829 7.31647V14.6834L4.37733 14.183C3.85342 14.0212 3.49609 13.5369 3.49609 12.9886V9.01131C3.49609 8.46301 3.85342 7.97871 4.37733 7.81695L5.99829 7.31647Z" fill="currentColor"/></svg>
219  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Marketing </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Turn traffic into pipeline</span> </div> </a><a href="/solutions/revops" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M6.64125 9.29847C8.49624 7.44348 11.5038 7.44348 13.3588 9.29847L13.7019 9.64161C14.4775 10.4172 14.9295 11.3963 15.0562 12.4071C15.1076 12.8181 14.8162 13.1931 14.4052 13.2445C13.9942 13.296 13.6193 13.0046 13.5678 12.5936C13.4811 11.9019 13.1729 11.2339 12.6413 10.7023L12.2981 10.3591C11.0289 9.08993 8.97111 9.08992 7.70191 10.3591L4.35876 13.7023C3.08956 14.9715 3.08956 17.0293 4.35876 18.2985L4.70191 18.6416C5.97111 19.9108 8.02888 19.9108 9.29809 18.6416L9.46965 18.4701C9.76253 18.1772 10.2374 18.1771 10.5303 18.47C10.8232 18.7629 10.8232 19.2378 10.5303 19.5307L10.3588 19.7023C8.50379 21.5572 5.49624 21.5573 3.64125 19.7023L3.2981 19.3591C1.44311 17.5041 1.44311 14.4966 3.2981 12.6416L6.64125 9.29847Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.6412 5.29847C15.4962 3.44348 18.5037 3.44348 20.3587 5.29847L20.7019 5.64161C22.5568 7.4966 22.5568 10.5041 20.7019 12.3591L17.3587 15.7023C15.5037 17.5573 12.4962 17.5573 10.6412 15.7023L10.298 15.3591C9.52244 14.5835 9.07043 13.6044 8.9438 12.5936C8.89232 12.1826 9.18376 11.8077 9.59476 11.7562C10.0058 11.7047 10.3807 11.9961 10.4322 12.4071C10.5188 13.0988 10.8271 13.7668 11.3587 14.2985L11.7019 14.6416C12.9711 15.9108 15.0288 15.9108 16.298 14.6416L19.6412 11.2985C20.9104 10.0293 20.9104 7.97148 19.6412 6.70228L19.298 6.35913C18.0288 5.08993 15.9711 5.08993 14.7019 6.35913L14.5304 6.53063C14.2375 6.82356 13.7627 6.82362 13.4697 6.53077C13.1768 6.23791 13.1767 5.76304 13.4696 5.47011L13.6412 5.29847Z" fill="currentColor"/></svg>
220  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> RevOps </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Unify your revenue data</span> </div> </a><a href="/solutions/agency" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M3.75 3C3.33579 3 3 3.33579 3 3.75V5C3 9.28021 6.46979 12.75 10.75 12.75H11.25V20.25C11.25 20.6642 11.5858 21 12 21C12.4142 21 12.75 20.6642 12.75 20.25V16H13.25C17.5302 16 21 12.5302 21 8.25V6.75C21 6.33579 20.6642 6 20.25 6H19C16.3562 6 14.0216 7.32382 12.6229 9.34475C11.9618 5.73541 8.80036 3 5 3H3.75Z" fill="currentColor"/></svg>
221  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Agency </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Prove ROI for every client</span> </div> </a> </div> </div> <!-- Use Cases Column --> <div class="flex flex-col border-l pl-6 py-6 border-zinc-200" data-astro-cid-voiollt5> <span class="mb-3 px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Use Cases</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/use-cases/account-scoring" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Account scoring </a><a href="/use-cases/contact-reveal" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Contact reveal </a><a href="/use-cases/enrich-ga4" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> GA4 enrichment </a><a href="/use-cases/lead-generation" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Lead generation </a><a href="/use-cases/marketing-attribution" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Marketing attribution </a><a href="/use-cases/visitor-identification" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Visitor identification </a> </div> </div> </div> </div> </div> </div> <!-- Center nav item (Resources) --> <div class="flex items-center shrink-0" data-astro-cid-voiollt5> <!-- Resources Dropdown --> <div class="nav-dropdown-wrapper" data-dropdown="resources" data-astro-cid-voiollt5> <button type="button" class="nav-link nav-link-dropdown" data-astro-cid-voiollt5>
222Resources
223<span class="chevron-icon" data-astro-cid-voiollt5></span> </button> <div class="nav-dropdown-panel bg-white" data-astro-cid-voiollt5> <div class="grid grid-cols-[320px_192px] gap-x-6 px-6" data-astro-cid-voiollt5> <!-- Left Column: Learn, Support, Partners --> <div class="flex flex-col gap-5 py-6" data-astro-cid-voiollt5> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Learn</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/blog" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M11.25 5.37706L5.34848 4.06118C3.63055 3.67813 2 4.98515 2 6.74526V17.0845C2 18.3727 2.89421 19.4883 4.15152 19.7686L11.25 21.3514V5.37706Z" fill="currentColor"/><path d="M12.75 5.37706V21.3514L19.8485 19.7686C21.1058 19.4883 22 18.3727 22 17.0845V6.74526C22 4.98515 20.3694 3.67813 18.6515 4.06118L12.75 5.37706Z" fill="currentColor"/></svg>
224  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="flex items-center gap-2" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Blog </span>  </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Read playbooks &amp; updates</span> </div> </a> </div> </div> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Support</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="https://docs.snitcher.com" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M12 7.25C12 8.76878 13.2312 10 14.75 10H20V19.25C20 20.7688 18.7688 22 17.25 22H6.75C5.23122 22 4 20.7688 4 19.25V4.75C4 3.23122 5.23122 2 6.75 2H12V7.25ZM8.75 17.5C8.33579 17.5 8 17.8358 8 18.25C8 18.6642 8.33579 19 8.75 19H15.25C15.6642 19 16 18.6642 16 18.25C16 17.8358 15.6642 17.5 15.25 17.5H8.75ZM8.75 13.5C8.33579 13.5 8 13.8358 8 14.25C8 14.6642 8.33579 15 8.75 15H12.25C12.6642 15 13 14.6642 13 14.25C13 13.8358 12.6642 13.5 12.25 13.5H8.75Z" fill="currentColor"/><path d="M13.5732 2.5127L19.4873 8.42676C19.5111 8.45056 19.5344 8.475 19.5566 8.5H14.75C14.0597 8.5 13.5 7.94032 13.5 7.25V2.44336C13.525 2.46564 13.5494 2.48889 13.5732 2.5127Z" fill="currentColor"/></svg>
225  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="flex items-center gap-2" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Documentation </span> <svg width="14" height="14" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
226 </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Set up &amp; integrate Snitcher</span> </div> </a><a href="https://help.snitcher.com" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-zinc-100 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.2324 8.35396C13.966 7.4249 14.5031 6.45579 15.4322 6.18939L16.8741 5.77593C17.8032 5.50953 18.7723 6.04672 19.0387 6.97577L22.2085 18.0303C22.4749 18.9593 21.9377 19.9285 21.0087 20.1949L19.5668 20.6083C18.6377 20.8747 17.6686 20.3375 17.4022 19.4085L14.2324 8.35396Z" fill="currentColor"/><path fill-rule="evenodd" clip-rule="evenodd" d="M8.75 3C7.7835 3 7 3.7835 7 4.75V19.25C7 20.2165 7.7835 21 8.75 21H12.25C13.2165 21 14 20.2165 14 19.25V4.75C14 3.7835 13.2165 3 12.25 3H8.75ZM8.5 7.75C8.5 7.33579 8.83579 7 9.25 7H11.75C12.1642 7 12.5 7.33579 12.5 7.75C12.5 8.16421 12.1642 8.5 11.75 8.5H9.25C8.83579 8.5 8.5 8.16421 8.5 7.75ZM12.5 16.25C12.5 15.8358 12.1642 15.5 11.75 15.5H9.25C8.83579 15.5 8.5 15.8358 8.5 16.25C8.5 16.6642 8.83579 17 9.25 17H11.75C12.1642 17 12.5 16.6642 12.5 16.25Z" fill="currentColor"/><path d="M3.75 5C2.7835 5 2 5.7835 2 6.75V19.25C2 20.2165 2.7835 21 3.75 21H4.25C5.2165 21 6 20.2165 6 19.25V6.75C6 5.7835 5.2165 5 4.25 5H3.75Z" fill="currentColor"/></svg>
227  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="flex items-center gap-2" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Help center </span> <svg width="14" height="14" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
228 </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Read our knowledge base</span> </div> </a> </div> </div> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Partners</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/partners" class="group flex items-center gap-3 rounded-xl p-3 no-underline transition-colors hover:bg-zinc-50" data-astro-cid-voiollt5> <div class="flex shrink-0 items-center justify-center overflow-hidden rounded-lg bg-jade
228-500 h-11 w-11 rounded-xl"> <div class="h-5 w-5">  <svg width="20" height="20" class="text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M9.5 4V3.5C9.5 2.11929 10.6193 1 12 1C13.3807 1 14.5 2.11929 14.5 3.5V4H18.25C19.7688 4 21 5.23122 21 6.75V9C21 9.27614 20.7761 9.5 20.5 9.5C19.1193 9.5 18 10.6193 18 12C18 13.3807 19.1193 14.5 20.5 14.5C20.7761 14.5 21 14.7239 21 15V17.25C21 18.7688 19.7688 20 18.25 20H5.75C4.23122 20 3 18.7688 3 17.25V6.75C3 5.23122 4.23122 4 5.75 4H9.5Z" fill="currentColor"/></svg>
229  </div> </div> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <span class="text-sm font-semibold transition-colors group-hover:text-primary-500 text-zinc-800" data-astro-cid-voiollt5> Partner Program </span> <span class="text-sm leading-5 text-zinc-700" data-astro-cid-voiollt5>Agency, Expert &amp; Creator programs</span> </div> </a> </div> </div> </div> <!-- Right Column: Company, Contact --> <div class="flex flex-col gap-5 border-l pl-6 py-6 border-zinc-200" data-astro-cid-voiollt5> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Company</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <a href="/about" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> About us </a><a href="/careers" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Careers </a> </div> </div> <div data-astro-cid-voiollt5> <span class="mb-3 block px-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Contact</span> <div class="flex flex-col gap-1" data-astro-cid-voiollt5> <button type="button" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 cursor-pointer text-left text-zinc-800 hover:bg-zinc-50" data-intercom-action="showNewMessage" data-astro-cid-voiollt5>
229 Chat to support </button><a href="/demo" class="group rounded-xl px-3 py-3 text-sm font-semibold no-underline transition-colors hover:text-primary-500 text-zinc-800 hover:bg-zinc-50" data-astro-cid-voiollt5> Talk to sales </a> </div> </div> </div> </div> </div> </div> </div> <!-- Right nav group --> <div class="flex flex-1 items-center gap-1 xl:gap-2" data-astro-cid-voiollt5> <a href="/customers" class="nav-link" data-astro-cid-voiollt5>
230Customers
231</a> <a href="/pricing" class="nav-link" data-astro-cid-voiollt5>
232Pricing
233</a> </div> </div> <!-- Action Buttons --> <div class="relative z-10 flex flex-1 items-center justify-end gap-2 pointer-events-none [&>*]:pointer-events-auto" data-astro-cid-voiollt5>  <button id="mobile-menu-toggle" type="button" class="relative inline-flex h-10 items-center justify-center gap-2 rounded-full border border-[var(--alpha-border)] px-4 text-base font-semibold shadow transition-colors lg:hidden bg-white text-zinc-700 hover:bg-zinc-50" aria-expanded="false" aria-controls="mobile-menu" data-astro-cid-voiollt5> <span class="relative flex h-6 w-6 items-center justify-center" data-astro-cid-voiollt5> <svg id="hamburger-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" class="absolute h-6 w-6 transition-opacity duration-200" data-astro-cid-voiollt5> <path d="M2.75 12H21.25M2.75 5.75H21.25M2.75 18.25H21.25" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-voiollt5></path> </svg> <svg id="close-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" class="absolute h-5 w-5 opacity-0 transition-opacity duration-200" data-astro-cid-voiollt5> <path d="M18 6L6 18M6 6L18 18" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" data-astro-cid-voiollt5></path> </svg> </span> <span class="relative" data-astro-cid-voiollt5> <span id="menu-label" data-astro-cid-voiollt5>Menu</span> <span id="close-label" class="absolute left-0 opacity-0 transition-opacity duration-200" data-astro-cid-voiollt5>Close</span> </span> </button> <a href="https://app.snitcher.com/login" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50 hidden lg:inline-flex" data-astro-cid-voiollt5>Log in</a>
233<script>
234  (function() {
235    function initButtonArrows() {
236      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
237        if (button.dataset.btnArrowInit) return;
238        button.dataset.btnArrowInit = 'true';
239        
240        var icon = button.querySelector('.btn-arrow-icon');
241        if (!icon) return;
242        
243        button.addEventListener('mouseenter', function() {
244          icon.classList.remove('slide-out');
245          icon.classList.add('slide-in');
246        });
247        
248        button.addEventListener('mouseleave', function() {
249          icon.classList.remove('slide-in');
250          icon.classList.add('slide-out');
251        });
252      });
253    }
254
255    if (document.readyState === 'loading') {
256      document.addEventListener('DOMContentLoaded', initButtonArrows);
257    } else {
258      initButtonArrows();
259    }
260    
261    document.addEventListener('astro:page-load', initButtonArrows);
262  })();
263</script>
263   <a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-primary-500 !text-white hover:bg-primary-600 !pl-3 hidden lg:inline-flex"> <svg width="20" height="20" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" class="shrink-0" aria-hidden="true"> <path d="M211.265 148.37C187.598 224.219 123.858 249.286 104.886 255.161C89.5631 259.93 84.2516 243.014 99.6384 238.244C116.524 233.017 173.258 210.709 194.355 143.094C205.691 106.783 186.837 68.5577 152.325 57.79C117.074 46.7923 80.2423 68.8045 69.2412 104.054C67.5848 109.361 63.152 113.363 58.9333 113.363C52.8997 113.363 50.3043 105.281 52.3341 98.7783C66.1181 54.6057 112.724 26.8804 157.601 40.8841C202.129 54.7776 225.257 103.517 211.265 148.37ZM168.681 5.37712C102.536 -15.2639 36.1026 25.9353 16.8302 87.6986C7.05086 119.034 28.0846 150.559 58.9017 150.559C79.3873 150.559 98.2403 135.991 104.747 115.134C109.855 98.7636 126.062 88.5621 141.246 93.2947C156.164 97.95 164.06 115.32 158.854 132.015C145.032 176.301 103.905 207.232 58.8369 207.236H58.8306C53.1805 207.236 47.4893 206.748 41.9193 205.783C26.0231 203.042 23.0907 220.506 38.9072 223.237C45.4654 224.373 52.1665 224.95 58.822 224.95C111.569 224.95 159.656 188.902 175.758 137.291C183.809 111.494 170.991 84.021 146.522 76.39C121.831 68.6852 95.7658 84.4535 87.8419 109.858C83.6147 123.396 71.7306 132.852 58.9427 132.852C40.047 132.852 27.4971 112.952 33.7365 92.9742C51.7151 35.4079 111.149 5.98231 163.405 22.2851C217.821 39.2652 247.198 98.6229 229.863 154.174C220.278 184.887 202.64 212.731 179.141 234.367C167.297 245.262 179.436 258.135 191.286 247.224C217.073 223.484 236.259 193.132 246.77 159.45C267.275 93.7541 231.625 25.0164 168.681 5.37712ZM58.6439 187.8C95.3789 187.8 128.937 162.473 140.255 126.211C142.694 118.381 139.514 113.349 135.392 112.062C131.306 110.787 125.784 113.124 123.348 120.937C114.327 149.843 87.7136 170.032 58.6287 170.032C44.0506 170.032 30.2484 164.946 18.717 155.324C6.35199 145.002 -4.98893 158.544 7.38454 168.884C22.2568 181.257 39.9787 187.797 58.6349 187.8H58.6439Z" fill="currentColor"></path> </svg> <span>Start for free</span> </a>
263<script>
264  (function() {
265    function initButtonArrows() {
266      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
267        if (button.dataset.btnArrowInit) return;
268        button.dataset.btnArrowInit = 'true';
269        
270        var icon = button.querySelector('.btn-arrow-icon');
271        if (!icon) return;
272        
273        button.addEventListener('mouseenter', function() {
274          icon.classList.remove('slide-out');
275          icon.classList.add('slide-in');
276        });
277        
278        button.addEventListener('mouseleave', function() {
279          icon.classList.remove('slide-in');
280          icon.classList.add('slide-out');
281        });
282      });
283    }
284
285    if (document.readyState === 'loading') {
286      document.addEventListener('DOMContentLoaded', initButtonArrows);
287    } else {
288      initButtonArrows();
289    }
290    
291    document.addEventListener('astro:page-load', initButtonArrows);
292  })();
293</script>
293 </div> </div> </div> </div> <div id="mobile-menu" class="absolute left-0 right-0 top-full z-40 max-h-[calc(100dvh-64px)] overflow-hidden rounded-b-2xl shadow-lg transition-[height] duration-300 ease-out lg:hidden bg-white" style="height: 0;" data-astro-cid-voiollt5> <div class="mobile-menu-scroll h-full px-6 pb-6 pt-4" data-astro-cid-voiollt5> <nav class="mb-6 space-y-2" data-astro-cid-voiollt5> <!-- Product dropdown --> <div class="mobile-dropdown" data-astro-cid-voiollt5> <button type="button" class="mobile-nav-link mobile-dropdown-toggle" aria-expanded="false" data-astro-cid-voiollt5>
294Product
295<span class="mobile-chevron" data-astro-cid-voiollt5></span> </button> <div class="mobile-submenu" data-astro-cid-voiollt5> <span class="block px-4 py-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>GTM Platform</span> <a href="/platform" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Platform </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Powered by Snitcher</span> <a href="/radar" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Radar </a><a href="/ip-to-company-api" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> IP to Company </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>How It Works</span> <a href="/identify" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Identify </a><a href="/signal" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Signal </a><a href="/automate" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Automate </a><a href="/engage" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Engage </a><a href="/measure" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Measure </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Explore</span> <a href="/changelog" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Changelog  </span> </a><a href="/integrations" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Integrations  </span> </a><a href="https://trust.snitcher.com" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Trust centre <svg width="16" height="16" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
296 </span> </a><a href="/demo" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Talk to sales  </span> </a> </div> </div> <!-- Solutions dropdown --> <div class="mobile-dropdown" data-astro-cid-voiollt5> <button type="button" class="mobile-nav-link mobile-dropdown-toggle" aria-expanded="false" data-astro-cid-voiollt5>
297Solutions
298<span class="mobile-chevron" data-astro-cid-voiollt5></span> </button> <div class="mobile-submenu" data-astro-cid-voiollt5> <span class="block px-4 py-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Teams</span> <a href="/solutions/sales" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Sales </a><a href="/solutions/marketing" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Marketing </a><a href="/solutions/revops" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> RevOps </a><a href="/solutions/agency" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Agency </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Use Cases</span> <a href="/use-cases/account-scoring" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Account scoring </a><a href="/use-cases/contact-reveal" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Contact reveal </a><a href="/use-cases/enrich-ga4" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> GA4 enrichment </a><a href="/use-cases/lead-generation" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Lead generation </a><a href="/use-cases/marketing-attribution" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Marketing attribution </a><a href="/use-cases/visitor-identification" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Visitor identification </a> </div> </div> <!-- Resources dropdown --> <div class="mobile-dropdown" data-astro-cid-voiollt5> <button type="button" class="mobile-nav-link mobile-dropdown-toggle" aria-expanded="false" data-astro-cid-voiollt5>
299Resources
300<span class="mobile-chevron" data-astro-cid-voiollt5></span> </button> <div class="mobile-submenu" data-astro-cid-voiollt5> <span class="block px-4 py-1 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Learn</span> <a href="/blog" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Blog  </span> </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Support</span> <a href="https://docs.snitcher.com" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Documentation <svg width="16" height="16" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
301 </span> </a><a href="https://help.snitcher.com" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" target="_blank" rel="noopener noreferrer" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Help center <svg width="16" height="16" class="text-zinc-400" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path d="M18.25 15.25V5.75M18.25 5.75H8.75M18.25 5.75L6 18" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
302 </span> </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Partners</span> <a href="/partners" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> <span class="inline-flex items-center gap-1.5" data-astro-cid-voiollt5> Partner Program  </span> </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Company</span> <a href="/about" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> About us </a><a href="/careers" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Careers </a> <span class="block px-4 pb-1 pt-3 eyebrow text-xs text-zinc-400" data-astro-cid-voiollt5>Contact</span> <button type="button" class="block rounded-lg px-4 py-2.5 text-base min-h-8 w-full text-left cursor-pointer hover:bg-zinc-50" data-intercom-action="showNewMessage" data-astro-cid-voiollt5>
302 Chat to support </button><a href="/demo" class="block rounded-lg px-4 py-2.5 text-base min-h-8 hover:bg-zinc-50" data-astro-cid-voiollt5> Talk to sales </a> </div> </div> <!-- Direct links --> <a href="/customers" class="mobile-nav-link" data-astro-cid-voiollt5>
303Customers
304</a> <a href="/pricing" class="mobile-nav-link mobile-nav-link-active" data-astro-cid-voiollt5>
305Pricing
306</a> </nav> <div class="flex flex-col gap-2" data-astro-cid-voiollt5> <a href="https://app.snitcher.com/login" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50 w-full justify-center" data-astro-cid-voiollt5>Log in</a>
306<script>
307  (function() {
308    function initButtonArrows() {
309      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
310        if (button.dataset.btnArrowInit) return;
311        button.dataset.btnArrowInit = 'true';
312        
313        var icon = button.querySelector('.btn-arrow-icon');
314        if (!icon) return;
315        
316        button.addEventListener('mouseenter', function() {
317          icon.classList.remove('slide-out');
318          icon.classList.add('slide-in');
319        });
320        
321        button.addEventListener('mouseleave', function() {
322          icon.classList.remove('slide-in');
323          icon.classList.add('slide-out');
324        });
325      });
326    }
327
328    if (document.readyState === 'loading') {
329      document.addEventListener('DOMContentLoaded', initButtonArrows);
330    } else {
331      initButtonArrows();
332    }
333    
334    document.addEventListener('astro:page-load', initButtonArrows);
335  })();
336</script>
336 <a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-primary-500 !text-white hover:bg-primary-600 !pl-3 w-full justify-center"> <svg width="20" height="20" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" class="shrink-0" aria-hidden="true"> <path d="M211.265 148.37C187.598 224.219 123.858 249.286 104.886 255.161C89.5631 259.93 84.2516 243.014 99.6384 238.244C116.524 233.017 173.258 210.709 194.355 143.094C205.691 106.783 186.837 68.5577 152.325 57.79C117.074 46.7923 80.2423 68.8045 69.2412 104.054C67.5848 109.361 63.152 113.363 58.9333 113.363C52.8997 113.363 50.3043 105.281 52.3341 98.7783C66.1181 54.6057 112.724 26.8804 157.601 40.8841C202.129 54.7776 225.257 103.517 211.265 148.37ZM168.681 5.37712C102.536 -15.2639 36.1026 25.9353 16.8302 87.6986C7.05086 119.034 28.0846 150.559 58.9017 150.559C79.3873 150.559 98.2403 135.991 104.747 115.134C109.855 98.7636 126.062 88.5621 141.246 93.2947C156.164 97.95 164.06 115.32 158.854 132.015C145.032 176.301 103.905 207.232 58.8369 207.236H58.8306C53.1805 207.236 47.4893 206.748 41.9193 205.783C26.0231 203.042 23.0907 220.506 38.9072 223.237C45.4654 224.373 52.1665 224.95 58.822 224.95C111.569 224.95 159.656 188.902 175.758 137.291C183.809 111.494 170.991 84.021 146.522 76.39C121.831 68.6852 95.7658 84.4535 87.8419 109.858C83.6147 123.396 71.7306 132.852 58.9427 132.852C40.047 132.852 27.4971 112.952 33.7365 92.9742C51.7151 35.4079 111.149 5.98231 163.405 22.2851C217.821 39.2652 247.198 98.6229 229.863 154.174C220.278 184.887 202.64 212.731 179.141 234.367C167.297 245.262 179.436 258.135 191.286 247.224C217.073 223.484 236.259 193.132 246.77 159.45C267.275 93.7541 231.625 25.0164 168.681 5.37712ZM58.6439 187.8C95.3789 187.8 128.937 162.473 140.255 126.211C142.694 118.381 139.514 113.349 135.392 112.062C131.306 110.787 125.784 113.124 123.348 120.937C114.327 149.843 87.7136 170.032 58.6287 170.032C44.0506 170.032 30.2484 164.946 18.717 155.324C6.35199 145.002 -4.98893 158.544 7.38454 168.884C22.2568 181.257 39.9787 187.797 58.6349 187.8H58.6439Z" fill="currentColor"></path> </svg> <span>Start for free</span> </a>
336<script>
337  (function() {
338    function initButtonArrows() {
339      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
340        if (button.dataset.btnArrowInit) return;
341        button.dataset.btnArrowInit = 'true';
342        
343        var icon = button.querySelector('.btn-arrow-icon');
344        if (!icon) return;
345        
346        button.addEventListener('mouseenter', function() {
347          icon.classList.remove('slide-out');
348          icon.classList.add('slide-in');
349        });
350        
351        button.addEventListener('mouseleave', function() {
352          icon.classList.remove('slide-in');
353          icon.classList.add('slide-out');
354        });
355      });
356    }
357
358    if (document.readyState === 'loading') {
359      document.addEventListener('DOMContentLoaded', initButtonArrows);
360    } else {
361      initButtonArrows();
362    }
363    
364    document.addEventListener('astro:page-load', initButtonArrows);
365  })();
366</script>
366 </div> </div> </div> </div>   </nav> <!-- Backdrop blur overlay (visible when dropdown is open) --> <div id="navbar-backdrop" class="pointer-events-none fixed inset-0 z-40 opacity-0 backdrop-blur-sm transition-opacity duration-200 bg-white/60" data-astro-cid-voiollt5></div>   <main class="w-full">  <section class="page-section" data-variant="light" id="hero" data-astro-cid-dnku4hyr>        <div class="section-container" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <section class="w-full relative isolate overflow-x-clip" data-astro-cid-eaz7zv6b> <!-- Animated Dot Grid Background -->
367    <div class="hero-dot-grid absolute -z-30 pointer-events-none" aria-hidden="true" data-astro-cid-wlyiyr5g> <canvas id="hero-dot-canvas" width="960" height="880" data-astro-cid-wlyiyr5g></canvas> </div> 
367<script>(function(){const fingerprintPath = "M479.105 123.715C508.165 123.715 537.121 127.711 565.171 135.593H565.172C723.388 180.032 810.209 336.775 758.861 484.95C672.839 733.133 441.175 815.165 372.169 834.403H372.168C366.003 836.13 360.107 837 354.642 837C336.377 837 326.758 827.516 324.962 818.309L324.883 817.87C323.209 807.91 329.776 793.276 355.402 786.121C417.687 768.769 627.121 694.667 705.011 469.948C725.42 411.091 720.361 348.893 690.761 294.827C661.139 240.726 610.544 201.314 548.32 183.835C525.75 177.497 502.431 174.283 479.011 174.283C371.227 174.283 272.458 241.933 238.85 338.877C233.287 354.919 218.695 366.846 205.139 366.846C197.37 366.846 192.438 362.809 189.639 359.385C182.575 350.738 180.643 336.461 185.006 323.875C225.841 206.064 346.768 123.715 479.105 123.715ZM478.957 1C521.618 1.00001 564.274 6.90814 605.741 18.5576C716.526 49.6745 807.083 118.96 860.766 213.628C914.723 308.784 924.703 418.105 888.864 521.47C850.909 630.962 781.867 729.724 689.108 807.245L686.913 809.072C674.246 819.571 663.235 821.729 656.295 821.729C645.632 821.729 636.927 816.576 633.413 808.462C628.742 797.678 633.925 784.249 648.096 772.514H648.097C735.016 700.475 799.655 608.478 835.02 506.468C866.145 416.68 857.829 321.486 811.604 238.445C765.548 155.708 687.314 95.0634 591.164 67.4512L588.89 66.8057C553.722 56.9306 517.085 51.9238 479.998 51.9238C310.011 51.9239 160.83 152.525 108.854 302.354C96.7623 337.202 102.92 374.427 125.368 401.906C144.581 425.426 173.675 438.9 205.174 438.9C253.822 438.9 298.979 406.62 315.014 360.395V360.394C338.279 293.254 405.65 246.323 478.859 246.323C494.333 246.323 509.728 248.445 524.608 252.625C566.639 264.424 600.584 291.382 620.213 328.518C639.767 365.513 642.843 408.092 628.859 448.432C570.466 616.91 396.076 734.653 204.729 734.653C180.618 734.653 156.325 732.773 132.521 729.062H132.52C106.527 725.021 96.6245 711.156 97.7158 699.718C98.7049 689.31 109.097 678.338 130.959 678.338C134.503 678.338 138.264 678.642 142.138 679.243C162.762 682.456 183.832 684.085 204.76 684.085H204.761C370.933 684.071 522.658 581.841 574.417 435.154L575.021 433.426C594.797 376.342 564.645 316.848 507.754 300.864H507.753C498.292 298.212 488.494 296.864 478.629 296.864C430.011 296.864 384.88 329.156 368.849 375.396V375.396C345.592 442.527 278.225 489.448 205.022 489.448C155.516 489.448 109.979 468.431 80.0645 431.818C47.034 391.388 37.6623 337.388 55.0059 287.355C113.434 118.797 287.749 1 478.957 1ZM477.126 369.297C479.15 369.297 481.136 369.531 483.041 369.995L483.853 370.208C490.288 372.016 496.057 376.531 499.22 383.507C502.381 390.481 502.979 400.016 498.863 411.912C457.99 529.799 336.787 612.2 204.079 612.2H204.047C137.242 612.195 73.7533 591.267 20.3223 551.662L19.0625 550.723C3.84284 539.273 -2.02901 525.738 2.49023 514.525C5.87123 506.138 14.6726 500.811 25.6582 500.811C35.1161 500.811 45.338 504.677 55.2158 512.099C98.2043 544.388 149.664 561.455 204.021 561.455C312.304 561.455 411.42 493.831 445.02 396.916V396.915C452.117 376.42 466.351 369.297 477.126 369.297Z";
368const dark = false;
369
370  // Base dimensions - expanded to include full fingerprint with padding
371  const BASE_WIDTH = 960;
372  const BASE_HEIGHT = 880;
373  
374  // Offset to center the fingerprint (original was 911x838, path extends to ~925)
375  const OFFSET_X = 20;
376  const OFFSET_Y = 20;
377  
378  // Vertical fade configuration - fade to background at bottom
379  const FADE_START = 0.45;  // Start fading at 45% down
380  const FADE_END = 0.95;    // Fully faded at 95% down
381  
382  // Center fade configuration - reduce opacity in center for text readability
383  const CENTER_X = 0.5;     // Center of the canvas (normalized)
384  const CENTER_Y = 0.35;    // Slightly above center where text sits
385  const CENTER_FADE_RADIUS = 1;  // Radius of the fade area
386  const CENTER_MIN_OPACITY = 0;   // Minimum opacity multiplier at center
387  
388  // Mobile detection
389  const isMobile = window.innerWidth < 768;
390  
391  // Configuration - adjusted for mobile performance
392  const CONFIG = {
393    cellSize: isMobile ? 10 : 7,        // Larger cells = fewer dots on mobile
394    dotSize: 3,
395    fillRate: isMobile ? 0.7 : 1,       // Sparser on mobile
396    animationSpeed: 0.003,
397    minOpacity: 0.01,
398    maxChannel: 220,
399    frameThrottle: isMobile ? 50 : 33,  // ~20fps on mobile, ~30fps on desktop
400  };
401
402  // Gradient anchor points - different for light and dark modes
403  // Light mode: zinc-500 to zinc-300
404  // Dark mode: zinc-600 to zinc-800 (inverted for dark background)
405  const gradientPoints = dark ? [
406    // Dark mode colors (zinc-600 to zinc-800)
407    // zinc-600: #52525b = RGB(82, 82, 91)
408    // zinc-700: #3f3f46 = RGB(63, 63, 70)
409    // zinc-800: #27272a = RGB(39, 39, 42)
410    { x: 0.0, y: 0.0, color: [82, 82, 91] },    // zinc-600 (top)
411    { x: 1.0, y: 0.0, color: [82, 82, 91] },    // zinc-600 (top)
412    { x: 0.5, y: 0.5, color: [63, 63, 70] },    // zinc-700 (mid)
413    { x: 0.0, y: 1.0, color: [39, 39, 42] },    // zinc-800 (bottom)
414    { x: 1.0, y: 1.0, color: [39, 39, 42] },    // zinc-800 (bottom)
415  ] : [
416    // Light mode colors (zinc-500 to zinc-300)
417    // zinc-500: #71717a = RGB(113, 113, 122)
418    // zinc-300: #d4d4d8 = RGB(212, 212, 216)
419    { x: 0.0, y: 0.0, color: [113, 113, 122] },   // zinc-500 (top)
420    { x: 1.0, y: 0.0, color: [113, 113, 122] },   // zinc-500 (top)
421    { x: 0.5, y: 0.5, color: [162, 162, 169] },   // mid blend
422    { x: 0.0, y: 1.0, color: [212, 212, 216] },   // zinc-300 (bottom)
423    { x: 1.0, y: 1.0, color: [212, 212, 216] },   // zinc-300 (bottom)
424  ];
425  
426  // Mouse hover color effect configuration
427  const BRAND_COLOR = { r: 76, g: 76, b: 255 }; // #4C4CFF - Snitcher brand color
428  const COLOR_RADIUS = 120;  // Radius of the color effect in pixels
429  const COLOR_FALLOFF = 2;   // Falloff exponent for smooth blending
430  const MOUSE_LERP = 0.12;   // Smoothing factor for color effect position
431
432  // Seeded random for consistency
433  function seededRandom(seed) {
434    const x = Math.sin(seed * 12.9898 + seed * 78.233) * 43758.5453;
435    return x - Math.floor(x);
436  }
437
438  // Calculate blended color
439  function getBlendedColor(normalizedX, normalizedY) {
440    let totalWeight = 0;
441    let r = 0, g = 0, b = 0;
442    
443    for (const point of gradientPoints) {
444      const dx = normalizedX - point.x;
445      const dy = normalizedY - point.y;
446      const distance = Math.sqrt(dx * dx + dy * dy);
447      const weight = 1 / Math.pow(distance + 0.12, 3);
448      totalWeight += weight;
449      r += point.color[0] * weight;
450      g += point.color[1] * weight;
451      b += point.color[2] * weight;
452    }
453    
454    r = Math.min(Math.round(r / totalWeight), CONFIG.maxChannel);
455    g = Math.min(Math.round(g / totalWeight), CONFIG.maxChannel);
456    b = Math.min(Math.round(b / totalWeight), CONFIG.maxChannel);
457    
458    return { r, g, b };
459  }
460
461  // Store cleanup function for page transitions
462  let cleanupHeroDotGrid = null;
463  
464  function initHeroDotGrid() {
465    // Clean up any existing instance first
466    if (cleanupHeroDotGrid) {
467      cleanupHeroDotGrid();
468      cleanupHeroDotGrid = null;
469    }
470    
471    const canvas = document.getElementById('hero-dot-canvas');
472    if (!canvas) return;
473    const ctx = canvas.getContext('2d', { willReadFrequently: false });
474    
475    // Handle high-DPI/retina displays
476    const dpr = window.devicePixelRatio || 1;
477    
478    // Set canvas size accounting for pixel ratio
479    canvas.width = BASE_WIDTH * dpr;
480    canvas.height = BASE_HEIGHT * dpr;
481    
482    // Scale context to match
483    ctx.scale(dpr, dpr);
484    
485    // Use base dimensions for all calculations
486    const width = BASE_WIDTH;
487    const height = BASE_HEIGHT;
488    
489    // Create fingerprint mask at base resolution
490    const maskCanvas = document.createElement('canvas');
491    maskCanvas.width = width;
492    maskCanvas.height = height;
493    const maskCtx = maskCanvas.getContext('2d');
494    
495    // Draw fingerprint path to mask with offset for padding
496    maskCtx.translate(OFFSET_X, OFFSET_Y);
497    const path = new Path2D(fingerprintPath);
498    maskCtx.fillStyle = 'white';
499    maskCtx.fill(path);
500    maskCtx.lineWidth = 20;
501    maskCtx.strokeStyle = 'white';
502    maskCtx.stroke(path);
503    maskCtx.translate(-OFFSET_X, -OFFSET_Y);
504    
505    // Get mask data
506    const maskData = maskCtx.getImageData(0, 0, width, height).data;
507    
508    // Check if point is inside fingerprint
509    function getMaskValue(x, y) {
510      const px = Math.floor(x);
511      const py = Math.floor(y);
512      if (px < 0 || px >= width || py < 0 || py >= height) return 0;
513      const idx = (py * width + px) * 4;
514      return maskData[idx];
515    }
516    
517    function isInsideFingerprint(x, y) {
518      return getMaskValue(x, y) > 128;
519    }
520    
521    // Check if point is near the edge of the fingerprint
522    function getEdgeDistance(x, y, checkRadius) {
523      const inside = isInsideFingerprint(x, y);
524      let minDist = checkRadius;
525      
526      // Sample points in a circle to find edge
527      for (let angle = 0; angle < Math.PI * 2; angle += Math.PI / 4) {
528        for (let r = 1; r <= checkRadius; r += 2) {
529          const sx = x + Math.cos(angle) * r;
530          const sy = y + Math.sin(angle) * r;
531          const sampleInside = isInsideFingerprint(sx, sy);
532          if (sampleInside !== inside) {
533            minDist = Math.min(minDist, r);
534            break;
535          }
536        }
537      }
538      return { inside, distToEdge: minDist };
539    }
540    
541    // Generate dots
542    const gridCols = Math.ceil(width / CONFIG.cellSize);
543    const gridRows = Math.ceil(height / CONFIG.cellSize);
544    const dots = [];
545    const SCATTER_RADIUS = 25; // How far to scatter dots from edge
546    
547    for (let row = 0; row < gridRows; row++) {
548      for (let col = 0; col < gridCols; col++) {
549        const seed = row * gridCols + col;
550        const random = seededRandom(seed);
551        
552        if (random > CONFIG.fillRate) continue;
553        
554        const x = col * CONFIG.cellSize;
555        const y = row * CONFIG.cellSize;
556        
557        const { inside, distToEdge } = getEdgeDistance(x, y, SCATTER_RADIUS);
558        
559        // Determine if dot should be shown based on edge proximity
560        let showDot = false;
561        if (inside) {
562          // Inside the shape - always show unless near edge with random chance
563          if (distToEdge > SCATTER_RADIUS * 0.4) {
564            showDot = true; // Far from edge, always show
565          } else {
566            // Near edge - small random chance to hide (creates scattered inner edge)
567            const hideChance = (1 - distToEdge / (SCATTER_RADIUS * 0.4)) * 0.25;
568            showDot = seededRandom(seed + 7000) > hideChance;
569          }
570        } else {
571          // Outside the shape - show with decreasing probability near edge (more dense)
572          if (distToEdge < SCATTER_RADIUS) {
573            const showChance = Math.pow(1 - distToEdge / SCATTER_RADIUS, 1.5) * 0.75;
574            showDot = seededRandom(seed + 8000) < showChance;
575          }
576        }
577        
578        if (!showDot) continue;
579        
580        const normalizedX = col / gridCols;
581        const normalizedY = row / gridRows;
582        const color = getBlendedColor(normalizedX, normalizedY);
583        const baseOpacity = 0.5 + seededRandom(seed + 3000) * 0.45;
584        const phase = seededRandom(seed + 4000) * Math.PI * 2;
585        
586        // Calculate edge fade - dots near/outside edges are always lighter
587        let edgeFade = 1;
588        if (!inside) {
589          // Outside dots are always very light (20-40% opacity)
590          edgeFade = 0.2 + (1 - distToEdge / SCATTER_RADIUS) * 0.2;
591        } else if (distToEdge < SCATTER_RADIUS * 0.6) {
592          // Inside but near edge - fade based on distance
593          edgeFade = 0.4 + (distToEdge / (SCATTER_RADIUS * 0.6)) * 0.6;
594        }
595        
596        // Calculate vertical fade factor (1 at top, 0 at bottom)
597        let verticalFade = 1;
598        if (normalizedY > FADE_START) {
599          verticalFade = 1 - Math.min(1, (normalizedY - FADE_START) / (FADE_END - FADE_START));
600          // Apply easing for smoother fade
601          verticalFade = verticalFade * verticalFade;
602        }
603        
604        // Calculate center fade factor (reduce opacity near center for text readability)
605        const dx = normalizedX - CENTER_X;
606        const dy = normalizedY - CENTER_Y;
607        const distFromCenter = Math.sqrt(dx * dx + dy * dy);
608        let centerFade = 1;
609        if (distFromCenter < CENTER_FADE_RADIUS) {
610          // Smooth falloff from edge to center
611          const t = 1 - (distFromCenter / CENTER_FADE_RADIUS);
612          centerFade = CENTER_MIN_OPACITY + (1 - CENTER_MIN_OPACITY) * (1 - t * t);
613        }
614        
615        // Combined fade factor
616        const fadeFactor = verticalFade * centerFade * edgeFade;
617        
618        // Individual animation speed variation (0.7x to 1.3x base speed)
619        const speedMult = 0.7 + seededRandom(seed + 5000) * 0.6;
620        
621        // Secondary wave phase for more complex movement
622        const phase2 = seededRandom(seed + 6000) * Math.PI * 2;
623        
624        dots.push({ 
625          x, y, 
626          // Current offset from original position (for mouse repulsion)
627          offsetX: 0, 
628          offsetY: 0,
629          color, baseOpacity, phase, phase2, speedMult, fadeFactor, seed 
630        });
631      }
632    }
633    
634    // Check for reduced motion preference
635    const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
636    
637    // Mouse interaction configuration
638    const MOUSE_RADIUS = 80;      // Radius of mouse influence
639    const REPULSION_STRENGTH = 50; // How far dots move away
640    const RETURN_SPEED = 0.15;     // How fast dots return (0-1, higher = faster)
641    
642    // Mouse position tracking (in canvas coordinates)
643    let mouseX = -1000;
644    let mouseY = -1000;
645    let mouseActive = false;
646    
647    // Smooth mouse position for color effect (lerped)
648    let smoothMouseX = -1000;
649    let smoothMouseY = -1000;
650    let targetMouseX = -1000;
651    let targetMouseY = -1000;
652    
653    // Get canvas bounding rect for coordinate conversion
654    function getCanvasCoords(clientX, clientY) {
655      const rect = canvas.getBoundingClientRect();
656      const scaleX = width / rect.width;
657      const scaleY = height / rect.height;
658      return {
659        x: (clientX - rect.left) * scaleX,
660        y: (clientY - rect.top) * scaleY
661      };
662    }
663    
664    // Check if coordinates are within canvas bounds (with padding for edge effect)
665    function isNearCanvas(canvasX, canvasY) {
666      const padding = COLOR_RADIUS;
667      return canvasX >= -padding && canvasX <= width + padding &&
668             canvasY >= -padding && canvasY <= height + padding;
669    }
670    
671    // Track mouse at window level for color effect (works even when canvas is behind other elements)
672    const windowMouseMoveHandler = (e) => {
673      const coords = getCanvasCoords(e.clientX, e.clientY);
674      if (isNearCanvas(coords.x, coords.y)) {
675        targetMouseX = coords.x;
676        targetMouseY = coords.y;
677      } else {
678        targetMouseX = -1000;
679        targetMouseY = -1000;
680      }
681    };
682    window.addEventListener('mousemove', windowMouseMoveHandler);
683    
684    const documentMouseLeaveHandler = () => {
685      targetMouseX = -1000;
686      targetMouseY = -1000;
687    };
688    document.addEventListener('mouseleave', documentMouseLeaveHandler);
689    
690    // Canvas-level mouse tracking for repulsion (needs pointer-events)
691    const canvasMouseMoveHandler = (e) => {
692      const coords = getCanvasCoords(e.clientX, e.clientY);
693      mouseX = coords.x;
694      mouseY = coords.y;
695      mouseActive = true;
696    };
697    canvas.addEventListener('mousemove', canvasMouseMoveHandler);
698    
699    const canvasMouseLeaveHandler = () => {
700      mouseActive = false;
701    };
702    canvas.addEventListener('mouseleave', canvasMouseLeaveHandler);
703    
704    // Touch support for mobile
705    const touchStartHandler = (e) => {
706      const touch = e.touches[0];
707      const coords = getCanvasCoords(touch.clientX, touch.clientY);
708      if (isNearCanvas(coords.x, coords.y)) {
709        targetMouseX = coords.x;
710        targetMouseY = coords.y;
711        smoothMouseX = targetMouseX;
712        smoothMouseY = targetMouseY;
713      }
714    };
715    window.addEventListener('touchstart', touchStartHandler, { passive: true });
716    
717    const touchMoveHandler = (e) => {
718      const touch = e.touches[0];
719      const coords = getCanvasCoords(touch.clientX, touch.clientY);
720      if (isNearCanvas(coords.x, coords.y)) {
721        targetMouseX = coords.x;
722        targetMouseY = coords.y;
723      } else {
724        targetMouseX = -1000;
725        targetMouseY = -1000;
726      }
727    };
728    window.addEventListener('touchmove', touchMoveHandler, { passive: true });
729    
730    const touchEndHandler = () => {
731      targetMouseX = -1000;
732      targetMouseY = -1000;
733    };
734    window.addEventListener('touchend', touchEndHandler);
735    
736    // Animation loop
737    let animationId;
738    let lastTime = 0;
739    
740    function animate(time) {
741      // Throttle framerate for performance (lower on mobile)
742      if (time - lastTime < CONFIG.frameThrottle) {
743        animationId = requestAnimationFrame(animate);
744        return;
745      }
746      lastTime = time;
747      
748      // Smoothly interpolate mouse position for color effect
749      smoothMouseX += (targetMouseX - smoothMouseX) * MOUSE_LERP;
750      smoothMouseY += (targetMouseY - smoothMouseY) * MOUSE_LERP;
751      
752      ctx.clearRect(0, 0, width, height);
753      
754      const halfDot = CONFIG.dotSize / 2;
755      
756      for (const dot of dots) {
757        // Calculate mouse repulsion
758        if (!prefersReducedMotion) {
759          const dx = dot.x - mouseX;
760          const dy = dot.y - mouseY;
761          const distance = Math.sqrt(dx * dx + dy * dy);
762          
763          if (mouseActive && distance < MOUSE_RADIUS) {
764            // Calculate repulsion force (stronger when closer)
765            const force = (1 - distance / MOUSE_RADIUS) * REPULSION_STRENGTH;
766            const angle = Math.atan2(dy, dx);
767            
768            // Target offset based on repulsion
769            const targetOffsetX = Math.cos(angle) * force;
770            const targetOffsetY = Math.sin(angle) * force;
771            
772            // Smoothly move toward target offset
773            dot.offsetX += (targetOffsetX - dot.offsetX) * 0.3;
774            dot.offsetY += (targetOffsetY - dot.offsetY) * 0.3;
775          } else {
776            // Return to original position with spring effect
777            dot.offsetX *= (1 - RETURN_SPEED);
778            dot.offsetY *= (1 - RETURN_SPEED);
779          }
780        }
781        
782        let opacity;
783        if (prefersReducedMotion) {
784          opacity = dot.baseOpacity;
785        } else {
786          // Primary wave with individual speed
787          const wave1 = Math.sin(time * CONFIG.animationSpeed * dot.speedMult + dot.phase);
788          
789          // Secondary wave at different frequency for complexity
790          const wave2 = Math.sin(time * CONFIG.animationSpeed * 0.7 + dot.phase2);
791          
792          // Combine waves (primary dominates, secondary adds variation)
793          const combinedWave = wave1 * 0.7 + wave2 * 0.3;
794          
795          // Sharpen the wave for more "pop" (power curve)
796          const normalizedWave = (combinedWave + 1) / 2; // 0 to 1
797          const sharpenedWave = Math.pow(normalizedWave, 1.5);
798          
799          // Occasional sparkle effect - random bright flash
800          const sparkleChance = Math.sin(time * 0.001 + dot.seed) * 0.5 + 0.5;
801          const sparkle = sparkleChance > 0.97 ? 1.5 : 1;
802          
803          const minOp = Math.max(CONFIG.minOpacity, dot.baseOpacity * 0.08);
804          opacity = (minOp + (dot.baseOpacity - minOp) * sharpenedWave) * sparkle;
805          opacity = Math.min(opacity, 1); // Clamp to 1
806        }
807        
808        // Apply vertical fade
809        const finalOpacity = opacity * dot.fadeFactor;
810        
811        // Calculate color based on distance to mouse (brand color glow effect)
812        const colorDx = dot.x - smoothMouseX;
813        const colorDy = dot.y - smoothMouseY;
814        const colorDistance = Math.sqrt(colorDx * colorDx + colorDy * colorDy);
815        
816        let finalR = dot.color.r;
817        let finalG = dot.color.g;
818        let finalB = dot.color.b;
819        let opacityBoost = 1;
820        
821        if (colorDistance < COLOR_RADIUS) {
822          // Calculate blend factor with smooth falloff
823          const normalizedDist = colorDistance / COLOR_RADIUS;
824          const blendFactor = Math.pow(1 - normalizedDist, COLOR_FALLOFF);
825          
826          // Lerp colors toward brand color
827          finalR = Math.round(dot.color.r + (BRAND_COLOR.r - dot.color.r) * blendFactor);
828          finalG = Math.round(dot.color.g + (BRAND_COLOR.g - dot.color.g) * blendFactor);
829          finalB = Math.round(dot.color.b + (BRAND_COLOR.b - dot.color.b) * blendFactor);
830          
831          // Boost opacity slightly for dots near cursor (creates glow effect)
832          opacityBoost = 1 + blendFactor * 0.6;
833        }
834        
835        const effectiveOpacity = Math.min(finalOpacity * opacityBoost, 1);
836        
837        // Render dot with offset
838        const renderX = dot.x + dot.offsetX;
839        const renderY = dot.y + dot.offsetY;
840        
841        ctx.fillStyle = `rgba(${finalR}, ${finalG}, ${finalB}, ${effectiveOpacity})`;
842        ctx.fillRect(
843          renderX - halfDot,
844          renderY - halfDot,
845          CONFIG.dotSize,
846          CONFIG.dotSize
847        );
848      }
849      
850      animationId = requestAnimationFrame(animate);
851    }
852    
853    // Only start animation when visible (IntersectionObserver fires immediately on observe)
854    const observer = new IntersectionObserver((entries) => {
855      entries.forEach(entry => {
856        if (entry.isIntersecting) {
857          if (!animationId) {
858            lastTime = 0; // Reset timing
859            animationId = requestAnimationFrame(animate);
860          }
861        } else {
862          if (animationId) {
863            cancelAnimationFrame(animationId);
864            animationId = null;
865          }
866        }
867      });
868    }, { threshold: 0 });
869    
870    // Start observing - animation will only begin if canvas is visible
871    observer.observe(canvas);
872    
873    // Store cleanup function
874    cleanupHeroDotGrid = () => {
875      if (animationId) {
876        cancelAnimationFrame(animationId);
877        animationId = null;
878      }
879      observer.disconnect();
880      window.removeEventListener('mousemove', windowMouseMoveHandler);
881      document.removeEventListener('mouseleave', documentMouseLeaveHandler);
882      canvas.removeEventListener('mousemove', canvasMouseMoveHandler);
883      canvas.removeEventListener('mouseleave', canvasMouseLeaveHandler);
884      window.removeEventListener('touchstart', touchStartHandler);
885      window.removeEventListener('touchmove', touchMoveHandler);
886      window.removeEventListener('touchend', touchEndHandler);
887    };
888  }
889  
890  // Run on page load
891  if (document.readyState === 'loading') {
892    document.addEventListener('DOMContentLoaded', initHeroDotGrid);
893  } else {
894    initHeroDotGrid();
895  }
896  
897  // Re-run on Astro page transitions
898  document.addEventListener('astro:page-load', initHeroDotGrid);
899  
900  // Cleanup on page navigation
901  document.addEventListener('astro:before-swap', () => {
902    if (cleanupHeroDotGrid) {
903      cleanupHeroDotGrid();
904      cleanupHeroDotGrid = null;
905    }
906  });
907})();</script>
907   <div class="px-6 md:px-16" data-astro-cid-eaz7zv6b> <div class="max-w-3xl mx-auto" data-astro-cid-eaz7zv6b> <div class="flex flex-col gap-8 items-center w-full relative z-10" data-astro-cid-eaz7zv6b> <!-- Badge --> <div class="inline-flex items-center gap-2 h-8 px-4 rounded-full border border-[var(--alpha-border)] bg-white shadow-sm"><svg width="16" height="16" class="text-zinc-700" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M2 4.75C2 3.23122 3.23122 2 4.75 2H11.1616C11.8909 2 12.5904 2.28973 13.1061 2.80546L21.1161 10.8155C22.1901 11.8894 22.1901 13.6306 21.1161 14.7045L14.7045 21.1161C13.6306 22.1901 11.8894 22.1901 10.8155 21.1161L2.80546 13.1061C2.28973 12.5904 2 11.8909 2 11.1616V4.75ZM7.5 9C8.32843 9 9 8.32843 9 7.5C9 6.67157 8.32843 6 7.5 6C6.67157 6 6 6.67157 6 7.5C6 8.32843 6.67157 9 7.5 9Z" fill="currentColor"/></svg>
908<span class="eyebrow text-xs text-zinc-700">Pricing</span></div><style is:global>
909    .mask-logo {
910      mask-image: url('/logo-symbol.svg');
911      mask-size: contain;
912      mask-repeat: no-repeat;
913      mask-position: center;
914      -webkit-mask-image: url('/logo-symbol.svg');
915      -webkit-mask-size: contain;
916      -webkit-mask-repeat: no-repeat;
917      -webkit-mask-position: center;
918    }
919  </style> <!-- Heading and Description --> <div class="flex flex-col gap-3 items-center text-center [&#38;_p:not([class*=max-w-])]:max-w-2xl w-full [&#38;_h1]:text-balance" data-astro-cid-eaz7zv6b>   <h1>
920Pricing that doesn't punish growth
921</h1> <p class="text-lg">
922Start free. Scale without seat fees or surprise invoices.
923</p>  </div> <!-- Actions -->  </div> </div> </div> </section>     </div> </section>    <section class="page-section" data-variant="light" data-astro-cid-dnku4hyr>        <div class="section-container" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <section class="relative"> <div class="w-full max-w-5xl mx-auto px-4"> <!-- Billing toggle (above card, centered) --> <div class="flex justify-center mb-6"> <!-- Mobile: native dropdown --><div class="hidden" data-astro-cid-twm5uxey> <select data-tab-select data-variant="default" class="h-10 px-4 pr-8 rounded-full text-sm font-semibold appearance-none bg-no-repeat cursor-pointer border bg-[#f5f5f5] text-zinc-900 border-zinc-200" style="background-image: url(&quot;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2371717a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E&quot;); background-position: right 0.75rem center;" data-astro-cid-twm5uxey> <option value="yearly" selected data-astro-cid-twm5uxey> Annual </option><option value="monthly" data-astro-cid-twm5uxey> Monthly </option> </select> </div> <!-- Desktop: pill tabs --> <div class="inline-flex items-center rounded-full bg-[#f5f5f5]" role="tablist" data-variant="default" id="billing-tabs" data-astro-cid-twm5uxey> <button type="button" role="tab" aria-selected="true" data-tab="yearly" class="flex items-center justify-center gap-2 h-10 px-4 rounded-full text-sm font-semibold transition-all flex-1 bg-white text-zinc-900 tab-active-shadow" data-astro-cid-twm5uxey>  <span data-astro-cid-twm5uxey>Annual</span> <span class="text-xs px-1.5 py-0.5 rounded-full text-white whitespace-nowrap bg-jade-500" data-astro-cid-twm5uxey> ~ 30% off </span> </button><button type="button" role="tab" data-tab="monthly" class="flex items-center justify-center gap-2 h-10 px-4 rounded-full text-sm font-semibold transition-all flex-1 text-zinc-700 hover:text-zinc-900" data-astro-cid-twm5uxey>  <span data-astro-cid-twm5uxey>Monthly</span>  </button> </div>   </div> <!-- Product Pricing (full width) --> <div id="platform-card" style="will-change: transform, opacity; transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1), opacity 250ms cubic-bezier(0.4, 0, 0.2, 1);"> <div class="blob-card rounded-2xl overflow-hidden relative p-6 md:p-8 w-full" data-astro-cid-gijzu423> <!-- Gradient background with animated blobs --> <div class="absolute inset-0 rounded-2xl overflow-hidden bg-primary-500" data-astro-cid-gijzu423> <!-- Animated blobs --> <div class="blob-card-blob blob-card-blob-1" data-astro-cid-gijzu423></div> <div class="blob-card-blob blob-card-blob-2" data-astro-cid-gijzu423></div> <div class="blob-card-blob blob-card-blob-3" data-astro-cid-gijzu423></div> <div class="blob-card-blob blob-card-blob-4" data-astro-cid-gijzu423></div> <div class="blob-card-blob blob-card-blob-5" data-astro-cid-gijzu423></div> <!-- Noise overlay to reduce gradient banding --> <div class="blob-card-noise" data-astro-cid-gijzu423></div> </div> <!-- Content slot --> <div class="relative z-10 h-full" data-astro-cid-gijzu423>  <div class="flex flex-col md:flex-row gap-8"> <!-- Left column: Product info --> <div class="w-full md:w-1/2 flex flex-col gap-5"> <span class="font-semibold text-base text-white">Platform</span> <!-- Headline & description --> <div class="flex flex-col gap-2"> <h3 class="text-white">
923Everything you need to identify visitors</h3> <p class="text-base text-white/80 leading-6">Our plans are based on the number of unique companies we ID each month. Full access to all features included.</p> </div> <!-- Feature list --> <div class="flex flex-col gap-2"> <div class="flex items-start gap-3 text-base text-white leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
924 <span>Company identification</span> </div><div class="flex items-start gap-3 text-base text-white leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
925 <span>User identification (Identity Layer)</span> </div><div class="flex items-start gap-3 text-base text-white leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
926 <span>Intent signal detection</span> </div><div class="flex items-start gap-3 text-base text-white leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
927 <span>Real-time Slack &amp; email alerts</span> </div><div class="flex items-start gap-3 text-base text-white leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
928 <span>CRM sync (HubSpot, Salesforce, Pipedrive)</span> </div><div class="flex items-start gap-3 text-base text-white leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.
9280858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
929 <span>Unlimited team members</span> </div><div class="flex items-start gap-3 text-base text-white leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
930 <span>REST API access</span> </div><div class="flex items-start gap-3 text-base text-white leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
931 <span>GDPR compliance tools</span> </div><div class="flex items-start gap-3 text-base text-white leading-6 opacity-50"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
932 <span>And more...</span> </div> </div> <!-- Buttons --> <div class="flex flex-col sm:flex-row gap-2 mt-auto items-stretch sm:items-start"> <a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50 w-full sm:w-auto justify-center">
933Get started
934</a>
934<script>
935  (function() {
936    function initButtonArrows() {
937      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
938        if (button.dataset.btnArrowInit) return;
939        button.dataset.btnArrowInit = 'true';
940        
941        var icon = button.querySelector('.btn-arrow-icon');
942        if (!icon) return;
943        
944        button.addEventListener('mouseenter', function() {
945          icon.classList.remove('slide-out');
946          icon.classList.add('slide-in');
947        });
948        
949        button.addEventListener('mouseleave', function() {
950          icon.classList.remove('slide-in');
951          icon.classList.add('slide-out');
952        });
953      });
954    }
955
956    if (document.readyState === 'loading') {
957      document.addEventListener('DOMContentLoaded', initButtonArrows);
958    } else {
959      initButtonArrows();
960    }
961    
962    document.addEventListener('astro:page-load', initButtonArrows);
963  })();
964</script>
964 <a href="/demo" class="inline-flex items-center justify-center gap-2 pl-1 pr-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white/10 border border-white/10 !text-zinc-100 hover:bg-white/20 backdrop-blur-sm w-full sm:w-auto justify-center"><span class="flex items-center -space-x-1.5 isolate"> <span class="w-8 h-8 bg-jade-500 rounded-full border-2 border-white/20 flex items-center justify-center z-30"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" class="w-5 h-5"> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.0017 14C9.0017 10.134 12.1357 6.99999 16.0017 6.99999C19.8677 6.99999 23.0017 10.134 23.0017 14C23.0017 17.866 19.8677 21 16.0017 21C12.1357 21 9.0017 17.866 9.0017 14ZM16.0017 11C16.554 11 17.0017 11.4477 17.0017 12V13.5858L18.3755 14.9595C18.766 15.3501 18.766 15.9832 18.3755 16.3738C17.9849 16.7643 17.3518 16.7643 16.9613 16.3738L15.2946 14.7071C15.1071 14.5196 15.0017 14.2652 15.0017 14V12C15.0017 11.4477 15.4494 11 16.0017 11Z" fill="white"></path> <path d="M1.59659 9.34793C1.21298 7.17236 2.66566 5.09772 4.84123 4.71411L11.7349 3.49857C13.2569 3.23019 14.7296 3.86059 15.6083 5.00852C13.1074 5.11659 10.871 6.24533 9.30541 7.98866L1.59659 9.34793Z" fill="white"></path> <path d="M7.80399 10.2843L1.94389 11.3175L2.63848 15.2568C3.0221 17.4324 5.09673 18.885 7.27231 18.5014L8.12348 18.3513C7.40983 17.0617 7.00356 15.5783 7.00356 14C7.00356 12.675 7.28987 11.417 7.80399 10.2843Z" fill="white"></path> </svg> </span> <img src="/_astro/leon.c0wmlxiL_Z2wsuca.webp" alt="" class="w-8 h-8 border-2 border-white/20 rounded-full object-cover z-20" loading="lazy" decoding="auto" width="600" height="600"><img src="/_astro/dean.7I-5NM-k_Z114K5E.webp" alt="" class="w-8 h-8 border-2 border-white/20 rounded-full object-cover z-10" loading="lazy" decoding="auto" width="600" height="600"> </span><span>Talk to sales</span></a>
964<script>
965  (function() {
966    function initButtonArrows() {
967      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
968        if (button.dataset.btnArrowInit) return;
969        button.dataset.btnArrowInit = 'true';
970        
971        var icon = button.querySelector('.btn-arrow-icon');
972        if (!icon) return;
973        
974        button.addEventListener('mouseenter', function() {
975          icon.classList.remove('slide-out');
976          icon.classList.add('slide-in');
977        });
978        
979        button.addEventListener('mouseleave', function() {
980          icon.classList.remove('slide-in');
981          icon.classList.add('slide-out');
982        });
983      });
984    }
985
986    if (document.readyState === 'loading') {
987      document.addEventListener('DOMContentLoaded', initButtonArrows);
988    } else {
989      initButtonArrows();
990    }
991    
992    document.addEventListener('astro:page-load', initButtonArrows);
993  })();
994</script>
994 </div> <!-- Footer note --> <p class="text-sm text-white/60">14-day free trial · No credit card required</p> </div> <!-- Right column: Pricing tiers --> <div id="pricing-tiers" class="w-full md:w-1/2"> <div class="rounded-xl border border-white/10 overflow-hidden bg-black/5 p-6 flex flex-col gap-4"> <!-- Header row --> <div class="flex justify-between"> <span class="font-semibold text-sm text-white">Company IDs</span> <span class="font-semibold text-sm text-white">Monthly Cost</span> </div> <!-- Tier rows --> <div class="flex justify-between"> <span class="text-sm text-white">0-50</span> <span class="text-sm text-lavender-100 font-semibold price-localized" id="tier-price-0" data-amount="49" data-yearly-price="49" data-monthly-price="79"><span class="price-value">$49</span></span> </div><div class="flex justify-between"> <span class="text-sm text-white">51-100</span> <span class="text-sm text-lavender-100 font-semibold price-localized" id="tier-price-1" data-amount="69" data-yearly-price="69" data-monthly-price="109"><span class="price-value">$69</span></span> </div><div class="flex justify-between"> <span class="text-sm text-white">101-250</span> <span class="text-sm text-lavender-100 font-semibold price-localized" id="tier-price-2" data-amount="99" data-yearly-price="99" data-monthly-price="149"><span class="price-value">$99</span></span> </div><div class="flex justify-between"> <span class="text-sm text-white">251-500</span> <span class="text-sm text-lavender-100 font-semibold price-localized" id="tier-price-3" data-amount="139" data-yearly-price="139" data-monthly-price="199"><span class="price-value">$139</span></span> </div><div class="flex justify-between"> <span class="text-sm text-white">501-750</span> <span class="text-sm text-lavender-100 font-semibold price-localized" id="tier-price-4" data-amount="179" data-yearly-price="179" data-monthly-price="269"><span class="price-value">$179</span></span> </div><div class="flex justify-between"> <span class="text-sm text-white">751-1,000</span> <span class="text-sm text-lavender-100 font-semibold price-localized" id="tier-price-5" data-amount="229" data-yearly-price="229" data-monthly-price="339"><span class="price-value">$229</span></span> </div><div class="flex justify-between"> <span class="text-sm text-white">1,001-2,000</span> <span class="text-sm text-lavender-100 font-semibold price-localized" id="tier-price-6" data-amount="279" data-yearly-price="279" data-monthly-price="419"><span class="price-value">$279</span></span> </div><div class="flex justify-between"> <span class="text-sm text-white">2,001-3,000</span> <span class="text-sm text-lavender-100 font-semibold price-localized" id="tier-price-7" data-amount="349" data-yearly-price="349" data-monthly-price="529"><span class="price-value">$349</span></span> </div><div class="flex justify-between"> <span class="text-sm text-white">3,001-4,000</span> <span class="text-sm text-lavender-100 font-semibold price-localized" id="tier-price-8" data-amount="439" data-yearly-price="439" data-monthly-price="649"><span class="price-value">$439</span></span> </div><div class="flex justify-between"> <span class="text-sm text-white">4,001-5,000</span> <span class="text-sm text-lavender-100 font-semibold price-localized" id="tier-price-9" data-amount="529" data-yearly-price="529" data-monthly-price="779"><span class="price-value">$529</span></span> </div> <!-- Custom row --> <div class="flex justify-between"> <svg width="24" height="24" viewBox="0 0 24 24" fill="none" class="w-5 h-5" aria-hidden="true"> <path d="M12 6V18M6 12H18" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> <span class="text-sm text-white/20">Custom</span> </div> </div> </div> </div>  </div> </div>  
994<script>
995  (function() {
996    var tabVisible = true;
997    var cardObservers = new Map();
998
999    function setCardAnimationState(card, isVisible) {
1000      var shouldPlay = isVisible && tabVisible;
1001      var state = shouldPlay ? 'running' : 'paused';
1002      var blobs = card.querySelectorAll('.blob-card-blob');
1003      blobs.forEach(function(blob) {
1004        blob.style.animationPlayState = state;
1005        blob.style.willChange = shouldPlay ? 'transform' : 'auto';
1006      });
1007    }
1008
1009    // Randomize blob animation delays for more organic movement
1010    function initBlobCardAnimations() {
1011      var cards = document.querySelectorAll('.blob-card');
1012      
1013      cards.forEach(function(card) {
1014        var blobs = card.querySelectorAll('.blob-card-blob');
1015        blobs.forEach(function(blob) {
1016          // Random delay between 0 and the animation duration
1017          var randomDelay = -(Math.random() * 15); // negative delay to start mid-animation
1018          blob.style.animationDelay = randomDelay + 's';
1019        });
1020
1021        // Set up IntersectionObserver to pause animations when off-screen
1022        if ('IntersectionObserver' in window) {
1023          var observer = new IntersectionObserver(function(entries) {
1024            entries.forEach(function(entry) {
1025              setCardAnimationState(entry.target, entry.isIntersecting);
1026            });
1027          }, { threshold: 0 });
1028          observer.observe(card);
1029          cardObservers.set(card, observer);
1030        } else {
1031          // Fallback: assume visible
1032          setCardAnimationState(card, true);
1033        }
1034      });
1035    }
1036
1037    // Page Visibility API - pause animations when tab is hidden
1038    function initVisibilityHandler() {
1039      document.addEventListener('visibilitychange', function() {
1040        tabVisible = !document.hidden;
1041        var cards = document.querySelectorAll('.blob-card');
1042        cards.forEach(function(card) {
1043          // Check if this card's observer has detected visibility
1044          var observer = cardObservers.get(card);
1045          // We need to re-evaluate visibility, but for simplicity just update all
1046          var blobs = card.querySelectorAll('.blob-card-blob');
1047          blobs.forEach(function(blob) {
1048            if (!tabVisible) {
1049              blob.style.animationPlayState = 'paused';
1050            }
1051            // When tab becomes visible, IntersectionObserver will handle it
1052          });
1053        });
1054      });
1055    }
1056
1057    function cleanup() {
1058      cardObservers.forEach(function(observer) {
1059        observer.disconnect();
1060      });
1061      cardObservers.clear();
1062    }
1063
1064    function init() {
1065      cleanup();
1066      initBlobCardAnimations();
1067    }
1068
1069    // Initialize visibility handler once
1070    initVisibilityHandler();
1071
1072    if (document.readyState === 'loading') {
1073      document.addEventListener('DOMContentLoaded', init);
1074    } else {
1075      init();
1076    }
1077
1078    // Re-init on Astro page transitions
1079    document.addEventListener('astro:page-load', init);
1080    document.addEventListener('astro:before-swap', cleanup);
1081  })();
1082</script>
1082 </div> <!-- Developers & Agency cards --> <div class="flex flex-col md:flex-row gap-6 mt-6"> <!-- For platforms & developers --> <div class="bg-zinc-50 overflow-hidden  rounded-2xl p-0 flex-1 flex flex-col">  <div class="flex flex-col gap-4 p-6 flex-1"> <!-- Header row: label --> <span class="font-semibold text-base text-primary-500">For platforms & developers</span> <!-- Headline & description --> <div class="flex flex-col gap-2"> <h3>Build on Snitcher infrastructure</h3> <p class="text-base text-zinc-900 leading-6">Embed <a href="/radar" class="text-primary-500 hover:underline">Radar</a> for visitor tracking or use <a href="/ip-to-company-api" class="text-primary-500 hover:underline">IP-to-company</a> lookups.</p> </div> <!-- Feature list --> <div class="flex flex-col gap-2 flex-1"> <div class="flex items-start gap-3 text-base text-zinc-900 leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1083 <span>White-label under your brand</span> </div> <div class="flex items-start gap-3 text-base text-zinc-900 leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1084 <span>Data only — no dashboard needed</span> </div> <div class="flex items-start gap-3 text-base text-zinc-900 leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1085 <span>Developer-first APIs & SDKs</span> </div> </div> <!-- Talk to sales button --> <a href="/demo" class="inline-flex items-center justify-center gap-2 pl-1 pr-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50"><span class="flex items-center -space-x-1.5 isolate"> <span class="w-8 h-8 bg-jade-500 rounded-full border-2 border-white flex items-center justify-center z-30"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" class="w-5 h-5"> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.0017 14C9.0017 10.134 12.1357 6.99999 16.0017 6.99999C19.8677 6.99999 23.0017 10.134 23.0017 14C23.0017 17.866 19.8677 21 16.0017 21C12.1357 21 9.0017 17.866 9.0017 14ZM16.0017 11C16.554 11 17.0017 11.4477 17.0017 12V13.5858L18.3755 14.9595C18.766 15.3501 18.766 15.9832 18.3755 16.3738C17.9849 16.7643 17.3518 16.7643 16.9613 16.3738L15.2946 14.7071C15.1071 14.5196 15.0017 14.2652 15.0017 14V12C15.0017 11.4477 15.4494 11 16.0017 11Z" fill="white"></path> <path d="M1.59659 9.34793C1.21298 7.17236 2.66566 5.09772 4.84123 4.71411L11.7349 3.49857C13.2569 3.23019 14.7296 3.86059 15.6083 5.00852C13.1074 5.11659 10.871 6.24533 9.30541 7.98866L1.59659 9.34793Z" fill="white"></path> <path d="M7.80399 10.2843L1.94389 11.3175L2.63848 15.2568C3.0221 17.4324 5.09673 18.885 7.27231 18.5014L8.12348 18.3513C7.40983 17.0617 7.00356 15.5783 7.00356 14C7.00356 12.675 7.28987 11.417 7.80399 10.2843Z" fill="white"></path> </svg> </span> <img src="/_astro/leon.c0wmlxiL_Z2wsuca.webp" alt="" class="w-8 h-8 border-2 border-white rounded-full object-cover z-20" loading="lazy" decoding="auto" width="600" height="600"><img src="/_astro/dean.7I-5NM-k_Z114K5E.webp" alt="" class="w-8 h-8 border-2 border-white rounded-full object-cover z-10" loading="lazy" decoding="auto" width="600" height="600"> </span><span>Talk to sales</span></a>
1085<script>
1086  (function() {
1087    function initButtonArrows() {
1088      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
1089        if (button.dataset.btnArrowInit) return;
1090        button.dataset.btnArrowInit = 'true';
1091        
1092        var icon = button.querySelector('.btn-arrow-icon');
1093        if (!icon) return;
1094        
1095        button.addEventListener('mouseenter', function() {
1096          icon.classList.remove('slide-out');
1097          icon.classList.add('slide-in');
1098        });
1099        
1100        button.addEventListener('mouseleave', function() {
1101          icon.classList.remove('slide-in');
1102          icon.classList.add('slide-out');
1103        });
1104      });
1105    }
1106
1107    if (document.readyState === 'loading') {
1108      document.addEventListener('DOMContentLoaded', initButtonArrows);
1109    } else {
1110      initButtonArrows();
1111    }
1112    
1113    document.addEventListener('astro:page-load', initButtonArrows);
1114  })();
1115</script>
1115 </div>  </div>  <!-- Agency Partner Program --> <div class="bg-zinc-50 overflow-hidden  rounded-2xl p-0 flex-1 flex flex-col">  <div class="flex flex-col gap-4 p-6 flex-1"> <!-- Header row: label --> <span class="font-semibold text-base text-primary-500">Agency Partner Program</span> <!-- Headline & description --> <div class="flex flex-col gap-2"> <h3>Offer Snitcher to your clients</h3> <p class="text-base text-zinc-900 leading-6">Resell or manage Snitcher accounts on behalf of your clients.</p> </div> <!-- Feature list --> <div class="flex flex-col gap-2 flex-1"> <div class="flex items-start gap-3 text-base text-zinc-900 leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1116 <span>Manage multiple client accounts</span> </div> <div class="flex items-start gap-3 text-base text-zinc-900 leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1117 <span>Partner pricing & discounts</span> </div> <div class="flex items-start gap-3 text-base text-zinc-900 leading-6"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1118 <span>Dedicated partner support</span> </div> </div> <!-- Start for free button --> <a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50">
1119Start for free
1120</a>
1120<script>
1121  (function() {
1122    function initButtonArrows() {
1123      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
1124        if (button.dataset.btnArrowInit) return;
1125        button.dataset.btnArrowInit = 'true';
1126        
1127        var icon = button.querySelector('.btn-arrow-icon');
1128        if (!icon) return;
1129        
1130        button.addEventListener('mouseenter', function() {
1131          icon.classList.remove('slide-out');
1132          icon.classList.add('slide-in');
1133        });
1134        
1135        button.addEventListener('mouseleave', function() {
1136          icon.classList.remove('slide-in');
1137          icon.classList.add('slide-out');
1138        });
1139      });
1140    }
1141
1142    if (document.readyState === 'loading') {
1143      document.addEventListener('DOMContentLoaded', initButtonArrows);
1144    } else {
1145      initButtonArrows();
1146    }
1147    
1148    document.addEventListener('astro:page-load', initButtonArrows);
1149  })();
1150</script>
1150 </div>  </div>  </div> </div> </section> 
1150<script>
1151  (function() {
1152    var tierCount = 10;
1153    var card = null;
1154    var currentIsYearly = true;
1155    var animating = false;
1156
1157    function formatPrice(amount) {
1158      if (window.SnitcherCurrency && window.SnitcherCurrency.isReady()) {
1159        return window.SnitcherCurrency.formatPrice(amount);
1160      }
1161      return '$' + amount;
1162    }
1163
1164    function updatePrices(isYearly) {
1165      for (var i = 0; i < tierCount; i++) {
1166        var cell = document.getElementById('tier-price-' + i);
1167        if (cell) {
1168          var price = isYearly
1169            ? cell.getAttribute('data-yearly-price')
1170            : cell.getAttribute('data-monthly-price');
1171          cell.setAttribute('data-amount', price);
1172          var valueEl = cell.querySelector('.price-value');
1173          if (valueEl) {
1174            valueEl.textContent = formatPrice(parseInt(price, 10));
1175          }
1176        }
1177      }
1178    }
1179
1180    var easing = 'transform 250ms cubic-bezier(0.4, 0, 0.2, 1), opacity 250ms cubic-bezier(0.4, 0, 0.2, 1)';
1181
1182    function slideAndSwap(isYearly) {
1183      if (!card || isYearly === currentIsYearly || animating) return;
1184      currentIsYearly = isYearly;
1185      animating = true;
1186
1187      var exitX = isYearly ? '-32px' : '32px';
1188      var enterX = isYearly ? '32px' : '-32px';
1189
1190      // Phase 1: slide out + fade out
1191      card.style.transform = 'translateX(' + exitX + ')';
1192      card.style.opacity = '0';
1193
1194      function onExitDone() {
1195        card.removeEventListener('transitionend', onExitDone);
1196
1197        updatePrices(isYearly);
1198
1199        // Jump to enter position without transition
1200        card.style.transition = 'none';
1201        card.style.transform = 'translateX(' + enterX + ')';
1202
1203        // Double rAF ensures the browser has committed the jump before transitioning
1204        requestAnimationFrame(function() {
1205          requestAnimationFrame(function() {
1206            card.style.transition = easing;
1207            card.style.transform = 'translateX(0)';
1208            card.style.opacity = '1';
1209
1210            function onEnterDone() {
1211              card.removeEventListener('transitionend', onEnterDone);
1212              animating = false;
1213            }
1214            card.addEventListener('transitionend', onEnterDone);
1215          });
1216        });
1217      }
1218      card.addEventListener('transitionend', onExitDone);
1219    }
1220
1221    function initBillingTabs() {
1222      card = document.getElementById('platform-card');
1223      var billingTabs = document.getElementById('billing-tabs');
1224      if (billingTabs) {
1225        billingTabs.addEventListener('tabchange', function(e) {
1226          var isYearly = e.detail.tabId === 'yearly';
1227          // Purchase-intent signal native pageviews can't show: which billing
1228          // cycle the visitor considered, in their own currency/region.
1229          if (isYearly !== currentIsYearly && !animating && window.snitcherTrack) {
1230            var currency = window.SnitcherCurrency;
1231            window.snitcherTrack('pricing_billing_toggled', {
1232              billing: isYearly ? 'yearly' : 'monthly',
1233              currency: currency && currency.isReady && currency.isReady() ? currency.getCode() : null,
1234              region: currency && currency.getRegion ? currency.getRegion() : null
1235            });
1236          }
1237          slideAndSwap(isYearly);
1238        });
1239      }
1240    }
1241
1242    if (document.readyState === 'loading') {
1243      document.addEventListener('DOMContentLoaded', initBillingTabs);
1244    } else {
1245      initBillingTabs();
1246    }
1247  })();
1248</script>
1248  </div> </section>     <section class="page-section bg-zinc-50" data-variant="light" data-astro-cid-dnku4hyr>        <div class="section-container bg-white" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <section class="w-full"> <div class="mb-8 text-center flex flex-col items-center"> <h2 class="mb-2 max-w-3xl text-balance">All our features for<br />all of our customers</h2> <p class="text-base max-w-2xl">Snitcher helps you understand who&#39;s on your site and what they want. These are the features that make it work.</p> </div> <div class="bg-white border border-zinc-200 shadow overflow-hidden  rounded-2xl p-0 shadow-md overflow-hidden shadow-lg"> <div class="flex flex-col gap-px bg-zinc-200"> <div class="grid gap-px grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 bg-zinc-200"> <div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1249 <span>Website visitor tracking</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1250 <span>Company identification</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1251 <span>Contact-level identification*</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1252 <span>Contact enrichment</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.
12520858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1253 <span>Technographic data reveal</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1254 <span>Multi-touch attribution</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1255 <span>Real-time activity tracking</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1256 <span>Account-level insights</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1257 <span>Buyer persona filters</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1258 <span>Industry segmentation</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.
12580858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1259 <span>Automated lead scoring</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1260 <span>Automated workflows</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1261 <span>Trigger-based notifications</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1262 <span>CRM integrations</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1263 <span>B2B web analytics</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1264 <span>Visitor activity tracking</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.
12640858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1265 <span>Campaign tracking</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1266 <span>Custom analytics</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1267 <span>Outreach integrations</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1268 <span>Real-time alerts</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1269 <span>Returning visitor alerts</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.0858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1270 <span>WFH tracking</span> </div><div class="flex items-start gap-3 bg-white px-6 py-5 items-center min-w-0 font-medium text-zinc-900"> <svg width="20" height="20" class="mt-0.5 shrink-0 text-primary-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.4299 4.20121C20.0092 4.57669 20.1744 5.3507 19.799 5.93002L11.049 19.43C10.835 19.7601 10.4782 19.9702 10.
12700858 19.9972C9.69333 20.0242 9.31109 19.8649 9.05399 19.5672L4.30399 14.0672C3.85276 13.5447 3.91052 12.7554 4.433 12.3041C4.95547 11.8529 5.74482 11.9106 6.19605 12.4331L9.85717 16.6723L17.7011 4.57028C18.0766 3.99096 18.8506 3.82573 19.4299 4.20121Z" fill="currentColor"/></svg>
1271 <span>Marketing automation sync</span> </div><div class="bg-white px-6 py-5 flex items-center bg-zinc-50"> <span class="font-medium text-zinc-500">. . . and many more.</span> </div>  </div> </div> </div>  </section>  </div> </section>     <section class="page-section" data-variant="light" data-astro-cid-dnku4hyr>        <div class="section-container" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <section class="testimonial-section relative overflow-hidden flex items-center justify-center px-6 sm:px-10 py-8 md:py-10 bg-palatinate-100" data-testimonial-section data-variant="light" style="--ts-dot-inactive:rgba(63,63,70,0.25);--ts-dot-inactive-hover:rgba(63,63,70,0.5);--ts-dot-active:var(--color-palatinate-600, #3e3ee6);--ts-dot-focus:var(--color-palatinate-500, #4c4cff);" data-astro-cid-7ajslof7> <!-- Wavy lines decorative background -->  <!-- Bordered card (border applied via variant; particles is borderless) --> <div class="relative w-full max-w-[1340px] bg-transparent md:min-h-[496px]" data-astro-cid-7ajslof7> <div class="relative overflow-hidden flex flex-col items-center justify-center h-full px-6 sm:px-10 md:px-20 py-12 md:py-16 md:min-h-[496px]" data-astro-cid-7ajslof7> <!-- Soft radial glow behind quote --> <div class="pointer-events-none absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 w-[120%] max-w-[1400px] aspect-[1200/449]" aria-hidden="true" style="background: radial-gradient(ellipse at center, rgba(255,255,255,0.85) 0%, rgba(255,255,255,0.5) 35%, rgba(255,255,255,0) 70%);" data-astro-cid-7ajslof7></div> <!-- Slides (grid stack so the container sizes to the tallest) --> <div class="testimonial-section__slides relative grid w-full place-items-center" data-astro-cid-7ajslof7> <article class="testimonial-section__slide is-active" data-slide-index="0" data-astro-cid-7ajslof7> <div class="flex flex-col items-center justify-center gap-4 text-center h-full" data-astro-cid-7ajslof7> <div class="size-12 rounded-xl overflow-hidden bg-palatinate-100" data-astro-cid-7ajslof7> <img src="/_astro/hs-charles-tenot.DRPQ8ha-_6c6i2.webp" alt="Charles Tenot" class="size-12 rounded-xl object-cover" loading="lazy" decoding="auto" data-astro-cid-7ajslof7 width="200" height="200"> </div> <div class="flex flex-col items-center gap-8 max-w-[1080px]" data-astro-cid-7ajslof7> <h2 class="font-display font-semibold text-3xl md:text-5xl leading-[1.15] tracking-tight text-balance text-zinc-800" data-astro-cid-7ajslof7>
1272&ldquo;Snitcher is simply the best company-level website visitor identification provider on the market.&rdquo;
1273</h2> <div class="flex flex-wrap items-center justify-center gap-4" data-astro-cid-7ajslof7> <div class="flex h-6 items-center pr-4 border-r border-zinc-200" data-astro-cid-7ajslof7> <img src="/logos/main/lemlist.svg" alt="lemlist logo" class="h-full w-auto object-contain" loading="lazy" decoding="auto" data-astro-cid-7ajslof7> </div> <div class="flex items-center gap-1" data-astro-cid-7ajslof7> <span class="text-sm font-semibold leading-none text-zinc-800" data-astro-cid-7ajslof7>Charles Tenot</span>  <span class="text-xs leading-4 text-zinc-500/50" aria-hidden="true" data-astro-cid-7ajslof7>∙</span> <span class="text-sm leading-4 text-zinc-500" data-astro-cid-7ajslof7>Chief Operating Officer</span>  </div> </div> </div> </div> </article> </div> <!-- Dots -->  <!-- Optional slot for extra content below the testimonial (e.g. CTA) -->  </div> </div> </section> <!-- Global rules: the TestimonialSection sits CONTAINED inside the standard
1274     PageSection box (side borders + corner pseudos stay visible — same
1275     visual language as every other section on the page). We:
1276       - zero the section-container's vertical padding so the testimonial's
1277         own padding governs spacing (no double-padding); horizontal padding
1278         is preserved so the side borders + corner pseudos keep their gutter
1279       - paint the page-section bg (the bleed) with the variant's colour so
1280         purple content isn't surrounded by grey -->   <!-- Dot styles are GLOBAL so other components (e.g. the careers photo carousel)
1281     can reuse the exact same selectors + active state without redefining. The
1282     --ts-dot-* variables are inherited from any ancestor [data-testimonial-section]
1283     so colour palette follows the variant automatically. -->    </div> </section>     <section class="page-section" data-variant="light" data-astro-cid-dnku4hyr>        <div class="section-container" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  
1283<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"What is Snitcher?","acceptedAnswer":{"@type":"Answer","text":"Snitcher identifies the companies visiting your website and turns that traffic into actionable insights. It enriches those companies with firmographic data, filters out noise, and lets GTM teams trigger workflows the moment interest appears."}},{"@type":"Question","name":"Is Snitcher GDPR compliant?","acceptedAnswer":{"@type":"Answer","text":"Yes. Snitcher is built for GDPR compliance and processes data under the legitimate interest basis (Art. 6(1)(f) GDPR). We focus on company-level intelligence — matching visitor IP addresses to corporate data — and surface individual contact details only when you choose to reveal them. Our data processing is designed to respect privacy while delivering valuable business intelligence."}},{"@type":"Question","name":"How does the free trial work?","acceptedAnswer":{"@type":"Answer","text":"Start your 14-day free trial with full access to all features. No credit card required. At the end of your trial, choose the plan that fits your needs."}},{"@type":"Question","name":"What counts as a unique identification?","acceptedA
1283nswer":{"@type":"Answer","text":"A unique identification is counted when Snitcher successfully identifies a company visiting your website for the first time within your billing period. Return visits from the same company don't count as additional identifications."}},{"@type":"Question","name":"How does Snitcher identify visitors?","acceptedAnswer":{"@type":"Answer","text":"Snitcher uses advanced IP-to-company matching technology combined with our proprietary database to identify the companies behind your website visitors. We match IP addresses to company information with industry-leading accuracy."}},{"@type":"Question","name":"Do you charge per seat/user?","acceptedAnswer":{"@type":"Answer","text":"No. All plans include unlimited team members. Add your whole sales team, marketing team, and RevOps — no extra cost."}},{"@type":"Question","name":"What happens if I exceed my monthly volume?","acceptedAnswer":{"@type":"Answer","text":"If you exceed your monthly identification limit, you can upgrade to a higher tier for more volume. We'll show an in-app warning as you approach your limit so you can plan accordingly."}},{"@type":"Question","name":"What integrations are included?","acceptedA
1283nswer":{"@type":"Answer","text":"All integrations are included in all plans at no extra cost: - CRMs: HubSpot, Salesforce, Pipedrive, Zoho, Dynamics, Attio, Close - Alerts: Slack, email - Analytics: Google Analytics (GA4) - Automation: Zapier, webhooks - Custom: REST API No per-integration fees."}},{"@type":"Question","name":"Why should I pick Snitcher over other providers?","acceptedAnswer":{"@type":"Answer","text":"Snitcher offers the highest identification rates in the industry, seamless integrations with your existing tools, real-time alerts, and dedicated support. Our customers consistently report better data quality and ROI compared to alternatives."}},{"@type":"Question","name":"Can I cancel anytime?","acceptedAnswer":{"@type":"Answer","text":"Yes, you can cancel your subscription at any time. There are no long-term contracts or cancellation fees. Your access continues until the end of your current billing period."}},{"@type":"Question","name":"Do you offer discounts?","acceptedAnswer":{"@type":"Answer","text":"Yes — pay annually and save 30% compared to monthly billing. We also consider discounts for startups, non-profits, and educational institutions, so contact our sales team to learn more."}}
1283,{"@type":"Question","name":"Still have questions?","acceptedAnswer":{"@type":"Answer","text":"We're here to help! Reach out to our support team via chat or email, or schedule a demo call with our sales team to get all your questions answered."}},{"@type":"Question","name":"How do I integrate Snitcher?","acceptedAnswer":{"@type":"Answer","text":"import { Button } from '../../components'; Follow these steps to get started: 1. Install our tracking script on your website 2. Configure your dashboard settings 3. Connect your CRM or marketing tools View all integrations"}}]}</script>
1283<section class="w-full"> <div class="px-6 md:px-16"> <div class="max-w-7xl mx-auto ">  <div class="flex flex-col gap-6 md:gap-10 items-center"> <h3 class="text-h3-mobile md:text-h3 text-center text-zinc-900"> Frequently asked questions </h3> <div class="flex flex-col gap-2 w-full max-w-[720px]"> <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-open data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" aria-expanded="true" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> What is Snitcher? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500 rotate-45" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open --> <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 500px;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>Snitcher identifies the companies visiting your website and turns that traffic into actionable insights. It enriches those companies with firmographic data, filters out noise, and lets GTM teams trigger workflows the moment interest appears.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> Is Snitcher GDPR compliant? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open --> <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>Yes. Snitcher is built for GDPR compliance and processes data under the legitimate interest basis (Art. 6(1)(f) GDPR). We focus on company-level intelligence — matching visitor IP addresses to corporate data — and surface individual contact details only when you choose to reveal them. Our data processing is designed to respect privacy while delivering valuable business intelligence.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> How does the free trial work? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open -->
1283 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>Start your 14-day free trial with full access to all features. No credit card required. At the end of your trial, choose the plan that fits your needs.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> What counts as a unique identification? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open --> <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>A unique identification is counted when Snitcher successfully identifies a company visiting your website for the first time within your billing period. Return visits from the same company don’t count as additional identifications.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> How does Snitcher identify visitors? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open --> <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>Snitcher uses advanced IP-to-company matching technology combined with our proprietary database to identify the companies behind your website visitors. We match IP addresses to company information with industry-leading accuracy.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> Do you charge per seat/user? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open -->
1283 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>No. All plans include unlimited team members. Add your whole sales team, marketing team, and RevOps — no extra cost.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> What happens if I exceed my monthly volume? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open --> <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>If you exceed your monthly identification limit, you can upgrade to a higher tier for more volume. We’ll show an in-app warning as you approach your limit so you can plan accordingly.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> What integrations are included? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open --> <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>All integrations are included in all plans at no extra cost:</p>
1284<ul>
1285<li><strong>CRMs</strong>: HubSpot, Salesforce, Pipedrive, Zoho, Dynamics, Attio, Close</li>
1286<li><strong>Alerts</strong>: Slack, email</li>
1287<li><strong>Analytics</strong>: Google Analytics (GA4)</li>
1288<li><strong>Automation</strong>: Zapier, webhooks</li>
1289<li><strong>Custom</strong>: REST API</li>
1290</ul>
1291<p>No per-integration fees.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> Why should I pick Snitcher over other providers? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open -->
1291 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>Snitcher offers the highest identification rates in the industry, seamless integrations with your existing tools, real-time alerts, and dedicated support. Our customers consistently report better data quality and ROI compared to alternatives.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> Can I cancel anytime? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open --> <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>Yes, you can cancel your subscription at any time. There are no long-term contracts or cancellation fees. Your access continues until the end of your current billing period.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> Do you offer discounts? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open --> <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>Yes — pay annually and save 30% compared to monthly billing. We also consider discounts for startups, non-profits, and educational institutions, so contact our sales team to learn more.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> Still have questions? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open -->
1291 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>We’re here to help! Reach out to our support team via chat or email, or schedule a demo call with our sales team to get all your questions answered.</p> </div>  </div> </div> </div>  </div>   <div class="bg-zinc-50 overflow-hidden  rounded-2xl accordion w-full p-0" data-accordion data-astro-cid-u4rtwtdm>  <button type="button" class="accordion-trigger flex items-center justify-between w-full px-6 py-5 text-left cursor-pointer" data-astro-cid-u4rtwtdm> <span class="accordion-title text-base font-semibold transition-colors text-zinc-900" data-astro-cid-u4rtwtdm> How do I integrate Snitcher? </span> <span class="accordion-icon shrink-0 w-6 h-6 flex items-center justify-center transition-transform duration-200 text-zinc-500" data-astro-cid-u4rtwtdm> <!-- Plus icon that rotates to X when open --> <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-astro-cid-u4rtwtdm> <line x1="12" y1="5" x2="12" y2="19" data-astro-cid-u4rtwtdm></line> <line x1="5" y1="12" x2="19" y2="12" data-astro-cid-u4rtwtdm></line> </svg> </span> </button> <div class="accordion-content overflow-hidden transition-all duration-200 ease-out" style="max-height: 0;" data-astro-cid-u4rtwtdm> <div class="accordion-content-inner px-6 pb-5" data-astro-cid-u4rtwtdm> <div class="text-base text-zinc-700" data-astro-cid-u4rtwtdm>  <div class="faq-answer prose prose-sm max-w-none prose-zinc"> <p>Follow these steps to get started:</p>
1292<ol>
1293<li>Install our <strong>tracking script</strong> on your website</li>
1294<li>Configure your dashboard settings</li>
1295<li>Connect your CRM or marketing tools</li>
1296</ol>
1297<a href="/integrations" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50">View all integrations</a>
1297<script>
1298  (function() {
1299    function initButtonArrows() {
1300      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
1301        if (button.dataset.btnArrowInit) return;
1302        button.dataset.btnArrowInit = 'true';
1303        
1304        var icon = button.querySelector('.btn-arrow-icon');
1305        if (!icon) return;
1306        
1307        button.addEventListener('mouseenter', function() {
1308          icon.classList.remove('slide-out');
1309          icon.classList.add('slide-in');
1310        });
1311        
1312        button.addEventListener('mouseleave', function() {
1313          icon.classList.remove('slide-in');
1314          icon.classList.add('slide-out');
1315        });
1316      });
1317    }
1318
1319    if (document.readyState === 'loading') {
1320      document.addEventListener('DOMContentLoaded', initButtonArrows);
1321    } else {
1322      initButtonArrows();
1323    }
1324    
1325    document.addEventListener('astro:page-load', initButtonArrows);
1326  })();
1327</script>
1327 </div>  </div> </div> </div>  </div>    </div> </div>  </div> </div> </section> <!--
1328  @tailwindcss/typography is NOT installed (tailwind.config.mjs `plugins: []`),
1329  so the `prose*` classes above are inert and Preflight has already reset
1330  `a { color: inherit; text-decoration: inherit }` — without this, links in
1331  answers are indistinguishable from body text. Underline only: the colour stays
1332  inherited from the answer text.
1333-->   </div> </section>    <section class="page-section bg-zinc-50" data-variant="light" data-astro-cid-dnku4hyr>        <div class="section-container bg-white" data-astro-cid-dnku4hyr> <!-- Corner decorations -->     <!-- Content -->  <div class="rounded-2xl overflow-hidden p-8 md:p-10 bg-zinc-50"><div class="flex flex-col gap-6 lg:flex-row lg:justify-between lg:items-end"><div class="flex flex-col gap-4 lg:max-w-[50%]"><h2 class="tracking-tight text-balance">Your pipeline won&#39;t wait while you compare tabs</h2><p class="text-balance">One closed deal from a visitor you would&#39;ve missed covers a full year. Start free and do the math yourself.</p></div><div class="flex flex-col sm:flex-row gap-2 items-stretch sm:items-start w-full sm:w-auto lg:shrink-0"><div class="flex flex-col sm:flex-row gap-2 items-stretch sm:items-start w-full sm:w-auto"> <a href="/demo" class="inline-flex items-center justify-center gap-2 pl-1 pr-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white ring-1 ring-[var(--alpha-border)] !text-zinc-700 hover:bg-zinc-50 w-full sm:w-auto justify-center"><span class="flex items-center -space-x-1.5 isolate"> <span class="w-8 h-8 bg-jade-500 rounded-full border-2 border-white flex items-center justify-center z-30"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" class="w-5 h-5"> <path fill-rule="evenodd" clip-rule="evenodd" d="M9.0017 14C9.0017 10.134 12.1357 6.99999 16.0017 6.99999C19.8677 6.99999 23.0017 10.134 23.0017 14C23.0017 17.866 19.8677 21 16.0017 21C12.1357 21 9.0017 17.866 9.0017 14ZM16.0017 11C16.554 11 17.0017 11.4477 17.0017 12V13.5858L18.3755 14.9595C18.766 15.3501 18.766 15.9832 18.3755 16.3738C17.9849 16.7643 17.3518 16.7643 16.9613 16.3738L15.2946 14.7071C15.1071 14.5196 15.0017 14.2652 15.0017 14V12C15.0017 11.4477 15.4494 11 16.0017 11Z" fill="white"></path> <path d="M1.59659 9.34793C1.21298 7.17236 2.66566 5.09772 4.84123 4.71411L11.7349 3.49857C13.2569 3.23019 14.7296 3.86059 15.6083 5.00852C13.1074 5.11659 10.871 6.24533 9.30541 7.98866L1.59659 9.34793Z" fill="white"></path> <path d="M7.80399 10.2843L1.94389 11.3175L2.63848 15.2568C3.0221 17.4324 5.09673 18.885 7.27231 18.5014L8.12348 18.3513C7.40983 17.0617 7.00356 15.5783 7.00356 14C7.00356 12.675 7.28987 11.417 7.80399 10.2843Z" fill="white"></path> </svg> </span> <img src="/_astro/leon.c0wmlxiL_Z2wsuca.webp" alt="" class="w-8 h-8 border-2 border-white rounded-full object-cover z-20" loading="lazy" decoding="auto" width="600" height="600"><img src="/_astro/dean.7I-5NM-k_Z114K5E.webp" alt="" class="w-8 h-8 border-2 border-white rounded-full object-cover z-10" loading="lazy" decoding="auto" width="600" height="600"> </span><span>Talk to the team</span></a>
1333<script>
1334  (function() {
1335    function initButtonArrows() {
1336      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
1337        if (button.dataset.btnArrowInit) return;
1338        button.dataset.btnArrowInit = 'true';
1339        
1340        var icon = button.querySelector('.btn-arrow-icon');
1341        if (!icon) return;
1342        
1343        button.addEventListener('mouseenter', function() {
1344          icon.classList.remove('slide-out');
1345          icon.classList.add('slide-in');
1346        });
1347        
1348        button.addEventListener('mouseleave', function() {
1349          icon.classList.remove('slide-in');
1350          icon.classList.add('slide-out');
1351        });
1352      });
1353    }
1354
1355    if (document.readyState === 'loading') {
1356      document.addEventListener('DOMContentLoaded', initButtonArrows);
1357    } else {
1358      initButtonArrows();
1359    }
1360    
1361    document.addEventListener('astro:page-load', initButtonArrows);
1362  })();
1363</script>
1363 <a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-primary-500 !text-white hover:bg-primary-600 btn-with-arrow w-full sm:w-auto justify-center">Start free<span class="btn-arrow-wrap"><svg width="20" height="20" class="btn-arrow-icon !text-white" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"><path fill-rule="evenodd" clip-rule="evenodd" d="M13.1161 5.36612C13.6043 4.87796 14.3957 4.87796 14.8839 5.36612L20.6339 11.1161C20.8683 11.3505 21 11.6685 21 12C21 12.3315 20.8683 12.6494 20.6339 12.8839L14.8839 18.6339C14.3957 19.122 13.6043 19.122 13.1161 18.6339C12.628 18.1457 12.628 17.3543 13.1161 16.8661L16.7322 13.25H4.25C3.55964 13.25 3 12.6903 3 12C3 11.3096 3.55964 10.75 4.25 10.75H16.7322L13.1161 7.13388C12.628 6.64573 12.628 5.85427 13.1161 5.36612Z" fill="currentColor"/></svg>
1364</span></a>
1364<script>
1365  (function() {
1366    function initButtonArrows() {
1367      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
1368        if (button.dataset.btnArrowInit) return;
1369        button.dataset.btnArrowInit = 'true';
1370        
1371        var icon = button.querySelector('.btn-arrow-icon');
1372        if (!icon) return;
1373        
1374        button.addEventListener('mouseenter', function() {
1375          icon.classList.remove('slide-out');
1376          icon.classList.add('slide-in');
1377        });
1378        
1379        button.addEventListener('mouseleave', function() {
1380          icon.classList.remove('slide-in');
1381          icon.classList.add('slide-out');
1382        });
1383      });
1384    }
1385
1386    if (document.readyState === 'loading') {
1387      document.addEventListener('DOMContentLoaded', initButtonArrows);
1388    } else {
1389      initButtonArrows();
1390    }
1391    
1392    document.addEventListener('astro:page-load', initButtonArrows);
1393  })();
1394</script>
1394 </div></div></div></div>  </div> </section>     </main> <footer class="w-full relative z-0" data-astro-cid-fqw42ge2> <!-- Footer CTA Section -->
1395  <section class="w-full bg-zinc-950 relative overflow-hidden" data-astro-cid-fqw42ge2> <!-- Fingerprint SVG Background with Solar Flare Animation --> <div class="absolute" style="top: -55.24%; left: 50%; transform: translateX(-50%); bottom: -58.45%; width: 1280px; height: 725px;" data-astro-cid-fqw42ge2> <svg xmlns="http://www.w3.org/2000/svg" width="1280" height="725" viewBox="0 0 911 516" fill="none" style="width: 100%; height: 100%; display: block;" class="fingerprint-svg" data-astro-cid-fqw42ge2> <defs data-astro-cid-fqw42ge2> <!-- Fade mask for bottom of fingerprint --> <mask id="footer-fingerprint-fade" data-astro-cid-fqw42ge2> <rect width="911" height="516" fill="white" data-astro-cid-fqw42ge2></rect> <rect x="0" y="376" width="911" height="140" fill="url(#footer-fade-gradient)" data-astro-cid-fqw42ge2></rect> </mask> <linearGradient id="footer-fade-gradient" x1="0" y1="0" x2="0" y2="1" gradientUnits="objectBoundingBox" data-astro-cid-fqw42ge2> <stop offset="0" stop-color="white" data-astro-cid-fqw42ge2></stop> <stop offset="1" stop-color="black" data-astro-cid-fqw42ge2></stop> </linearGradient> </defs> <!-- Base fingerprint path --> <path d="M479.105 123.715C508.165 123.715 537.121 127.711 565.171 135.593H565.172C723.388 180.032 810.209 336.775 758.861 484.95C672.839 733.133 441.175 815.165 372.169 834.403H372.168C366.003 836.13 360.107 837 354.642 837C336.377 837 326.758 827.516 324.962 818.309L324.883 817.87C323.209 807.91 329.776 793.276 355.402 786.121C417.687 768.769 627.121 694.667 705.011 469.948C725.42 411.091 720.361 348.893 690.761 294.827C661.139 240.726 610.544 201.314 548.32 183.835C525.75 177.497 502.431 174.283 479.011 174.283C371.227 174.283 272.458 241.933 238.85 338.877C233.287 354.919 218.695 366.846 205.139 366.846C197.37 366.846 192.438 362.809 189.639 359.385C182.575 350.738 180.643 336.461 185.006 323.875C225.841 206.064 346.768 123.715 479.105 123.715ZM478.957 1C521.618 1.00001 564.274 6.90814 605.741 18.5576C716.526 49.6745 807.083 118.96 860.766 213.628C914.723 308.784 924.703 418.105 888.864 521.47C850.909 630.962 781.867 729.724 689.108 807.245L686.913 809.072C674.246 819.571 663.235 821.729 656.295 821.729C645.632 821.729 636.927 816.576 633.413 808.462C628.742 797.678 633.925 784.249 648.096 772.514H648.097C735.016 700.475 799.655 608.478 835.02 506.468C866.145 416.68 857.829 321.486 811.604 238.445C765.548 155.708 687.314 95.0634 591.164 67.4512L588.89 66.8057C553.722 56.9306 517.085 51.9238 479.998 51.9238C310.011 51.9239 160.83 152.525 108.854 302.354C96.7623 337.202 102.92 374.427 125.368 401.906C144.581 425.426 173.675 438.9 205.174 438.9C253.822 438.9 298.979 406.62 315.014 360.395V360.394C338.279 293.254 405.65 246.323 478.859 246.323C494.333 246.323 509.728 248.445 524.608 252.625C566.639 264.424 600.584 291.382 620.213 328.518C639.767 365.513 642.843 408.092 628.859 448.432C570.466 616.91 396.076 734.653 204.729 734.653C180.618 734.653 156.325 732.773 132.521 729.062H132.52C106.527 725.021 96.6245 711.156 97.7158 699.718C98.7049 689.31 109.097 678.338 130.959 678.338C134.503 678.338 138.264 678.642 142.138 679.243C162.762 682.456 183.832 684.085 204.76 684.085H204.761C370.933 684.071 522.658 581.841 574.417 435.154L575.021 433.426C594.797 376.342 564.645 316.848 507.754 300.864H507.753C498.292 298.212 488.494 296.864 478.629 296.864C430.011 296.864 384.88 329.156 368.849 375.396V375.396C345.592 442.527 278.225 489.448 205.022 489.448C155.516 489.448 109.979 468.431 80.0645 431.818C47.034 391.388 37.6623 337.388 55.0059 287.355C113.434 118.797 287.749 1 478.957 1ZM477.126 369.297C479.15 369.297 481.136 369.531 483.041 369.995L483.853 370.208C490.288 372.016 496.057 376.531 499.22 383.507C502.381 390.481 502.979 400.016 498.863 411.912C457.99 529.799 336.787 612.2 204.079 612.2H204.047C137.242 612.195 73.7533 591.267 20.3223 551.662L19.0625 550.723C3.84284 539.273 -2.02901 525.738 2.49023 514.525C5.87123 506.138 14.6726 500.811 25.6582 500.811C35.1161 500.811 45.338 504.677 55.2158 512.099C98.2043 544.388 149.664 561.455 204.021 561.455C312.304 561.455 411.42 493.831 445.02 396.916V396.915C452.117 376.42 466.351 369.297 477.126 369.297Z" stroke="white" stroke-opacity="0.1" stroke-width="2" mask="url(#footer-fingerprint-fade)" data-astro-cid-fqw42ge2></path> </svg> <!-- Canvas overlay for GPU-accelerated flare animation --> <canvas class="fingerprint-canvas" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none;" aria-hidden="true" data-astro-cid-fqw42ge2></canvas> </div> <!-- Gradient fade at bottom --> <div class="absolute bottom-0 left-1/2 -translate-x-1/2 w-full max-w-screen-2xl h-60 bg-gradient-to-b from-transparent via-zinc-950/50 to-zinc-950 pointer-events-none" data-astro-cid-fqw42ge2></div> <!-- Content Container --> <div class="relative z-10 py-20 md:py-40 px-6 md:px-16" data-astro-cid-fqw42ge2> <div class="max-w-7xl mx-auto" data-astro-cid-fqw42ge2> <div class="flex flex-col gap-8 items-center justify-center px-0 rounded-t-3xl" data-astro-cid-fqw42ge2> <div class="flex flex-col gap-2 items-center max-w-xl w-full" data-astro-cid-fqw42ge2> <!-- Heading --> <h2 class="text-center text-white" data-astro-cid-fqw42ge2>
1396Own every revenue moment
1397</h2> <!-- Subheading --> <p class="text-lg text-center text-white" data-astro-cid-fqw42ge2>
1398Spot real buyers, take action and win more deals with Snitcher.
1399</p> </div> <!-- Action Buttons --> <div class="flex flex-col md:flex-row gap-2 items-stretch md:items-start w-full md:w-auto" data-astro-cid-fqw42ge2> <a href="/demo" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white/10 border border-white/10 !text-zinc-100 hover:bg-white/20 backdrop-blur-sm w-full md:w-auto justify-center">Talk to sales</a>
1399<script>
1400  (function() {
1401    function initButtonArrows() {
1402      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
1403        if (button.dataset.btnArrowInit) return;
1404        button.dataset.btnArrowInit = 'true';
1405        
1406        var icon = button.querySelector('.btn-arrow-icon');
1407        if (!icon) return;
1408        
1409        button.addEventListener('mouseenter', function() {
1410          icon.classList.remove('slide-out');
1411          icon.classList.add('slide-in');
1412        });
1413        
1414        button.addEventListener('mouseleave', function() {
1415          icon.classList.remove('slide-in');
1416          icon.classList.add('slide-out');
1417        });
1418      });
1419    }
1420
1421    if (document.readyState === 'loading') {
1422      document.addEventListener('DOMContentLoaded', initButtonArrows);
1423    } else {
1424      initButtonArrows();
1425    }
1426    
1427    document.addEventListener('astro:page-load', initButtonArrows);
1428  })();
1429</script>
1429 <a href="https://app.snitcher.com/register" class="inline-flex items-center justify-center gap-2 px-4 h-10 rounded-full font-semibold text-base transition-colors shadow group !no-underline cursor-pointer focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2  bg-white !text-zinc-950 hover:bg-zinc-100 !pl-3 w-full md:w-auto justify-center"> <svg width="20" height="20" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg" class="shrink-0" aria-hidden="true"> <path d="M211.265 148.37C187.598 224.219 123.858 249.286 104.886 255.161C89.5631 259.93 84.2516 243.014 99.6384 238.244C116.524 233.017 173.258 210.709 194.355 143.094C205.691 106.783 186.837 68.5577 152.325 57.79C117.074 46.7923 80.2423 68.8045 69.2412 104.054C67.5848 109.361 63.152 113.363 58.9333 113.363C52.8997 113.363 50.3043 105.281 52.3341 98.7783C66.1181 54.6057 112.724 26.8804 157.601 40.8841C202.129 54.7776 225.257 103.517 211.265 148.37ZM168.681 5.37712C102.536 -15.2639 36.1026 25.9353 16.8302 87.6986C7.05086 119.034 28.0846 150.559 58.9017 150.559C79.3873 150.559 98.2403 135.991 104.747 115.134C109.855 98.7636 126.062 88.5621 141.246 93.2947C156.164 97.95 164.06 115.32 158.854 132.015C145.032 176.301 103.905 207.232 58.8369 207.236H58.8306C53.1805 207.236 47.4893 206.748 41.9193 205.783C26.0231 203.042 23.0907 220.506 38.9072 223.237C45.4654 224.373 52.1665 224.95 58.822 224.95C111.569 224.95 159.656 188.902 175.758 137.291C183.809 111.494 170.991 84.021 146.522 76.39C121.831 68.6852 95.7658 84.4535 87.8419 109.858C83.6147 123.396 71.7306 132.852 58.9427 132.852C40.047 132.852 27.4971 112.952 33.7365 92.9742C51.7151 35.4079 111.149 5.98231 163.405 22.2851C217.821 39.2652 247.198 98.6229 229.863 154.174C220.278 184.887 202.64 212.731 179.141 234.367C167.297 245.262 179.436 258.135 191.286 247.224C217.073 223.484 236.259 193.132 246.77 159.45C267.275 93.7541 231.625 25.0164 168.681 5.37712ZM58.6439 187.8C95.3789 187.8 128.937 162.473 140.255 126.211C142.694 118.381 139.514 113.349 135.392 112.062C131.306 110.787 125.784 113.124 123.348 120.937C114.327 149.843 87.7136 170.032 58.6287 170.032C44.0506 170.032 30.2484 164.946 18.717 155.324C6.35199 145.002 -4.98893 158.544 7.38454 168.884C22.2568 181.257 39.9787 187.797 58.6349 187.8H58.6439Z" fill="currentColor"></path> </svg> <span>Start for free</span> </a>
1429<script>
1430  (function() {
1431    function initButtonArrows() {
1432      document.querySelectorAll('.btn-with-arrow').forEach(function(button) {
1433        if (button.dataset.btnArrowInit) return;
1434        button.dataset.btnArrowInit = 'true';
1435        
1436        var icon = button.querySelector('.btn-arrow-icon');
1437        if (!icon) return;
1438        
1439        button.addEventListener('mouseenter', function() {
1440          icon.classList.remove('slide-out');
1441          icon.classList.add('slide-in');
1442        });
1443        
1444        button.addEventListener('mouseleave', function() {
1445          icon.classList.remove('slide-in');
1446          icon.classList.add('slide-out');
1447        });
1448      });
1449    }
1450
1451    if (document.readyState === 'loading') {
1452      document.addEventListener('DOMContentLoaded', initButtonArrows);
1453    } else {
1454      initButtonArrows();
1455    }
1456    
1457    document.addEventListener('astro:page-load', initButtonArrows);
1458  })();
1459</script>
1459 </div> </div> </div> </div> </section> <!-- Main Footer Content. Normally `pt-0` — the callout above supplies the top
1460       space. Without it the link columns would jam against the page. --> <div class="w-full bg-zinc-950 px-6 md:px-16 pb-8 pt-0" data-astro-cid-fqw42ge2> <div class="max-w-7xl mx-auto" data-astro-cid-fqw42ge2> <!-- Main Content: Logo and Navigation --> <div class="flex flex-col md:flex-row gap-24 items-start mb-16 md:mb-24 pt-0" data-astro-cid-fqw42ge2> <!-- Left Column: Logo, Tagline, Badges --> <div class="flex flex-col gap-8 w-full md:w-1/2" data-astro-cid-fqw42ge2> <!-- Logo --> <a href="/" class="flex items-center gap-2.5 w-64 h-14" data-astro-cid-fqw42ge2> <img src="/logo-symbol.svg" alt="Snitcher symbol" class="w-12 h-12 object-contain brightness-0 invert" loading="lazy" decoding="auto" data-astro-cid-fqw42ge2> <img src="/logo-wordmark.svg" alt="Snitcher" class="w-48 h-9 object-contain brightness-0 invert" loading="lazy" decoding="auto" data-astro-cid-fqw42ge2> </a> <!-- Tagline --> <p class="text-lg text-white" data-astro-cid-fqw42ge2>
1461Uncover your hidden website visitors.
1462</p> <!-- G2 Badges — the current release, straight off src/data/g2-badges.ts --> <a href="https://www.g2.com/products/snitcher/reviews" target="_blank" rel="noopener noreferrer" class="flex gap-2 items-center flex-wrap hover:opacity-80 transition-opacity"> <img src="/_astro/g2-summer-2026-leader.DXAU52y-.svg" alt="G2 Summer 2026 Leader" class="w-20 object-contain" loading="lazy" decoding="auto"><img src="/_astro/g2-summer-2026-best-results.DpsubBts.svg" alt="G2 Summer 2026 Best Results" class="w-20 object-contain" loading="lazy" decoding="auto"><img src="/_astro/g2-summer-2026-best-usability-smb.DbiWjGVi.svg" alt="G2 Summer 2026 Best Usability Small Business" class="w-20 object-contain" loading="lazy" decoding="auto"><img src="/_astro/g2-summer-2026-most-implementable.XtG3_GLc.svg" alt="G2 Summer 2026 Most Implementable" class="w-20 object-contain" loading="lazy" decoding="auto"><img src="/_astro/g2-summer-2026-best-estimated-roi-mid-market.CYMbXl6r.svg" alt="G2 Summer 2026 Best Estimated ROI Mid-Market" class="w-20 object-contain" loading="lazy" decoding="auto"><img src="/_astro/g2-summer-2026-best-relationship-smb.D5l7xB20.svg" alt="G2 Summer 2026 Best Relationship Small Business" class="w-20 object-contain" loading="lazy" decoding="auto"> </a> <!-- Compliance Badges --> <a href="https://trust.snitcher.com" target="_blank" rel="noopener noreferrer" class="flex gap-4 items-center hover:opacity-80 transition-opacity" data-astro-cid-fqw42ge2> <!-- GDPR Badge --> <img src="/footer-badges/gdpr-compliant.svg" alt="GDPR Compliant" class="w-16 object-contain" loading="lazy" decoding="auto" data-astro-cid-fqw42ge2> <!-- ISO 27001 Badge --> <img src="/footer-badges/iso-27001.svg" alt="ISO 27001 In Progress" class="w-16 object-contain" loading="lazy" decoding="auto" data-astro-cid-fqw42ge2> </a> <!-- Partner Program Callout --> <div class="partner-callout flex items-center gap-2.5 pt-2" data-astro-cid-fqw42ge2> <!-- Partner badge → links to the agency partner program explainer --> <a href="/partners/agency-program" class="partner-badge-link inline-flex shrink-0 rounded-xl transition-transform duration-200 hover:-translate-y-0.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-lavender-400 focus-visible:ring-offset-2 focus-visible:ring-offset-zinc-950" aria-label="Join the Snitcher agency partner program" data-astro-cid-fqw42ge2> <img src="/footer-badges/snitcher-partner.svg" alt="Snitcher Certified Partner" class="w-32 object-contain" loading="lazy" decoding="auto" data-astro-cid-fqw42ge2> </a> <!-- Doodle arrow pointing left at the badge --> <svg class="fill-current w-8 h-8 shrink-0 rotate-180 text-lavender-300" viewBox="0 -66.5 220 220" fill="none" xmlns="http://www.w3.org/2000/svg" data-astro-cid-fqw42ge2> <path d="M3.17247 25.8421C5.28745 28.1788 7.82542 30.0907 9.7289 32.6399C26.0142 55.3699 49.279 66.6287 75.0817 72.7892C83.9646 74.9135 94.1165 74.7011 103.211 72.7892C129.225 67.6909 152.913 56.8569 173.428 39.8625C179.35 34.9766 184.426 28.8161 188.656 21.8059C186.33 22.6556 183.792 23.5054 181.465 24.5675C174.697 27.5415 167.929 30.728 160.95 33.2772C157.989 34.3393 154.393 34.3393 151.009 34.1269C149.74 34.1269 147.837 32.215 147.625 30.9404C147.414 29.6658 148.683 27.3291 149.74 27.1167C167.718 21.5935 183.369 10.972 199.654 1.83746C205.364 -1.34899 208.96 -0.49927 211.498 5.23635C217.631 19.4692 220.381 34.5517 219.958 50.0592C219.958 50.484 219.112 51.1213 217.843 52.3959C205.364 47.7224 209.171 34.1269 203.038 23.2929C201.557 25.8421 200.5 27.9664 199.231 29.6658C172.582 62.5926 137.262 80.0118 96.2315 86.3848C90.0981 87.4469 83.3301 87.022 76.9852 85.9599C53.7205 81.9237 32.9937 72.1519 15.8623 55.7948C10.3634 50.484 6.34493 43.4738 2.32647 36.8885C0.634492 34.3393 0.634494 30.728 0 27.754C1.05749 27.1167 2.11498 26.4794 3.17247 25.8421Z" data-astro-cid-fqw42ge2></path> </svg> <!-- Hand-written note --> <span class="font-hand text-2xl leading-[1.05] text-lavender-300 -rotate-2" data-astro-cid-fqw42ge2>
1463Run an agency?<br data-astro-cid-fqw42ge2>Join our partner programme
1464</span> </div> </div> <!-- Right Column: Navigation Links --> <div class="w-full md:w-1/2" data-astro-cid-fqw42ge2> <div class="grid grid-cols-2 md:grid-cols-3 gap-x-4 gap-y-8" data-astro-cid-fqw42ge2> <div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Product</h5> <a href="/platform" class="footer-nav-link" data-astro-cid-fqw42ge2> Platform </a><a href="/radar" class="footer-nav-link" data-astro-cid-fqw42ge2> Radar </a><a href="/ip-to-company-api" class="footer-nav-link" data-astro-cid-fqw42ge2> IP to Company </a><a href="/integrations" class="footer-nav-link" data-astro-cid-fqw42ge2> Integrations </a><a href="/changelog" class="footer-nav-link" data-astro-cid-fqw42ge2> Changelog </a> </div><div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Journey</h5> <a href="/identify" class="footer-nav-link" data-astro-cid-fqw42ge2> Identify </a><a href="/signal" class="footer-nav-link" data-astro-cid-fqw42ge2> Signal </a><a href="/automate" class="footer-nav-link" data-astro-cid-fqw42ge2> Automate </a><a href="/engage" class="footer-nav-link" data-astro-cid-fqw42ge2> Engage </a><a href="/measure" class="footer-nav-link" data-astro-cid-fqw42ge2> Measure </a> </div><div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Teams</h5> <a href="/solutions/sales" class="footer-nav-link" data-astro-cid-fqw42ge2> Sales </a><a href="/solutions/marketing" class="footer-nav-link" data-astro-cid-fqw42ge2> Marketing </a><a href="/solutions/revops" class="footer-nav-link" data-astro-cid-fqw42ge2> RevOps </a><a href="/solutions/agency" class="footer-nav-link" data-astro-cid-fqw42ge2> Agency </a> </div><div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Use Cases</h5> <a href="/use-cases/account-scoring" class="footer-nav-link" data-astro-cid-fqw42ge2> Account scoring </a><a href="/use-cases/contact-reveal" class="footer-nav-link" data-astro-cid-fqw42ge2> Contact reveal </a><a href="/use-cases/enrich-ga4" class="footer-nav-link" data-astro-cid-fqw42ge2> GA4 enrichment </a><a href="/use-cases/lead-generation" class="footer-nav-link" data-astro-cid-fqw42ge2> Lead generation </a><a href="/use-cases/marketing-attribution" class="footer-nav-link" data-astro-cid-fqw42ge2> Marketing attribution </a><a href="/use-cases/visitor-identification" class="footer-nav-link" data-astro-cid-fqw42ge2> Visitor identification </a> </div><div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Resources</h5> <a href="/blog" class="footer-nav-link" data-astro-cid-fqw42ge2> Blog </a><a href="https://docs.snitcher.com" class="footer-nav-link" target="_blank" rel="noopener noreferrer" data-astro-cid-fqw42ge2> Documentation </a><a href="https://help.snitcher.com" class="footer-nav-link" target="_blank" rel="noopener noreferrer" data-astro-cid-fqw42ge2> Help center </a><a href="/partners" class="footer-nav-link" data-astro-cid-fqw42ge2> Partner Program </a><a href="/refer" class="footer-nav-link" data-astro-cid-fqw42ge2> Refer a friend </a> </div><div class="flex flex-col gap-4" data-astro-cid-fqw42ge2> <h5 class="text-white" data-astro-cid-fqw42ge2>Company</h5> <a href="/about" class="footer-nav-link" data-astro-cid-fqw42ge2> About us </a><a href="/careers" class="footer-nav-link" data-astro-cid-fqw42ge2> Careers </a><a href="#" class="footer-nav-link" data-astro-cid-fqw42ge2> Contact </a><a href="/customers" class="footer-nav-link" data-astro-cid-fqw42ge2> Customers </a><a href="https://trust.snitcher.com" class="footer-nav-link" target="_blank" rel="noopener noreferrer" data-astro-cid-fqw42ge2> Trust centre </a> </div> </div> </div> </div> <!-- Bottom Row: Copyright and Links --> <div class="flex items-center justify-between pt-0" data-astro-cid-fqw42ge2> <p class="text-sm text-zinc-400" data-astro-cid-fqw42ge2>
1465&copy; 2026 Snitcher. All rights reserved.
1466</p> <div class="flex gap-4 items-center" data-astro-cid-fqw42ge2> <a href="/privacy-policy" class="footer-bottom-link" data-astro-cid-fqw42ge2>Privacy Policy</a><a href="/terms-conditions" class="footer-bottom-link" data-astro-cid-fqw42ge2>Terms &amp; Conditions</a><a href="/cookie-policy" class="footer-bottom-link" data-astro-cid-fqw42ge2>Cookie Policy</a> </div> </div> </div> </div> </footer>   <!-- Footer Scripts --> <!-- Showdown (Markdown converter - may be needed for dynamic content) -->
1466<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/2.1.0/showdown.min.js" async></script>
1466 <!-- 
1467  UTM Parameter Persistence is now handled by the AttributionProvider component.
1468  See: src/components/components/AttributionProvider.astro
1469  See: src/lib/attribution.ts
1470  
1471  The AttributionProvider captures UTM params, stores them, and updates
1472  all app.snitcher.com links automatically.
1473--><!-- Intercom Chat Triggers (event delegation — survives View Transitions) -->
1473<script>
1474if (!window.__intercomChatTriggersAdded) {
1475  window.__intercomChatTriggersAdded = true;
1476  document.addEventListener('click', function(e) {
1477    var target = e.target.closest('#start-chat, #start-whitelabel-chat');
1478    if (!target) return;
1479    if (typeof Intercom === 'undefined') return;
1480
1481    if (target.id === 'start-chat') {
1482      Intercom('showNewMessage');
1483    } else if (target.id === 'start-whitelabel-chat') {
1484      Intercom('showNewMessage', 'Can you tell me more about your whitelabel programme?');
1485    }
1486  });
1487}
1488</script>
1488 <!-- 
1489  Currency Localization is now handled by the CurrencyProvider component.
1490  See: src/components/components/CurrencyProvider.astro
1491  
1492  The CurrencyProvider also maintains backward compatibility with 
1493  .swap-currency and .swap-currency-2 classes for legacy elements.
1494--> <!-- Attribution & Currency -->   <!-- Event Tracking --> 
1494<script>
1495(function() {
1496  window.dataLayer = window.dataLayer || [];
1497
1498  // --- Page metadata ---
1499  function pushPageMetadata() {
1500    var path = window.location.pathname;
1501    var pageType = 'page';
1502    if (path === '/') pageType = 'homepage';
1503    else if (path.startsWith('/blog')) pageType = 'blog';
1504    else if (path.startsWith('/customers')) pageType = 'case-study';
1505    else if (path.startsWith('/partners')) pageType = 'partner';
1506    else if (path.startsWith('/solutions')) pageType = 'solution';
1507    else if (path.startsWith('/features')) pageType = 'feature';
1508    else if (path.startsWith('/use-cases')) pageType = 'use-case';
1509    else if (path.startsWith('/pricing')) pageType = 'pricing';
1510    else if (path.startsWith('/demo')) pageType = 'demo';
1511    else if (path.startsWith('/integrations')) pageType = 'integration';
1512    else if (path.startsWith('/privacy') || path.startsWith('/terms') || path.startsWith('/legal')) pageType = 'legal';
1513
1514    // dataLayer-only: Radar's native pageview already covers page context.
1515    window.dataLayer.push({
1516      event: 'page_context',
1517      page_type: pageType,
1518      page_path: path,
1519      page_title: document.title
1520    });
1521  }
1522
1523  // --- CTA click tracking ---
1524  function trackCTAClicks() {
1525    document.addEventListener('click', function(e) {
1526      var link = e.target.closest('a[href]');
1527      if (!link) return;
1528
1529      var href = link.getAttribute('href') || '';
1530      var text = (link.textContent || '').trim().substring(0, 100);
1531      var classes = link.className || '';
1532
1533      // Track clicks to app.snitcher.com (signup/login CTAs)
1534      if (href.indexOf('app.snitcher.com') !== -1) {
1535        window.snitcherTrack('cta_clicked', {
1536          cta_text: text,
1537          cta_url: href,
1538          cta_location: getLinkLocation(link),
1539          cta_type: 'app_link'
1540        });
1541        return;
1542      }
1543
1544      // Track clicks on button-styled elements (primary CTAs)
1545      if (classes.indexOf('btn') !== -1 || classes.indexOf('button') !== -1 ||
1546          link.querySelector('button') || link.getAttribute('role') === 'button') {
1547        window.snitcherTrack('cta_clicked', {
1548          cta_text: text,
1549          cta_url: href,
1550          cta_location: getLinkLocation(link),
1551          cta_type: 'button'
1552        });
1553        return;
1554      }
1555
1556      // Track demo page links
1557      if (href.indexOf('/demo') !== -1) {
1558        window.snitcherTrack('cta_clicked', {
1559          cta_text: text,
1560          cta_url: href,
1561          cta_location: getLinkLocation(link),
1562          cta_type: 'demo_request'
1563        });
1564      }
1565    });
1566  }
1567
1568  // --- Intercom chat tracking ---
1569  function trackIntercomOpens() {
1570    var chatButtons = document.querySelectorAll('#start-chat, #start-whitelabel-chat');
1571    chatButtons.forEach(function(btn) {
1572      if (btn.hasAttribute('data-track-bound')) return;
1573      btn.setAttribute('data-track-bound', 'true');
1574      btn.addEventListener('click', function() {
1575        window.snitcherTrack('intercom_chat_opened', {
1576          chat_trigger: btn.id
1577        });
1578      });
1579    });
1580  }
1581
1582  // --- HubSpot form submission tracking (iframe embeds) ---
1583  // Radar's native formTracking can't see inside HubSpot iframes; this
1584  // postMessage hook is the only signal for those, and the submitted email
1585  // de-anonymizes the visitor's whole session via identify().
1586  function trackHubSpotForms() {
1587    window.addEventListener('message', function(event) {
1588      if (event.data && event.data.type === 'hsFormCallback' && event.data.eventName === 'onFormSubmitted') {
1589        window.snitcherTrack('hubspot_form_submitted', {
1590          form_id: event.data.id || 'unknown'
1591        });
1592
1593        try {
1594          var values = event.data.data && event.data.data.submissionValues;
1595          var email = values && values.email;
1596          if (email && email.indexOf('@') !== -1 &&
1597              window.Snitcher && typeof window.Snitcher.identify === 'function') {
1598            window.Snitcher.identify(email);
1599          }
1600        } catch (err) { /* ignore */ }
1601      }
1602    });
1603  }
1604
1605  // --- Identify visitors we already know by email (personalized links) ---
1606  // PersonalizationCapture stores the email from outbound-campaign URLs;
1607  // pass it to Radar once per session so the whole visit is de-anonymized.
1608  function identifyFromPersonalization() {
1609    try {
1610      var api = window.SnitcherPersonalization;
1611      var data = api && api.get && api.get();
1612      var email = data && data.email;
1613      if (!email || email.indexOf('@') === -1) return;
1614
1615      var key = 'snitcher_identified_' + email.toLowerCase();
1616      if (sessionStorage.getItem(key)) return;
1617      if (window.Snitcher && typeof window.Snitcher.identify === 'function') {
1618        window.Snitcher.identify(email);
1619        sessionStorage.setItem(key, '1');
1620      }
1621    } catch (err) { /* ignore */ }
1622  }
1623
1624  // --- Persist attribution + geo as Radar visitor traits ---
1625  // Radar has no client-side UTM breakout; register() stores traits on the
1626  // visitor without emitting an event, so every later event carries them.
1627  function registerVisitorTraits() {
1628    function pushAttributionTraits(attribution) {
1629      try {
1630        if (attribution && Object.keys(attribution).length > 0 &&
1631            window.Snitcher && typeof window.Snitcher.register === 'function') {
1632          window.Snitcher.register(attribution);
1633        }
1634      } catch (err) { /* ignore */ }
1635    }
1636
1637    // AttributionProvider may have dispatched attributionReady before this
1638    // inline script's init ran — read the current state directly, then keep
1639    // listening for later captures (view-transition navigations).
1640    try {
1641      var api = window.SnitcherAttribution;
1642      if (api && typeof api.get === 'function') {
1643        pushAttributionTraits(api.get());
1644      }
1645    } catch (err) { /* ignore */ }
1646
1647    window.addEventListener('attributionReady', function(e) {
1648      pushAttributionTraits(e.detail || {});
1649    });
1650
1651    try {
1652      var currency = window.SnitcherCurrency;
1653      if (currency && typeof currency.onCountryReady === 'function') {
1654        currency.onCountryReady(function(geo) {
1655          try {
1656            if (geo && window.Snitcher && typeof window.Snitcher.register === 'function') {
1657              window.Snitcher.register({
1658                country_code: geo.countryCode || null,
1659                region: geo.region || null,
1660                is_eu: Boolean(geo.isEu)
1661              });
1662            }
1663          } catch (err) { /* ignore */ }
1664        });
1665      }
1666    } catch (err) { /* ignore */ }
1667  }
1668
1669  // --- Tab / filter interactions (Tabs.astro dispatches bubbling 'tabchange') ---
1670  function trackTabChanges() {
1671    document.addEventListener('tabchange', function(e) {
1672      var el = e.target;
1673      var elId = (el && el.id) || '';
1674      // PricingSection emits its own richer pricing_billing_toggled event.
1675      if (elId === 'billing-tabs') return;
1676      window.snitcherTrack('tab_filter_changed', {
1677        tab_id: (e.detail && e.detail.tabId) || '',
1678        tabs_element: elId,
1679        page_path: window.location.pathname
1680      });
1681    });
1682  }
1683
1684  // --- Integration detail views ---
1685  // The detail page stamps [data-track-integration] with name/category/status
1686  // so coming-soon and beta interest is measurable per integration.
1687  function trackIntegrationView() {
1688    var el = document.querySelector('[data-track-integration]');
1689    if (!el) return;
1690    window.snitcherTrack('integration_viewed', {
1691      integration: el.getAttribute('data-integration-name') || '',
1692      category: el.getAttribute('data-integration-category') || '',
1693      status: el.getAttribute('data-integration-status') || 'stable',
1694      page_path: window.location.pathname
1695    });
1696  }
1697
1698  // --- Journey story pages: which sections actually get seen ---
1699  // Active time on page is native to Radar, but where the scroll story
1700  // loses people isn't. Fires once per section per pageview when the
1701  // section crosses the middle band of the viewport.
1702  var JOURNEY_PATHS = ['/identify', '/measure', '/engage', '/signal', '/automate'];
1703
1704  function trackJourneySections() {
1705    var path = window.location.pathname.replace(/\/$/, '');
1706    if (JOURNEY_PATHS.indexOf(path) === -1) return;
1707    if (!('IntersectionObserver' in window)) return;
1708
1709    var sections = document.querySelectorAll('section.page-section');
1710    if (!sections.length) return;
1711
1712    var observer = new IntersectionObserver(function(entries) {
1713      entries.forEach(function(entry) {
1714        if (!entry.isIntersecting) return;
1715        var el = entry.target;
1716        observer.unobserve(el);
1717        var heading = el.querySelector('h1, h2, h3');
1718        window.snitcherTrack('journey_section_viewed', {
1719          page_path: path,
1720          section_index: parseInt(el.getAttribute('data-journey-index') || '0', 10),
1721          section_title: heading ? (heading.textContent || '').trim().substring(0, 80) : ''
1722        });
1723      });
1724    }, { rootMargin: '-30% 0px -30% 0px', threshold: 0 });
1725
1726    sections.forEach(function(el, i) {
1727      el.setAttribute('data-journey-index', String(i));
1728      observer.observe(el);
1729    });
1730  }
1731
1732  // --- Article read depth (blog posts + customer stories) ---
1733  // Radar has no scroll-depth signal; active time alone can't tell
1734  // "finished the article" from "left the tab open".
1735  var articleRead = { path: null, article: null, fired: {} };
1736  var ARTICLE_MILESTONES = [50, 90];
1737
1738  function resetArticleRead() {
1739    articleRead.path = window.location.pathname;
1740    articleRead.fired = {};
1741    articleRead.article = null;
1742    var path = articleRead.path;
1743    if (/^\/(blog|customers)\/.+/.test(path)) {
1744      articleRead.article = document.querySelector('article.editorial-prose');
1745    }
1746  }
1747
1748  function trackArticleReadDepth() {
1749    var rafPending = false;
1750    window.addEventListener('scroll', function() {
1751      if (!articleRead.article || rafPending) return;
1752      rafPending = true;
1753      requestAnimationFrame(function() {
1754        rafPending = false;
1755        var article = articleRead.article;
1756        if (!article || !document.contains(article)) return;
1757        var rect = article.getBoundingClientRect();
1758        var articleTop = rect.top + window.scrollY;
1759        var readPx = window.scrollY + window.innerHeight - articleTop;
1760        var progress = Math.min(100, Math.round((readPx / article.offsetHeight) * 100));
1761
1762        ARTICLE_MILESTONES.forEach(function(milestone) {
1763          if (progress >= milestone && !articleRead.fired[milestone]) {
1764            articleRead.fired[milestone] = true;
1765            window.snitcherTrack('article_read', {
1766              milestone: milestone,
1767              page_path: articleRead.path
1768            });
1769          }
1770        });
1771      });
1772    }, { passive: true });
1773  }
1774
1775  // --- Helper: determine link location on page ---
1776  function getLinkLocation(el) {
1777    var nav = el.closest('nav, [role="navigation"]');
1778    if (nav) return 'navbar';
1779    var footer = el.closest('footer');
1780    if (footer) return 'footer';
1781    var hero = el.closest('[class*="hero"], section:first-of-type');
1782    if (hero) return 'hero';
1783    return 'body';
1784  }
1785
1786  // Initialize on DOMContentLoaded
1787  if (document.readyState === 'loading') {
1788    document.addEventListener('DOMContentLoaded', init);
1789  } else {
1790    init();
1791  }
1792
1793  function init() {
1794    pushPageMetadata();
1795    trackCTAClicks();
1796    trackIntercomOpens();
1797    trackHubSpotForms();
1798    trackTabChanges();
1799    trackArticleReadDepth();
1800    registerVisitorTraits();
1801    // Per-page trackers (re-run on view transitions below)
1802    identifyFromPersonalization();
1803    trackIntegrationView();
1804    trackJourneySections();
1805    resetArticleRead();
1806  }
1807
1808  // --- Re-init on Astro View Transitions (client-side navigation) ---
1809  // `astro:page-load` fires on both initial load AND subsequent navigations.
1810  // We skip the first fire to avoid double-tracking (inline scripts already ran).
1811  var isInitialLoad = true;
1812
1813  document.addEventListener('astro:page-load', function() {
1814    if (isInitialLoad) {
1815      isInitialLoad = false;
1816      return;
1817    }
1818
1819    // Re-push page metadata to dataLayer
1820    pushPageMetadata();
1821    trackIntercomOpens();
1822
1823    // Per-page trackers for the newly swapped-in page
1824    identifyFromPersonalization();
1825    trackIntegrationView();
1826    trackJourneySections();
1827    resetArticleRead();
1828
1829    // Push virtual pageview for GTM (triggers GTM tags including Intercom)
1830    window.dataLayer.push({
1831      event: 'virtualPageview',
1832      page_path: window.location.pathname,
1833      page_title: document.title
1834    });
1835
1836    // Re-trigger Segment page tracking
1837    if (window.analytics && typeof window.analytics.page === 'function') {
1838      window.analytics.page();
1839    }
1840
1841    // Re-trigger Meta Pixel pageview
1842    if (typeof window.fbq === 'function') {
1843      window.fbq('track', 'PageView');
1844    }
1845
1846    // Re-trigger Snitcher Radar page tracking
1847    if (window.Snitcher && typeof window.Snitcher.page === 'function') {
1848      window.Snitcher.page();
1849    }
1850
1851    // Re-render Intercom widget (its DOM is destroyed by the body swap,
1852    // but the JS singleton on window survives — 'update' triggers a fresh render)
1853    if (typeof window.Intercom === 'function') {
1854      window.Intercom('update');
1855    }
1856  });
1857})();
1858</script>
1858 </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.