Vercel shipped always-on tracing at $0.50 per 1M span units on 21 August 2026, and the pricing doc omits it

Vercel's always-on tracing bills by span size, not span count, and its retention ceiling is 3 days on every plan.

Read time
12 min
Word count
1.8K
Sections
11
FAQs
8
Share
Vercel always-on tracing billing card showing $0.50 per 1M span units and a 3-day trace retention ceiling
Vercel always-on tracing entered beta on 21 August 2026.
On this page · 11 sections
  1. What actually shipped
  2. The price exists in one sentence, in one place
  3. Retention is the gap that will bite hardest
  4. The command line cannot express the rule the docs recommend
  5. Hard limits that silently drop data
  6. India-specific considerations
  7. What to do this week
  8. What is still unknown
  9. FAQ
  10. How eCorpIT can help
  11. References

Summary. Vercel put always-on tracing into beta on 21 August 2026 for teams on every plan, priced at $0.50 per 1 million span units. A span unit is not a span: an indexed span up to 2 KB counts as one unit, and every further 2 KB adds another, so a 5 KB span bills as three. That price appears in exactly one place, the changelog post. Vercel's own pricing reference at /docs/pricing, last updated 29 July 2026, contains zero occurrences of the words "span" or "tracing". The feature's documentation page carries a last_updated value of 20 October 2018. Retention is the second gap: the changelog says traces "follow your runtime log retention: 1 hour on Hobby, 1 day on Pro and 3 days on Enterprise", but the runtime logs reference dated 3 August 2026 also lists 30 days of logs for both Pro and Enterprise teams on Observability Plus. Traces get no such row. If you pay for Observability Plus, your logs outlive your traces by 27 days.

What actually shipped

Always-on tracing samples live production and preview traffic and stores the traces so an engineer can open a real request afterwards without reproducing it. Vercel's earlier option, session tracing, only captured requests from the toolbar in your own browser. The tracing overview states the mechanism plainly: "Sampling applies to a whole trace at once, not to individual spans. For each trace, Vercel makes one keep-or-drop decision and applies it to every span, so you never see a partial trace."

Collection is off until you add at least one sampling rule with a rate above 0%. Infrastructure spans and outbound fetch spans are captured automatically. Framework and custom spans require the @vercel/otel package, whose latest release on the npm registry is 2.1.3, published 11 June 2026 under the MIT licence, with a peer range of >=1.9.0 <2.0.0 on @opentelemetry/api. Next.js 13.4 and later contribute route and rendering spans once that package is installed.

Capability Always-on tracing Session tracing
Traffic covered Sampled production and preview requests Requests from one browser session
Turned on by A sampling rule with a rate above 0% The Vercel toolbar on a deployment
Billing model $0.50 per 1M span units, 2 KB per unit 1 million spans per month, per team
Retention ceiling 3 days, on Enterprise Follows the logs view it appears in
Plan availability All plans, beta, 21 August 2026 All plans, same 1M cap on every tier

The price exists in one sentence, in one place

The changelog post reads: "Always-on tracing is is now in beta and available to teams on all plans. Tracing is priced at $0.50 per 1M span units." The duplicated "is" is Vercel's, not ours.

The documentation section that should carry that number does not. Always-on Tracing has a heading called "Usage and pricing", and under it defines the unit without ever naming a rate: "During Beta, always-on tracing usage is measured in span units for spans indexed after sampling. An indexed span up to 2 KB counts as one span unit."

We fetched the Markdown source of Vercel's pricing reference on 24 August 2026. Its frontmatter reports last_updated: 2026-07-29, three weeks before launch, and the string "span" does not occur in the document. Neither does "tracing". The same is true of Manage and Optimize Observability, dated 6 July 2026, which is the page a finance owner would read to understand how observability usage turns into a bill.

The billing consequence is not theoretical. Because a span unit is 2 KB of indexed span rather than one span, cost tracks attribute size. A fetch span carrying a long URL, request headers and a response body preview can bill several times over a bare infrastructure span in the same trace. Nothing in the dashboard sampling form exposes span size, so the only lever you get before the invoice is the sampling rate.

Retention is the gap that will bite hardest

Here the two Vercel pages disagree in a way that matters to anyone already paying for observability.

Plan Runtime log retention Always-on trace retention
Hobby 1 hour 1 hour
Pro 1 day 1 day
Pro with Observability Plus 30 days Not listed above 1 day
Enterprise 3 days 3 days
Enterprise with Observability Plus 30 days Not listed above 3 days

The runtime logs page, last_updated: 2026-08-03, gives 30 days for both Observability Plus tiers and adds that you can view up to 14 consecutive days of runtime logs inside that 30-day window. The always-on tracing page gives a three-row table with no Observability Plus entry at all. So the changelog's "traces follow your runtime log retention" holds only for teams that have not bought the add-on. For everyone who has, a log line will still be there four weeks after an incident and its trace will not.

Treat 3 days as the real ceiling. If your incident review happens on Monday for a Friday-night fault, the trace is already gone on Enterprise. The workaround Vercel supports is Trace Drains, which forward spans to your own store over OTLP/HTTP. Note the protocol restriction: OTLP/gRPC on port 4317 is not supported, only OTLP/HTTP on the /v1/traces path. Vercel stamps vercel.projectId and vercel.deploymentId as resource attributes on everything it sends.

The command line cannot express the rule the docs recommend

This is the part that breaks automation. The `vercel traces` reference, dated 22 June 2026, is unusually candid about it:

"The dashboard Rate field accepts 0, but the CLI accepts whole percentages from 1 to 100 and rejects both 0 and fractions such as 2.5. To add a 0% rule that matches requests and collects nothing, use the dashboard."

Now read what the always-on tracing page tells you to do: "add a rule with a 0% rate before a broader rule to exclude matching requests, such as a 0% rule on /health". The vendor's own recommended pattern for excluding health checks and webhooks from billing cannot be created from the terminal, from CI, or by an agent holding an API token. It is a dashboard click, and it is the click that keeps a high-volume noisy path out of your span-unit count.

Ordering compounds it. Rules are evaluated top to bottom and the first match wins, a project holds at most 10 rules, and vercel traces config set appends to the bottom of the list. The CLI reference spells out the result: "The CLI cannot reorder rules, so to change the order, remove the rules with rm and add them back in the order you want." A broad rule added in week one silently outranks the precise rule you add in week four.

One more default worth checking before you enable anything: with no rules configured, always-on tracing collects nothing, while a Trace Drain forwards every trace. The two systems read the same shape of rule and behave in opposite directions when the rule set is empty.

Hard limits that silently drop data

Three caps sit in the shared limitations section and apply to both tracing modes.

Limit Value What happens when you cross it
Trace data per request 10 MB compressed The traced request is capped
Span size 1 MB compressed Largest attributes are truncated first
Span size after truncation Still above 1 MB compressed The span is dropped entirely
Edge runtime custom spans Never collected Absent from every trace, any collection mode
Sampling rules per project 10 No eleventh rule can be added

Truncation is at least observable: Vercel adds an <attribute_name>.truncated boolean set to true for each attribute it shortens. A dropped span leaves no such marker. If you instrument a function that attaches large payloads to spans, assert on that .truncated flag in a smoke test rather than trusting the waterfall to look complete.

The Edge runtime exclusion is the one most likely to be discovered during an outage. Custom spans from functions on the Edge runtime do not appear in traces regardless of how they were collected, so an Edge-heavy application gets infrastructure and fetch spans and nothing you wrote yourself.

India-specific considerations

Traces carry request attributes, and request attributes carry personal data more often than teams expect: query strings with email addresses, header values with device identifiers, fetch spans with customer IDs in the path. Under the Digital Personal Data Protection Act 2023, that content is in scope wherever it lands. Vercel's tracing documentation describes retention windows and truncation behaviour but does not state a storage region for collected traces, so an Indian team with a residency position should route spans to storage it controls through a Trace Drain rather than relying on the platform's 1-hour to 3-day window as a deletion control. The same reasoning applies to sampling: a 0% rule on an authenticated path is a data-minimisation measure, and as shown above, it can only be created in the dashboard.

Teams comparing this with a general-purpose vendor should weigh it against Datadog LLM observability pricing caps and against the OpenTelemetry GenAI semantic conventions, which govern how agent spans should be named if you plan to move this data anywhere else later.

What to do this week

Add one rule, not ten. Start at a low rate on production with no path prefix, watch the span-unit line for a full billing week, and only then narrow with path prefixes. Before you raise the rate, create the 0% exclusion rules for /health, webhook receivers and any polling endpoint, and create them in the dashboard first so they sit above the broad rule in evaluation order. Record the rule order somewhere outside Vercel, because the CLI will not restore it for you.

If you already pay for Observability Plus, decide now whether 3 days of traces is enough for your incident process. If it is not, a Trace Drain to your own OTLP/HTTP endpoint is the only supported answer, and it needs to be configured before the incident, not after. Teams running this alongside Vercel custom metrics and observability event billing should model both meters together, since sampling decisions made for tracing do not change metric volume. The same discipline applies to Vercel deployment storage billing and retention defaults: the platform's defaults are chosen for convenience, not for your finance plan.

The real cost here is usually the attribute payload, not the request count.

What is still unknown

Vercel has not published a general availability date, has not said whether the beta price of $0.50 per 1M span units survives GA, and has not stated whether Observability Plus will extend trace retention the way it extends log retention. The pricing reference has not been updated since 29 July 2026. Until it is, the changelog sentence is the only price of record, and a changelog post is not a commitment.

FAQ

How eCorpIT can help

Span-unit billing rewards teams that decide what to instrument before they turn collection on, and punishes the ones that discover attribute size on an invoice. Our senior engineering teams size sampling rules against real traffic, set the exclusion rules that the CLI cannot create, and build the Trace Drain path to storage you control so a three-day retention ceiling never decides how long you have to investigate. We are ISO 27001:2022 certified and CMMI Level 5 appraised, and we design tracing pipelines aligned with DPDP Act 2023 data-minimisation requirements. To review your observability spend and retention plan, talk to our observability engineering team or read how we approach observability cost and OpenTelemetry migration.

References

  1. Always-on tracing for production and preview traffic, Vercel changelog, 21 August 2026
  1. Always-on Tracing, Vercel documentation
  1. Tracing overview, Vercel documentation
  1. Session tracing, Vercel documentation
  1. vercel traces CLI reference, last updated 22 June 2026
  1. Runtime logs and retention limits, last updated 3 August 2026
  1. Observability Plus, Vercel documentation
  1. Vercel pricing reference, last updated 29 July 2026
  1. Trace Drains reference, Vercel documentation
  1. Tracing instrumentation with @vercel/otel
  1. @vercel/otel package metadata, npm registry
  1. Observability on Vercel, last updated 6 July 2026
  1. OTLP/HTTP specification, OpenTelemetry
  1. Vercel CLI expands support for DNS, domains, and project commands, 21 August 2026

Last updated: 24 August 2026.

Frequently asked

Quick answers.

01 What does Vercel charge for always-on tracing?
The changelog post published on 21 August 2026 states $0.50 per 1 million span units during beta. That figure does not appear in Vercel's pricing reference, which was last updated on 29 July 2026 and contains no occurrence of the words span or tracing anywhere in its text.
02 What is a span unit?
A span unit measures indexed span data after sampling rather than counting spans. An indexed span up to 2 KB counts as one unit, and each further 2 KB adds another. Vercel's own examples give two units for a 3 KB span and three units for a 5 KB span, so cost follows attribute size.
03 How long does Vercel keep collected traces?
The always-on tracing page lists 1 hour on Hobby, 1 day on Pro and 3 days on Enterprise. There is no Observability Plus row, so teams paying for that add-on keep 30 days of runtime logs while their traces still expire within 3 days at most.
04 Can I manage sampling rules entirely from the CLI?
No. The CLI reference dated 22 June 2026 states that vercel traces config accepts whole percentages from 1 to 100 and rejects both 0 and fractions. The 0% exclusion rule that the documentation recommends for paths like /health can only be created in the dashboard.
05 How are overlapping sampling rules resolved?
Vercel evaluates rules in listed order and applies the first one that matches, ignoring the rest. New rules are appended to the bottom, so an earlier broad rule outranks a later narrow one. The CLI cannot reorder rules; you remove them and add them back in the order you want.
06 Do custom spans work on the Edge runtime?
No. Vercel's shared tracing limitations state that custom spans from functions using the Edge runtime do not appear in traces regardless of how they are collected. Edge-heavy applications receive infrastructure spans and outbound fetch spans only, with no application-level instrumentation visible in the waterfall.
07 What happens to very large spans?
A span above 1 MB of compressed data has its largest attributes truncated, and Vercel marks each one with a matching truncated boolean attribute set to true. A span still above 1 MB after truncation is dropped with no marker. Each traced request is also capped at 10 MB of compressed trace data.
08 How do I keep traces for longer than 3 days?
Use a Trace Drain to forward spans to storage you control. Trace Drains use OTLP over HTTP exclusively, typically port 4318 on the /v1/traces path, and OTLP over gRPC on port 4317 is not supported. Vercel adds vercel.projectId and vercel.deploymentId as resource attributes to everything it sends.

About the author

Manu Shukla

Founder & Director

Founder of eCorpIT. Hands-on engineer leading senior-only delivery for AI apps, custom software, and cloud systems for global clients.

Subscribe

One engineering note a week. No fluff, no spam.

Senior-architect playbooks on AI agents, mobile apps, cloud, security, data, and marketing — delivered every Wednesday.

Past the reading

Read enough. Let's build something.

A senior architect responds in 24 working hours with scope, indicative cost, and a timeline. NDA before any technical conversation.