Trigger: Projekt‑Status ändert sich

Dieser Trigger löst aus, wenn sich der Status eines Projekts ändert (z. B. von „offen“ zu „in Bearbeitung“). Er ist produktiv verfügbar und steht in n8n als eigener Trigger‑Knoten zur Verfügung (als auch als reiner HTTP‑Webhook).

Funktionsüberblick

  • Reagiert auf Statusänderungen eines Projekts in Boards und Subboards.
  • Optional filterbar nach Board, Subboard oder Status‑Spalte.
  • Sendet ein Event mit Alt‑/Neu‑Status an Ihre Webhook‑URL.

Konfiguration

  1. In n8n FlowOffice‑Credentials auswählen (HTTP‑Header Authorization: Bearer<API‑Key>).
  2. Board und optional Subboard wählen.
  3. Status‑Spalte wählen (falls mehrere vorhanden sind).
  4. Optional Filter setzen: Nur von‑ oder zu‑bestimmten Label‑Keys (Mehrfachauswahl) auslösen.
n8n‑UI – Trigger „Projekt‑Status ändert sich“ (Einstellungen)

Trigger‑Knoten „Projekt‑Status ändert sich“ – Einstellungen in n8n

Event‑Payload

Typescript
type ProjektStatusChangedEvent = {
  type: "project.status.changed"
  deliveryId: string
  projektId: number
  boardId: number
  subBoardId: number
  status: {
    columnKey: string
    columnLabel: string
    from: { labelKey: string; labelName: string }
    to: { labelKey: string; labelName: string }
    occurredAt: string // ISO‑Datum
  }
  cells: Record<string, unknown>
}

Webhook‑Aufruf

Wir senden einen HTTP POST an Ihre URL. Der Body enthält das oben gezeigte Event. Zur Signaturprüfung senden wir Header mit.

http
POST /your-webhook
Content-Type: application/json
X-FlowOffice-Event: project.status.changed
X-FlowOffice-Subscription-Id: <subscriptionId>
X-FlowOffice-Signature: sha256=<hex>

Zustellung & Retry‑Verhalten

  • Bei fehlgeschlagenen Zustellungen (kein 2xx) werden bis zu 7 Wiederholungen durchgeführt.
  • Zwischen den Versuchen verwenden wir Exponential Backoff mit Basis 60 Sekunden (z. B. 1 min, 2 min, 4 min, …).
  • Jeder Zustellversuch hat ein Timeout von 10 Sekunden.
  • Bei HTTP 404 oder 410 wird nicht erneut versucht (Abonnements gelten als dauerhaft ungültig/entfernt).
  • Bei Erfolg (2xx) werden keine weiteren Versuche unternommen.
Backoff‑Zeitplan
Backoff (retryLimit: 7, retryDelay: 60, retryBackoff: true)
Jeder Retry wartet zufällig zwischen [min, max] (gleichverteilte Jitter):
Retry 1: 60–120s (1–2 min)
Retry 2: 120–240s (2–4 min)
Retry 3: 240–480s (4–8 min)
Retry 4: 480–960s (8–16 min)
Retry 5: 960–1920s (16–32 min)
Retry 6: 1920–3840s (32–64 min)
Retry 7: 3840–7680s (64–128 min)
Kumuliert bis zum letzten Versuch:
Min gesamt ≈ 7.620s ≈ 127 min ≈ 2h 7m
Max gesamt ≈ 15.240s ≈ 254 min ≈ 4h 14m

Subscription verwalten (API)

Zum Anlegen/Aktualisieren verwenden Sie den folgenden Endpoint. Die Subscription‑ID identifiziert den Eintrag.

http
[PUT|GET|DELETE]
https://app.flow-office.eu/n8n/api/v1/webhooks/subscriptions/projekt-status-changed/{subscriptionId}
Authorization: Bearer <API-Key>

[For PUT Method]
Content-Type: application/json
Body: {
  "url": "https://example.com/hooks/flowoffice",
  "boardId": 123,
  "statusColumnKey": "status",
  "subBoardId": null,
  "fromStatusLabelKeys": ["todo", "in_progress"],
  "toStatusLabelKeys": ["done"],
  "name": "Mein Status‑Trigger",
  "signingSecret": "<mind. 24 Zeichen>",
  "configHash": "<mind. 16 Zeichen>"
}

Request‑Body (Typ)

Typescript
type PutSubscriptionInput = {
  url: string
  boardId: number
  statusColumnKey: string
  subBoardId?: number | null
  fromStatusLabelKeys?: string[]
  toStatusLabelKeys?: string[]
  name?: string
  signingSecret: string
  configHash: string
}

Antworten (Typen)

Typescript
type PutSubscriptionOutput = {
  id: string
  active: boolean
  configHash: string
  createdAt: string // ISO‑Datum
  updatedAt: string // ISO‑Datum
}

type GetSubscriptionOutput = {
  id: string
  active: boolean // a inactive subscription can be renewed with a PUT request
  configHash: string
}

type DeleteSubscriptionOutput = null