Many AI and search crawlers request server-rendered pages without running browser analytics. Tailwin detects supported crawlers at the edge or origin and sends successfully delivered visits to your dashboard.
| Your site | Install | Verified bots |
|---|---|---|
| Behind Cloudflare | Cloudflare Worker | Yes, from Cloudflare's signal |
| WordPress, not on Cloudflare | WordPress plugin | Googlebot, Bingbot, and Applebot by forward-confirmed reverse DNS; AI crawlers stay unverified |
| Next.js or Express | Middleware package | No built-in verified-bot signal; registry and user-agent classification 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 single equivalent that this software currently implements for AI crawlers. The WordPress plugin can use documented, forward-confirmed reverse DNS for Googlebot, Bingbot, and Applebot. The Node middleware has no stronger verification signal. Other matches are reported as unverified instead of claiming certainty from a user-agent alone.
Questions? sgirard@girardmedia.com