PageSourceSearch

https://kickofflabs.com/pricing/

html kickofflabs.com collected 2026-09-24 15:22:52 UTC 70,905 bytes, 1,513 lines download raw bytes

1<!DOCTYPE html>
2<html lang="en">
3  <head>
4    <meta charset="UTF-8">
5<meta name="viewport" content="width=device-width, initial-scale=1.0">
6<meta http-equiv="X-UA-Compatible" content="ie=edge">
7
8<link rel="shortcut icon" href="/favicon.ico">
9<title>
10  
11  Grow with referrals. Pay for the scale you need. | KickoffLabs
12  </title>
13  
14    <!-- Begin Jekyll SEO tag v2.8.0 -->
15<meta name="generator" content="Jekyll v4.3.4" />
16<meta property="og:title" content="Grow with referrals. Pay for the scale you need." />
17<meta property="og:locale" content="en_US" />
18<meta name="description" content="Turn audiences into influencers with viral giveaways, sweepstakes, and product launches. No contracts. Cancel anytime." />
19<meta property="og:description" content="Turn audiences into influencers with viral giveaways, sweepstakes, and product launches. No contracts. Cancel anytime." />
20<link rel="canonical" href="https://kickofflabs.com/pricing/" />
21<meta property="og:url" content="https://kickofflabs.com/pricing/" />
22<meta property="og:site_name" content="KickoffLabs" />
23<meta property="og:image" content="https://kickofflabs.com/assets/images/pricing.webp" />
24<meta property="og:type" content="website" />
25<meta name="twitter:card" content="summary_large_image" />
26<meta property="twitter:image" content="https://kickofflabs.com/assets/images/pricing.webp" />
27<meta property="twitter:title" content="Grow with referrals. Pay for the scale you need." />
28<meta name="twitter:site" content="@kickofflabs" />
29<script type="application/ld+json">
30{"@context":"https://schema.org","@type":"WebPage","dateModified":"2026-07-11T05:19:38+00:00","description":"Turn audiences into influencers with viral giveaways, sweepstakes, and product launches. No contracts. Cancel anytime.","headline":"Grow with referrals. Pay for the scale you need.","image":"https://kickofflabs.com/assets/images/pricing.webp","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"https://kickofflabs.com/assets/images/logo_on_light_473x102.webp"}},"url":"https://kickofflabs.com/pricing/"}</script>
30
31<!-- End Jekyll SEO tag -->
32
33  
34
35
36
37
38<link rel="preload" href="/assets/images/pricing.webp" as="image">
39<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
40<link rel="preconnect" href="https://kit.fontawesome.com" crossorigin>
41<link rel="preconnect" href="https://challenges.cloudflare.com" crossorigin>
42<link rel="preconnect" href="https://cdnjs.cloudflare.com">
43<link rel="preconnect" href="https://fonts.googleapis.com">
44<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
45<link rel="preconnect" href="https://usefathom.com">
46<link rel="preload" href="/assets/css/main.css?v=1787423337" as="style">
47<link rel="stylesheet" href="/assets/css/main.css?v=1787423337">
48<script>
49// A/B Test: Dark Hero (single-branch)
50(function() {
51  var key = 'ab_dark_hero_v1';
52  var urlParam = new URLSearchParams(window.location.search).get('ab');
53  var v;
54  if (urlParam === 'exp' || urlParam === 'ctrl') {
55    v = urlParam;
56    localStorage.setItem(key, v);
57  } else {
58    v = localStorage.getItem(key);
59    if (!v) {
60      v = 'ctrl';
61      localStorage.setItem(key, v);
62    }
63  }
64  document.documentElement.setAttribute('data-ab', v);
65
66  function shouldLoadHeroTerrain() {
67    var mobileUserAgent = /Android|iPhone|iPad|iPod|IEMobile|Mobile/i.test(navigator.userAgent);
68    return v === 'exp' &&
69      !mobileUserAgent &&
70      !window.matchMedia('(prefers-reduced-motion: reduce)').matches &&
71      !window.matchMedia('(max-width: 767px)').matches &&
72      !window.matchMedia('(pointer: coarse)').matches;
73  }
74
75  function loadHeroTerrain() {
76    var s = document.createElement('script');
77    s.src = '/assets/js/hero-terrain.js';
78    s.defer = true;
79    document.head.appendChild(s);
80  }
81
82  window.addEventListener('load', function() {
83    if (typeof fathom !== 'undefined') {
84      fathom.trackEvent('ab_dark_hero_v1_' + v);
85    }
86    if (shouldLoadHeroTerrain()) {
87      if ('requestIdleCallback' in window) {
88        window.requestIdleCallback(loadHeroTerrain, { timeout: 3000 });
89      } else {
90        window.setTimeout(loadHeroTerrain, 1500);
91      }
92    }
93  });
94})();
95</script>
95
96
97    <link type="application/atom+xml" rel="alternate" href="https://kickofflabs.com/feed.xml" title="KickoffLabs" />
98    <!-- Organization Schema - Include in _layouts/default.html -->
99<script type="application/ld+json">
100{
101  "@context": "https://schema.org",
102  "@type": "Organization",
103  "name": "KickoffLabs",
104  "url": "https://kickofflabs.com",
105  "logo": "https://kickofflabs.com/assets/images/logo_on_light_473x102.webp",
106  "description": "Word of mouth marketing made easy with viral giveaways, referral programs, or product launches designed to grow your business.",
107  "foundingDate": "2011",
108  "sameAs": [
109    "https://www.facebook.com/kickofflabs",
110    "https://twitter.com/kickofflabs",
111    "https://www.threads.net/@usekickofflabs"
112  ],
113  "contactPoint": {
114    "@type": "ContactPoint",
115    "contactType": "customer support",
116    "url": "https://support.kickofflabs.com",
117    "email": "[email protected]"
118  },
119  "founders": [
120    {
121      "@type": "Person",
122      "name": "Josh Ledgard",
123      "url": "https://twitter.com/joshaledgard"
124    },
125    {
126      "@type": "Person",
127      "name": "Scott Watermasysk",
128      "url": "https://twitter.com/scottw"
129    }
130  ]
131}
132</script>
132
133
134    
135    
136    
137    
138      
138<script type="application/ld+json">
139{
140  "@context": "https://schema.org",
141  "@type": "FAQPage",
142  "mainEntity": [
143    
144    {
145      "@type": "Question",
146      "name": "Can I change plans or cancel anytime?",
147      "acceptedAnswer": {
148        "@type": "Answer",
149        "text": "Yes. Upgrade, downgrade, or cancel from your account page at any time. Upgrades are prorated for the current billing cycle."
150      }
151    },
152    
153    {
154      "@type": "Question",
155      "name": "What's the refund policy?",
156      "acceptedAnswer": {
157        "@type": "Answer",
158        "text": "Full refunds for any reason within 30 days of being charged. Refunds may not be issued if you've collected over 50 leads."
159      }
160    },
161    
162    {
163      "@type": "Question",
164      "name": "What if I go over my monthly leads?",
165      "acceptedAnswer": {
166        "@type": "Answer",
167        "text": "Your plan is automatically upgraded to match usage. Annual plans are billed $8 per extra 1,000 leads in months you go over."
168      }
169    },
170    
171    {
172      "@type": "Question",
173      "name": "What if I need more than Enterprise?",
174      "acceptedAnswer": {
175        "@type": "Answer",
176        "text": "Extra leads are $8 per 1,000 per month — or contact us for a custom enterprise agreement with lower rates."
177      }
178    },
179    
180    {
181      "@type": "Question",
182      "name": "Is KickoffLabs GDPR compliant?",
183      "acceptedAnswer": {
184        "@type": "Answer",
185        "text": "Yes. Read about our GDPR stance, DPA agreements, and compliance features in the knowledge base."
186      }
187    },
188    
189    {
190      "@type": "Question",
191      "name": "When will I be charged?",
192      "acceptedAnswer": {
193        "@type": "Answer",
194        "text": "As soon as you upgrade — with a full refund available for any reason during the first 30 days."
195      }
196    },
197    
198    {
199      "@type": "Question",
200      "name": "What kind of support can I expect?",
201      "acceptedAnswer": {
202        "@type": "Answer",
203        "text": "The best. Any technology can be copied — a customer experience is much harder. Contact us anytime, for any reason."
204      }
205    },
206    
207    {
208      "@type": "Question",
209      "name": "More questions?",
210      "acceptedAnswer": {
211        "@type": "Answer",
212        "text": "Email [email protected] — we're always happy to give you our two cents."
213      }
214    }
215    
216  ]
217}
218</script>
218
219
220    
221  <!-- Facebook Pixel Code -->
222<script>
vendor: 417 bytes, lines 222-231
222
223  !function(f,b,e,v,n,t,s)
224  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
225  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
226  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
227  n.queue=[];t=b.createElement(e);t.async=!0;
228  t.src=v;s=b.getElementsByTagName(e)[0];
229  s.parentNode.insertBefore(t,s)}(window, document,'script',
230  'https://connect.facebook.net/en_US/fbevents.js');
231  fbq('init', '
231277430412608891
vendor: 32 bytes, lines 231-232
231');
232  fbq('track', 'PageView');
233</script>
233
234<noscript><img height="1" width="1"  alt="Facebook" style="display:none"
235  src="https://www.facebook.com/tr?id=277430412608891&ev=PageView&noscript=1"
236/></noscript>
237<!-- End Facebook Pixel Code --><meta name="facebook-domain-verification" content="nle84tew2g6isbvihvnh3uxjdmz0ta" /><!-- Fathom - beautiful, simple website analytics -->
238                
238<script src="https://cdn.usefathom.com/script.js" data-site="SWRTKYWT" defer></script>
238
239              <!-- / Fathom --><!-- Global site tag (gtag.js) - Google Ads: 992175653 -->
vendor: 64 bytes, lines 239-240
239
240<script async src="https://www.googletagmanager.com/gtag/js?id=
240AW-992175653
vendor: 12 bytes, line 240
240"></script>
241<script>
242  
vendor: 134 bytes, lines 242-246
242window.dataLayer = window.dataLayer || [];
243  function gtag(){dataLayer.push(arguments);}
244  gtag('js', new Date());
245
246  gtag('config', '
246AW-992175653
vendor: 40 bytes, line 246
246',{'allow_enhanced_conversions':true});
247</script>
247<meta name="google-site-verification" content="RBwetj_Er8Q2gftTNbu-WLErGGJKHfATrPx-bNHIUu8" /></head>
248  <body>
249    <nav id="primary-top-nav" class="navbar navbar-expand-lg navbar-light bg-light fixed-top" role="navigation">
250
251	<div class="container">
252		<button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbarContent"
253			aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle topbar navigation">
254			<span class="icon-bar"></span>
255			<span class="icon-bar"></span>
256			<span class="icon-bar"></span>
257		</button>
258		<a class="navbar-brand" href="/" rel="home">
259			<img src="/assets/images/logo_on_light_473x102.webp" width="146" alt="KickoffLabs">
260		</a>
261
262		<button class=" d-block d-lg-none btn btn-pink btn-pill btn-md  btn-free" href="https://app.kickofflabs.com/signup/free"
263			data-bs-toggle="modal" style="padding:.75rem 1rem;min-height:48px" data-bs-target="#signup-free">Start Free!</button>
264
265
266
267
268
269		<div class="collapse navbar-collapse" id="navbarContent">
270			<ul class="navbar-nav me-auto">
271
272				<li id="template-menu-item" class="nav-item dropdown ">
273					<a class="nav-link dropdown-toggle" href="#" id="templatesTopNav" role="button" data-bs-toggle="dropdown"
274						aria-haspopup="true" aria-expanded="false">Campaign Types</a>
275					<div id="templates-dropdown" class="dropdown-menu" aria-labelledby="templateTopNav">
276						<div class="row">
277							<div class="col-12">
278								
279								<a class="what dropdown-item" href="/campaign-types/"><strong>Overview</strong> - See All Types</a>
280								
281								
282									
283								<a class="what dropdown-item ct-nav-pillar" href="/campaign-types/giveaways/"><strong>Giveaways &amp; Contests</strong></a>
284									
285								
286									
287								<a class="what dropdown-item ct-nav-child" href="/campaign-types/leaderboard-giveaways/">
287Leaderboard Giveaway</a>
288									
289								
290									
291								<a class="what dropdown-item ct-nav-child" href="/campaign-types/sweepstakes/">Bonus-Entry Sweepstakes</a>
292									
293								
294									
295								<a class="what dropdown-item ct-nav-child" href="/campaign-types/purchase-based-giveaways/">Shopify / Purchase Giveaways</a>
296									
297								
298									
299								<a class="what dropdown-item ct-nav-pillar" href="/campaign-types/waitlist/"><strong>Waitlists</strong></a>
300									
301								
302									
303								<a class="what dropdown-item ct-nav-child" href="/campaign-types/referral-waitlist/">Referral Waitlist</a>
304									
305								
306									
307								<a class="what dropdown-item ct-nav-child" href="/campaign-types/waitlist-with-giveaway/">Waitlist with a Giveaway</a>
308									
309								
310									
311								<a class="what dropdown-item ct-nav-child" href="/campaign-types/waitlist-with-leaderboard/">Waitlist Leaderboard</a>
312									
313								
314									
315								<a class="what dropdown-item ct-nav-pillar" href="/campaign-types/reward-levels/"><strong>Milestone Rewards</strong></a>
316									
317								
318									
319								<a class="what dropdown-item ct-nav-child" href="/campaign-types/referral-reward-programs/">Referral Reward Programs</a>
320									
321								
322									
323								<a class="what dropdown-item ct-nav-child" href="/campaign-types/newsletter-referral/">Newsletter Referrals</a>
324									
325								
326									
327								<a class="what dropdown-item ct-nav-pillar" href="/campaign-types/email-opt-in/"><strong>Lead Magnets</strong></a>
328									
329								
330									
331								<a class="what dropdown-item ct-nav-pillar" href="/campaign-types/event-promotion/"><strong>Event Promotion</strong></a>
332									
333								
334
335							</div>
336						</div>
337	
338				
339				
340		
341					</div>
342				</li>
343
344				<li id="what-you-can-do" class="nav-item dropdown">
345					<a class="nav-link dropdown-toggle" href="#" id="whatYouCanDo" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">What You Can Do</a>
346					<div id="what-dropdown" class="dropdown-menu" aria-labelledby="whatYouCanDo">
347						<div class="row">
348							<div class="col-12 col-md-4 how-it-works-wrapper">
349								
350								<span class="what headline">Learn More</span>
351									<a class="what dropdown-item " href="/why-kickofflabs/">Why KickoffLabs</a>
352									<a class="what dropdown-item " href="/how-it-works/">How it works</a>
353									<a class="what dropdown-item" href="/why-kickofflabs/kickofflabs-done-for-you-services/">Done For You Services</a>
354									<a class="what dropdown-item" href="/why-kickofflabs/enterprise-giveaways/">Enterprise Scale Giveaways</a>
355									<a class="what dropdown-item" href="/why-kickofflabs/digital-agencies/">Manage Client Giveaways</a>
356
357							</div>
358							<div class="col-12 col-md-8 how-it-works-wrapper">
359								<span class="what headline">Product Features</span>
360								<div class="row">
361									<div class="col-12 col-md-6">
362										
363										<a class="what dropdown-item" href="/landing-page-templates/">Landing Pages</a>
364										<a class="what dropdown-item " href="/features/embeds/">Embedded Campaigns</a>
365										<a class="what dropdown-item " href="/features/popups/">Popups</a>
366
367										<a class="what dropdown-item " href="/features/anyform/">AnyForm</a>
368										<a class="what dropdown-item " href="/features/email/">Email</a>
369										<a class="what dropdown-item " href="/features/custom-domains/">Custom Contest Domains</a>
370
371										<a class="what dropdown-item " href="/features/leaderboard/">Leaderboards</a>
372										<a class="what dropdown-item " href="/features/teamaccounts/">Team Accounts</a>
373										<a class="what dropdown-item " href="/features/instant-signup/">Instant Signup</a>
374										<a class="what dropdown-item " href="/features/referral-tracking/">Referral Tracking</a>
375
376
377
378										
379									</div>
380
381									<div class="col-12 col-md-6">			
382										<a class="what dropdown-item" href="/features/sms/">SMS</a>
383										<a class="what dropdown-item" href="/integrations/">Integrations</a>
384										<a class="what dropdown-item" href="/features/shopify/">Shopify</a>
385										<a class="what dropdown-item " href="/features/contest-landing-page-builder/">
385Contest Page Builder</a>
386										<a class="what dropdown-item " href="/features/contest-actions/">Contest Actions</a>
387										<a class="what dropdown-item " href="/features/nudge-bar/">Nudge Bar</a>
388
389										<a class="what dropdown-item " href="/features/rewards/">Rewards</a>
390										<a class="what dropdown-item " href="/features/contest-fraud-detection/">Contest Fraud Detection</a>
391										<a class="what dropdown-item " href="/features/reports/">Reports</a>
392										<a class="what dropdown-item " href="/features/pick-a-winner/">Pick a Winner</a>
393
394
395									
396									</div>
397								</div>
398							</div>
399
400
401
402							<!-- <div class="col-md-4">
403								<a class="what headline">Manage Leads</a>
404								<a class="what dropdown-item" href="/#manage-leads">Integrations</a>
405								<a class="what dropdown-item" href="/#manage-leads">Reporting</a>
406							</div> -->
407						</div>
408					</div>
409				</li>
410
411				<li class="nav-item">
412					<a class="nav-link" href="/pricing/">Pricing</a>
413				</li>
414
415				<li id="resources-menu-item" class="nav-item dropdown ">
416					<a class="nav-link dropdown-toggle" href="#" id="resourcesTopNav" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Resources</a>
417					<div id="resources-dropdown" class="dropdown-menu" aria-labelledby="resourcesTopNav">
418						<div class="row">
419							<div class="col-12 col-md-4">
420							<a class="resource dropdown-item " href="/guides/">
421								<span class="headline">Marketing Guides</span>
422								<span class="subtitle">Useful guides, videos, downloads, and best practices.</span>
423							</a>
424							</div>
425							<div class="col-12 col-md-4">
426              <a class="resource dropdown-item " href="/podcast/">
427								<span class="headline">On Growth Podcast</span>
428								<span class="subtitle">Grow with us by learning from our stories and customer interviews.</span>
429							</a>
430							</div>
431							<div class="col-12 col-md-4">
432              <a class="resource dropdown-item  " href="/blog/">
433								<span class="headline">Blog</span>
434								<span class="subtitle">Insights for marketing your campaign like a pro.</span>
435							</a>
436
437							</div>
438						</div>
439						<div class="row">
440							<div class="col-12 col-md-4">
441								<a class="resource dropdown-item " href="https://support.kickofflabs.com/">
442									<span class="headline">Support &amp; Documentation</span>
443									<span class="subtitle">Find helpful documentation for the ins and outs of creating a viral campaign.</span>
444								</a>
445							
446							</div>
447							<div class="col-12 col-md-4">
448              <a class="resource dropdown-item " href="/showcase/">
449                <span class="headline">Customer Showcase</span>
450                <span class="subtitle">
450See how other companies like you ran great campaigns.</span>
451              </a>
452							</div>
453							<div class="col-12 col-md-4">
454              <a class="resource dropdown-item " href="/tools/">
455                <span class="headline">Free Marketing Tools</span>
456                <span class="subtitle">Prompt builders, graders, and launch planning helpers.</span>
457              </a>
458							</div>
459						</div>
460					</div>
461				</li>
462			</ul>
463
464			<div class="form-inline">
465				<a href="https://app.kickofflabs.com/login" class="btn btn-link login text-decoration-none">Log In</a>
466				<a class="btn btn-pink btn-pill btn-md btn-free" href="https://app.kickofflabs.com/signup/free" data-bs-toggle="modal" data-bs-target="#signup-free">Start Free!</a>
467			</div>
468		</div>
469	</div>
470</nav>
471
472    <div id="pricing-page" class="billing-yearly">
473
474  <!-- ============ HERO ============ -->
475  <header class="pp-hero">
476    <div class="pp-hero-inner">
477      <div class="pp-eyebrow">Pricing</div>
478      <h1>Grow with referrals. Pay for the scale you need.</h1>
479      <p class="pp-hero-sub">Turn audiences into influencers with viral giveaways, sweepstakes, and product launches.<span class="pp-hero-note">No contracts. Cancel anytime.</span></p>
480      <div class="pp-toggle" role="group" aria-label="Choose billing period">
481        <button type="button" class="js-billing" data-billing="monthly">Pay Monthly</button>
482        <button type="button" class="js-billing active" data-billing="yearly">Pay Yearly &mdash; Save 30%</button>
483      </div>
484    </div>
485  </header>
486
487  <!-- ============ PLAN CARDS ============ -->
488  <section class="pp-plans" aria-label="Plans">
489    <div class="pp-plans-grid">
490
491      <!-- Hobby -->
492      <div class="pp-card">
493        <h3>Hobby</h3>
494        <p class="pp-card-tagline">New business? Testing an idea?</p>
495        <div class="pp-price">
496          <span class="pp-amount"><span class="js-price-yearly">$13</span><span class="js-price-monthly">$19</span></span>
497          <span class="pp-per">/mo</span>
498        </div>
499        <div class="pp-term"><span class="js-term-yearly">billed annually &mdash; saving 30%</span><span class="js-term-monthly">billed month to month</span></div>
500        <a class="pp-btn pp-btn--outline js-signup" data-signup-slug="plus" href="https://app.kickofflabs.com/signup/plus/?plan_term=12">Go Hobby</a>
501        <ul class="pp-features">
502          <li><span><strong>500</strong> leads per month</span></li>
503          <li><span><strong>Unlimited</strong> campaigns &amp; total leads</span></li>
504          <li><span><strong>1</strong> brand + custom domain</span></li>
505          <li><span>Autoresponder emails</span></li>
506          <li><span>Advanced fraud prevention</span></li>
507        </ul>
508      </div>
509
510      <!-- Premium -->
511      <div class="pp-card pp-card--featured">
512        <div class="pp-badge">Most Popular</div>
513        <h3>Premium</h3>
514        <p class="pp-card-tagline">Just what's needed for small campaigns.</p>
515        <div class="pp-price">
516          <span class="pp-amount"><span class="js-price-yearly">$48</span><span class="js-price-monthly">$69</span></span>
517          <span class="pp-per">/mo</span>
518        </div>
519        <div class="pp-term"><span class="js-term-yearly">billed annually &mdash; saving 30%</span><span class="js-term-monthly">billed month to month</span></div>
520        <a class="pp-btn pp-btn--solid js-signup" data-signup-slug="premium" href="https://app.kickofflabs.com/signup/premium/?plan_term=12">Go Premium</a>
521        <div class="pp-plus-label">Hobby, plus</div>
522        <ul class="pp-features">
523          <li><span><strong>2,500</strong> leads per month</span></li>
524          <li><span>Branding-free landing pages</span></li>
525          <li><span>Reward level emails</span></li>
526          <li><span>A/B testing</span></li>
527          <li><span>Tracking pixels &amp; scripts</span></li>
528          <li><span>Integrations</span></li>
529        </ul>
530      </div>
531
532      <!-- Business -->
533      <div class="pp-card">
534        <h3>Business</h3>
535        <p class="pp-card-tagline">No branding. Every feature.</p>
536        <div class="pp-price">
537          <span class="pp-amount"><span class="js-price-yearly">$99</span><span class="js-price-monthly">$145</span></span>
538          <span class="pp-per">/mo</span>
539        </div>
540        <div class="pp-term"><span class="js-term-yearly">billed annually &mdash; saving 30%</span><span class="js-term-monthly">billed month to month</span></div>
541        <a class="pp-btn pp-btn--outline js-signup" data-signup-slug="max" href="https://app.kickofflabs.com/signup/max/?plan_term=12">Go Business</a>
542        <div class="pp-plus-label">Premium, plus</div>
543        <ul class="pp-features">
544          <li><span><strong>10,000</strong> leads per month</span></li>
545          <li><span><strong>3</strong> brands, domains &amp; team members</span></li>
546          <li><span>No KickoffLabs branding</span></li>
547          <li><span>SMS contests (optional)</span></li>
548          <li><span>Custom email templates &amp; domains</span></li>
549          <li><span>Advanced reporting &amp; actions</span></li>
550        </ul>
551      </div>
552
553      <!-- Enterprise -->
554      <div class="pp-card">
555        <h3>Enterprise</h3>
556        <p class="pp-card-tagline">Manage large campaigns.</p>
557        <div class="pp-price">
558          <span class="pp-amount"><span class="js-price-yearly">$202</span><span class="js-price-monthly">$289</span></span>
559          <span class="pp-per">/mo</span>
560        </div>
561        <div class="pp-term"><span class="js-term-yearly">billed annually &mdash; saving 30%</span><span class="js-term-monthly">billed month to month</span></div>
562        <a class="pp-btn pp-btn--outline js-signup" data-signup-slug="enterprise" href="https://app.kickofflabs.com/signup/enterprise/?plan_term=12">Go Enterprise</a>
563        <div class="pp-plus-label">Business, plus</div>
564        <ul class="pp-features">
565          <li><span><strong>25,000</strong> leads per month</span></li>
566          <li><span><strong>5</strong> brands, domains &amp; team members</span></li>
567          <li><span>SMS included &mdash; $50 value</span></li>
568          <li><span>Priority support</span></li>
569          <li><span>Free design tweaks</span></li>
570          <li><span>1:1 onboarding &amp; setup meeting</span></li>
571        </ul>
572      </div>
573    </div>
574
575    <div class="pp-note">
576      <p>Just kicking the tires? The <a href="https://app.kickofflabs.com/signup/free">free plan</a> lets you run a mini-campaign to 100 uniques a month.</p>
577      <p>Need it managed for you, or higher limits? <a href="mailto:[email protected]?subject=Custom%20plan%20request">Book a call</a> about a custom enterprise plan.</p>
578    </div>
579  </section>
580
581  <!-- ============ TRUST STRIP ============ -->
582  <section class="pp-trust" aria-label="Trusted by">
583    <p class="pp-trust-label">Trusted by companies big and small</p>
584    <ul class="pp-trust-logos">
585      <li><img src="/assets/images/pricing/logo-websummit.webp" width="307" height="72" loading="lazy" alt="WebSummit"></li>
586      <li><img src="/assets/images/pricing/logo-microsoft.webp" width="217" height="72" loading="lazy" alt="Microsoft"></li>
587      <li><img src="/assets/images/pricing/logo-match.webp" width="162" height="72" loading="lazy" alt="Match"></li>
588      <li><img src="/assets/images/pricing/logo-glowforge.webp" width="196" height="72" loading="lazy" alt="Glowforge"></li>
589      <li><img src="/assets/images/pricing/logo-blueapron.webp" width="156" height="72" loading="lazy" alt="Blue Apron"></li>
590      <li><img src="/assets/images/pricing/logo-nightfood.webp" width="208" height="72" loading="lazy" alt="Nightfood"></li>
591      <li><img src="/assets/images/pricing/logo-betches.webp" width="167" height="72" loading="lazy" alt="Betches"></li>
592    </ul>
593  </section>
594
595  <!-- ============ TESTIMONIAL BAND ============ -->
596  <section class="pp-testimonial" aria-label="Customer testimonial">
597    <div class="pp-testimonial-inner">
598      <img class="pp-testimonial-avatar js-t-avatar" src="https://static-app-kol.b-cdn.net/assets/testimonials/testimonial-14a8bfb400e5759f62ca2d64d0abdb3d5f23ddcefe3df2d9c326529927d25e0a.jpg" alt="Mike Madrid" width="76" height="76">
599      <div class="pp-testimonial-quote-wrap">
600        <p class="pp-testimonial-quote js-t-quote">Our launch got us 35,000 leads in 2 weeks with a 56.9% conversion rate. For every $1 spent we got roughly $1.86 back &mdash; 86.6% of leads came from the KickoffLabs social referral mechanism.</p>
601      </div>
602      <p class="pp-testimonial-name js-t-name">Mike Madrid &mdash; Founder, Comfortable Boxers</p>
603      <div class="pp-testimonial-dots js-t-dots">
604        <button type="button" class="active" data-t="0" aria-label="Show testimonial 1"></button>
605        <button type="button" data-t="1" aria-label="Show testimonial 2"></button>
606        <button type="button" data-t="2" aria-label="Show testimonial 3"></button>
607      </div>
608    </div>
609  </section>
610
611  <!-- ============ COMPARE PLANS ============ -->
612  <section class="pp-compare" aria-label="Compare plans">
613    <div class="pp-compare-inner">
614      <div class="pp-section-head">
615        <h2>Compare plans</h2>
616        <p>Find the plan that fits you perfectly.</p>
617      </div>
618
619      <div class="pp-compare-scroll">
620        <div class="pp-compare-table">
621          <!-- header row -->
622          <div class="pp-compare-header">
623            <div></div>
624            <div class="pp-col"><div class="pp-col-name">Hobby</div><a class="js-signup" data-signup-slug="plus" href="https://app.kickofflabs.com/signup/plus/?plan_term=12">Sign Up</a></div>
625            <div class="pp-col"><div class="pp-col-name pp-col-name--featured">Premium</div><a class="js-signup" data-signup-slug="premium" href="https://app.kickofflabs.com/signup/premium/?plan_term=12">Sign Up</a></div>
626            <div class="pp-col"><div class="pp-col-name">Business</div><a class="js-signup" data-signup-slug="max" href="https://app.kickofflabs.com/signup/max/?plan_term=12">Sign Up</a></div>
627            <div class="pp-col"><div class="pp-col-name">Enterprise</div><a class="js-signup" data-signup-slug="enterprise" href="https://app.kickofflabs.com/signup/enterprise/?plan_term=12">Sign Up</a></div>
628          </div>
629
630          <!-- Pricing & limits -->
631          <div class="pp-compare-group-name">Pricing &amp; limits</div>
632          <div class="pp-compare-row">
633            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Leads per month</span><span class="pp-tip">Leads added through KickoffLabs each month. There is no total lead limit &mdash; plans upgrade automatically if you exceed your monthly limit.</span></div>
634            <div class="pp-cell">500</div><div class="pp-cell">2,500</div><div class="pp-cell">10,000</div><div class="pp-cell">25,000</div>
635          </div>
636          <div class="pp-compare-row">
637            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Campaigns</span><span class="pp-tip">Each campaign is a separate list of customers collected with landing pages, opt-in forms, and email marketing.</span></div>
638            <div class="pp-cell">Unlimited</div><div class="pp-cell">Unlimited</div><div class="pp-cell">Unlimited</div><div class="pp-cell">Unlimited</div>
639          </div>
640          <div class="pp-compare-row">
641            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Custom domains (SSL included)</span><span class="pp-tip">Publish pages to your secure (SSL encrypted) custom domains and manage different campaigns with unique domains.</span></div>
642            <div class="pp-cell">1</div><div class="pp-cell">1</div><div class="pp-cell">3</div><div class="pp-cell">5</div>
643          </div>
644          <div class="pp-compare-row">
645            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Team accounts</span><span class="pp-tip">Invite clients or your development team.</span></div>
646            <div class="pp-cell">&mdash;</div><div class="pp-cell">&mdash;</div><div class="pp-cell">3</div><div class="pp-cell">5</div>
647          </div>
648          <div class="pp-compare-row">
649            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Signups / API calls per minute</span><span class="pp-tip">Got a large existing audience and need to scale signups quickly?</span></div>
650            <div class="pp-cell">10</div><div class="pp-cell">25</div><div class="pp-cell">50</div><div class="pp-cell">100</div>
651          </div>
652          <div class="pp-compare-row">
653            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Branding on pages &amp; emails</span><span class="pp-tip">Free and Hobby plans include KickoffLabs branding on popups, landing pages, embeds, and emails.</span></div>
654            <div class="pp-cell">KickoffLabs branded</div><div class="pp-cell">Branding-free pages</div><div class="pp-cell">Removed</div><div class="pp-cell">Removed</div>
655          </div>
656
657          <!-- Campaign tools -->
658          <div class="pp-compare-group-name">Campaign tools</div>
659          <div class="pp-compare-row">
660            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Landing pages, popups, embeds &amp; AnyForm</span><span class="pp-tip">Unlimited responsive landing pages, popups and embeds with one line of code, plus AnyForm to make any existing page a viral form.</span></div>
661            <div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
662          </div>
663          <div class="pp-compare-row">
664            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Smarter page A/B testing</span><span class="pp-tip">Test without losing conversions to a bad variation.</span></div>
665            <div class="pp-cell">&mdash;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
666          </div>
667          <div class="pp-compare-row">
668            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Tracking pixels &amp; scripts</span><span class="pp-tip">Add popular tracking pixels and scripts from Facebook, Google, and others to your campaign.</span></div>
669            <div class="pp-cell">&mdash;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
670          </div>
671          <div class="pp-compare-row">
672            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Integrations &amp; webhooks</span><span class="pp-tip">MailChimp, Facebook Audiences, Klaviyo, Slack, and Zapier &mdash; plus webhooks to push leads in or notify other services.</span></div>
673            <div class="pp-cell">&mdash;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
674          </div>
675          <div class="pp-compare-row">
676            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Advanced reporting</span><span class="pp-tip">Realtime reports on conversions, actions, sharing, and more &mdash; beyond the last 30 days.</span></div>
677            <div class="pp-cell">&mdash;</div><div class="pp-cell">&mdash;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
678          </div>
679          <div class="pp-compare-row">
680            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">SMS contest messages</span><span class="pp-tip">Text signups and automatic replies to a lead's phone to encourage sharing.</span></div>
681            <div class="pp-cell">&mdash;</div><div class="pp-cell">&mdash;</div><div class="pp-cell">Optional +$50/mo</div><div class="pp-cell">Included</div>
682          </div>
683
684          <!-- Contest emails -->
685          <div class="pp-compare-group-name">Contest emails</div>
686          <div class="pp-compare-row">
687            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Autoresponder emails</span><span class="pp-tip">Automated thank-you and follow-up messages with unique share links for every new lead.</span></div>
688            <div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
689          </div>
690          <div class="pp-compare-row">
691            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Reward level emails</span><span class="pp-tip">Automatic emails that go out when leads reach specific sharing targets.</span></div>
692            <div class="pp-cell">&mdash;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
693          </div>
694          <div class="pp-compare-row">
695            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Discount code distribution</span><span class="pp-tip">Send unique discount codes from your online store to new leads, or automatically at contest point totals.</span></div>
696            <div class="pp-cell">&mdash;</div><div class="pp-cell">&mdash;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
697          </div>
698          <div class="pp-compare-row">
699            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Custom email templates &amp; domains</span><span class="pp-tip">Use custom HTML email designs and send contest emails from your own domain.</span></div>
700            <div class="pp-cell">&mdash;</div><div class="pp-cell">&mdash;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
701          </div>
702
703          <!-- Support -->
704          <div class="pp-compare-group-name">Support</div>
705          <div class="pp-compare-row">
706            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Community &amp; email support</span><span class="pp-tip">Help from KickoffLabs experts and peers. We're always happy to give you our two cents on your landing pages.</span></div>
707            <div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
708          </div>
709          <div class="pp-compare-row">
710            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Custom domain setup</span><span class="pp-tip">We'll personally make sure you are up and running on your own domain.</span></div>
711            <div class="pp-cell">&mdash;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div><div class="pp-cell">&#10003;</div>
712          </div>
713          <div class="pp-compare-row">
714            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">Free design tweaks</span><span class="pp-tip">Get your campaigns looking perfect for your brand with our assistance.</span></div>
715            <div class="pp-cell">&mdash;</div><div class="pp-cell">&mdash;</div><div class="pp-cell">&mdash;</div><div class="pp-cell">&#10003;</div>
716          </div>
717          <div class="pp-compare-row">
718            <div class="pp-row-label"><span class="pp-row-term" tabindex="0">1:1 setup meeting &amp; priority support</span><span class="pp-tip">Get 30 minutes with a KickoffLabs expert, and your questions answered first via chat, email, or a scheduled call.</span></div>
719            <div class="pp-cell">&mdash;</div><div class="pp-cell">&mdash;</div><div class="pp-cell">&mdash;</div><div class="pp-cell">&#10003;</div>
720          </div>
721        </div>
722      </div>
723    </div>
724  </section>
725
726  <!-- ============ EVERY PLAN INCLUDES ============ -->
727  <section class="pp-includes" aria-label="Every plan includes">
728    <div class="pp-includes-inner">
729      <div class="pp-section-head">
730        <h2>Every plan includes</h2>
731        <p>The essentials for running a viral campaign are built in &mdash; no add-ons required.</p>
732      </div>
733      <div class="pp-includes-grid">
734        <div class="pp-include"><i class="fa-solid fa-share-nodes text-blue"></i><div class="pp-include-title">Viral boost</div><p>Get up to 35% more conversions with the built-in referral system.</p></div>
735        <div class="pp-include"><i class="fa-solid fa-link text-teal"></i><div class="pp-include-title">Unique referral links</div><p>Every lead gets a link that's easy to share on social networks.</p></div>
736        <div class="pp-include"><i class="fa-solid fa-trophy text-orange"></i><div class="pp-include-title">Winner Picker</div><p>Draw winners from entries, weighted by points earned.</p></div>
737        <div class="pp-include"><i class="fa-solid fa-file-lines text-purple"></i><div class="pp-include-title">Unlimited landing pages</div><p>Publish as many mobile-responsive pages as you need.</p></div>
738        <div class="pp-include"><i class="fa-solid fa-window-restore text-pink"></i><div class="pp-include-title">Popups &amp; embeds</div><p>Run campaigns on your own site with one line of code.</p></div>
739        <div class="pp-include"><i class="fa-solid fa-wand-magic-sparkles text-blue"></i><div class="pp-include-title">AnyForm</div><p>Turn any existing page into a KickoffLabs viral form.</p></div>
740        <div class="pp-include"><i class="fa-solid fa-shield-halved text-teal"></i><div class="pp-include-title">Fraud prevention</div><p>Bots, disposable emails, and duplicate IPs flagged automatically.</p></div>
741        <div class="pp-include"><i class="fa-solid fa-file-import text-orange"></i><div class="pp-include-title">Import &amp; export leads</div><p>Bring existing leads in, and export custom audiences out.</p></div>
742      </div>
743    </div>
744  </section>
745
746  <!-- ============ FAQ ============ -->
747  <section class="pp-faq" aria-label="Pricing FAQ">
748    <div class="pp-faq-inner">
749      <div class="pp-section-head">
750        <h2>The fine print</h2>
751        <p>Answers to common pricing questions.</p>
752      </div>
753      <div class="pp-faq-grid">
754        <div class="pp-faq-item"><div class="pp-faq-q">Can I change plans or cancel anytime?</div><p>Yes. Upgrade, downgrade, or cancel from your account page at any time. Upgrades are prorated for the current billing cycle.</p></div>
755        <div class="pp-faq-item"><div class="pp-faq-q">What's the refund policy?</div><p>Full refunds for any reason within 30 days of being charged. Refunds may not be issued if you've collected over 50 leads.</p></div>
756        <div class="pp-faq-item"><div class="pp-faq-q">What if I go over my monthly leads?</div><p>Your plan is automatically upgraded to match usage. Annual plans are billed $8 per extra 1,000 leads in months you go over.</p></div>
757        <div class="pp-faq-item"><div class="pp-faq-q">What if I need more than Enterprise?</div><p>Extra leads are $8 per 1,000 per month &mdash; or <a href="mailto:[email protected]?subject=Sales%20Question">contact us</a> for a custom enterprise agreement with lower rates.</p></div>
758        <div class="pp-faq-item"><div class="pp-faq-q">Is KickoffLabs GDPR compliant?</div><p>Yes. Read about our GDPR stance, DPA agreements, and compliance features in the <a href="https://support.kickofflabs.com/knowledgebase/gdpr-requests-at-kickofflabs">knowledge base</a>.</p></div>
759        <div class="pp-faq-item"><div class="pp-faq-q">When will I be charged?</div><p>As soon as you upgrade &mdash; with a full refund available for any reason during the first 30 days.</p></div>
760        <div class="pp-faq-item"><div class="pp-faq-q">What kind of support can I expect?</div><p>The best. Any technology can be copied &mdash; a customer experience is much harder. Contact us anytime, for any reason.</p></div>
761        <div class="pp-faq-item"><div class="pp-faq-q">More questions?</div><p>Email <a href="mailto:[email protected]?subject=Sales%20Question">[email protected]</a> &mdash; we're always happy to give you our two cents.</p></div>
762      </div>
763    </div>
764  </section>
765
766  <!-- ============ CTA STRIP ============ -->
767  <section class="pp-cta" aria-label="Get started">
768    <div class="pp-cta-inner">
769      <h2>Try KickoffLabs for free</h2>
770      <p>Run a mini-campaign to 100 uniques a month. No credit card required.</p>
771      <a class="pp-cta-btn" href="https://app.kickofflabs.com/signup/free">Start Free &mdash; No CC Required</a>
772    </div>
773  </section>
774
775</div>
776
777<script>
778  (function () {
779    var page = document.getElementById('pricing-page');
780    if (!page) return;
781
782    // ---- Billing toggle: swaps prices/term via CSS class, and updates
783    //      plan_term on every signup link (preserving attribution params) ----
784    var billingBtns = page.querySelectorAll('.js-billing');
785    var signupLinks = page.querySelectorAll('.js-signup');
786
787    function setBilling(mode) {
788      page.classList.remove('billing-yearly', 'billing-monthly');
789      page.classList.add('billing-' + mode);
790      billingBtns.forEach(function (b) {
791        b.classList.toggle('active', b.getAttribute('data-billing') === mode);
792      });
793      var term = mode === 'yearly' ? '12' : '1';
794      signupLinks.forEach(function (a) {
795        try {
796          var u = new URL(a.href, window.location.origin);
797          u.searchParams.set('plan_term', term);
798          a.href = u.toString();
799        } catch (e) { /* leave link untouched */ }
800      });
801    }
802    billingBtns.forEach(function (b) {
803      b.addEventListener('click', function () {
804        setBilling(b.getAttribute('data-billing'));
805      });
806    });
807
808    // ---- Keep the sticky compare header below the fixed site navbar ----
809    var nav = document.getElementById('primary-top-nav');
810    function syncNavOffset() {
811      if (!nav) return;
812      var h = Math.max(0, Math.round(nav.getBoundingClientRect().height));
813      page.style.setProperty('--pp-nav-offset', h + 'px');
814    }
815    syncNavOffset();
816    window.addEventListener('resize', syncNavOffset);
817    window.addEventListener('load', syncNavOffset);
818
819    // ---- Rotating testimonials ----
820    var testimonials = [
821      {
822        avatar: 'https://static-app-kol.b-cdn.net/assets/testimonials/testimonial-14a8bfb400e5759f62ca2d64d0abdb3d5f23ddcefe3df2d9c326529927d25e0a.jpg',
823        quote: 'Our launch got us 35,000 leads in 2 weeks with a 56.9% conversion rate. For every $1 spent we got roughly $1.86 back — 86.6% of leads came from the KickoffLabs social referral mechanism.',
824        name: 'Mike Madrid — Founder, Comfortable Boxers'
825      },
826      {
827        avatar: 'https://static-app-kol.b-cdn.net/assets/testimonials/yegor-662ec519062c9528a13febd193cceb6ed570f807ac15c3a0bc7bf470c647862a.jpg',
828        quote: 'When you build that initial group of people that are super excited about your campaign, they spread it, and then it becomes viral.',
829        name: 'Yegor Nadvornyy — Founder & CEO, Brainrich Kids'
830      },
831      {
832        avatar: 'https://static-app-kol.b-cdn.net/assets/testimonials/david-aee55c2a87ee0077f05ecf149cbc6e202ad0c8bcbeb4604c1aa1d9763c8e67c3.png',
833        quote: 'The great thing with KickoffLabs is that it let us set up the referral program before the app was ready.',
834        name: 'David Gobaud — Founder + CEO, Passfolio'
835      }
836    ];
837    var avatarEl = page.querySelector('.js-t-avatar');
838    var quoteEl = page.querySelector('.js-t-quote');
839    var nameEl = page.querySelector('.js-t-name');
840    var dots = page.querySelectorAll('.js-t-dots button');
841    var idx = 0, timer = null;
842
843    function showT(i) {
844      idx = (i + testimonials.length) % testimonials.length;
845      var t = testimonials[idx];
846      if (avatarEl) { avatarEl.src = t.avatar; avatarEl.alt = t.name; }
847      if (quoteEl) quoteEl.textContent = t.quote;
848      if (nameEl) nameEl.textContent = t.name;
849      dots.forEach(function (d, di) { d.classList.toggle('active', di === idx); });
850    }
851    function stopAuto() { if (timer) { clearInterval(timer); timer = null; } }
852    function startAuto() { stopAuto(); timer = setInterval(function () { showT(idx + 1); }, 7000); }
853
854    dots.forEach(function (d, di) {
855      d.addEventListener('click', function () { stopAuto(); showT(di); });
856    });
857    if (testimonials.length) { showT(0); startAuto(); }
858  })();
859</script>
859
860
861    <!-- General Page Footer -->
862
863<footer id="top-footer">
864	<div class="container">
865		<div class="row small-spacer">
866			<div class="col-md-3 col-5">
867				<!-- Product -->
868				<h2>Product</h2>
869				<p><a href="/why-kickofflabs/">Why KickoffLabs</a></p>
870				<p><a href="/how-it-works/">How It Works</a></p>
871				<p><a href="/landing-page-templates/">Page Templates</a></p>
872				<p><a href="/pricing/">Pricing</a></p>
873			</div>
874
875			<!-- Campaign Types — generated from _data/campaigns.yml (footer: true) -->
876			<div class="col-md-3 offset-md-0 col-5">
877				<h2>Campaign Types</h2>
878				
879				
880				<p><a href="/campaign-types/giveaways/">Giveaways &amp; Contests</a></p>
881				
882				<p><a href="/campaign-types/leaderboard-giveaways/">Leaderboard Giveaway</a></p>
883				
884				<p><a href="/campaign-types/sweepstakes/">Bonus-Entry Sweepstakes</a></p>
885				
886				<p><a href="/campaign-types/waitlist/">Waitlists</a></p>
887				
888				<p><a href="/campaign-types/referral-waitlist/">Referral Waitlist</a></p>
889				
890				<p><a href="/campaign-types/reward-levels/">Milestone Rewards</a></p>
891				
892				<p><a href="/campaign-types/email-opt-in/">Lead Magnets</a></p>
893				
894				<p><a href="/campaign-types/event-promotion/">Event Promotion</a></p>
895				
896			</div>
897
898			<!-- Resources -->
899			<div class="col-md-3 offset-md-0 col-5">
900				<h2>Resources</h2>
901				<p><a href="/podcast/">Podcast</a></p>
902				<p><a href="/blog/">Blog</a></p>
903				<p><a href="https://support.kickofflabs.com">Support</a></p>
904				<p><a href="https://api.kickofflabs.com/">API Documentation</a></p>
905			</div>
906
907			<!-- Company -->
908			<div class="col-md-3 offset-md-0 col-5">
909				<h2>Company</h2>
910				<p><a href="/affiliate/">Become an Affiliate</a></p>
911				<p><a href="/showcase/">Customer Showcase</a></p>
912				<p><a href="/why-kickofflabs/quotes/">Customer Quotes</a></p>
913				<p><a href="/company/">Team</a></p>
914				<p>
915					<a href="https://www.facebook.com/kickofflabs" rel="noopener noreferrer">Facebook</a>
916				</p>
917				<p>
918					<a href="https://www.threads.net/@usekickofflabs" rel="noopener noreferrer">Threads</a>
919				</p>
920				<p>
921					<a href="https://twitter.com/kickofflabs" rel="noopener noreferrer">X</a>
922				</p>
923			</div>
924
925		</div>
926	</div>
927</footer>
928
929
930<footer id="bottom-footer">
931	<div class="container">
932		<div class="row mini-spacer">
933			<div class="col-7">
934				<p>© 2026 KickoffLabs - <a href="/legal/terms-of-service/">Terms</a> - <a
935						href="/legal/privacy-policy/">Privacy</a></p>
936
937			</div>
938
939		</div>
940
941	</div>
942
943
944</footer>
945
946<!-- FREE SIGNUP MODAL CODE -->
947<div id="signup-free" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="signupFree">
948	<div class="modal-dialog  modal-lg" role="document">
949		<div class="modal-content">
950			<div class="modal-body">
951				<div class="form">
952					<form data-bs-toggle="validator" data-disable="false" data-delay="10000" id="free_account_sign_up_form"
953						role="form" action="https://app.kickofflabs.com/signup/free-user" accept-charset="UTF-8" class=""
954						method="post">
955						<img class="" src="/assets/images/logo_on_light_473x102.webp" alt="KickoffLabs Logo" width="140" height="20">
956						<p class="small-spacer-top" style="font-size:14px">Start building with amazing support today. No credit card
957							required. </p>
958						<input name="utf8" type="hidden" value="✓">
959						<div class="form-group">
960							<label for="_email">Email Address</label>
961							<input required required="required" id="email" placeholder="Email" class="form-control input-lg"
962								name="email" type="email" data-error="You must include a valid email address." data-bs-toggle="tooltip"
963								data-title="Email is required to create an account and access the services. We will provide account related communications to this email."
964								data-placement="right">
965
966						</div>
967						<div class="form-group">
968							<label for="_password">Password</label>
969							<input required required="required" id="password" data-minlength="4"
970								data-error="Your password must be at least 4 characters long." placeholder="****"
971								class="form-control input-lg" name="password" type="password">
972							<div class="help-block with-errors" style="font-size:12px;"></div>
973						</div>
974						<div class="form-group text-left">
975							<div class="checkbox">
976								<label for="_terms">
977
978									<input style="margin-top: 6px;" id="_terms" name="terms" required="required" type="checkbox"
979										data-original-title="" title=""><span style="font-size:14px;line-height:23px;"> I agree to the
980										KickoffLabs <a target="_blank" href="https://kickofflabs.com/legal/terms-of-service/">terms of
981											service</a> and <a target="_blank" href="https://kickofflabs.com/legal/privacy-policy/">privacy
982											policy</a>.
983									</span>
984								</label>
985							</div>
986						</div>
987
988						<input id="visitorId" type="hidden" name="visitor_id"></input>
989						<input id="timezone" type="hidden" name="[timezone]"></input>
990						<input id="starter_page" type="hidden" name="starter_page" value=""></input>
991						<input type="hidden" id="signup_form" class="signup-form-value" name="signup_form" value="not set"></input>
992						<input type="hidden" id="referer" name="referer" value=''></input>
993						<input type="hidden" id="turnstile_token" name="turnstile_token" value=''></input>
994						<div id="turnstile-container"></div>
995						<input type="submit" name="commit" value="Get Started!"
996							class="btn btn-blue btn-lg btn-block w-100 free-modal">
997						<p class="mb-2 mt-2" style="font-size:12px; text-align:center;">or</p>
998						<a href="https://app.kickofflabs.com/auth/google_oauth2"
999							class="btn btn-ghost-blue w-100 btn-md btn-block free-modal">
1000							<span class="" width="14px" height="14px" style="height: 14px; width: 14px;"><svg class="svg" width="14"
1001									height="14" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg">
1002									<path
1003										d="M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844c-.209 1.125-.843 2.078-1.796 2.717v2.258h2.908c1.702-1.567 2.684-3.874 2.684-6.615z"
1004										fill-rule="evenodd" fill-opacity="1" fill="#4285f4" stroke="none"></path>
1005									<path
1006										d="M9.003 18c2.43 0 4.467-.806 5.956-2.18L12.05 13.56c-.806.54-1.836.86-3.047.86-2.344 0-4.328-1.584-5.036-3.711H.96v2.332C2.44 15.983 5.485 18 9.003 18z"
1007										fill-rule="evenodd" fill-opacity="1" fill="#34a853" stroke="none"></path>
1008									<path
1009										d="M3.964 10.712c-.18-.54-.282-1.117-.282-1.71 0-.593.102-1.17.282-1.71V4.96H.957C.347 6.175 0 7.55 0 9.002c0 1.452.348 2.827.957 4.042l3.007-2.332z"
1010										fill-rule="evenodd" fill-opacity="1" fill="#fbbc05" stroke="none"></path>
1011									<path
1012										d="M9.003 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.464.891 11.428 0 9.002 0 5.485 0 2.44 2.017.96 4.958L3.967 7.29c.708-2.127 2.692-3.71 5.036-3.71z"
1013										fill-rule="evenodd" fill-opacity="1" fill="#ea4335" stroke="none"></path>
1014								</svg></span> Start with Google</a>
1015					</form>
1016
1017
1018				</div>
1019				<div class="image"
1020					style="background: url('/assets/images/home/signup-graphic.webp');   background-size: cover; background-position: center;">
1021				</div>
1022				<button type="button" class="close btn btn-outline" data-bs-dismiss="modal" aria-label="Close"><span
1023						aria-hidden="true">×</span></button>
1024			</div> <!--- modal-body -->
1025		</div><!-- /.modal-content -->
1026	</div><!-- /.modal-dialog -->
1027</div><!-- /.modal -->
1028
1029<!-- Video Modal -->
1030
1031<!-- Intro Video Modal -->
1032<div class="modal fade" id="video-modal" tabindex="-1" role="dialog" aria-labelledby="video-modal" aria-hidden="true">
1033	<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
1034		<div class="modal-content">
1035			<div class="modal-body">
1036				<iframe id="video-frame-src" src="" width="640" height="360" frameborder="0" allow="autoplay; fullscreen"
1037					allowfullscreen></iframe>
1038			</div>
1039		</div>
1040	</div>
1041</div>
1042
1043<!-- Image Modal Code-->
1044<!-- Modal -->
1045<div id="imagemodal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
1046	aria-hidden="true">
1047	<div class="modal-header">
1048		<button type="button" class="close" data-bs-dismiss="modal" aria-hidden="true">×</button>
1049	</div>
1050	<div class="modal-body">
1051		<img id="image-modal-image" src="" alt="Enlarged image preview">
1052	</div>
1053</div>
1054
1055
1056<!-- JS -->
1057
1058<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
1059	integrity="sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK/BmnVDxM+D2scQbITxI" crossorigin="anonymous" defer></script>
vendor: 1 bytes, line 1059
1059
1060<script src="https://unpkg.com/lite-vimeo-embed" defer></script>
vendor: 1 bytes, line 1060
1060
1061<script type="text/javascript">
1062	window.__kolLoadScriptOnce = window.__kolLoadScriptOnce || function (src, attrs) {
1063		window.__kolScriptPromises = window.__kolScriptPromises || {};
1064		if (window.__kolScriptPromises[src]) return window.__kolScriptPromises[src];
1065
1066		window.__kolScriptPromises[src] = new Promise(function (resolve, reject) {
1067			var s = document.createElement('script');
1068			s.src = src;
1069			s.async = true;
1070			if (attrs) {
1071				Object.keys(attrs).forEach(function (key) {
1072					s.setAttribute(key, attrs[key]);
1073				});
1074			}
1075			s.onload = resolve;
1076			s.onerror = reject;
1077			document.head.appendChild(s);
1078		});
1079
1080		return window.__kolScriptPromises[src];
1081	};
1082
1083	window.__kolLoadStylesheetOnce = window.__kolLoadStylesheetOnce || function (href) {
1084		if (document.querySelector('link[href="' + href + '"]')) return;
1085		var l = document.createElement('link');
1086		l.href = href;
1087		l.rel = 'stylesheet';
1088		document.head.appendChild(l);
1089	};
1090
1091
1092	window.__kolLoadTurnstile = window.__kolLoadTurnstile || function () {
1093		return window.__kolLoadScriptOnce('https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit');
1094	};
1095
1096	window.__kolLoadFingerprint = window.__kolLoadFingerprint || function () {
1097		return window.__kolLoadScriptOnce('https://cdnjs.cloudflare.com/ajax/libs/fingerprintjs2/2.1.0/fingerprint2.min.js');
1098	};
1099	//script the navbar ready state.
1100	var kol_skip_font_awesome = true;
1101
1102	document.addEventListener('DOMContentLoaded', function () {
1103
1104
1105
1106
1107
1108
1109		// set specific link active.
1110		document.querySelectorAll('#primary-top-nav a, #primary-top-nav li').forEach(function (el) {
1111			el.classList.remove('active');
1112		});
1113
1114		if (location.pathname.length > 1) {
1115
1116			var picked = document.querySelector('#primary-top-nav a[href="' + location.pathname + '"]');
1117			if (picked !== null) {
1118				picked.classList.add('active');
1119				picked.closest("li").classList.add('active');
1120			}
1121
1122			// only do a match if there is just one.
1123			var similarLinks = document.querySelectorAll('#primary-top-nav a[href^="/' + location.pathname.split("/")[1] + '"]');
1124			if ((picked === null) && (similarLinks.length === 1)) {
1125				similarLinks[0].classList.add('active');
1126				similarLinks[0].closest("li").classList.add('active');
1127			}
1128
1129			// otherwise try and pick a top level menu.
1130			if ((picked === null) && (similarLinks.length > 1)) {
1131				similarLinks.forEach(function (el) {
1132					el.closest("li").classList.add('active');
1133				});
1134			}
1135
1136		}
1137		// actions on signup modal
1138		document.getElementById('signup-free').addEventListener('shown.bs.modal', function () {
1139			document.getElementById('email').focus();
1140			if (typeof fathom !== 'undefined') {
1141				var v = localStorage.getItem('ab_dark_hero_v1') || 'unknown';
1142				fathom.trackEvent('ab_dark_hero_v1_form_open_' + v);
1143			}
1144		});
1145
1146		// Track signup form submission
1147		document.getElementById('free_account_sign_up_form').addEventListener('submit', function () {
1148			if (typeof fathom !== 'undefined') {
1149				var v = localStorage.getItem('ab_dark_hero_v1') || 'unknown';
1150				fathom.trackEvent('ab_dark_hero_v1_signup_' + v);
1151			}
1152		});
1153
1154		var videoModal = document.getElementById('video-modal');
1155		videoModal.addEventListener('show.bs.modal', function (event) {
1156			var button = event.relatedTarget;
1157			var frameSrc = button.dataset.videoFrameSrc;
1158			var modal = this;
1159			modal.querySelector('#video-frame-src').src = frameSrc + "?autoplay=true";
1160		});
1161
1162		videoModal.addEventListener('hide.bs.modal', function (event) {
1163			var modal = this;
1164			modal.querySelector('#video-frame-src').src = '';
1165		});
1166
1167	});
1168</script>
1168
1169
1170
1171
1172
1173<script>
1174	// --- KOL Attribution Tracking ---
1175	// Captures UTMs, click IDs, and referrer on first page load.
1176	// Stores first-touch (localStorage) and last-touch (sessionStorage).
1177	// Populates hidden form fields and decorates app.kickofflabs.com links.
1178	(function () {
1179		var UTM_KEYS = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
1180		var CLICK_ID_KEYS = ['fbclid', 'gclid'];
1181		var ALL_KEYS = UTM_KEYS.concat(CLICK_ID_KEYS);
1182		var FIRST_TOUCH_KEY = 'kol_first_touch';
1183		var LAST_TOUCH_KEY = 'kol_last_touch';
1184		var STARTER_PAGE_KEY = 'kol_starter_page';
1185
1186		function getParams() {
1187			var params = {};
1188			try {
1189				var sp = new URLSearchParams(window.location.search);
1190				ALL_KEYS.forEach(function (k) {
1191					var v = sp.get(k);
1192					if (v) params[k] = v;
1193				});
1194			} catch (e) { /* old browser fallback not needed for target audience */ }
1195			return params;
1196		}
1197
1198		function readStore(storage, key) {
1199			try {
1200				var raw = storage.getItem(key);
1201				return raw ? JSON.parse(raw) : null;
1202			} catch (e) { return null; }
1203		}
1204
1205		function writeStore(storage, key, obj) {
1206			try { storage.setItem(key, JSON.stringify(obj)); } catch (e) { /* quota */ }
1207		}
1208
1209		// Capture current page params
1210		var currentParams = getParams();
1211		var hasNewAttribution = Object.keys(currentParams).length > 0;
1212		var referrer = document.referrer || '';
1213
1214		// First-touch: write once, never overwrite
1215		if (!readStore(localStorage, FIRST_TOUCH_KEY)) {
1216			var firstTouch = {};
1217			ALL_KEYS.forEach(function (k) { if (currentParams[k]) firstTouch[k] = currentParams[k]; });
1218			if (referrer) firstTouch.referrer = referrer;
1219			firstTouch.landing_page = window.location.href;
1220			firstTouch.ts = new Date().toISOString();
1221			writeStore(localStorage, FIRST_TOUCH_KEY, firstTouch);
1222		}
1223
1224		// Starter page: write once
1225		if (!localStorage.getItem(STARTER_PAGE_KEY)) {
1226			try { localStorage.setItem(STARTER_PAGE_KEY, window.location.href); } catch (e) {}
1227		}
1228
1229		// Last-touch: update when new UTMs arrive
1230		if (hasNewAttribution) {
1231			var lastTouch = {};
1232			ALL_KEYS.forEach(function (k) { if (currentParams[k]) lastTouch[k] = currentParams[k]; });
1233			if (referrer) lastTouch.referrer = referrer;
1234			lastTouch.landing_page = window.location.href;
1235			lastTouch.ts = new Date().toISOString();
1236			writeStore(sessionStorage, LAST_TOUCH_KEY, lastTouch);
1237		} else if (!readStore(sessionStorage, LAST_TOUCH_KEY)) {
1238			// No UTMs and no session data yet — store referrer-only touch
1239			var refTouch = {};
1240			if (referrer) refTouch.referrer = referrer;
1241			refTouch.landing_page = window.location.href;
1242			refTouch.ts = new Date().toISOString();
1243			writeStore(sessionStorage, LAST_TOUCH_KEY, refTouch);
1244		}
1245
1246		// Expose for use by DOMContentLoaded handler below
1247		window.__kolAttribution = {
1248			firstTouch: readStore(localStorage, FIRST_TOUCH_KEY) || {},
1249			lastTouch: readStore(sessionStorage, LAST_TOUCH_KEY) || {},
1250			starterPage: localStorage.getItem(STARTER_PAGE_KEY) || ''
1251		};
1252	})();
1253
1254	function appendQueryParameterToLinks(targetUrl, parameter, value) {
1255		var links = document.querySelectorAll('a[href]');
1256
1257		links.forEach(function (link) {
1258			if (link.getAttribute('href') === targetUrl) {
1259				if (targetUrl.includes('?')) {
1260					link.setAttribute('href', targetUrl + '&' + parameter + '=' + value);
1261				} else {
1262					link.setAttribute('href', targetUrl + '?' + parameter + '=' + value);
1263				}
1264			}
1265		});
1266	}
1267
1268	// Decorate all app.kickofflabs.com links with attribution params
1269	function decorateAppLinks() {
1270		var attr = window.__kolAttribution || {};
1271		var ft = attr.firstTouch || {};
1272		var lt = attr.lastTouch || {};
1273
1274		// Build params: prefer last-touch UTMs, fall back to first-touch
1275		var params = [];
1276		['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid'].forEach(function (k) {
1277			var val = lt[k] || ft[k];
1278			if (val) params.push(k + '=' + encodeURIComponent(val));
1279		});
1280		// Always include first-touch referrer and starter page if available
1281		if (ft.referrer) params.push('kol_referrer=' + encodeURIComponent(ft.referrer));
1282		if (attr.starterPage) params.push('starter_page=' + encodeURIComponent(attr.starterPage));
1283
1284		if (params.length === 0) return;
1285		var paramStr = params.join('&');
1286
1287		document.querySelectorAll('a[href*="app.kickofflabs.com"]').forEach(function (link) {
1288			var href = link.getAttribute('href');
1289			// Skip if we already decorated this link
1290			if (href.indexOf('utm_source=') !== -1 || href.indexOf('kol_referrer=') !== -1) return;
1291			if (href.indexOf('?') !== -1) {
1292				link.setAttribute('href', href + '&' + paramStr);
1293			} else {
1294				link.setAttribute('href', href + '?' + paramStr);
1295			}
1296		});
1297	}
1298
1299	document.addEventListener("DOMContentLoaded", function () {
1300		var attr = window.__kolAttribution || {};
1301
1302		// Populate signup_form (current page URL) — existing behavior
1303		document.querySelectorAll('.signup-form-value').forEach(function (el) {
1304			el.value = window.location.href || "no href";
1305		});
1306
1307		// Populate referer fields (ALL of them — handles duplicate IDs on campaign pages)
1308		var referrerValue = attr.firstTouch.referrer || document.referrer || '';
1309		document.querySelectorAll('input[name="referer"]').forEach(function (el) {
1310			el.value = referrerValue;
1311		});
1312
1313		// Populate starter_page fields
1314		var starterPage = attr.starterPage || window.location.href;
1315		document.querySelectorAll('input[name="starter_page"]').forEach(function (el) {
1316			el.value = starterPage;
1317		});
1318
1319		// Populate structured attribution fields (utm_*, click IDs, kol_referrer) on
1320		// every signup form so they POST as discrete params rather than relying on
1321		// Rails parsing them back out of the signup_form / starter_page URLs.
1322		// Prefer last-touch, fall back to first-touch (matches decorateAppLinks).
1323		var ft = attr.firstTouch || {};
1324		var lt = attr.lastTouch || {};
1325		var attributionFields = {
1326			utm_source: lt.utm_source || ft.utm_source || '',
1327			utm_medium: lt.utm_medium || ft.utm_medium || '',
1328			utm_campaign: lt.utm_campaign || ft.utm_campaign || '',
1329			utm_term: lt.utm_term || ft.utm_term || '',
1330			utm_content: lt.utm_content || ft.utm_content || '',
1331			fbclid: lt.fbclid || ft.fbclid || '',
1332			gclid: lt.gclid || ft.gclid || '',
1333			kol_referrer: ft.referrer || ''
1334		};
1335		document.querySelectorAll('form[action*="signup/free-user"]').forEach(function (form) {
1336			Object.keys(attributionFields).forEach(function (name) {
1337				var value = attributionFields[name];
1338				if (!value) return; // never send empty fields; Rails only writes present ones
1339				var input = form.querySelector('input[name="' + name + '"]');
1340				if (!input) {
1341					input = document.createElement('input');
1342					input.type = 'hidden';
1343					input.name = name;
1344					form.appendChild(input);
1345				}
1346				input.value = value;
1347			});
1348		});
1349
1350		// Decorate signup/OAuth/pricing links with attribution
1351		appendQueryParameterToLinks('https://app.kickofflabs.com/auth/google_oauth2', 'signup_form', encodeURIComponent(window.location.href));
1352		decorateAppLinks();
1353
1354		var hydrateFingerprint = function () {
1355			if (window.__kolFingerprintHydrated) return;
1356			window.__kolFingerprintHydrated = true;
1357
1358			window.__kolLoadFingerprint().then(function () {
1359				if (!window.Fingerprint2) return;
1360				Fingerprint2.getV18(function (visitorId) {
1361					document.querySelectorAll('input[name="visitor_id"]').forEach(function (el) {
1362						el.value = visitorId;
1363					});
1364				});
1365			}).catch(function () { /* fingerprint is attribution-only; never block signup */ });
1366		};
1367
1368		document.getElementById('signup-free').addEventListener('shown.bs.modal', hydrateFingerprint);
1369		document.getElementById('free_account_sign_up_form').addEventListener('submit', hydrateFingerprint);
1370	});
1371</script>
vendor: 1 bytes, line 1371
1371
1372<script>
1373	(function () {
1374		var loadFontAwesome = function () {
1375			window.__kolLoadScriptOnce('https://kit.fontawesome.com/413baa29c3.js', { crossorigin: 'anonymous' });
1376		};
1377
1378		if ('requestIdleCallback' in window) {
1379			window.requestIdleCallback(loadFontAwesome, { timeout: 3000 });
1380		} else {
1381			window.setTimeout(loadFontAwesome, 1500);
1382		}
1383	})();
1384</script>
vendor: 1 bytes, line 1384
1384
1385<script>
1386	(function () {
1387		var turnstileRendered = false;
1388
1389		document.addEventListener("shown.bs.modal", function (event) {
1390			if (turnstileRendered) return;
1391			if (!event.target || event.target.id !== 'signup-free') return;
1392
1393			window.__kolLoadTurnstile().then(function () {
1394				if (!window.turnstile || !document.getElementById("turnstile-container")) return;
1395				turnstileRendered = true;
1396				turnstile.render("#turnstile-container", {
1397					sitekey: "0x4AAAAAAALMZRI9LDpjKuIR",
1398					action: "main",
1399					callback: function (token) {
1400						const turnstile_token_element = document.getElementById("turnstile_token")
1401						if (turnstile_token_element) {
1402							turnstile_token_element.value = token;
1403							let googleButton = document.querySelector('a.btn-ghost-blue');
1404							if (googleButton) {
1405								if (googleButton.href.includes('?')) {
1406									googleButton.href += '&turnstile_token=' + encodeURIComponent(token);
1407								} else {
1408									googleButton.href += '?turnstile_token=' + encodeURIComponent(token);
1409								}
1410							}
1411						} else {
1412							console.log("Missing Turnstile Token Element");
1413						}
1414						console.log("Challenge Success", token);
1415					},
1416				});
1417			}).catch(function () { /* signup form handles missing token server-side */ });
1418		})
1419	})();
1420</script>
vendor: 1 bytes, line 1420
1420
1421<script>
1422	document.addEventListener("DOMContentLoaded", function () {
1423			// Find the TOC within the 'mobile-toc' class
1424			var mobileTocWrapper = document.querySelector('.mobile-toc');
1425			var mobileToc = document.querySelector('.mobile-toc #toc');
1426			if (!mobileToc) return; // Exit if no TOC found
1427
1428			// Create dropdown button
1429			var dropdownButton = document.createElement('button');
1430			dropdownButton.classList.add('btn', 'btn-outline-dark', 'dropdown-toggle');
1431			dropdownButton.setAttribute('type', 'button');
1432			dropdownButton.setAttribute('data-bs-toggle', 'dropdown');
1433			dropdownButton.setAttribute('aria-expanded', 'false');
1434			dropdownButton.textContent = 'Contents';
1435
1436			// Create dropdown menu
1437			var dropdownMenu = document.createElement('ul');
1438			dropdownMenu.classList.add('dropdown-menu');
1439
1440			// Move existing list items to dropdown menu
1441			while (mobileToc.children.length > 0) {
1442				var item = mobileToc.children[0];
1443				item.classList.add('dropdown-item');
1444				dropdownMenu.appendChild(item);
1445			}
1446
1447			// Create the container for the dropdown
1448			var dropdownContainer = document.createElement('div');
1449			dropdownContainer.classList.add('dropdown');
1450
1451			// Assemble the dropdown
1452			dropdownContainer.appendChild(dropdownButton);
1453			dropdownContainer.appendChild(dropdownMenu);
1454
1455			// Replace the old TOC with the new dropdown
1456			mobileToc.parentNode.replaceChild(dropdownContainer, mobileToc);
1457			mobileTocWrapper.style.display = 'block';
1458		});
1459
1460</script>
1460
1461  
1461<script src="https://cdn.kickoffpages.com/2.1.0/kol.js" id="koljs" data-campaign-id="2" data-cookie-domain="kickofflabs.com" async></script>
1461<script>
1462(function () {
1463  var BEACON_ID = '757ce3b7-e651-44a3-a4cf-fed5fccdad8c';
1464  var loaded = false;
1465
1466  // Keep HelpScout's queue API available before the real script loads.
1467  window.Beacon = window.Beacon || function (method, options, data) {
1468    window.Beacon.readyQueue.push({
1469      method: method,
1470      options: options,
1471      data: data
1472    });
1473  };
1474  window.Beacon.readyQueue = window.Beacon.readyQueue || [];
1475
1476  function loadHelpScout() {
1477    if (loaded) return;
1478    loaded = true;
1479
1480    var script = document.createElement('script');
1481    script.type = 'text/javascript';
1482    script.async = true;
1483    script.src = 'https://beacon-v2.helpscout.net';
1484    document.head.appendChild(script);
1485
1486    window.Beacon('init', BEACON_ID);
1487  }
1488
1489  function loadOnFirstInteraction() {
1490    loadHelpScout();
1491    window.removeEventListener('scroll', loadOnFirstInteraction);
1492    window.removeEventListener('mousemove', loadOnFirstInteraction);
1493    window.removeEventListener('touchstart', loadOnFirstInteraction);
1494    window.removeEventListener('keydown', loadOnFirstInteraction);
1495  }
1496
1497  // Load when the user shows intent.
1498  window.addEventListener('scroll', loadOnFirstInteraction, { once: true, passive: true });
1499  window.addEventListener('mousemove', loadOnFirstInteraction, { once: true, passive: true });
1500  window.addEventListener('touchstart', loadOnFirstInteraction, { once: true, passive: true });
1501  window.addEventListener('keydown', loadOnFirstInteraction, { once: true, passive: true });
1502
1503  // Also load after the page is idle, so chat still appears for passive visitors.
1504  window.addEventListener('load', function () {
1505    if ('requestIdleCallback' in window) {
1506      requestIdleCallback(loadHelpScout, { timeout: 5000 });
1507    } else {
1508      setTimeout(loadHelpScout, 3500);
1509    }
1510  });
1511})();
1512</script>
1512</body>
1513</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.