Deploy hook: keep tracked pages fresh

Quillly tracks the pages you already own — pricing, features, landing pages — and re-checks them for SEO issues and content changes on a schedule. The deploy hook lets you skip the wait: ping it the moment your site redeploys and Quillly re-fetches your sitemap and re-checks every tracked page right away.

What the deploy hook does#

Your CI knows exactly when your content changed; Quillly does not have to guess. When you call the hook, Quillly re-fetches your tracked-page sitemap, discovers new or removed URLs, and re-checks existing pages — prioritizing a content-hash probe so genuinely changed pages are caught first. The work runs in the background, so the request returns immediately.

Deploy hook flow: a CI deploy triggers a ping, then Quillly re-fetches the sitemap and re-checks tracked pages

Endpoint reference#

Method and URL

code
POST https://quillly.com/api/ping/pages/<websiteId>

Authentication — use your site's verification token, either way:

  • Query: ?token=<token>

  • Header: Authorization: Bearer <token>

A signed-in owner can also trigger it from the dashboard's "Re-check now" button.

Parameters

  • delay — seconds to wait before running the re-check, 01800 (default 0). Use it to line the re-check up with your CDN propagation instead of running instantly.

  • recheck — default true. If a run finds no changes yet, Quillly automatically re-checks again at +5 and +15 minutes, so a slow cache still gets caught.

Cooldown — one re-check per site per 120 seconds. A chattier caller gets 429.

Response codes

  • 202 Accepted — queued:

json
{ "success": true, "data": { "queued": 2, "message": "Re-check queued — tracked pages will re-sync in the background." } }
  • 200 OK — no page endpoints configured: { "success": true, "data": { "queued": 0, "message": "No page endpoints with a sitemap are configured for this website." } }

  • 429 Too Many Requests — within the cooldown: { "success": false, "error": { "code": "RATE_LIMITED", "message": "Re-check already queued recently. Try again in up to 120s." } }

  • 401 invalid token, 403 service inactive, 404 unknown website.

Examples#

curl

bash
curl -X POST \
  "https://quillly.com/api/ping/pages/<websiteId>?delay=120" \
  -H "Authorization: Bearer <token>"

GitHub Actions — add a final step after your deploy job:

yaml
- name: Ping Quillly deploy hook
  run: |
    curl -fsS -X POST \
      "https://quillly.com/api/ping/pages/${{ secrets.QUILLLY_WEBSITE_ID }}?delay=120" \
      -H "Authorization: Bearer ${{ secrets.QUILLLY_DEPLOY_TOKEN }}"

Generic post-deploy script

bash
#!/usr/bin/env bash
set -euo pipefail
curl -fsS -X POST \
  "https://quillly.com/api/ping/pages/${QUILLLY_WEBSITE_ID}?delay=90&recheck=true" \
  -H "Authorization: Bearer ${QUILLLY_DEPLOY_TOKEN}"

Choosing a delay#

Set delay to roughly your deploy-plus-CDN-propagation time — the gap between "CI finished" and "the new HTML is actually live at the edge." If your pages serve in seconds, delay=0 is fine; if a CDN takes a minute or two to purge, delay=90 or delay=120 avoids re-checking stale HTML. You do not need to be precise: with recheck on, the automatic +5 and +15 minute passes catch anything that was not live yet. Just stay under the 120-second cooldown — one ping per deploy is all you need.

To see what counts as a tracked page and how endpoints are served, read Content types & endpoints. New to Quillly? Start with Getting started with Quillly.