1<!doctype html> 2<html lang="en" class="plt-tablet plt-desktop md" mode="md"> 3 <head> 4 <meta charset="UTF-8" /> 5 <link rel="icon" type="image/x-icon" href="https://assets.viktor.com/spaces/6f98b507aa1bdf13770f10c8e0f0e26b/favicon.png" /> 6 <link rel="icon" type="image/png" sizes="16x16" href="https://assets.viktor.com/spaces/6f98b507aa1bdf13770f10c8e0f0e26b/favicon.png" /> 7 <link rel="icon" type="image/png" sizes="32x32" href="https://assets.viktor.com/spaces/6f98b507aa1bdf13770f10c8e0f0e26b/favicon.png" /> 8 <link rel="icon" type="image/png" sizes="48x48" href="https://assets.viktor.com/spaces/6f98b507aa1bdf13770f10c8e0f0e26b/favicon.png" /> 9 <link rel="apple-touch-icon" sizes="180x180" href="https://assets.viktor.com/spaces/6f98b507aa1bdf13770f10c8e0f0e26b/apple-touch-icon.png" /> 10 <link rel="icon" type="image/png" sizes="192x192" href="https://assets.viktor.com/spaces/6f98b507aa1bdf13770f10c8e0f0e26b/favicon.png" /> 11 <link rel="icon" type="image/png" sizes="512x512" href="https://assets.viktor.com/spaces/6f98b507aa1bdf13770f10c8e0f0e26b/favicon.png" /> 12 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" /> 13 <title>Terms & Conditions | ProfitFlo</title> 14 <meta id="seo-description" name="description" content="Read the Terms and Conditions for using ProfitFlo DJ booking software and client experience tools." /> 15 <meta property="og:type" content="website" /> 16 <meta property="og:site_name" content="ProfitFlo" /> 17 <meta property="og:title" content="Terms & Conditions | ProfitFlo" /> 18 <meta property="og:description" content="Read the Terms and Conditions for using ProfitFlo DJ booking software and client experience tools." /> 19 <meta property="og:url" content="https://profitflo.io/terms-and-conditions" /> 20 <meta property="og:image" content="https://profitflo.io/social-preview.jpg" /> 21 <meta property="og:image:width" content="1708" /> 22 <meta property="og:image:height" content="921" /> 23 <meta name="twitter:card" content="summary_large_image" /> 24 <meta name="twitter:title" content="Terms & Conditions | ProfitFlo" /> 25 <meta name="twitter:description" content="Read the Terms and Conditions for using ProfitFlo DJ booking software and client experience tools." /> 26 <meta name="twitter:image" content="https://profitflo.io/social-preview.jpg" /> 27 <link rel="stylesheet" href="/assets/index-p5z28W2q.css" /> 28 <link rel="stylesheet" href="/dubsado-comparison.css" /> 29 <!-- Mirror the live site's existing tablet header rule in previews. --> 30 <style id="pf-tablet-nav-fix"> 31 @media (min-width:768px) and (max-width:899px) { 32 nav.sticky>div>div:nth-child(2) { display:none!important } 33 nav.sticky>div>div:nth-child(3)>a.hidden.md\:block { display:none!important } 34 nav.sticky>div>div:nth-child(3)>button.md\:hidden { display:inline-flex!important } 35 } 36 </style> 37 <!-- 38 "Vibe Store" unhidden for the V6.0 launch (per Paul, 2026-09-28). 39 --> 40 <style id="blog-image-cls-fix"> 41 /* Reserve space for blog hero and card images so they do not shift the 42 page as they load (Core Web Vitals CLS). Ratio matches the 1248x707 43 thumbnails already in use, so nothing changes visually. */ 44 img.w-full.rounded-xl.mb-8 { 45 aspect-ratio: 1248 / 707; 46 object-fit: cover; 47 } 48 /* Homepage mobile hero screenshot (1681x577): reserve its height so the 49 headline and intro text do not jump down when it loads. */ 50 img[src="/hero-mobile-dashboard.jpg"] { 51 aspect-ratio: 1681 / 577; 52 } 53 </style> 54
54<script type="application/ld+json"> 55 { 56 "@context": "https://schema.org", 57 "@type": "Organization", 58 "name": "ProfitFlo", 59 "url": "https://profitflo.io/", 60 "logo": "https://profitflo.io/icon-512.png", 61 "description": "ProfitFlo is business management software for professional event and wedding DJs: live availability booking, e-signed contracts, deposit invoicing, and automated client follow-up.", 62 "sameAs": [], 63 "contactPoint": [{ 64 "@type": "ContactPoint", 65 "contactType": "sales", 66 "url": "https://profitflo.io/contact-us", 67 "availableLanguage": ["en"] 68 }] 69 } 70 </script>
70 71 <!-- GoHighLevel / ProfitFlo external tracking pixel (per Paul, 2026-08-11) --> 72
72<script 73 src="https://api.profitflo.io/js/external-tracking.js" 74 data-tracking-id="tk_c3ad88828cde4b319eb0d3e0c0465dec" 75 ></script>
75 76 <!-- Google Analytics 4 (per Paul, 2026-08-11). Property "Profitflo" (536745357), stream "profitflo.io (Marketing Site)", measurement ID G-ZNRZL3JF7C. -->
vendor: 68 bytes, lines 76-77
76 77 <script async src="https://www.googletagmanager.com/gtag/js?id=
77G-ZNRZL3JF7C
vendor: 16 bytes, lines 77-78
77"></script> 78
78<script> 79
vendor: 162 bytes, lines 79-84
79window.dataLayer = window.dataLayer || []; 80 function gtag() { 81 dataLayer.push(arguments); 82 } 83 gtag("js", new Date()); 84 gtag("config", "
84G-ZNRZL3JF7C
vendor: 10 bytes, lines 84-85
84"); 85
85// SPA route-change tracking: the app is a client-side router, so gtag's 86 // automatic pageview (fired once on initial load) won't see later 87 // in-app navigation. Fire a manual page_view on every history change. 88 (function () { 89 function sendPageView() { 90 if (typeof gtag === "function") { 91 gtag("event", "page_view", { 92 page_path: window.location.pathname + window.location.search, 93 page_location: window.location.href, 94 page_title: document.title, 95 }); 96 } 97 } 98 window.addEventListener("popstate", function () { 99 setTimeout(sendPageView, 300); 100 }); 101 var origPushState = history.pushState; 102 history.pushState = function () { 103 origPushState.apply(this, arguments); 104 setTimeout(sendPageView, 300); 105 }; 106 })(); 107 108 // CTA click tracking (per Paul, 2026-09-02): the marketing site had no 109 // way to see when a visitor clicks a demo/signup/checkout link, so 110 // organic conversions always read as zero. This fires a GA4 event on 111 // any click that lands on one of our known conversion links, without 112 // touching page markup or the compiled app bundle. 113 (function () { 114 var DEMO_PATHS = ["/request-a-demo", "/schedule-demo"]; 115 function ctaTypeFor(href) { 116 if (!href) return null; 117 try { 118 var url = new URL(href, window.location.origin); 119 var path = url.pathname; 120 if (DEMO_PATHS.indexOf(path) !== -1) return "demo_request"; 121 if (/^\/dj\/(standard|professional|premium)checkout$/.test(path)) return "checkout"; 122 if (url.hostname === "app.profitflo.io") return "app_signin_or_signup"; 123 return null; 124 } catch (e) { 125 return null; 126 } 127 } 128 document.addEventListener( 129 "click", 130 function (e) { 131 var el = e.target; 132 while (el && el.tagName !== "A") el = el.parentElement; 133 if (!el || !el.href) return; 134 var ctaType = ctaTypeFor(el.href); 135 if (!ctaType) return; 136 if (typeof gtag === "function") { 137 gtag("event", "cta_click", { 138 cta_type: ctaType, 139 cta_href: el.href, 140 page_path: window.location.pathname, 141 }); 142 if (ctaType === "demo_request") { 143 gtag("event", "generate_lead", { 144 cta_href: el.href, 145 page_path: window.location.pathname, 146 }); 147 } 148 } 149 }, 150 true 151 ); 152 })(); 153 </script>
153 154
154<script type="module" crossorigin src="/assets/index-B5Qt9EMX.js"></script>
154 155 <link rel="canonical" href="https://profitflo.io/terms-and-conditions"><meta property="og:image" content="https://profitflo.io/social-preview.jpg"><meta name="twitter:image" content="https://profitflo.io/social-preview.jpg"><style id="pf-tablet-nav-fix">@media (min-width:768px) and (max-width:899px){nav.sticky>div>div:nth-child(2){display:none!important}nav.sticky>div>div:nth-child(3)>a.hidden.md\:block{display:none!important}nav.sticky>div>div:nth-child(3)>button.md\:hidden{display:inline-flex!important}}</style></head> 156 <body> 157 <div id="root"><!-- Static crawler-readable content (Google OAuth verification, 2026-10-06). React replaces this on load. --> 158 <main style="max-width:960px;margin:0 auto;padding:40px 20px;font-family:sans-serif;line-height:1.6"> 159 <h1>ProfitFlo: DJ Business Operating System & Booking Software</h1> 160 <p>ProfitFlo is booking and business software for DJ and event companies. It helps them capture leads, check availability, send contracts and invoices, and manage events in one place.</p> 161 <h2>How ProfitFlo uses Google Calendar</h2> 162 <p>Users can choose to connect their Google Calendar. ProfitFlo then reads their calendar availability (busy and free times) so clients can only book open dates. This prevents double bookings. We do not sell Google user data or use it for ads, and users can disconnect at any time.</p> 163 <p>ProfitFlo does not use Google user data to create, train, or improve AI models, and never uses Google APIs to generate AI images or content, including non-consensual intimate imagery (NCII).</p> 164 <p>ProfitFlo's use and transfer of information received from Google APIs to any other app will adhere to the Google API Services User Data Policy, including the Limited Use requirements.</p> 165 <p><a href="/privacy-policy">Privacy Policy</a> | <a href="/terms-and-conditions">Terms & Conditions</a> | <a href="/contact-us">Contact</a></p> 166 </main> 167 </div> 168
168<script type="module" src="/assets/index-vibe-20261008.js"></script>
168 169
169<script src="/assets/dubsado-comparison-20261008.js"></script>
169 170
170<script src="/assets/google-compliance.js?v=3"></script>
170 171 <!-- 172 SEO description gap-fill (per Paul, 2026-08-09): a handful of routes 173 never got a unique title/description set in AI Studio and fall back to 174 the site's generic default. This fills only those specific routes with 175 real copy; every other route already gets its own unique title + 176 description from the compiled app itself and is left untouched. 177 --> 178
178<script> 179 (function () { 180 var SEO_OVERRIDES = { 181 "/affiliates": { 182 title: "ProfitFlo Affiliate Program | Earn 30% Recurring Commission", 183 desc: "Join the ProfitFlo Affiliate Program and earn 30% recurring commission for every DJ business you refer to the all-in-one booking and client experience platform.", 184 }, 185 "/blog": { 186 title: "ProfitFlo Blog | DJ Business Strategy & Automation Tips", 187 desc: "Insights and strategies to help mobile and wedding DJs build a premium brand, automate lead follow-up, and grow bookings with ProfitFlo.", 188 }, 189 "/faq": { 190 title: "Frequently Asked Questions | ProfitFlo DJ Booking Software", 191 desc: "Answers to common questions about ProfitFlo, the all-in-one DJ booking software and CRM: pricing, migration, features, and how it compares to other tools.", 192 }, 193 "/contact-us": { 194 title: "Contact ProfitFlo | Get in Touch", 195 desc: "Have questions about how ProfitFlo can transform your DJ business? Contact our team for support, sales, or general questions about our booking software and CRM.", 196 }, 197 "/privacy-policy": { 198 title: "Privacy Policy | ProfitFlo", 199 desc: "Read ProfitFlo's Privacy Policy to learn how we
199collect, use, and protect your information as a DJ business using our booking and client experience platform.", 200 }, 201 "/schedule-demo": { 202 title: "Schedule Your Demo | ProfitFlo DJ Booking Software", 203 desc: "Schedule a live demo of ProfitFlo to see how our all-in-one DJ booking software and CRM helps you win more clients and automate your business.", 204 }, 205 "/terms-and-conditions": { 206 title: "Terms & Conditions | ProfitFlo", 207 desc: "Read the Terms & Conditions for using ProfitFlo, the DJ booking software and client experience platform for wedding and event DJs.", 208 }, 209 "/compare/smpl": { 210 desc: "SMPL Events is a capable DJ event management CRM. See how ProfitFlo compares on pricing, automation, and full-business operating system features for DJs.", 211 }, 212 }; 213 214 function applySeoOverride() { 215 var path = window.location.pathname.replace(/\/$/, "") || "/"; 216 var override = SEO_OVERRIDES[path]; 217 if (!override) return; 218 if (override.title) document.title = override.title; 219 if (override.desc) { 220 var meta = document.querySelector('meta[name="description"]'); 221 if (meta) meta.setAttribute("content", override.desc); 222 } 223 } 224 225 // The app sets its own (generic-fallback) title/description shortly 226 // after mount/route-change, so re-apply a few times to win the race 227 // without needing to hook into its internal router. 228 [50, 300, 800, 1800].forEach(function (delay) { 229 setTimeout(applySeoOverride, delay); 230 }); 231 window.addEventListener("popstate", function () { 232 [50, 300, 800].forEach(function (delay) { 233 setTimeout(applySeoOverride, delay); 234 }); 235 }); 236 })(); 237 </script>
237 238
238<script> 239 (function () { 240 // Vibe Store unhidden for V6.0 launch (per Paul, 2026-09-28) - 241 // removed the /vibe-store redirect and the text-hiding sweep that 242 // used to live here. Kept the unrelated /solutions redirect fix. 243 244 // Pre-existing bug found on final QA sweep (2026-08-09): the 245 // breadcrumb on /dj-event-management links to "/solutions", a page 246 // that has never existed on this site (404s on the original AI 247 // Studio site too). Send it home instead of showing a 404. 248 if (window.location.pathname.replace(/\/$/, "") === "/solutions") { 249 window.location.replace("/"); 250 } 251 })(); 252 </script>
252 253
253<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4bc70e2c01a94c73b74392e4234840661791215815920" integrity="sha512-L0ha0OXavK/8okipN9F8BtP84dg9DUhPERbBXzwI6dgTA55d2+yweo3pn5CSFYs45/r8md2+xvUPtTdvTNRfjA==" data-cf-beacon='{"version":"2024.11.0","token":"5c3a09683b8746e799f34df4a35b6fee","r":1,"spa":2}' crossorigin="anonymous"></script>
253 254</body> 255</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.