Webhooks (preview)

Not yet available — status as of 2026-08-12. Nothing on this page is implemented: there is no webhook registration UI, no delivery pipeline, and no endpoint to point at us. It documents the planned event catalog so integrations can plan ahead. Poll instead (see below), and watch the changelog for the launch announcement.

Planned events

| Event | Fired when | |---|---| | certificate.issued | A certificate is created via the API or dashboard. | | certificate.revoked | A certificate is revoked. | | verification.occurred | /verify/:code is called against one of your certificates. |

Planned delivery model

  • One POST per event to each registered endpoint.
  • X-Certify-Signature header carrying an HMAC-SHA256 of the payload against your endpoint secret.
  • At-least-once delivery with exponential backoff (1m → 5m → 15m → 1h → 6h, then stop).
  • A per-endpoint retry log in the dashboard. (No such screen exists today.)

Planned payload shape

{
  "id": "evt_01H…",
  "type": "certificate.issued",
  "createdAt": "2026-04-19T09:10:11.123Z",
  "data": {
    "certificate": {
      "id": "8f4d…",
      "uniqueCode": "ABC12345",
      "recipientName": "Jane Doe",
      "templateId": "…",
      "status": "Issued"
    }
  }
}

Until webhooks land

Poll GET /api/v1/certificates?status=Issued&page=1&perPage=100 and filter by createdAt (results are newest-first). This works for low-volume workflows; high-volume integrations should wait for real webhooks. Mind the rate limit — 60 requests per rolling 60s across your whole key, so poll on an interval rather than in a tight loop.

Follow the changelog for the launch announcement.