Webhooks

Erfahren Sie, wie Sie Echtzeit-Benachrichtigungen in Ihre Anwendung integrieren

Was sind Webhooks?

Webhooks sind automatische Nachrichten, die von Apps gesendet werden, wenn etwas passiert. Sie haben eine Nachricht—oder Payload—und werden an eine eindeutige URL (Ihren Endpoint) gesendet.

Anstatt ständig unsere API nach neuen Daten abzufragen (Polling), senden Webhooks Daten in Echtzeit an Ihre Anwendung, wenn Events auftreten. Das ist effizienter und liefert sofortige Benachrichtigungen.

Wenn ein Benutzer eine Umfrage oder ein Formular auf Ihrer Website einreicht, kann Ask Users Ihre Anwendung sofort per Webhook benachrichtigen, sodass Sie:

  • Daten automatisch mit Ihrem CRM synchronisieren (Salesforce, HubSpot usw.)
  • Benachrichtigungen an Ihr Team per Slack oder E-Mail senden
  • Benutzerdefinierte Workflows in Ihrer Anwendung auslösen
  • Ihre Datenbank in Echtzeit aktualisieren
  • Daten in Analyseplattformen einspeisen

Wie Webhooks funktionieren

1

Event tritt auf

Ein Benutzer sendet eine Umfrage oder ein Formular auf Ihrer Website ab. Ask Users erfasst dieses Event und bereitet sich darauf vor, Ihre Anwendung zu benachrichtigen.

2

Webhook ausgelöst

Ask Users prüft, welche Webhooks für dieses Event konfiguriert sind. Wenn Ihr Webhook für diesen Event-Typ konfiguriert ist, bereiten wir den Payload mit allen relevanten Daten vor.

3

HTTP-POST-Anfrage gesendet

Wir senden eine HTTP-POST-Anfrage an Ihre Webhook-URL mit den Event-Daten im JSON-Format. Die Anfrage enthält Sicherheits-Header (HMAC-Signatur) zur Verifizierung der Authentizität.

4

Ihr Endpoint verarbeitet die Daten

Ihre Anwendung empfängt den Webhook, verifiziert die Signatur und verarbeitet die Daten. Sie können sie in Ihrer Datenbank speichern, Benachrichtigungen auslösen, Datensätze aktualisieren oder jede beliebige benutzerdefinierte Logik ausführen.

5

Antwort und Wiederholung

Ihr Endpoint sollte innerhalb von 30 Sekunden mit einem 2xx-Statuscode (typischerweise 200 OK) antworten. Wenn wir keine erfolgreiche Antwort erhalten, wiederholen wir die Zustellung automatisch bis zu 5 Mal mit exponentiellem Backoff:

  • Versuch 1: Sofort
  • Versuch 2: 1 Minute später
  • Versuch 3: 5 Minuten später
  • Versuch 4: 15 Minuten später
  • Versuch 5: 1 Stunde später
  • Versuch 6: 6 Stunden später

Hauptfunktionen

Sichere Zustellung

Alle Webhooks sind mit HMAC-SHA256-Signaturen signiert, um die Authentizität zu verifizieren

Automatische Wiederholungen

Fehlgeschlagene Zustellungen werden automatisch bis zu 5 Mal mit exponentiellem Backoff wiederholt

Echtzeit-Zustellung

Webhooks werden sofort ausgelöst, wenn Events auftreten, typischerweise innerhalb von Millisekunden

Event-Deduplizierung

Eindeutige Event-IDs verhindern doppelte Verarbeitung auch bei Wiederholungen

Unterstützte Events

survey.response.created

Wird ausgelöst, wenn eine neue Umfrageantwort eingereicht wird. Enthält die vollständigen Antwortdaten, einschließlich aller Antworten, Teilnehmerinformationen und Umfrage-Metadaten.

form.submission.created

Wird ausgelöst, wenn eine neue Formulareinreichung erstellt wird. Enthält alle Formularfeld-Daten, Einreichungsstatus und Formularkonfigurationsdetails.

Schnellstart

1

Webhook im Dashboard konfigurieren

1. Gehen Sie zu Ihrem Dashboard

2. Navigieren Sie zu Einstellungen → Webhooks

3. Klicken Sie auf Webhook erstellen

4. Geben Sie Ihre Endpoint-URL ein und wählen Sie Event-Typen aus

5. Speichern Sie und kopieren Sie Ihren geheimen Schlüssel

2

Testen Sie Ihren Webhook

Senden Sie eine Test-Umfrage oder ein Test-Formular ab, um Ihren Webhook auszulösen und zu überprüfen, ob er korrekt funktioniert. Überprüfen Sie die Zustellungsprotokolle in Ihrem Dashboard, um die Anfrage und Antwort zu sehen.

Webhook-Referenzimplementierung

Hier ist ein vollständiges Beispiel, wie Sie einen Webhook-Endpoint in Ihrer Anwendung erstellen und verifizieren:

// Node.js/Express example
const crypto = require('crypto');

app.post('/webhooks/askusers', (req, res) => {
  const signature = req.headers['x-webhook-signature'];

  // Verify signature (see security section)
  if (!verifySignature(req.body, signature)) {
    return res.status(401).send('Invalid signature');
  }

  // Process webhook
  const { event_type, data } = req.body;

  // Return 200 OK immediately
  res.status(200).send('OK');

  // Process async
  processWebhookAsync(event_type, data);
});

Webhook-Payload-Beispiel

Hier ist ein Beispiel, wie ein Webhook-Payload aussieht:

{
  "event_type": "survey.response.created",
  "event_id": "550e8400-e29b-41d4-a716-446655440000",
  "timestamp": "2025-01-15T10:30:00.000Z",
  "data": {
    "response": {
      "id": "response-uuid",
      "survey_id": "survey-uuid",
      "response_data": {
        "question-id-1": "Answer 1",
        "question-id-2": "Answer 2"
      },
      "completion_status": "completed",
      "created_at": "2025-01-15T10:30:00.000Z"
    },
    "survey": {
      "id": "survey-uuid",
      "title": "Product Feedback Survey"
    }
  }
}

Sicherheit und Verifizierung

Verifizieren Sie immer Webhook-Signaturen, um sicherzustellen, dass Anfragen von Ask Users stammen. Jeder Webhook enthält einen X-Webhook-Signature-Header mit einer HMAC-SHA256-Signatur.

Verifizierungsbeispiel (Node.js)

const crypto = require('crypto');

function verifySignature(payload, signature) {
  const secret = process.env.ASKUSERS_WEBHOOK_SECRET;
  const payloadString = JSON.stringify(payload);

  const expectedSignature = crypto
    .createHmac('sha256', secret)
    .update(payloadString)
    .digest('hex');

  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expectedSignature)
  );
}

Verifizierungsbeispiel (Python)

import hmac
import hashlib
import os

def verify_signature(payload: str, signature: str) -> bool:
    secret = os.environ['ASKUSERS_WEBHOOK_SECRET']

    expected_signature = hmac.new(
        secret.encode('utf-8'),
        payload.encode('utf-8'),
        hashlib.sha256
    ).hexdigest()

    return hmac.compare_digest(signature, expected_signature)

Best Practices

1. Antworten Sie schnell

Geben Sie immer sofort 200 OK zurück und verarbeiten Sie den Webhook dann asynchron. Halten Sie die Antwortzeit unter 30 Sekunden, um Timeouts zu vermeiden.

2. Behandeln Sie doppelte Zustellungen

Verwenden Sie die event_id zur Deduplizierung von Events. Speichern Sie verarbeitete Event-IDs, um doppelte Verarbeitung zu verhindern. Dies ist wichtig, da Wiederholungen dazu führen können, dass dasselbe Event mehrfach zugestellt wird.

3. Verwenden Sie HTTPS

Verwenden Sie in der Produktion immer HTTPS-URLs für Webhook-Endpoints, um Datensicherheit zu gewährleisten und Man-in-the-Middle-Angriffe zu verhindern.

4. Überwachen Sie Zustellungsprotokolle

Überprüfen Sie Ihre Webhook-Zustellungsprotokolle im Dashboard, um Erfolgsraten zu überwachen und Probleme zu identifizieren. Protokolle zeigen die vollständige Anfrage/Antwort zur Fehlerbehebung.

5. Implementieren Sie ordnungsgemäße Fehlerbehandlung

Umschließen Sie Ihre Webhook-Verarbeitungslogik mit Try-Catch-Blöcken und protokollieren Sie Fehler. Geben Sie geeignete HTTP-Statuscodes zurück: 200-299 für Erfolg, 4xx für Client-Fehler (die nicht wiederholt werden), 5xx für Server-Fehler (die Wiederholungen auslösen).

No-Code-Integration

Sie möchten keinen Code schreiben? Verwenden Sie Webhooks mit Zapier oder Make:

  1. Erstellen Sie einen neuen "Catch Webhook"-Trigger in Zapier oder Make
  2. Kopieren Sie die bereitgestellte Webhook-URL
  3. Erstellen Sie einen Webhook in Ask Users mit dieser URL
  4. Testen Sie ihn, indem Sie ein Formular oder eine Umfrage absenden
  5. Erstellen Sie Ihren Automatisierungs-Workflow!

Benötigen Sie Hilfe?

Wenn Sie Fragen haben oder Unterstützung bei Webhooks benötigen:

  • Überprüfen Sie Zustellungsprotokolle in Ihrem Dashboard
  • Lesen Sie den Fehlerbehebungsabschnitt oben
  • Kontaktieren Sie uns unter support@askusers.org