Message events

A recipient complained

The recipient reported the message as spam; only Sendora support lifts that suppression.

postWebhookspam_complaint

Headers

Sendora-Signaturestring required

t= the Unix time of sending, then v1= an HMAC-SHA256 over <t>.<body> for each live secret of the webhook, the newest first. Verify one before you trust the body.

Sendora-Eventstring required

The event, the same as event in the body.

Sendora-Delivery-Idstring required

The delivery, the same as id in the body and on every retry of it.

User-Agentstring required

Sendora-Webhooks/1.

Payload

idstring required

The delivery's id. A delivery may arrive more than once, so key your handling on it.

attemptinteger required

The attempt number, from 1.

messageIdstring required

The message the event is about.

recipientstring required

The recipient the event is about.

occurredAtstring date-time required

When it happened.

serverIdstring required

The server the message was sent from.

streamIdstring required

The stream the message went on.

broadcastIdstring nullable required

The broadcast the message belongs to; null for a message sent on its own.

tagstring nullable required

The tag you sent with the message.

metadataobject required

The metadata you sent with the message.

testboolean required

True for a test server's message: the event was simulated and nothing was sent.

event'spam_complaint' required

Example payload

{
  "id": "9b2f4c1e-7a3d-4e5f-8c6b-1d2e3f4a5b6c",
  "attempt": 1,
  "messageId": "5f432ffd-c005-499b-aa3a-5b8a088ea20e",
  "recipient": "anna@example.com",
  "occurredAt": "2026-09-15T12:00:03.000Z",
  "serverId": "0f8a1b2c-3d4e-4f5a-8b6c-7d8e9f0a1b2c",
  "streamId": "3d1a2b4c-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
  "broadcastId": null,
  "tag": "invoice",
  "metadata": {
    "invoiceId": "2026-0912"
  },
  "test": false,
  "event": "spam_complaint",
  "details": {
    "feedbackType": "abuse"
  }
}

Response

Acknowledges the delivery. Any other answer, or none within 10 seconds, is retried.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.