Lookout
000 015 030 045 060 075 090 105 120 135 150 165 180 195 210 225 240 255 270 285 300 315 330 345 360
4 min read Tom Shafer

Tie every error to the deploy that caused it: release tracking

Release tracking ties every production error to the deploy that introduced it, so you stop guessing which change broke things and spot regressions instantly.

A new error shows up in production. The first question is always the same: what changed? Without an answer, you are reading git logs, squinting at timestamps, and asking the team who deployed what. With release tracking, the answer is already attached to the error: this started in v2.4.1, the deploy you shipped at 3:12 p.m. Release tracking is the simple practice of stamping every error with the version of your code that produced it — and it turns "what changed?" from a 20-minute investigation into a glance. For a small team shipping often, it is one of the highest-leverage habits you can adopt.

Why "first seen in" is the most useful field you're missing

Most errors are not random. They are introduced by a change and then triggered by traffic. The single most valuable piece of context for a bug is therefore which release it first appeared in. That one field tells you:

  • The blast radius — is this everyone on the latest version, or a straggler on an old one?
  • The suspect — the diff between the last clean release and this one is your bug.
  • The fix path — sometimes the fastest mitigation is rolling back, and you can only do that confidently if you know what to roll back to.

Stamping errors with a release

The mechanics are simple: tell your error tracker the current version at deploy time, and it tags everything that follows. With Lookout, your events carry the release identifier you set, so each error knows the version it came from. Use whatever you already version by — a git SHA, a tag, a build number — as long as it is unique per deploy.

A clean pattern is to set the version from your deploy pipeline using the environment you already pass around, for example:

LOOKOUT_API_KEY=your-project-api-key
LOOKOUT_URL=https://your-lookout-host.example.com
LOOKOUT_RELEASE=2.4.1

Now every error from that deploy is labelled 2.4.1 without you thinking about it again.

Spotting regressions the instant they ship

Release tracking shines right after a deploy. Instead of waiting for a customer to complain, you watch the new version: a cluster of errors that are all "first seen in" the release you just pushed is a regression, full stop. That is your cue to fix forward or roll back before the bug spreads across your whole user base. Pair it with an alert threshold over a 1h window and a bad deploy effectively announces itself.

Connect releases to the rest of the story

A version stamp gets more useful when it links to what shipped. If your releases come from git tags or GitHub releases, wiring those in means an error can point straight at the changelog and the commit range — so you go from "broke in 2.4.1" to "broke in this specific PR" without leaving the error. Lookout can mirror your GitHub tags so a release shows up with its real publish date before the first error from it even arrives.

Keep it honest

Release tracking only works if the version is accurate. Set it from the deploy, not by hand, so it never drifts. And keep your version scheme boring and unique — reusing the same tag for two deploys defeats the entire point and will send you chasing a bug in the wrong code.

The takeaway

Release tracking answers "what changed?" before you have to ask. Stamp every error with the deploy that produced it, watch new versions for regressions, and link releases back to the commits that caused them. It is a tiny bit of setup that pays off on every single incident afterward. Start free with Lookout — 10,000 events a month, no credit card — and tie your next error to the deploy behind it.

release-tracking deploys error-tracking laravel