TruIntel Platform Documentation
All the necessary documentation for the TruIntel services is found here.
Getting Started
What is TruIntel?
TruIntel is an AI Engine Optimization (AEO) platform that helps businesses monitor, analyze, and improve how AI assistants perceive and recommend their brand. Traditional SEO focuses on Google — AEO focuses on ChatGPT, Claude, Gemini, Perplexity, and Google AI Overview.
AI Visibility Monitoring
Track how AI platforms mention your brand across ChatGPT, Claude, Gemini, Perplexity, and Google AI Overview.
SEO Analytics
PageSpeed, keyword rankings, backlinks, on-page audits, and competitor SEO comparison.
AI-Powered Insights
Weekly AI-generated reports with actionable tasks using a 4-step Gemini pipeline.
Traffic Classification
Classify website visitors as human, AI agent, bot, or synthetic in real time.
Lead Verification
Score and verify form submissions to filter fake leads and improve sales efficiency.
CMS & Content Generation
Generate, optimize, and publish AI-optimized content directly to your website.
Quick Start Guide
Get up and running with TruIntel in under 5 minutes. Follow these steps to start monitoring your AI visibility.
Create your account
Sign up at app.truintel.ai using email/password or Google OAuth. Verify your email with a 6-digit OTP code.
Set up your organization
Create or join an organization. Organizations can have multiple brands and team members with different roles.
Add your brand
Enter your brand name, website URL, industry, and a brief description. TruIntel uses this to intelligently track AI mentions.
Add tracking queries
Add search queries that potential customers might ask AI assistants about your industry. TruIntel will monitor how AI platforms respond to these queries.
Connect Google Search Console (optional)
Link your GSC account for enhanced keyword tracking, real search data, and position monitoring.
AI Query Suggestions
Not sure what queries to track? TruIntel will suggest relevant queries based on your brand, industry, and competitors using AI-powered analysis.
Authentication
TruIntel supports multiple authentication methods to keep your account secure.
| Method | Description | Details |
|---|---|---|
| Email & Password | Traditional sign-up with email verification | 6-digit OTP sent to your email for verification |
| Google OAuth | One-click sign-in with your Google account | Popup-based flow, no password needed |
| Team Invitations | Join via invitation link from team admin | Accept invitation to join existing organization |
| Password Recovery | Reset password via email OTP | OTP-based verification for security |
Token Security
Access tokens (JWT) are stored in an in-memory closure and persisted to localStorage for session continuity. Tokens are proactively refreshed 2 minutes before expiry. Refresh tokens rotate on each use with automatic retry and deduplication to prevent race conditions.
Onboarding Walkthrough
After creating your account, TruIntel guides you through a multi-step onboarding process to set up your brand monitoring.
Organization Setup
Name your organization. This is the top-level entity that contains all your brands, team members, and billing.
Brand Details
Add your brand name, website domain, industry category, and a description that helps AI understand your brand context.
Topics & Queries
TruIntel suggests relevant tracking queries based on your industry. You can accept suggestions, modify them, or create custom queries grouped by topics.
Competitor Discovery
TruIntel automatically discovers competitors in your industry. Review and confirm competitors to track — their AI visibility will be compared against yours.
GSC Connection
Optionally connect Google Search Console for real keyword data, click-through rates, and position tracking.
Teams & Roles
TruIntel supports multi-user organizations with role-based access control.
| Role | Permissions | Use Case |
|---|---|---|
| Owner | Full access — manage billing, team, brands, settings, and all features | Account creator, primary admin |
| Admin | Manage team members, brands, and settings (no billing) | Team leads, managers |
| Member | Access assigned brands and features (read + limited write) | Analysts, marketers, SEO specialists |
Invite team members by email from Settings → Team. They will receive an invitation link that expires after 7 days. You can also switch between organizations if you belong to multiple.
AI Visibility Monitoring
Overview & Visibility Score
AI Visibility Monitoring is TruIntel's core feature. It tracks how AI platforms — ChatGPT, Claude, Gemini, Perplexity, and Google AI Overview — mention, recommend, and rank your brand when users ask questions relevant to your industry.
Your Visibility Score (0–100) is a composite metric calculated from four weighted components:
Visibility Score
| Component | Weight | What It Measures |
|---|---|---|
| Recognition Rate | 40% | Percentage of queries where AI mentions your brand |
| Position Strength | 30% | Where your brand appears in AI responses (1st mention vs last) |
| Sentiment | 20% | Whether AI describes your brand positively, neutrally, or negatively |
| Citation Quality | 10% | Whether AI links to your website as a source |
Score Interpretation
80–100: Excellent (Emerald) — AI strongly recognizes your brand. 60–79: Good (Amber) — Solid presence with room to improve. 40–59: Fair (Orange) — Limited AI presence, action needed. 0–39: Poor (Red) — Brand is rarely mentioned by AI.
Platform Tracking
TruIntel monitors your brand across 5 major AI platforms simultaneously. Each platform is queried with your tracking queries to check for brand mentions, positioning, and sentiment.
ChatGPT
OpenAI GPT-5.2 via Responses API with web search enabled. The most widely used AI assistant.
Claude
Anthropic Claude Sonnet 4.5 via Messages API with web search tool. Known for nuanced, balanced responses.
Gemini
Google Gemini 3 Flash with Google Search grounding. Integrated into Google's ecosystem.
Perplexity
Perplexity Sonar with built-in source citations. A search-first AI with real-time web access.
Google AI Overview
Google's AI-generated summary at the top of search results, extracted via SearchAPI.io. Critical for SEO visibility.
Each platform check extracts: whether your brand was mentioned, mention position (1st, 2nd, 3rd, etc.), mention type (recommended, listed, discussed, compared), competitor mentions and their positions, sentiment (positive, neutral, negative), brand attributes, source citation URLs, and the full AI response text for review.
Query Performance Matrix
The Query Performance Matrix is a heatmap showing how each of your tracking queries performs across all 5 AI platforms. Rows represent queries, columns represent platforms, and cells are color-coded by mention status and position.
- Green cells — your brand is mentioned (darker = higher position)
- Gray cells — your brand is not mentioned for that query on that platform
- Click any cell to drill down into the full AI response
- Sort by overall performance, individual platform, or query name
- Filter by topic, business value, or query intent type
Business Value Scoring
Assign a business value (1–5) to each query to prioritize which queries matter most. High-value queries with low visibility are your biggest optimization opportunities.
Brand Perception & Sentiment
TruIntel analyzes the sentiment and attributes that AI platforms associate with your brand. This reveals how AI "perceives" your brand — what qualities it highlights and whether the tone is positive or negative.
- Brand Attributes — themes and qualities AI associates with your brand (e.g., "innovative", "affordable", "reliable")
- Sentiment Distribution — breakdown of positive, neutral, and negative mentions across all platforms
- Mention Types — branded (your name), unbranded (your category), and competitor (mentions alongside competitors)
- Trend tracking — see how perception shifts over time with weekly snapshots
Citation & Source Tracking
When AI platforms cite sources in their responses, TruIntel tracks which domains are being referenced and whether your website is among them.
- Source Domains — which websites AI cites most frequently in your industry
- Source Types — editorial, earned media, owned content, UGC, corporate, marketplace
- Gap Analysis — identify high-authority sources that cite competitors but not you
- URL-level tracking — see exactly which pages on each source domain are cited
- Platform-specific sources — which platforms cite which sources
Improve Your Citations
Getting cited by high-authority sources in your industry directly improves your AI visibility. Use the gap analysis to find sources that mention competitors but not you, then create content or PR outreach targeting those sources.
Check Frequency & Types
TruIntel runs visibility checks automatically based on your plan:
| Plan | Queries / Brand | Total Queries | Daily Priority | Platforms |
|---|---|---|---|---|
| Starter ($49/mo) | 10 | 10 | — | 5 platforms |
| Lite ($129/mo) | 25 | 50 | — | 5 platforms |
| Pro ($349/mo) | 40 | 120 | 5 / brand | 5 platforms |
| Enterprise (Custom) | 50 | 200+ | 10 / brand | 5 platforms |
| Check Type | When | What Runs | Plans |
|---|---|---|---|
| Weekly Full Check | Monday 2:00 AM IST | ALL queries × ALL 5 platforms | All paid plans |
| Daily Priority Check | Tue–Sun 2:00 AM IST | Top high-value queries only | Pro (5/brand), Enterprise (10/brand) |
| Manual Full Check | On-demand | All queries × all 5 platforms | All paid plans |
| Single Query Recheck | On-demand | 1 query × all 5 platforms | All paid plans |
After every visibility check, TruIntel runs a post-check processing pipeline:
- Response Analysis — AI analyzes each platform response for brand mentions, position, and sentiment
- Domain Classification — cited source domains are categorized (corporate, editorial, UGC, earned, marketplace, etc.)
- Alert Generation — automatic alerts for visibility drops (>= 5pt), competitor overtakes, and negative mentions
- Insight Generation — weekly 4-step Gemini AI pipeline: Trend Analysis → Competitor Analysis → Strategy → Action Tasks
- Dashboard Cache Refresh — real-time score updates across the platform
SEO Module
SEO Dashboard
The SEO Dashboard provides a comprehensive overview of your website's search health. It aggregates data from PageSpeed checks, keyword rankings, backlink analysis, and on-page audits into a single health score.
SEO Health Score
Aggregate score combining page speed, domain authority, SSL status, and technical health with last checked and next update timestamps.
Domain Authority & Trust
DA and Trust Score tracked over time with competitor comparison bar chart.
Page Speed
Mobile and desktop Lighthouse scores side-by-side with Core Web Vitals breakdown.
Backlinks & Referring Domains
Total backlinks, referring domains count with change indicators.
- Site Health Stats Bar — pages crawled, issues found, avg response time, avg page score, broken links
- Search Performance Card — GSC data with interactive line chart (clicks, impressions, CTR, avg position)
- Top Pages by Inbound Links — pages with most internal links pointing to them
- Quick Wins Section — dynamic alerts for PageSpeed < 50, SSL expiration, broken links, image issues
- Images Preview — table of images missing alt text with inline fix button
- Competitor SEO Card — top 5 competitors with DA, trust score, backlinks, and referring domains
- DA & Trust vs Competitors Chart — horizontal bar chart comparing your domain against competitors
Free SEO Checks (All Plans)
TruIntel includes 10 free SEO checks with all paid plans, run automatically monthly and available on-demand:
- PageSpeed Insights — mobile + desktop performance scores via Lighthouse
- Core Web Vitals — LCP, FID, CLS field data from Chrome UX Report
- SSL Certificate — validity, expiry date, and issuer verification
- Structured Data — JSON-LD schema detection and validation
- Meta Tag Audit — title, description, Open Graph, and Twitter Cards
- Robots.txt & Sitemap — accessibility, format, and coverage checks
- Mobile-Friendly Assessment — responsive design and viewport validation
- Readability Analysis — Flesch reading ease and Gunning Fog index scores
- Content Quality — heading structure, link density, image optimization
- Technology Detection — CMS, frameworks, CDN, and analytics tool identification
SEO Monitoring Schedule
| Task | When | Plans |
|---|---|---|
| Monthly full SEO (free + paid checks) | 1st of each month, 4:00 AM IST | All paid |
| Weekly SEO (DA, backlinks, competitors) | Every Monday, 3:00 AM IST | All paid |
| Daily GSC keyword sync | Daily at 5:00 AM IST | All paid (if GSC connected) |
| SEO report cleanup | Quarterly | Reports older than 180 days deleted |
PageSpeed & Core Web Vitals
TruIntel measures your site's performance using Google Lighthouse methodology. Both mobile and desktop scores are tracked with detailed metric breakdowns.
| Metric | What It Measures | Target |
|---|---|---|
| LCP (Largest Contentful Paint) | Loading — time until largest visible element renders | < 2.5 seconds |
| FID (First Input Delay) | Interactivity — time until page responds to first user action | < 100 milliseconds |
| CLS (Cumulative Layout Shift) | Visual stability — how much the layout shifts during loading | < 0.1 |
| FCP (First Contentful Paint) | Time until first content (text, image) appears | < 1.8 seconds |
| TTI (Time to Interactive) | Time until page is fully interactive | < 3.8 seconds |
| TTFB (Time to First Byte) | Server response time | < 800 milliseconds |
Performance trends are tracked over time so you can measure the impact of optimizations. Each metric shows color-coded status: green (good), amber (needs improvement), or red (poor).
Keyword Rankings
Track your keyword positions in Google search results. TruIntel combines data from Google Search Console (if connected) and third-party ranking APIs for comprehensive keyword tracking.
- Position Distribution — breakdown of keywords in Top 3, Top 10, Page 2, and below
- Position Changes — track which keywords improved or declined with delta indicators
- Search Volume & Difficulty — see estimated monthly searches and competition level
- Filter tabs: Improved, Declined, Top 10, All keywords
- Keyword History Chart — position trends for individual keywords over time
- AI-powered keyword suggestions based on your content and industry
- Position alerts — get notified when important keywords move significantly
Google Search Console Integration
Connect GSC for real click-through rate data, actual impressions, and search queries you rank for. Without GSC, TruIntel uses third-party ranking data which may not include long-tail keywords.
Backlink Analysis
Monitor your backlink profile to understand your site's authority. TruIntel tracks total backlinks, referring domains, and detects potentially toxic backlinks that could harm your SEO.
- Total Backlinks — count with trend over time
- Referring Domains — unique domains linking to your site
- Toxic Backlinks — identified harmful links that should be disavowed (Pro+ plans)
- Backlink Types — dofollow vs nofollow distribution
- Competitor Backlink Comparison — see who links to competitors but not you
- Backlink Opportunities — discover potential link-building targets
On-Page Technical Audit
TruIntel's self-hosted BFS crawler scans your website and identifies technical SEO issues. Issues are categorized by severity: critical, warning, and informational.
| Category | What's Checked | Examples |
|---|---|---|
| Meta Tags | Title, description, Open Graph, Twitter cards | Missing title, description too long, duplicate meta |
| Headings | H1-H6 hierarchy, usage, length | Multiple H1s, missing H1, skipped heading levels |
| Content | Word count, readability, keyword usage | Thin content, keyword stuffing, missing alt text |
| Links | Internal links, external links, broken links | Broken links, orphan pages, excessive redirects |
| Technical | SSL, robots.txt, sitemap, structured data | Missing sitemap, noindex on important pages |
| Performance | Image optimization, render-blocking resources | Unoptimized images, large JavaScript bundles |
The audit provides a Readability Score, Content Quality Score, and Search Visibility Score. Each issue includes a clear recommendation for how to fix it.
Competitor SEO Comparison
Compare your SEO metrics against competitors. See how your domain authority, keyword rankings, and backlink profile stack up.
- Domain Authority comparison chart
- Competitor top keywords with dropdown selector
- Keyword overlap analysis — shared vs unique keywords
- SEO metrics comparison (backlinks, referring domains, DA)
- Track multiple competitors simultaneously
Keyword Suggestions
TruIntel provides AI-powered keyword suggestions based on your content, industry, and existing keyword rankings. Suggestions include search volume, difficulty score, and relevance indicators.
- AI-generated keyword ideas based on your domain and industry
- Search volume and keyword difficulty metrics
- Relevance scoring to prioritize the best opportunities
- One-click add to your tracking keyword list
- Monthly suggestion limits based on plan tier (20–500/month)
Image Optimization
Audit your website's images for SEO best practices including file size, format, alt text, and compression opportunities.
- Detect oversized images that slow down page load
- Check for missing or poor-quality alt text
- Recommend format conversions (e.g., PNG to WebP)
- Identify images without proper dimensions specified
- Compression recommendations with estimated savings
Keyword Gap Analysis
Keyword Gap Analysis compares your keyword rankings against competitors to find opportunities. Identify keywords that competitors rank for but you don't — these represent your biggest growth opportunities.
Pro Feature
Keyword Gap and Backlink Gap analysis are available on Pro and Enterprise plans. They provide competitive intelligence that helps you prioritize content creation and link building efforts.
Backlink Gap Analysis
Backlink Gap Analysis identifies domains that link to your competitors but not to you. Target these domains for outreach to close the gap and improve your domain authority.
On-Page SEO Checker
The On-Page SEO Checker performs a page-by-page audit of your website, identifying specific issues with actionable fix recommendations categorized by severity (critical, warning, info).
Crawl Visualization
The Crawl Visualization tool displays your website's link structure as an interactive directed acyclic graph (DAG). It uses React Flow to render pages as nodes and internal links as edges, helping you identify orphan pages, deep pages, and crawl issues.
- Interactive graph with zoom, pan, and node selection
- Detail panel showing page metadata, links, and issues
- Orphan page detection — pages with no internal links pointing to them
- Crawl depth visualization — see how deep pages are from the homepage
- Toolbar with layout options and filtering controls
Google Search Console Integration
Connect your Google Search Console account for enhanced keyword tracking with real search data.
Navigate to Settings → Integrations
Go to the Integrations tab in your Settings page.
Click "Connect Google Search Console"
A Google OAuth popup will appear. Sign in and grant read-only access to your GSC data.
Select your property
Choose the GSC property (website) you want to connect from the dropdown list.
Data sync begins
TruIntel will automatically sync your keyword data daily at 5:00 AM IST. Initial sync pulls 90 days of history, then maintains a 28-day rolling window.
- Tracks: clicks, impressions, CTR, and average position per keyword
- Keywords enriched with search volume data via DataForSEO
- Position changes calculated with 7-day comparison window
- Available to all paid plans — data refreshed daily
- View GSC data in the Search Performance page with advanced filters
Privacy
TruIntel only requests read-only access to your GSC data. OAuth tokens are encrypted with Fernet encryption and stored securely. You can disconnect at any time from Settings → Integrations.
AI Insights
How Insights Work
TruIntel generates weekly AI-powered insight reports using a 4-step Gemini Flash pipeline. Each report analyzes your visibility data, competitor movements, and industry trends to produce actionable findings and tasks.
Step 1: Trend Analysis
Identifies what's changing in your AEO landscape — visibility score movements, platform shifts, emerging queries, and sentiment changes.
Step 2: Competitor Analysis
Analyzes what competitors are doing differently — which platforms mention them more, what content strategies they're using, where they're gaining ground.
Step 3: Strategy Generation
Recommends specific actions based on gaps and opportunities — content creation, source targeting, platform optimization, and brand positioning.
Step 4: Task Generation
Converts strategy into concrete, actionable tasks with impact scores, categories, and priority levels that you can track to completion.
Automatic Generation
Reports are generated every Monday at 6 AM automatically. You can also trigger a manual generation at any time from the Insights page. Generation typically takes 30–60 seconds.
Findings & Evidence
Each insight report contains 5–10 findings. Every finding includes:
- Finding Title — a clear, concise description of what was observed
- Impact Score — how significant this finding is for your brand (1–10)
- Evidence — data points and specific examples supporting the finding
- Category — trend, competitor, opportunity, risk, or achievement
- Related Tasks — actionable items generated from this finding
Findings are ranked by impact score so you can focus on what matters most. Each finding maps to one or more tasks, creating a clear path from insight to action.
Task Lifecycle
Tasks generated by the insights pipeline follow a simple lifecycle. Each task has a status, category, priority, and impact score.
| Status | Description | Action |
|---|---|---|
| Todo | New task awaiting action | Review and start working on it |
| Done | Task completed with optional notes | Mark complete, add notes about what was done |
| Dismissed | Task not applicable or not actionable | Dismiss with reason (not relevant, already done, etc.) |
Tasks can be viewed in two modes: Split View (list on left, detail on right) or Kanban Board (columns for todo, done, dismissed). Filter tasks by status, category (earned/owned), or group.
Closed-Loop Impact Tracking
When you mark a task as done, TruIntel will track whether your visibility score improves in the following week. This creates a feedback loop that helps identify which actions actually improve your AI visibility.
Reports
Brand Reports
TruIntel generates comprehensive weekly and monthly brand reports that consolidate your AEO performance, SEO health, traffic intelligence, and lead verification data into executive-ready summaries.
Each report contains 8 sections:
- Executive Summary — high-level overview with key metrics and trends
- AEO Performance — visibility score changes, platform breakdown, and recognition rate
- Platform Analysis — per-platform performance with ChatGPT, Claude, Gemini, Perplexity, and Google AI Overview
- Competitor Benchmarking — how you compare against tracked competitors
- SEO Health — domain authority, keyword rankings, backlink profile, and technical audit status
- Traffic Intelligence — visitor classification, bot detection, and traffic trends
- Leads — lead verification summary, conversion funnel, and quality distribution
- Findings — key insights and recommendations from the AI analysis pipeline
Report Export
Reports can be exported as multi-page A4 PDFs using html2canvas and jsPDF. The PDF preserves all charts, tables, and visualizations from the report detail page.
Automatic Generation
Weekly reports are generated every Monday at 9:00 AM IST. Monthly reports are generated on the 2nd of each month at 6:00 AM IST. You can also manually trigger a report from the Reports page.
Weekly Email Reports
TruIntel sends weekly email reports every Monday (after brand reports are generated) to all organization members. The email includes a visibility summary, score changes, and key alerts for the past week.
Available to All Plans
Weekly email reports, weekly brand reports, and monthly brand reports are included with all paid plans. Configure email frequency in Settings → Notifications.
Traffic Classification
Overview
TruIntel's Traffic Classification system analyzes every visitor to your website and classifies them into one of four categories. This helps you understand your real traffic, identify AI agent visits, and filter malicious bots.
| Category | Description | Examples |
|---|---|---|
| HUMAN | Real human visitors browsing your website | Chrome/Safari users, mobile visitors |
| GOOD_AGENT | Legitimate AI agents and crawlers fetching content | ChatGPT browser, Claude, Perplexity, Googlebot, Bingbot |
| BAD_BOT | Malicious or unwanted automated traffic | Scrapers, spam bots, credential stuffers |
| SYNTHETIC | Traffic from automated tools that mimics human behavior | Headless browsers, automated testing, click fraud |
Classification Score
Every visitor receives a Classification Score (0–100) based on four weighted signals:
Classification Score
- Behavior Analysis (45%) — mouse movements, scroll patterns, click timing, page dwell time
- Browser Fingerprint (30%) — canvas fingerprint, WebGL, installed fonts, timezone, screen resolution
- User Agent (15%) — user-agent string parsing, known bot patterns, header consistency
- Network Analysis (10%) — IP reputation, hosting provider detection, datacenter vs residential IP
Installation
TruIntel uses a two-part tracking system for complete traffic intelligence. The client-side script runs in the browser to detect real humans, headless browsers, and browser-based bots. The server-side middleware intercepts AI crawlers (GPTBot, ClaudeBot, PerplexityBot, etc.) that never execute JavaScript. Deploy both for the most accurate classification.
| Client-Side Script | Server-Side Middleware | |
|---|---|---|
| Runs in | Browser (visitor's device) | Your server (every HTTP request) |
| Detects | Humans, headless browsers, browser bots | AI crawlers, search bots, social preview bots |
| Method | Behavior analysis + browser fingerprint | User-Agent string matching + heuristics |
| Payload size | ~5 KB gzipped, async | Zero client impact (server-only) |
| Required? | Yes | Strongly recommended |
| Endpoint | Handled by tracker.js automatically | POST /api/v1/i/e (fire-and-forget) |
Find your Brand ID
Open your TruIntel dashboard → Settings → Integrations. Copy the Brand ID shown under your brand. Each brand has a unique ID.
Install the client-side script
Choose your framework below and paste the snippet into your site. The config object (window.TruIntel) must load before the tracker script. Works on every page automatically.
Add server-side middleware (strongly recommended)
Install middleware to catch AI crawlers that skip JavaScript. Without this, visits from GPTBot, ClaudeBot, PerplexityBot, and 50+ other AI agents will be invisible.
Verify installation
Visit your website in a browser, then check the Traffic page in TruIntel. Your visit should appear within 10 seconds. Test server-side with the curl command in the Verification section below.
Replace YOUR_BRAND_ID
Every code snippet on this page uses YOUR_BRAND_ID as a placeholder. Replace it with your actual Brand ID from Settings → Integrations before deploying. Using the wrong ID means traffic will not appear in your dashboard.
Client-Side Script
The client-side script classifies visitors using behavior analysis (mouse movements, scroll patterns, click timing), browser fingerprinting (canvas, WebGL, fonts, timezone), and user-agent parsing. It loads asynchronously, never blocks rendering, and sends data in fire-and-forget mode. No cookies are set and no personally identifiable information (PII) is collected.
| Signal Collected | Purpose | PII? |
|---|---|---|
| Mouse movement patterns | Distinguish humans from headless browsers | No |
| Scroll depth & timing | Detect automated scroll behavior | No |
| Session ID (random UUID) | Group pageviews into sessions | No |
| Visitor ID (random UUID) | Identify returning visitors (no cross-site tracking) | No |
| Browser fingerprint (canvas hash) | Detect headless/spoofed browsers | No |
| Page URL & referrer | Attribute traffic sources | No |
| Screen resolution & timezone | Detect datacenter-based bots | No |
| User-agent string | Identify browser/OS and known bots | No |
Performance
The tracker script is ~5 KB gzipped, loads with async (non-blocking), and rate-limits to 100 requests/minute per IP. It has zero impact on your Core Web Vitals (LCP, FID, CLS). No cookies are set — fully compatible with cookie-consent banners.
HTML
Add this snippet inside the <head> tag on every page you want to track. Both script tags are required — the first sets the config, the second loads the tracker.
<!-- TruIntel Traffic Tracking -->
<script>
window.TruIntel = {
brandId: 'YOUR_BRAND_ID',
apiUrl: 'https://api.truintel.ai/api/v1'
};
</script>
<script async src="https://api.truintel.ai/api/v1/traffic/tracker.js"></script>React
Create a tracker component and render it once at the root of your app (App.tsx or main layout). The cleanup function removes the script on unmount to prevent duplicates in development mode.
import { useEffect } from 'react';
export function TruIntelTracker() {
useEffect(() => {
window.TruIntel = {
brandId: 'YOUR_BRAND_ID',
apiUrl: 'https://api.truintel.ai/api/v1'
};
const s = document.createElement('script');
s.async = true;
s.src = 'https://api.truintel.ai/api/v1/traffic/tracker.js';
document.head.appendChild(s);
return () => { document.head.removeChild(s); };
}, []);
return null;
}
// Usage in App.tsx:
// import { TruIntelTracker } from './TruIntelTracker';
// function App() { return <><TruIntelTracker /><Router>...</Router></>; }Next.js
Use the Next.js Script component for optimized loading. The config must use beforeInteractive to ensure it loads before the tracker. Works with both App Router (app/layout.tsx) and Pages Router (_app.tsx).
import Script from 'next/script';
export default function RootLayout({ children }) {
return (
<html>
<head>
{/* Config MUST load before tracker.js */}
<Script id="truintel-config" strategy="beforeInteractive"
dangerouslySetInnerHTML={{
__html: `window.TruIntel={brandId:'YOUR_BRAND_ID',apiUrl:'https://api.truintel.ai/api/v1'};`,
}} />
<Script src="https://api.truintel.ai/api/v1/traffic/tracker.js"
strategy="afterInteractive" />
</head>
<body>{children}</body>
</html>
);
}Vue
Use lifecycle hooks to inject the script in your root App.vue or main layout component. The script is cleaned up on component unmount.
<script setup>
import { onMounted, onUnmounted } from 'vue';
let script = null;
onMounted(() => {
window.TruIntel = {
brandId: 'YOUR_BRAND_ID',
apiUrl: 'https://api.truintel.ai/api/v1'
};
script = document.createElement('script');
script.async = true;
script.src = 'https://api.truintel.ai/api/v1/traffic/tracker.js';
document.head.appendChild(script);
});
onUnmounted(() => {
if (script) document.head.removeChild(script);
});
</script>Nuxt
Add to your nuxt.config.ts to inject the script globally on every page. Nuxt handles the script loading order automatically.
export default defineNuxtConfig({
app: {
head: {
script: [
{
innerHTML: "window.TruIntel={brandId:'YOUR_BRAND_ID',apiUrl:'https://api.truintel.ai/api/v1'};",
},
{
src: 'https://api.truintel.ai/api/v1/traffic/tracker.js',
async: true,
},
],
},
},
});Svelte / SvelteKit
For SvelteKit, add to src/app.html inside the <head> tag. Alternatively, use <svelte:head> in your root +layout.svelte for dynamic injection.
<svelte:head>
{@html `<script>window.TruIntel={brandId:'YOUR_BRAND_ID',apiUrl:'https://api.truintel.ai/api/v1'};</script>`}
{@html `<script async src="https://api.truintel.ai/api/v1/traffic/tracker.js"></script>`}
</svelte:head>Angular
Add the script tags directly to your src/index.html inside the <head> tag. This is the simplest approach and works for all Angular versions.
<!-- Inside <head> -->
<script>
window.TruIntel = {
brandId: 'YOUR_BRAND_ID',
apiUrl: 'https://api.truintel.ai/api/v1'
};
</script>
<script async src="https://api.truintel.ai/api/v1/traffic/tracker.js"></script>WordPress
Add to your theme's functions.php file. If you use a child theme, add it there instead so updates don't overwrite it. Alternatively, use a plugin like "Insert Headers and Footers" or "WPCode" to inject without editing theme files.
// Add to your theme's functions.php
function truintel_tracking_script() {
echo '<!-- TruIntel Traffic Tracking -->
<script>
window.TruIntel = {
brandId: "YOUR_BRAND_ID",
apiUrl: "https://api.truintel.ai/api/v1"
};
</script>
<script async src="https://api.truintel.ai/api/v1/traffic/tracker.js"></script>';
}
add_action('wp_head', 'truintel_tracking_script');Script Load Order
The config script (window.TruIntel = {...}) MUST load before tracker.js. If the tracker loads first, it will not find the config and silently fail. In frameworks like Next.js, use strategy="beforeInteractive" for the config and strategy="afterInteractive" for the tracker.
Single-Page Apps (SPA)
The tracker script automatically detects client-side route changes (pushState/replaceState and popstate events). No extra configuration is needed for React Router, Vue Router, Next.js App Router, or any other SPA routing library. Each route change is tracked as a new pageview.
Server-Side Middleware
AI crawlers like GPTBot, ClaudeBot, and PerplexityBot typically don't execute JavaScript — they fetch raw HTML and parse it directly. The client-side script alone cannot detect them. Server-side middleware inspects the User-Agent header on every incoming request and forwards matching bot traffic to TruIntel's classification API. The API call is fire-and-forget: it runs asynchronously and never blocks or slows down the response to the visitor.
Best practice: use both
The client-side script handles humans and browser-based bots (scoring via behavior + fingerprint). The server-side middleware catches headless AI crawlers (scoring via user-agent + network). Together they give you complete visibility. Without middleware, 30-60% of AI agent traffic is invisible.
Next.js Middleware
Create middleware.ts at the root of your Next.js project (next to package.json, not inside src/). The matcher config excludes static assets, images, and API routes from bot detection.
import { NextResponse } from 'next/server';
import type { NextRequest } from 'next/server';
const BRAND_ID = 'YOUR_BRAND_ID';
const TRUINTEL_API = 'https://api.truintel.ai/api/v1/i/e';
// AI crawlers — expand from Pattern Catalog for 90+ patterns
const AI_CRAWLERS = [
'GPTBot','ChatGPT-User','OAI-SearchBot','ChatGPT-Agent',
'ClaudeBot','Claude-Web','Claude-SearchBot','anthropic-ai',
'Google-Extended','GoogleOther','Gemini-Deep-Research',
'bingbot','BingPreview','Copilot','AzureAI-SearchBot',
'PerplexityBot','Perplexity-User',
'Meta-ExternalAgent','Meta-ExternalFetcher',
'Applebot','Applebot-Extended',
'GrokBot','xAI-Grok','Bytespider',
'DeepseekBot','MistralAI-User','Amazonbot',
'CCBot','Diffbot','YouBot','FirecrawlAgent',
];
const OTHER_BOTS = [
'Googlebot','DuckDuckBot','YandexBot','Baiduspider',
'Slackbot','Twitterbot','LinkedInBot',
'facebookexternalhit','WhatsApp','Discordbot',
];
const ALL = [...AI_CRAWLERS, ...OTHER_BOTS];
function isBot(ua: string): boolean {
if (!ua) return true;
const lower = ua.toLowerCase();
if (ALL.some(p => lower.includes(p.toLowerCase()))) return true;
if (lower.includes('bot/') || lower.includes('spider/')
|| lower.includes('crawler/')) return true;
if (lower.includes('mozilla/5.0') && lower.includes('applewebkit')) return false;
return true;
}
export function middleware(req: NextRequest) {
const ua = req.headers.get('user-agent') || '';
if (isBot(ua)) {
const ip = req.headers.get('x-forwarded-for')?.split(',')[0]?.trim() || '';
// Fire-and-forget — never blocks or slows the response
fetch(TRUINTEL_API, {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-Forwarded-For': ip },
body: JSON.stringify({
brand_id: BRAND_ID,
page: req.nextUrl.pathname + req.nextUrl.search,
user_agent: ua,
referrer: req.headers.get('referer') || null,
is_new_session: true,
is_new_visitor: true,
}),
}).catch(() => {});
}
return NextResponse.next();
}
// Exclude static assets, images, and API routes
export const config = {
matcher: [
'/((?!_next/static|_next/image|favicon.ico|api/|.*\\.(svg|png|jpg|jpeg|gif|webp|ico|css|js|woff|woff2)$).*)',
],
};Express.js
Create a middleware file and register it with app.use(). Place it early in your middleware chain (before route handlers) so every request is checked.
const BRAND_ID = 'YOUR_BRAND_ID';
const TRUINTEL_API = 'https://api.truintel.ai/api/v1/i/e';
const AI_CRAWLERS = [
'GPTBot','ChatGPT-User','OAI-SearchBot','ChatGPT-Agent',
'ClaudeBot','Claude-Web','Claude-SearchBot','anthropic-ai',
'Google-Extended','GoogleOther','Gemini-Deep-Research',
'bingbot','BingPreview','Copilot',
'PerplexityBot','Meta-ExternalAgent','Applebot',
'GrokBot','Bytespider','DeepseekBot','Amazonbot',
'CCBot','Diffbot','YouBot','FirecrawlAgent',
];
const OTHER_BOTS = [
'Googlebot','DuckDuckBot','YandexBot','Slackbot',
'Twitterbot','LinkedInBot','facebookexternalhit','Discordbot',
];
const ALL = [...AI_CRAWLERS, ...OTHER_BOTS];
function isBot(ua) {
if (!ua) return true;
const lower = ua.toLowerCase();
if (ALL.some(p => lower.includes(p.toLowerCase()))) return true;
if (lower.includes('bot/') || lower.includes('spider/')
|| lower.includes('crawler/')) return true;
if (lower.includes('mozilla/5.0') && lower.includes('applewebkit')) return false;
return true;
}
function truintelMiddleware(req, res, next) {
const ua = req.headers['user-agent'] || '';
if (isBot(ua)) {
const ip = (req.headers['x-forwarded-for'] || '').split(',')[0].trim()
|| req.socket?.remoteAddress || '';
fetch(TRUINTEL_API, {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-Forwarded-For': ip },
body: JSON.stringify({
brand_id: BRAND_ID,
page: req.originalUrl || req.url,
user_agent: ua,
referrer: req.headers['referer'] || null,
is_new_session: true,
is_new_visitor: true,
}),
}).catch(() => {});
}
next();
}
module.exports = truintelMiddleware;
// Usage: const truintel = require('./truintel-middleware');
// app.use(truintel);Django
Create a middleware class and add it to your MIDDLEWARE list in settings.py. The API call runs in a background thread so it never blocks request processing.
import threading, json, urllib.request
BRAND_ID = 'YOUR_BRAND_ID'
TRUINTEL_API = 'https://api.truintel.ai/api/v1/i/e'
AI_CRAWLERS = [
'GPTBot','ChatGPT-User','OAI-SearchBot','ChatGPT-Agent',
'ClaudeBot','Claude-Web','Claude-SearchBot','anthropic-ai',
'Google-Extended','GoogleOther','Gemini-Deep-Research',
'bingbot','BingPreview','Copilot',
'PerplexityBot','Meta-ExternalAgent','Applebot',
'GrokBot','Bytespider','DeepseekBot','Amazonbot',
'CCBot','Diffbot','YouBot','FirecrawlAgent',
]
OTHER_BOTS = [
'Googlebot','DuckDuckBot','YandexBot','Slackbot',
'Twitterbot','LinkedInBot','facebookexternalhit','Discordbot',
]
ALL_PATTERNS = AI_CRAWLERS + OTHER_BOTS
def is_bot(ua):
if not ua:
return True
lower = ua.lower()
if any(p.lower() in lower for p in ALL_PATTERNS):
return True
if any(x in lower for x in ['bot/', 'spider/', 'crawler/']):
return True
if 'mozilla/5.0' in lower and 'applewebkit' in lower:
return False
return True
def _send(data, ip):
try:
req = urllib.request.Request(
TRUINTEL_API, json.dumps(data).encode(),
headers={'Content-Type': 'application/json', 'X-Forwarded-For': ip},
method='POST'
)
urllib.request.urlopen(req, timeout=5)
except Exception:
pass
class TruIntelCrawlerMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
ua = request.META.get('HTTP_USER_AGENT', '')
if is_bot(ua):
forwarded = request.META.get('HTTP_X_FORWARDED_FOR', '')
ip = forwarded.split(',')[0].strip() if forwarded else request.META.get('REMOTE_ADDR', '')
data = {
'brand_id': BRAND_ID,
'page': request.get_full_path(),
'user_agent': ua,
'referrer': request.META.get('HTTP_REFERER'),
'is_new_session': True,
'is_new_visitor': True,
}
threading.Thread(target=_send, args=(data, ip), daemon=True).start()
return self.get_response(request)
# settings.py:
# MIDDLEWARE = ['yourapp.truintel_middleware.TruIntelCrawlerMiddleware', ...]FastAPI
Add middleware using Starlette's BaseHTTPMiddleware. The API call runs in a background thread to keep the async event loop unblocked.
import threading, json, urllib.request
from starlette.middleware.base import BaseHTTPMiddleware
from starlette.requests import Request
BRAND_ID = 'YOUR_BRAND_ID'
TRUINTEL_API = 'https://api.truintel.ai/api/v1/i/e'
AI_CRAWLERS = [
'GPTBot','ChatGPT-User','OAI-SearchBot','ChatGPT-Agent',
'ClaudeBot','Claude-Web','Claude-SearchBot','anthropic-ai',
'Google-Extended','GoogleOther','Gemini-Deep-Research',
'PerplexityBot','Meta-ExternalAgent','Applebot',
'GrokBot','Bytespider','DeepseekBot','Amazonbot','CCBot',
]
OTHER_BOTS = [
'Googlebot','DuckDuckBot','YandexBot','Slackbot',
'Twitterbot','LinkedInBot','facebookexternalhit','Discordbot',
]
ALL_PATTERNS = AI_CRAWLERS + OTHER_BOTS
def _is_bot(ua):
if not ua:
return True
lower = ua.lower()
if any(p.lower() in lower for p in ALL_PATTERNS):
return True
if any(x in lower for x in ['bot/', 'spider/', 'crawler/']):
return True
if 'mozilla/5.0' in lower and 'applewebkit' in lower:
return False
return True
def _send(data, ip):
try:
req = urllib.request.Request(
TRUINTEL_API, json.dumps(data).encode(),
headers={'Content-Type': 'application/json', 'X-Forwarded-For': ip},
method='POST'
)
urllib.request.urlopen(req, timeout=5)
except Exception:
pass
class TruIntelMiddleware(BaseHTTPMiddleware):
async def dispatch(self, request: Request, call_next):
ua = request.headers.get('user-agent', '')
if _is_bot(ua):
forwarded = request.headers.get('x-forwarded-for', '')
ip = forwarded.split(',')[0].strip() if forwarded else (str(request.client.host) if request.client else '')
data = {
'brand_id': BRAND_ID,
'page': str(request.url.path) + ('?' + str(request.url.query) if request.url.query else ''),
'user_agent': ua,
'referrer': request.headers.get('referer'),
'is_new_session': True,
'is_new_visitor': True,
}
threading.Thread(target=_send, args=(data, ip), daemon=True).start()
return await call_next(request)
# main.py:
# from truintel_middleware import TruIntelMiddleware
# app.add_middleware(TruIntelMiddleware)Flask
Use Flask's before_request hook to check every incoming request. Import and call init_truintel(app) in your main app file.
import threading, json, urllib.request
from flask import request
BRAND_ID = 'YOUR_BRAND_ID'
TRUINTEL_API = 'https://api.truintel.ai/api/v1/i/e'
AI_CRAWLERS = [
'GPTBot','ChatGPT-User','OAI-SearchBot','ChatGPT-Agent',
'ClaudeBot','Claude-Web','Claude-SearchBot','anthropic-ai',
'Google-Extended','GoogleOther','Gemini-Deep-Research',
'PerplexityBot','Meta-ExternalAgent','Applebot',
'GrokBot','Bytespider','DeepseekBot','Amazonbot','CCBot',
]
OTHER_BOTS = [
'Googlebot','DuckDuckBot','YandexBot','Slackbot',
'Twitterbot','LinkedInBot','facebookexternalhit','Discordbot',
]
ALL_PATTERNS = AI_CRAWLERS + OTHER_BOTS
def _is_bot(ua):
if not ua:
return True
lower = ua.lower()
if any(p.lower() in lower for p in ALL_PATTERNS):
return True
if any(x in lower for x in ['bot/', 'spider/', 'crawler/']):
return True
if 'mozilla/5.0' in lower and 'applewebkit' in lower:
return False
return True
def _send(data, ip):
try:
req = urllib.request.Request(
TRUINTEL_API, json.dumps(data).encode(),
headers={'Content-Type': 'application/json', 'X-Forwarded-For': ip},
method='POST'
)
urllib.request.urlopen(req, timeout=5)
except Exception:
pass
def init_truintel(app):
@app.before_request
def track_bots():
ua = request.headers.get('User-Agent', '')
if _is_bot(ua):
forwarded = request.headers.get('X-Forwarded-For', '')
ip = forwarded.split(',')[0].strip() if forwarded else (request.remote_addr or '')
data = {
'brand_id': BRAND_ID,
'page': request.full_path,
'user_agent': ua,
'referrer': request.referrer,
'is_new_session': True,
'is_new_visitor': True,
}
threading.Thread(target=_send, args=(data, ip), daemon=True).start()
# app.py:
# from truintel_middleware import init_truintel
# init_truintel(app)Go (net/http)
Create an HTTP middleware handler. The API call runs in a goroutine so it never blocks the response. Wrap your router with TruIntelMiddleware(router).
package main
import (
"bytes"
"encoding/json"
"net/http"
"strings"
)
const brandID = "YOUR_BRAND_ID"
const truintelAPI = "https://api.truintel.ai/api/v1/i/e"
var aiCrawlers = []string{
"GPTBot","ChatGPT-User","OAI-SearchBot","ChatGPT-Agent",
"ClaudeBot","Claude-Web","Claude-SearchBot","anthropic-ai",
"Google-Extended","GoogleOther","Gemini-Deep-Research",
"PerplexityBot","Meta-ExternalAgent","Applebot",
"GrokBot","Bytespider","DeepseekBot","Amazonbot","CCBot",
}
var otherBots = []string{
"Googlebot","DuckDuckBot","YandexBot","Slackbot",
"Twitterbot","LinkedInBot","facebookexternalhit","Discordbot",
}
func isBot(ua string) bool {
if ua == "" { return true }
lower := strings.ToLower(ua)
for _, p := range append(aiCrawlers, otherBots...) {
if strings.Contains(lower, strings.ToLower(p)) { return true }
}
for _, x := range []string{"bot/", "spider/", "crawler/"} {
if strings.Contains(lower, x) { return true }
}
if strings.Contains(lower, "mozilla/5.0") && strings.Contains(lower, "applewebkit") {
return false
}
return true
}
func TruIntelMiddleware(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
ua := r.UserAgent()
if isBot(ua) {
ip := strings.Split(r.Header.Get("X-Forwarded-For"), ",")[0]
if ip == "" { ip = strings.Split(r.RemoteAddr, ":")[0] }
go func() {
body, _ := json.Marshal(map[string]interface{}{
"brand_id": brandID,
"page": r.URL.RequestURI(),
"user_agent": ua,
"referrer": r.Referer(),
"is_new_session": true, "is_new_visitor": true,
})
req, _ := http.NewRequest("POST", truintelAPI, bytes.NewReader(body))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Forwarded-For", ip)
http.DefaultClient.Do(req)
}()
}
next.ServeHTTP(w, r)
})
}
// Usage: http.ListenAndServe(":8080", TruIntelMiddleware(router))AI Crawler Coverage — 90+ Patterns
The examples above show the most common patterns. TruIntel's Pattern Catalog includes 90+ crawler signatures across OpenAI, Anthropic, Google, Microsoft, Meta, Apple, xAI (Grok), ByteDance, Perplexity, DeepSeek, Mistral, Amazon, Cohere, Common Crawl, and dozens of AI search engines. For the complete and always-updated list, use the one-click copy in your TruIntel dashboard (Traffic → Install Script).
Existing middleware?
If you already have middleware (auth, CORS, logging), just add the TruIntel middleware to your chain. It calls next() immediately after the fire-and-forget API call — it never modifies the request or response. Order doesn't matter since it's non-blocking.
Verification & Testing
After installing both scripts, verify that traffic data is flowing correctly into your TruIntel dashboard.
Verify client-side
Open your website in a browser. Open DevTools → Network tab and filter by "tracker.js". You should see the script load successfully (200 status). Then filter by "/i/" to see the tracking beacon requests.
Check the dashboard
Go to TruIntel → Traffic. Your visit should appear in the Live Traffic Feed within 10 seconds, classified as HUMAN with a high confidence score.
Test server-side with curl
Run the curl command below from your terminal. This simulates a GPTBot visit. Check the Traffic page — you should see it classified as GOOD_AGENT within a few seconds.
Test edge cases
Visit from a mobile device, try incognito mode, and verify that each visit appears correctly classified. Check that static assets (images, CSS) are NOT being tracked.
# Simulate GPTBot visiting your homepage
curl -s https://yoursite.com/ \
-H "User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko) GPTBot/1.0"
# Simulate ClaudeBot
curl -s https://yoursite.com/ \
-H "User-Agent: ClaudeBot/1.0 (https://anthropic.com)"
# If your middleware is working, both visits appear in TruIntel
# within seconds, classified as GOOD_AGENTWhat to expect
After successful installation: browser visits appear as HUMAN (score 80-100), known AI agents appear as GOOD_AGENT, headless browsers appear as SYNTHETIC (score 20-40), and scrapers/spam bots appear as BAD_BOT. It typically takes 24-48 hours to build a meaningful traffic profile.
Content Security Policy (CSP)
If your site uses Content Security Policy headers, you need to allow the TruIntel tracker script and its API endpoint. Add these directives to your CSP header:
Content-Security-Policy:
script-src 'self' https://api.truintel.ai;
connect-src 'self' https://api.truintel.ai;CSP and nonce-based policies
If you use nonce-based CSP (script-src 'nonce-xxx'), you need to add the nonce attribute to both TruIntel script tags. The async tracker script must also be whitelisted. Alternatively, add https://api.truintel.ai to your script-src allowlist.
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| No data appears in dashboard | Wrong Brand ID or script not loading | Check DevTools → Console for errors. Verify Brand ID matches Settings → Integrations. Ensure both script tags are present. |
| Script loads but no beacon sent | window.TruIntel config missing or loads after tracker.js | The config script must be placed BEFORE the tracker script tag. In Next.js, use beforeInteractive for config. |
| CSP error in console | Content Security Policy blocks tracker script or API calls | Add https://api.truintel.ai to script-src and connect-src in your CSP header. |
| Ad blocker blocks tracker | Browser ad blocker or privacy extension blocks third-party scripts | Expected behavior — ad-blocked visitors won't be tracked client-side. Server-side middleware still catches bots. Human traffic from ad-block users is typically 10-15%. |
| Double-counted pageviews | Script loaded twice (e.g., in both layout and page component) | Ensure the tracker script is loaded only ONCE at the root layout level. Check React StrictMode (dev only — not an issue in production). |
| Static assets appearing as visits | Server-side middleware runs on image/CSS/JS requests | Add path exclusions to your middleware. In Next.js, use the matcher config. In Express, check req.path for file extensions before calling isBot(). |
| Server-side events not appearing | Middleware not registered or API endpoint wrong | Verify the middleware is in your middleware chain. The endpoint is /api/v1/i/e (not /api/v1/traffic/middleware). Test with the curl command above. |
| All traffic shows as BOT | Server behind a proxy that strips User-Agent headers | Ensure your reverse proxy (Nginx, Cloudflare) forwards the original User-Agent header. Check X-Forwarded-For is set for correct IP attribution. |
| CORS errors in console | Browser blocks cross-origin API request | The tracker uses fire-and-forget beacons — CORS should not apply. If you see CORS errors, verify you're using the async script tag, not a direct fetch() call. |
| Rate limit errors (429) | More than 100 requests/minute from a single IP | This usually indicates a bot loop or misconfigured middleware. Check for recursive middleware calls or scripts that re-inject themselves. |
Edge Cases
| Scenario | Solution |
|---|---|
| Single-page app (SPA) with client-side routing | The tracker automatically detects pushState/popstate route changes. No extra config needed for React Router, Vue Router, Next.js, etc. |
| Server-side rendering (SSR) / Static site generation (SSG) | The client-side script runs only in the browser — SSR-rendered pages won't cause double tracking. Server-side middleware catches bots during SSR requests. |
| Behind Cloudflare / CDN / reverse proxy | Ensure the proxy forwards the original User-Agent and X-Forwarded-For headers. Cloudflare does this by default. Cached CDN responses won't trigger middleware, which is correct behavior. |
| Behind Vercel / Netlify / similar platform | Next.js middleware runs on the edge (before cache). Vercel automatically provides the real IP via x-forwarded-for. No extra config needed. |
| Multiple brands on one domain (e.g., /brand-a, /brand-b) | Use different Brand IDs for each section. Set window.TruIntel.brandId dynamically based on the URL path. For middleware, use the URL path to determine which Brand ID to send. |
| Subdomains (blog.yoursite.com, app.yoursite.com) | Each subdomain can use the same or different Brand ID. Install the script separately on each subdomain. Middleware runs per-deployment, so deploy it on each subdomain's server. |
| TypeScript strict mode (no window.TruIntel) | Add a type declaration: declare global { interface Window { TruIntel?: { brandId: string; apiUrl: string } } } in a .d.ts file or at the top of your component. |
| Google Tag Manager (GTM) | Add both script tags as a Custom HTML tag in GTM. Set the trigger to "All Pages" with firing priority higher than other tags. Alternatively, paste directly in your HTML for more reliable loading. |
| Iframes / embedded content | The tracker runs in the parent page context. Content inside iframes on a different origin will not be tracked. Same-origin iframes may be tracked — add data-ti-ignore to the iframe to exclude it. |
| Testing in development (localhost) | The tracker works on localhost. Traffic from localhost appears in your dashboard labeled with the localhost origin. Use this to verify your installation before deploying to production. |
Privacy & Performance
| Data Category | Collected | NOT Collected |
|---|---|---|
| Identity | Random session/visitor UUIDs | Names, emails, phone numbers, login credentials |
| Browsing | Page URLs on your domain, referrer domain | Browsing history, cross-site tracking, form data |
| Device | Browser type, OS, screen resolution, timezone | IP address (only forwarded, not stored long-term), precise geolocation |
| Behavior | Mouse movement patterns, scroll depth, click timing | Keystrokes, passwords, clipboard content, screenshots |
| Network | User-agent string | Cookies, localStorage, session tokens |
- Script size: ~5 KB gzipped (loads async, non-blocking)
- Beacon size: ~200 bytes per event (fire-and-forget POST)
- Rate limit: 100 requests/minute per IP (client-side), no limit on server-side middleware
- Zero cookies set — no cookie-consent banner interaction required
- No impact on Core Web Vitals (LCP, FID, CLS) — verified via Lighthouse
- Server-side middleware adds 0ms latency — API call runs asynchronously in background
GDPR & Compliance
TruIntel does not collect personally identifiable information (PII). No cookies are set. Visitor UUIDs are randomly generated and cannot be traced back to individuals. The tracker is designed to be compliant with GDPR, CCPA, and ePrivacy Directive without requiring cookie consent. If your legal team requires explicit consent for any analytics, wrap the script tags in your consent management flow.
Dashboard & Analytics
The Traffic Dashboard provides real-time visibility into your website visitors.
Live Traffic Feed
Real-time stream of incoming visitors with classification, location, and device info.
Agent Breakdown
Pie chart showing which AI agents and bots visit your site (ChatGPT, Googlebot, etc.).
Traffic Trends
Daily/weekly traffic trends with classification breakdown over time.
Threat Analysis
Identify and monitor potentially harmful bot patterns and traffic spikes.
Use the Rules Manager to create whitelist/blacklist rules for specific IPs, user agents, or patterns. Browse the built-in Pattern Catalog for known bot signatures.
Lead Verification
Installation
TruIntel's lead verification works by automatically intercepting form submissions on your website. A single script detects all <form> elements, captures submission data along with behavioral signals, and scores each lead in real time. No backend changes are required — the same tracker script used for traffic classification also handles lead verification.
One script, two features
If you've already installed the TruIntel tracker script for Traffic Classification, lead verification is already active. The same script handles both traffic tracking and form interception. No additional installation is needed — just verify that forms are being detected on the Leads page.
How It Works
Auto-Detects Forms
Automatically finds all <form> elements on the page, including forms added dynamically after page load (via MutationObserver).
Captures Behavior
Records time on page, scroll depth, mouse movement, form fill time, and field interaction patterns before submission.
Scores in Real-Time
Analyzes email quality, behavior patterns, identity consistency, traffic source, and device fingerprint. Returns a 0-100 score within seconds.
Zero Interruption
The form still submits normally to your backend. TruIntel intercepts the submit event, captures data, then lets the native submission proceed.
What Data Is Captured
| Data Point | Source | Used For |
|---|---|---|
| Form field values (name, email, company, phone, message) | Form input elements | Identity analysis, email validation, company domain matching |
| Page URL and referrer | Browser location | Traffic source scoring, landing page relevance |
| Time on page before submission | Tracker timer | Bot detection (bots submit instantly, humans take 10+ seconds) |
| Form fill time | First field focus → submit click | Bot detection (bots fill forms in <1 second) |
| Scroll depth before form interaction | Scroll listener | Engagement scoring (bots rarely scroll) |
| Mouse movement patterns | Mouse event tracking | Bot detection (bots have no or linear mouse paths) |
| Field interaction order | Focus/blur events | Bot detection (bots fill fields top-to-bottom instantly) |
| Browser fingerprint + user-agent | Canvas hash, screen info | Device reputation scoring |
Passwords are never captured
Input fields with type="password" are automatically excluded from data capture. The tracker also excludes fields named "password", "passwd", "secret", "token", and "credit_card". Sensitive field values are never sent to TruIntel's API.
Installation Steps
Find your Brand ID
Go to Settings → Integrations in your TruIntel dashboard. Copy the Brand ID shown under your brand.
Install the tracking script
Choose your framework below and paste the snippet. The script must load on every page that has forms you want to track. If you've already installed it for Traffic Classification, skip this step.
Submit a test form
Fill out a form on your site with realistic data (real email, full name). Submit it and check the Leads page in TruIntel — the submission should appear within a few seconds with a score and status.
Review the score breakdown
Click on the test lead in TruIntel to see the full score breakdown: email analysis, behavior signals, identity match, traffic source quality, and device reputation.
Script Installation
This is the same script used for Traffic Classification. If you've already installed it, lead verification is already active.
HTML
Paste inside the <head> tag on every page that has forms you want to track.
<!-- TruIntel Lead Verification -->
<script>
window.TruIntel = {
brandId: 'YOUR_BRAND_ID',
apiUrl: 'https://api.truintel.ai/api/v1'
};
</script>
<script async src="https://api.truintel.ai/api/v1/traffic/tracker.js"></script>React
Add once in your App.tsx or root layout component. The tracker persists across route changes and detects dynamically rendered forms.
import { useEffect } from 'react';
export function TruIntelTracker() {
useEffect(() => {
window.TruIntel = {
brandId: 'YOUR_BRAND_ID',
apiUrl: 'https://api.truintel.ai/api/v1'
};
const s = document.createElement('script');
s.async = true;
s.src = 'https://api.truintel.ai/api/v1/traffic/tracker.js';
document.head.appendChild(s);
return () => { document.head.removeChild(s); };
}, []);
return null;
}
// Usage: <TruIntelTracker />Next.js
Add to your root layout (app/layout.tsx for App Router, _app.tsx for Pages Router).
import Script from 'next/script';
export default function RootLayout({ children }) {
return (
<html>
<head>
<Script id="truintel-config" strategy="beforeInteractive"
dangerouslySetInnerHTML={{
__html: `window.TruIntel={brandId:'YOUR_BRAND_ID',apiUrl:'https://api.truintel.ai/api/v1'};`,
}} />
<Script src="https://api.truintel.ai/api/v1/traffic/tracker.js"
strategy="afterInteractive" />
</head>
<body>{children}</body>
</html>
);
}Vue
Add to your root App.vue or main entry component.
<script setup>
import { onMounted, onUnmounted } from 'vue';
let script = null;
onMounted(() => {
window.TruIntel = {
brandId: 'YOUR_BRAND_ID',
apiUrl: 'https://api.truintel.ai/api/v1'
};
script = document.createElement('script');
script.async = true;
script.src = 'https://api.truintel.ai/api/v1/traffic/tracker.js';
document.head.appendChild(script);
});
onUnmounted(() => {
if (script) document.head.removeChild(script);
});
</script>Nuxt
Add to your nuxt.config.ts to inject the script globally on every page.
export default defineNuxtConfig({
app: {
head: {
script: [
{
innerHTML: "window.TruIntel={brandId:'YOUR_BRAND_ID',apiUrl:'https://api.truintel.ai/api/v1'};",
},
{
src: 'https://api.truintel.ai/api/v1/traffic/tracker.js',
async: true,
},
],
},
},
});Angular
Add to src/index.html inside the <head> tag.
<!-- Inside <head> -->
<script>
window.TruIntel = {
brandId: 'YOUR_BRAND_ID',
apiUrl: 'https://api.truintel.ai/api/v1'
};
</script>
<script async src="https://api.truintel.ai/api/v1/traffic/tracker.js"></script>Svelte / SvelteKit
Add to src/app.html inside the <head> tag, or use <svelte:head> in your root layout.
<svelte:head>
{@html `<script>window.TruIntel={brandId:'YOUR_BRAND_ID',apiUrl:'https://api.truintel.ai/api/v1'};</script>`}
{@html `<script async src="https://api.truintel.ai/api/v1/traffic/tracker.js"></script>`}
</svelte:head>WordPress
Add to your theme's functions.php, or use a plugin like "Insert Headers and Footers" or "WPCode" to inject without editing theme files.
// Add to your theme's functions.php
add_action('wp_head', function() {
?>
<script>
window.TruIntel = {
brandId: 'YOUR_BRAND_ID',
apiUrl: 'https://api.truintel.ai/api/v1'
};
</script>
<script async src="https://api.truintel.ai/api/v1/traffic/tracker.js"></script>
<?php
});Script Load Order
Replace YOUR_BRAND_ID with your actual Brand ID from Settings → Integrations. The config object (window.TruIntel) must load before the tracker script — otherwise forms will not be tracked.
Excluding Forms
By default, TruIntel tracks all form submissions on the page. To exclude specific forms from being tracked, add the data-ti-ignore attribute to the <form> element.
<!-- This form will NOT be tracked -->
<form action="/login" method="POST" data-ti-ignore>
<input type="email" name="email" />
<input type="password" name="password" />
<button type="submit">Log in</button>
</form>
<!-- This form WILL be tracked -->
<form action="/contact" method="POST">
<input type="text" name="name" placeholder="Full name" />
<input type="email" name="email" placeholder="Work email" />
<textarea name="message"></textarea>
<button type="submit">Send</button>
</form>| Form Type | Auto-Behavior | Action Needed |
|---|---|---|
| Contact / inquiry forms | Tracked automatically | None — these are your leads |
| Login / sign-in forms | Auto-skipped (detected by action URL and field names) | None |
| Registration / sign-up forms | Tracked automatically | Add data-ti-ignore if you don't want sign-up tracking |
| Search forms (GET method) | Tracked automatically | Add data-ti-ignore to exclude |
| Newsletter subscription forms | Tracked automatically | Keep or exclude based on your preference |
| Internal admin forms | Tracked automatically | Add data-ti-ignore to exclude |
| Checkout / payment forms | Tracked automatically | Add data-ti-ignore — payment fields should not be tracked |
| Password reset forms | Auto-skipped | None |
Auto-skipped patterns
Forms with action URLs containing "login", "signin", "sign-in", "auth", or "password" are automatically skipped. Forms with only password-type fields are also auto-skipped. You only need data-ti-ignore for other forms you want to exclude.
Edge Cases & Advanced Scenarios
| Scenario | How TruIntel Handles It |
|---|---|
| Dynamically rendered forms (React, Vue, Angular) | The tracker uses MutationObserver to detect forms added to the DOM after initial page load. Forms rendered by JavaScript frameworks are detected automatically — no extra config needed. |
| AJAX / fetch-based form submissions | If your form uses preventDefault() and submits via fetch/axios, TruIntel's submit event listener fires first and captures the data. The form data is captured regardless of how the submission is handled. |
| Multi-step / wizard forms | TruIntel captures the final submission (the actual form submit event). Intermediate "Next" buttons that don't trigger a form submit are not tracked. If each step is a separate <form>, each submission is tracked individually. |
| Forms inside modals or drawers | Forms in modals, popups, slide-out drawers, and dialog elements are detected when they're added to the DOM. Works with all UI libraries (Material UI, Chakra, Radix, Headless UI, etc.). |
| Third-party form builders (HubSpot, Typeform, Jotform) | Embedded iframes from third-party builders cannot be tracked (cross-origin restriction). HubSpot forms embedded as JavaScript (not iframe) may be detected. For best results, use native HTML forms. |
| File upload forms (multipart/form-data) | File inputs are detected but file contents are never uploaded to TruIntel. Only the filename and file size are recorded for scoring purposes. |
| Forms submitted by pressing Enter | Enter-key submissions trigger the same submit event as clicking a button. They are tracked identically. |
| Multiple forms on one page | Each form is tracked independently. If a page has a contact form, newsletter signup, and search form, each gets its own score and lead entry when submitted. |
| SPA route changes | The tracker re-scans for forms on every route change (detects pushState/popstate). Forms on dynamically loaded pages are found automatically. |
| Forms with custom validation (e.g., Zod, Yup) | The tracker listens for the native submit event. If validation prevents the form from submitting (e.preventDefault without re-dispatching), the submission is not tracked. If the form eventually submits, it's tracked normally. |
| Honeypot fields for spam prevention | Honeypot fields are captured like any other field. Bots that fill honeypots will receive a low lead score due to behavioral analysis detecting non-human patterns. |
| reCAPTCHA / hCaptcha forms | CAPTCHA widgets don't interfere with form tracking. The tracker captures form data on submit, regardless of CAPTCHA status. |
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| Form submissions not appearing in Leads page | Script not loading, wrong Brand ID, or form has data-ti-ignore | Check DevTools → Network for tracker.js. Verify Brand ID. Remove data-ti-ignore if accidentally added. Ensure the form has a submit event (not just a button click handler). |
| Score shows 0 for all leads | Form submitted too quickly (bot-like behavior) or from localhost | Submit the form naturally: spend 10+ seconds on the page, move the mouse, scroll, then fill the form slowly. Localhost submissions may score low due to missing referrer data. |
| Duplicate lead entries | Form submits twice (double-click or script re-injection) | Ensure the tracker script is loaded only once. Check for double form submission in your own code. React StrictMode causes double mounts in dev only — not an issue in production. |
| Login forms being tracked despite auto-skip | Form action URL doesn't match auto-skip patterns | Add data-ti-ignore to the form element manually. The auto-skip only catches common patterns like /login, /signin, /auth. |
| Sensitive data appearing in lead details | Non-password sensitive fields not excluded | Add data-ti-ignore to forms containing sensitive data. For individual fields, use autocomplete="off" or type="password" to exclude them from capture. |
| Third-party iframe form not tracked | Cross-origin iframe restriction | Forms inside iframes from different domains cannot be accessed by the tracker (browser security policy). Use the provider's native webhook integration or TruIntel's API endpoint to submit lead data directly. |
| Form tracked but fields are empty | Form uses a non-standard submission pattern (e.g., FormData API with no DOM elements) | The tracker reads values from form input elements at submit time. If your form uses virtual/controlled inputs without DOM form elements, consider using TruIntel's API endpoint to submit lead data directly. |
| Lead score seems inaccurate | Insufficient behavioral data or disposable email used | Ensure the tracker script loads early (in <head>) so it captures the full session behavior. Test with a real business email — disposable email providers (mailinator, guerrillamail) receive low email scores. |
Privacy & Sensitive Data
- Password fields (type="password") are NEVER captured — automatically excluded
- Fields named "password", "passwd", "secret", "token", "credit_card", "cvv", "ssn" are auto-excluded
- Credit card numbers are detected and redacted before transmission (pattern matching)
- File contents are never uploaded — only filename and size are recorded
- All data is transmitted over HTTPS (TLS 1.3) and encrypted at rest
- Lead data is retained for 90 days by default — configurable in Settings → Data Retention
- No cookies are set — the tracker uses sessionStorage for session-scoped data only
- GDPR: Lead data containing PII (email, name, phone) is processed under "legitimate interest" — consult your legal team for your specific jurisdiction
Payment & checkout forms
Always add data-ti-ignore to payment forms, checkout forms, and any form that collects credit card numbers, bank account details, or other financial information. While the tracker auto-excludes password fields and detects credit card patterns, explicit exclusion is the safest approach for PCI compliance.
Lead Scoring Formula
Every form submission on your website receives a Lead Score (0–100) that indicates how likely it is to be a genuine, high-quality lead.
Lead Score
| Signal | Weight | What's Analyzed |
|---|---|---|
| Behavior | 40% | Time on page, scroll depth, mouse movement, form fill time, click patterns |
| 25% | Domain reputation, disposable email detection, MX record validation, format quality | |
| Identity | 15% | Name consistency, phone format, company domain match, social presence signals |
| Traffic Source | 10% | Referrer quality, UTM parameters, landing page relevance, session history |
| Device | 10% | Browser fingerprint, screen resolution, timezone consistency, device reputation |
Status Thresholds
Leads are automatically categorized into three status levels based on their score:
| Status | Score Range | Action Recommended |
|---|---|---|
| VERIFIED ✓ | 80–100 | High confidence — route directly to sales team |
| REVIEW ⚠ | 50–79 | Moderate confidence — manual review recommended |
| REJECTED ✗ | 0–49 | Low confidence — likely fake or bot submission |
The Leads Dashboard shows conversion funnel, score distribution charts, and trend analysis. You can manually override lead status, bulk-update statuses, and export lead data for CRM integration.
API Integration
Integrate lead verification into your forms using TruIntel's public API endpoint:
POST https://api.truintel.ai/api/v1/leads/verify
# Rate limit: 20 requests/minute per IP
# No authentication required (uses brand ID)
# Request body:
{
"brand_id": "your-brand-id",
"email": "[email protected]",
"name": "John Doe",
"company": "Acme Inc",
"phone": "+1234567890",
"page_url": "https://yoursite.com/contact",
"referrer": "https://google.com",
"user_agent": "Mozilla/5.0 ..."
}The API returns a score, status (verified/review/rejected), and detailed signal breakdown. Use this to pre-filter form submissions before they reach your CRM.
CMS & Content Generation
5-Step Content Pipeline
TruIntel CMS generates high-quality, SEO-optimized content using a 5-step AI pipeline powered by Gemini Flash.
Research
AI searches the web for your topic, gathering sources, competitor content, and current trends to inform the content.
Outline
Creates a structured outline with headings, subheadings, and key points to cover. You can review and adjust before proceeding.
Draft
Writes the full content based on the outline, incorporating SEO keywords, internal linking opportunities, and your brand voice.
SEO Optimization
Optimizes the title tag, meta description, heading structure, and adds schema markup (FAQPage, Article, WebPage).
Quality Check
Validates content quality — checks for factual accuracy, readability, SEO compliance, and brand consistency.
Content generation uses credits from your credit pool. You can poll generation progress in real-time — each step shows its status as it completes.
Content Editor
TruIntel CMS includes a full-featured rich text editor built on TipTap for creating and editing content.
Rich Text Editing
Headings, bold, italic, lists, blockquotes, links, and more with a familiar toolbar.
Image Support
Insert images with alt text. Drag-and-drop or paste from clipboard.
Code Blocks
Syntax-highlighted code blocks for technical content.
SEO Sidebar
Real-time meta title/description editing with character counting and preview.
The editor also includes AI Assist — select text and choose to rewrite, expand, or shorten it using AI. Schema markup (FAQPage, Article, WebPage) is auto-generated based on content structure.
3-Tier Publishing
TruIntel publishes content to Cloudflare's global edge network using a 3-tier fallback system for maximum compatibility with your existing website.
| Tier | Method | Best For |
|---|---|---|
| Tier 1 | Clone your reference page and replace the content area | Sites with consistent page templates — content looks exactly like your existing pages |
| Tier 2 | Wrap content in your extracted brand header, footer, and CSS | Sites where page cloning isn't possible — maintains brand look and feel |
| Tier 3 | Standalone template with your brand colors and fonts | Fallback — clean, professional page when site extraction fails |
Published content is stored in Cloudflare KV and served globally via Workers. Sitemaps are auto-generated and search engines are pinged on publish. You can unpublish content at any time.
Domain Setup
Connect your custom domain to publish TruIntel-generated content on your own website.
Add your domain
Enter the domain where you want to publish content (e.g., blog.yoursite.com).
Verify DNS
Add a CNAME record pointing to TruIntel's Cloudflare proxy. DNS propagation typically takes 5–30 minutes.
Brand Template Extraction
TruIntel crawls your site to extract header, footer, CSS, colors, fonts, and logo for consistent publishing.
Start Publishing
Your domain is ready. Published content will be served from Cloudflare's edge network worldwide.
Page Optimization
The CMS Optimization feature scans your existing website pages and identifies issues that can be fixed to improve SEO and AI visibility.
- AI-powered page scanning identifies issues across meta tags, headings, content, and structured data
- Preview fixes before applying — see exactly what will change
- Batch fix multiple issues at once with progress tracking
- Undo support — revert any fix to its original state
- Credit usage tracking for optimization operations
Site Scanning
The CMS site scanner crawls up to 200 pages per scan using a 5-phase pipeline:
BFS Crawl
Breadth-first crawl with httpx that respects robots.txt directives.
Brand Template Extraction
Extracts your site's colors, fonts, header, footer, and CSS for consistent publishing.
AI Page Analysis
Gemini Flash analyzes each page for topics, summary, and tone.
Content Gap Analysis
Identifies content gaps and missing topics compared to competitors.
Actionable Recommendations
Generates prioritized recommendations for content creation and optimization.
Content Refresh
TruIntel automatically refreshes published content monthly (1st of each month at 3:00 AM IST). The refresh detects stale or outdated sections and regenerates them to keep your content current and competitive.
Automatic Updates
Content refresh is fully automatic — no credits are consumed. TruIntel monitors industry changes and updates your published articles to maintain accuracy and AI citation potential.
Plus (AI Content)
Content Templates
TruIntel provides AI-powered content generation templates organized into three categories.
Content Templates
Blog posts, articles, FAQ pages, product descriptions, and landing page copy optimized for AI visibility.
Technical SEO Templates
Schema markup, meta tag optimization, robots.txt analysis, and structured data generation.
Backlink Templates
Guest post pitches, link-building outreach emails, and resource page suggestions.
Each template follows a step-based wizard: select template → configure options (target queries, custom context, tone) → generate → preview and download. Output is available in Markdown format with copy and download actions.
Credit System
Content generation and CMS operations consume credits. Each article or content piece generated costs 1 credit. Credits are drawn from two pools in order:
| Pool | Source | Reset | Use |
|---|---|---|---|
| Plan Credits | Included with subscription plan | Resets on 1st of each month | CMS operations, content generation, Plus content |
| Extra Credits | One-time top-up purchases | Never expire, never reset | Overflow when plan credits are exhausted |
| Plan | Monthly Credits | Extra Credit Price |
|---|---|---|
| Starter | 50 | $2.00 / credit |
| Lite | 150 | $1.75 / credit |
| Pro | 500 | $1.50 / credit |
| Enterprise | 1,000 | $1.00 / credit |
You can also purchase top-up credit packs at discounted rates:
| Pack | Credits | Price | Per Credit |
|---|---|---|---|
| Starter Pack | 50 | $10 | $0.20 |
| Growth Pack | 150 | $25 | $0.167 |
| Pro Pack | 400 | $50 | $0.125 |
Credit balance and usage history are visible in Settings → Billing. Top-up purchases are processed via Razorpay and never expire.
Query Management
Creating & Managing Queries
Tracking queries are the questions and search terms that TruIntel monitors across AI platforms. These are the queries your potential customers might ask AI assistants about your industry.
- Add queries individually or in bulk (CSV upload)
- Each query can be assigned a business value (1–5) for prioritization
- Queries are classified by intent: informational, commercial, transactional, navigational, or comparison
- Set status: active (being tracked), suggested (AI recommendation), or inactive (paused)
- Assign to topics for organized grouping
- Set country/locale for region-specific monitoring
- Toggle priority flag for priority checks (available on higher plans)
Topics & Organization
Group related queries into Topics for better organization and analysis. Topics appear as filter options throughout the visibility dashboard.
- Create, edit, and delete topics from the Topics Management modal
- Bulk-create topics from AI suggestions based on your industry
- Each query belongs to one topic
- Filter visibility data by topic to focus on specific areas
- Topics help the AI insights engine group related findings
AI Query Suggestions
TruIntel uses AI to suggest relevant tracking queries based on your brand, industry, competitors, and existing queries. Suggestions are refreshed periodically and can be accepted individually or in bulk.
Best Practices
Start with 10–20 high-intent queries that directly relate to your product or service. Gradually expand to broader industry queries. Focus on queries where you have a reasonable chance of being mentioned — very generic queries may have low brand recognition.
Source Tracking
Source Types & Domains
When AI platforms respond to queries, they often cite source domains. TruIntel tracks which domains are referenced and categorizes them by type.
| Source Type | Description | Examples |
|---|---|---|
| Editorial | News outlets and publications | Forbes, TechCrunch, Reuters |
| Earned | Third-party reviews and mentions | G2, Capterra, industry blogs |
| Owned | Your own website and properties | yoursite.com, blog.yoursite.com |
| UGC | User-generated content platforms | Reddit, Quora, Stack Overflow |
| Corporate | Company and organizational sites | Company websites, about pages |
| Marketplace | E-commerce and listing platforms | Amazon, Product Hunt, app stores |
A donut chart on the Sources page shows the distribution of source types. Click any source to see URL-level detail and which platforms cite it.
Source Gap Analysis
Gap Analysis identifies high-authority sources that cite your competitors but not you. These represent your biggest opportunities for improving AI visibility.
Actionable Insight
If a source domain is frequently cited by AI in your industry but never references your brand, getting featured on that source (through PR, guest posts, or partnerships) can significantly boost your visibility score.
Prompt Research
Overview
Prompt Research is an AI-powered research tool that lets you explore how AI platforms discuss your industry in real time. Enter a seed topic and TruIntel generates 20–30 relevant search prompts organized into 5–8 topic clusters, then queries all 5 AI platforms and analyzes responses for brand mentions, sources, and sentiment.
- Enter a seed topic → AI generates 20–30 search prompts in 5–8 topic clusters
- Queries all 5 AI platforms simultaneously and analyzes responses
- Discover what AI says about your industry, competitors, or specific topics
- Identify brand mentions, source citations, and sentiment across platforms
- Find new query opportunities for your visibility tracking
- No per-plan limit on research sessions — available to all paid plans
Best Practice
Use Prompt Research before setting up tracking queries. It helps you discover how AI platforms discuss your industry and which queries surface your brand versus competitors. Great for validating content strategies and finding market angles.
Competitors
Competitor Tracking
TruIntel automatically discovers and tracks competitors in your industry. You can also manually add competitors by entering their domain.
- Auto-discovery during onboarding based on industry and AI mentions
- Manual add/remove with domain validation
- Per-competitor visibility scores and sentiment
- Ranking chart comparing your brand against competitors
- Sentiment distribution (positive/neutral/negative) per competitor
- Score change indicators showing who's improving or declining
Comparison Metrics
The Competitors page and Overview dashboard show how you stack up against competitors across multiple dimensions.
| Metric | What It Shows |
|---|---|
| Visibility Score | Overall AI visibility (0–100) compared side by side |
| Recognition Rate | How often each brand is mentioned in AI responses |
| Average Position | Where brands appear in AI responses (1st, 2nd, 3rd, etc.) |
| Sentiment | Positive vs negative perception across platforms |
| Share of Voice | Proportion of total AI mentions per competitor |
| Platform Breakdown | Which platforms favor which competitors |
Notifications & Alerts
Alert Types
TruIntel monitors your brand continuously and sends alerts when significant events occur.
| Alert Type | Trigger | Severity |
|---|---|---|
| Visibility Drop | Score drops >= 5 points | HIGH (>= 10pt) / MEDIUM (5–10pt) |
| Competitor Overtake | A competitor gets more AI mentions than your brand | MEDIUM |
| Negative Mention | Negative sentiment detected in AI responses | HIGH (>= 3 mentions) / MEDIUM (1–2) |
| Score Milestone | Visibility score crosses 50, 75, or 90 | LOW (positive) |
| Integration Error | GSC token revoked or integration disconnected | HIGH |
Alerts appear in the notification bell in the top bar, on the dedicated Notifications page, and optionally via email. HIGH and CRITICAL alerts trigger email notifications automatically. Each alert can be marked as read or resolved. Filter alerts by All, Unread, Read, or Critical tabs.
Configuration
Customize which alerts you receive and how from Settings → Notifications.
- Toggle individual alert types: Weekly Reports, Visibility Drops, Competitor Detected, Check Completed, Traffic Anomaly
- Choose email frequency: Instant (send immediately), Daily Digest (once per day), Weekly Digest (once per week)
- HIGH/CRITICAL severity alerts always trigger email notifications
- View and manage all alerts on the Notifications page with pagination (20 per page)
- Bulk mark all as read with one click
Settings & Account
Profile
Manage your personal account details from Settings → Profile.
- Update your name, avatar, and email address
- Change your password (current password required)
- Logout from all devices (revokes all refresh tokens)
- View and switch between organizations you belong to
Team Management
Manage your team from Settings → Team. Invite new members, change roles, and remove members.
- View all current team members with their roles and join dates
- Invite new members by email — they receive an invitation link valid for 7 days
- Change member roles (Owner, Admin, Member)
- View pending invitations and resend or cancel them
- Remove team members (Owner/Admin only)
Billing & Subscription
View your current plan, manage subscriptions, and purchase credits from Settings → Billing.
- Current plan name, renewal date, and status
- Usage metrics — brands used, queries tracked, checks performed
- Payment history with downloadable receipts
- Upgrade or downgrade plan via Razorpay checkout
- Credit balance across Plan Credits and Extra Credits pools
- One-click credit top-up with custom amounts
API Keys
Generate API keys for programmatic access to your TruIntel data from Settings → API Keys.
- Generate new API keys with optional description/label
- Copy keys to clipboard (keys are only shown once at creation)
- Delete keys to revoke access immediately
- API keys inherit the permissions of the creating user
Support
Submit support tickets and track their status from Settings → Support.
- Create support tickets with category, subject, and description
- View ticket history with status tracking (open, in progress, resolved)
- Receive email updates when ticket status changes
Plans & Pricing
Plan Comparison
TruIntel offers a 7-day free trial and four paid subscription tiers to fit businesses of all sizes. The free trial includes 1 brand, 5 queries, and 1 competitor to help you evaluate the platform.
Starter
$49/mo
- 1 Brand, 10 queries
- All 5 AI platforms (ChatGPT, Claude, Gemini, Perplexity, Google AI)
- 1 Competitor Tracking
- 750 GSC Keywords
- 20 Keyword Suggestions / month
- 10K Site Audit Pages
- Monthly Backlink Tracking
- 1 Month Keyword Rank History
- 5 PageSpeed Checks / month
- Traffic Analytics (1K retention)
- 200 Lead Verifications / month
- 50 AI Credits / month
- Weekly AI-Powered Insights
- Email Support
Lite
$129/mo
- Everything in Starter, plus:
- 2 Brands, 25 queries / brand (50 total)
- 3 Competitors Tracked
- 2,000 GSC Keywords
- 50 Keyword Suggestions / month
- 50K Site Audit Pages
- 3 Months Keyword Rank History
- Traffic Analytics (5K retention)
- 1,000 Lead Verifications / month
- 150 AI Credits / month
- 2 Team Members
Pro
$349/mo
- Everything in Lite, plus:
- 3 Brands, 40 queries / brand (120 total)
- 5 Competitors Tracked
- 5,000 GSC Keywords
- 200 Keyword Suggestions / month
- 100K Site Audit Pages
- Weekly Backlink Tracking
- 12 Months Keyword Rank History
- 15 PageSpeed Checks / month
- Daily Priority Monitoring (5 / brand)
- Advanced Backlink Analytics
- SERP Features Analysis
- Keyword Gap / Overlap Analysis
- Traffic Analytics (25K retention)
- 2,000 Lead Verifications / month
- 500 AI Credits / month
- 3 Team Members
- Priority Support
Enterprise
Custom
- Everything in Pro, plus:
- 4+ Brands, 50 queries / brand (200+ total)
- 10 Daily Priority Queries / brand
- 10,000+ GSC Keywords
- 500 Keyword Suggestions / month
- 200K+ Site Audit Pages
- 30 PageSpeed Checks / month
- Traffic Analytics (50K retention)
- 5,000+ Lead Verifications / month
- 1,000 AI Credits / month
- 10+ Team Members
- Dedicated Account Manager
Free 7-Day Trial
All new accounts start with a 7-day free trial that includes 1 brand, 5 queries, and 1 competitor. No credit card required to start — upgrade to a paid plan anytime during or after the trial.
Feature Limits by Plan
| Feature | Starter ($49) | Lite ($129) | Pro ($349) | Enterprise |
|---|---|---|---|---|
| Brands | 1 | 2 | 3 | 4+ |
| Queries / Brand | 10 | 25 | 40 | 50 |
| Total Queries | 10 | 50 | 120 | 200+ |
| AI Platforms | 5 | 5 | 5 | 5 |
| Competitors Tracked | 1 | 3 | 5 | 5 |
| Team Members | 1 | 2 | 3 | 10+ |
| Daily Priority Checks | — | — | 5 / brand | 10 / brand |
| AI Credits / mo | 50 | 150 | 500 | 1,000 |
| GSC Keywords | 750 | 2,000 | 5,000 | 10,000+ |
| Keyword Suggestions / mo | 20 | 50 | 200 | 500 |
| Keyword Rank History | 1 month | 3 months | 12 months | 12 months |
| Site Audit Pages | 10K | 50K | 100K | 200K+ |
| Top Organic Keywords | 50 | 100 | 200 | 500 |
| Backlink Tracking | Monthly | Monthly | Weekly | Weekly |
| Advanced Backlink Analytics | — | — | ✓ | ✓ |
| SERP Features Analysis | — | — | ✓ | ✓ |
| Keyword Gap / Overlap | — | — | ✓ | ✓ |
| PageSpeed Checks / mo | 5 | 5 | 15 | 30 |
| Traffic Log Retention | 1K | 5K | 25K | 50K |
| Lead Verifications / mo | 200 | 1,000 | 2,000 | 5,000+ |
| CMS Publishing | ✓ | ✓ | ✓ | ✓ |
| AI-Powered Insights | ✓ | ✓ | ✓ | ✓ |
| Support | Priority | Dedicated |
Payment & Billing
TruIntel processes payments securely, supporting credit cards, debit cards, UPI, and net banking.
- Subscriptions are billed monthly with automatic renewal via Razorpay
- Upgrade or downgrade your plan at any time — changes take effect immediately
- Credit top-ups are one-time purchases that never expire
- View complete payment history in Settings → Billing
- Receipts are downloadable for each payment
- Failed payments trigger automatic retry and email notification
- India billing: 18% GST (IGST) is automatically added for Indian customers, detected via IP geolocation
SERP Simulator
Overview
The SERP Simulator lets you preview how your web pages appear in search engine results before publishing. It provides real-time scoring and optimization suggestions for Google, Bing, and social media previews.
Google Preview
See how your page looks in Google search results with title, description, URL, and rich snippets.
Bing Preview
Preview your page appearance in Bing search results.
Social Preview
Preview Open Graph and Twitter Card appearance when shared on social media.
SEO Score
Real-time CTR-based scoring with title length, description quality, and keyword analysis.
Rich Snippet Support
The SERP Simulator supports previewing 7 types of rich snippets that can appear in search results:
- FAQ Snippets — expandable question and answer dropdowns
- How-To Snippets — step-by-step instruction previews
- Recipe Snippets — cooking time, ratings, and ingredients
- Video Snippets — thumbnail, duration, and upload date
- Event Snippets — date, location, and ticket information
- Product Snippets — price, availability, and ratings
- Sitelink Snippets — additional page links beneath the main result
Configure your SERP preview using the input panels: Basic Info, Keywords, Media, Rich Snippets, SERP Features, and Advanced settings. Use the meta fetcher to auto-populate fields from any URL.
Platform Schedule & AI Models
Automated Schedule
TruIntel runs automated tasks on a fixed schedule (all times in IST — Indian Standard Time):
| Time | Day | Task | Plans |
|---|---|---|---|
| 12:00 AM | 1st of month | Monthly credit reset | All paid |
| 12:30 AM | Daily | Expired trials check | All |
| 1:00 AM | Daily | Expired subscriptions check | All |
| 2:00 AM | Monday | Weekly full visibility checks | All paid |
| 2:00 AM | Tue–Sun | Daily priority checks | Pro, Enterprise |
| 3:00 AM | Monday | Weekly SEO checks (DA, backlinks, competitors) | All paid |
| 3:00 AM | Daily | Daily traffic aggregation | All paid |
| 3:00 AM | 1st of month | Monthly CMS content refresh | All paid |
| 3:30 AM | Daily | Daily lead aggregation | All paid |
| 4:00 AM | 1st of month | Monthly full SEO checks (free + paid) | All paid |
| 4:00 AM | Sunday | Weekly traffic cleanup | All |
| 5:00 AM | Daily | GSC keyword sync | All paid (if connected) |
| 5:00 AM | Sunday | Invitation cleanup (expired) | All |
| 6:00 AM | Monday | Weekly insight generation | All paid |
| 6:00 AM | 2nd of month | Monthly brand report | All paid |
| 8:00 AM | Monday | Weekly email reports | All paid |
| 9:00 AM | Monday | Weekly brand reports | All paid |
| Every 10 min | Always | Cleanup stuck CMS generations | All |
| Quarterly | Jan/Apr/Jul/Oct | Insight report cleanup (> 90 days) | All |
| Quarterly | — | SEO report cleanup (> 180 days) | All |
AI Models Used
TruIntel uses multiple AI models across the platform for different purposes:
| Platform | Model | Purpose |
|---|---|---|
| OpenAI | GPT-5.2 | ChatGPT visibility monitoring |
| Anthropic | Claude Sonnet 4.5 | Claude visibility monitoring |
| Google AI | Gemini 3 Flash | Gemini monitoring + Insights pipeline + Reports |
| Google AI | Gemini 3.1 Flash | Topic suggestions, query generation, competitor discovery |
| Google AI | Gemini 2.0 Flash | CMS content generation + AI writing assist |
| Perplexity | Sonar | Perplexity visibility monitoring |
| OpenRouter | Kimi K2.5 | Response analysis, intent/domain classification |
| SearchAPI.io | Google SERP | Google AI Overview extraction |
| DataForSEO | Various APIs | SEO data (DA, backlinks, keywords, competitors) |
App Pages Reference
Analytics App (68 Routes)
The TruIntel Analytics App (app.truintel.ai) contains 68 distinct routes organized into the following categories. All pages are lazy-loaded with React.lazy() and Suspense for optimal performance.
Overview
/overviewMain dashboard with 7 key metrics (visibility score, recognition rate, mentions, avg position, citation rate, sentiment, queries), platform breakdown, query heatmap, competitor ranking, top sources, latest insight report, task summary, traffic overview, lead overview, and TruPlus generations.
Visibility
/visibilityAI visibility monitoring with score gauge, platform performance, query mentions, brand attributes, and source tracking.
Queries
/queriesManage tracking queries with search, filtering, topic assignment, priority toggle, and bulk operations.
Query Detail
/queries/:queryIdDeep-dive into a specific query with AI response analysis, competitor mentions, citations, and position tracking.
Prompt Research
/prompt-researchAI-powered prompt research to discover what AI platforms say about your industry and competitors.
Sources
/sourcesSource domain tracking with type breakdown, donut chart, gap analysis, and URL-level detail.
Competitors
/competitorsCompetitor management with cards, ranking chart, sentiment distribution, and score tracking.
Insights
/insightsWeekly AI insight reports with findings tab, tasks tab (split view + kanban), and impact tracking.
Finding Detail
/insights/:findingIdDetailed view of a specific insight finding with evidence, impact score, and related tasks.
Tasks
/tasksStandalone task management with kanban board, split view, filtering by status/category, and impact tracking.
Reports
/reportsBrand weekly and monthly reports with 8-section executive summaries covering AEO, SEO, traffic, and leads.
Report Detail
/reports/:reportIdFull report view with rich visualizations, competitor benchmarking, and PDF export via html2canvas + jsPDF.
SEO Dashboard
/seoSEO health overview with domain authority, page speed, technical checks, keywords summary, and backlinks.
PageSpeed Detail
/seo/pagespeedLighthouse scores with Core Web Vitals (LCP, FID, CLS), performance trends, and optimization tips.
Keywords Detail
/seo/keywordsKeyword ranking tracking with position changes, filter tabs, history chart, and AI suggestions.
Keyword Suggestions
/seo/keyword-suggestionsAI-powered keyword discovery with search volume, difficulty, and relevance scoring.
Backlinks Detail
/seo/backlinksBacklink profile with referring domains, toxic detection, competitor comparison, and opportunities.
Audit Detail
/seo/auditOn-page SEO audit results with issues by severity, readability scores, and technical recommendations.
Page Audit Detail
/seo/audit/pageIndividual page audit breakdown with meta tags, headings, content, links, and technical checks.
Competitor SEO
/seo/competitorsSEO comparison with competitor DA, keyword overlap, and top keywords analysis.
Image Optimization
/seo/imagesImage audit with file size, format, alt text, and compression recommendations.
Keyword Gap
/seo/keyword-gapKeyword gap analysis between your domain and competitors — find keywords they rank for that you don't.
Backlink Gap
/seo/backlink-gapBacklink gap analysis showing domains that link to competitors but not to you.
On-Page SEO Checker
/seo/onpage-checkerPage-by-page SEO audit with actionable fix recommendations and severity categorization.
Crawl Visualization
/seo/visualizationInteractive site crawl graph (DAG) showing page relationships, link structure, and orphan pages.
Traffic
/trafficTraffic classification dashboard with live feed, agent breakdown, trends, threat analysis, and rules manager.
Leads
/leadsLead verification dashboard with scoring, funnel visualization, status management, and export.
Lead Detail
/leads/:leadIdIndividual lead profile with score breakdown, behavior signals, email analysis, and verification details.
Plus
/plusAI content generation hub with template categories, credit display, and generation launch.
Plus Generate
/plus/generateStep-based content generation wizard with template selection, configuration, and preview.
Plus History
/plus/historyGenerated content history with filtering, search, and publish/archive actions.
Blog Post
/plus/blog-postAI-generated blog posts optimized for AI visibility and SEO with keyword targeting.
FAQ Page
/plus/faq-pageAI-generated FAQ content with FAQPage schema markup for rich results.
Structured Answer
/plus/structured-answerGenerate structured answers optimized for AI assistant citations and featured snippets.
Website Copy
/plus/website-copyAI-generated website copy for landing pages, product pages, and service descriptions.
Schema Markup
/plus/schema-markupGenerate JSON-LD structured data (Article, FAQPage, WebPage, HowTo, Product, etc.).
Meta Tags
/plus/meta-tagsAI-optimized title tags and meta descriptions with character counting and preview.
OG Tags
/plus/og-tagsGenerate Open Graph and Twitter Card meta tags for social sharing optimization.
Directory Listing
/plus/directory-listingGenerate optimized business directory listings for improved local and AI visibility.
Outreach Templates
/plus/outreach-templatesAI-generated guest post pitches, link-building emails, and PR outreach templates.
Citation Plan
/plus/citation-planGenerate a strategic citation plan identifying high-authority sources to target for backlinks.
SERP Simulator
/tools/serp-simulatorPreview how your pages appear in Google, Bing, and social media search results with real-time scoring.
Brands
/brandsMulti-brand management with brand cards, stats, and add/edit/delete operations.
Settings
/settingsMulti-tab settings: Profile, Team, Billing, Notifications, Integrations, Support.
Notifications
/notificationsAlert center with filtering by type/severity, mark read/resolve, and pagination.
Choose Plan
/choose-planPlan selection page with comparison table, pricing cards, and Razorpay checkout.
Custom Plan
/custom-planEnterprise custom plan inquiry form for tailored pricing and features.
Onboarding
/onboardingMulti-step brand setup: Organization → Brand → Topics → Competitors → GSC.
CMS Module (16 Pages)
The CMS module is integrated into the main TruIntel app under the /cms/* route prefix. It is protected by CMSProtectedRoute (requires authentication + CreditsProvider) and plan-gated behind the "cms" feature flag.
Dashboard
/cms/dashboardOverview of generated content, recent scans, and optimization activity.
Content Library
/cms/contentBrowse all generated content with filtering by type and status.
Create Content
/cms/content/newStart new content generation from templates or custom prompts.
Content Editor
/cms/content/:id/editTipTap rich text editor with SEO sidebar, AI assist, and auto-save.
Optimization
/cms/optimizationAI-powered page issue detection with fix preview and batch operations.
Edit Pages
/cms/edit-pagesList of published pages with quick edit actions.
Visual Page Editor
/cms/edit-pageFull-screen visual editor for modifying specific elements on published pages.
Domain Setup
/cms/onboardingConnect custom domains, verify DNS with CNAME records, and extract brand templates.
CMS Settings
/cms/settingsBrand template management, re-extraction, SEO files (robots.txt, sitemap), and domain configuration.
CMS Competitors
/cms/competitorsMonitor competitor content strategies and publishing activity.
CMS Tasks
/cms/tasksCMS-specific task management for content optimization and backlink improvements.
Backlink Fixes
/cms/backlink-fixesBacklink optimization tasks with fix recommendations and progress tracking.
Robots.txt
/cms/robots-txtView and manage your site's robots.txt file for crawler directives.
Sitemap
/cms/sitemapView and manage your XML sitemap with published page entries.
Upgrade Plus
/cms/upgradeUpgrade prompt for accessing premium CMS features and additional credits.
Credit History
/cms/creditsCredit usage log with balance tracking across Plan Credits and Extra Credits pools.