Deploy Hooks

One-click deploys from the ready-to-deploy Slack message

What is a deploy hook?

When pull requests merge to your default branch, Coderbuds posts a "ready to deploy" message to Slack that lists everything waiting on a production deployment. Add a deploy hook URL to a repository and that message gains a Deploy now button — one click triggers your deployment, no context switch needed.

How it works

  1. You paste a deploy hook URL into a repository's settings (Team settings → Repositories → Configuration → Deploy hook).
  2. The next time the ready-to-deploy message updates, it includes a Deploy now button.
  3. Clicking the button asks for confirmation, then Coderbuds sends a single POST request to your hook URL.
  4. Your platform builds and deploys. When Coderbuds sees the successful production deployment, the message flips to "deployed".

Where to get a hook URL

Laravel Forge

Open your site in Forge → App tab → copy the Deployment Trigger URL. Requesting it runs your site's deploy script.

Envoyer

Open your project → SettingsDeployment Hooks → copy the deployment trigger URL.

Laravel Cloud

Open your application's production environmentSettings → copy the Deploy Hook URL. A plain POST deploys the latest commit on the environment's branch.

Deploying via GitHub Actions

If your production deploy runs through a GitHub Actions workflow, choose GitHub Actions as the deploy trigger instead of a hook URL. Coderbuds lists the repository's manually dispatchable workflows (those with a workflow_dispatch trigger), and lets you pick one and fill in the input values it should send with every deploy — booleans, choices and defaults come straight from the workflow file.

This route has a bonus over a raw platform hook: when your workflow's deploy job declares a GitHub environment (e.g. environment: production), GitHub records every run as a deployment. Coderbuds picks that up automatically, so the Slack message flips to "deployed" the moment the run succeeds. A raw platform hook (e.g. calling Laravel Cloud directly) deploys just the same, but bypasses GitHub — Coderbuds can't see when it finishes unless the platform reports back through the inbound deployment webhook below.

Inbound deployment webhook

Deploys that don't go through GitHub — Laravel Cloud's deploy center, Forge quick deploys, Envoyer, or a custom CI script — are invisible to Coderbuds by default. The inbound deployment webhook closes that gap: point your platform's "deployment finished" hook at Coderbuds and every deploy is recorded, feeds your DORA metrics, completes the ready-to-deploy Slack message, and associates the deployed pull requests automatically.

Mint a per-repository token (ask us, or run it yourself if you self-host):

php artisan repositories:inbound-deploy-token owner/name

The command prints a ready-to-use URL of the shape POST /api/deploy-events/{repository}/{token}. Pass --rotate to replace a token that may have leaked. A plain POST with no body records a successful production deploy; an optional JSON body refines the record:

  • environment — defaults to the repository's production environment.
  • statussuccess (default), failure or error.
  • sha — the deployed commit, used to link the deploy to its pull requests and to de-duplicate webhook retries.
  • description — free-text note shown alongside the deployment.
  • deployer_email — when it matches a team member's Coderbuds account, the deploy is attributed to that person on the deployments-by-person leaderboard.

The token is encrypted at rest and is the only credential the endpoint accepts — a wrong or missing token simply returns 404. Replaying the same deploy (same commit and environment) within five minutes returns the original record instead of counting it twice.

Security

  • The hook URL is encrypted at rest and never displayed again after saving.
  • Only Slack users linked to a team member can trigger a deploy, and every click shows a confirmation dialog first.
  • Repeated triggers within 10 minutes are rejected, so an accidental double-click can't deploy twice.
  • The Slack message records who triggered each deploy.