Integrations & Webhooks
When a form is submitted, ProjME Forms can deliver the submission to your endpoint via a webhook.
Configuring a webhook
Section titled “Configuring a webhook”Create a webhook from the form’s settings: set the URL, HTTP method (POST/PUT/PATCH), the events to trigger on, and optional custom headers.
Payload
Section titled “Payload”A form_submitted delivery is a JSON POST like:
{ "event": "form_submitted", "formId": "…", "submissionId": "…", "ipAddress": "…", "formData": { "field_id": "value" }, "formatted": { "field_label": "value" }}formData contains the raw field values; formatted is a human-friendly rendering.
Authentication
Section titled “Authentication”Two ways to authenticate deliveries, so your endpoint knows the request is genuine.
1. HMAC signature
Section titled “1. HMAC signature”Set a secret on the webhook. Every delivery then includes:
X-Webhook-Signature: HMAC-SHA256(request-body, secret) (hex)Verify on your side by recomputing HMAC-SHA256(raw_body, secret) and comparing with the header.
2. Static token (Header Auth)
Section titled “2. Static token (Header Auth)”Set a static token on the webhook. It is sent in a header (default X-Form-Token). Your endpoint checks the header value. Tokens are only sent over HTTPS — the webhook URL must use https://.
Slack & Discord
Section titled “Slack & Discord”Pasting a Slack or Discord webhook URL automatically formats the payload for that service.
Delivery & retries
Section titled “Delivery & retries”Deliveries are retried up to 3 times with exponential backoff. Every attempt is logged (status, response, error), and you can optionally receive email notifications on success/failure.
Example: n8n
Section titled “Example: n8n”- Static token: use the n8n Webhook node with Authentication = Header Auth, header
X-Form-Token= your token. - HMAC: use a Webhook node with Authentication = None and verify
X-Webhook-Signaturein a Code node (recompute HMAC over the raw body).
