KirokuForms

Connect Make to KirokuForms

Use Make (formerly Integromat) to automate workflows triggered by KirokuForms submissions, approvals, and rejections — no custom code required.

No Native Integration Needed

KirokuForms works with Make out of the box using the Webhooks and HTTP modules. No custom Make app is required.

Prerequisites

  • A Make account (free tier works for testing)
  • A KirokuForms account with at least one active form
  • A KirokuForms API key with appropriate scopes — generate one from the API Keys page:
    • submissions:read — read submission data
    • submissions:write — create/update submissions
    • hitl:create — approve or reject submissions

Option A: Receive Webhooks in Make

Use this approach when you want Make to react to events in KirokuForms (new submissions, approvals, rejections).

Step 1: Create a Webhook Module in Make

  1. In Make, create a new scenario.
  2. Add a Webhooks > Custom webhook module as the trigger.
  3. Click Add to create a new webhook and give it a name (e.g., "KirokuForms Submissions").
  4. Copy the generated webhook URL (it looks like https://hook.make.com/abc123...).

Step 2: Configure the Webhook in KirokuForms

  1. Go to your KirokuForms dashboard and select the form.
  2. Navigate to Settings > Webhooks.
  3. Click Add Webhook and paste the Make URL.
  4. Select the events you want to receive:
    • submission.created — new form submissions
    • decision.approved — approved submissions
    • decision.rejected — rejected submissions
  5. Optionally set a webhook secret for signature verification.
  6. Enable the webhook and save.

Step 3: Define the Data Structure

After saving, use the Test button in KirokuForms to send a sample event. Make auto-detects the structure. A submission.created event looks like this:

submission.created Webhook Payload
{
  "eventType": "submission.created",
  "timestamp": "2026-04-01T10:30:00Z",
  "data": {
    "formId": "frm_abc123xyz789",
    "submissionId": "sub_def456uvw012"
  }
}

Decision events add a data.decision object with the outcome:

decision.approved Webhook Payload
{
  "eventType": "decision.approved",
  "timestamp": "2026-04-01T11:00:00Z",
  "data": {
    "formId": "frm_abc123xyz789",
    "submissionId": "sub_def456uvw012",
    "decision": {
      "outcome": "approved",
      "taskId": "task_ghi789jkl012"
    }
  }
}

Step 4: Look Up the Submission Fields

Add an HTTP > Make a request module after the webhook to fetch the answer values by submission id:

  • URL: https://www.kirokuforms.com/api/v1/zapier/searches/find-submission?submissionId={{1.data.submissionId}}
  • Method: GET
  • Headers: Authorization: Bearer YOUR_API_KEY (scope submissions:read)
Look Up Submission — cURL equivalent
curl "https://www.kirokuforms.com/api/v1/zapier/searches/find-submission?submissionId=SUBMISSION_ID" \
     -H "Authorization: Bearer YOUR_API_KEY"

The response is a single-item array with the fields flattened onto each item:

Look Up Submission — Response
{
  "success": true,
  "data": [
    {
      "id": "sub_def456uvw012",
      "formId": "frm_abc123xyz789",
      "formName": "Contact Form",
      "createdAt": "2026-04-01T10:30:00Z",
      "name": "Arthur Dent",
      "email": "arthur.dent@example.com",
      "feedback_topic": "General Inquiry",
      "message": "What is the answer to life, the universe, and everything?"
    }
  ]
}

One endpoint, any API key

find-submission works with any KirokuForms API key that holds the submissions:read scope. The /zapier/ path segment is historical; the lookup is not limited to Zapier.

Step 5: Add Processing Modules

After the lookup, add the Make modules you need. Common choices:

  • Google Sheets: append the submission as a row
  • Slack: post a notification to a channel
  • Email: send a confirmation or notification
  • Airtable: create a record
  • HTTP: call any external API

Map the fields from the Step 4 response (for example data[].name, data[].email) to the inputs of your chosen module.

Option B: Call the KirokuForms API from Make

Use this approach when you want Make to push data into KirokuForms — for example, creating submissions from another source or approving/rejecting submissions programmatically.

Create a Submission

  1. Add an HTTP > Make a request module.
  2. Configure it:
    • URL: https://www.kirokuforms.com/api/v1/submissions
    • Method: POST
    • Headers:
      • Authorization: Bearer YOUR_API_KEY
      • Content-Type: application/json
      • Idempotency-Key: a unique value per request (prevents duplicates)
    • Body type: Raw / JSON
Create Submission — cURL equivalent
curl -X POST "https://www.kirokuforms.com/api/v1/submissions" \
     -H "Authorization: Bearer YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -H "Idempotency-Key: unique-request-id-123" \
     -d '{
           "formId": "YOUR_FORM_ID",
           "name": "Jane Doe",
           "email": "jane@example.com",
           "message": "Submitted via Make"
         }'

A successful response (201) looks like:

Create Submission — Response
{
  "success": true,
  "data": {
    "submissionId": "sub_xyz789abc456",
    "taskId": null,
    "timestamp": "2026-04-01T12:00:00Z"
  },
  "message": "Submission created"
}

Approve or Reject a Submission

Use the approve or reject endpoints to complete a decision workflow:

  • POST /api/v1/submissions/{submissionId}/approve
  • POST /api/v1/submissions/{submissionId}/reject
Approve Submission — cURL equivalent
curl -X POST "https://www.kirokuforms.com/api/v1/submissions/SUBMISSION_ID/approve" \
     -H "Authorization: Bearer YOUR_API_KEY" \
     -H "Content-Type: application/json"

Idempotency

Include an Idempotency-Key header on create requests. If Make retries the request (e.g., due to a timeout), KirokuForms returns the cached response instead of creating a duplicate. Keys expire after 24 hours.

Example Scenarios

1. New Submission to Google Sheets + Slack Notification

  1. Trigger: Webhooks > Custom webhook (KirokuForms submission.created)
  2. Module 2: HTTP > Make a request: GET find-submission with data.submissionId to read the fields
  3. Module 3: Google Sheets > Add a row, mapping data[].name, data[].email, data.submissionId
  4. Module 4: Slack > Send a message to #submissions

2. CRM Lead Creates a KirokuForms Submission

  1. Trigger: HubSpot/Salesforce > New contact
  2. Module 2: HTTP > Make a request — POST to /api/v1/submissions with contact data

3. Auto-Approve Submissions Matching a Filter

  1. Trigger: Webhooks > Custom webhook (KirokuForms submission.created)
  2. Module 2: HTTP > Make a request: GET find-submission to read the fields
  3. Filter: Only continue if data[].feedback_topic equals "General Inquiry"
  4. Module 4: HTTP > Make a request: POST to /api/v1/submissions/{submissionId}/approve

Troubleshooting

  • Make webhook not receiving data: Verify the webhook URL is correct in KirokuForms and that the webhook is enabled. Use the Test button in KirokuForms to send a sample event.
  • 401 Unauthorized on API calls: Check that your API key is valid and has the required scopes. API keys use Bearer authentication in the Authorization header.
  • 422 Validation Error: The submission payload does not match the form's expected fields. Check the details array in the error response for specific field errors.
  • Duplicate submissions: Always use an Idempotency-Key header when creating submissions. This ensures retries are safe.

Related Resources