Ingest Vercel logs
Configure a Vercel log drain to deliver into a NavFlow vercel source. Each
log entry becomes an event, keyed by project, with environment and source as labels.
Vercel delivers from its cloud, so the ingest endpoint must be publicly reachable. Use a
deployed instance or a tunnel (e.g. ngrok) — a bare localhost daemon will not
receive drains.
Create the source
In the console: Sources → Add source → vercel. There is no required config; the project,
environment, and source labels are pre-filled (project is the key). Save.
The source page shows its ingest endpoint — a stable URL of the form
https://<host>/ingest/<ingest_key>. Copy it.
Add the log drain in Vercel
In Vercel: Team Settings → Log Drains → Add Log Drain.
- Endpoint: the ingest URL from the previous step
- Delivery format: JSON
- Sources / projects: select what to send (
lambda,edge,static, …)
Pass endpoint verification
Vercel verifies the endpoint before saving the drain by checking an x-vercel-verify response
header. NavFlow handles this two ways:
- It echoes the
x-vercel-verifyvalue Vercel sends in the request — so verification often passes with no configuration. - If Vercel expects a pre-shared value, set
NAVFLOW_VERCEL_VERIFY=<value>on the daemon (the value Vercel shows) and restart.
If you set NAVFLOW_INGEST_TOKEN, add it to the drain as a custom
header (X-NavFlow-Token: <token>).
Confirm ingestion
Once the drain is saved and traffic flows, open the vercel source in the console:
- Recent events shows entries arriving.
- Fields shows each field’s coverage and top values — including which
projects appear. - Explore lists projects under the
projectkey and reads their timelines.
Notes
- A single drain can carry multiple projects; they appear as distinct entities under
project. projectis synthesized from the payload’sprojectName(elseprojectId). If it reads sparse in Fields, the payload may not carry it on every entry — pick a denser field as the key, or slice bysource/environment. See Concepts → labels.