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
-
Open your service and go to Settings, then Build & Deploy.
-
In the Deploy hook row, select Create deploy hook.

-
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:
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:
- 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.