{"id":315403,"date":"2026-05-21T12:41:22","date_gmt":"2026-05-21T12:41:22","guid":{"rendered":"https:\/\/ja.wordpress.org\/plugins\/yomuform\/"},"modified":"2026-05-21T12:40:54","modified_gmt":"2026-05-21T12:40:54","slug":"yomuform","status":"publish","type":"plugin","link":"https:\/\/zgh.wordpress.org\/plugins\/yomuform\/","author":23502840,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.3","stable_tag":"0.1.3","tested":"6.9.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"YomuForm","header_author":"haraikawa","header_description":"Contact Form 7 \u3068\u9023\u643a\u3057\u3001\u554f\u3044\u5408\u308f\u305b\u30d5\u30a9\u30fc\u30e0\u306b\u5c4a\u304f\u9001\u4fe1\u5185\u5bb9\u3092 AI \u3067\u5206\u985e\u3057\u3066\u53d7\u4fe1\u7bb1\u306e\u6574\u7406\u3068\u30de\u30fc\u30b1\u30c6\u30a3\u30f3\u30b0\u8a08\u6e2c\u306e\u6b63\u5e38\u5316\u3092\u652f\u63f4\u3057\u307e\u3059\u3002","assets_banners_color":"4186bf","last_updated":"2026-05-21 12:40:54","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/yomuform.com\/","header_author_uri":"https:\/\/yomuscore.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.3":{"tag":"0.1.3","author":"haraikawa","date":"2026-05-21 12:40:54"}},"upgrade_notice":{"0.1.3":"<p>Categories admin now supports full CRUD (add, remove, rename keys, toggle the sales flag) on every category including the 6 defaults.<\/p>","0.1.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3541957,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3541957,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3541957,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3541957,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3541957,"resolution":"1","location":"assets","locale":"","width":1759,"height":911},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3541957,"resolution":"2","location":"assets","locale":"","width":1756,"height":912},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3541957,"resolution":"3","location":"assets","locale":"","width":1759,"height":912}},"screenshots":{"1":"Judgment Log - last 100 classifications with sales\/inquiry badge, category, confidence, and reason.","2":"Categories - full CRUD on classification categories with editable key, label, description, and sales flag.","3":"Prompt Editor - additional guidance textarea and read-only preview of the final system prompt."}},"plugin_section":[],"plugin_tags":[2353,5742,358,257901,599],"plugin_category":[42,54],"plugin_contributors":[263819],"plugin_business_model":[],"class_list":["post-315403","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-classifier","plugin_tags-contact-form","plugin_tags-lead-quality","plugin_tags-spam","plugin_category-contact-forms","plugin_category-security-and-spam-protection","plugin_contributors-haraikawa","plugin_committers-haraikawa"],"banners":{"banner":"https:\/\/ps.w.org\/yomuform\/assets\/banner-772x250.png?rev=3541957","banner_2x":"https:\/\/ps.w.org\/yomuform\/assets\/banner-1544x500.png?rev=3541957","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/yomuform\/assets\/icon-128x128.png?rev=3541957","icon_2x":"https:\/\/ps.w.org\/yomuform\/assets\/icon-256x256.png?rev=3541957","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/yomuform\/assets\/screenshot-1.png?rev=3541957","caption":"Judgment Log - last 100 classifications with sales\/inquiry badge, category, confidence, and reason."},{"src":"https:\/\/ps.w.org\/yomuform\/assets\/screenshot-2.png?rev=3541957","caption":"Categories - full CRUD on classification categories with editable key, label, description, and sales flag."},{"src":"https:\/\/ps.w.org\/yomuform\/assets\/screenshot-3.png?rev=3541957","caption":"Prompt Editor - additional guidance textarea and read-only preview of the final system prompt."}],"raw_content":"<!--section=description-->\n<p>YomuForm is a plugin for Contact Form 7 that uses AI to classify each form submission as either a real customer inquiry or a sales solicitation. Cold sales outreach, recruiting pitches, business development proposals, scams, and competitor research are detected and labeled, so site owners can:<\/p>\n\n<ul>\n<li>Declutter the inbox by filtering out cold sales outreach<\/li>\n<li>Restore the accuracy of Google Analytics conversion tracking by excluding fake conversions<\/li>\n<\/ul>\n\n<p>Before Contact Form 7 sends the email, YomuForm injects the classification result into the subject and body, making it easy to route messages with mail-client filters or GA4 rules.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Seamless Contact Form 7 integration via the wpcf7_before_send_mail hook. No template edits required.<\/li>\n<li>Bring Your Own Key (BYOK): use your own API key for Anthropic Claude, OpenAI, or Google Gemini. Classification traffic does not pass through the plugin author's servers.<\/li>\n<li>Ready-to-use prompt out of the box. Optional \"additional guidance\" textarea lets you tune the classifier to your industry and policy.<\/li>\n<li>Test panel: try classifications with sample inputs without touching the production flow. Ships with 10 sample submissions.<\/li>\n<li>Judgment log: last 100 classifications stored in the dashboard, including timestamp, category, confidence, reason, and a 500-character excerpt of the submission.<\/li>\n<li>Single-recipient email notification for \"real inquiry\" submissions, so the noise of sales spam is filtered out of your alert channel.<\/li>\n<li>CF7 receipt mail augmentation: a \"flag: 1\/0\" + confidence stamp is injected at the top of the standard CF7 email so client-side filters can route reliably.<\/li>\n<li>API keys stored encrypted with AES-256 (key material derived from wp_salt('auth')).<\/li>\n<li>Verify button to test API connectivity before saving.<\/li>\n<li>Category management: full CRUD (add \/ remove \/ rename \/ edit description \/ toggle sales flag) on all classification categories, including the 6 defaults.<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin sends form submission content to whichever AI provider you configure. To use the plugin you must obtain and enter your own API key from one of the supported providers. The plugin author does not proxy, store, or otherwise handle this classification traffic.<\/p>\n\n<h4>Anthropic Claude<\/h4>\n\n<p>Used when \"Anthropic\" is selected as the provider in the settings. The plugin sends a single POST request to <code>https:\/\/api.anthropic.com\/v1\/messages<\/code> with the user's prompt (which contains the Contact Form 7 submission content) and the user's API key in the <code>x-api-key<\/code> header. This happens once per Contact Form 7 submission, only when the API key is set.<\/p>\n\n<ul>\n<li>Site: https:\/\/www.anthropic.com\/<\/li>\n<li>Terms of service: https:\/\/www.anthropic.com\/legal\/consumer-terms<\/li>\n<li>Privacy policy: https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<\/ul>\n\n<h4>OpenAI<\/h4>\n\n<p>Used when \"OpenAI\" is selected as the provider. The plugin sends a single POST request to <code>https:\/\/api.openai.com\/v1\/chat\/completions<\/code> with the user's prompt and Bearer token authorization. This happens once per Contact Form 7 submission, only when the API key is set.<\/p>\n\n<ul>\n<li>Site: https:\/\/openai.com\/<\/li>\n<li>Terms of use: https:\/\/openai.com\/policies\/terms-of-use<\/li>\n<li>Privacy policy: https:\/\/openai.com\/policies\/privacy-policy<\/li>\n<\/ul>\n\n<h4>Google Gemini<\/h4>\n\n<p>Used when \"Gemini\" is selected as the provider. The plugin sends a single POST request to <code>https:\/\/generativelanguage.googleapis.com\/v1beta\/models\/{model}:generateContent<\/code> (with the model name selected by the user) and the user's API key in the query string. This happens once per Contact Form 7 submission, only when the API key is set.<\/p>\n\n<ul>\n<li>Site: https:\/\/ai.google.dev\/<\/li>\n<li>Gemini API terms: https:\/\/ai.google.dev\/gemini-api\/terms<\/li>\n<li>Privacy policy: https:\/\/policies.google.com\/privacy<\/li>\n<\/ul>\n\n<h3>Privacy Notice<\/h3>\n\n<p>This plugin handles the following data:<\/p>\n\n<ul>\n<li><strong>Form submission content<\/strong> - Contact Form 7 submission content is sent to the AI provider you configure (Anthropic, OpenAI, or Google) for classification. The plugin author neither proxies nor stores this traffic.<\/li>\n<li><strong>Judgment log<\/strong> - A 500-character excerpt of the submission, plus its SHA-256 hash, plus the classification result, confidence, reason, model name, and token count, are stored in the WordPress database. The log is capped at 100 entries (ring buffer); older entries are deleted automatically.<\/li>\n<li><strong>API key<\/strong> - Your AI provider API key is encrypted with AES-256-CBC before storage. It is deleted when the plugin is uninstalled.<\/li>\n<\/ul>\n\n<p>All data is removed on uninstall (see uninstall.php).<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin and activate it.<\/li>\n<li>Obtain an API key from one of the supported AI providers:\n\n<ul>\n<li>Anthropic: https:\/\/console.anthropic.com\/<\/li>\n<li>OpenAI: https:\/\/platform.openai.com\/api-keys<\/li>\n<li>Google: https:\/\/aistudio.google.com\/apikey<\/li>\n<\/ul><\/li>\n<li>In the WordPress admin, open YomuForm -&gt; Settings, paste the API key, and click \"Verify\" to confirm connectivity.<\/li>\n<li>Use Contact Form 7 as you normally would. Submissions will be classified, logged, and (optionally) routed automatically.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20do%20i%20need%20to%20run%20this%20plugin%3F\"><h3>What do I need to run this plugin?<\/h3><\/dt>\n<dd><p>WordPress 6.0+, PHP 7.4+, Contact Form 7 5.7+, and an API key from Anthropic, OpenAI, or Google.<\/p><\/dd>\n<dt id=\"is%20there%20a%20monthly%20fee%3F\"><h3>Is there a monthly fee?<\/h3><\/dt>\n<dd><p>YomuForm itself is free. You pay the AI provider directly for API usage. Rough cost per classification: about 0.001 yen with Claude Haiku, 0.002 yen with GPT-4o-mini, 0.001 yen with Gemini Flash.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20ai%20api%20fails%3F\"><h3>What happens if the AI API fails?<\/h3><\/dt>\n<dd><p>The CF7 form still submits normally. Classification is wrapped in a try\/catch so a failed or timed-out API call never blocks form submission. Only the classification metadata is skipped.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20submissions%20classified%20as%20sales%3F\"><h3>What happens to submissions classified as sales?<\/h3><\/dt>\n<dd><p>A \"[Sales]\" prefix is added to the email subject, and a stamp (flag: 0, confidence) is injected at the top of the email body. Client-side filters can route these wherever you like. The form submission itself completes normally.<\/p><\/dd>\n<dt id=\"how%20is%20personal%20data%20handled%3F\"><h3>How is personal data handled?<\/h3><\/dt>\n<dd><p>The judgment log stores only the first 500 characters of the submission, plus a SHA-256 hash for duplicate detection. Uninstalling the plugin deletes all stored data (see uninstall.php). Classification traffic is sent directly from your WordPress server to the AI provider you chose; the plugin author's servers never see it.<\/p><\/dd>\n<dt id=\"is%20the%20api%20key%20stored%20securely%3F\"><h3>Is the API key stored securely?<\/h3><\/dt>\n<dd><p>Yes. AES-256-CBC encryption is applied before storage, with the key material derived from WordPress's wp_salt('auth'). The encrypted key can only be decrypted on the same WordPress installation.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20prompt%20to%20my%20industry%3F\"><h3>Can I customize the prompt to my industry?<\/h3><\/dt>\n<dd><p>Yes. In YomuForm -&gt; Categories, you can add, remove, rename, or change the sales flag of categories. The 6 default categories can be edited or removed freely. In YomuForm -&gt; Prompt, you can also add overall guidance that applies to every classification.<\/p><\/dd>\n<dt id=\"what%20if%20my%20notification%20emails%20are%20not%20arriving%3F\"><h3>What if my notification emails are not arriving?<\/h3><\/dt>\n<dd><p>YomuForm uses WordPress's standard wp_mail() function. On shared hosts, the PHP mail() backend is often unreliable or gets flagged as spam. We strongly recommend pairing the plugin with an SMTP plugin that routes through a reliable delivery service:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/wp-mail-smtp\/\">WP Mail SMTP<\/a> - supports SendGrid, Postmark, Amazon SES, Mailgun, Gmail SMTP, and more<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/post-smtp\/\">Post SMTP<\/a> - similar feature set<\/li>\n<li><a href=\"https:\/\/wordpress.org\/plugins\/fluent-smtp\/\">FluentSMTP<\/a> - lightweight, free, multi-service support<\/li>\n<\/ul>\n\n<p>Email delivery is the lifeline of inquiry notifications. Use one of these to make sure you don't miss important leads.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Categories admin screen now supports full CRUD: add, remove, rename keys, and toggle the sales flag for every category (including the 6 defaults).<\/li>\n<li>Removed the previously-introduced <code>yomuform_log_max_entries<\/code> filter. Log retention is a straightforward 100-entry ring buffer with no extension hook.<\/li>\n<li>Removed internal notes that framed certain features as restricted in this distribution.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Added a single, dismissible admin notice asking active users for feedback. Shown only on YomuForm admin pages, only after 14 days of use and at least 10 classifications. Dismissible permanently per user. No star-rating coercion or rewards involved.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Added <code>yomuform_after_classify<\/code> action hook so other plugins can subscribe to classification events.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Contact Form 7 integration via wpcf7_before_send_mail hook.<\/li>\n<li>Multi-provider AI classification: Anthropic Claude, OpenAI GPT, Google Gemini.<\/li>\n<li>AES-256 encryption for API key storage.<\/li>\n<li>API key connection verification button.<\/li>\n<li>Category label\/description editing.<\/li>\n<li>Prompt editor with additional-guidance textarea and final-prompt preview.<\/li>\n<li>Test execution UI with 10 bundled sample submissions.<\/li>\n<li>Judgment log (last 100 entries).<\/li>\n<li>Email notification for inquiries.<\/li>\n<li>Automatic injection of classification stamp into CF7 receipt mail.<\/li>\n<\/ul>","raw_excerpt":"Automatically classify Contact Form 7 submissions with AI to separate real customer inquiries from cold sales emails.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/315403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=315403"}],"author":[{"embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/haraikawa"}],"wp:attachment":[{"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=315403"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=315403"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=315403"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=315403"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=315403"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/zgh.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=315403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}