Webhooks

Formgong envoie un POST JSON et une signature HMAC-SHA256 du corps brut. Le secret est dans les réglages du formulaire. Jusqu'à 5 tentatives, espacées de 30 s, 2 min, 10 min, 30 min et 2 h.

{
  "event": "submission.created",
  "form": { "id": "…", "name": "…" },
  "submission": {
    "id": "…",
    "created_at": "2026-09-29T12:00:00.000Z",
    "page_url": "https://example.com/",
    "fields": { "name": "Olena", "email": "olena@example.com" },
    "is_spam": false
  }
}

Header X-Signature: sha256=…. Header X-Formgong-Event: submission.created.

import { createHmac, timingSafeEqual } from "node:crypto";

function verified(rawBody, signature, secret) {
  const digest = createHmac("sha256", secret).update(rawBody).digest();
  const got = Buffer.from(String(signature).replace(/^sha256=/, ""), "hex");
  return got.length === digest.length && timingSafeEqual(got, digest);
}

Make, n8n, Zapier

Créez un module webhook (Make), un Webhook node (n8n) ou un Catch Hook (Zapier), puis collez cette URL dans les réglages du formulaire. Associez ensuite submission.fields.

Google Sheets

function doPost(e) {
  const body = JSON.parse(e.postData.contents);
  const fields = body.submission.fields;
  SpreadsheetApp.getActive().getSheetByName("Leads").appendRow([
    body.submission.created_at, fields.name, fields.email, fields.message,
  ]);
  return ContentService.createTextOutput("ok");
}

KeyCRM

Il n'y a pas de connecteur natif. Dans n8n ou Make, recevez le webhook Formgong et appelez l'API KeyCRM avec votre propre clé. Les champs sont dans submission.fields.