Developers

Build on top of zyntForms

Connect your forms to any tool, trigger automations on every response, embed reviews on your site, and query your data via API. Everything you need is here.

WebhooksPro

Get an HTTP POST to your server the moment a response is submitted. Configure the webhook URL per form under Form Settings → Integrations.

Payload

POST https://your-server.com/webhook
Content-Type: application/json

{
  "event": "response.created",
  "formId": "clxxx...",
  "formTitle": "Event Registration",
  "submittedAt": "2026-06-20T10:34:00.000Z",
  "response": {
    "id": "res_abc123",
    "answers": [
      { "fieldId": "field_1", "label": "Full name",      "value": "Alice Nakato" },
      { "fieldId": "field_2", "label": "Email address",  "value": "[email protected]" },
      { "fieldId": "field_3", "label": "Ticket type",    "value": "VIP — $75" }
    ]
  }
}

Verifying the signature

Each request includes an X-ZyntForms-Signature header — an HMAC-SHA256 digest of the raw body using your webhook secret. Verify it before processing.

// Node.js / Edge example
import { createHmac } from 'crypto'

const sig = req.headers['x-zyntforms-signature']
const expected = createHmac('sha256', process.env.WEBHOOK_SECRET!)
  .update(rawBody)
  .digest('hex')

if (sig !== expected) {
  return new Response('Forbidden', { status: 403 })
}
Pricing: Each webhook delivery costs 0.1 credits ($0.01). Failed deliveries are retried up to 3 times with exponential back-off.

Slack notificationsPro

Paste a Slack Incoming Webhook URL in Form Settings → Integrations → Slack webhook and your team will receive a message for every new response.

Setting up in Slack

  1. Go to api.slack.com/apps and create a new app (or use an existing one).
  2. Enable Incoming Webhooks and click Add New Webhook to Workspace.
  3. Choose the channel where you want response notifications.
  4. Copy the webhook URL (starts with https://hooks.slack.com/) and paste it into your form settings.
Note: Slack notifications count as integrations. Each delivery costs 0.001 credits.

Embed reviews widget

Display verified customer reviews collected via your zyntForms forms on any external website — your landing page, marketing site, or app.

Drop-in script

<!-- Add to your <head> or before </body> -->
<script
  src="https://zyntforms.com/embed/reviews.js"
  data-form-id="YOUR_FORM_ID"
  data-theme="light"
  async
></script>

<!-- Place where you want reviews to appear -->
<div id="zyntforms-reviews"></div>

JSON endpoint

If you want to fetch review data yourself and render it your own way:

GET /api/embed/reviews/data?formId=YOUR_FORM_ID

// Response
{
  "count": 42,
  "averageRating": 4.8,
  "reviews": [
    {
      "id": "res_abc",
      "rating": 5,
      "text": "Incredibly smooth experience.",
      "submittedAt": "2026-06-15T08:12:00.000Z"
    }
  ]
}

The endpoint is public and CORS-enabled. Rate-limited to 60 requests per minute per IP.

REST API

Read your forms and responses programmatically with a personal API key — available on every plan, including Free. Create a key under Settings → API.

Live endpoints

  • GET /api/v1/forms — list your forms
  • GET /api/v1/forms/:formCode — one form’s full details
  • DELETE /api/v1/forms/:formCode — soft-delete a form
  • GET /api/v1/forms/:formCode/responses — a form’s responses (?limit=, max 500)
  • GET /api/v1/user/me — your account info

Authenticate every request with Authorization: Bearer zf_live_....

MCP server

Point Claude Desktop, Claude Code, or any other MCP client at zyntForms and read your forms and responses straight from a conversation — no code required. Uses the same API key as the REST API above.

GET/POST https://zyntforms.com/api/mcp
Authorization: Bearer zf_live_...

Full setup instructions (a ready-to-paste client config) are under Settings → MCP once you're logged in.

Ready to start building?

Webhooks, Slack, and the embed widget are available today on the Pro plan.