Webhooks
Zehn Ereignisse, ein JSON-Inhalt, eine HMAC-Signatur zum Prüfen. Genug, um in Slack zu posten, ein Ticket zu öffnen oder Ihr eigenes Dashboard zu aktualisieren.
Einrichten
Settings → API and MCP → Webhooks → Add endpoint: eine https://-Adresse und die Ereignisse, die Sie möchten. Sie erhalten ein Geheimnis, nur einmal angezeigt, um Signaturen zu prüfen.
- Edit ändert die Adresse und die Ereignisse. Das Geheimnis bleibt gleich.
- Test sendet sofort ein
ping-Ereignis, damit Sie Ihren Empfänger prüfen können. - Log zeigt die letzten Zustellungen und wie viele Versuche jede brauchte.
Ereignisse
| Ereignis | Wann |
|---|---|
issue.resolved |
eine erneute Prüfung oder ein Audit findet ein Problem nicht mehr |
issue.reopened |
ein gelöstes Problem ist zurück |
audit.finished |
ein vollständiges Audit ist fertig (Seiten, offene Probleme, Werte) |
score.changed |
der Website-Wert hat sich nach einem Audit um 2 Punkte oder mehr bewegt |
connection.broken |
eine Google- oder WordPress-Verbindung funktioniert nicht mehr |
recheck.failed |
eine erneute Prüfung lief und das Problem ist noch da, eine geschriebene Korrektur ist noch nicht auf der Live-Seite, oder die Prüfung selbst konnte nicht laufen |
write.applied |
eine genehmigte Änderung (SEO-Feld, llms.txt, Regeln für KI-Crawler) wurde über WordPress oder die Shopify-App geschrieben |
write.failed |
eine genehmigte Änderung konnte nicht geschrieben werden |
write.not_live |
eine erneute Prüfung fand einen geschriebenen Wert nicht auf der Live-Seite |
agentic.finished |
ein Neulauf von Agentic Browsing ist fertig oder gescheitert |
Zustellung
POST https://your-endpoint
Content-Type: application/json
User-Agent: MonoRanks-Webhooks/1
X-MonoRanks-Event: recheck.failed
X-MonoRanks-Delivery: <delivery id>
X-MonoRanks-Signature: sha256=<hex>
Jeder Inhalt hat id (die Zustellungs-ID), event, at, workspaceId und siteId; die meisten haben auch host und einen link zum Bildschirm in der App.
{
"id": "…",
"event": "recheck.failed",
"at": "2026-10-01T09:12:00.000Z",
"workspaceId": "…",
"siteId": "…",
"issue": { "id": "…", "ruleId": "SEO-ONP-011", "title": "Missing meta description", "severity": "serious", "pages": 3 },
"crawlId": "…",
"reason": "still_present",
"recheck": { "present": 3, "checked": 4 },
"link": "https://app.monoranks.com/sites/…/issues/…"
}
Was jedes Ereignis hinzufügt:
issue.resolved,issue.reopened:issue(id,ruleId,title,severity,pages) undcrawlId.audit.finished:crawlId,status,pagesCrawled,openIssuesundscore(site,health,aeo).score.changed:from,to,deltaundsince.connection.broken:connection(zum Beispielgscoderwordpress) underror.recheck.failed:issue,reason(still_present,not_liveodererror) undrecheck(present,checked).write.applied,write.failed,write.not_live: ein Ereignis pro genehmigtem Stapel, mitbatchId,issueIds,source(wordpressodershopify) und bis zu 50changes, jede miturl,field,value,statusunderror. Beiwrite.not_livehat jede Änderung zusätzlichnotLiveReasonundliveValue(was die Seite zeigt).agentic.finished:jobId,url,strategy,status(doneoderfailed),passedvonapplicable, die fehlgeschlagenen Prüfungen infailingunderror.
Antworten Sie innerhalb von 20 Sekunden mit einem beliebigen 2xx. Alles andere wird erneut versucht.
Die Signatur prüfen
Die Signatur ist ein HMAC-SHA256 des rohen Anfrageinhalts mit dem Geheimnis Ihres Endpunkts:
import { createHmac, timingSafeEqual } from 'node:crypto';
const expected = 'sha256=' + createHmac('sha256', SECRET).update(rawBody).digest('hex');
const ok = timingSafeEqual(Buffer.from(expected), Buffer.from(req.headers['x-monoranks-signature']));
Nutzen Sie den rohen Inhalt so, wie er ankommt, keine neu serialisierte Kopie.
Häufige Fragen
Was passiert, wenn mein Endpunkt nicht erreichbar ist?
Eine fehlgeschlagene Zustellung wird nach 1, 5, 15 und 60 Minuten erneut versucht, insgesamt fünf Versuche. Nach 20 Fehlern in Folge wird der Endpunkt abgeschaltet. Jede Zustellung hat eine ID im Header X-MonoRanks-Delivery, damit Sie Duplikate verwerfen können.
Kann ich nach Website filtern?
Der Inhalt enthält die Website-ID (siteId) und meist ihren Host; filtern Sie auf Ihrer Seite. Endpunkte gelten pro Workspace.
Ich habe einen Endpunkt angelegt, bevor es die neueren Ereignisse gab. Bekomme ich sie?
Nein. Ein Endpunkt behält die Ereignisse, die angehakt sind. Bearbeiten Sie ihn, um die neuen hinzuzufügen.