How to Add Custom Columns to the WooCommerce Orders List in Dashboard
Home » Blog » WordPress » How to Add Custom Columns to the WooCommerce Orders List in Dashboard

How to Add Custom Columns to the WooCommerce Orders List in Dashboard

Updated:   WordPress 3 min read

Your support helps keep this blog running! Secure payments via Paypal and Stripe.


When managing WooCommerce stores, it’s often helpful to see key order details at a glance — such as the payment method, customer email, billing address, and order date/time, right from the Orders list in the admin dashboard.

Instead of opening each order one by one, you can add these details directly to the Orders table using a custom plugin.
This approach is safer than editing your theme’s functions.php file, and it remains active even if you switch themes.

Step 1: Create a Simple Custom Plugin

  1. In your WordPress installation, go to:
    /wp-content/plugins/
  2. Create a new folder named:
    woocommerce-custom-order-columns
  3. Inside that folder, create a file named:
    woocommerce-custom-order-columns.php
  4. Add the following plugin header at the top of the file:
<?php
/**
 * Plugin Name: WooCommerce Custom Order Columns
 * Description: Adds Payment Method, Customer Email, Billing Address, and Order Date columns to the Orders admin page.
 * Author: Your Name
 * Version: 1.0
 * License: GPL2
 */

Step 2: Add the Custom Columns Code

Below the header, paste this code:

// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * Add custom columns to WooCommerce Orders list.
 */
add_filter( 'manage_edit-shop_order_columns', 'custom_add_order_columns', 20 );
function custom_add_order_columns( $columns ) {
    $new_columns = [];

    foreach ( $columns as $key => $column ) {
        $new_columns[ $key ] = $column;

        if ( 'order_total' === $key ) {
            $new_columns['payment_method']   = __( 'Payment Method', 'woocommerce' );
            $new_columns['customer_email']   = __( 'Customer Email', 'woocommerce' );
            $new_columns['billing_address']  = __( 'Billing Address', 'woocommerce' );
            $new_columns['order_created']    = __( 'Order Date & Time', 'woocommerce' );
        }
    }

    return $new_columns;
}

/**
 * Display content for each custom column.
 */
add_action( 'manage_shop_order_posts_custom_column', 'custom_show_order_column_content' );
function custom_show_order_column_content( $column ) {
    global $post;
    $order = wc_get_order( $post->ID );

    if ( ! $order ) {
        return;
    }

    switch ( $column ) {
        case 'payment_method':
            echo esc_html( $order->get_payment_method_title() ?: '—' );
            break;

        case 'customer_email':
            echo esc_html( $order->get_billing_email() ?: '—' );
            break;

        case 'billing_address':
            $address = $order->get_formatted_billing_address();
            echo $address ? wp_kses_post( $address ) : '—';
            break;

        case 'order_created':
            $date_created = $order->get_date_created();
            echo $date_created
                ? esc_html( $date_created->date_i18n( 'd M Y, H:i' ) )
                : '—';
            break;
    }
}

Step 3: Activate the Plugin

  1. Log in to your WordPress admin dashboard.
  2. Go to Plugins > Installed Plugins.
  3. Find WooCommerce Custom Order Columns and click Activate.

Once activated, visit WooCommerce > Orders, and you’ll see four new columns:

  • Payment Method — Displays the method used (PayPal, Credit card, Bank Transfer, etc.)
  • Customer Email — Shows the billing email address
  • Billing Address — Displays the formatted billing address
  • Order Date & Time — Shows when the order was created

Why Use a Plugin Instead of functions.php?

  • Portability: Works even if you switch or update your theme.
  • Safety: Keeps your theme code clean and separated from custom features.
  • Easy maintenance: You can deactivate or update the plugin independently.

This method follows WordPress best practices and works with HPOS (High-Performance Order Storage) in WooCommerce 8.0+.

Final Thoughts

Adding these columns gives store owners and support teams a clearer, faster overview of order information without clicking into each order. Other columns can be added if you like. It’s a small enhancement that saves time every day, and because it’s built as a plugin, it’s easy to share or reuse across multiple WooCommerce projects.

If you are looking to add the custom fields on the Checkout page, check this page out.


Your support helps keep this blog running! Secure payments via Paypal and Stripe.


Senior WordPress Developer (Freelancer)

Senior WordPress Developer (Freelancer)

I’m a professional WordPress and WooCommerce developer based in Chiang Mai, Thailand, with over a decade of experience creating fast, secure, and scalable websites. From custom themes and plugins to full WooCommerce stores, I help businesses build a strong and reliable online presence. Need a freelance WordPress developer you can count on? View my portfolio or get in touch to discuss your project.