<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Forminit</title>
    <description>The latest articles on DEV Community by Forminit (@wssn).</description>
    <link>https://dev.to/wssn</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F172396%2F44d89e9c-0610-4bb7-9a39-0a977e091830.png</url>
      <title>DEV Community: Forminit</title>
      <link>https://dev.to/wssn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/wssn"/>
    <language>en</language>
    <item>
      <title>The Best Form Backend Services in 2026</title>
      <dc:creator>Forminit</dc:creator>
      <pubDate>Sat, 30 May 2026 11:25:04 +0000</pubDate>
      <link>https://dev.to/wssn/the-best-form-backend-services-in-2026-540a</link>
      <guid>https://dev.to/wssn/the-best-form-backend-services-in-2026-540a</guid>
      <description>&lt;p&gt;If you build forms but don't want to run your own server to handle them, a &lt;strong&gt;form backend&lt;/strong&gt; does the heavy lifting after someone hits submit: receiving data, validating it, storing it, sending notifications, handling file uploads, and firing off integrations. You write the markup, the backend gives you an API to call.&lt;/p&gt;

&lt;p&gt;I went through the major options for 2026 to see what each one actually does well, and where each one bites you. Here's the rundown.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forminit&lt;/strong&gt; for typed validation, file uploads, an optional SDK, and attribution tracking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formspree&lt;/strong&gt; for a dead-simple POST endpoint, nothing fancy.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FormSubmit / EmailJS&lt;/strong&gt; if all you want is email forwarding and no storage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Netlify Forms&lt;/strong&gt; for zero-config, but only if you live on Netlify.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Basin&lt;/strong&gt; for budget storage plus email, no extras.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Quick comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Forminit&lt;/th&gt;
&lt;th&gt;Formspree&lt;/th&gt;
&lt;th&gt;FormSubmit&lt;/th&gt;
&lt;th&gt;EmailJS&lt;/th&gt;
&lt;th&gt;Netlify Forms&lt;/th&gt;
&lt;th&gt;Basin&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Backend API&lt;/td&gt;
&lt;td&gt;Form backend&lt;/td&gt;
&lt;td&gt;Email forward&lt;/td&gt;
&lt;td&gt;Email send&lt;/td&gt;
&lt;td&gt;Platform forms&lt;/td&gt;
&lt;td&gt;Form backend&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Storage&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes (inbox)&lt;/td&gt;
&lt;td&gt;Yes (table)&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes (table)&lt;/td&gt;
&lt;td&gt;Yes (table)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Server validation&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Typed blocks&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;File uploads&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;25 MB&lt;/td&gt;
&lt;td&gt;10 MB&lt;/td&gt;
&lt;td&gt;~5 MB&lt;/td&gt;
&lt;td&gt;Email limit&lt;/td&gt;
&lt;td&gt;10 MB&lt;/td&gt;
&lt;td&gt;10 MB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;API key auth&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Template&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;SDK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Optional&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;JS lib&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Framework proxies&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Next, Nuxt&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Webhooks&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Paid&lt;/td&gt;
&lt;td&gt;Paid&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Paid&lt;/td&gt;
&lt;td&gt;Paid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;UTM capture&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Any host&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Netlify only&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Email hidden&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Starts at&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;$10/mo&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  1. Forminit
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://forminit.com" rel="noopener noreferrer"&gt;Forminit&lt;/a&gt; (formerly Getform.io) is a headless form backend built around a block-based data model. Rather than dumping everything into flat key-value pairs, each field is a typed block (text, email, phone, URL, date, rating, file, country) that gets validated on the server before anything is stored.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Real server-side validation.&lt;/strong&gt; Emails are checked against RFC 5322, phones against E.164, dates against ISO 8601, ratings constrained to 1 to 5, country codes to ISO 3166-1 alpha-2. Garbage gets rejected before it lands in your data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two auth modes.&lt;/strong&gt; Public mode (no key, good for static sites) and protected mode (key via &lt;code&gt;X-API-KEY&lt;/code&gt;, good for server-side proxies). Protected mode unlocks higher rate limits and blocks unauthorized submissions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optional SDK.&lt;/strong&gt; You can POST directly with plain &lt;code&gt;fetch&lt;/code&gt;, or use the JavaScript SDK if you want the convenience. It ships with ready-made proxy handlers for Next.js (&lt;code&gt;createForminitProxy&lt;/code&gt;) and Nuxt.js (&lt;code&gt;createForminitNuxtHandler&lt;/code&gt;) so your keys stay server-side.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generous file uploads.&lt;/strong&gt; 25 MB per submission across 50+ MIME types, with direct download links in the dashboard.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inbox-style dashboard.&lt;/strong&gt; Star, set status, leave notes, filter, and export to CSV.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Field-level form analytics.&lt;/strong&gt; Beyond submission counts, you get breakdowns at the field level: how people answer select, checkbox, and radio fields, so you can actually see what your audience is choosing rather than just how many submitted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Attribution out of the box.&lt;/strong&gt; Auto-captures UTM params, ad click IDs (Google, Meta, Microsoft, TikTok, X), referrer, and geo.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free (100 subs/mo, includes file uploads, 50 MB storage, and Zapier), Pro $19/mo (3,000), Business $49/mo (10,000). Annual billing knocks off two months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers who want typed validation, file uploads, field-level analytics, and an optional SDK, especially Next.js or Nuxt.js teams who want the proxy pattern.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Formspree
&lt;/h2&gt;

&lt;p&gt;Formspree has been a go-to since 2014. You POST to an endpoint, and that's basically it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt; trivial setup (&lt;code&gt;POST https://formspree.io/f/{formId}&lt;/code&gt;), submission storage with a basic dashboard, email notifications, a REST API for reading submissions, and a &lt;code&gt;@formspree/react&lt;/code&gt; package for form state.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weak spots:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No API key auth.&lt;/strong&gt; Every endpoint is public, so anyone who finds the URL can post to it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No typed validation.&lt;/strong&gt; Flat key-value pairs, no format checking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No dedicated SDK&lt;/strong&gt; beyond the React state helper, so no UTM capture, upload progress, or proxy handlers.&lt;/li&gt;
&lt;li&gt;Webhooks are paid-only, file uploads cap at 10 MB, and there's no attribution tracking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free (50 subs/mo), Starter $10/mo (100), Growth $30/mo (1,000).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; The simplest possible setup when you don't need validation, auth, or big uploads.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. FormSubmit.co
&lt;/h2&gt;

&lt;p&gt;Point your form's &lt;code&gt;action&lt;/code&gt; at &lt;code&gt;https://formsubmit.co/your@email.com&lt;/code&gt; and submissions land in your inbox. No account needed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt; zero setup, free with no obvious limits, plus basics like custom redirects, CC recipients, and auto-responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weak spots:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Your email sits in the HTML source.&lt;/strong&gt; Anyone can view-source it, and bots will scrape it for spam lists, which is a GDPR headache if you're in the EU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No storage.&lt;/strong&gt; No dashboard, search, or export. If the email never arrives, the data's gone.&lt;/li&gt;
&lt;li&gt;No file uploads, no validation, no webhooks, no API.&lt;/li&gt;
&lt;li&gt;It claims not to store data, but there's no DPA, audit, or compliance docs to back that up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Throwaway personal projects where email exposure and GDPR aren't concerns. I wouldn't ship it to production.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. EmailJS
&lt;/h2&gt;

&lt;p&gt;EmailJS sends form data as templated emails straight from the browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt; a template system with variables, fully client-side (no server), support for Gmail/Outlook/custom SMTP, and a generous free tier (200 emails/mo, 2 templates).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weak spots:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It's not really a form backend.&lt;/strong&gt; It's email delivery: no storage, no dashboard, no API.&lt;/li&gt;
&lt;li&gt;No file uploads beyond email attachments, no server-side validation, no webhooks.&lt;/li&gt;
&lt;li&gt;Your template and service IDs are visible in client code.&lt;/li&gt;
&lt;li&gt;Deliverability is hit-or-miss on free email accounts, so expect some spam-folder landings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free (200 emails/mo), Professional $15/mo (500).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Simple contact forms that only need an email notification.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Netlify Forms
&lt;/h2&gt;

&lt;p&gt;Built into Netlify hosting. Add a &lt;code&gt;netlify&lt;/code&gt; attribute to your form and it's detected automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt; zero config if you're already on Netlify, built-in Akismet spam filtering, storage in the Netlify dashboard, and a free tier bundled with hosting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weak spots:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hard platform lock-in.&lt;/strong&gt; Move to Vercel or Cloudflare and your forms simply break.&lt;/li&gt;
&lt;li&gt;10 MB upload cap, no server-side validation, webhooks/API on paid plans only, no UTM tracking.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No SDK.&lt;/strong&gt; It's HTML-based, so no AJAX handling or upload progress, and the dashboard is bare-bones.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Free (100 subs/mo with hosting), Pro $19/mo for webhooks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Sites already on Netlify that just need a basic contact form.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Basin
&lt;/h2&gt;

&lt;p&gt;Basin sits between pure email forwarders and full backends. It stores submissions and sends notifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strengths:&lt;/strong&gt; simple POST setup, storage with a dashboard, spam filtering (honeypot plus reCAPTCHA), and email notifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weak spots:&lt;/strong&gt; no server-side validation, no auth modes (all endpoints public), no SDK, a 10 MB upload cap, paid-only webhooks, and no attribution tracking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; Premium $15/mo (1,000).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Budget forms needing storage plus email, nothing more.&lt;/p&gt;

&lt;h2&gt;
  
  
  So which one?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Forminit&lt;/strong&gt; is the most full-featured pick for developers building their own form UIs: validation, auth, 25 MB uploads, field-level analytics, an optional SDK, and attribution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formspree&lt;/strong&gt; for a quick POST endpoint for prototypes and low-volume forms.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FormSubmit&lt;/strong&gt; for a free email forwarder for personal projects; not for production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EmailJS&lt;/strong&gt; for email delivery with templates when you don't need a backend at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Netlify Forms&lt;/strong&gt; for zero-config if you've accepted the Netlify lock-in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Basin&lt;/strong&gt; for cheap storage plus email without the extras.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;What are you using for form handling in 2026? Curious whether anyone's found a setup they actually love. Drop it in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>forms</category>
      <category>api</category>
    </item>
    <item>
      <title>Handle Static Webflow Forms</title>
      <dc:creator>Forminit</dc:creator>
      <pubDate>Sat, 01 Jun 2019 21:26:39 +0000</pubDate>
      <link>https://dev.to/wssn/handle-static-webflow-forms-fbe</link>
      <guid>https://dev.to/wssn/handle-static-webflow-forms-fbe</guid>
      <description>&lt;p&gt;&lt;a href="https://webflow.com" rel="noopener noreferrer"&gt;Webflow&lt;/a&gt; is a web-based drag and drop tool for building responsive websites. There are hundreds of professionally-designed templates. You can customize your selected template so that it’s perfect for your brand and goals. &lt;a href="https://webflow.com/feature/changes-to-forms" rel="noopener noreferrer"&gt;Webflow&lt;/a&gt; recently stopped supporting form handling for exported sites.&lt;br&gt;
You can easily handle your forms, receive files, integrate with over 1000 apps (Slack, Google Spreadsheet, E-mail, Google Docs and more) via &lt;a href="https://forminit.com" rel="noopener noreferrer"&gt;Forminit&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;Set up your Webflow form with 3 easy steps:&lt;br&gt;
1- Create your first form in &lt;a href="https://forminit.com" rel="noopener noreferrer"&gt;Forminit&lt;/a&gt; and get your form endpoint url.&lt;/p&gt;

&lt;p&gt;2- Choose form element in Webflow and select its settings. Paste your Forminit endpoint into Action input and set your method as POST. 3- Publish your website and send your first submission. Voilà&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/NNvwKW2HFP4"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Getform features:&lt;br&gt;
&lt;a href="https://forminit.com/docs/file-upload/" rel="noopener noreferrer"&gt;File upload support&lt;/a&gt;,&lt;br&gt;
CSV Export,&lt;br&gt;
&lt;a href="https://forminit.com/docs/email-notifications/" rel="noopener noreferrer"&gt;E-mail notification&lt;/a&gt;,&lt;br&gt;
&lt;a href="https://forminit.com/docs/webhooks/" rel="noopener noreferrer"&gt;Webhook support&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webflow</category>
      <category>form</category>
      <category>html</category>
      <category>serverless</category>
    </item>
  </channel>
</rss>
