Sources
Overview
Every way to send MetrikStack data, and when to use each.
A site can run any combination of these. None is required by another: a single browser script is a complete, working setup. Combining sources fills in traffic the others miss. See How merging works for what happens when more than one source sees the same page load.
| Source | Sees | Misses |
|---|---|---|
| Browser script | Everything a real browser executes | Adblocked visitors, most bots, JS-disabled clients |
| Node SDK | Every HTML response your app server renders | Static/CDN-cached responses your app never touches |
| Laravel | Same as the Node SDK, for Laravel apps | Same |
| WordPress | Browser script, server-side pageviews, or both | Fully page-cached responses on the server side |
| Cloudflare Worker | Every response through the zone, including cache hits | Traffic that bypasses Cloudflare |
| Bunny | Every request through the Pull Zone, via Log Forwarding | Depends on the CDN configuration |
| Vercel | Every request through Vercel's proxy, via a Log Drain | Traffic served by another CDN in front of Vercel |
| Netlify | Every request Netlify served, via a Log Drain | Traffic that bypasses Netlify |
| Access logs | Whatever your web server logs | Anything not logged (e.g. edge-cached responses on some CDNs) |
Each source is created on a site in the dashboard, with a kind: script,
server, edge_cloudflare, edge_bunny, or logs. Sources other than the
browser script get an ingest token, shown once at creation time, used as
Authorization: Bearer <ingest_token> against POST /v1/batch. The browser
script instead uses the public, non-secret site_id.