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.

11Click IDs
5Attribution Models
10+CMPs Supported
~14 kBGzipped
Live Demo

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.

Features

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.

Comparison

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

Setup Time
2–4 weeks of dev work
Code to Write
500–1,000+ lines across scripts
Click ID Support
Custom parser per platform
CRM Integration
Build & maintain data pipeline
Consent Handling
Research + implement per CMP
PII Compliance
Manual hashing implementation
Maintenance
Fix when platforms change APIs

With Intake

One library, zero dependencies

Setup Time
15 minutes
Code to Write
3 lines
Click ID Support
11 platforms, automatic
CRM Integration
Callbacks + hidden fields
Consent Handling
Built-in, 10+ CMPs
PII Compliance
SHA-256 in browser, automatic
Maintenance
Zero — library handles updates
Privacy

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

OneTrustCookiebotAxeptioDidomiSirdataTermlyTrustArcIubendaKlaroQuantcastConsentmo+ custom parsers
Key Use Case

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.

1

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.

What you need
Intake on your site
What you get
You know which channels bring traffic
2

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.

What you need
Intake + CRM integration (hidden fields, webhooks)
What you get
Sales sees which campaign generated each lead
3

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.

What you need
Intake on your site + Plurio (or your own data warehouse + optimization layer)
What you get
  • 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
PlurioPlurioAI Agent for Performance Marketing

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.

Installation

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/intake

Google 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>
Pricing

Free & Open Source

No hidden costs. No premium tiers. Everything is included.

$0
Forever. MIT License.

All features, unlimited websites, no usage limits.

FAQ

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.