Webhooks

Webhooks für Bestellungen, Zahlungen und Lagerbestand konfigurieren.

Zuletzt aktualisiert: 2025-01-01

Webhooks

Webhooks ermöglichen es Ihrem System, in Echtzeit über Ereignisse in Ihrem Shop informiert zu werden. Wenn ein Ereignis eintritt (z.B. neue Bestellung, Zahlung eingegangen), sendet das System eine HTTP-POST-Anfrage an Ihre konfigurierte URL.

Ereignistypen

EreignisBeschreibung
order.createdNeue Bestellung eingegangen
order.paidZahlung für Bestellung bestätigt
order.shippedBestellung wurde versandt
order.cancelledBestellung wurde storniert
order.refundedRückerstattung wurde veranlasst
payment.completedZahlung erfolgreich abgeschlossen
payment.failedZahlung fehlgeschlagen
product.createdNeues Produkt erstellt
product.updatedProdukt aktualisiert
product.deletedProdukt gelöscht
customer.registeredNeuer Kunde registriert

Webhook-Payload

Jede Webhook-Anfrage enthält folgende Header:

POST https://ihre-url.example.com/webhook
Content-Type: application/json
X-Webhook-Event: order.paid
X-Webhook-Timestamp: 1705312200

Beispiel-Payload für order.paid:

{
  "event": "order.paid",
  "timestamp": "2025-01-15T10:30:00Z",
  "data": {
    "orderId": 1001,
    "orderNumber": 10042,
    "customerEmail": "[email protected]",
    "totalAmount": 2490.00,
    "currency": "EUR",
    "paymentMethod": "paypal"
  }
}

Webhook-Verwaltung via API

Webhooks auflisten

GET /api2/admin/webhooks?status=failed&eventType=order.paid&page=1&limit=20

Gibt eine paginierte Liste aller Webhook-Einträge zurück, inklusive Statistiken nach Status.

Query-Parameter:

ParameterTypBeschreibung
statusstringFilter: pending, delivered, failed
eventTypestringFilter nach Ereignistyp
pagenumberSeite (Standard: 1)
limitnumberEinträge pro Seite (Standard: 20)

Antwort:

{
  "webhooks": [
    {
      "id": 501,
      "eventType": "order.paid",
      "url": "https://ihre-url.example.com/webhook",
      "status": "delivered",
      "attempts": 1,
      "createdAt": 1705312200,
      "deliveredAt": 1705312205
    }
  ],
  "total": 38,
  "stats": {
    "pending": 2,
    "delivered": 35,
    "failed": 1
  }
}

Webhook-Details abrufen

GET /api2/admin/webhooks/{id}

Gibt einen einzelnen Webhook-Eintrag mit vollständigem Payload und Fehlermeldungen zurück.


Webhook manuell in die Warteschlange stellen

POST /api2/admin/webhooks
Content-Type: application/json

{
  "eventType": "order.paid",
  "payload": {
    "orderId": 1001,
    "orderNumber": 10042
  },
  "url": "https://ihre-url.example.com/webhook"
}

Wird für Tests und Debugging verwendet. Die URL wird auf SSRF-Angriffe geprüft. Falls keine URL angegeben wird, wird die Standard-Webhook-URL aus der Konfiguration verwendet.

Antwort (201):

{
  "id": 502,
  "status": "pending",
  "eventType": "order.paid",
  "createdAt": 1705315800
}

Fehlgeschlagenen Webhook erneut senden

POST /api2/admin/webhooks/{id}/replay

Setzt den Status des Webhooks auf pending und löscht bisherige Fehlerinformationen, damit der Hintergrundprozess ihn beim nächsten Zyklus erneut versendet.

Hinweis: Die erneute Zustellung erfolgt nicht sofort, sondern beim nächsten Durchlauf des Webhook-Prozessors.

Antwort (200):

{
  "id": 501,
  "status": "pending",
  "attempts": 0
}

Webhook löschen

DELETE /api2/admin/webhooks/{id}

Entfernt den Webhook-Eintrag aus der Warteschlange.

Antwort (200):

{ "success": true }

Wiederholungsverhalten

Bei fehlgeschlagener Zustellung (Timeout, HTTP-Fehler 4xx/5xx) versucht das System den Webhook automatisch erneut zu senden:

VersuchWartezeit
1. Wiederholung5 Minuten
2. Wiederholung30 Minuten
3. Wiederholung2 Stunden
4. Wiederholung12 Stunden

Nach 4 fehlgeschlagenen Versuchen wird der Webhook als failed markiert und nicht mehr automatisch gesendet. Verwenden Sie den Replay-Endpunkt, um ihn manuell erneut zu senden.


Empfehlungen für Ihre Webhook-Endpoint

  • Antworten Sie schnell: Geben Sie innerhalb von 5 Sekunden 200 OK zurück. Aufwendige Verarbeitung in einen Hintergrund-Job auslagern.
  • Idempotenz: Derselbe Webhook kann mehrfach ankommen. Verwenden Sie die Webhook-ID zur Deduplizierung.
  • Zeitstempel prüfen: Validieren Sie X-Webhook-Timestamp, um sehr alte Nachrichten abzuweisen.
  • HTTPS verwenden: Webhook-URLs werden auf gültige HTTPS-Endpunkte geprüft.

Webhook-URL konfigurieren

Die Standard-Webhook-URL wird in den Shop-Einstellungen unter Einstellungen → API & Webhooks konfiguriert oder per Umgebungsvariable MRP_WEBHOOK_URL gesetzt.