📖 Overview
Checkout Fields Manager Pro is an add-on for the free CoderEmbassy Checkout Fields Manager. It keeps the free plugin as the base and layers advanced capability on top, so both plugins stay active and nothing is duplicated or moved.
It adds conditional logic to every field: show or hide a field based on cart total, products, categories, country, coupon, customer type, another field's value, payment method, shipping method or user role. Rules combine with AND inside a group and OR between groups, and a field can be made required only when those rules match.
A pricing engine turns fields into revenue. Attach a fixed or percentage fee to any field and it is added to the cart when the customer uses it — gift wrapping, express handling, or a surcharge for a particular option.
Pro also removes the free plugin's limits: unlimited custom customer types instead of the fixed Private and Company pair, unlimited sections for grouping fields under headings, four extra field types, saved and starter templates, import and export, a live checkout preview, usage analytics, and WPML translation.
Everything works on both the classic and the block checkout. Because it is an add-on, deactivating Pro drops your store back to the free feature set with every field, section, rule and customer type left intact in the database — nothing is deleted, and it all returns when Pro is active again.
Conditional Logic
Show or hide checkout fields based on other field values, cart contents, specific products, or user role.
Rich Field Types
Add text, textarea, dropdown, checkbox, radio, date picker, file upload, and color picker fields.
Field-Based Pricing
Charge extra fees or add-ons based on what customers select in your custom checkout fields.
Customer Type Rules
Show different fields to guest, logged-in, and wholesale customers for a fully tailored checkout.
Drag & Drop Ordering
Reorder checkout sections and fields with a simple drag-and-drop interface — no code required.
Order Meta Saving
All custom field values are saved to orders and displayed in the WooCommerce admin and emails.
📦 Installation
Follow these steps to install and activate the plugin on your WordPress/WooCommerce site. Requires WordPress 6.0+, WooCommerce 7.0+, and PHP 8.0+.
- 1
Install and activate the free CoderEmbassy Checkout Fields Manager first — Pro requires it and will not activate without it.
- 2
Download the Pro ZIP from your CoderEmbassy account.
- 3
Go to Plugins → Add New → Upload Plugin, choose the ZIP, and install it.
- 4
Activate CoderEmbassy Checkout Fields Manager Pro.
- 5
Go to WooCommerce → Checkout Fields Manager → License.
- 6
Paste your license key and click Activate.
- 7
The Pro screens unlock: Sections, Templates, Preview, Analytics, and Import / Export.
⚙️ Configuration
General
Global behaviour added by Pro, on the free plugin's Settings screen.
| Setting | Description | Type | Default |
|---|---|---|---|
Enable WooCommerce Blocks checkout support | Registers compatible custom fields with the block-based checkout. | Toggle | On |
Show product thumbnails in order review | Display product images beside each line item in the checkout summary. | Toggle | Off |
Enable quantity controls in order review | Let customers change item quantities from the checkout summary. | Toggle | Off |
Enable pricing rules | Apply cart fees from fields that have pricing rules attached. Switching this off keeps the rules but stops charging. | Toggle | On |
Keep revision history | Store a snapshot each time a field changes so it can be rolled back. The most recent 20 per field are kept. | Toggle | On |
Customer type switcher label | Heading shown above the customer type buttons on the checkout page. | Text | Customer Type |
Switcher display style | Show customer type options as clickable buttons or as radio buttons. | Select | Buttons |
Switcher position | Whether the type selector sits above the checkout form or inside the billing section. | Select | Above the checkout form |
Switcher Style
Appearance of the customer type selector on the checkout page.
| Setting | Description | Type | Default |
|---|---|---|---|
Button background color | Background of the inactive type buttons. | Color | Theme default |
Active button color | Background of the currently selected type. | Color | Theme default |
Border color | Border around each type button. | Color | Theme default |
Font color | Label colour inside the buttons. | Color | Theme default |
Border radius (px) | Corner rounding of the buttons. | Number | 8 |
Font size (px) | Label size inside the buttons. | Number | Theme default |
Button padding | CSS shorthand, for example 8px 16px. | Text | Empty |
Button margin | CSS shorthand, for example 0 4px. | Text | Empty |
Enable button shadow | Adds a drop shadow to the type buttons. | Toggle | Off |
Address & Autofill
Override WooCommerce address formats and enable Google Places autofill.
| Setting | Description | Type | Default |
|---|---|---|---|
Address format overrides | Per-country address layouts. Format: country_code=>{name}\n{address_1}..., separated with a pipe. | Textarea | Empty |
Custom billing address keys | Comma-separated custom field keys to include in formatted billing addresses. | Text | Empty |
Custom shipping address keys | Comma-separated custom field keys to include in formatted shipping addresses. | Text | Empty |
Enable Google Address Autofill | Adds Google Places autocomplete to checkout address fields. | Toggle | Off |
Google Maps API key | Required for address autofill. Only loaded when autofill is enabled. | Text | Empty |
Display
How values are formatted on the checkout.
| Setting | Description | Type | Default |
|---|---|---|---|
Currency position | Where the currency symbol appears on custom price fields. | Select | Before amount |
Date field format | Format used by date input fields, for example Y-m-d or d/m/Y. | Text | Y-m-d |
Headings
Headings WooCommerce prints above its own checkout sections.
| Setting | Description | Type | Default |
|---|---|---|---|
Billing section heading | Replaces the default billing heading. | Text | Billing details |
Shipping section heading | Replaces the default shipping heading. | Text | Shipping address |
Order notes label | Replaces the default order notes label. | Text | Order notes |
Order Emails
How custom field values appear in WooCommerce transactional emails.
| Setting | Description | Type | Default |
|---|---|---|---|
Email section heading | Heading shown above custom fields in order emails. | Text | Additional Information |
Advanced
Diagnostics and preview.
| Setting | Description | Type | Default |
|---|---|---|---|
Enable live preview mode | Adds the Preview screen, which renders the checkout as a chosen customer type without placing an order. | Toggle | Off |
🎯 Feature Guides
Show a field only to certain customers
Conditional logic decides whether a field renders, based on what is happening at checkout.
- 1
Go to WooCommerce → Checkout Fields Manager → Custom Fields.
- 2
Click Edit on the field, then open the Visibility tab.
- 3
Under 'Show Only When…', click Add condition.
- 4
Choose a rule type — cart total, product, category, country, coupon, customer type, another field's value, payment method, shipping method or user role.
- 5
Add more conditions to the same group for AND, or start a new group for OR.
- 6
Click Save Field.
Leave the rules empty to always show the field. Use the Preview screen to test a rule without placing an order.
A field that is hidden by its conditions is never validated, so it cannot block checkout even if it is marked required.
Charge a fee based on a field
Turn a checkout field into a paid option, such as gift wrapping or express handling.
- 1
Edit the field and open the Pricing tab.
- 2
Click Add pricing rule.
- 3
Choose Fixed fee or Percentage and enter the amount.
- 4
Enter a fee label — this is what the customer sees in the order totals.
- 5
Set the condition that triggers the fee, for example when the value equals 1 for a checkbox.
- 6
Tick Taxable if the fee should have tax applied.
- 7
Click Save Field.
A field can carry several rules, so one dropdown can charge different amounts per option.
Fees only apply while 'Enable pricing rules' is on in Settings, and only for fields visible to the current customer.
Create a custom customer type
Offer different checkout paths to different kinds of buyer — retail, wholesale, B2B.
- 1
Go to Customer Types and click + Add Type.
- 2
Enter a label, for example Wholesale, and a unique slug.
- 3
Mark one type as the default shown on a customer's first visit.
- 4
Click Save.
- 5
Edit any custom field and tick which customer types should see it on the Basic tab.
Style the checkout switcher under Settings → Switcher Style, and set its label and position under Settings → General.
If Pro is deactivated, custom types stay in the database but the checkout falls back to Private and Company. Nothing is deleted.
Group fields into a section
Sections put a heading above a group of fields so a long checkout reads clearly.
- 1
Go to Sections and click + Add Section.
- 2
Enter a title, for example Company Details, and choose where it appears on the checkout.
- 3
Click Save.
- 4
Edit a field, and on the Basic tab choose the section under 'Custom section'.
- 5
Repeat for every field that belongs in that section.
Use the Enable toggle on a section card to hide a whole group without deleting it.
Sections apply to the classic checkout. The block checkout has its own zones — use the field's 'Blocks checkout location' setting instead.
Save and reuse a field configuration
Templates capture a whole checkout setup so it can be applied again later.
- 1
Build your fields as you want them.
- 2
Go to Templates and click + Save Current as Template.
- 3
Give it a name and save.
- 4
To reuse it, click Apply on any template.
- 5
Three starter templates are built in: B2B Checkout, Gift Order and Delivery Preferences.
Starter templates are a fast way to see how a complete configuration is put together.
Applying a template replaces your current field configuration. Export first if you want a way back.
Move your setup to another site
Import and export carry fields, customer types, sections and settings between sites as a JSON file.
- 1
On the source site, go to Import / Export and click Download Export File.
- 2
On the destination site, go to Import / Export.
- 3
Choose what may be overwritten: custom fields, customer types, sections, or settings.
- 4
Click Choose JSON File and select the exported file.
New items are always created. Existing ones are only replaced when you tick the matching overwrite option.
Matching is by field key, type slug and section key. Items with the same key are treated as the same item.
Preview the checkout before going live
Preview renders your fields as a given customer would see them, without placing an order.
- 1
Go to Settings → Advanced and switch on Enable live preview mode.
- 2
Open the Preview screen.
- 3
Choose a customer type, a cart total and a country.
- 4
The screen shows which fields are visible and which are required in that context.
- 5
Click Refresh Preview after changing a field or a rule.
This is the quickest way to confirm a conditional rule does what you intended.
Preview simulates the checkout context. It does not create an order or run payment gateways.
🔗 Developer Hooks
Use these WordPress actions and filters to extend or modify Checkout Fields Manager Probehavior programmatically. Add snippets to your theme's functions.php or a custom plugin.
cecfm_is_profiltersince 1.0.4Whether paid capability is unlocked. Pro answers this from its licence state; return true to unlock every gated feature.
Parameters
( bool $is_pro )Example
add_filter( 'cecfm_is_pro', '__return_true' );
cecfm_canfiltersince 1.0.4Whether one named capability is available. Capabilities include customer_types, conditions, conditional_required, pricing, advanced_field_types, unlimited_sections, templates, import_export, preview, revisions, analytics and multilingual.
Parameters
( bool $can, string $feature )Example
add_filter( 'cecfm_can', function ( $can, $feature ) { return 'pricing' === $feature ? false : $can; }, 10, 2 );cecfm_field_is_visiblefiltersince 1.0.4Override whether a field renders. Pro applies its conditional rules here.
Parameters
( bool $visible, CECFM_Field $field, array $context )Example
add_filter( 'cecfm_field_is_visible', function ( $visible, $field, $context ) { return 'vat_number' === $field->field_key ? is_user_logged_in() : $visible; }, 10, 3 );cecfm_field_is_requiredfiltersince 1.0.4Override whether a visible field is required. A hidden field is never required, and that cannot be overridden.
Parameters
( bool $required, CECFM_Field $field, array $context )Example
add_filter( 'cecfm_field_is_required', function ( $required, $field, $context ) { return 'po_number' === $field->field_key ? true : $required; }, 10, 3 );cecfm_field_typesfiltersince 1.0.4Register additional field types. Pro adds multiselect, file, repeater and custom_price through this filter.
Parameters
( array $types )Example
add_filter( 'cecfm_field_types', function ( $types ) { $types['colour'] = 'Colour picker'; return $types; } );cecfm_field_htmlfiltersince 1.0.4Replace a field's rendered markup entirely.
Parameters
( string $html, CECFM_Field $field, array $context )Example
add_filter( 'cecfm_field_html', function ( $html, $field ) { return $html; }, 10, 2 );cecfm_before_field_renderactionsince 1.0.4Fires immediately before a custom field is rendered on the checkout.
Parameters
( CECFM_Field $field, array $context )Example
add_action( 'cecfm_before_field_render', function ( $field ) { echo '<div class="my-wrap">'; } );cecfm_after_field_renderactionsince 1.0.4Fires immediately after a custom field is rendered.
Parameters
( CECFM_Field $field, array $context )Example
add_action( 'cecfm_after_field_render', function ( $field ) { echo '</div>'; } );cecfm_cart_feesactionsince 1.0.4Add cart fees based on submitted field values. Pro's pricing engine runs here.
Parameters
( array $fields, array $context, WC_Cart $cart )Example
add_action( 'cecfm_cart_fees', function ( $fields, $context, $cart ) { $cart->add_fee( 'Handling', 5 ); }, 10, 3 );cecfm_validate_fieldfiltersince 1.0.4Add custom validation. Return a WP_Error to reject the value.
Parameters
( mixed $result, CECFM_Field $field, mixed $value, array $context )Example
add_filter( 'cecfm_validate_field', function ( $result, $field, $value ) { return $result; }, 10, 3 );cecfm_after_validationactionsince 1.0.4Fires after all checkout field validation has run.
Parameters
( array $results, array $context )Example
add_action( 'cecfm_after_validation', function ( $results ) { }, 10, 1 );cecfm_current_customer_typefiltersince 1.0.4Resolve the active customer type slug for the current request.
Parameters
( string $slug, array $context )Example
add_filter( 'cecfm_current_customer_type', function ( $slug ) { return $slug ?: 'wholesale'; } );cecfm_customer_type_changedactionsince 1.0.4Fires when the customer switches type on the checkout.
Parameters
( string $new_slug, string $old_slug )Example
add_action( 'cecfm_customer_type_changed', function ( $new, $old ) { }, 10, 2 );cecfm_max_sectionsfiltersince 1.0.4The number of sections allowed. Pro raises this to unlimited.
Parameters
( int $max )Example
add_filter( 'cecfm_max_sections', function () { return 5; } );cecfm_settings_schemafiltersince 1.0.4Declare additional settings. Settings live in one option, so a key must be declared here or it is discarded on save. Types: bool, key, text, textarea, raw, hex, absint, absint_or_empty.
Parameters
( array $schema )Example
add_filter( 'cecfm_settings_schema', function ( $schema ) { $schema['my_setting'] = array( 'bool', false ); return $schema; } );cecfm_keep_revisionsfiltersince 1.0.4How many revisions to keep per field. Return 0 or less to keep every revision.
Parameters
( int $limit, string $entity_type, int $entity_id )Example
add_filter( 'cecfm_keep_revisions', function () { return 50; } );cecfm_blocks_checkout_contextfiltersince 1.0.4Adjust the context used when evaluating fields on the block checkout.
Parameters
( array $context )Example
add_filter( 'cecfm_blocks_checkout_context', function ( $context ) { return $context; } );cecfm_deactivateactionsince 1.0.4Fires when the base plugin is deactivated.
Parameters
()Example
add_action( 'cecfm_deactivate', function () { } );📋 Changelog
- New
Rebuilt as an add-on for the free Checkout Fields Manager. Both plugins now run together, so a store keeps its wordpress.org install active instead of replacing it.
- New
Conditional logic with ten rule types and AND/OR groups, plus conditionally required fields.
- New
Pricing rules that add fixed or percentage cart fees from any field.
- New
Unlimited custom customer types, with full styling for the checkout switcher.
- New
Unlimited sections, saved and starter templates, import and export, live checkout preview, and field usage analytics.
- New
Four extra field types: multi-select, file upload, repeater and custom price.
- New
Settings tabs for switcher style, address formats and autofill, display, section headings and order emails.
- Fix
Licence enforcement now observes revocation and expiry. Previously a refunded or expired licence kept Pro features working indefinitely.
- Fix
An in-app licence banner now appears on the plugin's own screens. Expired licences previously produced no visible warning.
- Fix
The expired licence reminder could never appear, and its seven-day cooldown was never recorded.
- Fix
Switching customer type on the checkout had no effect, because the add-on wrote to a different session key than the base plugin reads.
- Fix
Sections never loaded on the Sections screen, and showed an upgrade notice even with an active licence.
- Fix
Custom sections could be created but never assigned to a field. A section picker has been added to the field editor.
- Fix
Analytics counted order data under the pre-rename meta prefix, so newer orders reported a zero fill rate.
- Improved
Removed a duplicate standalone License menu; licensing now lives only inside the plugin's own screens.
- Improved
The licence check no longer contacts the licence server during checkout, so a slow or unreachable server cannot affect a customer placing an order.
- Security
The signing secret is injected only at release-build time. It is never present in source.
Need help with Checkout Fields Manager Pro?
Our support team is ready to assist you.