Zum Inhalt springen

Eingehender Webhook

Wie ein anderes System (CRM, Formular, ERP, n8n, Zapier) einen Workflow der Community startet, indem es eine Adresse von Memberfy aufruft. Adresse erstellen, rotieren und widerrufen, der Token im Header, die HMAC-Signatur mit Beispielen in curl und Node, wie die Person gefunden wird, die Variablen des Auslösers, die Antworten und die Zustellungen.

Der eingehende Webhook ist der umgekehrte Weg der Webhooks: Statt dass Memberfy ein anderes System benachrichtigt, ruft ein anderes System (ein CRM, ein Formular, ein ERP, eine Automatisierung in n8n oder Zapier) eine Adresse von Memberfy auf und startet einen Workflow für eine Person der Community. Zum Beispiel: Das CRM schließt einen Verkauf ab, und die Person erhält die Willkommensserie für Kunden.

Die Adresse erstellen

Rolle: Eigentümer oder Administrator.

  1. Öffne unter Verwaltung › Workflows den Workflow und zieh den Auslöser-Block Webhook (Webhook empfangen) in den Entwurf. Jeder Workflow hat nur einen Auslöser.
  2. Gib unter Wer die Person ist an, wo die Person im JSON des Aufrufs steht: Per E-Mail oder Per memberId, und den Pfad im JSON (Felder durch Punkte getrennt, etwa contact.email, ohne Listenindizes).
  3. Ordne unter Werte für die Schritte, wenn du willst, bis zu 20 Werte aus dem JSON zu (Name und Pfad).
  4. Speichere den Workflow und klicke im Bereich des Auslösers auf Adresse erstellen.

Das Fenster zeigt die Adresse, den Token und das Signaturgeheimnis (HMAC) nur ein einziges Mal: „Jetzt sichern: Token und Geheimnis werden nur dieses eine Mal gezeigt.“ Danach zeigt der Bereich nur noch das Ende von Token und Geheimnis.

  • Rotieren erzeugt einen neuen Token und ein neues Geheimnis, die sofort gelten; das System, das die aktuelle Adresse aufruft, funktioniert erst wieder, wenn es die neuen erhält.
  • Widerrufen schaltet die Adresse sofort ab: Aufrufe werden ab dann abgelehnt.

Die Adresse aufrufen

Sende einen POST mit JSON-Inhalt (Content-Type: application/json, bis 64 KB) an https://api.memberfy.net/api/workflow-hooks, mit:

HeaderWas es ist
X-Memberfy-Hook-TokenDer Token des Auslösers. Sende ihn immer im Header: In der Adresse (/api/workflow-hooks/{token}) funktioniert er auch, landet aber in Logs
X-Memberfy-SignatureDie Signatur, t=<unix>,v1=<hex> (siehe unten)
X-Memberfy-Delivery-IdEine eindeutige Kennung des Aufrufs (bis 64 Buchstaben, Ziffern, - und _). Wird sie innerhalb von 10 Minuten wiederholt, wird der Aufruf abgelehnt

Die Signatur (HMAC)

Mit Signatur verlangen (HMAC) eingeschaltet (der Standard) kann nur starten, wer das Geheimnis hat. Die Signatur ist Pflicht, wenn der Weg des Auslösers Inhalte sendet (E-Mail, Nachricht, Kommentar, Reaktion oder Slack): Ohne sie lässt sich der Workflow nicht einschalten.

So signierst du:

  1. t ist die aktuelle Zeit in Sekunden (Unix). Sie gilt 5 Minuten nach vorne oder hinten.
  2. Berechne den HMAC-SHA256 in Hexadezimal mit dem Geheimnis über t, einen Punkt und den rohen Inhalt, genau die Bytes, die im Aufruf gesendet werden: "<t>.<inhalt>".
  3. Sende X-Memberfy-Signature: t=<t>,v1=<hmac>.

curl:

SECRET='das-geheimnis-des-ausloesers'
TOKEN='der-token-des-ausloesers'
BODY='{"customer":{"email":"[email protected]"},"plan":{"name":"Anual"}}'
T=$(date +%s)
SIG=$(printf '%s.%s' "$T" "$BODY" | openssl dgst -sha256 -hmac "$SECRET" -hex | sed 's/^.* //')

curl -X POST https://api.memberfy.net/api/workflow-hooks \
  -H 'Content-Type: application/json' \
  -H "X-Memberfy-Hook-Token: $TOKEN" \
  -H "X-Memberfy-Signature: t=$T,v1=$SIG" \
  -H "X-Memberfy-Delivery-Id: crm-$(date +%s%N)" \
  --data "$BODY"

Node:

const crypto = require('crypto');

async function startWorkflow(payload) {
  const body = JSON.stringify(payload); // signiere genau das, was im Aufruf gesendet wird
  const t = Math.floor(Date.now() / 1000);
  const v1 = crypto
    .createHmac('sha256', process.env.MEMBERFY_HOOK_SECRET)
    .update(`${t}.${body}`)
    .digest('hex');

  const res = await fetch('https://api.memberfy.net/api/workflow-hooks', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-Memberfy-Hook-Token': process.env.MEMBERFY_HOOK_TOKEN,
      'X-Memberfy-Signature': `t=${t},v1=${v1}`,
      'X-Memberfy-Delivery-Id': crypto.randomUUID(),
    },
    body,
  });
  return res.status; // 202, wenn angenommen
}

startWorkflow({ customer: { email: '[email protected]' }, plan: { name: 'Anual' } });

Die Person und die Variablen

  • Memberfy sucht die Person nach der Antwort, per E-Mail oder per memberId im eingestellten Pfad. Sie muss Mitglied der Community sein; sonst steht die Zustellung als Person nicht gefunden da.
  • Nur die zugeordneten Werte werden gespeichert, im Durchlauf der Person; der Rest des Inhalts wird verworfen.
  • Jeder Wert wird zur Variable {{gatilho_<nome>}}, zum Beispiel {{gatilho_plano}}. Sie gilt im Text der Nachrichten, der Kommentare und von Slack und im Inhalt der E-Mails, nie im Betreff und nie in Links.
  • Wie oft eine Person eintritt gilt wie bei jedem Auslöser, und jede Person tritt über den Webhook jedes Workflows höchstens 5 Mal pro Tag ein.
  • Ein Aufruf mit dem Header X-Memberfy-Run-Id eines Durchlaufs desselben Workflows (ein externes System, das den Aufruf des Workflows zurückschickt) wird ignoriert, damit keine Schleife entsteht. Die Slack-Posts eines Workflows tragen diesen Header.

Antworten

StatusWann
202Token und Signatur gelten. Die Antwort ist dieselbe, ob die Person gefunden wird oder nicht; das Ergebnis erscheint in den Zustellungen
401Signatur fehlt, ist falsch oder liegt außerhalb der 5 Minuten
404Token unbekannt, widerrufen oder von einem gelöschten Workflow
409X-Memberfy-Delivery-Id innerhalb von 10 Minuten wiederholt
413Inhalt über 64 KB
429Mehr als 60 Aufrufe pro Minute oder 5.000 pro Tag an dieselbe Adresse; warte auf Retry-After
503Die Prüfung auf Wiederholung ist gerade nicht verfügbar; versuche es erneut

Zustellungen

Im Bereich des Auslösers listet Zustellungen jeden empfangenen Aufruf mit dem Ergebnis: Gestartet, In der Warteschlange, Person nicht gefunden, Workflow aus, Schon eingetreten, Tageslimit der Person, Unsigniert oder Wiederholter Aufruf (Schleife).

Über den Assistenten (MCP)

Eigentümer und Administrator erstellen (create_workflow_webhook: Token und Geheimnis erscheinen einmal), rotieren und widerrufen (rotate_workflow_webhook und revoke_workflow_webhook, mit Bestätigung); das Team sieht die Adresse (get_workflow_webhook, nie den Token) und die Zustellungen (list_workflow_webhook_deliveries). Siehe Werkzeuge · Community und Struktur.

Verwandte Artikel