The Worker proxy runs in your Cloudflare account, on your site's own host, at one path the dashboard issued. It forwards only the browser SDK's submissions, and cannot read events. Version 0.2.0.
Before you start
- A Cloudflare account with your site's zone.
- Node.js and
pnpm, to deploy with Wrangler.
Deploy
Step 1: Create the proxy
In the dashboard, open Integration > Proxy keys, create a proxy that runs as a Cloudflare Worker, for the same environment as your public key, and copy the proxy key it shows once. Note the path it issued, such as
/k7x2qm4a.Step 2: Configure the Worker
Copy
wrangler.toml.exampletowrangler.toml. Set the route to exactly that path on your site's host, andFINGERLY_PATHto the same path.name = "edge-k7x2qm4a" main = "src/index.ts" compatibility_date = "2026-09-01" routes = [{ pattern = "www.example.com/k7x2qm4a", zone_name = "example.com" }] [vars] FINGERLY_PATH = "/k7x2qm4a"Step 3: Add the proxy key
pnpm wrangler secret put FINGERLY_PROXY_KEYPaste the proxy key when prompted. It is stored as an encrypted Worker secret.
Step 4: Deploy
pnpm install pnpm run deployStep 5: Point the browser SDK at it
const fingerly = await load({ apiKey: 'fly_pk_production_…', endpoints: '/k7x2qm4a', fallbackToDefaultEndpoint: true, // optional. Omit it to keep all traffic on your own site. })Once pages use it, the proxy's row in the dashboard shows it last seen, running
cloudflare-worker/0.2.0, with its requests over the last 30 days.
Configuration
| Name | Kind | Meaning |
|---|---|---|
FINGERLY_PROXY_KEY | Secret | Your proxy key. The Worker answers 503 if it is not shaped like one. |
FINGERLY_PATH | Variable | The path the dashboard issued, such as /k7x2qm4a. Matched exactly; every other path gets 404. |
FINGERLY_ALLOWED_ORIGINS | Variable | Only when the route is on a different host from your pages, such as edge.example.com serving www.example.com: comma-separated page origins allowed to call it. Leave it unset otherwise. |
On a cross-host route, list the page origins in FINGERLY_ALLOWED_ORIGINS and use the full URL, https://edge.example.com/k7x2qm4a, in endpoints. A request from any origin other than the Worker's own host and the listed ones gets 403.
What the Worker does
- Answers only
POSTat its one path, plus CORS preflights for listed origins on a cross-host route. - Forwards every request to
https://api.fingerly.io/api/v1/ingest, the identification and the deferred report alike. - Refuses bodies over 1 MiB with
413and gives Fingerly 5 seconds before answering502. - Sends the visitor's address from
CF-Connecting-IP, the page origin and the user agent, authenticated with the proxy key, and reports itself ascloudflare-worker/0.2.0. - Relays back only
content-type,x-request-idand the rate limit headers, so nothing in the response names Fingerly. - Strips cookies and authorization headers, never follows redirects, and never logs bodies or credentials.