{"id":354730,"date":"2026-08-18T12:16:48","date_gmt":"2026-08-18T12:16:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/dreamfoxmedia-checkout-fields-manager-for-woocommerce\/"},"modified":"2026-08-18T12:16:14","modified_gmt":"2026-08-18T12:16:14","slug":"dreamfox-checkout-logic-builder","status":"publish","type":"plugin","link":"https:\/\/nb.wordpress.org\/plugins\/dreamfox-checkout-logic-builder\/","author":12721565,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.2","stable_tag":"1.0.2","tested":"7.0.4","requires":"6.4","requires_php":"7.4","requires_plugins":null,"header_name":"Dreamfox Checkout Logic Builder for WooCommerce","header_author":"Dreamfox Media","header_description":"Add, edit, hide and reorder WooCommerce checkout fields with conditional logic and custom validation \u2014 on both the classic shortcode checkout and the block checkout.","assets_banners_color":"","last_updated":"2026-08-18 12:16:14","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/dreamfoxmedia.com\/","header_author_uri":"https:\/\/dreamfoxmedia.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":29,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.2":{"tag":"1.0.2","author":"dreamfox","date":"2026-08-18 12:16:14"}},"upgrade_notice":{"1.0.2":"<p>Maintenance release, no functional changes.<\/p>","1.0.1":"<p>Renamed to Dreamfox Checkout Logic Builder for WooCommerce.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.2"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"The Fields tab: drag-and-drop builder with block-checkout compatibility badges.","2":"Editing a field: type, section, validation and conditional logic.","3":"Default Fields: hide, relabel or change required-ness of built-in fields.","4":"A custom field on the classic checkout.","5":"The same field on the block checkout.","6":"Captured values on the admin order screen and in the order email.","7":"Tools: JSON import\/export and reset."}},"plugin_section":[],"plugin_tags":[3148,256314,61045,16816,286],"plugin_category":[45],"plugin_contributors":[82375],"plugin_business_model":[],"class_list":["post-354730","plugin","type-plugin","status-publish","hentry","plugin_tags-checkout","plugin_tags-checkout-builder","plugin_tags-checkout-fields","plugin_tags-conditional-fields","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-dreamfox","plugin_committers-dreamfox"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/dreamfox-checkout-logic-builder.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Dreamfox Checkout Logic Builder for WooCommerce<\/strong> gives you full control over your checkout form. Add your own fields, hide or relabel the built-in ones, reorder everything with drag-and-drop, and show fields only when they are relevant with conditional logic \u2014 all with custom validation rules and your own error messages.<\/p>\n\n<p>The big differentiator: it works on <strong>both WooCommerce checkouts<\/strong>. The classic <code>[woocommerce_checkout]<\/code> shortcode and the block checkout (the default since WooCommerce 8.3) are driven by the same field definitions, and a captured value lands on the order under the same meta key (<code>_dfclb_{field id}<\/code>) either way. Migrate checkouts whenever you like \u2014 your fields and your data pipeline don't change.<\/p>\n\n<h4>Free features<\/h4>\n\n<ul>\n<li><strong>Six field types<\/strong> \u2013 text, textarea, select (dropdown), checkbox, radio buttons and date.<\/li>\n<li><strong>Both checkouts<\/strong> \u2013 one definition renders on the classic shortcode checkout AND the block checkout.<\/li>\n<li><strong>Three sections<\/strong> \u2013 attach fields to the billing address, shipping address or order (additional information) area.<\/li>\n<li><strong>Drag-and-drop ordering<\/strong> \u2013 the order in the builder is the order at checkout.<\/li>\n<li><strong>Manage default fields<\/strong> \u2013 hide, relabel or change the required-ness of every built-in WooCommerce checkout field.<\/li>\n<li><strong>Conditional logic<\/strong> \u2013 show a field only when another field has a certain value; on the classic checkout also based on cart total, cart contents, shipping method or payment method.<\/li>\n<li><strong>Custom validation<\/strong> \u2013 regex pattern, minimum\/maximum length and a custom error message per field.<\/li>\n<li><strong>Placeholder, default value, CSS class and help text<\/strong> per field.<\/li>\n<li><strong>Values everywhere they matter<\/strong> \u2013 on the admin order screen, in customer and admin order emails, on the customer's order details page, in the WooCommerce REST API (<code>meta_data<\/code>) and in the WordPress personal-data export\/erase tools (GDPR).<\/li>\n<li><strong>JSON import\/export<\/strong> \u2013 back up your field setup or copy it to another store.<\/li>\n<li><strong>Duplicate a field<\/strong> \u2013 iterate on variations quickly.<\/li>\n<li><strong>Reset to defaults<\/strong> \u2013 one action restores the stock WooCommerce checkout.<\/li>\n<li><strong>Conflict detection<\/strong> \u2013 a friendly heads-up when another checkout-field plugin is active.<\/li>\n<li><strong>Translation ready<\/strong> \u2013 all strings localizable; field labels are filterable (<code>dfclb_field_label<\/code>) for WPML\/Polylang string translation.<\/li>\n<li><strong>HPOS compatible<\/strong> \u2013 declares full High-Performance Order Storage support and uses CRUD meta throughout.<\/li>\n<li><strong>Lightweight<\/strong> \u2013 assets are only enqueued on the checkout page and the plugin's own settings screen.<\/li>\n<\/ul>\n\n<h4>Block checkout notes (honest fine print)<\/h4>\n\n<p>The block checkout supports a smaller set of field types than the classic checkout. Definitions degrade gracefully, and the builder shows a badge on affected types so you're never surprised:<\/p>\n\n<ul>\n<li><strong>Textarea<\/strong> renders as a single-line text field (multiline content is not possible there).<\/li>\n<li><strong>Radio buttons<\/strong> render as a dropdown.<\/li>\n<li><strong>Date<\/strong> renders as a text field validated against the <code>YYYY-MM-DD<\/code> format.<\/li>\n<\/ul>\n\n<p>Conditional logic on the block checkout currently covers <strong>field-value conditions<\/strong>. Conditions on cart total, cart contents, shipping method or payment method apply to the classic checkout only.<\/p>\n\n<p>Hiding or relabeling default <em>address<\/em> fields applies to the classic checkout; the block checkout manages its own address fields.<\/p>\n\n<p>Built by <a href=\"https:\/\/dreamfoxmedia.com\">Dreamfox Media<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/dreamfox-checkout-logic-builder<\/code>, or install through the WordPress plugins screen.<\/li>\n<li>Activate the plugin through the 'Plugins' screen.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Checkout Fields<\/strong> and open the <strong>Fields<\/strong> tab to add your first custom field.<\/li>\n<li>Optionally hide or relabel built-in fields under <strong>Default Fields<\/strong>.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20the%20block%20checkout%3F\"><h3>Does this work with the block checkout?<\/h3><\/dt>\n<dd><p>Yes \u2014 that's the point. Fields defined in the builder are registered with WooCommerce's Additional Checkout Fields API for the block checkout and injected into <code>woocommerce_checkout_fields<\/code> for the classic checkout. The captured value is stored under the same <code>_dfclb_{field id}<\/code> order-meta key in both cases.<\/p><\/dd>\n<dt id=\"why%20does%20my%20textarea%2Fradio%2Fdate%20field%20look%20different%20on%20the%20block%20checkout%3F\"><h3>Why does my textarea\/radio\/date field look different on the block checkout?<\/h3><\/dt>\n<dd><p>The block checkout natively supports text, select and checkbox fields. Other types degrade to the closest supported type: textarea becomes single-line text, radio becomes a dropdown, and date becomes a text field validated as <code>YYYY-MM-DD<\/code>. The builder shows a badge on these types.<\/p><\/dd>\n<dt id=\"where%20do%20i%20find%20the%20captured%20values%3F\"><h3>Where do I find the captured values?<\/h3><\/dt>\n<dd><p>On the order screen in wp-admin (a \"Checkout fields\" box), in the order emails, on the customer's order-received\/view-order page, and via the REST API in the order's <code>meta_data<\/code> under <code>_dfclb_{field id}<\/code>.<\/p><\/dd>\n<dt id=\"can%20i%20show%20a%20field%20only%20for%20certain%20countries%3F\"><h3>Can I show a field only for certain countries?<\/h3><\/dt>\n<dd><p>Yes. Add a conditional-logic rule like \"billing_country equals NL\" to the field. The field then appears only when that condition holds, live in the browser and enforced again server-side. A field hidden by its conditions is never validated as required.<\/p><\/dd>\n<dt id=\"can%20conditions%20depend%20on%20the%20cart%20or%20the%20payment%20method%3F\"><h3>Can conditions depend on the cart or the payment method?<\/h3><\/dt>\n<dd><p>On the classic checkout, yes: cart total, cart contents (product ID), shipping method and payment method are all available as rule sources. On the block checkout, only field-value rules apply in v1.<\/p><\/dd>\n<dt id=\"does%20it%20support%20a%20multi-step%20checkout%20plugin%3F\"><h3>Does it support a multi-step checkout plugin?<\/h3><\/dt>\n<dd><p>Multi-step checkouts are not actively supported or tested. On the classic side the plugin uses only standard WooCommerce hooks (<code>woocommerce_checkout_fields<\/code>, checkout validation and order creation), so a multi-step plugin that keeps those hooks intact will usually work \u2014 but that's a bonus, not a promise.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20captured%20values%20when%20i%20delete%20a%20field%20or%20uninstall%3F\"><h3>What happens to captured values when I delete a field or uninstall?<\/h3><\/dt>\n<dd><p>Nothing. Values already stored on orders are order data and are kept. Uninstalling removes only the plugin's settings.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr-friendly%3F\"><h3>Is it GDPR-friendly?<\/h3><\/dt>\n<dd><p>Yes. Captured values are included in WooCommerce's personal-data export for an order and removed when an order is anonymized via the WordPress erase tools.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20compatible%20with%20hpos%20%28high-performance%20order%20storage%29%3F\"><h3>Is the plugin compatible with HPOS (High-Performance Order Storage)?<\/h3><\/dt>\n<dd><p>Yes, the plugin declares full HPOS compatibility and only ever touches order meta through the CRUD API.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Maintenance release for WordPress.org resubmission under the new name.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Renamed to Dreamfox Checkout Logic Builder for WooCommerce.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release: custom fields on both the classic and block checkout, default-field management, conditional logic, custom validation, JSON import\/export, GDPR integration, HPOS compatible.<\/li>\n<\/ul>","raw_excerpt":"Add, edit, hide and reorder WooCommerce checkout fields with conditional logic \u2014 on both the classic and the block checkout.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/354730","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=354730"}],"author":[{"embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/dreamfox"}],"wp:attachment":[{"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=354730"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=354730"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=354730"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=354730"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=354730"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/nb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=354730"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}