🤖 Stop the Bots. Protect Your Analytics.

Detect Human Traffic Before Consent Loads

Gravito's SDK identifies genuine human visitors in milliseconds—before your CMP even initializes. No cookies. No fingerprinting. Privacy-first bot detection.

See It In Action ↓

The Bot Problem

Invalid traffic is costing the digital advertising industry billions

đź’¸ Ad Fraud

Click farms and bot traffic waste your ad spend. Studies show 15-30% of ad traffic is non-human.

📊 Skewed Analytics

Bots distort your metrics—sessions, bounce rates, conversions—making optimization impossible.

đź”’ Security Risks

Automated scraping damages site performance and exposes your data to competitors.

⚠️ Too Late

Traditional solutions run after consent. Bots don't consent—they just slip through.

Our Solution

Behavioral analysis. Client-side. Pre-consent.

How It Works

🚀
Page Loads
SDK init
→
🔍
Signals
0-200ms
→
đź§ 
Analysis
Local
→
📡
Telemetry
Hashed
1

SDK Loads First

Runs before CMP. No consent needed.

2

Behavioral Signals

Render time, focus, viewport—locally.

3

Local Decision

Human/bot/uncertain in browser.

4

Privacy-Safe

Hashed, aggregated data only.

Live Demo

Select a scenario to see how Gravito detects different visitor types

📊 Collected Signals
👤 HUMAN Confidence: 94%
📤 API Payload

Privacy First

We don't collect PII. Here's what we actually measure.

âś… What We Measure

  • Render time (ms)
  • Window focus patterns
  • Viewport dimensions
  • Screen rendering flags
  • IP /16 segment (coarse geo)

❌ What We Don't

  • Cookies or localStorage
  • Persistent identifiers
  • Email, name, IP (full)
  • Cross-site profiles
  • Any personal data

Built on Legitimate Interest (GDPR Art. 6(1)(f)) for fraud prevention.

Add to Your Site

Simple integration. Works before consent loads.

<!-- Option 1: Simple one-liner -->
<script src="https://gravito.bot.omniapps.net/sdk.js"></script>

<!-- Option 2: With configuration -->
<script>
  window.ghdConfig = {
    autoInit: true,        // Start automatically
    collectionTimeout: 200  // Max ms to collect signals
  };
</script>
<script src="https://gravito.bot.omniapps.net/sdk.js"></script>

<!-- Option 3: Inject from JavaScript -->
<script>
(function() {
  var script = document.createElement('script');
  script.src = 'https://gravito.bot.omniapps.net/sdk.js';
  script.onload = function() {
    console.log('GHD loaded:', window.ghd.version);
  };
  document.head.appendChild(script);
})();
</script>

<!-- Access results via event -->
window.addEventListener("ghd-ready", function(e) {
  console.log("Detection:", e.detail.decision, e.detail.confidence + '%');
});

<!-- Or check directly -->
if (window.ghd && window.ghd.isHuman()) {
  console.log("Welcome, human!");
}</code></pre>
        

đź“‹ Configuration Options

{ "autoInit": true, // Auto-start on load "collectionTimeout": 200 // Max signal collection time (ms) }

đź“‹ Response Object

{ "decision": "HUMAN", "confidence": 94, "signals": { "renderTime": 187, "focusEvents": 3 }, "factors": [ { "name": "renderTime", "score": "human" } ] }

Ready to Filter the Noise?

Join the beta program. Protect your analytics. Preserve privacy.

Request Early Access