Signed, and checkable
HMAC-SHA256 over the timestamp and the raw body, sent as v1=<hex>. The version prefix leaves room to change the scheme without breaking receivers.
Webhooks
Point Ironfang Audit at an endpoint and it sends signed events when an audit completes, a page changes, a rule starts failing or evidence is about to expire. Retried for two days, with a delivery history you can read.
Create a free accountRead the API docs
POST /your/endpoint
Auditwolf-Event-Id: ev_01HZY7F8A2
Auditwolf-Timestamp: 1756480271
Auditwolf-Signature: v1=8a13c09e4f22...
User-Agent: Auditwolf-Webhooks/1
{
"type": "compliance.failed",
"audit_id": "aw-2841",
"site": "acme.example",
"pages": 128,
"failing_rules": 1
}One endpoint
A finding that lives in a dashboard is a finding somebody has to remember to go and look at. The audit that matters is usually the one that ran while everyone was busy with something else.
A webhook puts the event where the work already happens: the tracker, the channel, the deploy pipeline. Ironfang Audit signs it so you can trust it, keeps retrying while your endpoint is down, and records what happened either way.
// verify the signature before trusting the body
const expected =
'v1=' + crypto.createHmac('sha256', secret)
.update(timestamp + '.' + rawBody)
.digest('hex');
if (!crypto.timingSafeEqual(
Buffer.from(expected), Buffer.from(received))) {
return res.status(400).end();
}Capabilities
The parts that decide whether you can build on it: how it is signed, how hard it tries, and what you can see afterwards.
HMAC-SHA256 over the timestamp and the raw body, sent as v1=<hex>. The version prefix leaves room to change the scheme without breaking receivers.
One minute, five, thirty, two hours, eight, then a day twice. Eight attempts, long enough to survive an outage somebody fixes the next morning.
A Retry-After on your response is honoured up to a cap, so an endpoint under pressure can slow the retries rather than absorb them.
One event per audit with counts and a link, rather than one per page. A hundred-page audit is a single delivery.
Status, attempts and an excerpt of your own response, kept per endpoint, with manual retry when you have fixed the thing that broke.
Secrets are shown once and stored sealed, and can be rotated from the API without recreating the endpoint.
Use cases
Each of these is one event and a handful of lines at the other end.
Turn compliance.failed into an issue in the tracker your team already watches.
Send change.detected where the people who own the page will actually see it.
Wait for audit.completed and read the compliance summary before promoting a release.
Pull the evidence bundle as soon as the audit seals, rather than polling for it.
Act on quota.threshold_reached before an audit is blocked rather than after.
Use evidence.expiring to export a bundle before its retention period ends.
Events
Subscribe an endpoint to the events you want. Each one is an aggregate for the audit rather than one message per page.
audit.startedAn audit began.audit.completedEvery page finished and the evidence is sealed.audit.partialThe audit finished with some pages incomplete.audit.failedThe audit could not complete.change.detectedA page changed by more than its monitor policy allows.compliance.failedA rule that was passing is now failing.monitor.skippedA scheduled slot was skipped, with the reason.quota.threshold_reachedCredit use crossed a threshold on your plan.audit.quota_blockedAn audit the plan could not pay for; nothing was captured.evidence.expiringHosted evidence expires soon and no export holds a copy.Prefer the evidence itself rather than a notification? See export to your own storage.
Pricing
There is no per-delivery charge and no add-on. You are charged for the pages you capture; getting the results out is part of the product. Evidence integrity and delivery behaviour are identical on the free plan and every paid one.
Questions
The details that decide whether this fits, without reading the whole reference first.
Less to operate. More to ship.
Create an account, add a site and point an endpoint at it. The audit that triggers the first event is inside your free credits.
Webhooks are included on every plan, with no per-delivery charge and no card required to start.