Deploy Hook
A deploy hook is a unique secret URL generated per site. Send a POST request to that URL right after your deploy finishes and QuickMonitoring will trigger a standard scan automatically. No authentication headers are needed — the secret key in the URL is sufficient.
What you'll see
Go to Sites → your site → Settings → Deploy Hook.
The page shows:
- The full hook URL (e.g.
https://api.quickmonitoring.com/api/v1/deploy-hook/YOUR_HOOK_KEY) - A Copy button
- A Regenerate button — generates a new key and immediately invalidates the old URL
Setup instructions
Copy the hook URL from Site Settings and add a POST step to your deployment pipeline. The sections below cover the most common platforms.
Railway
- Open your Railway project
- Select the service you deploy to
- Go to Settings → Deploy → Webhooks
- Paste the hook URL and save
Railway posts to the URL after each successful deploy.
Vercel
- Open your Vercel project
- Go to Settings → Git → Deploy Hooks
- Give the hook a name (e.g.
QuickMonitoring QA) and select the branch - Copy the generated Vercel hook URL — note that this is a Vercel-side hook, not the QuickMonitoring URL
- Alternatively, add the QuickMonitoring URL as a post-deploy script in your build command:
next build && curl -X POST YOUR_HOOK_URL
Netlify
- Open your Netlify site dashboard
- Go to Site → Build & deploy → Deploy notifications
- Click Add notification → Outgoing webhook
- Set the event to Deploy succeeded
- Paste the QuickMonitoring hook URL and save
GitHub Actions
Add a step at the end of your deploy workflow:
- name: Trigger QA scan
run: curl -X POST https://api.quickmonitoring.com/api/v1/deploy-hook/YOUR_HOOK_KEY
Replace YOUR_HOOK_KEY with the key shown in Site Settings. Place this step after your deploy step so it only runs once the deploy is confirmed.
Full example workflow step in context:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy to production
run: ./deploy.sh
- name: Trigger QA scan
run: curl -X POST https://api.quickmonitoring.com/api/v1/deploy-hook/YOUR_HOOK_KEY
Behavior details
- No body required — the POST request can have an empty body; QuickMonitoring ignores the payload
- Already running — if a scan is already in progress for the site, the hook call is acknowledged but no second scan is started
- Regenerating the URL — the old key stops working immediately; update all pipelines that use it before regenerating
Pass condition
✅ You've earned this achievement when the deploy hook URL is generated for a site and at least one scan has been triggered via a POST to that URL.
Common issues
-
Hook returns a non-200 response — Verify you are sending a
POST(not aGET). Some platforms default to GET for outgoing webhook notifications. Check the platform-specific settings to ensure the method is POST. -
Scan not triggered after the hook fires — If a scan was already running, the request is silently skipped. Wait for the current scan to finish and then fire the hook again, or check the scan history to confirm whether a scan started.
-
Old hook URL still working after regeneration — There may be a brief propagation delay (a few seconds) after regeneration. After that, the old URL returns a 404. Update your pipeline immediately after regenerating.
-
Hook URL exposed in logs — The URL acts as a secret. If it appears in CI logs, regenerate it from Site Settings and update your pipeline to store the key as a secret environment variable (e.g.
${{ secrets.QM_DEPLOY_HOOK }}in GitHub Actions).