Installation
Manage Checkout Fields
Drag&drop to reorder fields. Click a field to expand it.
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Default value PRO - the fields can be preselected or already filled with the custom value by default.
For Checkbox enter Yes if it should be checked by default. For Radio button and Select, enter Value of the option which should be the default.
Meta name - it's the label's name in the database for developers' purposes.
In WooCommerce there are three CSS classes responsible for fields width and position. CSS class form-row-first positions the field in the first column, form-row-last in the second column, and form-row-wide sets field's width for both columns.[/box]

Adding Custom Fields
You can add multiple fields to sections of WooCommerce checkout.
Adding New Custom Field
- Go to Add new field box.
- Select field type.
- Enter field's label.
- Change field's name (optional for developers)
- Click Add Field button.
- Click Save Changes button.
Field will be add to Edit Section. Now you can edit field. Remember to save changes.
Editing additional fields in the order
Under the order, you can edit the added fields. Changing the settings and saving the order will change the details of the order.
Add this code to the functions.php file if the address fields are not aligned.
add_action( 'admin_head', function() {
?>
<style>
#order_data .order_data_column div.address[style*="display: none"] + div.edit_address {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
</style>
<?php
} );
Field Types
- Single Line Text
- Paragraph Text
- PRO Checkbox
- PRO Radio button
- PRO Select (Drop Down)
- PRO Multi-select
- PRO Date
- PRO Time
- PRO Color Picker
- PRO Headline
- PRO HTML or plain text
- PRO File Upload
Some of the fields have more options:
Value - for checkboxes. Value displayed in the order details if user checks the checkbox.
Options - for radio buttons and selects. Options which user sees during checkout.
Allowed file types - for upload file. It is required to add allowed file types because of the security reasons. Add file types after comma.
Maximum file size in MB - for upload file. It is required to add max file size.
Date format - for field type Date you can set custom date format.
Days before / Days after - for field type Date. Set range for date from calendar or leave blank if you won't limit range. To block range for day before or after just set "0".
img, a, strong, em, br
.Display On
You can select where the field should be displayed in the 'Display On' tab:
Pages/emails - select where the field should be displayed.
Formatting on pages/e-mails:
Display the field on a new line - it will display field in a new line, changing the default WooCommerce settings.
Show field label - it will display the field label before field content. This option is available only for custom fields.
State / County formatting:
Display state abbreviations - for State / County field. It will display a State code instead of the full name.
Display a comma before if the field is not on a new line - for State / County field. It will display a comma before State field.
Below, you can see in-action examples of displaying fields:

Conditional Logic
For any field it is possible to set rules when to show or hide the field.
There are three types of this logic:
- Conditional Logic for Fields,
- Conditional Logic for Products and Categories,
- NEWConditional Logic for Shipping Methods
Conditional logic for fields
The conditional logic for fields allows showing fields based on values from other fields, created in the plugin, such as: checkbox, radio and select.
Select action for a field when rules match:
- Show this field
- Hide this field
and the required condition:
- All rules match (and)
- One or more rules match (or)
You can add any number of rules. Rules matching is based on a field type (checkbox, radio and select) and field option.
Checkbox will have two options: checked and unchecked.
For radio and select options will be configured manually.
Conditional logic for products and categories
The conditional logic for products and categories allows showing field by selected products or categories.
Select action for the field when rules match:
- Show this field
- Hide this field
and the required condition:
- All rules match (and)
- One or more rules match (or)
You can add any number of rules. Rules matching is based on a product or a product category in the cart.
Conditional logic for shipping methods
The conditional logic for fields allows showing fields based on selected shipping method.
Select action for a field when rules match:
- Show this field
- Hide this field
You can add any number of rules. Rules matching is based on selected shipping method. To select shipping method, choose the shipping zone first (you'll see only shipping methods in this shipping zone).
Conditional logic for fields required in WooCommerce
WooCommerce forces some fields to be required. The plugin does not change this setting.
Required fields:
- Country/Region
- State/County
- Postcode/ZIP
Some shipping and invoice plugins also require these fields to be completed. Therefore we do not recommend hiding them.
The configuration of the store affects the validation of such an incomplete form:
- how are shipping options set in WooCommerce (e.g. store address)
- what are the requirements for shipping plugins
- or what products are in the basket
Setting the store address as the customer default location solves the problem in most cases.
WooCommerce > Settings > General
Make sure hiding is possible and will not cause a validation error.
Assigning a price to the custom fields
Fields added using FCF have an additional tab "Pricing" with available options for assigning a price.
The impact on the final purchase amount depends on the selected price type and its value.
- Fixed - net price set in currency units and independent of the cart.
- Percentage of Subtotal (ex. VAT) - percentage amount related to the net subtotal (cart value).
- Percentage of Subtotal (incl. VAT) - percentage amount related to the gross subtotal (cart value).
- Percentage of Total - percentage amount related to the Total (cart value + coupons + shipping).
The option to add a price is available for:
- Single Line Text
- Paragraph Text
- Checkbox
- Radio button
- Select (Drop Down)
- Multi-select
- Date
- Time
- Color Picker
- File Upload
Instructions for adding a price to the field
- Add a new field.
- Add options and other settings - if required by the selected field type (e.g. "Radio" field).
- Select the "Pricing" tab and check the "Enable Pricing" checkbox.
- One line of settings will appear if the selected field has no option (e.g. "Single Line Text").
- There will be separate lines with settings next to each option if the selected field has options (e.g. "Select").
- Assign a price by selecting its type from the "Price Type" list:
- Fixed - enter the net price
- Percentage of Subtotal (ex. VAT) - enter a percentage
- Percentage of Subtotal (incl. VAT) - enter a percentage
- Percentage of Total - enter a percentage
- Indicate the tax class by selecting the class from the "Tax Class" list. Save the changes.
This option will appear when the assigned price is greater than "0" and if the "Enable tax rates and calculations" option is enabled in the WooCommerce > Settings > General tab.
Displaying prices in the store
The price assigned to the field will be shown in the store either as a gross total price or as a percentage.
- Checkout - the price will be shown in brackets next to the field label (or next to an option) and will also appear in the "Order" section.
- Order Summary - the price will be shown as the amount included in the purchase.
- WooCommerce > Orders tab - the fields visible there are editable so it is possible to change the label and price or to add tax.
Important information
- Enable the "Rounding" option in the WooCommerce > Settings > Tax tab. This setting is required when more than one price field is added.
- Do not use the same labels.
- The fields added in the "Billing" and "Shipping" sections are cached. These fields are saved and autocompleted during next purchases. The other sections are not cached.
Field types
Single Line Text
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Default value PRO - enter the value that the field should be set to as default.
Meta name - it's the label's name in the database for developers' purposes.
Paragraph Text
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Default value PRO - enter the value that the field should be set to as default.
Meta name - it's the label's name in the database for developers' purposes.
Checkbox
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Value - value displayed in the order details if user checks the checkbox.
Default value PRO - enter the value that the field should be set to as default.
Meta name - it's the label's name in the database for developers' purposes.
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Options - enter a value and a label for each field option. The value will not be visible in the form. The label will be visible.
Options added here are not sorted. It is also not possible to swap them using the drag & drop method to arrange them in alphabetical order. This requires editing the functions.php file and pasting the following code there. Please replace billing_radio_button with meta_name of the appropriate field.
add_filter( 'woocommerce_form_field_args', function( $args, $key ) {
$field_names = [ 'billing_radio_button' ];
if ( ! in_array( $key, $field_names, true ) || ! ( $options = $args['options'] ?? [] ) ) {
return $args;
}
$options = array_map( function( $option_label ) {
return sanitize_title( $option_label );
}, $options );
asort( $options );
foreach ( $options as $option_value => $option_label ) {
$options[ $option_value ] = $args['options'][ $option_value ];
}
$args['options'] = $options;
return $args;
}, 10, 2 );
Default value PRO - enter Value of the option which should be the default.
Meta name - it's the label's name in the database for developers' purposes.
Select (Drop Down)
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Options - enter a value and a label for each field option. The value will not be visible in the form. The label will be visible.
Options added here are not sorted. It is also not possible to swap them using the drag & drop method to arrange them in alphabetical order. This requires editing the functions.php file and pasting the following code there. Please replace billing_select with meta_name of the appropriate field.
add_filter( 'woocommerce_form_field_args', function( $args, $key ) {
$field_names = [ 'billing_select' ];
if ( ! in_array( $key, $field_names, true ) || ! ( $options = $args['options'] ?? [] ) ) {
return $args;
}
$options = array_map( function( $option_label ) {
return sanitize_title( $option_label );
}, $options );
asort( $options );
foreach ( $options as $option_value => $option_label ) {
$options[ $option_value ] = $args['options'][ $option_value ];
}
$args['options'] = $options;
return $args;
}, 10, 2 );
Default value PRO - enter Value of the option which should be the default.
Meta name - it's the label's name in the database for developers' purposes.
Multi-select
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Options - enter a value and a label for each field option. The value will not be visible in the form. The label will be visible.
Options added here are not sorted. It is also not possible to swap them using the drag & drop method to arrange them in alphabetical order. This requires editing the functions.php file and pasting the following code there. Please replace billing_multi_select with meta_name of the appropriate field.
add_filter( 'woocommerce_form_field_args', function( $args, $key ) {
$field_names = [ 'billing_multi_select' ];
if ( ! in_array( $key, $field_names, true ) || ! ( $options = $args['options'] ?? [] ) ) {
return $args;
}
$options = array_map( function( $option_label ) {
return sanitize_title( $option_label );
}, $options );
asort( $options );
foreach ( $options as $option_value => $option_label ) {
$options[ $option_value ] = $args['options'][ $option_value ];
}
$args['options'] = $options;
return $args;
}, 10, 2 );
Meta name - it's the label's name in the database for developers' purposes.
Date
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Meta name - it's the label's name in the database for developers' purposes.
Date settings
- Date format – default date format dd.mm.yy eg. 14.04.2014,
- Days before – a range of days available in the calendar before the current date,
- Days after – a range of days available in the calendar after the current date.
Time
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Meta name - it's the label's name in the database for developers' purposes.
Color Picker
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Meta name - it's the label's name in the database for developers' purposes.
Headline
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Label - enter field's label. You can use HTML here.
Meta name - it's the label's name in the database for developers' purposes.
HTML or plain text
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Label - enter field's label. You can use HTML here.
Meta name - it's the label's name in the database for developers' purposes.
<p></p>
tags with their content being moved to the top of the checkout form or similar issues with their proper displaying, please use the <xxx></xxx>
tags instead.File Upload
Field on the checkout page:
Configuration:
Enable field - check to show a field or uncheck to hide a field.
Required field - check to make a field required, uncheck to make a field optional.
Label - enter field's label. You can use HTML here.
Meta name - it's the label's name in the database for developers' purposes.
Allowed file types - provide file types that will be available to upload
Maximum file size in MB - provide the maximum file size that your customer can upload
Settings
Go to menu WooCommerce → Checkout Fields → Settings.
CSS jQuery UI - in the plugin's settings, you can disable loading of the CSS jQuery UI file. The CSS file is used to style some additional fields in the order (i.e. Date field), but it may cause conflicts with other plugins that also make use of jQuery UI (i.e. to create tabs). If you notice any problems when displaying your shop, try to disable this CSS file.
Custom Sections - you can add custom sections to checkout. Check custom sections and click Save changes. New sections will show up in tabs in the plugin menu.
Below you can see all custom sections on Storefront 2.1.1 example. For better presentation, the theme was modified to one column view in checkout by Storefront Checkout Customiser.

Custom Sections
After adding custom section go to it's tab, add new fields and edit sections. You can set Section title, Section titile tag and CSS class.
All fields in the "Biling" and "Shipping" sections are cached, which means that when placing the next order, they will be completed or marked in accordance with the previous order.
Cached sections:
- Billing
- Shipping
Non-cached sections:
- Order
- Before Customer Details
- After Customer Details
- Before Billing Form
- After Billing Form
- Before Shipping Form
- After Shipping Form
- Before Registration Form
- After Registration Form
- Before Order Notes
- After Order Notes
- Before Submit
- After Submit
Usage Examples
Additional Agreements at the Checkout
You can add additional checkboxes that will appear directly over the button used to placing an order. Here you can also add options, such as: consent to send a newsletter or other sign ups to which the user should agree. Every added checkbox can be made obligatory or optional.

In plugin settings add custom sections Before Submit. Next:
- Add field type Checkbox and expand field to editing.
- Check Required field if you want to require this option.
- Enter the label of the checkbox.
- Enter the value of the checkbox (e.g. Yes, Selected, etc.). The value will be displayed only in the order preview if the checkbox was selected by the user. It's meant for the administrator only.
- Optionally, enter the CSS class.
- Click Save Changes.
Information on selecting the checkbox in the order
If the checkbox has been selected by the user, the information appears in the details of the order:

Displaying values of fields using custom PHP code. For advanced users
If you would like to display a value of specific field entered by your customer in the checkout, use below PHP code:
echo $order->get_meta( 'meta_name');
To learn a meta name (the name that the field is written under in the database), check the field's configuration:
So, in this example: to display VAT Number field value with meta name _billing_vat_number
, use below PHP code:
echo $order->get_meta( '_billing_vat_number');
Deleting the changes
To reset sections settings click "Reset Section Settings" button. For standard sections (Billing, Shipping, Order) custom fields will be deleted and standard fields will be reset to their default state, and for additional sections, all fields will be deleted.