{"id":373556,"date":"2026-09-23T18:14:49","date_gmt":"2026-09-23T18:14:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/khushal-forms\/"},"modified":"2026-09-23T18:14:36","modified_gmt":"2026-09-23T18:14:36","slug":"khushal-forms","status":"publish","type":"plugin","link":"https:\/\/dsb.wordpress.org\/plugins\/khushal-forms\/","author":23421333,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.0","stable_tag":"0.1.0","tested":"7.1.2","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Khushal Forms","header_author":"Khushal Tank","header_description":"A developer-friendly WordPress form builder with locally stored entries and no required external services.","assets_banners_color":"eff3f8","last_updated":"2026-09-23 18:14:36","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/khushal-forms\/","header_author_uri":"https:\/\/profiles.wordpress.org\/khushal1995\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":46,"num_ratings":3,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.0":{"tag":"0.1.0","author":"khushal1995","date":"2026-09-23 18:14:36","revision":3709936}},"upgrade_notice":{"0.1.0":"<p>Initial release. Requires PHP 8.1 and WordPress 6.5.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":3},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3709936,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3709936,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3709936,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3709936,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3709936,"resolution":"1","location":"assets","locale":"","width":1500,"height":800},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3709936,"resolution":"2","location":"assets","locale":"","width":1500,"height":800},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3709936,"resolution":"3","location":"assets","locale":"","width":1500,"height":800},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3709936,"resolution":"4","location":"assets","locale":"","width":1500,"height":800},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3709936,"resolution":"5","location":"assets","locale":"","width":1500,"height":800},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3709936,"resolution":"6","location":"assets","locale":"","width":1500,"height":800},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3709936,"resolution":"7","location":"assets","locale":"","width":1500,"height":800}},"screenshots":{"1":"The forms list, with the shortcode, status, and entry count for each form.","2":"Starter form templates, with a preview of the form visitors will see.","3":"Submitted entries, with search, read status, and CSV export.","4":"The form builder. Add a field, set its width, and edit the selected field.","5":"Email templates for the admin notification, the customer auto-reply, and an additional email.","6":"Tools for entry retention, trash, notification logs, and analytics.","7":"Settings for uninstall, how long entries are kept, and the public form style."}},"plugin_section":[],"plugin_tags":[358,267,1270,2253,601],"plugin_category":[41,42],"plugin_contributors":[252686],"plugin_business_model":[],"class_list":["post-373556","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form","plugin_tags-email","plugin_tags-entries","plugin_tags-form-builder","plugin_tags-forms","plugin_category-communication","plugin_category-contact-forms","plugin_contributors-khushal1995","plugin_committers-khushal1995"],"banners":{"banner":"https:\/\/ps.w.org\/khushal-forms\/assets\/banner-772x250.png?rev=3709936","banner_2x":"https:\/\/ps.w.org\/khushal-forms\/assets\/banner-1544x500.png?rev=3709936","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/khushal-forms\/assets\/icon-128x128.png?rev=3709936","icon_2x":"https:\/\/ps.w.org\/khushal-forms\/assets\/icon-256x256.png?rev=3709936","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/khushal-forms\/assets\/screenshot-1.png?rev=3709936","caption":"The forms list, with the shortcode, status, and entry count for each form."},{"src":"https:\/\/ps.w.org\/khushal-forms\/assets\/screenshot-2.png?rev=3709936","caption":"Starter form templates, with a preview of the form visitors will see."},{"src":"https:\/\/ps.w.org\/khushal-forms\/assets\/screenshot-3.png?rev=3709936","caption":"Submitted entries, with search, read status, and CSV export."},{"src":"https:\/\/ps.w.org\/khushal-forms\/assets\/screenshot-4.png?rev=3709936","caption":"The form builder. Add a field, set its width, and edit the selected field."},{"src":"https:\/\/ps.w.org\/khushal-forms\/assets\/screenshot-5.png?rev=3709936","caption":"Email templates for the admin notification, the customer auto-reply, and an additional email."},{"src":"https:\/\/ps.w.org\/khushal-forms\/assets\/screenshot-6.png?rev=3709936","caption":"Tools for entry retention, trash, notification logs, and analytics."},{"src":"https:\/\/ps.w.org\/khushal-forms\/assets\/screenshot-7.png?rev=3709936","caption":"Settings for uninstall, how long entries are kept, and the public form style."}],"raw_content":"<!--section=description-->\n<p>Khushal Forms is a form builder for WordPress. You create the form, visitors fill it in, and the answers stay in your own database.<\/p>\n\n<p>Start from a ready-made form, or build one field by field. Each starter form shows a preview of what visitors will see, including a multi-step enquiry with Next and Previous. Publish the form, then place it on a page with the shortcode <code>[khushal_form id=\"123\"]<\/code> or the Khushal Forms block.<\/p>\n\n<p><strong>Build the form<\/strong><\/p>\n\n<ul>\n<li>Add text, email, phone, number, URL, dropdown, checkbox, radio, file, consent, and hidden fields.<\/li>\n<li>Set a field to full, half, or one-third width.<\/li>\n<li>Split a long form into steps.<\/li>\n<li>Show or hide a field based on an earlier answer.<\/li>\n<li>Save the form as a draft, then publish it when it is ready.<\/li>\n<li>Duplicate a form, or export and import it as JSON.<\/li>\n<\/ul>\n\n<p><strong>Read the answers<\/strong><\/p>\n\n<ul>\n<li>Open Entries to see each submission, mark it read or unread, and move it to trash.<\/li>\n<li>Search entries and export them to CSV.<\/li>\n<li>Uploaded files stay in your uploads folder and are not added to the Media Library.<\/li>\n<\/ul>\n\n<p><strong>Send email<\/strong><\/p>\n\n<ul>\n<li>Send an admin notification when someone submits the form.<\/li>\n<li>Send an automatic reply to the visitor.<\/li>\n<li>Send one extra email if you need a third copy.<\/li>\n<li>Browse sample email layouts, preview one, then use it on the form.<\/li>\n<li>Attach a file the visitor uploaded.<\/li>\n<li>Use your site\u2019s normal WordPress mail, or save an SMTP mailbox under Settings.<\/li>\n<\/ul>\n\n<p>A successful send means the mail server accepted the message. It does not prove that the inbox received it.<\/p>\n\n<p><strong>What stays on your site<\/strong><\/p>\n\n<p>Forms, entries, and files are stored on this WordPress site. Khushal Forms does not send submissions to its own server, and it does not include usage tracking. Analytics are daily totals for views and submissions, not a profile of each visitor. Entry rows do not store IP addresses.<\/p>\n\n<p>Spam checks that run without an outside service are a honeypot, a minimum time to fill the form, and a limit on how often the same visitor can submit. Cloudflare Turnstile is optional and off until you add your own keys. If you turn it on, the form loads Cloudflare\u2019s widget script (<code>https:\/\/challenges.cloudflare.com\/turnstile\/v0\/api.js<\/code>) and the server checks the token with Cloudflare.<\/p>\n\n<p>A webhook is also optional. If you add a public http or https address, the plugin can send one JSON request after an entry is saved. Private and loopback addresses are blocked. A failed webhook does not delete the entry.<\/p>\n\n<p>You do not need Elementor, WooCommerce, or another form plugin.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>Submitted field values are stored in custom tables on this site. File uploads go under <code>wp-content\/uploads\/khushal-forms\/<\/code>. Notification logs store status, not message bodies. Analytics tables store daily aggregates without IP addresses or fingerprints.<\/p>\n\n<p>WordPress <strong>Export Personal Data<\/strong> and <strong>Erase Personal Data<\/strong> include entries that match the request email (logged-in user or an email field). Guest entries without an email field cannot be matched automatically.<\/p>\n\n<p>Optional Turnstile sends a token to Cloudflare for verification. Optional webhooks send a payload to the URL you enter.<\/p>\n\n<p>See <code>docs\/privacy.md<\/code> in the plugin folder for a full data map.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>khushal-forms<\/code> folder to <code>\/wp-content\/plugins\/<\/code>, or install it from the Plugins screen.<\/li>\n<li>Activate Khushal Forms.<\/li>\n<li>Open <strong>Khushal Forms<\/strong> in the admin menu.<\/li>\n<li>Use <strong>Form templates<\/strong> to start from a ready-made form, or choose <strong>Add New Form<\/strong> and add fields yourself.<\/li>\n<li>Publish the form. Copy its shortcode from the forms list, or add the Khushal Forms block to a page.<\/li>\n<li>Optional: open <strong>Email templates<\/strong> to preview a notification, then apply it while editing the form. SMTP, Turnstile, and how long entries are kept are under Settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20plugin%20send%20submissions%20to%20an%20external%20service%3F\"><h3>Does this plugin send submissions to an external service?<\/h3><\/dt>\n<dd><p>No, not by default. Entries stay in your WordPress database. Email uses <code>wp_mail()<\/code>. A webhook runs only if you add a destination URL. Turnstile talks to Cloudflare only if you enable it.<\/p><\/dd>\n<dt id=\"does%20email%20%E2%80%9Cdelivery%E2%80%9D%20mean%20the%20inbox%20received%20it%3F\"><h3>Does email \u201cdelivery\u201d mean the inbox received it?<\/h3><\/dt>\n<dd><p>No. Logs record whether WordPress accepted the mail through <code>wp_mail()<\/code>, not mailbox delivery.<\/p><\/dd>\n<dt id=\"does%20deactivating%20the%20plugin%20delete%20forms%20or%20entries%3F\"><h3>Does deactivating the plugin delete forms or entries?<\/h3><\/dt>\n<dd><p>No. Deactivation never deletes forms or entries. The retention cron is unscheduled while the plugin is inactive.<\/p><\/dd>\n<dt id=\"what%20happens%20on%20uninstall%3F\"><h3>What happens on uninstall?<\/h3><\/dt>\n<dd><p>Data is removed only if you enable <strong>Delete all Khushal Forms data when the plugin is uninstalled<\/strong> (off by default). Otherwise only the retention cron is cleared.<\/p><\/dd>\n<dt id=\"is%20there%20telemetry%3F\"><h3>Is there telemetry?<\/h3><\/dt>\n<dd><p>No. There is no usage tracking, no phone-home, and no Khushal Forms analytics endpoint.<\/p><\/dd>\n<dt id=\"which%20php%20and%20wordpress%20versions%20are%20required%3F\"><h3>Which PHP and WordPress versions are required?<\/h3><\/dt>\n<dd><p>WordPress 6.5 or later and PHP 8.1 or later.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First public release. Build a form or start from a template, including a multi-step form. Collect entries on your site, export CSV, and send admin and visitor emails from included layouts. Optional SMTP, webhooks, and Cloudflare Turnstile. Privacy export and erase, entry retention, and an uninstall option that is off by default.<\/li>\n<\/ul>","raw_excerpt":"Build forms on your site, keep every entry in WordPress, and send email notifications. No external account required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/373556","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=373556"}],"author":[{"embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/khushal1995"}],"wp:attachment":[{"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=373556"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=373556"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=373556"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=373556"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=373556"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/dsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=373556"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}