AI crawlers (GPTBot, ClaudeBot, PerplexityBot, and 25+ more) don't execute JavaScript, so browser analytics never see them. The Tailwin tracker runs at the edge or on your server and reports every AI-bot visit to your dashboard.
| Your site | Install | Verified bots |
|---|---|---|
| Behind Cloudflare | Cloudflare Worker | Yes, from Cloudflare's signal |
| WordPress, not on Cloudflare | WordPress plugin | Search crawlers only |
| Next.js or Express | Middleware package | Search crawlers only |
Install one, not several. The Worker sees every request including those served from cache, so pick it whenever Cloudflare is in front of your site.
npx degit tailwin/crawler-worker tailwin-tracker && cd tailwin-tracker npx wrangler secret put TAILWIN_SITE_KEY # from your Tailwin dashboard npx wrangler deploy # Cloudflare dash → Workers Routes → yourdomain.com/* → tailwin-crawler-tracker
/wp-content/plugins/ and activate it.twk_.One caveat worth knowing before you install it: a full-page cache that serves a crawler from disk without starting WordPress is invisible to every WordPress plugin, including this one. If most of your traffic is served from cache, use the Worker instead.
npm install @tailwin/tracker
// Next.js — middleware.ts
import { NextResponse } from "next/server";
import { createNextTracker } from "@tailwin/tracker/next";
const track = createNextTracker({ siteKey: process.env.TAILWIN_SITE_KEY! });
export function middleware(request) {
track(request);
return NextResponse.next();
}
export const config = { matcher: "/((?!_next/static|_next/image).*)" };
// Express
import { tailwinTracker } from "@tailwin/tracker/express";
app.use(tailwinTracker({ siteKey: process.env.TAILWIN_SITE_KEY }));Next.js middleware runs before the response exists, so those hits carry no status code. Express reports the real one. Nothing is awaited on the request path, and a failed batch is dropped rather than retried, because a duplicated hit would overstate your crawl counts.
On Cloudflare we use their verified-bot signal. Off Cloudflare there is no honest equivalent for AI crawlers: their owners publish IP ranges rather than reverse DNS records. Googlebot, Bingbot and Applebot do document reverse DNS, so those three are confirmed. Everything else is reported as unverified rather than guessed, which is why an AI crawler row never claims verification outside the Worker.
Questions? sgirard@girardmedia.com