Comparison

Formspree vs EmailJS

Formgong team ·

Formspree stores the form post and emails you. EmailJS sends a template from the browser through an email account you connect. They are not the same product. This page uses their own pricing and docs from 6 October 2026. We build Formgong, so it is a third column, and the weak spots are listed too.

Short answer: Pick Formspree when you want a saved inbox and no JavaScript, and 50 submissions a month is enough. Pick EmailJS when the mail must leave from your own email service at once, and you can live with a public key. Pick Formgong when you want Telegram on the free plan and EU storage, and a next-morning email digest is acceptable.

Prices and limits, checked 6 October 2026

Formspree numbers are from formspree.io/plans. EmailJS numbers are from emailjs.com/pricing. Formgong numbers are from the product code, not from a sales page. Yearly EmailJS prices are not quoted here. The page shows a yearly toggle marked 20% off, and the monthly prices below.

Public pricing and documentation pages, as of Oct 2026. Checked 06.10.2026.
FormspreeEmailJSFormgong (ours)
What it isA form backend. The form posts to their URL. They store the submission and email you.A browser email relay. The page calls their API. They send a template through an email service you connect.A form backend. The form posts to one URL. Inbox, Telegram, and email.
Free plan$0. 50 submissions a month. 30-day archive. 2 linked emails. File uploads 0 GB.$0. 200 requests a month. 2 templates. Requests up to 50 KB. Contact list up to 500. Email history kept 7 days.$0. 300 submissions a month. Unlimited forms. 1 recipient. Kept 30 days.
Cheapest paid plan (as of Oct 2026)Personal: $15 a month, or $120 a year ($10 a month billed annually). 200 submissions a month.Personal: $9 a month. 2,000 requests. 6 templates. Domain allowlist. Attachments up to 500 KB.Pro, listed at $9 a month or $86 a year. 5,000 submissions a month.
Larger plansProfessional $30 a month or $240 a year, 2,000 a month, 2 team members. Business $90 a month or $720 a year, 20,000 a month.Professional $15 a month, 5,000 requests in the comparison table, attachments up to 2 MB, 3 seats. Business $40 a month, 25,000 requests, attachments up to 30 MB.Business, listed at $15 a month or $144 a year. 25,000 submissions a month.
JavaScriptNot required. Ajax works on every plan if the request asks for JSON.Required. sendForm is limited to 1 request per second.Not required. fetch is optional.
When the limit is reachedThe form still accepts posts. They are saved without notification emails or plugins. You reprocess them from the Over Limit folder. Their help page was updated 30 September 2026.Further requests are dropped. No overage fee. Warning emails at 80%, 95%, and 100% of the quota.A 20% grace still delivers. Then submissions are held and not sent, up to one more monthly cap. After that, new posts are refused.
Email timingNotification email is part of the product. This page does not quote a delay.The email goes out when the request succeeds, through the service you connected.Free: one digest at 08:00 the next morning, for the previous day, to one address. Pro and Business: each submission.
TelegramNot on the plans table. Their docs list a Telegram plugin. The plugins page returned HTTP 405 on 06.10.2026, so this page does not name a plan for it.Not listed on the pricing page.Every plan, including Free. It arrives at once.
Data locationPrivacy policy: the United States and any other country where Formspree operates.Privacy policy, modified 8 September 2026: primary processing in the United States, stored on AWS. Standard clauses for Europe and the UK.EU (Cloudflare D1, EU jurisdiction).

The EmailJS plan cards also show higher request amounts, including 10,000 on Professional and several steps on Business. The fetch did not show a separate price next to each of those amounts, so they are not quoted here. The comparison table on the same page lists 200, 2,000, 5,000, and 25,000.

A form inbox is not a browser email relay

Formspree is a place the form posts to. You put their URL in action. They keep the submission, filter spam, and email you. The plans page includes basic spam filtering, reCAPTCHA, and restrict-to-domain on Free. A custom thank-you page starts on Personal. Autoresponses start on Professional.

EmailJS does not store a form inbox in that sense. You connect an email service, write a template, and call emailjs.sendForm from the page. Their introduction says no server is required. The public key sits in the JavaScript. Their FAQ says someone who copies the key can send only your templates with your content, not a custom email of their own. They can still burn the monthly quota, and template variables can carry the form text. Allowlist and reCAPTCHA are optional. The allowlist is not on Free. Over the cap, extra requests are dropped, so a busy public key can silence the form until the month resets.

That is the whole choice. Formspree keeps the lead if the email is missed, for 30 days on Free. EmailJS keeps email history for 7 days on Free and 30 days on the paid plans. If the request fails, EmailJS has no second copy unless you added one.

A form can also skip both. The methods are compared in form without a backend.

The same form, wired both ways

One form, three receivers. Replace the ids. Formspree needs no script. EmailJS needs the library and a template whose recipient you set in the dashboard, not in the page. Formgong needs the public access key and an empty botcheck field.

Do not put an email API secret in any of these snippets. The Formspree form id and the EmailJS public key are meant to be public. They are still quota. The Formgong key can submit. It cannot read the inbox.

Field name attributes are what get sent. An id alone is not. The plain HTML version of this post is on the HTML contact form page. The fetch version is on the JavaScript contact form page.

HTML
<form action="https://formspree.io/f/your_form_id" method="POST">
  <label>Name <input name="name" autocomplete="name" required></label>
  <label>Email <input type="email" name="email" autocomplete="email" required></label>
  <label>Message <textarea name="message" required></textarea></label>
  <button type="submit">Send</button>
</form>

EmailJS, from the browser. The template locks the recipient.

EmailJS from the browser

Add the EmailJS library the way their install page describes. Then call sendForm with the service id, the template id, the form, and the public key. Handle the rejection. A failed request is a lost lead unless something else stored it. Their sendForm page documents a limit of one request per second.

HTML
<form id="contact">
  <label>Name <input name="name" autocomplete="name" required></label>
  <label>Email <input type="email" name="email" autocomplete="email" required></label>
  <label>Message <textarea name="message" required></textarea></label>
  <button type="submit">Send</button>
</form>
<script>
  var form = document.getElementById("contact");
  var button = form.querySelector("button");
  form.addEventListener("submit", function (event) {
    event.preventDefault();
    button.disabled = true;
    emailjs.sendForm("YOUR_SERVICE_ID", "YOUR_TEMPLATE_ID", "#contact", {
      publicKey: "YOUR_PUBLIC_KEY"
    }).then(function () {
      form.reset();
    }).catch(function () {
      button.disabled = false;
    });
  });
</script>

Formgong, no script required

The form posts on its own. On Free, Telegram is instant and email waits for the digest. There is no auto-reply on Free.

HTML
<form action="https://formgong.com/submit" method="POST">
  <input type="hidden" name="access_key" value="fk_your_access_key">
  <input type="hidden" name="_lang" value="en">
  <label>Name <input name="name" autocomplete="name" required></label>
  <label>Email <input type="email" name="email" autocomplete="email" required></label>
  <label>Message <textarea name="message" required></textarea></label>
  <div aria-hidden="true" style="position:absolute;inset-inline-start:0;top:0;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)">
    <label>Leave empty <input name="botcheck" tabindex="-1" autocomplete="off"></label>
  </div>
  <button type="submit">Send</button>
</form>

Who should pick which

  • Pick Formspree when the form must work with no JavaScript, you want spam filtering and a domain lock on the free plan, and 50 submissions a month is enough. It is also the one that keeps over-limit submissions for later, instead of dropping them.
  • Pick EmailJS when the message must come from your own mailbox, with your template, as soon as the visitor sends. The free plan allows 200 requests. Paid starts at $9 a month. You do not get a form inbox, and a copied key can use up the quota.
  • Pick neither when you already run a server and the submit must write to your database. A small function with the secret kept on the server is the fit. You then own spam, storage, and retries.
  • Pick Formgong when you want Telegram on the free plan, storage in the EU, and 300 submissions a month, and you can wait until 08:00 the next morning for the email. It is the weaker choice if you need Formspree’s plugin list, a custom sending domain, or one email per lead without paying.

Head-to-head pages that put Formgong first, rather than in a third column: Formgong vs Formspree. A longer list of substitutes is on Formspree alternatives and EmailJS alternatives.

Questions

Is EmailJS the same as Formspree?

No. Formspree is a form backend: it stores the submission and emails you. EmailJS is a browser relay: it sends a template through an email service you connect. EmailJS does not give you the same inbox.

Which has the bigger free plan, Formspree or EmailJS?

EmailJS allows 200 requests a month. Formspree allows 50 submissions a month. A request is not a stored submission. EmailJS drops extra requests. Formspree saves extra submissions without emailing them.

Can I put the EmailJS public key in the page?

Their FAQ says a copied key can send only your templates with your content, not a custom email. It can still spend the monthly quota. The domain allowlist is not on the free plan. Turn it on when you upgrade, and do not put a private email API secret in the page.

Where is the data stored?

Formspree’s privacy policy says the United States and any other country where they operate. EmailJS’s privacy policy, modified 8 September 2026, says primary processing in the United States on AWS. Formgong stores submissions in the EU.

Sources

Checked on 06.10.2026 against these public pages: Formspree plans, Formspree: over limit submissions, Formspree privacy policy, EmailJS pricing, EmailJS: how it works, EmailJS sendForm, EmailJS: public key, EmailJS: spam, EmailJS privacy policy, Formgong pricing, Formgong data and location.

← Formgong