Webhooks

Modtag real-time events fra Served i dit eget system.

Pro/Enterprise Feature: Webhooks er tilgængelige på Pro og Enterprise planer.

Opsætning

  1. Gå til Indstillinger → Integrationer → Webhooks
  2. Klik Tilføj webhook
  3. Indtast din endpoint URL (skal være HTTPS)
  4. Generér en webhook secret til signaturverificering
  5. Vælg hvilke events du vil modtage

Tilgængelige events

Opgaver

  • task.created - Ny opgave oprettet
  • task.updated - Opgave opdateret
  • task.completed - Opgave afsluttet
  • task.assigned - Opgave tildelt

Projekter

  • project.created - Nyt projekt oprettet
  • project.updated - Projekt opdateret
  • project.archived - Projekt arkiveret

Tidsregistrering

  • timeentry.created - Ny tidsregistrering
  • timeentry.updated - Registrering opdateret
  • timeentry.approved - Registrering godkendt

Payload format

{
  "id": "evt_abc123",
  "type": "task.completed",
  "created": "2025-01-15T10:30:00Z",
  "data": {
    "object": {
      "id": 12345,
      "title": "Implementer feature X",
      "projectId": 100,
      "completedAt": "2025-01-15T10:30:00Z",
      "completedBy": {
        "id": 42,
        "name": "John Doe"
      }
    }
  }
}

Signaturverificering

Alle webhook requests inkluderer en X-Served-Signature header:

const crypto = require('crypto');

function verifyWebhook(payload, signature, secret) {
  const timestamp = signature.split(',')[0].split('=')[1];
  const sig = signature.split(',')[1].split('=')[1];

  const signedPayload = timestamp + '.' + payload;
  const expected = crypto
    .createHmac('sha256', secret)
    .update(signedPayload)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(sig),
    Buffer.from(expected)
  );
}

Retry policy

  • Op til 5 retries ved fejl (HTTP 5xx eller timeout)
  • Exponential backoff: 30s, 2m, 10m, 30m, 2h
  • Webhook pauseres automatisk efter 10 consecutive failures
  • Email-notifikation sendes til admin ved gentagne fejl

Test din webhook

Brug "Send test event" knappen i Served for at teste din integration inden du går live.