
Imagine a courier who is stuck at a customer's gate with a flower delivery. The gate code was typed into the WooCommerce order notes three days ago, but nobody put it on the shipping label!
That single missed note costs you time, double shipping fees, and a customer support headache.
The frustrating part? The instruction that would have prevented it all was already in your system.
There are three different types of order notes in WooCommerce, and they all behave differently.
Customers write them at checkout, your team writes them privately in the dashboard, and WooCommerce writes them automatically to track stock or payment updates.
However, only one of the three ever reaches the buyer, which is where most stores get caught out.
In this guide, we'll walk through where each type lives, how to add and edit them, and how to control the checkout notes field on both block and classic checkout using settings, code, or a plugin.
We will also cover the emails WooCommerce does not send, how to work with notes programmatically, and why they disappear after a migration.
Short on time? Watch the video 👇

Table of Contents
- 1 What Are Order Notes in WooCommerce?
- 2 Where to Find the Order Notes Panel in Your Dashboard?
- 3 How to Add an Order Note (Private or Customer-Facing)
- 4 The Checkout Notes Field: Block Checkout vs Classic Checkout
- 5 How to Remove, Rename or Require the Checkout Notes Field
- 6 How to Edit or Delete an Existing Order Note
- 7 Order Note Emails: What WooCommerce Sends by Default
- 8 Adding Order Notes Programmatically (Developer Reference)
- 9 Order Notes on Packing Slips and Invoices
- 10 Best Plugins for Managing Order Notes
- 11 Frequently Asked Questions
- 12 Start Using WooCommerce Order Notes For Efficient Order Management!
What Are Order Notes in WooCommerce?
Order notes in WooCommerce are the running log of a single order, sitting in the right-hand column of the order edit screen.
Some entries are written by your customer, some by your team, and most by WooCommerce itself.
The distinction that matters operationally is not who wrote the note. It’s who can read it.
1. Customer notes (added at checkout)
These are written by buyers in the checkout order notes field.
For example, it can read like, "Birthday gift - please gift wrap and don’t include the price. Delivery Friday if possible.”
It’s stored on the order itself rather than in the notes log. It surfaces in three places:
- Customer-provided note box on the order edit screen
- Admin New Order email
- Order details page in My Account
Unlike the other types, it stays editable after the fact.
2. Private notes (internal, admin-only)
Anything your team adds and marks as a private note.
Nobody outside your dashboard ever sees these (not the customer, not the order confirmation email and not the My Account page).
For example, “Gift wrap confirmed with warehouse. Invoice removed from parcel.”
That note stops the packing team from dropping a receipt with the price on it into a birthday gift.
3. System-generated notes
These are written automatically by WooCommerce.
Status changes, stock updates, and payment gateway responses land here.
For example, "Stock levels reduced: Vitamin C Serum 40→39 · Payment approved (Transaction ID: pi_3Q7…)" · Order status changed from Pending payment to Processing.
Read them before you email a customer about a problem.
9 out of 10 times, the reason an order is stuck is written in a system note nobody opened.
Color codes and visibility
The fastest way to know if a note is safe to type in is by checking its background color in the dashboard panel:
| Note type | Background color in the panel | Customer can see it or not | Sends an email |
|---|---|---|---|
| Private note | Plain grey | No | No |
| System note | Mauve or pink tint | No | No |
| Note to customer | Blue tint | Yes, in My Account under Order updates | Yes, if enabled |
| Customer provided note | Shown above the order details, not in the panel | Yes, it is their own text | No |
Colors might look slightly different depending on your WordPress admin color scheme.
However, the rule remains: Grey is internal, Tinted is automatic, and Blue goes to the customer.

Where to Find the Order Notes Panel in Your Dashboard?
Go to WooCommerce ⇨ Orders, open any order, and look at the right-hand column.
If your store runs High-Performance Order Storage (HPOS), the screen looks exactly the same.

The panel lists the newest notes at the top with a timestamp.
Because there is no search bar for this specific panel, if an order has 30+ system notes, you will need to use your browser's "Find" feature (Ctrl+F or Cmd+F) to locate specific details.
If the panel is missing entirely, skip down to our troubleshooting section, which is usually a plugin conflict.
How to Add an Order Note (Private or Customer-Facing)
Adding a manual note takes just three clicks.
Open the order in WooCommerce ⇨ Orders.
In the Order notes panel, type your message into the 'Add note' box.

Select either 'Private note' or 'Note to customer' from the dropdown menu, then click Add.
Choosing the dropdown correctly is critical. For example, on this order, “Free gift added” should go in as Private.
But “We will be sending a free gift along with your order as a thank you!” should go in as a Note to customer because it directly answers the buyer's question.
The Checkout Notes Field: Block Checkout vs Classic Checkout
A lot of advice regarding order notes is out of date.
Since WooCommerce 8.3, new stores use the Checkout Block by default. Order notes behave very differently here than they do in the older Classic checkout.
To check which version you have, go to WooCommerce → Pages and view your designated checkout page.
If you see a [woocommerce_checkout] shortcode, you are on Classic. If you see a visual Block editor, you are on Blocks.
Where the field lives in the block checkout
Inside the Checkout block, there is an inner block called "Additional information".
If you click the Checkout block in your editor, you will see a simple toggle switch for order notes in the right-hand settings sidebar.
Please note that the Block checkout uses React. This means old PHP code snippets designed to hide or change the checkout field will not work.
Where the field lives in the classic checkout
In the classic version, the field sits under the "Additional information" heading below the billing and shipping addresses.
This version does respond to classic PHP filters like woocommerce_enable_order_notes_field.

How to Remove, Rename or Require the Checkout Notes Field
Many store owners want to hide this box to keep checkout clean.
Try these three methods, in order:
Method 1: Native block settings (no code)
If you use the Block checkout, edit your Checkout page, click on the Checkout block, and simply turn off the order notes toggle in the right sidebar.
Click Update. You are done!
Method 2: Code snippet (classic checkout)
If you are on the Classic checkout, you can remove the field completely by adding this to your child theme’s functions.php or a code snippets plugin:
add_filter( 'woocommerce_enable_order_notes_field', '__return_false' );To rename it, change the placeholder, or make it mandatory instead of removing it:
add_filter( 'woocommerce_checkout_fields', 'mystore_customize_order_notes_field' );
function mystore_customize_order_notes_field( $fields ) {
$fields['order']['order_comments']['label'] = 'Delivery instructions';
$fields['order']['order_comments']['placeholder'] = 'Gate code, safe place, or gift message';
$fields['order']['order_comments']['required'] = true;
return $fields;
}WooCommerce has no native setting for making order notes required, so a filter or a field editor is the only route.
Make sure to think hard before you take it.
An optional field costs the buyers who ignore it nothing.
A required one puts a text box between every customer and the Place Order button to serve the small share of orders that need special handling.
Method 3: Checkout field editor plugin
If you want to move the field around, show it conditionally, or completely overhaul your checkout page, you will want a checkout field editor plugin.
FunnelKit’s powerful checkout builder is perfect for this if you are already looking to optimize and boost conversions on the whole page.
Just edit your checkout. Under the Advanced section on the right side, you will find the field “Order Notes”.
Simply drag and drop the order note to your checkout form.

After adding the field, you can also change the order by simply dragging the field.

Set the label and placeholder for order notes.
How to Edit or Delete an Existing Order Note
WooCommerce handles customer notes and admin notes differently:
- Customer notes are editable
On the order edit screen, click the pencil icon next to the Billing/Shipping details box.
A "Customer provided note" text box will appear. Correct the text and click Update.
It's great for when a buyer emails you a typo in their delivery instructions.
- Admin notes are delete-only
You cannot edit a note you or the system created.
Hover over any note in the panel, and a red Delete note link will appear.
If you make a typo, you have to delete it and write a new one.

Deleting a "Note to customer" does not unsend the email. Once you click Add, that email is gone.
Also, never delete system notes. They are your audit trail and your best defense against chargeback disputes!
Order Note Emails: What WooCommerce Sends by Default
By default, WooCommerce only has one order note email: Customer note.
You can verify it is turned on at WooCommerce ⇨ Settings ⇨ Emails ⇨ Customer note.

Private notes and system notes never trigger an email.
If you want an internal alert for a failed payment or fraud flag, you need an automation tool, not a basic email setting.
Next, check the option 'Enable this email notification'.

You can also customize the subject, email heading, and additional content.
Make sure to hit Save Changes.
Now, whenever the store admin adds a note for customers, she/he will receive an email about the note.
The default email usually includes a note along with the related order details.
Here is a preview of default WooCommerce customer order note emails.

While you can add a logo and change the color of the Base, Background and Body text, you can’t change the layout of this customer note email.
Sending custom order note emails automatically
The default WooCommerce customer note email is incredibly basic.
It drops your text into a plain template with no product images, no tracking links, and no order summary.
Because customers open these emails at a very high rate, you should upgrade them. You can use a powerful tool like FunnelKit Automations to listen for the woocommerce_new_customer_note event.
When a note is added, FunnelKit can automatically send a beautifully branded email pulling in the note text, the product image, order details, and tracking links.
Navigate to FunnelKit Automations ⇒ Emails and then click on Customer Note Added email.

Now, let’s set up the email subject and preview. You can use a merge tag to personalize the subject and preview text.

We highly recommend using Visual Builder to design your email. In the email, you can use the merge tag “Current Order Note” to embed the order note.
Here is an email designed with the Visual Builder.

After making the changes, make sure to save the email template.
Turn the toggle button on the top-right corner to activate this email.
Once you activate it, customers will receive an email notification about the order note.
Including the customer’s note in their receipt
By default, the customer's checkout note only appears in your admin email, not their receipt.
Echoing their instructions back to them builds trust.
Add this snippet to show it on their confirmation:
add_action( 'woocommerce_email_order_meta', 'mystore_show_customer_note_in_email', 10, 3 );
function mystore_show_customer_note_in_email( $order, $sent_to_admin, $plain_text ) {
if ( $sent_to_admin || ! $order->get_customer_note() ) {
return;
}
echo '<h3>Your note to us</h3><p>' . wp_kses_post( nl2br( esc_html( $order->get_customer_note() ) ) ) . '</p>';
}For the wider template, see our breakdown of the order confirmation email.
Adding Order Notes Programmatically (Developer Reference)
Most order notes on a busy store are actually generated by code like fulfillment scripts or gateway webhooks.
The second parameter in the function controls whether an email is sent. If you get it wrong in a bulk loop, you could accidentally email 500 customers at once!
add_order_note() and wc_get_order_notes()
Adding a note via code is a simple one-liner. Set the second parameter to 1 to trigger the customer email:
$order = wc_get_order( 4821 );
// Private note.
$order->add_order_note( 'Gift wrap confirmed with warehouse. Invoice removed from parcel.' );
// Note to customer — this emails the buyer.
$order->add_order_note( 'Your gift is wrapped and dispatching Friday.', 1 );add_order_note() returns the note ID.
The procedural equivalent, useful when you only have an order ID, is wc_create_order_note( $order_id, $note, $is_customer_note, $added_by_user ).
To read notes back:
$notes = wc_get_order_notes( array(
'order_id' => 4821,
'type' => 'customer', // 'customer', 'internal', or omit for all.
) );
foreach ( $notes as $note ) {
echo esc_html( $note->date_created->date( 'Y-m-d H:i' ) . ' — ' . $note->content );
}Each note object exposes id, date_created, content, customer_note, and added_by.
Delete with wc_delete_order_note( $note_id ).
Useful hooks and filters
| Hook | Fires when | Typical use |
|---|---|---|
| woocommerce_new_customer_note | A customer-facing note is added | Trigger a designed email, SMS, or helpdesk ticket |
| woocommerce_order_note_added | Any note is added (passes $note_id, $order) | Mirror notes to Slack or an ERP |
| woocommerce_enable_order_notes_field | Classic checkout renders | Remove the checkout notes field |
| woocommerce_checkout_fields | Classic checkout builds its fields | Rename, reorder, or require order_comments |
| woocommerce_email_order_meta | Order emails render | Print the customer note into the email body |
add_action( 'woocommerce_new_customer_note', 'mystore_handle_customer_note' );
function mystore_handle_customer_note( $args ) {
$order = wc_get_order( $args['order_id'] );
$text = $args['customer_note'];
// Push to Slack, log to a CRM, queue an SMS.
}The order notes REST API endpoint
Notes have their own REST namespace under each order, which is how external systems, such as a 3PL, a helpdesk, and a custom dashboard.
Write to the order log:
GET /wp-json/wc/v3/orders/4821/notes
POST /wp-json/wc/v3/orders/4821/notes
GET /wp-json/wc/v3/orders/4821/notes/<note_id>
DELETE /wp-json/wc/v3/orders/4821/notes/<note_id>?force=truePOST body:
{
"note": "Parcel scanned at depot. Tracking: AB123456789.",
"customer_note": true
}Deletes require force=true because notes aren’t trashable.
For complete details, go to the WooCommerce REST API order notes reference.
HPOS database changes
Even if your store has upgraded to High-Performance Order Storage (HPOS) and moved order data to wp_wc_orders, order notes did not move.
They still live in the old wp_comments table with comment_type = 'order_note'.
Because of this, anti-spam comment plugins can sometimes accidentally delete your order notes!
Order Notes on Packing Slips and Invoices
- Packing Slips
A note like "Gate code 4471" does your warehouse no good if it only lives in your dashboard.
Use a tool like PDF Invoices & Packing Slips to automatically print customer notes directly onto the physical packing slip.
Print it on the slip, not the invoice, so the person actually packing the box sees it.
- Exporting
WooCommerce doesn't natively let you export order notes.
If you need them in a spreadsheet, use the REST API, an export plugin like Advanced Order Export, or pipe them live into Google Sheets using an automation tool.
With the WooCommerce order note field on the checkout page, customers can add important order or delivery details.
For instance, if they need the delivery to be made at a certain time because they won’t be available otherwise, they can specify it here.
Best Plugins for Managing Order Notes
You don't need a plugin for basic note management, but these are the best options if you want to level up:
| Tool | Best for | Cost |
|---|---|---|
| Native WooCommerce + a code snippet | Removing, renaming, or requiring the checkout field | Free |
| FunnelKit Automations | Designed, branded emails triggered by the customer note event | Free plan; Pro starts at $99.50/year |
| Checkout Field Editor (ThemeHigh) | Visual control of the notes field, conditional display, reordering | Free core; Pro starts at $49/year |
| PDF Invoices & Packing Slips (WP Overnight) | Printing the customer note onto packing slips | Free core; Paid tier starts at €69/year |
| Advanced Order Export (AlgolPlus) | Exporting notes alongside order data to CSV/XLS | Free core; Pro plan starts at $30/year |
If your only requirement is removing the Additional information box, row one is the honest answer.
Installing a plugin for a one-line filter is a maintenance cost you don’t need.
Frequently Asked Questions
There is no native setting for it. Set required to true on the order_comments field through the woocommerce_checkout_fields filter, or use a field editor that exposes validation.
Consider whether you should, since a required field on an optional request adds friction to every order to catch a handful.
Core order export leaves them out. Notes sit in wp_comments with a comment type of order_note, so you need an export tool that reads that table or a custom query using wc_get_order_notes().
Not from the default orders list. WPC Order Notes adds a searchable view.
On larger stores, a direct query against wp_comments filtered by order_note will beat any plugin on speed.
Usually a comments plugin is filtering them out, since notes are stored in wp_comments.
Other causes include a migration that skipped the comments table, trimmed user capabilities, or a caching layer serving a stale admin page.
Start Using WooCommerce Order Notes For Efficient Order Management!
Order notes are the easiest, cheapest communication channel in WooCommerce, yet they are heavily underutilized.
Every order already has a logbook. You just need to start using it effectively.
Start by cleaning up your checkout field so you only gather info you actually need.
Then, take the notes you send to buyers and turn them into beautiful, automated emails that include their tracking numbers and order data.
A powerful tool like FunnelKit Automations handles this perfectly, turning a basic system alert into a branded customer service win.

Editorial Team
August 28, 2026WooCommerce order attribution tells you where your orders come from. Out of the box, no extra plugin needed. But the built-in report only tells half the story, crediting whichever click...
Editorial Team
August 27, 2026Have you ever noticed the cart icon at the top of many online stores? It’s more than just a design choice. It can greatly improve your customers' experience. A cart...

Editorial Team
August 27, 2026WooCommerce frequently bought together offers are one of the easiest ways to increase revenue on a product page. Think about the counter at a kitchen appliance store. Let's say someone...






