Product · Signals

Log it. Chart it.
Open a delta from it.

Trunk's own event log, chart builder, and monitors — attached to the delta that changed the code. Instrument once with the Trunk SDK; every event, error, and metric lives in the same tool as the ticket, the design, and the PR. When something regresses, one click opens a delta with the trace pre-attached.

trunk.dev/norrland/norrland-shop/main/signals
product last 7 days
Checkout funnel
Cart12,481
Address8,203
Payment4,918
Success4,632
Biggest drop: Cart → Address · −34% · see the delta workflow →
health · alert firing · 8m
/checkout · TTFB p95 > 800ms
Regression started at 14:22 UTC. Deploy 6 minutes earlier: delta #140 · StoreHeader semantic.
Auto-routed to
S
Sam · author of #140
delta-native signals wired to delta #142 · Cart empty-state recommendations
Motivating signal
Cart empty-state CTR · last 30 days · 33% avg
Validating signal (post-ship)
7 days post-deploy · +41% CTR · hypothesis validated
One SDK · one place

Instrument once. See it everywhere.

Drop the Trunk SDK in your app. Events, errors, and spans go to the same place — the Signals tab. Every event is queryable in Explore, chartable on a dashboard, and one click away from becoming a delta with the full trace attached.

No stitching between an analytics vendor, a monitoring vendor, and your ticket tracker. No dashboard bookmark hoarding. One tool.

app.tsx
// Initialize once
import { trunk } from "@trunk/sdk";
trunk.init({ project: "norrland" });

// Log an event
trunk.event("cart.checkout_started", {
  cart_value: 62.40,
});

// Capture an error, grouped and routed to the delta
// that last touched the affected file
try { render(cart); }
catch (err) { trunk.error(err); }
Three shapes · one tab

Product · Health · Delta-native.

Every signal in Trunk is attachable to a delta. Every signal knows which primitive it depends on. Nothing floats in a separate tool with no way to tie it to change.

Product
Funnels · cohorts · KPIs

Classic PLG metrics — activation, retention, per-cohort conversion. Attach any signal to a delta as the motivating reason.

Health
Errors · latency · uptime

Native error grouping and span timing from the same SDK. Alerts route to the delta that touched the affected primitive — not to a broad on-call rotation.

Delta-native
Motivating & validating

Auto-computed per delta. Motivating = what data justified the work. Validating = did it move the needle post-ship. Nothing else does this.

Delta-aware routing
The alert knows who broke it.

Trunk indexes every regression against the deltas that touched the affected primitive. When latency on /checkout spikes, Trunk doesn't page whoever's on-call — it opens a comment on the delta that shipped the change, tags the author, and drops the trace.

alert /checkout TTFB p95 > 800ms
8m ago
deploy #140
who
Sam
delta
#140
primitive
StoreHeader

Signals connect to everything.

A signal without a link to the change is just a chart. Explore how Signals wire to deltas, docs, and journey.