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 an email address to receive notifications on every submission. Pro users can also set up Slack, webhooks, and Zapier.
Learn about notifications →

Formkove protects your forms with rate limits and proprietary anti-spam mechanisms 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 custom fetch/AJAX script) as detailed in our framework guides.