Changelogs

Follow the improvements and fixes in each product release.

Core Forms

Core Forms is a WordPress form plugin built for performance and simplicity. It creates contact forms, registration forms, and surveys with minimal overhead and clean code output. This…

Explore Product

Release History

Permalink

4.0.0

First stable release on the 4.x line.

Highlights

  • Stylesheet bug fix. The Gutenberg block no longer auto-loads form-theme.css regardless of settings. The block now respects the global “Default form theme” toggle and the per-form override, matching the shortcode behavior. (Cause: style field in block.json was force-enqueueing the theme stylesheet on any page that used the block.)
  • Block inspector overhaul. New panels in the block sidebar:
  • Form — pick a form, jump to its admin editor.
  • Header — toggle to show the form title as a heading, choose H1–H6.
  • Layout — alignment toolbar (left/center/right), max-width (px/em/rem/%/ch), HTML anchor id, custom CSS class.
  • Stylesheets — per-block overrides (“use form/global setting”, “force load”, “force disable”) for both form-theme.css and forms.css.
  • Stable version. Bumped from 4.0.0-b9 → 4.0.0 across the plugin header, block.json, package.json, and readme.txt.

Upgrade notes

  • No schema or data migrations.
  • If you previously relied on the block always loading form-theme.css, make sure your global “Default form theme” setting is enabled, or use the new per-block “Force load” override.
  • The max-width block attribute is validated against a strict CSS-length regex (px, em, rem, %, ch, vw, vh); other values are ignored.

Files changed

block.json, render.php, assets/js/src/blocks/form/edit.js, assets/js/build/block-form.js, core-forms.php, package.json, readme.txt.

Permalink

4.0.0-b9

Full Changelog:

Permalink

3.5.0

What’s New

REST API

  • Full CRUD REST API for submissions at cf/v1 namespace
  • Collection endpoints with pagination, filtering by status/spam/date/search
  • Status validation returns proper 400/404 errors

Submission Status Tracking

  • New status field: new, read, replied, archived
  • Auto-marks submissions as “read” when viewed
  • Auto-marks as “replied” after sending a reply
  • Bulk status actions in the submissions table
  • Status badges in the global submissions view

Conditional Actions

  • Run form actions only when field conditions are met
  • Operators: equals, not equals, contains, does not contain, is empty, is not empty
  • AND logic — all conditions must match for the action to fire

Spam Protection

  • Akismet whitelist keywords — bypass spam checks for trusted submissions
  • Configurable in Settings → Spam Protection

Quality of Life

  • One-click form duplication from the forms list
  • Status column included in CSV exports
  • Polls database tables now created on activation/migration
  • Consistent border-radius across admin UI

Security Fixes

  • Escaped all HTML name attributes in condition row output (XSS)
  • Added capability check to form duplication handler
  • REST API validates status values on update
Permalink

3.4.0

What’s New

Emailit Integration

  • Send Email via Emailit — New action to send form notification emails through the Emailit API instead of wp_mail()
  • Emailit Subscribe — Add contacts to Emailit audiences on form submission, with multi-audience support and custom field mapping
  • Settings — Emailit API key configuration in global settings

Data Variable Fixes

  • Fixed [all:label] — was silently broken (never implemented). Now renders all submission fields with human-readable labels extracted from form HTML
  • Fixed [all], [CF_FORM_ID], [CF_FORM_TITLE] — also previously non-functional
  • Rewrote cf_replace_data_variables() with clean switch-based implementation

Auto-Fill Action Defaults

  • All actions (Email, Autoresponder, MailerPress, Emailit, Emailit Subscribe) now auto-detect field names from form HTML markup when first created
  • No more manually typing [EMAIL], [FIRST_NAME], etc. — fields are pre-populated

Full Changelog