Migrating production infrastructure? Get up to ₹10,000 in migration credits. Apply now
voroaDocs
Deploys

Deploy hooks: trigger a deploy from a URL with Voroa

Create a private deploy hook URL for your Voroa service, then trigger a new deploy from your CI, a CMS publish button or any script with one POST request.

What a deploy hook is

A deploy hook is a private URL for one service. When anything sends a POST request to it, Voroa builds and deploys that service from its configured branch - exactly as if you had clicked Manual Deploy in the dashboard.

Use one when something other than a push to your branch should ship a new version: your own CI pipeline, a CMS that rebuilds your site when an editor publishes, or a scheduled script.

Create a deploy hook

  1. Open your service and go to Settings, then Build & Deploy.

  2. In the Deploy hook row, select Create deploy hook.

    The Deploy hook row in a service's Build & Deploy settings, with the Create deploy hook button

  3. Copy the URL straight away. It is shown only once. Voroa stores a fingerprint of it, not the URL itself, so nobody - including Voroa - can show it to you again.

Store the URL as a secret in the tool that will call it (a CI secret, an environment variable), never in your code. Anyone who has the URL can deploy your service.

Trigger a deploy

Send an empty POST request:

bash
curl -X POST "https://api.getvoroa.com/api/deploy-hooks/voroa_dh_..."

A successful call answers 202 and the deploy appears on the service’s Deploys page, where you can follow its build log live.

Only POST starts a deploy. A GET - which is what chat apps and link previews send when someone pastes a URL - does nothing, so sharing the link by mistake does not deploy anything.

Limits

A deploy hook is a deploy like any other, so the same limits apply:

  • Deploys too close together are refused with 429. Wait a moment and call it again.
  • If your workspace has used its monthly build minutes, the call is refused with 402.

Replace or delete a hook

If a URL leaks, or you no longer need it:

  • Regenerate URL creates a new URL. The old one stops working immediately.
  • Delete removes the hook. Its URL stops working immediately.

Both are in the same Deploy hook row.

Deploy after your tests pass in GitHub Actions

Turn off auto-deploy for the service, save the hook URL as a repository secret named VOROA_DEPLOY_HOOK, and call it as the last step of your workflow:

yaml
- name: Deploy to Voroa
  if: github.ref == 'refs/heads/main'
  run: curl -fsS -X POST "${{ secrets.VOROA_DEPLOY_HOOK }}"

-f makes the step fail if Voroa refuses the call, so a 429 or 402 shows up as a failed job instead of passing silently.

Frequently asked questions

Which commit does a deploy hook deploy?

The latest commit on the service’s configured branch, the same as Deploy latest commit.

Can I have more than one hook for a service?

Each service has one hook. Regenerate it to replace the URL.

Does a deploy hook work for a service deployed from a Git URL?

Yes. It is the usual way to deploy such a service from your CI, since Voroa gets no push notification from your Git host. See deploy from a Git URL.

Last updated November 12, 2026