HTML Forms & Contact Form for WordPress – Narrative Forms

HTML Forms & Contact Form for WordPress – Narrative Forms

Details
View on WordPress

Narrative Forms is the HTML-first WordPress form plugin. Instead of dragging boxes around a builder, you write plain, semantic HTML — or paste it straight from an AI like ChatGPT, Claude, or Gemini — and Narrative Forms turns it into a real form with fast AJAX submissions and stored, exportable data. Any input with a name attribute is saved. That is the whole idea: forms are just HTML, so there is no field-type registry, no lock-in, and no ceiling on what your form can be. It stays lightweight, loads its assets only on pages that actually contain a form, and is built to scale to millions of submissions. If you want a clean, fast, developer-friendly contact form or custom HTML form without the bloat of a heavy form builder, this is it.

Why Narrative Forms is different

Most WordPress form plugins lock you into a drag-and-drop builder and a fixed list of field types. If the builder does not offer a field, you cannot have it. Narrative Forms has no field registry — a field is simply an HTML element with a name. Need a multi-step layout, an unusual input, a custom widget, or markup your designer already wrote? Paste it in and it works. You keep full control of the markup, the classes, and the look. Drag-and-drop made sense years ago; today you describe what you want or paste what you already have. No builder, no bloat, and no fighting a clunky UI to recreate a form you can already picture.

Bring your own AI

Because forms are just HTML, any large language model can write one for you. Ask ChatGPT, Claude, Gemini, or your favourite AI for “a contact form with a name, email, a dropdown, and a file upload,” copy the HTML it returns, and paste it into Narrative Forms. There is no proprietary field format to satisfy, so whatever the AI generates simply works. The free plugin is completely AI-agnostic: bring your own model, paste the markup, ship the form. (Prefer it built in? AI-assisted generation is on the Narrative Forms Pro roadmap — for now, bring any model you like.)

Everything in the free plugin

The free plugin is a complete forms solution, not a teaser. You get:

  • Fast AJAX submissions. Forms submit without a page reload, with a graceful no-JavaScript fallback so nothing ever breaks for your visitors.
  • A built-in editor. One-click field buttons generate the markup for common fields, and a live preview shows the form as you type — hand-write HTML or scaffold it fast.
  • Email notifications. Send clean, readable submission emails to yourself or any address, in plain text or HTML, with tidy per-field formatting.
  • Webhook actions. Send form data to any URL on submission — connect submissions to Zapier, Make, a CRM, or your own endpoint without writing code. Add multiple actions per form.
  • File uploads. Accept file upload fields with a maximum file size and a maximum number of files per field; uploads are stored safely in the WordPress media folder.
  • Stored submissions and CSV export. Optionally keep every submission in a fast, indexed database table, then export to CSV in batches that stream without timing out, even on large datasets.
  • Layered anti-spam. Stop bots with a honeypot, a time trap, a same-origin referrer check, a link-count limit, an optional per-IP rate limit, and optional Cloudflare Turnstile — with no third-party tracking added.
  • Custom messages and redirects. Set your own success and error messages, redirect after submit, and use template tags so the form behaves exactly how you want.
  • Clean, optional styling. A calm, minimal stylesheet you can keep or drop, with semantic wrapper classes so your theme stays in charge of the look.

Every output is escaped and every input is sanitised, following WordPress coding and security standards.

Developer-friendly by design

Narrative Forms is built for people who like control. Pre-fill fields with template variables such as {{ user.email }}, {{ get.utm_source | default:'direct' }}, or {{ site.name }}, using providers like user, URL parameters, post, site, and date — each with filters such as default, upper, lower, date, and truncate. On the front end, public JavaScript events (nrfm-submit, nrfm-submitted, nrfm-success, nrfm-error) let you push conversions to Google Tag Manager or your dataLayer, show a toast, or run any custom logic with a tiny nrfm.on() helper. Filters and actions at every decision point — form HTML, validation, webhook request arguments, and more — let you extend behaviour without forking the plugin.

Built to scale to millions

Narrative Forms is engineered for sites that collect a lot of data. Submissions live in a dedicated, indexed database table — not bloated post meta — so lookups stay fast as the table grows. Repeated reads are cached, queries are paginated and bounded, CSV export streams in batches, and heavy work can run in the background so the front end stays quick. Whether you collect ten submissions a month or millions over time, the plugin is designed to stay lightweight and responsive.

Who it is for

  • Developers and agencies who want a contact form or custom HTML form they fully control, without a heavy builder.
  • Anyone who uses an AI assistant — generate the HTML, paste it, and you are done.
  • Site owners who need reliable form submissions, email notifications, file uploads, and CSV export without the bloat.
  • Teams building directories, job boards, testimonial walls, or event listings from form data (see Frontend Submissions below).

Common uses include contact forms, lead capture, support requests, job applications, RSVPs, surveys, file submissions, registrations, and multi-field custom forms that a drag-and-drop builder cannot easily produce.

Upgrade to Narrative Forms Pro

Narrative Forms Pro keeps the same lightweight, HTML-first core and adds the power features that busy sites and agencies need:

  • Conditional logic — show or hide fields, and trigger actions, based on what the visitor enters.
  • Save and resume — let visitors save a long form as a draft and finish it later from where they left off.
  • Submission notifications — unread-submission badges in the admin so a new entry never slips by.
  • Require login — restrict any form to logged-in users only.
  • Schedule windows — open and close a form automatically on the date and time you set.
  • Advanced webhooks — reusable webhook templates, automatic retries with backoff, and a delivery log for every call.
  • REST API — read submissions programmatically and connect your forms to anything.
  • Share links — generate a hosted, shareable link to any form.

AI-assisted form generation — describe a form in plain language and have the HTML built for you inside WordPress — is on the Pro roadmap. Today, the free plugin already works with any AI you bring (see above). Learn more at https://narrative-forms.com/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=free

Publish submissions with Frontend Submissions (Views)

Most form plugins keep submissions locked in the admin. The Narrative Forms Frontend Submissions add-on turns the data you collect into front-end content with reusable Views — display any form’s submissions as a public directory, a testimonial wall, a photo gallery, a job board, an event timeline, product reviews, and more:

  • Multiple layouts — ready-made table, grid, and calendar Views, plus fully custom templates written in your own HTML and CSS.
  • Starter design library — one-click designs (Cards, Testimonials, Gallery, Profiles, Compact list, Timeline) that fill in with your fields.
  • Instant search and pagination — fast filtering and browsing, built to handle large datasets.
  • Single pages — a clean, SEO-friendly page for every entry, with a pretty permalink.
  • Per-field public and private control — publish only the fields that are safe to show; nothing is public unless you choose it.
  • Approval moderation — approve or reject submissions, individually or in bulk, so nothing appears publicly until you say so.
  • Theme-proof rendering — each View is style-isolated, so your theme can’t break its layout.

Collect with the form, publish with a View. Learn more at https://narrative-forms.com/?utm_source=wordpress.org&utm_medium=readme&utm_campaign=free

External services

This plugin may connect to external services in the following situations:

  • Cloudflare Turnstile (optional CAPTCHA)

    • What it is and why: A free, privacy‑friendly CAPTCHA by Cloudflare used to protect forms from automated spam.
    • When data is sent: Only when a page with a Narrative Forms form is viewed (the Turnstile JS is loaded) and when a form is submitted (server verifies the token).
    • What data is sent:
    • To the JS endpoint: the browser requests https://challenges.cloudflare.com/turnstile/v0/api.js to render the widget.
    • To the verify endpoint: the server sends the Turnstile response token, your site’s secret key, and the requester’s IP address to https://challenges.cloudflare.com/turnstile/v0/siteverify to validate the submission.
    • Policies: Terms https://www.cloudflare.com/website-terms/ • Privacy https://www.cloudflare.com/privacypolicy/
  • Webhooks (optional, user‑configured)

    • What it is and why: If you add a Webhook action, Narrative Forms will send the submitted form fields to the URL you specify to integrate with external systems (e.g., marketing automation, CRMs, servers you control).
    • When data is sent: After a successful submission, for each configured Webhook action.
    • What data is sent: Submitted form fields and limited metadata (timestamp, IP address, user agent, referrer). Data is sent as JSON or form‑encoded depending on your configuration.
    • Where it is sent: To the exact URL you configure in the action, on a domain you choose. Any example like https://example.com/webhook in the UI or docs is a placeholder; no data is sent there unless you explicitly configure it.
    • Policies: The destination service is chosen by you. Please consult that service’s terms of use and privacy policy.

Details

Plugin code:
narrative-forms
Plugin version:
1.0.0
Outdated:
No
WP version:
6.2 or higher
PHP version:
7.2 or higher
Test up to WP version:
7.0
Total installations:
0
Last updated:
2026-06-08
Rating:
Times rated:
0
contact-form
custom-form
form-builder
forms
html-forms