> ## Documentation Index
> Fetch the complete documentation index at: https://snowseo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Platform Support

> Which platforms can measure AI crawler traffic, which cannot, and why.

AI crawlers do not run JavaScript, so tracking has to happen on the server that answers the request. Whether your platform can do that is not a matter of effort - either it lets code run in the request path, or it does not.

This page is deliberately blunt about the second case.

***

## Supported

| Platform                                        | How                                                         | Notes                                                                              |
| ----------------------------------------------- | ----------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| **WordPress**                                   | [SnowSEO plugin](/docs/beacon/install/wordpress)                 | Self-hosted and most managed hosts. See the caching note below.                    |
| **Next.js**                                     | [`@snowseo/beacon`](/docs/beacon/install/nextjs)                 | Middleware or proxy.                                                               |
| **Astro**                                       | [`createFetchMiddleware`](/docs/beacon/install/fetch-frameworks) | Exports directly - the signatures match.                                           |
| **SvelteKit, Hono, Remix**                      | [`createFetchMiddleware`](/docs/beacon/install/fetch-frameworks) | Same middleware, two lines to bridge each framework's own shape.                   |
| **Nuxt**                                        | [`beacon.handle`](/docs/beacon/install/fetch-frameworks#nuxt)    | Nitro middleware cannot wrap a response, so the twin advertisement is set by hand. |
| **Express and Node HTTP servers**               | [`beaconExpress`](/docs/beacon/install/express)                  |                                                                                    |
| **Deno, Bun, Cloudflare Workers, Netlify Edge** | Fetch middleware                                            | Wrap the platform's fetch handler. Pass `waitUntil` where it exists.               |
| **Laravel, Drupal, Craft, custom PHP**          | [`snowseo-beacon.php`](/docs/beacon/install/php)                 | One `auto_prepend_file` line. No application code changes.                         |
| **Ghost (self-hosted)**                         | PHP file or a Node middleware in front                      | Depends on how you front it.                                                       |
| **Shopify Hydrogen on Oxygen**                  | Fetch middleware                                            | A Workers-class runtime, so the standard SDK applies.                              |

***

## Not possible

These platforms render pages on infrastructure you cannot run code on, and expose no request log. There is no workaround, and any vendor claiming otherwise with a JavaScript snippet is measuring browsers, not crawlers.

| Platform                          | Why                                                                                                                                                                                          |
| --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Shopify** (standard storefront) | Liquid cannot make outbound requests, and it does not expose `request.user_agent` or the client IP at all - the two fields the entire check depends on. Web Pixels run in a browser sandbox. |
| **Webflow** (standard hosting)    | Custom code is `<head>`/`<body>` HTML only. No server hooks, no log access.                                                                                                                  |
| **Wix**                           | Velo can create new endpoints but cannot hook page rendering.                                                                                                                                |
| **Squarespace**                   | Code injection is client-side only.                                                                                                                                                          |
| **Framer**                        | Plugins run in the Framer editor. They cannot affect what a published site serves.                                                                                                           |
| **Ghost (Pro)**                   | No middleware layer and no log access; themes are Handlebars with no request hooks.                                                                                                          |
| **GitHub Pages, plain S3**        | No compute in the request path.                                                                                                                                                              |

If you are on one of these and AI visibility matters to you, [AI Visibility](/docs/user-guide/analysis/ai-visibility) measures whether assistants actually cite you - which is the outcome crawl data is a proxy for anyway.

***

## What no platform can measure

Not a gap in our coverage. These produce no request to your server at all, so nothing on any platform can see them.

* **Google AI Overviews and AI Mode.** Answered from the Search index. Your origin is never contacted.
* **Anything a model learned during training.** A crawler read the page once, possibly years ago. Every later answer drawing on it is invisible.
* **Assistants answering from a third-party index.** If a surface reuses Bing's index, the fetch was Bing's, not the assistant's.

***

## Caching

<Warning>
  A full-page cache that answers requests without running your site's code makes those hits invisible to every server-side integration, including this one.
</Warning>

This bites hardest on WordPress, where WP Rocket, LiteSpeed, W3 Total Cache and most managed hosts serve stored HTML without booting WordPress. The plugin ships a **coverage check** under **SnowSEO → AI Crawlers** that fires two identical requests at your site and reports how many actually reached WordPress, so you get a real number rather than a guess.

Markdown responses are excluded from the cache automatically, so `.md` fetches - which is where most assistant traffic goes once you have Markdown twins - are counted in full.

A CDN cache in front of your origin (Cloudflare, Fastly, a host edge) has the same effect on any platform. Only a worker running at that edge can see those requests.
