{"id":314357,"date":"2026-05-20T09:28:55","date_gmt":"2026-05-20T09:28:55","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/samplehq-request-form\/"},"modified":"2026-05-20T09:28:15","modified_gmt":"2026-05-20T09:28:15","slug":"samplehq-request-form","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/samplehq-request-form\/","author":23491437,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.5","stable_tag":"1.0.5","tested":"6.9.4","requires":"6.0","requires_php":"8.0","requires_plugins":null,"header_name":"SampleHQ Request Form","header_author":"SampleHQ","header_description":"A complete sample request management system with a sample library, visual form builder, and submissions dashboard.","assets_banners_color":"72788c","last_updated":"2026-05-20 09:28:15","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/samplehq.io\/wordpress-plugin","header_author_uri":"https:\/\/samplehq.io","rating":0,"author_block_rating":0,"active_installs":0,"downloads":20,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.5":{"tag":"1.0.5","author":"josifoskibojan","date":"2026-05-20 09:28:15"}},"upgrade_notice":{"1.0.2":"<p>Platform connection support and PHP 8.0 compatibility fix.<\/p>","1.0.1":"<p>Release tooling improvements and minor fixes.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3538698,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3538698,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3538698,"resolution":false,"location":"assets","locale":false}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3538698,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3538698,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"samplehq-form\/form":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"samplehq-form\/form","version":"1.0.2","title":"SampleHQ Form","category":"samplehq-forms","icon":"clipboard","description":"Embed a sample request form.","keywords":["form","sample","request"],"textdomain":"samplehq-request-form","attributes":{"formId":{"type":"number","default":0}},"supports":{"html":false,"multiple":true},"editorScript":"file:.\/index.js","style":"shqf-form-frontend","editorStyle":"shqf-form-frontend"}},"tagged_versions":["1.0.5"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3538698,"resolution":"1","location":"assets","locale":"","width":1440,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3538698,"resolution":"2","location":"assets","locale":"","width":1440,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3538698,"resolution":"3","location":"assets","locale":"","width":1440,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3538698,"resolution":"4","location":"assets","locale":"","width":1440,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3538698,"resolution":"5","location":"assets","locale":"","width":1440,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3538698,"resolution":"6","location":"assets","locale":"","width":1440,"height":900},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3538698,"resolution":"7","location":"assets","locale":"","width":1440,"height":900},"screenshot-8.png":{"filename":"screenshot-8.png","revision":3538698,"resolution":"8","location":"assets","locale":"","width":1440,"height":900}},"screenshots":{"1":"Visual form builder with drag-and-drop fields, multi-column layouts, and the sample picker field.","2":"Sample library with categories, images, SKUs, and descriptions.","3":"Submissions dashboard with search, filters, starring, and CSV export.","4":"Frontend multi-step wizard form with sample picker and category filters.","5":"Settings page for spam protection, email notifications, and WooCommerce integration.","6":"Sample editor with categories, images, and descriptions.","7":"Frontend sample picker with product cards, images, and category filtering.","8":"Email notification settings with admin and submitter confirmation options."}},"plugin_section":[],"plugin_tags":[2253,196495,263640,263639,263638],"plugin_category":[],"plugin_contributors":[263641],"plugin_business_model":[],"class_list":["post-314357","plugin","type-plugin","status-publish","hentry","plugin_tags-form-builder","plugin_tags-product-samples","plugin_tags-request-form","plugin_tags-sample-management","plugin_tags-sample-request","plugin_contributors-josifoskibojan","plugin_committers-josifoskibojan"],"banners":{"banner":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/banner-772x250.png?rev=3538698","banner_2x":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/banner-1544x500.png?rev=3538698","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/icon.svg?rev=3538698","icon":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/icon.svg?rev=3538698","icon_2x":false,"generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/screenshot-1.png?rev=3538698","caption":"Visual form builder with drag-and-drop fields, multi-column layouts, and the sample picker field."},{"src":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/screenshot-2.png?rev=3538698","caption":"Sample library with categories, images, SKUs, and descriptions."},{"src":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/screenshot-3.png?rev=3538698","caption":"Submissions dashboard with search, filters, starring, and CSV export."},{"src":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/screenshot-4.png?rev=3538698","caption":"Frontend multi-step wizard form with sample picker and category filters."},{"src":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/screenshot-5.png?rev=3538698","caption":"Settings page for spam protection, email notifications, and WooCommerce integration."},{"src":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/screenshot-6.png?rev=3538698","caption":"Sample editor with categories, images, and descriptions."},{"src":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/screenshot-7.png?rev=3538698","caption":"Frontend sample picker with product cards, images, and category filtering."},{"src":"https:\/\/ps.w.org\/samplehq-request-form\/assets\/screenshot-8.png?rev=3538698","caption":"Email notification settings with admin and submitter confirmation options."}],"raw_content":"<!--section=description-->\n<p>SampleHQ Request Form is a free, standalone WordPress plugin for collecting product\nsample requests. It includes a local sample library, a drag-and-drop form builder,\nand a submissions dashboard. No external account is required.<\/p>\n\n<p><strong>Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Sample Library<\/strong> -- Manage product samples with categories, images, SKUs, and descriptions<\/li>\n<li><strong>Visual Form Builder<\/strong> -- Drag-and-drop builder with 17 field types and multi-column layouts<\/li>\n<li><strong>Sample Picker Field<\/strong> -- Lets visitors browse and select products with quantities<\/li>\n<li><strong>Submissions Dashboard<\/strong> -- View, search, filter, star, and export submissions as CSV<\/li>\n<li><strong>Multi-Step Wizard<\/strong> -- Split forms into steps with a progress indicator and per-step validation<\/li>\n<li><strong>Conditional Logic<\/strong> -- Show or hide fields based on other field values<\/li>\n<li><strong>Gutenberg Block<\/strong> -- Native block editor integration<\/li>\n<li><strong>Elementor Widget<\/strong> -- Works with Elementor page builder<\/li>\n<li><strong>Shortcode<\/strong> -- Embed with <code>[samplehq_form id=\"123\"]<\/code> in any page builder<\/li>\n<li><strong>WooCommerce Integration<\/strong> -- Use WooCommerce products in the sample picker; adds a \"Request a Sample\" button to product pages<\/li>\n<li><strong>Spam Protection<\/strong> -- Honeypot field, rate limiting, CSRF tokens, and optional Cloudflare Turnstile<\/li>\n<li><strong>File Uploads<\/strong> -- Server-side MIME validation, protected upload directory<\/li>\n<li><strong>Email Notifications<\/strong> -- Admin and submitter emails with theme-overridable templates<\/li>\n<li><strong>Privacy Controls<\/strong> -- Consent field, configurable IP retention, WordPress Privacy API (export and erasure)<\/li>\n<li><strong>Accessibility<\/strong> -- Built following WCAG 2.2 Level AA practices<\/li>\n<\/ul>\n\n<p><strong>Third-Party Services<\/strong><\/p>\n\n<p>This plugin connects to external services only when you explicitly enable them.\nNo data is sent to any third party by default.<\/p>\n\n<p><em>SampleHQ (optional):<\/em> This plugin can optionally connect to\n<a href=\"https:\/\/samplehq.io\">SampleHQ<\/a>, a sample management platform. When connected,\nform submissions and sample catalog data are sent to your SampleHQ workspace.\nNo data is sent unless you click \"Connect to SampleHQ\" in the plugin settings\nand complete the connection flow. The plugin is fully functional without\nconnecting. All features listed above are free and unlimited regardless of\nconnection status.<\/p>\n\n<ul>\n<li>Service URL: <a href=\"https:\/\/samplehq.io\">https:\/\/samplehq.io<\/a><\/li>\n<li>Terms of Service: <a href=\"https:\/\/samplehq.io\/terms\">https:\/\/samplehq.io\/terms<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/samplehq.io\/privacy\">https:\/\/samplehq.io\/privacy<\/a><\/li>\n<\/ul>\n\n<p><em>Cloudflare Turnstile (optional):<\/em> When enabled in Settings &gt; Spam Protection,\nform submissions are verified against the\n<a href=\"https:\/\/www.cloudflare.com\/products\/turnstile\/\">Cloudflare Turnstile<\/a> API.\nNo data is sent to Cloudflare unless you configure a Turnstile site key and secret.<\/p>\n\n<ul>\n<li>Service URL: <a href=\"https:\/\/www.cloudflare.com\/products\/turnstile\/\">https:\/\/www.cloudflare.com\/products\/turnstile\/<\/a><\/li>\n<li>Terms of Service: <a href=\"https:\/\/www.cloudflare.com\/website-terms\/\">https:\/\/www.cloudflare.com\/website-terms\/<\/a><\/li>\n<li>Privacy Policy: <a href=\"https:\/\/www.cloudflare.com\/privacypolicy\/\">https:\/\/www.cloudflare.com\/privacypolicy\/<\/a><\/li>\n<\/ul>\n\n<h3>Source Code<\/h3>\n\n<p>The full source code, including unminified JavaScript and build tools, is available at:\nhttps:\/\/github.com\/codeverbojan\/samplehq-request-form<\/p>\n\n<p>To build from source:<\/p>\n\n<ol>\n<li>Clone the repository<\/li>\n<li>Run <code>composer install<\/code><\/li>\n<li>Run <code>npm install<\/code><\/li>\n<li>Run <code>npm run build<\/code><\/li>\n<\/ol>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>samplehq-request-form<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the 'Plugins' menu in WordPress<\/li>\n<li>Go to <strong>SampleHQ Forms &gt; Sample Library<\/strong> to add your products<\/li>\n<li>Go to <strong>SampleHQ Forms &gt; Forms &gt; Add New<\/strong> to create a request form<\/li>\n<li>Embed the form using the Gutenberg block, Elementor widget, or shortcode<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20samplehq%20account%3F\"><h3>Do I need a SampleHQ account?<\/h3><\/dt>\n<dd><p>No. The plugin is fully standalone. All features work without any external account.\nConnecting to SampleHQ is optional and can be configured in Settings &gt; Connection.<\/p><\/dd>\n<dt id=\"is%20this%20plugin%20free%3F\"><h3>Is this plugin free?<\/h3><\/dt>\n<dd><p>Yes. All features are free with no time limits, submission caps, or locked features.<\/p><\/dd>\n<dt id=\"how%20do%20i%20create%20a%20form%3F\"><h3>How do I create a form?<\/h3><\/dt>\n<dd><p>Go to SampleHQ Forms &gt; Forms &gt; Create Form. The drag-and-drop builder lets you add\nfields from the palette on the left, arrange them in columns, and configure settings\non the right. Save when done, then embed the form on any page.<\/p><\/dd>\n<dt id=\"how%20do%20i%20embed%20a%20form%20on%20a%20page%3F\"><h3>How do I embed a form on a page?<\/h3><\/dt>\n<dd><p>Three options: use the native <strong>Gutenberg block<\/strong> (search for \"SampleHQ Form\" in the\nblock inserter), the <strong>Elementor widget<\/strong>, or the <strong>shortcode<\/strong> <code>[samplehq_form id=\"123\"]<\/code>\n(replace 123 with your form ID). All three work with any theme.<\/p><\/dd>\n<dt id=\"how%20does%20woocommerce%20integration%20work%3F\"><h3>How does WooCommerce integration work?<\/h3><\/dt>\n<dd><p>Install and activate WooCommerce, then go to SampleHQ Forms &gt; Settings &gt; WooCommerce\n(the tab only appears when WooCommerce is active). When enabled, the sample picker\nfield uses your WooCommerce products instead of the built-in sample library. A\n\"Request a Sample\" button is added to product pages, and you can filter which product\ncategories are available for sampling.<\/p><\/dd>\n<dt id=\"what%20display%20modes%20does%20the%20sample%20picker%20support%3F\"><h3>What display modes does the sample picker support?<\/h3><\/dt>\n<dd><p>The sample picker field supports card grid, list, and checklist display modes. You\ncan set a maximum selection count, enable category filtering, and allow quantity\ninput. The picker includes search and category tabs.<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20up%20email%20notifications%3F\"><h3>How do I set up email notifications?<\/h3><\/dt>\n<dd><p>Go to SampleHQ Forms &gt; Settings &gt; Email. Configure the admin notification address and\nsender name. Enable submitter confirmation emails to send an automatic reply with the\nsubmitted data. Individual forms can override the global email settings.<\/p><\/dd>\n<dt id=\"how%20do%20i%20export%20submissions%3F\"><h3>How do I export submissions?<\/h3><\/dt>\n<dd><p>Open SampleHQ Forms &gt; Submissions and click the \"Export CSV\" button. The export includes\nall submission data, custom field values, and metadata. Files are UTF-8 encoded with\nExcel compatibility and formula injection prevention built in.<\/p><\/dd>\n<dt id=\"what%20spam%20protection%20is%20available%3F\"><h3>What spam protection is available?<\/h3><\/dt>\n<dd><p>Three layers are always active: a honeypot field, rate limiting (configurable, default\n10 submissions per form per IP per hour), and CSRF token validation. You can optionally\nenable Cloudflare Turnstile under Settings &gt; Spam Protection.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20support%20conditional%20logic%3F\"><h3>Does the plugin support conditional logic?<\/h3><\/dt>\n<dd><p>Yes. Any field can have conditional visibility rules. Fields hidden by conditions are\nautomatically excluded from validation and sanitization, so users are never blocked by\nfields they cannot see.<\/p><\/dd>\n<dt id=\"how%20does%20the%20multi-step%20wizard%20work%3F\"><h3>How does the multi-step wizard work?<\/h3><\/dt>\n<dd><p>Set the form layout to \"Wizard (Multi-step)\" in the form builder settings. The form\nrenders as a multi-step flow with a step indicator, step labels, and navigation buttons.\nEach step validates its fields before allowing the user to proceed.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20gdpr%20compliant%3F\"><h3>Is the plugin GDPR compliant?<\/h3><\/dt>\n<dd><p>The plugin integrates with the WordPress Privacy API for personal data export and\nerasure requests. It includes a consent field type for collecting GDPR consent, IP\naddress collection can be disabled, and IP retention can be configured with automatic\npurging after a set number of days.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20accessible%3F\"><h3>Is the plugin accessible?<\/h3><\/dt>\n<dd><p>Yes. Forms include proper label associations, keyboard navigation, ARIA attributes,\nscreen reader announcements, and focus management following WCAG 2.2 Level AA practices.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Fixed: scoped admin notices to plugin pages only (guideline 11 compliance)<\/li>\n<li>Fixed: removed sslverify=false from upload protection self-check<\/li>\n<li>Fixed: include source JS\/CSS files in distribution zip for review transparency<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fixed: restored auto-login redirect after platform connection<\/li>\n<li>Fixed: replaced wp_redirect with wp_safe_redirect + allowed_redirect_hosts filter<\/li>\n<li>Fixed: sanitized $_SERVER inputs in connection callback handler<\/li>\n<li>Fixed: prefixed template variables and global plugin instance for guideline compliance<\/li>\n<li>Fixed: corrected auto_login_url type annotation in ConnectionManager<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Fixed: removed arbitrary CSS injection feature (wp.org review)<\/li>\n<li>Fixed: moved inline scripts to external enqueued JS files<\/li>\n<li>Fixed: added file upload validation (extension, MIME, is_uploaded_file)<\/li>\n<li>Fixed: added recursive sanitization for imported JSON form configs<\/li>\n<li>Fixed: sanitized connection_token input with sanitize_text_field<\/li>\n<li>Fixed: removed redundant wpApiSettings localization (wp-api-fetch provides it)<\/li>\n<li>Added: source code section in readme.txt with GitHub repo link<\/li>\n<li>Added: source\/license banner in all built JS files via BannerPlugin<\/li>\n<li>Fixed: React Hook exhaustive-deps warnings in FormBuilder<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Added optional SampleHQ platform connection with submission sync and data migration<\/li>\n<li>Fixed PHP 8.0 compatibility issue with standalone return type in ConnectionManager<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Added release procedure with CI changelog validation<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Sample library with categories, images, SKUs, and descriptions<\/li>\n<li>Visual drag-and-drop form builder with 17 field types<\/li>\n<li>Sample picker field with product grid, category filters, and search<\/li>\n<li>Multi-step wizard form layout with step indicator and per-step validation<\/li>\n<li>Submissions dashboard with search, filter, star, and CSV export<\/li>\n<li>Gutenberg block, Elementor widget, and shortcode embedding<\/li>\n<li>Spam protection: honeypot, Cloudflare Turnstile, rate limiting, CSRF tokens<\/li>\n<li>Email notifications with theme-overridable templates<\/li>\n<li>File upload field with server-side MIME validation and protected storage<\/li>\n<li>WooCommerce integration with product page sample request button<\/li>\n<li>Privacy controls: consent field, IP retention, WordPress Privacy API<\/li>\n<li>Conditional field visibility with rule builder<\/li>\n<li>Undo\/redo in form builder<\/li>\n<li>WCAG 2.2 Level AA accessibility practices<\/li>\n<\/ul>","raw_excerpt":"A complete sample request management system with a sample library, visual form builder, and submissions dashboard.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/314357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=314357"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/josifoskibojan"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=314357"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=314357"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=314357"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=314357"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=314357"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=314357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}