Skip to content

Creating your first form

Formkove gives you a hosted submission endpoint in seconds: no form builder, no drag-and-drop. You bring your own frontend; Formkove handles what comes after the POST.

From the Formkove dashboard, click New form. Give it a name. You now have a live endpoint.

Your endpoint URL follows this pattern:

https://app.formkove.com/api/forms/{YOUR_FORM_ID}/submissions

Point your HTML form at your Formkove endpoint:

<form action="https://app.formkove.com/api/forms/form_abc123/submissions" method="POST">
<input name="email" type="email" required />
<textarea name="message"></textarea>
<button type="submit">Send</button>
</form>

Works with plain HTML, React, Vue, Next.js, or any framework that speaks HTTP.
See framework examples →

You can include special fields to customize how visitor data is processed:

Field Description
email / replyto / reply_to / reply-to / _replyto Visitor’s email address, set as the Reply-To header in notification emails.
YOUR_HONEYPOT_NAME A custom honeypot field name configured in your form’s dashboard settings. Add a matching input hidden via CSS (e.g. <input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off">) to trap bots.

[!NOTE]

  • Redirects: Custom redirects must be appended as a query parameter (e.g. ?redirect=https://yoursite.com/thank-you) to your form’s action URL, and the target domain must be allowlisted in the form’s Allowed Origins & Redirects dashboard settings. Passing redirect inside the form body as an input field is not supported.
  • Email Subjects: Notification email subjects are automatically formatted as New Submission for "[Form Name]" and cannot be overridden by form fields.
<div class="flex items-center min-h-screen bg-gray-50">
<div class="container mx-auto">
<div class="max-w-md mx-auto bg-white p-6 rounded-md shadow-sm">
<h1 class="text-2xl font-semibold text-gray-700 mb-4">Contact Us</h1>
<!-- Note the custom redirect query parameter in the action URL -->
<form action="https://app.formkove.com/api/forms/YOUR_FORM_ID/submissions?redirect=https://yoursite.com/thank-you" method="POST">
<!-- Custom honeypot field (assumes '_gotcha' is configured in dashboard Settings) -->
<input type="text" name="_gotcha" style="display:none" tabindex="-1" autocomplete="off">
<div class="mb-4">
<label for="name" class="block text-sm text-gray-600 mb-1">Full Name</label>
<input type="text" name="name" id="name" required class="w-full px-3 py-2 border border-gray-300 rounded-md">
</div>
<div class="mb-4">
<label for="email" class="block text-sm text-gray-600 mb-1">Email</label>
<input type="email" name="email" id="email" required class="w-full px-3 py-2 border border-gray-300 rounded-md">
</div>
<div class="mb-4">
<label for="message" class="block text-sm text-gray-600 mb-1">Message</label>
<textarea name="message" id="message" rows="4" required class="w-full px-3 py-2 border border-gray-300 rounded-md"></textarea>
</div>
<button type="submit" class="w-full py-2 px-4 bg-indigo-600 text-white rounded-md">Send Message</button>
</form>
</div>
</div>
</div>

From the form settings in your dashboard, add the email addresses that should receive notifications. Each address gets a verification email and starts receiving notifications once it’s confirmed. Pro and Agency can also send submissions to Slack, Discord, Google Sheets, and webhooks (including Zapier, Make and n8n).
See all integrations →

Every form gets rate limits, request size limits and the AI spam filter out of the box. For added protection, you can turn on custom honeypot and add your own Cloudflare Turnstile keys.
Learn about spam protection →

Your form is ready to receive submissions as soon as it’s created. Integrate the endpoint URL into your frontend code (e.g. via HTML <form action="..."> or a fetch/AJAX script) as detailed in our framework guides.

Submitting with JavaScript (fetch, React, Vue, etc.)? Add your site’s origin under Settings → Allowed Origins & Redirects first, or the browser will block the response. See Allowed Origins.