
Quick answer: The fastest way to add a WooCommerce gift wrap option is to use a plugin that lets shoppers tick a gift wrap box, choose a design, write a gift message, and pay an optional fee on the product, cart, or checkout page. If you prefer code, a short snippet in functions.php adds a flat gift-wrap fee for free. Want it as a one-click upsell? Offer it as an order bump or side-cart add-on. All three methods are covered below.
Offering gift wrapping is one of the easiest ways to increase average order value while making customers feel cared for.
The U.S. gift-wrapping market alone is worth over $5.9 billion, yet most online stores still don't offer it. This is a gap you can turn into extra revenue and repeat buyers.
But the good news is that you don't need a developer to add it.
In this post, you'll learn exactly how to add a gift wrap option to WooCommerce using three methods: a no-code plugin, a free code snippet, and a one-click cart or checkout add-on.
Plus, we'll walk you through how to charge an optional fee, add a gift message, choose between per-product and per-order wrapping, and fix common issues where gift wrap doesn’t show up.
Table of Contents
- 1 What Does WooCommerce Gift Wrap Actually Mean?
- 2 3 Ways to Add a Gift Wrap Option in WooCommerce
- 3 Method 1: Add a Simple Gift Wrap Option With a Plugin (No Code)
- 4 Method 2: Offer Gift Wrap as a One-Click Add-On (Best for AOV)
- 5 Method 3: Add a Gift Wrap Fee With Code (Free)
- 6 Where Should the Gift Wrap Option Appear?
- 7 How to Add a Gift Message (Per Product or Per Order)
- 8 Troubleshooting: Why Your Gift Wrap Option Isn't Showing
- 9 Best WooCommerce Gift Wrap Plugins Compared
- 10 Frequently Asked Questions
- 11 Start Offering the WooCommerce Gift Wrap Option Today!
What Does WooCommerce Gift Wrap Actually Mean?
A WooCommerce gift wrap option is a customer-facing field, usually a checkbox, radio button, or image selector, that lets a shopper request gift wrapping during checkout.
A complete setup typically includes:
- A toggle ("Yes, gift wrap this") that turns the option on.
- An optional fee added to the cart total (fixed, per item, or percentage).
- Design choices shown as wrapping-paper images (e.g., Birthday, Holiday, Wedding).
- A gift message box so buyers can add a personal note.
- Order data that passes the wrap choice and message to your admin order, email, and packing slip so your team can fulfill it.
The right approach depends on whether you want wrapping per product (each item wrapped separately) or per order (the whole purchase wrapped together), and whether you'd use a plugin or a snippet.
3 Ways to Add a Gift Wrap Option in WooCommerce
| Method | Best for | Cost | Skill needed | Fee support |
|---|---|---|---|---|
| Plugin (no-code) | Most stores that want to display multiple designs and messages | Free-$59/year | Beginner | Yes |
| Order bump and side-cart add-on | Maximizing AOV at the cart and checkout page | Free core; Pro for add-ons | Beginner | Yes |
| Code snippet | Single, simple "add wrap for $X" toggle | Free | Developer | Yes (manual) |
Pick the no-code plugin route if you want image-based designs and gift messages without touching code.
Use the code snippet if you only need one flat fee.
Use an order bump or side-cart add-on when your priority is revenue per order. We'll walk through all three.
Method 1: Add a Simple Gift Wrap Option With a Plugin (No Code)
Follow these steps to add a basic gift wrap option:
Step 1: Choose and install a plugin
Install a dedicated gift-wrap plugin (see the comparison table below) or a flexible product-fields plugin.
For this tutorial, we'll go with the Gift Wrapper for WooCommerce plugin.
From your WordPress dashboard, go to Plugins ⇨ Add New, upload the zip file, and activate it.
Step 2: Configure the general settings
Go to WooCommerce ⇨ Gift Wrapper and set up the basics:
- Gift Wrapper Mode: Choose Without Designs for a single, simple gift-wrap option, or With Designs to let customers choose from wrapping paper designs (Birthday, Holiday, etc.). For a basic setup, start with Without Designs.
- Gift Wrapper Price: Set your fee here (for example, $3). Leave it empty or set 0 to offer wrapping for free.
- Product(s) Applicable for Gift Wrapping: include or exclude specific products or categories. Anything excluded won't show the option.
- Exclude Virtual Products: Enable this so that downloads and other virtual items don't show a wrapping option that doesn't make sense for them.

In the same settings screen, open Product Gift Wrapper Settings and enable Display Gift Wrapper Option in the Single Product Page. Then choose how it behaves:
- Display Mode: Show the options inline (Toggle) or in a Popup/Modal when the customer ticks the gift-wrap box.
- Gift Wrapper is: Set to Optional so customers choose whether to add it (set Mandatory only if every order must be wrapped).
- Show/Hide Total Payable Price: Set to Show so shoppers see the combined product + wrapping price before they add to cart.
Furthermore, open Order Gift Wrapper Settings and enable the Display Gift Wrapper option for the Entire Order on the Cart Page and Checkout Page to let customers wrap their entire order in one click.
Step 3: Enable the gift message field
Go to the Custom Fields section and click 'Edit' next to the message field.

Set Field Status to Enabled, rename the label (e.g., "Add a gift message"), and choose where it appears with Field Visible Areas, such as Product Level, Order Level, or both.

This is what lets buyers add a personal note to the wrapped gift.
Step 4: Create wrapping designs (optional)
If you chose With Designs in Step 2, go to the Designs section, click Add Design, name each one, upload an image of the wrapping paper, and set an optional price.
Repeat for each style, then save your changes. You can also create designs for each product in the Gift Wrapper section of any Edit Product page.

Step 5: Place a test order
Place a test order end-to-end. Confirm that the wrapping fee is added correctly, that the gift message is saved, and that the details appear on the order item and in your order emails.
This is the preview of your product page without any gift wrapping design:

And this is the preview with four gift wrapping designs, each with specific prices:

Method 2: Offer Gift Wrap as a One-Click Add-On (Best for AOV)
This is the method we recommend for any store serious about revenue.
The cart and checkout are where buying intent is highest. The customer has already decided to purchase, so a gift-wrap offer there converts far better than a field buried on the product page.
Presenting wrapping as a one-click add-on captures incremental, near-pure-margin revenue without adding friction or clutter earlier in the journey.
FunnelKit gives you two purpose-built ways to do this, depending on where you want the offer to appear.
Option A: Gift Wrap as a Special Addon in the Side Cart (FunnelKit Cart)
If you'd rather catch shoppers earlier, FunnelKit Cart adds a modern sliding side cart to your store, and its Special Addons feature surfaces extra offers, such as gift-wrapping, shipping protection, or a gift message, right inside the cart.
First, enable the Special Addon, add the product as gift wrap (this will be in your catalog), choose the selection type, product heading, description, images, etc.

The customer ticks the add-on, the subtotal recalculates instantly, and they stay exactly where they are.
This is how it shows up on the front end:

FunnelKit Cart also supports milestone rewards (free shipping, discounts, and free gifts), so you can pair gift wrapping with a "Spend $X, unlock a free gift" nudge to further lift average order value.
FunnelKit Cart has a free core version, but special addons, cart upsells, and rewards are part of the Pro plan.
Option B: Gift Wrap as an Order Bump on the Checkout (FunnelKit Funnel Builder)
With FunnelKit Funnel Builder, you can add a gift-wrapping order bump directly on the WooCommerce checkout page.
It's displayed as a tickable offer like "🎁 Yes, gift wrap my order for $3" that adds the charge in one click, with no page reload.
You can select the skin layout, add the product and customize how you want to display it to your shoppers on the checkout page:

You can even set placements for this gift wrap offer on the checkout page:

Order bumps shine here because they support a rule-based engine that allows you to display the gift-wrap offer only when it's relevant, such as during the holidays, above a certain cart total, for specific categories, or based on what's already in the cart.

You can even stack it alongside other bumps (like a handwritten note or gift box) on the same checkout.
This is how it appears on the front end:

Because FunnelKit's global checkout can replace your default WooCommerce checkout store-wide, every shopper can see the gift-wrap bump not just people going through a single funnel.
Method 3: Add a Gift Wrap Fee With Code (Free)
If you only need a single, flat gift-wrap charge and you're comfortable editing your theme, a snippet is the lightest-weight option.
Please note that this snippet works on the classic (shortcode) checkout [woocommerce_checkout].
If your store uses the newer block checkout (the default on recent WooCommerce installs), these hooks won't fire. Either switch that page to the classic checkout shortcode, or use a plugin (Method 1) or FunnelKit (Method 2), which support both.
Always back up your site and add the code to a child theme's functions.php or a code-snippets plugin (never the parent theme).
/**
* Add an optional gift-wrap checkbox + message to the classic WooCommerce checkout,
* charge a fee when ticked, and save the details to the order.
*/
// 1. Render the checkbox and message field on the checkout
add_action( 'woocommerce_review_order_before_payment', 'custom_gift_wrap_fields' );
function custom_gift_wrap_fields() {
$chosen = WC()->session->get( 'gift_wrap' );
woocommerce_form_field( 'gift_wrap', array(
'type' => 'checkbox',
'class' => array( 'gift-wrap-toggle form-row-wide' ),
'label' => __( 'Add gift wrapping (+$3.00)', 'your-textdomain' ),
), $chosen );
woocommerce_form_field( 'gift_wrap_message', array(
'type' => 'textarea',
'class' => array( 'gift-wrap-message form-row-wide' ),
'label' => __( 'Gift message (optional)', 'your-textdomain' ),
'maxlength' => 200,
'placeholder' => __( 'e.g. Happy birthday! Love, Alex', 'your-textdomain' ),
), WC()->session->get( 'gift_wrap_message' ) );
}
// 2. Persist the choice to the session whenever the order review reloads
add_action( 'woocommerce_checkout_update_order_review', 'custom_gift_wrap_set_session' );
function custom_gift_wrap_set_session( $post_data ) {
parse_str( $post_data, $data );
WC()->session->set( 'gift_wrap', isset( $data['gift_wrap'] ) ? 1 : 0 );
WC()->session->set( 'gift_wrap_message', isset( $data['gift_wrap_message'] ) ? sanitize_textarea_field( $data['gift_wrap_message'] ) : '' );
}
// 3. Add the fee when the box is ticked (4th arg = taxable; set your tax class in the 5th)
add_action( 'woocommerce_cart_calculate_fees', 'custom_gift_wrap_add_fee' );
function custom_gift_wrap_add_fee( $cart ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) {
return;
}
if ( WC()->session->get( 'gift_wrap' ) ) {
$cart->add_fee( __( 'Gift Wrapping', 'your-textdomain' ), 3.00, true ); // true = taxable
}
}
// 4. Force the checkout totals to refresh the moment the box is toggled
add_action( 'wp_footer', 'custom_gift_wrap_refresh_totals' );
function custom_gift_wrap_refresh_totals() {
if ( ! is_checkout() ) {
return;
}
?>
<script>
jQuery( function( $ ) {
$( document.body ).on( 'change', '#gift_wrap', function() {
$( document.body ).trigger( 'update_checkout' );
} );
} );
</script>
<?php
}
// 5. Save the gift-wrap choice and message to the order
add_action( 'woocommerce_checkout_create_order', 'custom_gift_wrap_save_to_order', 20, 2 );
function custom_gift_wrap_save_to_order( $order, $data ) {
if ( ! empty( $_POST['gift_wrap'] ) ) {
$order->update_meta_data( '_gift_wrap', 'yes' );
if ( ! empty( $_POST['gift_wrap_message'] ) ) {
$order->update_meta_data( '_gift_wrap_message', sanitize_textarea_field( wp_unslash( $_POST['gift_wrap_message'] ) ) );
}
}
// Clear the session so the next order starts fresh
WC()->session->set( 'gift_wrap', 0 );
WC()->session->set( 'gift_wrap_message', '' );
}
// 6. Show the gift message in the admin order screen + emails
add_action( 'woocommerce_admin_order_data_after_billing_address', 'custom_gift_wrap_admin_display' );
function custom_gift_wrap_admin_display( $order ) {
if ( 'yes' === $order->get_meta( '_gift_wrap' ) ) {
echo '<p><strong>' . esc_html__( 'Gift wrap:', 'your-textdomain' ) . '</strong> ' . esc_html__( 'Yes', 'your-textdomain' );
$msg = $order->get_meta( '_gift_wrap_message' );
if ( $msg ) {
echo '<br><strong>' . esc_html__( 'Message:', 'your-textdomain' ) . '</strong> ' . esc_html( $msg );
}
echo '</p>';
}
}The woocommerce_cart_calculate_fees hook (step 3) adds the fee with the taxable flag set to true, so the charge follows your store's tax rules instead of silently being tax-free.
The small jQuery snippet (step 4) fixes the DIY gift-wrap code, which is the total not updating when you tick the box, by triggering WooCommerce's update_checkout event on change.
Steps 5 and 6 save the choice and message as order meta and surface them in the admin order screen and emails, so your fulfillment team can actually see the request.
Snippets don't give you image-based designs, per-product wrapping, or a sales dashboard, and they break more easily during theme updates. For anything beyond a single flat fee, a plugin-based method is the safer bet.
Where Should the Gift Wrap Option Appear?
| Placement | Wrapping Scope | Best When |
|---|---|---|
| Product page | Per individual product | Items are gifted separately or need different designs |
| Side cart | Whole order | You want an instant add-on (FunnelKit Cart Special Addon) without a page reload |
| Cart page | Whole order | Customers wrap everything together; quick review of the fee |
| Checkout page | Whole order | You want maximum AOV via a one-click order bump |
Many stores combine per-product options for shoppers who want separate wrapping, plus a whole-order option at checkout for convenience.
If you only pick one, checkout typically captures the most additional revenue.
How to Add a Gift Message (Per Product or Per Order)
A gift message turns a wrapped product into a thoughtful gift and it's often what convinces a shopper to buy from you instead of a competitor.
- Add a text field (a textarea) next to the gift-wrap option, labeled "Add a gift message (optional)".
- Apply a character limit (for example, 200 characters) to keep messages printable on a card.
- Use conditional logic so the message box appears only after the customer opts in to gift wrapping.
- Pass it to the order so the note shows in the admin order details, the order confirmation email, and the packing slip your fulfillment team prints.
Confirming the message reaches your packing slip is the step most stores forget, and it's why some gift messages never make it onto the physical card. Always run a test order end-to-end.
Troubleshooting: Why Your Gift Wrap Option Isn't Showing
Most gift-wrap problems trace back to a handful of causes:
- Gift wrap not appearing on the product/checkout page
The field group isn't assigned to that product or page, or a caching plugin is serving an old version. Clear your cache and confirm the assignment rules.
- Wrapping fee not being added
The gift wrap fee logic isn't tied to the checkbox state, or another plugin is recalculating totals. With code, confirm that the woocommerce_cart_calculate_fees hook fires and that the session value is set.
- Gift message not saving
The field isn't stored as order meta, so it never reaches the admin order or email.
- Theme conflict/styling breaks
A custom theme overrides the field markup. Test with a default theme (Storefront) to isolate the conflict.
- Tax issues on the fee
Set whether the wrapping fee is taxable to match your local rules.
If you're on a custom checkout, make sure your gift-wrap tool is compatible with your checkout builder before going live.
Best WooCommerce Gift Wrap Plugins Compared
| Plugin | Free version | Image designs | Gift message | Per-product & per-order | Best for |
|---|---|---|---|---|---|
| Gift Wrap Option (KoalaApps) | No | Yes | Yes | Yes | Multi-design stores, dashboard reporting |
| Gift Wrapper for WooCommerce | No | Yes | Yes | Per product | Individual product wrapping |
| Flexible Product Fields (WP Desk) | Yes | Yes (Pro) | Yes | Per product | Budget setups, conditional logic |
| Gift Pack for WooCommerce | Yes | Limited | Yes | Per order | Simple, free toggle + message |
| FunnelKit Funnel Builder (Order Bump) | Free core | Bump UI | Add via custom field | Per order at checkout | Gift wrap as a one-click checkout offer |
| FunnelKit Cart (Special Addons) | Free core | Add-on UI | Add via custom field | Per order in side cart | Gift wrap + rewards inside the cart |
Choose based on whether your priority is design variety (a dedicated gift-wrap plugin), budget (a free product-fields plugin), or revenue at the cart and checkout (FunnelKit's order bumps and side-cart special addons).
Frequently Asked Questions
Here are some effective best practices to focus on getting more shoppers to choose wrapping and making fulfillment painless once they do.
- Show the wrapping fee clearly and early: Surprise charges are the top reason carts get abandoned. About 48% of shoppers leave when extra costs appear unexpectedly at checkout (Source: Baymard Institute via Shopify). State the gift wrap price right on the checkbox.
- Offer occasion-based designs: Wrapping labeled Birthday, Holiday, or Wedding helps shoppers decide faster than a single generic option. Seasonal designs also let you market wrapping during peak gifting periods.
- Print the gift message on the packing slip: Your warehouse cannot wrap and note an order it cannot see. Make sure the gift message flows to the order email and packing slip so fulfillment gets it right every time.
- Use per-product wrapping when it fits: If a customer orders three items for three people, per-product wrapping and notes serve them far better than one wrap for the whole order. This is where a Pro plugin or per-item add-on earns its cost.
- Hide gift wrapping on virtual and non-giftable items: Conditional rules keep the option off downloads, services, and subscriptions where wrapping makes no sense. A clean, relevant checkout converts better.
- A/B test placement and price: Test the wrapping prompt on the cart versus the checkout, and try a $3 fee against $5. Small changes in position and price can meaningfully shift how many customers opt in.
The global gift wrapping products market was estimated at USD 18.02 billion in 2023 and is projected to reach USD 31.31 billion by 2030, a compound annual growth rate of 8.4%. Here is why we recommend adding a gift wrap feature to your store:
- Captures demand customers are asking for: In one survey, 29% of holiday shoppers said they want to see more gift wrapping services available at retailers. Offering it meets a stated need.
- Raises average order value with high margin: A wrapping fee is almost pure margin once you cover paper and labor. Every customer who opts in adds revenue without you spending more on ads.
- Removes a reason to shop elsewhere: Buyers sending a gift will choose a store that wraps it for them. Without the option, you push gift shoppers toward a competitor.
- Improves the unboxing and gifting experience: A wrapped item with a personal message feels thoughtful. That experience drives word of mouth and repeat purchases.
- Works year-round, not just at the holidays: Birthdays, weddings, anniversaries, and graduations all call for wrapping. A permanent gift wrap option earns sales in every season.
Yes, there are free plugins like Gift Pack for WooCommerce and the free tier of Flexible Product Fields let you add a basic gift-wrap toggle and message, though image-based designs and conditional logic usually require a paid upgrade.
Per-product wrapping suits stores where items are gifted separately or need different designs. Per-order wrapping (at cart or checkout) is simpler for customers and tends to capture more add-on revenue.
It can be, and that usually depends on your local tax rules. Plugins that treat each wrap as a product let you assign a tax class to it.
In the code method, the add_fee function accepts a taxable flag, which we set to true in the example so the fee follows your store tax settings.
Yes, but treat the wrap as a one-time add-on rather than a recurring charge, so customers are not billed for wrapping on every renewal.
If you sell subscription boxes, you can offer wrapping on the first order through an order bump.
FunnelKit order bumps and checkouts are compatible with WooCommerce Subscriptions, and recurring billing tools like Sublium can manage the subscription itself.
Make sure the wrapping choice and message save to the order so they reach whoever fulfills it. They should appear in the admin order screen, the order email, and on the packing slip, which a tool like WooCommerce PDF Invoices and Packing Slips can print.
If you fulfill through a 3PL or dropshipper, include the gift note in your order export or CSV feed so it travels with the shipment.
The code in Method 3 saves the message to order meta, which most export and packing-slip tools can read.
Start Offering the WooCommerce Gift Wrap Option Today!
Adding a WooCommerce gift wrap option is one of the highest-return tweaks you can make to your store because it lifts average order value, makes your brand feel more thoughtful, and costs almost nothing to deliver.
The right method comes down to what you're optimizing for:
- Want the easiest, most complete setup? Use a no-code plugin (Method 1). It handles fees, image-based designs, gift messages, and conditional logic without touching code and is ideal for most stores.
- Focused on revenue per order? Offer gift wrap as a one-click order bump or side-cart add-on with FunnelKit (Method 2), so shoppers say yes at the exact moment they're ready to buy.
- Only need a single flat fee and comfortable with code? Drop the functions.php snippet (Method 3) in and you're done for free.
Whichever you choose, do three things before you go live. Set whether the fee is taxable, turn on conditional logic so the gift-message box only shows when wrapping is selected, and run a full test order to confirm the wrap choice and message reach your admin order, email, and packing slip.
Nail those, and you've turned a small wrapping fee into a steady, near-pure-margin revenue stream.
If your goal is to capture that revenue at the point of highest intent, the fastest path is to add gift wrapping as an order bump on your FunnelKit checkout or as a Special Addon inside the FunnelKit Cart and start earning more from every order you already get.

Editorial Team
June 29, 2026Finding a WordPress sales funnel builder that actually works is harder than it looks. Most plugins on the market do one or two things well and quietly skip the rest....

Editorial Team
June 26, 2026WooCommerce ships with a built-in cross-sell field, but it only fires on the cart page, which covers only a fraction of where shoppers actually decide to add more to their...

Editorial Team
June 26, 2026Removing the address field from WooCommerce checkout means taking out the billing and shipping address lines that your customers do not actually need to fill in. For stores selling digital...






