{"id":253942,"date":"2026-01-31T09:21:28","date_gmt":"2026-01-31T09:21:28","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/validation-muse-for-contact-form-7\/"},"modified":"2026-05-08T09:46:43","modified_gmt":"2026-05-08T09:46:43","slug":"validation-muse-for-contact-form-7","status":"publish","type":"plugin","link":"https:\/\/ky.wordpress.org\/plugins\/validation-muse-for-contact-form-7\/","author":16869097,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.4.2","stable_tag":"1.4.2","tested":"6.9.4","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Validation Muse for Contact Form 7","header_author":"simmotorlp","header_description":"Customize validation messages for each Contact Form 7 field","assets_banners_color":"006290","last_updated":"2026-05-08 09:46:43","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/plugins.symonov.com\/validation-muse-for-cf7\/","header_author_uri":"https:\/\/github.com\/symonovserhii","rating":0,"author_block_rating":0,"active_installs":0,"downloads":342,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.0":{"tag":"1.2.0","author":"simmotorlp","date":"2026-01-31 09:21:00"},"1.2.1":{"tag":"1.2.1","author":"simmotorlp","date":"2026-01-31 09:45:19"},"1.3.0":{"tag":"1.3.0","author":"simmotorlp","date":"2026-03-11 20:10:45"},"1.4.0":{"tag":"1.4.0","author":"simmotorlp","date":"2026-03-11 20:10:58"},"1.4.2":{"tag":"1.4.2","author":"simmotorlp","date":"2026-05-08 09:46:43"}},"upgrade_notice":{"1.4.2":"<p>Plugin URI now points to the dedicated landing page on plugins.symonov.com. No code changes.<\/p>","1.4.1":"<p>Documentation-only release. Refreshed readme for clearer feature discovery and confirmed compatibility with WordPress 6.9.4.<\/p>","1.4.0":"<p>Adds multilingual support via the Flavor translation plugin and one-click AI translation of validation messages. No data migration required.<\/p>","1.3.0":"<p>Restores compatibility with Contact Form 7 6.x Schema-based Validation (SWV). Recommended for all CF7 6.x users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3450911,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3450911,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3450911,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3450911,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.0","1.2.1","1.3.0","1.4.0","1.4.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3526336,"resolution":"1","location":"assets","locale":"","width":1280,"height":463},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3526336,"resolution":"2","location":"assets","locale":"","width":1280,"height":802},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3526336,"resolution":"3","location":"assets","locale":"","width":866,"height":703},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3526336,"resolution":"4","location":"assets","locale":"","width":862,"height":682}},"screenshots":{"1":"The <strong>Custom Validation<\/strong> panel inside the Contact Form 7 editor \u2014 enable per form, write messages per field.","2":"Per-language tabs and the <strong>AI Translate<\/strong> button (visible when the Flavor translation plugin is active).","3":"Required-field message rendered on the frontend.","4":"Invalid-format message for an email field rendered on the frontend."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[5445,1152,21876,99,724],"plugin_category":[41,42,43],"plugin_contributors":[254989],"plugin_business_model":[],"class_list":["post-253942","plugin","type-plugin","status-publish","hentry","plugin_tags-cf7","plugin_tags-contact-form-7","plugin_tags-error-message","plugin_tags-multilingual","plugin_tags-validation","plugin_category-communication","plugin_category-contact-forms","plugin_category-customization","plugin_contributors-simmotorlp","plugin_committers-simmotorlp"],"banners":{"banner":"https:\/\/ps.w.org\/validation-muse-for-contact-form-7\/assets\/banner-772x250.png?rev=3450911","banner_2x":"https:\/\/ps.w.org\/validation-muse-for-contact-form-7\/assets\/banner-1544x500.png?rev=3450911","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/validation-muse-for-contact-form-7\/assets\/icon-128x128.png?rev=3450911","icon_2x":"https:\/\/ps.w.org\/validation-muse-for-contact-form-7\/assets\/icon-256x256.png?rev=3450911","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/validation-muse-for-contact-form-7\/assets\/screenshot-1.png?rev=3526336","caption":"The <strong>Custom Validation<\/strong> panel inside the Contact Form 7 editor \u2014 enable per form, write messages per field."},{"src":"https:\/\/ps.w.org\/validation-muse-for-contact-form-7\/assets\/screenshot-2.png?rev=3526336","caption":"Per-language tabs and the <strong>AI Translate<\/strong> button (visible when the Flavor translation plugin is active)."},{"src":"https:\/\/ps.w.org\/validation-muse-for-contact-form-7\/assets\/screenshot-3.png?rev=3526336","caption":"Required-field message rendered on the frontend."},{"src":"https:\/\/ps.w.org\/validation-muse-for-contact-form-7\/assets\/screenshot-4.png?rev=3526336","caption":"Invalid-format message for an email field rendered on the frontend."}],"raw_content":"<!--section=description-->\n<p><strong>Validation Muse<\/strong> lets you write your own error messages for every Contact Form 7 field \u2014 directly in the form editor, per form, per field. No code, no global settings page, no JavaScript hacks.<\/p>\n\n<p>Most CF7 validation plugins broke when Contact Form 7 6.x introduced <strong>Schema-based Validation (SWV)<\/strong>. Validation Muse runs its filters at priority 20 (after CF7 core) and uses Reflection to replace SWV error text on already-invalidated fields, so your custom copy actually shows up \u2014 even on the new validation engine.<\/p>\n\n<h4>Why Validation Muse<\/h4>\n\n<ul>\n<li><strong>CF7 6.x SWV compatible<\/strong> \u2014 works with the new Schema-based Validation engine, not just legacy hooks.<\/li>\n<li><strong>Per-form, per-field<\/strong> \u2014 each form keeps its own messages; no global override.<\/li>\n<li><strong>Stored in post meta<\/strong> \u2014 messages live with the form, compatible with CF7 form duplication and third-party CF7 import\/export plugins.<\/li>\n<li><strong>Multilingual via Flavor<\/strong> \u2014 when the Flavor translation plugin is active, language tabs and a one-click AI Translate button appear in the editor automatically. Zero overhead when Flavor is not installed.<\/li>\n<li><strong>Developer-friendly<\/strong> \u2014 extensibility hooks <code>vmcf7_loaded<\/code> and <code>vmcf7_validation_tag_types<\/code> let you add custom field types.<\/li>\n<li><strong>Lightweight<\/strong> \u2014 no admin bloat, no tracking, no upsells.<\/li>\n<\/ul>\n\n<h4>Supported field types<\/h4>\n\n<ul>\n<li>Required-field messages: any required tag (text, textarea, select, checkbox, radio, file, etc.)<\/li>\n<li>Invalid-format messages: <code>email<\/code>, <code>url<\/code>, <code>tel<\/code>, <code>number<\/code> (including <code>range<\/code>), and <code>date<\/code>.<\/li>\n<li>HTML inside messages is allowed and sanitized through <code>wp_kses_post()<\/code>.<\/li>\n<\/ul>\n\n<h4>Translations<\/h4>\n\n<p>The plugin ships with a <code>.pot<\/code> file and is already translated into Dutch, German, Russian, Spanish (Chile\/Spain). <a href=\"https:\/\/translate.wordpress.org\/projects\/wp-plugins\/validation-muse-for-contact-form-7\">Help translate it into your language.<\/a><\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install from <strong>Plugins \u2192 Add New<\/strong> and search for <em>Validation Muse for Contact Form 7<\/em>, or upload the <code>validation-muse-for-contact-form-7<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin. Contact Form 7 must already be active \u2014 Validation Muse will deactivate itself with an admin notice if it is not.<\/li>\n<li>Edit any Contact Form 7 form, open the <strong>Custom Validation<\/strong> panel, enable it, and write your messages.<\/li>\n<li>(Optional) Install the Flavor translation plugin to translate messages per language with AI assistance.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20contact%20form%207%206.x%20and%20schema-based%20validation%20%28swv%29%3F\"><h3>Does this work with Contact Form 7 6.x and Schema-based Validation (SWV)?<\/h3><\/dt>\n<dd><p>Yes. Since version 1.3.0, Validation Muse hooks at priority 20 (after CF7 core) and uses Reflection to replace SWV error text on already-invalidated fields. Your custom messages override both the legacy and SWV defaults.<\/p><\/dd>\n<dt id=\"how%20is%20this%20different%20from%20other%20cf7%20validation%20plugins%3F\"><h3>How is this different from other CF7 validation plugins?<\/h3><\/dt>\n<dd><p>Validation Muse is the only CF7 validation plugin that (1) is compatible with CF7 6.x SWV out of the box, (2) stores messages in form post meta so they live with the form (compatible with CF7 form duplication and import\/export plugins), and (3) integrates with the Flavor translation plugin for per-language messages with one-click AI translation.<\/p><\/dd>\n<dt id=\"can%20i%20translate%20validation%20messages%20per%20language%3F\"><h3>Can I translate validation messages per language?<\/h3><\/dt>\n<dd><p>Yes \u2014 install the Flavor translation plugin and Validation Muse will show language tabs in the form editor plus an <em>AI Translate<\/em> button. Translations are stored in Flavor's database; uninstalling Validation Muse cleans them up.<\/p><\/dd>\n<dt id=\"which%20field%20types%20support%20custom%20invalid%20messages%3F\"><h3>Which field types support custom invalid messages?<\/h3><\/dt>\n<dd><p>email, <code>url<\/code>, <code>tel<\/code>, <code>number<\/code> (including <code>range<\/code>), and <code>date<\/code>. Any required field of any type can have a custom required-field message.<\/p><\/dd>\n<dt id=\"where%20are%20the%20messages%20stored%3F\"><h3>Where are the messages stored?<\/h3><\/dt>\n<dd><p>In each form's post meta. They live with the form, so duplicating a form (built into CF7) keeps the messages. CF7 has no native export, but third-party CF7 import\/export plugins read post meta \u2014 so migrations across sites work without a separate import step.<\/p><\/dd>\n<dt id=\"can%20i%20use%20html%20in%20validation%20messages%3F\"><h3>Can I use HTML in validation messages?<\/h3><\/dt>\n<dd><p>Yes, basic HTML is allowed and sanitized via <code>wp_kses_post()<\/code>.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20require%20contact%20form%207%3F\"><h3>Does this plugin require Contact Form 7?<\/h3><\/dt>\n<dd><p>Yes. CF7 must be installed and active. The plugin shows an admin notice and self-deactivates if CF7 is missing.<\/p><\/dd>\n<dt id=\"is%20there%20a%20settings%20page%3F\"><h3>Is there a settings page?<\/h3><\/dt>\n<dd><p>No. Configuration lives inside each form, in the <strong>Custom Validation<\/strong> panel. There is no global settings page by design \u2014 every form keeps its own messages.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20track%20or%20send%20any%20data%3F\"><h3>Does the plugin track or send any data?<\/h3><\/dt>\n<dd><p>No. Validation Muse makes no external requests. The optional AI Translate button (Flavor integration) routes through Flavor's own configured provider.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.2<\/h4>\n\n<ul>\n<li>Plugin URI: now points to the dedicated landing page at https:\/\/plugins.symonov.com\/validation-muse-for-cf7\/<\/li>\n<li>No code or behavior changes<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>Readme: USP-first rewrite for SEO discoverability<\/li>\n<li>Tags: replaced generic <code>messages<\/code>\/<code>forms<\/code>\/<code>customization<\/code> with targeted <code>contact-form-7<\/code>, <code>cf7<\/code>, <code>validation<\/code>, <code>error-message<\/code>, <code>multilingual<\/code><\/li>\n<li>FAQ: added entries for CF7 6.x SWV compatibility, comparison with other CF7 validation plugins, and multilingual via Flavor<\/li>\n<li>Tested up to WordPress 6.9.4<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Added multilingual support via Flavor translation plugin integration<\/li>\n<li>Validation messages can now be translated per language in the form editor<\/li>\n<li>Language tabs appear automatically when Flavor plugin is active<\/li>\n<li>AI Translate button for one-click machine translation of all messages<\/li>\n<li>Translations stored in Flavor's database, keeping plugin data portable<\/li>\n<li>Zero overhead when Flavor is not installed \u2014 all calls behind class_exists() checks<\/li>\n<li>Flavor translations cleaned up on plugin uninstall<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Fixed compatibility with Contact Form 7 6.x SWV (Schema-based Validation)<\/li>\n<li>Validation filters now run at priority 20 (after CF7 core) to replace SWV error messages<\/li>\n<li>Added Reflection-based error replacement for already-invalidated fields<\/li>\n<li>Custom messages now correctly override default CF7 \"The field is required.\" text<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Fixed variable name mismatch causing \"No required fields\" error<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Refactored codebase to follow WordPress Coding Standards<\/li>\n<li>Reorganized file structure for better maintainability<\/li>\n<li>Added PHPDoc blocks to all functions and methods<\/li>\n<li>Improved accessibility with ARIA labels<\/li>\n<li>Fixed JavaScript prefix inconsistency<\/li>\n<li>Fixed uninstall script to use correct meta prefix<\/li>\n<li>Added extensibility hooks (<code>vmcf7_loaded<\/code>, <code>vmcf7_validation_tag_types<\/code>)<\/li>\n<li>Changed capability check from <code>manage_options<\/code> to <code>wpcf7_edit_contact_forms<\/code><\/li>\n<li>Updated POT file name to match text domain<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Changed plugin name.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Added .gitignore file.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Added WordPress repository collateral (readme, license, POT file).<\/li>\n<li>Reworked validation hooks to override required and invalid messages without relying on AJAX filters.<\/li>\n<li>Hardened sanitization, text domain loading, and uninstall cleanup for release readiness.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Initial public iteration bundled with the project.<\/li>\n<\/ul>","raw_excerpt":"Custom error and required-field messages for Contact Form 7. Per-form, per-field, CF7 6.x SWV-compatible, multilingual.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/253942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=253942"}],"author":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/simmotorlp"}],"wp:attachment":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=253942"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=253942"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=253942"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=253942"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=253942"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=253942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}