# SourceLoop Help Center, full markdown corpus > Marketing attribution software that ties every lead, call, chat, meeting, demo, and payment back to the campaign that produced it. SourceLoop captures the source and full journey behind every conversion, whether that conversion is a form submission, a phone call, a live chat, a booked meeting or demo, a subscription, or an ecommerce order. It then follows that person through your CRM to closed-won revenue, and syncs the result back to Google Ads, Meta, LinkedIn, TikTok, and Microsoft through their Conversions API. ## Who it is for Two shapes of business, both served by the same model: - Lead-led businesses, where a lead arrives as a form fill, phone call, live chat, appointment, quote request, or booking, and the question is simply which campaign produced it and which ones converted. Common in insurance, real estate, healthcare and clinics, home services and trades, events, legal, and local services. - Deal-led businesses, where a lead becomes an opportunity before it becomes revenue, moving through demo booked, meeting held, MQL, SQL, opportunity, and closed won. Common in B2B SaaS, agencies, and consultancies. Positioned between free analytics that stop at page views and enterprise attribution platforms that cost as much as a hire. Self-serve, no sales call required, first-party and cookieless by design. ## About this file This file is the complete contents of every published help article on SourceLoop, concatenated in section order. It exists so AI search engines and LLM browsers can ingest the full documentation in one fetch. For the per-article markdown variants, append `.md` to any `/help/{slug}/` URL. For the link index alone, see https://sourceloop.ai/llms.txt. Generated: 2026-09-11 --- # Section: Getting started Create your account, install the tracking pixel, invite your team, and capture your first attributed conversion. Everything you need on day one. # What is SourceLoop and how does it work? SourceLoop is marketing attribution software that captures the source and full journey of every lead, then pushes it to your CRM and ad platforms. Source: https://sourceloop.ai/help/what-is-sourceloop/ Updated: 2026-05-28 --- SourceLoop is marketing attribution software for lead-gen, SaaS, and ecommerce teams. It captures the **source and full journey** of every visitor that converts (form submission, meeting, chat, or payment) so you can see what marketing actually works. This article gives you a quick mental model of what SourceLoop does and where its data ends up. ## What SourceLoop tracks When you install the tracking pixel on your site, SourceLoop watches for four conversion types: - **Form submissions** from any form builder (HubSpot, Webflow, Typeform, custom) - **Meetings booked** through Cal.com, Calendly, HubSpot, Chili Piper, and others - **Chat conversations** started through Intercom, Drift, Crisp, and similar tools - **Payments** from Stripe (or any platform you connect) For every conversion, SourceLoop records: 1. The **original source** (first touch) — for example, `google / cpc` from a search ad 2. The **last source before converting** (last touch) 3. The **full journey** in between, including every page visit 4. UTM parameters, referrers, and device / location context ## Where the data lives > **It's not just another analytics dashboard** > SourceLoop is designed to push attribution data **into the tools you already > use**, not trap it in a separate dashboard. The dashboard is for analysis; > the integrations are where the value compounds. Captured data flows into three places: - **SourceLoop dashboard** at `app.sourceloop.ai` — reports, funnels, the Contacts Hub - **Your CRM** (HubSpot, Salesforce, Pipedrive, Zoho, etc.) — UTM fields and full journey appended to each lead - **Your ad platforms** (Google Ads, Meta, LinkedIn) — offline conversions synced via the Conversion API for closed-loop reporting ## Who it's for SourceLoop is built for teams who: - Run paid acquisition and need to know which campaigns drive **revenue**, not just clicks - Use a CRM and want **lead source + journey** stored on every record - Want to **sync offline conversions** (a closed deal, a paid invoice) back to ad platforms so the algorithms can optimize on real outcomes - Don't want to pay enterprise prices for Segment, HubSpot Enterprise, or attribution-only tools like Hockeystack If you don't have a CRM and don't run paid ads, you probably don't need SourceLoop yet. Stick with GA4. ## Next steps Once you've got the lay of the land, head to the [install guide](/help/install-the-tracking-pixel/) to get the pixel on your site. The whole setup takes about 5 minutes. ## Frequently Asked Questions ### What does SourceLoop actually do? It records the marketing source and full pre-conversion journey of every visitor that fills out a form, books a meeting, starts a chat, or pays you. Then it stitches that data into your CRM (HubSpot, Salesforce, Pipedrive), your dashboards (revenue by channel, multi-touch attribution, funnels), and your ad platforms (offline conversion uploads to Google Ads, Meta, LinkedIn, TikTok, Microsoft). ### How is SourceLoop different from Google Analytics 4? GA4 is session-level analytics (counts, sessions, events, conversions in aggregate). SourceLoop is contact-level attribution (one row per real person with their full journey, identity, lifecycle stage, and revenue attached). GA4 says "Paid Search drove 240 sessions"; SourceLoop says "Jane Doe at Acme Inc. converted on a $12k contract, first-touch was the Google Ads campaign on April 3, last-touch was the LinkedIn ad on May 19." Different lenses on the same data. ### How is SourceLoop different from HubSpot Marketing Hub? HubSpot's attribution lives behind Marketing Hub Pro and Enterprise tiers, and it's single-touch (one source per contact). SourceLoop adds multi-touch attribution (first, last, linear, U-shaped, time-decay), works on every HubSpot tier including Free, and pushes attribution into HubSpot rather than requiring you to live in it. ### Who is SourceLoop built for? B2B SaaS, B2B services, agencies, and ecommerce teams that run paid acquisition, use a CRM, and need to know which channels actually produce revenue (not just clicks). Solo founders with no paid spend and no CRM are better off starting with GA4 and graduating to SourceLoop once paid budgets matter. ### What does it cost? Free trial with no card required. Paid plans scale with monthly tracked visitors and number of integrations. See the pricing page for current rates. ### How long does it take to set up? The tracking pixel is a single script tag, takes about 30 seconds. After that, every additional integration (CRM, payment provider, ad platform, form tool) is its own short setup flow, typically under 10 minutes each. Most teams have a working attribution pipeline within an hour of signup. ### Does SourceLoop replace my CRM? No. SourceLoop is the attribution layer that feeds your CRM. Contacts created in SourceLoop sync into HubSpot, Salesforce, or Pipedrive with full source and journey data attached; your reps continue working in the CRM. Think of SourceLoop as the missing "where did this lead come from?" column on every CRM contact. ### Where do I start? Sign up for the free trial, install the tracking pixel on your site (5 minutes), and connect your most-used integration first (whichever payment provider, CRM, or ad platform matters most to you). The dashboard fills with real data within an hour. --- # How to sign up for SourceLoop Two ways to create your SourceLoop account in under a minute, Google or email + password. No credit card needed for the free trial. Source: https://sourceloop.ai/help/how-to-sign-up-for-sourceloop/ Updated: 2026-05-28 --- Signing up for SourceLoop takes about thirty seconds. There's a free trial that starts the moment you create the account, no credit card asked, no auto-charge, and the dashboard is live the instant you finish, no email confirmation step in the way. You have two options for creating the account. Pick whichever fits your team's auth habits. ## Before you start Nothing to prepare. Just have an inbox you can access (and your Google login, if you'd rather skip the password step). ## Step 1: Open the sign-up page Head to [app.sourceloop.ai/sign-up](https://app.sourceloop.ai/sign-up).  You'll see two options stacked on the page: - **Sign up with Google** (top button) - **Or sign up with email** (form below the divider) Pick one. ## Step 2: Create the account ### (1) Sign up with Google Click **Sign up with Google**. You'll be redirected to Google's consent screen, pick the Google account you want to use, approve the standard read-only profile scopes, and Google sends you straight back to SourceLoop. No password, no email confirmation, you land in the dashboard logged in. This is the fastest path if you (or your team) already use Google Workspace. ### (2) Sign up with email + password Below the divider, fill in: - **Email** — use the address you'd want password resets and product updates sent to. Most teams use a work email, but a personal email works fine for solo accounts. - **Password** — pick something strong. A password manager is the simplest way. Click the sign-up button. The account is created immediately and you're logged in, no confirmation email to click, the dashboard opens straight away. > **Use Google for team accounts** > If multiple teammates will eventually join the same workspace, using Google sign-up keeps every account tied to your company's Google Workspace, easier to manage, easier to offboard when someone leaves. ## What happens next Right after sign-up, you'll be in the SourceLoop dashboard at [app.sourceloop.ai/home](https://app.sourceloop.ai/home). A default workspace is already created for you, and the free trial is active. There's only one thing left to do before SourceLoop starts capturing leads: install the tracking pixel on your site. Head to [Install the SourceLoop tracking pixel](/help/install-the-tracking-pixel/) for the five-minute walkthrough. If you want to know what SourceLoop will start capturing once the pixel is in, [What is SourceLoop?](/help/what-is-sourceloop/) is a one-minute read. ## Frequently Asked Questions ### Do I need a credit card to sign up? No. The free trial starts the moment you create the account, no card required, no auto-charge at the end. You only add billing details if you decide to keep going on a paid plan. ### Which option should I pick, Google or email + password? Google is faster (one click, no email verification needed) and uses your existing Google identity, so there's no password to manage. Email + password works fine too if you'd rather keep auth providers separate. ### Do I have to confirm my email after signing up? No. The account is active immediately, you'll land in the dashboard right after sign-up. ### I signed up with Google but now want to use email + password (or vice versa). Can I switch? Email and Google sign-ins are tied to the same email address. If your Google account uses the same email you'd register with, you can sign in either way. If you want to change the email on your account, contact support, we can migrate it for you. ### I work with a team. Should everyone sign up separately or share one login? Each teammate signs up with their own account, then the workspace owner invites them. Shared logins lose every workspace permission, audit-log, and per-user role benefit. See [Invite teammates to your workspace](/help/) once your workspace is up. ### My sign-up failed with "User already exists". What now? Someone (likely past you, or a teammate) has already created an account with that email. Head to [app.sourceloop.ai/sign-in](https://app.sourceloop.ai/sign-in) and use **Forgot password** to recover it, or sign in with Google if you originally used Google. --- # How to book a SourceLoop demo Schedule a 30-minute walkthrough of SourceLoop against your real stack. See multi-touch attribution, CRM sync, and offline conversions in your funnel. Source: https://sourceloop.ai/help/book-a-demo/ Updated: 2026-05-28 --- Want to see what SourceLoop looks like running against attribution data that resembles yours? Grab thirty minutes on the calendar. We'll walk through your stack, plug in real examples, and figure out whether SourceLoop is the right fit. **[Book a demo](/demo/)** ## What happens on the call No slides, no script. We'll talk through what you're stuck on right now (leads landing in your CRM with "Direct" source, Google Ads spend you can't justify, no way to tie subscription revenue back to the campaign that drove signup) and show you how SourceLoop closes those loops on a workspace shaped like yours. You can ask anything, integrations, pricing, where the attribution model breaks, how renewals get credited, what the offline-conversion sync looks like for Google / Meta / LinkedIn, how it compares to Hockeystack or HubSpot Enterprise. We'd rather you leave knowing whether SourceLoop fits than walk away with a polished pitch. ## Who should book one The call makes the most sense if you're: - Spending real money on paid acquisition and can't tell which campaigns produce paying customers vs. just trial signups - Using a CRM (HubSpot, Salesforce, Pipedrive, Zoho) and want lead source + journey on every record without manual data hygiene - Running a SaaS or subscription business where lifetime revenue matters more than first-touch conversion counts - Evaluating SourceLoop against another attribution tool and need a side-by-side on a specific use case If you're a solo founder running zero paid spend, the [free trial](https://app.sourceloop.ai/sign-up) and the [tracking pixel install guide](/help/install-the-tracking-pixel/) get you further faster than a call would. ## Before the call Nothing to prepare. If you want to make it faster, have a couple of things in mind: - Your **rough monthly traffic** and conversion volume (forms, meetings, chats, payments) - The **ad platforms** you're spending on (Google Ads, Meta, LinkedIn, others) - Your **CRM**, if any, and how leads currently get into it - One **specific question** the call should answer, the more specific, the better the call goes > **Not ready to talk?** > [What is SourceLoop?](/help/what-is-sourceloop/) is a one-minute read on what the product covers, and [signing up](/help/how-to-sign-up-for-sourceloop/) is a thirty-second job that gets you into the dashboard with a free trial, no card asked. ## Frequently Asked Questions ### How long is the demo call? 30 minutes by default. We can extend to 45 if you have a complex stack or a longer list of questions; flag it in the booking notes and we'll block the extra time. Anything beyond that turns into a proper scoping session, which we run as a separate conversation. ### Who runs the demo? A SourceLoop product specialist with hands-on attribution experience, not a generic SDR. They have access to a sandbox workspace and can build live examples on the call against data shaped like yours. ### Will the call be a generic product pitch? No. We start by asking what you're stuck on right now (untrackable Direct traffic, unattributed Google Ads spend, no revenue-by-channel view, CRM hygiene), then show how SourceLoop solves the specific gap. If we can't solve it, we'll say so. ### Should I book a demo or just start the free trial? If you're a solo founder running little paid spend, the free trial plus the tracking-pixel install guide gets you further faster. If you're spending real money on ads, running a CRM, evaluating SourceLoop against another tool, or have an integration question that affects your architecture, the demo is worth the 30 minutes. ### Do I need to prepare anything? Nothing strictly required. Helpful to have in mind, monthly traffic and conversion volume, the ad platforms you spend on, the CRM you use, and one specific question the call should answer. The more specific the question, the more useful the call. ### Can I bring teammates? Yes. Marketing ops, RevOps, demand gen leads, and engineering folks who'd own the install all benefit from being on the same call. Booking accepts multiple attendees; just add them in the calendar invite. ### What happens after the demo? We send a follow-up with the workspace examples we built on the call, a short summary of next steps, and (if you asked) a pricing breakdown for your expected volume. No automated nurture sequence; if you don't reply, you don't hear from us. --- # Install the SourceLoop tracking pixel Add the SourceLoop tracking script to your site in three steps. Every visitor's source, journey, and conversion then gets captured automatically. Source: https://sourceloop.ai/help/install-the-tracking-pixel/ Updated: 2026-05-28 --- This guide walks you through adding the SourceLoop tracking pixel to your **marketing site**. Once installed, SourceLoop captures every visitor's source, journey, and any conversion (form submission, meeting, chat, payment) they trigger. Three steps, around five minutes. Works on every CMS, every framework, every static-site generator. ## Which install do you need? > **Start here** > **Marketing site only** (no logged-in product): this page is all you need. Continue below. > > **You also have an app** at something like `app.yoursite.com` where users sign up and log in: do this page for the marketing site first, then do [Install SourceLoop in your app](/help/install-the-sourceloop-sdk/) for the app. The app needs different settings so your **login** forms are not counted as conversions and in-app clicking does not burn your pageview allowance. That page also covers the npm SDK, if you would rather write code than paste a snippet. ## Before you start You'll need: - A **SourceLoop account** ([sign up here](/help/how-to-sign-up-for-sourceloop/) if you don't have one yet) - **Access to your site's `
` HTML** (or a tag manager like GTM) - A **published page** to test against once it's live ## Step 1: Copy the tracking snippet 1. Sign in to [SourceLoop](https://app.sourceloop.ai/). 2. In the left sidebar, open **Setup -> Tracking code**. 3. Copy the snippet shown on the page.  The snippet looks like this: ```html ``` The `websiteId` is unique to your workspace and is filled in automatically when you copy from the app. Don't share the snippet publicly, anyone who has it could send fake events to your account. > **Running multiple sites under one workspace?** > Switch the active website in the top-left workspace switcher before you copy. The snippet is scoped to whichever website is currently selected, so each **separate** brand or product gets its own `websiteId`. > > A marketing site and its own app are **not** separate sites. `www.yoursite.com` and `app.yoursite.com` share one `websiteId`, which is what keeps a visitor who reads your homepage and then signs up recorded as one person. ## Step 2: Paste it into your site's `` Add the snippet inside `` on every page. The exact location depends on your stack: - **Webflow**: Project Settings -> Custom Code -> Head Code - **WordPress**: Use the "Insert Headers and Footers" plugin (or "WPCode"), or paste into your active theme's `header.php` just before `` - **Next.js / Nuxt / Remix**: Paste into the root layout file's `` (e.g., `app/layout.tsx`, `nuxt.config.ts`) - **Astro**: Add to the global layout's `` (e.g., `src/layouts/BaseLayout.astro`) - **Shopify**: Online Store -> Themes -> Actions -> Edit Code -> `theme.liquid`, paste before `` - **BigCommerce**: Storefront -> Script Manager -> Create a script, set placement to `` on All Pages - **Wix**: Settings -> Custom Code -> Add Custom Code, placement ``, apply site-wide - **Squarespace**: Settings -> Advanced -> Code Injection -> Header - **Framer**: Site Settings -> General -> Custom Code -> Start of `` tag - **Google Tag Manager**: New Tag -> Custom HTML -> paste the snippet, trigger on All Pages - **Plain HTML / custom build**: Paste directly into your site template's `` > **Consent management platforms can block the script** > If you use OneTrust, Cookiebot, Iubenda, or any other consent banner that blocks scripts until consent is given, make sure SourceLoop is allowlisted in the analytics category. Otherwise the snippet only fires for users who accept cookies, and you'll miss attribution for everyone else. ## Step 3: Deploy and reload Push the change live, then open your site in an **incognito window** (regular browsers may cache the old version of the page without the new snippet). That's it. Visitors hitting your site from this point on are being tracked by SourceLoop, source, journey, and any conversions they trigger. ## What gets captured automatically On a marketing site the snippet captures **every form** it can see, which is what you want, since almost every form on a marketing site is a lead form. Sign-in, password reset, and one-time-code forms are recognised as credential forms and skipped, so a customer login area on your marketing site does not create fake leads. If you need to exclude a specific form (an internal tool, a search box, a spam trap), or if you are installing on a logged-in product where most forms are **not** leads, see [Install SourceLoop in your app](/help/install-the-sourceloop-sdk/) for the form-exclusion and conversions-mode options. ## Verify it's working Want to make sure the script is firing correctly? Head to [Verify the tracking pixel is installed](/help/verify-tracking-is-working/) for the two-minute check. If you're stuck, email us at hello@sourceloop.ai with your domain and we'll take a look. ## Frequently Asked Questions ### Where exactly does the script go? Inside the `` tag of every page you want to track. Put it before any other analytics scripts so SourceLoop loads first. ### Does the script slow down my site? The tracker is under 8KB gzipped and loads async, so it has no measurable impact on Core Web Vitals. SourceLoop also pre-connects to `app.sourceloop.ai`, which shaves another ~80ms off the handshake. ### What if I'm using Google Tag Manager? Create a Custom HTML tag, paste the snippet, and set the trigger to "All Pages". Make sure the tag fires before any consent management platform that might block scripts. ### Do I need to install the script on every page? On every page of your marketing site, yes. Site-wide install in `` is the simplest path and every CMS and framework supports it, because forms, meetings, chats, and payments only get attributed on pages where the snippet is loaded. Your logged-in app is the exception, it takes a different install, see Install SourceLoop inside your app. ### My site uses a strict Content Security Policy. Will SourceLoop be blocked? If your CSP doesn't already allow `app.sourceloop.ai`, the browser will block the script. Add `app.sourceloop.ai` to your `script-src` and `connect-src` directives. The browser console will show a CSP violation if this is the cause. ### I have multiple websites under one SourceLoop workspace. Do I install the same snippet on all of them? It depends on whether they are separate properties or one property. Separate brands or products each get their own `websiteId`, so switch the active website in the dashboard before copying the snippet. But a marketing site and its own app (`www.yoursite.com` and `app.yoursite.com`) are one property and must share a single `websiteId`, otherwise the visit and the signup are recorded as two different people. --- # Verify the SourceLoop tracking pixel is installed Two minutes to confirm the tracking pixel is firing on your site. Use the built-in Verify button in SourceLoop, or check DevTools manually. Source: https://sourceloop.ai/help/verify-tracking-is-working/ Updated: 2026-05-28 --- You've added the SourceLoop snippet to your site (if not, do that first via [Install the SourceLoop tracking pixel](/help/install-the-tracking-pixel/)). This guide confirms the script is actually firing. There are two ways to check: the built-in **Verify** button in SourceLoop (fastest, recommended), or manual inspection in your browser's DevTools (useful for debugging edge cases). ## Step 1: Open the Tracking code page 1. Sign in to [SourceLoop](https://app.sourceloop.ai/). 2. In the left sidebar, open **Setup -> Tracking code**. 3. Scroll to the **Installation status** section near the top of the page. If SourceLoop has already detected the script on its own (it polls periodically), you'll see a green **Verified** badge with a timestamp. If not, the badge reads **Not detected**, click the **Verify** button to check manually. ## Step 2: Click Verify 1. Click the **Verify** button on the Tracking code page. 2. SourceLoop fetches your site's URL, looks for the tracking snippet, and reports back within a few seconds. 3. You'll see one of two outcomes: - **Success** — a green toast appears, the badge flips to **Verified**, and the last-verified timestamp updates. You're done. - **Failed** — a red toast appears with a short reason (e.g., "Script not detected", "No active subscription", "Website not found"). See the troubleshooting section below. > **Recently deployed?** > If you've just pushed the snippet to your site, give it 30 seconds to propagate through your CDN before clicking Verify. If you're behind Cloudflare or similar, purge the cache for the page you're verifying. ## Step 3: Cross-check in DevTools (optional) For an independent check, or if Verify is failing and you want to debug: 1. Open your site in an **incognito window**. 2. Open **DevTools** (Cmd+Opt+I on Mac, Ctrl+Shift+I on Windows) and switch to the **Network** tab. 3. Reload the page. 4. Filter the network requests for `sourceloop`. 5. You should see at least two requests: - **`tracking-v3.js`** — returns **200 OK**. This is the SourceLoop tracker bundle. - **A POST to `app.sourceloop.ai`** — returns **200** or **204**. This is the page-view event the tracker sends on load. If both requests are present and successful, the pixel is firing correctly. If `tracking-v3.js` returns 4xx or 5xx, the script URL is being blocked or your `websiteId` is wrong, double-check the snippet you pasted matches what's shown in SourceLoop. ## What to do if Verify keeps failing Run through these in order until one fixes it: 1. **Confirm the page is publicly reachable.** Verify can only check pages that don't require login. If your site is behind a paywall, password, or staging URL, switch to the DevTools method above on a logged-in browser session. 2. **Check your ``.** View page source (Cmd+Opt+U on Mac, Ctrl+U on Windows) and search for `app.sourceloop.ai`. If you don't see the snippet there, it's been overridden, deferred too late, or pasted in the wrong template. 3. **Check for CSP violations.** Open DevTools -> Console. If you see "Refused to load the script `https://app.sourceloop.ai/tracking-v3.js` because it violates the following Content Security Policy directive", add `app.sourceloop.ai` to your `script-src` and `connect-src` directives. 4. **Check your consent banner.** Cookiebot, OneTrust, Iubenda, and similar tools block scripts until consent is accepted. Either allowlist SourceLoop in the analytics category, or accept consent on the test page before clicking Verify. 5. **Check the CDN cache.** If you use Cloudflare, Vercel, Netlify, or a self-hosted CDN, the old HTML (without the snippet) may still be cached. Purge the cache for the page you're verifying. 6. **Check the `websiteId`.** Confirm the `websiteId` in the snippet on your site matches the one shown in SourceLoop's Tracking code page for the currently selected website. Multi-site workspaces are the most common place this goes wrong. If you've tried all six and Verify still fails, email us at hello@sourceloop.ai with your domain and the exact error message from the failed toast, we'll take a look. ## What to do once it's verified The tracker is now capturing visitor sessions, sources, UTMs, and journeys on every page. The next step is connecting the conversion sources you actually want attributed: - **Forms** → [Web form tracking](/help/category/attribution-tracking/) covers every supported form tool - **Meetings** → [Meeting tracking](/help/category/attribution-tracking/) covers Calendly, Cal.com, HubSpot, and others - **Chats** → [Chat tracking](/help/category/attribution-tracking/) covers Intercom, Crisp, Tidio, and others - **Payments** → [Payment tracking](/help/category/attribution-tracking/) covers Stripe, Lemon Squeezy, Paddle, Polar, Dodo Each integration article walks through the setup specific to that tool. ## Frequently Asked Questions ### How long after I install the snippet can I verify? Right away. Once the snippet is live on a published page, the Verify button can confirm it within a few seconds. The only delay is your CDN / cache, if your site is behind Cloudflare or similar, purge the cache for the page you're verifying. ### Verify said success but I'm not seeing leads in the Contacts Hub. What's wrong? Verify only confirms the tracking script loads. Leads only appear when a conversion event fires (form submission, meeting booking, chat opened, payment). If the script is loading but no conversions are coming through, the issue is either that no conversions have happened yet, or your conversion source isn't wired up. Check the relevant integration article (web form, meeting, chat, payment) for that tool. ### Verify keeps failing even though I'm sure the script is on the page. Why? Most common causes, in order, are (1) the page you're verifying is behind a login wall or paywall (the verifier can't see private pages), (2) a CSP or bot-blocker is blocking SourceLoop's verification request, (3) the snippet is loaded conditionally (for example only after consent is given), or (4) the page is cached at the CDN with an older HTML that didn't include the snippet. ### Can I verify on a subdomain or a staging site? Yes. The Verify button checks whatever URL the website record points to. If you want to verify a different page than the homepage, update the website URL in Settings, or use the DevTools method described below. ### Does Verify check every page, or just the homepage? It checks the URL stored on the website record (usually your homepage). For coverage across other pages, browse the site in DevTools with the network tab open, or use the `?sl_debug=1` URL param. --- # GDPR, cookies, and consent with SourceLoop SourceLoop does not put you at legal risk, and compliance is simple. Most sites do nothing or flip one toggle. Three setups, about a minute. Source: https://sourceloop.ai/help/gdpr-cookies-and-consent/ Updated: 2026-06-26 --- ## The 30-second decision | Your situation | What to do | | --- | --- | | Your visitors are in the US (or outside the EU/UK) | **Nothing.** Keep a privacy policy and you're done. | | You have EU/UK visitors and want the simplest setup | Turn on **Cookieless mode** (one toggle, usually no banner needed). | | You have EU/UK visitors and want maximum accuracy | Keep the default install and gate it with a **consent tool**. | Whichever you pick, SourceLoop already honors browser privacy signals (Global Privacy Control, Do Not Track) and Google Consent Mode automatically. You do not have to configure those. ## How SourceLoop tracks, in plain terms - It is a **first-party** script on your own site. No third-party pixels. - By default it uses **first-party cookies** to recognize a returning visitor, which gives the best accuracy. - Your visitor's IP is processed but stored only as a **hashed** value, never in the raw. - When someone submits a form, it captures the lead details (such as email) to attribute the conversion. All of this data goes only to your own SourceLoop account. ## Option A: Do nothing (US and non-EU audiences) GDPR is an EU and UK law. If your business and visitors are in the US, you fall under US rules (such as CCPA), which are **opt-out, not opt-in**. That means you do **not** need an "accept first" cookie banner. What you should still do: - Keep a **privacy policy** that mentions you use analytics. - That's it. SourceLoop already respects the browser opt-out signal (Global Privacy Control), so anyone who opts out is excluded automatically. This covers the majority of sites. ## Option B: Cookieless mode (privacy-first, usually no banner) If you have EU or UK visitors and want the easiest compliant setup, turn on **Cookieless mode**. How to enable it: 1. Open your website's **Tracking code** page in SourceLoop. 2. Toggle on **Cookieless mode (GDPR)**. 3. Copy the updated snippet and replace the one on your site.  What it does: - Sets **no cookies and no local storage**. Nothing persistent is stored on your visitor's device. - Visitors are recognized by a privacy-friendly **server signal that resets every day**, so there is no long-term identifier following anyone around. - Because nothing is stored on the device, you **usually do not need a cookie-consent banner**. This is the same approach used by privacy-first analytics tools like Plausible and Fathom. The tradeoff: - Slightly **lower accuracy for returning visitors and long multi-touch journeys**. Because the signal resets each day, the same person can look like a new visitor on a different day. Best for: EU-heavy sites that want the simplest compliant setup and are comfortable with a small loss in long-window accuracy. ## Option C: Consent management tool (full accuracy, fully compliant) If you want the most accurate attribution from the people who do consent, keep the default install and let a consent banner control it. One thing to know first: a **basic cookie banner is just a popup**. By itself it does not actually block anything. To genuinely gate tracking you need a consent tool that can hold scripts until the visitor accepts. Common options, most with free tiers: **Cookiebot, CookieYes, Termly, Iubenda, OneTrust, Osano**. There are two easy ways to wire it up. **1. Tag the snippet in your consent tool.** Mark the SourceLoop script as analytics or marketing, and the tool holds it until the visitor accepts. For a Cookiebot-style tool, the script tag looks like this: ```html ``` The `type="text/plain"` plus the data attribute is what keeps it switched off until the visitor accepts. The exact attribute name differs per tool, and each one documents it. **2. Use Google Consent Mode v2.** If your banner supports Consent Mode, just set analytics to denied by default. SourceLoop reads it automatically and stays completely off (no cookies, no events) until the visitor accepts, then turns on. The tradeoff: - Visitors who **reject** are not tracked, including their conversions. That is the correct and compliant outcome, and it is the same for every analytics tool. You keep full, accurate data for everyone who accepts. Best for: EU sites that want maximum accuracy from consenting visitors. ## What SourceLoop already does for you No setup required for any of this: - **First-party only.** No third-party cookies. - **IP stored hashed**, never raw. - **Honors Global Privacy Control and Do Not Track.** If a visitor has these on, tracking is disabled or personal data is stripped automatically. - **Reads Google Consent Mode v2** from your banner if present. Analytics denied means no tracking; ad-user-data denied means no email or phone is sent; ad-storage denied means no ad click IDs. ## Which should I choose? - **US or non-EU audience:** Option A. Do nothing. - **EU audience, want it simple:** Option B. Cookieless mode. - **EU audience, want best accuracy:** Option C. Consent tool. You can switch any time by changing your snippet, so it is easy to start simple and revisit later. > **Not legal advice** > This guide is general information, not legal advice. Privacy rules vary by country and by how you use the data. If you are unsure, check with a privacy professional for your specific situation. ## Frequently Asked Questions ### Will I get in trouble just for using SourceLoop? No. Using an analytics tool is not illegal. The requirement is about getting consent for EU and UK visitors. Pick Option B (Cookieless mode) or Option C (a consent tool) for those visitors and you are set. ### Does cookieless mean I capture nothing? No. You still get page views, traffic sources, and conversions. You only lose some precision when connecting the same person across different days, because the privacy-friendly server signal resets every day. ### If someone rejects the consent banner, do I still see their conversion? In Option C, no, by design. A rejection means that person is not tracked, including their conversions. This is the same for every analytics tool, and it is what compliance requires. You keep full, accurate data for everyone who accepts. ### Can I change my mind later? Yes. Switching between the default install, cookieless mode, and consent-gated tracking is just a change to the snippet on your site, so it is easy to start simple and revisit later. ### Do I have to configure Global Privacy Control or Google Consent Mode myself? No. SourceLoop honors Global Privacy Control, Do Not Track, and Google Consent Mode v2 automatically, on every setup, with no configuration. If a visitor opts out or your banner sets analytics to denied, tracking is disabled or personal data is stripped automatically. --- # Install SourceLoop in your app (SaaS, logged-in product) Install SourceLoop on your app subdomain with the script tag or npm SDK, so signups are captured but logins and in-app forms never count as conversions. Source: https://sourceloop.ai/help/install-the-sourceloop-sdk/ Updated: 2026-08-21 --- If you run a SaaS product you have **two different surfaces**, and they need **two different installs**: | Surface | Example | Install | What gets captured | |---|---|---|---| | **Marketing site** | `www.yoursite.com` | Script tag, **full mode** | Pageviews, attribution, every lead form, automatically | | **Your app** | `app.yoursite.com` | Script tag or npm SDK, **conversions mode** | Only the signups and payments you record explicitly | This page covers the **app**. For the marketing site, see [Install the tracking pixel](/help/install-the-tracking-pixel/) instead, and if you have no logged-in product at all, that page is the only one you need. > **Do not install the marketing snippet as-is inside your app** > The default snippet is built for a marketing site, so it captures **every** form it can see. Dropped into a logged-in app it will also watch your invite forms, settings forms, support forms, and search boxes, and every in-app page view counts against your pageview allowance. Conversions mode, in Step 2, is the fix. ## Why the app is different On a marketing site almost every form is a lead form, so capturing all of them is exactly right. Inside an app the opposite is true: most forms are product UI, and only one moment, the signup, is a conversion. There are three specific problems, and conversions mode solves all three at once: 1. **Login forms look like lead forms.** A sign-in submit and a trial signup are nearly identical in structure. The password is never collected either way, so what reaches SourceLoop is an email address, which is precisely what a lead looks like. 2. **Every internal form is a candidate.** "Invite a teammate", "change billing email", and "contact support" are all forms with an email field in them. 3. **In-app navigation is not marketing signal.** A user clicking through twenty screens of your product tells you nothing about attribution, but it does consume your pageview allowance. ## Step 1: Choose script tag or npm SDK Both send data to the same place, so pick whichever fits your stack. You can mix them: script tag on the marketing site, SDK in the app. | Method | Best for | Needs code? | |---|---|---| | **Script tag** | Any app, including ones you cannot easily add a dependency to | No, paste one snippet | | **npm SDK** (`@sourceloop-analytics/sdk`) | Apps built with React, Next.js, Vue, or Node, especially when you need the server client | Yes, a few lines | > **Use the same websiteId everywhere** > One SourceLoop website covers your marketing site **and** your app. `www.yoursite.com` and `app.yoursite.com` share the identity cookie on your root domain automatically, so a visitor who reads your homepage and then signs up stays **one person**. Using a second `websiteId` for the app is the most common way to break attribution. Find yours in the dashboard under **Settings, Tracking Code**. ## Step 2: Install in conversions mode Add SourceLoop to your **app's** root layout using the same `websiteId` as your marketing site, plus `mode: 'conversions'`. ### Script tag ```html ``` ### npm SDK ```bash npm install @sourceloop-analytics/sdk ``` Call `init()` as early as possible, once per page load. In Next.js App Router, put it in a client component rendered from the root layout. ```tsx // app/sourceloop-init.tsx 'use client'; import { useEffect } from 'react'; import { init } from '@sourceloop-analytics/sdk'; export function SourceLoopInit() { useEffect(() => { init({ websiteId: 'YOUR_WEBSITE_ID', mode: 'conversions' }); }, []); return null; } ``` ```tsx // app/layout.tsx import { SourceLoopInit } from './sourceloop-init'; export default function RootLayout({ children }: { children: React.ReactNode }) { return (