

AI crawler analytics dashboard
People can find your store through AI assistants as well as search engines. SurfacedBy shows which AI crawlers request your pages, which assistants send visitors, and whether those visits lead to orders or signups. A visit from an AI assistant does not, on its own, mean your store was cited in an answer.
The plugin gives you these tools in your WordPress dashboard:
/llms.txt list of your posts and pages. It follows the content exclusion settings in Yoast, Rank Math, AIOSEO, and SEOPress.window.sbAi.track().These features work without a SurfacedBy account. The plugin stores crawler requests, AI visits, and sales or signup records in your WordPress database. It does not contact SurfacedBy until you connect it.
Connecting the plugin to SurfacedBy is optional. It sends the records this plugin collects, including records saved before you connected, to your SurfacedBy dashboard. There you can see them alongside your site’s AI visibility, competitors, tracked prompts, and cited pages. Dashboard traffic views are included with SurfacedBy’s paid plans and trial.
The plugin makes no outbound calls until you save a SurfacedBy connection code or an older Site ID under SurfacedBy > Connect. Without a connection, the plugin keeps its records on your site.
After you connect, your server makes the three types of requests below. The browser tracker in item 4 sends AI attribution to your own site and anonymous page observations directly to SurfacedBy. The plugin does not load code from SurfacedBy or another external source.
1. Event forwarding (when a page finishes rendering, plus an hourly wp-cron safety net)
https://api.surfacedby.com/api/v1/tracker/collector/batch for connection codes, or https://api.surfacedby.com/api/v1/tracker/batch for older Site ID-only installs. The connection-code path signs the request with a per-install secret and retries a saved batch ID after uncertain delivery.window.sbAi.track): the event type (purchase, renewal, signup, refund, lead, or custom), an event ID and an order or subscription identifier, the value, the currency code, the time, the page path when the conversion happened on a page, the AI referrer host that first brought the customer in and how long before the conversion that visit was, and a small metadata object (for example the order number, the items bought with their product ID, name, quantity, and price, tax, shipping, the country code, or a refund reason, capped at 4 KB), plus the pseudonymous visitor ID when one is available. Conversion rows never carry names, emails, billing addresses, or payment details.2. Plugin heartbeat (hourly wp-cron with a 24-hour staleness check, plus a best-effort nudge when the last heartbeat is older than 20 hours)
https://api.surfacedby.com/api/v1/tracker/collector/heartbeat for connection codes, or https://api.surfacedby.com/api/v1/integrations/wordpress/heartbeat for older Site ID-only installs.3. Crawler registry refresh (daily wp-cron)
https://api.surfacedby.com/api/v1/tracker/registry (HTTP GET)4. Browser tracker (on by default; switch it off under “Browser tracker snippet” in Settings. It needs no account and runs whether or not the plugin is paired)
assets/js/sb-tracker.js) and served from your own site; no external script is loaded and no third-party code runs. AI attribution posts to your own site’s admin-ajax handler, with a WordPress security nonce. When a cached page’s nonce has expired, the script asks your own site for a current nonce and sends the event once more.https://api.surfacedby.com/api/v1/tracker/landing/wordpress_plugin: your public Site ID, page path, time, count, referring hostname, and utm_source limited to 64 characters. It sends no visitor IP, visitor or session identifier, cookie, full referrer URL or other query parameters. A random event nonce is used only to avoid counting a transport retry twice. It uses no persistent visitor storage for this observation, waits until a prerendered page is opened, and excludes automated browsers. Delivery is best effort; blocked scripts or networks leave gaps.window.sbAi.track, the conversion event ID, value, currency, and the small metadata object the site passes in. The plugin sets only the sb_t and sb_attr cookies described in the Cookies section.The plugin sets cookies only after a visitor arrives from a confirmed AI referrer. There are two, both first-party and both opaque:
sb_t (30 minutes): an anonymous session nonce that stops one browsing session from being counted more than once. No personal identifiers.sb_attr (13 months): a pseudonymous visitor ID, the AI host (for example chatgpt.com), and the time of the first qualifying visit, so a later purchase or signup can be credited to the original source. When an AI-attributed landing URL carries them, it can also keep the advertising click IDs gclid, fbclid, msclkid, and ttclid. The browser tracker mirrors this value in first-party local storage so attribution survives browser cookie clean-up. The identifier is scoped to this site and is never used for cross-site tracking.The commerce integrations and a site-initiated window.sbAi.track call can also create the pseudonymous sb_attr identifier when a conversion needs a stable local attribution key.
When paired with SurfacedBy, aggregate crawler, referral, and conversion history is kept with the connected domain. The raw AI visit rows used to rebuild visitor journeys follow the plan’s retention window: 90 days on Starter, 395 days on Professional, and 760 days on Agency. The dashboard’s journey view shows only the 30 days before a conversion.
Terms of Service: https://surfacedby.com/terms
Privacy Policy: https://surfacedby.com/privacy