- Open DeploymentsGo to Settings and open the Deployments tab.
- Add a deploy hookUnder "Add a deploy hook", pick the Provider, a Name, an optional Environment, Maintenance window (minutes), Tags or Monitors, then "Create hook".
- Copy the URL and secretCopy the ingest URL and, for GitHub, GitLab and Netlify, the secret, which is shown only once.
- Configure the providerChoose "Setup steps" on the hook and follow them in GitHub, GitLab, Vercel or Netlify. For Vercel, paste the secret Vercel shows and choose "Save secret".
- Check Last receivedTrigger a deploy or a test delivery. The hook's Last received column shows Marker recorded or Ping received.
A deploy hook is a signed webhook URL that turns deployment events from GitHub, GitLab, Vercel or Netlify into deployment markers. It is the no-code alternative to calling the deployments API from CI. Deploy hooks need Starter or Team.
Before you start
- A workspace on Starter or Team, and the owner, admin or operator role.
- Admin access to the repository, project, Vercel team or Netlify site.
- Vercel webhooks need a Vercel Pro or Enterprise team.
- Up to 20 deploy hooks per workspace.
Create a deploy hook
- Go to Settings → Deployments and scroll to Add a deploy hook.
- Choose the Provider: GitHub, GitLab, Vercel or Netlify.
- Enter a Name (up to 80 characters).
- Optionally set an Environment: only deployments to that environment create markers. Leave it empty to record all of them, previews included.
- Optionally set a Maintenance window (minutes), 0 to 30, and target Tags or Monitors. With no monitors and no tags, markers are workspace-wide and open no window.
- Choose Create hook. For GitHub, GitLab and Netlify the secret is shown once: copy it now.
Each hook appears in the Deploy hooks table with its URL (Copy), Last received status, Setup steps, Rotate secret (or Set secret for Vercel) and Delete.
GitHub
- In the repository (or organization), open Settings → Webhooks → Add webhook.
- Payload URL: the hook's ingest URL. Content type:
application/json. - Secret: the secret shown when the hook was created. Keep SSL verification enabled.
- Under Which events would you like to trigger this webhook?, choose Let me select individual events, tick Deployment statuses and untick Pushes.
- Keep Active ticked and choose Add webhook. GitHub sends a ping, and Last received shows Ping received.
A marker is recorded when a deployment status becomes success, for example from a GitHub Actions job with an environment:. The service is the repository name and the version is the ref and commit.
GitLab
- In the project, open Settings → Webhooks → Add new webhook.
- URL: the ingest URL. Secret token: the secret shown when the hook was created (not GitLab's signing token).
- Under Trigger, tick only Deployment events. Keep Enable SSL verification on.
- Choose Add webhook, then Test → Deployment events to send a sample.
A marker is recorded when a deployment succeeds (a job with an environment: keyword). The service is the project path and the version is the ref and short commit.
Vercel
- In Vercel, open the team's Settings → Webhooks.
- Under Deployment Events, select Deployment Succeeded (add Deployment Promoted if you promote previews manually).
- Choose the projects, enter the ingest URL as the Endpoint URL and choose Create Webhook.
- Vercel shows a secret once in the Webhook Created dialog. Back in Uptime Tracker, open the hook's Setup steps, paste it into Secret Vercel showed and choose Save secret. Deliveries are rejected until the secret is saved.
The environment is Vercel's deployment target (production, or preview when Vercel sends none). The service is the Vercel project name.
Netlify
- In Netlify, open Project configuration → Notifications → Deploy notifications → Add notification → HTTP POST request.
- Event to listen for: Deploy succeeded.
- URL to notify: the ingest URL. JWS secret token: the secret shown when the hook was created. Save.
The environment is Netlify's deploy context (production, deploy-preview or branch-deploy). The service is the Netlify site name.
Read "Last received"
| Status | Meaning |
|---|---|
| Marker recorded | A deployment marker was created. |
| Ping received | The provider's test or ping arrived and the signature is valid. |
| Ignored | A valid event that is not a successful deploy, or for another environment. |
| Duplicate | The provider re-sent an event already recorded; no second marker. |
| Bad signature | The secret in the provider does not match. Rotate the secret and update the provider. |
| Unrecognized | The payload is not a deployment event of the expected provider. |
| Plan required | The workspace is on Free; markers need Starter or Team. |
| No secret yet | A Vercel hook without a saved secret. |
Lost or leaked secret
Choose Rotate secret. A new secret is shown once; paste it into the provider. Deliveries signed with the old secret fail from then on. For Vercel, create a new webhook in Vercel and use Set secret.
Troubleshooting
- Nothing is received: check the URL was copied completely and the provider's own delivery log for errors.
- Ping received, but no markers: GitHub only sends deployment statuses for real deployments, such as jobs with an
environment:; a plain push does not create one. Check the hook's Environment filter too. - Bad signature: the secret was mistyped or rotated. Rotate it and paste the new one into the provider.
Frequently asked questions
Which plan includes deploy hooks?
Starter and Team, like deployment markers.
Do I still need a CI step?
No. A deploy hook records markers straight from GitHub, GitLab, Vercel or Netlify. The deployments API and monctl deploy remain available for other tools such as Jenkins.
Can a deploy hook open a maintenance window?
Yes. Set Maintenance window (minutes) between 1 and 30 and target monitors or tags; each recorded deploy opens a window for them.