Disclosure: I build Formgong. Our WordPress plugin went live in the official directory on 13 October 2026, so part of this post is about it. Everything I say about the other plugins comes from their own pages and source code, checked the same day.
The search "wordpress contact form block" mixes two different blocks.
On WordPress.com, the block you get from the inserter is Jetpack's Form block. The WordPress.com support page (last reviewed on 14 August 2026) says to search for "form" and pick a layout: Contact, RSVP, Registration, Appointment, Feedback, or Multistep. Responses are collected under Jetpack → Forms. If you don't see the block, the same page says you may be on a WordPress.org site, and you need to install the free Jetpack plugin.
That's a good answer when you want the replies inside WordPress.
It's a bad answer when the thing that fails is your host's mail.
Where the notification email comes from
On a self-hosted site, every block I looked at ends in the same function. I checked each one on 13 October 2026:
-
Jetpack Forms. In the Jetpack repo on GitHub (trunk),
class-feedback-email-renderer.phpwraps core\wp_mail()to send the notification. -
Contact Form Block (Jordy Meow, version 1.1.1). In the plugin's
classes/core.php, the default recipient isget_option( 'admin_email' ), and the message goes out withwp_mail( $form['to'], ... ). - Flinkform (version 1.15.0). Its directory page says notifications are "Sent through your site's standard WordPress mail (wp_mail)".
So if wp_mail() on your host doesn't deliver, swapping one of these blocks for another changes nothing. You get a new form that fails the same way. Jetpack and Flinkform keep a copy of each submission in WordPress, so the lead isn't lost, but nobody gets an email about it.
A thank-you line under the button is not proof. Send one test from the live page and read the inbox.
Two directory plugins that show up for the same search
I did not install these. The facts below are from their directory pages and the WordPress.org plugin API on 13 October 2026.
- Contact Form Block, version 1.1.1, emails the site admin by default. Its page says a honeypot and a signed timestamp are on by default, and the 1.1.1 changelog (dated 2026/10/10) says posts sent directly to the site or in under 3 seconds are rejected. It says it loads no JS or CSS files unless you turn on reCAPTCHA. The API lists 600 active installations.
-
Flinkform, version 1.15.0, stores submissions in its own database table and emails you through
wp_mail. It offers conditional logic and multi-step forms in the free plugin, and says it ships under 15 KB of gzipped frontend JavaScript. That size is their claim; I didn't measure it. The API lists 20 active installations.
If your host's mail works, either is a reasonable pick. If you need conditional rules that you write yourself, Flinkform has them for free. Pair it with an SMTP plugin if your host's mail is the weak spot.
What the Formgong block does instead

The Aula template on a published page, Storefront theme.
Formgong is a third option, and a narrow one: no form builder, and no submissions stored in WordPress.
The plugin adds a block called Formgong form (formgong/form) and a shortcode. The block has a template picker in the sidebar. The shortcode looks like this:
[formgong]
[formgong template="aula"]
[formgong product="1"]
The form is a plain HTML form. The visitor's browser posts it straight to https://formgong.com/submit, and Formgong sends the notification. The plugin's PHP never calls wp_mail(). I grepped the 1.0.1 source to be sure. The only request the plugin makes from your server is the admin's "Send a test submission" button, and that goes through wp_safe_remote_post().
Stripped down, the default form renders like this:
<form class="formgong-form formgong-skin-plain" action="https://formgong.com/submit" method="post">
<h2>Contact us</h2>
<input type="hidden" name="access_key" value="YOUR-ACCESS-KEY">
<input type="hidden" name="_lang" value="en">
<input type="hidden" name="_page_url" value="https://example.com/contact/">
<label>Name <input type="text" 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 class="formgong-trap" aria-hidden="true"><label>Leave this field empty<input type="text" name="botcheck" tabindex="-1" autocomplete="off"></label></div>
<button type="submit">Send</button>
</form>
About that markup:
- The access key is public. Anyone can submit with it, and it can't open the inbox. You paste it under Settings → Formgong.
-
botcheckis the spam honeypot. It is hidden from visitors and should stay empty. -
_page_urlis scheme, host and path only. The plugin drops the query string on purpose, because on a WooCommerce order page it can hold the order key. With the default referrer policy, a cross-origin post often carries only the site's origin as the referrer, so this field is what records the real page.
The bundled catalog has 55 templates: 22 website templates, 7 starter layouts, 1 NPS survey and 25 industry forms (clinic appointment, insurance quote, returns, RSVP and so on). The slug plain forces the built-in contact form above. Labels follow the site language in 12 languages, and anything else falls back to English.
The test button tells you when the key is wrong

Settings → Formgong: the key, the template and the redirects.
The "Send a test submission" button posts a fixed message from plugin-test@example.com and shows Formgong's answer as an admin notice. A typo in the key doesn't pass quietly. I sent an unknown key to the live endpoint on 13 October 2026, and it answered HTTP 404 with:
{"success":false,"code":"unknown_access_key","message":"That access key does not exist."}
The plugin shows that as "Formgong did not accept the test (unknown_access_key): That access key does not exist." The test does not finish the connect wizard in the Formgong dashboard. A real submission from the public page does that.
WooCommerce
On a store, the same plugin can add two optional forms:
- a question on the product page, sent with the product name, SKU and URL;
- a question on the customer's order page, sent with the order number. It only shows to a user who passes
current_user_can( 'view_order', $order_id ), and not on the confirmation page right after checkout.
Checkout, payments and WooCommerce's order emails stay in WooCommerce. The plugin doesn't touch them.
What the free plan covers, and what's missing
From our plan limits in code and the live pricing page, on 13 October 2026:
- 300 submissions a month, unlimited forms.
- Every submission emailed to one address. Telegram is instant on every plan.
- One webhook per form, 30-day retention.
- No auto-reply to the visitor on Free.
The site says the data stays in the EU, outside your WordPress database.
Now the limits. The plugin's forms have no file fields. Its forms don't show Cloudflare Turnstile either, so if Turnstile is on for that form in the Formgong dashboard, every submission is rejected with turnstile_missing. Turn it off for that form. The honeypot and Formgong's own spam checks still run. Some industry templates show a field only after a certain answer (the clinic form asks for a child's name only when the visit is for a child), but you can't write your own rules in WordPress, and there's no card payment. If you need those, stay with a builder.
Install
In WordPress, open Plugins → Add New, search for "Formgong", click Install Now, then Activate. The directory page is https://wordpress.org/plugins/formgong/. It went live on 13 October 2026, so it is brand new.
If your site can't reach the directory, download https://formgong.com/downloads/formgong-wordpress.zip and upload it under Plugins → Add New → Upload Plugin.
Then open Settings → Formgong, paste the key, click Send a test submission, and add the block. Setup notes, including the full template list: https://formgong.com/en/docs/wordpress/?ref=devto
If the form you already have is Contact Form 7 and it works, don't rebuild it just to reach Telegram. Send the form you have to a webhook instead. The CF7 to Webhook plugin can post it to a Formgong inbound URL, and Free allows three of those per form.
Tell me what's missing
If you run a WordPress site or build them for clients: what annoys you most about contact forms today, and what would make you switch to a plugin like this? Write it in the comments. I read every one, and the next version is shaped by them.
Top comments (0)