Webhook-Integrationsanleitung

Richten Sie einen Webhook-Endpunkt ein, um Artikeldaten von GroMach zu empfangen. Verarbeiten Sie veröffentlichte Artikel in Ihrem eigenen Backend-System.

Letzte Aktualisierung: 5. Februar 2026

Übersicht

Die Webhook-Integration ermöglicht es Ihnen, Artikeldaten von GroMach zu empfangen und in Ihrem eigenen Backend-System zu verarbeiten. Wenn Sie einen Artikel veröffentlichen, sendet GroMach eine POST-Anfrage an Ihren konfigurierten Endpunkt mit dem Artikelinhalt.

Schritt 1: Richten Sie Ihren Webhook-Endpunkt ein

Erstellen Sie einen HTTPS-Endpunkt auf Ihrem Server, um Webhook-Anfragen zu empfangen. Der Endpunkt muss:

  • POST-Anfragen akzeptieren: Alle Webhook-Daten werden per POST gesendet
  • HTTPS verwenden: Aus Sicherheitsgründen werden nur HTTPS-URLs unterstützt
  • 2xx-Status zurückgeben: Geben Sie einen Erfolgsstatuscode zurück, um den Empfang zu bestätigen

Schritt 2: Implementieren Sie die Signaturverifizierung

GroMach signiert alle Webhook-Anfragen mit HMAC-SHA256. Sie sollten diese Signatur verifizieren, um sicherzustellen, dass die Anfragen authentisch sind.

Jede Anfrage enthält diese Header:

  • x-webhook-signature: HMAC-SHA256-Signatur des Anfragekörpers
  • x-webhook-timestamp: ISO 8601-Zeitstempel, wann die Anfrage gesendet wurde
  • Content-Type: application/json

Hier ist ein Beispiel für die Signaturverifizierung in Node.js:

const crypto = require('crypto');

function verifySignature(payload, signature, secret) {
  const computedSignature = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(computedSignature, 'hex')
  );
}

// In your endpoint handler:
app.post('/webhook', (req, res) => {
  const signature = req.headers['x-webhook-signature'];
  const payload = JSON.stringify(req.body);

  if (!verifySignature(payload, signature, YOUR_SECRET_KEY)) {
    return res.status(401).json({ error: 'Invalid signature' });
  }

  // Process the webhook...
  res.json({ success: true });
});

Schritt 3: Webhook-Payload-Format

Wenn ein Artikel veröffentlicht wird, sendet GroMach eine Payload mit folgender Struktur:

{
  "event_type": "publish_articles",
  "timestamp": "2024-01-15T10:30:00.000Z",
  "data": {
    "articles": [
      {
        "id": "article-uuid-123",
        "slug": "my-article-slug",
        "title": "Article Title",
        "excerpt": "Brief description of the article...",
        "content_format": "markdown",
        "content": "# Full article content in markdown...",
        "status": "published",
        "published_at": "2024-01-15T10:30:00.000Z",
        "author_name": "Admin",
        "cover_image": "https://example.com/image.jpg",
        "meta_title": "SEO Title",
        "meta_description": "SEO meta description",
        "tags": ["seo", "marketing"]
      }
    ]
  }
}

Artikel-Felder-Referenz

  • id: Eindeutige Kennung für den Artikel
  • slug: URL-freundliche Kennung für den Artikel
  • title: Artikeltitel
  • excerpt: Kurze Beschreibung oder Zusammenfassung
  • content_format: Entweder "markdown" oder "html"
  • content: Vollständiger Artikelinhalt
  • status: Veröffentlichungsstatus (draft, published, archived)
  • published_at: ISO 8601-Veröffentlichungszeitstempel
  • author_name: Anzeigename des Autors
  • cover_image: URL des Titelbilds (falls verfügbar)
  • meta_title: SEO-Titel für Suchmaschinen
  • meta_description: SEO-Meta-Beschreibung
  • tags: Array von Tag-Strings

Schritt 4: Konfiguration in GroMach

Füllen Sie auf der GroMach-Integrationsseite die folgenden Informationen aus:

  • Name (Optional): Ein freundlicher Name zur Identifizierung dieses Webhooks
  • Webhook-URL: Ihre HTTPS-Endpunkt-URL (z.B. https://ihre-seite.com/api/webhook)
  • Geheimer Schlüssel: Eine geheime Zeichenfolge zum Signieren von Anfragen (halten Sie diese sicher!)
  • Veröffentlichungsstatus: Wählen Sie, ob Artikel als "published" oder "draft" gesendet werden

Wichtig

Halten Sie Ihren geheimen Schlüssel sicher und legen Sie ihn niemals in clientseitigem Code offen. Verwenden Sie Umgebungsvariablen, um ihn sicher auf Ihrem Server zu speichern.

Testen Sie Ihren Webhook

Bevor Sie die Integration erstellen, können Sie Ihre Webhook-Verbindung mit der Schaltfläche "Verbindung testen" testen. GroMach sendet eine Testanfrage, um zu verifizieren, dass Ihr Endpunkt ordnungsgemäß konfiguriert ist.

Testanforderungen

Damit der Test erfolgreich ist, muss Ihr Endpunkt:

  • 1. Die Signatur verifizieren: Verwenden Sie den geheimen Schlüssel, um den X-Webhook-Signature-Header zu verifizieren
  • 2. Erfolgsantwort zurückgeben: Geben Sie eine JSON-Antwort mit { "success": true } zurück

Die Test-Payload sieht folgendermaßen aus:

{
  "event_type": "test",
  "timestamp": "2024-01-15T10:30:00.000Z",
  "data": {
    "message": "This is a test webhook from Gromach SEO",
    "integration_name": "My Webhook"
  }
}

Hier ist ein vollständiges Beispiel, wie Ihr Test-Endpunkt die Anfrage verarbeiten sollte:

const crypto = require('crypto');

app.post('/webhook', (req, res) => {
  const signature = req.headers['x-webhook-signature'];
  const payload = JSON.stringify(req.body);

  // Step 1: Verify the signature
  const computedSignature = crypto
    .createHmac('sha256', YOUR_SECRET_KEY)
    .update(payload)
    .digest('hex');

  const isValid = crypto.timingSafeEqual(
    Buffer.from(signature, 'hex'),
    Buffer.from(computedSignature, 'hex')
  );

  if (!isValid) {
    return res.status(401).json({
      success: false,
      error: 'Invalid signature'
    });
  }

  // Step 2: Process based on event type
  if (req.body.event_type === 'test') {
    // Test connection - just return success
    return res.json({ success: true });
  }

  if (req.body.event_type === 'publish_articles') {
    // Process articles...
    const articles = req.body.data.articles;
    // Save to your database, etc.
    return res.json({ success: true });
  }

  res.json({ success: true });
});

Warum die Signaturverifizierung erforderlich ist

Die Signaturverifizierung stellt sicher, dass die Webhook-Anfragen wirklich von GroMach stammen und nicht manipuliert wurden. Dies ist eine bewährte Sicherheitspraxis, die Ihren Endpunkt vor unbefugten Anfragen schützt.

Fehlerbehebung

Verbindungstest schlägt fehl

  • • Überprüfen Sie, ob Ihre Endpunkt-URL korrekt ist und HTTPS verwendet
  • • Stellen Sie sicher, dass Ihr Server aus dem Internet erreichbar ist
  • • Prüfen Sie, dass Ihr Endpunkt einen 2xx-Statuscode zurückgibt

Signaturverifizierung schlägt fehl

  • • Stellen Sie sicher, dass Sie den exakten geheimen Schlüssel aus GroMach verwenden
  • • Verifizieren Sie, dass Sie den rohen Anfragekörper hashen, nicht ein geparste Objekt
  • • Verwenden Sie einen timing-sicheren Vergleich, um Timing-Angriffe zu verhindern

Artikel werden nicht angezeigt

  • • Überprüfen Sie Ihre Serverprotokolle auf Verarbeitungsfehler
  • • Stellen Sie sicher, dass der Artikelstatus Ihrem erwarteten Workflow entspricht
  • • Prüfen Sie, ob Ihre Datenbankoperationen erfolgreich abgeschlossen werden