Metrickle

Mark releases from CI or your host

Last updated

A release marks the moment your site or app changed. Metrickle shows releases on the Overview chart, adds the latest one to alerts, and judges each protected flow since the latest release. This page covers recording releases automatically. For what releases do in the dashboard, see releases.

There are three ways a release gets recorded:

  • New app versions, automatically. When events arrive with an app version Metrickle hasn't seen before (appVersion in the SDK options, or context.app.version over the HTTP ingest API), it becomes a release, dated when it was first seen. This is checked every hour.
  • The deploy hook, from CI or your hosting provider. Best for websites, which don't have an app version.
  • By hand, in the dashboard under Integrations → Releases → Add release, or from an assistant with the create_release MCP tool. This needs the releases.manage permission.

Get the deploy hook URL

Open the app's Integrations page and choose Set up deploy hook under Releases. Only owners and admins, or people with the apps.keys permission, can see it. The URL looks like this:

https://in.metrickle.com/v1/releases/rh_…

The URL is the credential: anyone with it can add releases to the app. Keep it in your CI secrets. If it leaks, choose Replace URL. The old URL stops working straight away.

Send a release from CI

Add a step after each production deploy:

curl -X POST "$METRICKLE_DEPLOY_HOOK" \
  -H "content-type: application/json" \
  -d '{"version": "1.4.0", "description": "Checkout fixes", "url": "https://github.com/acme/web/releases/v1.4.0"}'
FieldRequiredWhat it is
versionYesThe version, tag or commit
descriptionNoUp to 500 characters
urlNoA link to release notes or the deploy
environmentNoSuch as production

The same fields work as a form post (version=1.4.0) or in the query string (?version=1.4.0).

Point GitHub, Vercel or Netlify at it

You can paste the same URL into your host's webhook settings without changing anything. Metrickle reads each one's own format and ignores pings, failed deploys and preview deploys.

SenderSet upRecorded
GitHubSettings → Webhooks, content type application/json, events Releases and/or Deployment statusesPublished releases (not drafts or pre-releases), with the tag as the version. Successful deployments to environments that aren't preview, staging, development or test, with the ref or short commit as the version
VercelSettings → Webhooks, event Deployment SucceededProduction deployments only, with the short commit (or the deployment id) as the version
NetlifySite configuration → Notifications → Outgoing webhook, event Deploy succeededDeploys that aren't previews or branch deploys, with the short commit (or the deploy id) as the version

Responses

StatusBodyMeans
201{ "ok": true, "recorded": true, "release": {...} }A release was added
200{ "ok": true, "recorded": false }Read, but not a release: a ping, a failed or preview deploy, or no version
404{ "error": "not_found" }The URL is wrong or was replaced, or the app is archived
413{ "error": "payload_too_large" }The body is over 256 KB
429{ "error": "rate_limited" }Too many requests. Try again shortly

The release object has id, version, description, url, environment, source and at (Unix milliseconds).