Webhook-integrationsguide

Konfigurera en Webhook-slutpunkt för att ta emot artikeldata från GroMach. Bearbeta publicerade artiklar i ditt eget backend-system.

Senast uppdaterad: 5 februari 2026

Översikt

Webhook-integrationen gör det möjligt för dig att ta emot artikeldata från GroMach och bearbeta den i ditt eget backend-system. När du publicerar en artikel skickar GroMach en POST-förfrågan till din konfigurerade endpoint med artikelinnehållet.

Steg 1: Konfigurera din webhook-endpoint

Skapa en HTTPS-endpoint på din server för att ta emot webhook-förfrågningar. Endpointen måste:

  • Acceptera POST-förfrågningar: All webhook-data skickas via POST
  • Använda HTTPS: Av säkerhetsskäl stöds endast HTTPS-adresser
  • Returnera 2xx-status: Returnera en framgångsstatuskod för att bekräfta mottagning

Steg 2: Implementera signaturverifiering

GroMach signerar alla webhook-förfrågningar med HMAC-SHA256. Du bör verifiera denna signatur för att säkerställa att förfrågningarna är äkta.

Varje förfrågan innehåller dessa headers:

  • x-webhook-signature: HMAC-SHA256-signatur av förfrågningskroppen
  • x-webhook-timestamp: ISO 8601-tidsstämpel för när förfrågan skickades
  • Content-Type: application/json

Här är ett exempel på signaturverifiering i 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 });
});

Steg 3: Webhook-payload-format

När en artikel publiceras skickar GroMach en payload med följande 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"]
      }
    ]
  }
}

Referens för artikelfält

  • id: Unik identifierare för artikeln
  • slug: URL-vänlig identifierare för artikeln
  • title: Artikeltitel
  • excerpt: Kort beskrivning eller sammanfattning
  • content_format: Antingen "markdown" eller "html"
  • content: Fullständigt artikelinnehåll
  • status: Publiceringsstatus (draft, published, archived)
  • published_at: ISO 8601 publiceringstidsstämpel
  • author_name: Författarens visningsnamn
  • cover_image: URL till omslagsbilden (om tillgänglig)
  • meta_title: SEO-titel för sökmotorer
  • meta_description: SEO-metabeskrivning
  • tags: Array med taggsträngar

Steg 4: Konfigurera i GroMach

På GroMachs integrationssida fyller du i följande information:

  • Namn (Valfritt): Ett användarvänligt namn för att identifiera denna webhook
  • Webhook-URL: Din HTTPS-endpoint-URL (t.ex. https://your-site.com/api/webhook)
  • Hemlig nyckel: En hemlig sträng som används för att signera förfrågningar (håll denna säker!)
  • Publiceringsstatus: Välj om artiklar ska skickas som "published" eller "draft"

Viktigt

Håll din hemliga nyckel säker och exponera den aldrig i klientkod. Använd miljövariabler för att lagra den säkert på din server.

Testa din webhook

Innan du skapar integrationen kan du testa din webhook-anslutning med knappen "Testa anslutning". GroMach kommer att skicka en testförfrågan för att verifiera att din endpoint är korrekt konfigurerad.

Testkrav

För att testet ska lyckas måste din endpoint:

  • 1. Verifiera signaturen: Använd den hemliga nyckeln för att verifiera X-Webhook-Signature-headern
  • 2. Returnera framgångssvar: Returnera ett JSON-svar med { "success": true }

Test-payloaden ser ut så här:

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

Här är ett komplett exempel på hur din test-endpoint ska hantera förfrågan:

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 });
});

Varför signaturverifiering krävs

Signaturverifiering säkerställer att webhook-förfrågningarna verkligen kommer från GroMach och inte har manipulerats. Detta är en säkerhetspraxis som skyddar din endpoint från obehöriga förfrågningar.

Felsökning

Anslutningstestet misslyckas

  • • Verifiera att din endpoint-URL är korrekt och använder HTTPS
  • • Säkerställ att din server är tillgänglig från internet
  • • Kontrollera att din endpoint returnerar en 2xx-statuskod

Signaturverifiering misslyckas

  • • Se till att du använder den exakta hemliga nyckeln från GroMach
  • • Verifiera att du hashar den råa förfrågningskroppen, inte ett parsat objekt
  • • Använd tidssäker jämförelse för att förhindra timing-attacker

Artiklar visas inte

  • • Kontrollera dina serverloggar för eventuella bearbetningsfel
  • • Verifiera att artikelstatusen matchar ditt förväntade arbetsflöde
  • • Säkerställ att dina databasoperationer slutförs framgångsrikt