First Step to Full Funnel Analytics
A privacy-first JavaScript library for your website that captures every touchpoint — from first click to conversion. Ready for any analytics stack.
Drop it on your site and Intake auto-computes multi-touch attribution, preserves click IDs for server-side use, survives consent denial via URL pass-through, and stitches CRM records back to the visitors who created them — all in ~14 kB with zero dependencies.
See It In Action
Intake is running on this page right now. Below is your real attribution data.
First Visit
Current Visit
Session Data
User Data
Simulate a multi-touch journey
Click the links below in sequence and watch the touchpoint chain build up. Direct traffic is excluded from attribution.
Everything You Need for Traffic Attribution
A complete toolkit for understanding where your visitors come from — without compromising their privacy.
Privacy-First
Built for Consent Mode v2. Supports 10+ CMPs including OneTrust, Cookiebot, Axeptio, and Didomi. When consent is denied, attribution survives via URL pass-through — no cookies, no lost sources.
5 attribution models
5 attribution models — first touch, last touch, linear, U-shaped, and time decay. Tracks up to 50 touchpoints per visitor.
Click ID Tracking
Automatically captures 11 click IDs: gclid, fbclid, ttclid, msclkid, li_fatid, twclid, and more.
Analytics IDs
Collects GA Client ID, Amplitude ID, Mixpanel distinct_id, and custom analytics IDs. Links attribution to your analytics stack.
PII Hashing for Identity Resolution
Visitors fill out a form — Intake hashes their email and phone with SHA-256 right in the browser. Raw PII never leaves the page. Send secure hashes to your ad platform to match anonymous sessions to real leads and offline conversions — without compliance risk.
Link Decoration
Automatically decorates external links with UTM parameters and click IDs. Pass attribution to partner domains.
SPA Support
Built-in History API tracking for single-page applications. Automatically updates attribution on virtual page views.
GTM Integration
Pushes events to dataLayer. ES5-compatible GTM build included. Works seamlessly with Google Tag Manager.
Zero Dependencies
No external dependencies. ~14 kB gzipped. ESM and GTM builds included. Simple, lightweight, fast.
Server-Side Ready
Pair Intake with your own server container and route events through your server instead of Google. Click IDs, consent state, and the full touchpoint chain arrive server-side ready for deduplicated CAPI/Ads API calls.
Drop-in Install
3 lines of code to get started. npm install, import, init. Works with any framework or vanilla JS.
Weeks of Development — or 15 Minutes?
The real cost of building attribution tracking in-house. Compare the effort.
Manual Setup
Custom scripts & tag manager hacks
With Intake
One library, zero dependencies
Privacy-First by Design
Intake adapts to consent status automatically. Full tracking when consent is granted, cookieless attribution when it's denied.
- Works with or without cookies — attribution survives consent denial via URL passthrough
- Built-in Consent Mode v2 — respects analytics_storage and ad_storage signals
- SHA-256 hashing for emails and phones — raw PII never leaves the browser
- Programmatic consent withdrawal via intk.withdrawConsent()
- No third-party requests, no external servers — everything runs client-side
Compatible with 10+ Consent Management Platforms
Data Collection for End-to-End Analytics
Intake is the data collection layer. How far you take the analytics depends on your needs. Start simple, grow when ready.
Know Your Traffic Sources
Install Intake, see where visitors come from. UTM parameters, referrers, organic vs paid — all captured automatically and available in cookies or dataLayer.
Enrich Leads with Attribution
Pass first-touch source, click IDs, and campaign data into your CRM via hidden form fields or API calls. Every lead arrives with full marketing context.
From Data to Decisions: Run the Full Optimization Loop
Connect Intake to Plurio to run the full loop: attribution, analysis, and campaign optimization, grounded in your business context (goals, seasonality, KPI thresholds). Ask questions in plain English, get answers from your data. Automate weekly reviews, budget shifts, and rules that optimize on LTV and revenue.
- One source of truth: ad and CRM data with full-funnel attribution
- Chat-based insights and code-backed rules that run on your data
- Campaign optimization that compounds without scaling analyst hours
Intake Collects the Data. Plurio Turns It Into Revenue Decisions and Automation.
Plurio is the AI layer for performance marketing: it turns your ad and CRM data (including everything Intake captures) into a single source of truth, lets you query it in plain English, and runs optimization and workflows for you, so the same team can do more, faster, on revenue-based decisions.
Chat — Ask Questions, Get Answers
Ask performance questions in plain English. Plurio runs them against your data (including Intake attribution) and returns answers in minutes — the analysis that used to take days, without dependency on analysts or dashboards.
Workflows — Dashboards, Monitored for You
Connect Intake data to Plurio and get weekly reviews, budget optimization, and creative audits automated. The AI monitors all campaigns and delivers actionable insights on schedule — same logic, same quality, every time.
Rules — Automation Grounded in Your Data
Define code-based rules of any complexity that optimize on LTV and full-funnel revenue, not platform vanity metrics. Plurio runs them on your Intake-enriched data; you approve before anything executes — transparent reasoning, predictable outcomes.
Data Foundation — One Source of Truth
Unify ad platforms, CRM, and backend (including Intake touchpoints and click IDs) into one connected dataset with revenue-level attribution. The base every chat answer, workflow, and rule runs on — clean data, no stitching.
Chat-based insights. Code-backed rules. Account-level execution.
Install in Seconds
Choose your preferred method. Works with any framework or plain HTML.
CDN (jsDelivr)
One line, no build tools needed. Works everywhere.
<script src="https://cdn.jsdelivr.net/npm/@plurio/intake@2/dist/intake.js"></script>Script Tag
Download and self-host the file
<script src="intake.js"></script>npm / ESM
For modern bundlers and frameworks
npm install @plurio/intakeGoogle Tag Manager
Import our ready-made JSON container, or paste this snippet into a Custom HTML tag with an All Pages trigger.
<!-- GTM → Tags → New → Custom HTML (trigger: All Pages) -->
<script src="https://cdn.jsdelivr.net/npm/@plurio/intake@2/dist/intake.gtm.js"></script>
<script>
intk.init({
domain: 'yoursite.com',
data_layer: true
});
</script>Free & Open Source
No hidden costs. No premium tiers. Everything is included.
Frequently Asked Questions
Intake analyzes UTM parameters, document.referrer, and URL click IDs on each page load. It classifies traffic into four types: utm (tagged campaigns), organic (search engines), referral (external sites), and typein (direct). The detection runs during intk.init() and on SPA virtual page views.
When consent is denied, Intake sets no cookies and stores no data persistently. If url_passthrough is enabled, attribution data is passed between pages using window.name and automatic link decoration — allowing basic attribution without any cookies.
Yes. When spa_tracking is enabled (default: true), Intake listens for History API pushState and replaceState calls. It automatically runs attribution detection on virtual page views, updating current source, session data, and touchpoints.
Each significant source change (utm, organic, referral) creates a touchpoint with a timestamp. You can then use intk.getAttribution(model) to distribute credit across the touchpoint chain. Five models are available: first touch, last touch, linear, U-shaped (40/20/40), and time decay (7-day half-life).
Intake includes built-in parsers for OneTrust, Cookiebot, Axeptio, Didomi, Sirdata, Termly, TrustArc, Iubenda, Klaro, Quantcast, and Consentmo. It also supports gtag consent commands and generic consent_update events. You can add custom parsers for any CMP.
When pii_collection is enabled, Intake watches configured form fields (email, phone). Values are normalized (lowercase, trimmed) and hashed with SHA-256 before storage. Raw PII is never written to cookies or dataLayer — only the hash is stored for identity resolution.
Yes. The GTM build (intake.gtm.js) is transpiled to ES5 for compatibility with GTM Custom HTML tags. Intake automatically pushes events to dataLayer (intk_ready, intk_user_profile) so they can be used as GTM triggers and variables.
The UMD bundle is approximately 37KB gzipped with zero external dependencies. ESM and GTM builds are also available. The library is designed to be lightweight and suitable for production use without impacting page performance.
Start Tracking Sources in 3 Lines of Code
Install Intake, call init, and access your attribution data. It's that simple.