Skip to Content
GuidesIngest Vercel logs

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-verify value 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 project key and reads their timelines.

Notes

  • A single drain can carry multiple projects; they appear as distinct entities under project.
  • project is synthesized from the payload’s projectName (else projectId). If it reads sparse in Fields, the payload may not carry it on every entry — pick a denser field as the key, or slice by source / environment. See Concepts → labels.
Last updated on