The problem
Around 30–40% of real visitors today block Google Analytics. Ad blockers, Safari's Intelligent Tracking Prevention, Brave's built-in shields, Firefox's Enhanced Tracking Protection, and declined cookie banners all strip the data analytics platforms depend on. If your CRM's attribution is built on top of Google Analytics, you lose source information for that third of every form submission.
The MLS Genie™ approach — three independent layers
We capture attribution at three independent points, so a failure at one layer never costs you the lead's context.
Layer 1 — JavaScript first-party tracker
A small first-party script runs on your domain (not Google's). It sets the mlsg_visitor cookie on first visit, captures the referrer via document.referrer, and beacons attribution to your own admin-ajax.php. Ad blockers don't target it because it's on your domain and not on any blocklist. This catches roughly 95% of visitors.
Layer 2 — Server-side first-touch capture
For the remaining ~5% (visitors with JavaScript fully disabled or extreme privacy hardening), MLS Genie™ also captures attribution server-side on first page load. It reads HTTP_REFERER, Sec-Fetch-Site, and User-Agent headers directly from the request — no client-side code, nothing for an ad blocker to interfere with. Even visitors using NoScript still get attributed.
Layer 3 — GA4 async enrichment (when available)
If the visitor's GA4 Client ID was captured at form submit, MLS Genie™ queries the Google Analytics Data API asynchronously to enrich the lead row with GA's own source, medium, campaign, device, and session attribution. Visited leads earn a green "Verified via GA" pill. This is the cherry-on-top layer for the 60% of leads that didn't block GA.
What gets stored
Every lead row receives a guaranteed-non-empty Source field, a Source Resolution token (which lets you audit how confident the attribution is), and — when available — Campaign, Lead Action, Geo Location, Visitor Cookie ID, GA4 Client ID, and Landing Signal columns.
How CINC compares
CINC presents the form name (e.g. "Contact Form") as the source for visitors GA missed. That looks like attribution on the surface but is functionally just relabelling the form. MLS Genie™ keeps the form name in a separate Lead Action field, so you always know whether the source label was derived attribution or a fallback. See Source Resolution for the full hierarchy.