NexusKit

Ontwikkelaar

Webhooks

Ontvang meldingen zodra er iets gebeurt. NexusKit stuurt HTTP POST naar uw endpoints met HMAC-ondertekende payloads — zodat u in realtime kunt reageren.

Overzicht

Met webhooks kan NexusKit event-data in realtime naar uw server pushen. In plaats van de API te pollen, registreert u een URL in het Dashboard en sturen wij een HTTP POST-verzoek naar die URL zodra een event plaatsvindt. Elke payload is ondertekend met HMAC-SHA256, zodat u kunt verifiëren dat deze afkomstig is van NexusKit.

Events

NexusKit ondersteunt momenteel de volgende events. Abonneer op specifieke events of gebruik de wildcard om alles te ontvangen:

EventBeschrijvingVoorbeelddata
contact.submissionWordt geactiveerd wanneer een contactformulier-inzending wordt ontvangen{ "name": "Jane", "email": "[email protected]" }
onboarding.completedWordt geactiveerd wanneer een gebruiker alle stappen van een onboarding-flow voltooit{ "flowId": "flow_abc", "sessionId": "sess_xyz" }
* (wildcard)Abonneer op alle events binnen uw TenantElk van de bovenstaande payloads

Payload-formaat

Elke webhook-aflevering bevat de volgende JSON-body:

{
  "event": "contact.submission",
  "timestamp": "2026-08-21T14:30:00.000Z",
  "tenantId": "tnt_abc123",
  "data": {
    "submissionId": "sub_xyz789",
    "formId": "frm_abc123",
    "payload": {
      "name": "Jane Doe",
      "email": "[email protected]",
      "message": "Interested in your services."
    }
  }
}
VeldTypeBeschrijving
eventstringDe naam van het event (bijv. contact.submission)
timestampISO 8601Wanneer het event plaatsvond
tenantIdstringDe Tenant waartoe dit event behoort
dataobjectEvent-specifieke payload (verschilt per event-type)

HMAC-SHA256-verificatie

Elk webhook-verzoek bevat een X-NexusKit-Signature-header met een HMAC-SHA256-handtekening. U dient deze handtekening te verifiëren om zeker te zijn dat de payload door NexusKit is verstuurd en niet is gemanipuleerd.

Hoe het werkt

  1. 1NexusKit berekent HMAC-SHA256 van de ruwe request-body met uw webhook secret
  2. 2De hexadecimaal gecodeerde handtekening wordt verstuurd in de X-NexusKit-Signature-header
  3. 3Uw server berekent de HMAC opnieuw met hetzelfde secret en vergelijkt de twee waarden
  4. 4Komen ze overeen, dan is de payload authentiek — zo niet, wijs deze dan af

Hier is een Node.js-voorbeeld dat een binnenkomende webhook verifieert:

import crypto from 'node:crypto';

function verifyWebhookSignature(payload, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload, 'utf8')
    .digest('hex');

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

// Express / Connect middleware example
app.post('/webhooks/nexuskit', express.raw({ type: 'application/json' }), (req, res) => {
  const signature = req.headers['x-nexuskit-signature'];
  const secret = process.env.NEXUSKIT_WEBHOOK_SECRET;

  if (!verifyWebhookSignature(req.body, signature, secret)) {
    return res.status(401).json({ error: 'Invalid signature' });
  }

  const event = JSON.parse(req.body);
  console.log('Verified webhook:', event.event);

  // Process the event...
  res.status(200).json({ received: true });
});

Belangrijk: Gebruik altijd crypto.timingSafeEqual in plaats van === voor het vergelijken van handtekeningen. De standaard gelijkheidsoperator is kwetsbaar voor timing-aanvallen.

Configuratie

Stel uw webhook-endpoints in vanuit het NexusKit-dashboard:

1

Ga naar Webhooks

Ga in uw Dashboard naar Dashboard → Settings → Webhooks.

2

Voeg uw endpoint-URL toe

Voer de URL in waarop u webhook-POST-verzoeken wilt ontvangen. Gebruik HTTPS in productie.

3

Selecteer events

Kies op welke events u wilt abonneren. U kunt afzonderlijke events selecteren of de *-wildcard gebruiken om alle events te ontvangen.

4

Kopieer uw webhook secret

Kopieer na het aanmaken van het endpoint het gegenereerde webhook secret. Bewaar het veilig — u hebt het nodig om binnenkomende handtekeningen te verifiëren.

Retrybeleid

Geeft uw endpoint een niet-2xx statuscode terug of loopt het verzoek vast, dan probeert NexusKit de aflevering automatisch opnieuw. Retries worden beheerd via BullMQ met exponentiële backoff:

PogingVertraging
1e retry30 seconden
2e retry2 minuten
3e retry10 minuten
4e retry1 uur
5e retry (laatste)4 uur

Na 5 mislukte pogingen wordt de aflevering als mislukt gemarkeerd. U kunt afleveringslogs bekijken en handmatig opnieuw proberen vanuit het Dashboard.

Klaar om te integreren?

Maak een gratis account aan en zet binnen enkele minuten uw eerste webhook op.