Launch Sale25% off with code LAUNCH25

Checkout Fields Manager Pro

v1.1.0

Advanced field control

📖 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. 1

    Install and activate the free CoderEmbassy Checkout Fields Manager first — Pro requires it and will not activate without it.

  2. 2

    Download the Pro ZIP from your CoderEmbassy account.

  3. 3

    Go to Plugins → Add New → Upload Plugin, choose the ZIP, and install it.

  4. 4

    Activate CoderEmbassy Checkout Fields Manager Pro.

  5. 5

    Go to WooCommerce → Checkout Fields Manager → License.

  6. 6

    Paste your license key and click Activate.

  7. 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.

SettingDescriptionTypeDefault
Enable WooCommerce Blocks checkout support
Registers compatible custom fields with the block-based checkout.ToggleOn
Show product thumbnails in order review
Display product images beside each line item in the checkout summary.ToggleOff
Enable quantity controls in order review
Let customers change item quantities from the checkout summary.ToggleOff
Enable pricing rules
Apply cart fees from fields that have pricing rules attached. Switching this off keeps the rules but stops charging.ToggleOn
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.ToggleOn
Customer type switcher label
Heading shown above the customer type buttons on the checkout page.TextCustomer Type
Switcher display style
Show customer type options as clickable buttons or as radio buttons.SelectButtons
Switcher position
Whether the type selector sits above the checkout form or inside the billing section.SelectAbove the checkout form

Switcher Style

Appearance of the customer type selector on the checkout page.

SettingDescriptionTypeDefault
Button background color
Background of the inactive type buttons.ColorTheme default
Active button color
Background of the currently selected type.ColorTheme default
Border color
Border around each type button.ColorTheme default
Font color
Label colour inside the buttons.ColorTheme default
Border radius (px)
Corner rounding of the buttons.Number8
Font size (px)
Label size inside the buttons.NumberTheme default
Button padding
CSS shorthand, for example 8px 16px.TextEmpty
Button margin
CSS shorthand, for example 0 4px.TextEmpty
Enable button shadow
Adds a drop shadow to the type buttons.ToggleOff

Address & Autofill

Override WooCommerce address formats and enable Google Places autofill.

SettingDescriptionTypeDefault
Address format overrides
Per-country address layouts. Format: country_code=>{name}\n{address_1}..., separated with a pipe.TextareaEmpty
Custom billing address keys
Comma-separated custom field keys to include in formatted billing addresses.TextEmpty
Custom shipping address keys
Comma-separated custom field keys to include in formatted shipping addresses.TextEmpty
Enable Google Address Autofill
Adds Google Places autocomplete to checkout address fields.ToggleOff
Google Maps API key
Required for address autofill. Only loaded when autofill is enabled.TextEmpty

Display

How values are formatted on the checkout.

SettingDescriptionTypeDefault
Currency position
Where the currency symbol appears on custom price fields.SelectBefore amount
Date field format
Format used by date input fields, for example Y-m-d or d/m/Y.TextY-m-d

Headings

Headings WooCommerce prints above its own checkout sections.

SettingDescriptionTypeDefault
Billing section heading
Replaces the default billing heading.TextBilling details
Shipping section heading
Replaces the default shipping heading.TextShipping address
Order notes label
Replaces the default order notes label.TextOrder notes

Order Emails

How custom field values appear in WooCommerce transactional emails.

SettingDescriptionTypeDefault
Email section heading
Heading shown above custom fields in order emails.TextAdditional Information

Advanced

Diagnostics and preview.

SettingDescriptionTypeDefault
Enable live preview mode
Adds the Preview screen, which renders the checkout as a chosen customer type without placing an order.ToggleOff

🎯 Feature Guides

Show a field only to certain customers

Conditional logic decides whether a field renders, based on what is happening at checkout.

  1. 1

    Go to WooCommerce → Checkout Fields Manager → Custom Fields.

  2. 2

    Click Edit on the field, then open the Visibility tab.

  3. 3

    Under 'Show Only When…', click Add condition.

  4. 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. 5

    Add more conditions to the same group for AND, or start a new group for OR.

  6. 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. 1

    Edit the field and open the Pricing tab.

  2. 2

    Click Add pricing rule.

  3. 3

    Choose Fixed fee or Percentage and enter the amount.

  4. 4

    Enter a fee label — this is what the customer sees in the order totals.

  5. 5

    Set the condition that triggers the fee, for example when the value equals 1 for a checkbox.

  6. 6

    Tick Taxable if the fee should have tax applied.

  7. 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. 1

    Go to Customer Types and click + Add Type.

  2. 2

    Enter a label, for example Wholesale, and a unique slug.

  3. 3

    Mark one type as the default shown on a customer's first visit.

  4. 4

    Click Save.

  5. 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. 1

    Go to Sections and click + Add Section.

  2. 2

    Enter a title, for example Company Details, and choose where it appears on the checkout.

  3. 3

    Click Save.

  4. 4

    Edit a field, and on the Basic tab choose the section under 'Custom section'.

  5. 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. 1

    Build your fields as you want them.

  2. 2

    Go to Templates and click + Save Current as Template.

  3. 3

    Give it a name and save.

  4. 4

    To reuse it, click Apply on any template.

  5. 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. 1

    On the source site, go to Import / Export and click Download Export File.

  2. 2

    On the destination site, go to Import / Export.

  3. 3

    Choose what may be overwritten: custom fields, customer types, sections, or settings.

  4. 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. 1

    Go to Settings → Advanced and switch on Enable live preview mode.

  2. 2

    Open the Preview screen.

  3. 3

    Choose a customer type, a cart total and a country.

  4. 4

    The screen shows which fields are visible and which are required in that context.

  5. 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.4

Whether 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.4

Whether 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.4

Override 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.4

Override 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.4

Register 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.4

Replace 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.4

Fires 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.4

Fires 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.4

Add 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.4

Add 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.4

Fires 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.4

Resolve 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.4

Fires 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.4

The 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.4

Declare 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.4

How 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.4

Adjust 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.4

Fires when the base plugin is deactivated.

Parameters

()

Example

add_action( 'cecfm_deactivate', function () { } );

📋 Changelog

v1.1.0August 2026LATEST
  • 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.