FunnelKit
FunnelKitBlogs

WooCommerce Gift Wrap: How to Add a Gift Wrapping Option to Your Store

Updated:  Sep 11, 2026
Written by: 
Author: Editorial Team
Editorial Team
Author: Editorial Team Editorial Team

The FunnelKit Editorial Team is a group of WooCommerce experts with 10+ years of combined experience. We create actionable guides based on hands-on testing, industry research, and user feedback to help eCommerce businesses grow.

WooCommerce Gift Wrap: How to Add a Gift Wrapping Option to Your Store

WooCommerce gift wrap might be the easiest extra money your store can make, yet most stores never offer it.

Think about a department store in December. You buy a candle, and before you even put your card away, someone asks, "Would you like that gift wrapped?" It costs $4.

You say yes because, honestly, you'd probably do a worse job wrapping it yourself.

That small question can add up quickly. On a $38 candle, the store just made another $4 without spending anything on marketing or offering a discount. The paper and labor might cost around a dollar.

If one out of every eight customers takes the option, a store processing 800 orders a month could bring in roughly $300 in extra margin without getting another visitor or improving its conversion rate.

Gift wrap margin at a glance

Online stores have a different problem: nobody is there to ask.

WooCommerce doesn't include gift wrapping in its core features, so you have to add it yourself with a plugin, a code snippet, or a checkout add-on.

And that's where things get a little messy.

The standard snippets you find online often don't work with WooCommerce's newer block checkout, while some popular gift wrap plugins don't clearly document whether they support it.

You can test everything on staging, see it working perfectly, and then discover that the option has disappeared when you move to the live checkout.

This guide puts everything in one place.

We'll compare nine gift wrap plugins, show you which ones support the block checkout, and walk you through working code for both checkout types.

Additionally, we'll also cover how much to charge and explain the fulfillment step that's easy to overlook.

Jump straight to the step-by-step process here

What Is a WooCommerce Gift Wrap Option?

A WooCommerce gift wrap option is a customer-facing field that lets shoppers request gift wrapping before they place an order.

Most stores use a simple checkbox on the product, cart, or checkout page, sometimes with a wrapping style selector and a box for a gift message.

woocommerce gift wrap process representation with image

A good gift wrap setup needs to handle four things:

  • Capture the choice: Give shoppers a simple toggle to add wrapping, whether you charge for it or offer it free.
  • Capture the message: Let them enter the short note they want included with the gift.
  • Add the charge: Add the cost as a cart fee or treat wrapping as a separate product added to the order.
  • Send everything to fulfillment: The wrapping choice and gift message should show up in the order details, confirmation email, and packing slip.

That last part is where many setups go wrong. Everything looks fine at checkout, but the warehouse never sees the message.

You usually don't find out until a customer emails asking why their gift note wasn't included.

You also need to decide before choosing a tool: do you want wrapping per product or per order?

Per-product wrapping lets customers choose which individual items to wrap, which makes sense when they're buying gifts for several people.

Per-order wrapping applies to the entire purchase, so it's simpler for the customer and usually easier to manage.

If you're not sure which one to start with, go with per-order wrapping.

You can always add per-product options later if customers actually need them.

Best WooCommerce Gift Wrap Plugins Compared

PluginWhere the option appearsPer item / per orderBlock checkoutGift messagePrice
FunnelKit Funnel BuilderCheckout page, side cartPer orderYes, replaces the default checkout with a beautiful custom oneDepends on the field you add on the checkout pageFree core. Pro starts at $99.50/year
Gift Wrapper for WooCommerce (Flintop)Product, cart, checkoutBothYes, ships a Gift Wrapper block you place on the checkout pageYes$79/year
Gift Wrap Option (KoalaApps)Product, cart, checkoutBothNot documented. All cart and checkout placements are classic hook positionsYes, with character limit$49/year
Gift Wrapping for WooCommerceCheckout checkbox onlyPer orderNot documented. Uses the classic checkout field and the Fees APINoFree
Gift Pack for WooCommerce (IT Path Solutions)Product pagePer itemYes, changelog states cart and checkout block compatibilityYes, plus To and From fieldsFree
Product Assembly / Gift Wrap (Naked Cat Plugins)Product page feePer itemYes, tested and confirmed against block cart and checkoutNoFree
Product Add-Ons (WooCommerce)Product pagePer itemProduct page fields, so checkout type is irrelevantYes, via a text field$79/year
WooCommerce Product Options (Barn2)Product pagePer itemWorks with WooCommerce blocks per the vendorYes, via a text field$149/year
Gift Wrap Pro (IgniteWoo)Product pagePer item; separate plugin for whole orderNot documented. Last released in February 2024Not documented$59/year

The free version of The Gift Wrapper works a little differently from the other plugins in this list.

Instead of treating wrapping as a checkout field or fee, it creates a proper WooCommerce product for the wrapping service.

That means you can give it its own price, inventory, discounts, and tax settings.

It also means the wrapping isn't tied as closely to checkout hooks, making it less likely to break when you switch between checkout setups.

Paid extensions are another story, so it's worth checking recent reviews before buying.

One verified buyer of Gift Wrapper for WooCommerce reported a price increase followed by a breaking update shortly before the Christmas shopping period.

The update affected the site's styling and ultimately forced them to deactivate the plugin during their busiest time of year.

Gift wrapping is a seasonal feature for many stores, so don't wait until Q4 to find out how quickly a developer responds to problems.

Check the changelog and recent support activity before the holiday rush.

If you don't need different wrapping designs or anything fancy, Gift Pack for WooCommerce and Gift Wrapping for WooCommerce both offer a straightforward free option.

They're worth considering if you just want a simple wrap/no-wrap choice without adding another layer of complexity.

If you want a beautiful checkout and to offer gift wrapping as order bumps and side-cart add-ons, FunnelKit is the best option.

How Much Should You Charge For Gift Wrapping?

This is probably the most common question store owners have about gift wrapping, yet most guides don't give you a useful answer.

The simplest rule is to keep the fee low enough that customers barely think about it.

Once they start comparing the wrapping cost with the gift price, fewer people will choose it.

Your average order valueSuggested feeWhy
Under $30$2 to $3Anything higher can feel like a big chunk of the order
$30 to $80$3 to $5A small enough add-on to feel like an easy yes
$80 to $200$5 to $8Customers at this level are more likely to expect nicer paper and a proper card
Over $200$8 to $15, or freeHigher-value orders can absorb the fee, or free wrapping can become a selling point

You can also offer free gift wrapping once someone reaches a certain spend. That's not necessarily giving away revenue.

Set the threshold slightly above your current average order value, and the offer can become a reason for shoppers to add one more item to their cart.

Whatever price you choose, work out your actual cost first. Paper, ribbons, cards, packaging, and the time it takes someone to wrap the order all count.

A $3 wrapping fee doesn't look like much of a win if it costs you $2.40 to provide it.

Never hide the price until checkout: Unexpected costs remain one of the biggest drivers of cart abandonment (Baymard Institute). Put the wrapping price on the checkbox label itself.

which method fits your store

Method 1: Sell 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.

enable woocommerce special addon inside funnelkit cart

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:

preview of the gift wrap addon inside the woocommerce sliding side cart

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 add-ons, 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 appears as a tickable offer like "🎁 Yes, gift wrap my order for $2.99" that adds the charge with 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:

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:

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.

order bump display rules

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:

preview the gift wrap order bump offer on the woocommerce checkout page

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 2: Add a Simple Gift Wrap Option With a Plugin (No Code)

Install a dedicated gift-wrap plugin 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.

Follow these steps to add a basic gift wrap option:

Step 1: 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 it to 0 to offer free wrapping.
  • 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.
configure the woocommerce gift wrap options

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.

Also, open Order Gift Wrapper Settings and enable the Display Gift Wrapper option for the Entire Order on the Cart Page and Checkout Page so customers can wrap their entire order in one click.

Step 2: Enable the gift message field

Go to the Custom Fields section and click 'Edit' next to the 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.

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

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.

Step 4: Place a test order

Place a test order end-to-end. Confirm the wrapping fee is added correctly, the gift message is saved, and 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:

preview of your product page without any gift wrapping design:

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

preview with four gift wrapping designs, each with specific prices

Learn More: A product-page checkbox works, but most gift-wrap revenue is won later in the journey at the cart and checkout, where buying intent peaks. If lifting average order value is your goal, pair (or replace) this method with a one-click gift-wrap add-on, follow Method 1.

Method 3: Add Gift Wrap to the WooCommerce Block Checkout

This is the method you'll see documented the least, but it's also the one more stores need now.

It works with the latest checkout WooCommerce ships today.

The problem is that the block checkout doesn't use the old WooCommerce hooks. So snippets built around woocommerce_after_order_notes and similar checkout fields simply don't run.

Instead, you need two newer pieces of WooCommerce: the Additional Checkout Fields API to collect the wrapping choice, and the Store API update callback to add the $4 to the order total.

Both parts have to work together.

Instead, you need two newer pieces of WooCommerce: the Additional Checkout Fields API to collect the wrapping choice, and the Store API update callback to add the $4 to the order total.

Collecting the checkbox is only half the job. You also need to make sure that choice actually changes the total.

Part 1: Register the checkbox and the message field

add_action( 'woocommerce_init', function () {

	woocommerce_register_additional_checkout_field( array(
		'id'       => 'yourstore/gift-wrap',
		'label'    => __( 'Gift wrap this order (+$4.00)', 'yourstore' ),
		'location' => 'order',
		'type'     => 'checkbox',
	) );

	woocommerce_register_additional_checkout_field( array(
		'id'       => 'yourstore/gift-message',
		'label'    => __( 'Gift message (optional)', 'yourstore' ),
		'location' => 'order',
		'type'     => 'text',
		'required' => false,
	) );
} );

Fields registered at the order location render in the checkout block’s Order information section and save to the order automatically, so the message reaches the admin screen with no extra code.

This beats the classic method, where you save the meta yourself.

Part 2: Turn the checkbox into a fee

Ticking a box doesn’t move the total on its own. Register a Store API callback, store the choice in the session, add the fee during cart calculation.

add_action( 'woocommerce_blocks_loaded', function () {

	woocommerce_store_api_register_update_callback( array(
		'namespace' => 'yourstore-gift-wrap',
		'callback'  => function ( $data ) {
			$wants_wrap = ! empty( $data['gift_wrap'] ) && filter_var( $data['gift_wrap'], FILTER_VALIDATE_BOOLEAN );
			WC()->session->set( 'yourstore_gift_wrap', $wants_wrap );
		},
	) );

	add_action( 'woocommerce_cart_calculate_fees', function ( $cart ) {
		if ( ! WC()->session || ! WC()->session->get( 'yourstore_gift_wrap' ) ) {
			return;
		}
		// Name, amount, taxable, tax class.
		$cart->add_fee( __( 'Gift wrapping', 'yourstore' ), 4.00, true, 'standard' );
	} );

	// Clear the choice on a fresh checkout load so it never carries over.
	add_action( 'woocommerce_blocks_checkout_enqueue_data', function () {
		WC()->session->set( 'yourstore_gift_wrap', null );
	} );
} );

Part 3: Tell the block when the box changes

let lastValue = null;

wp.data.subscribe( () => {
	const fields = wp.data.select( 'wc/store/checkout' ).getAdditionalFields();
	const wantsWrap = fields[ 'yourstore/gift-wrap' ];

	if ( wantsWrap !== lastValue ) {
		lastValue = wantsWrap;
		wc.blocksCheckout.extensionCartUpdate( {
			namespace: 'yourstore-gift-wrap',
			data: { gift_wrap: wantsWrap },
		} );
	}
}, 'wc/store/checkout' );

Enqueue that file on woocommerce_blocks_checkout_block_registration with wp-data and wc-blocks-checkout as dependencies.

Then test it the same way you tested Method 1.

Add the item, tick the box, and watch the total change without the page refreshing.

If the total doesn't move, there's probably a namespace mismatch somewhere.

Keep these things in mind:

  • Keep the code in a small plugin or child theme: Don't put it in a parent theme functions.php unless you want it overwritten the next time the theme updates.
  • Use the same namespace everywhere: The namespace string needs to match in all three places. If one is different, the code can fail silently, which makes for a particularly frustrating debugging session.
  • Test with a coupon: Fees and percentage-based coupons can interact differently depending on how they're applied. Check the final calculation yourself before customers start finding the edge cases for you.

Still deciding which checkout to use? Our guide to block vs. classic checkout covers the main differences.

Method 4: Add Gift Wrap Without a Plugin (Classic Checkout)

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 doesn't update the total 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 display them on the admin order screen and in 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?

PlacementWrapping ScopeBest When
Product pagePer individual productItems are gifted separately or need different designs
Side cartWhole orderYou want an instant add-on (FunnelKit Cart Special Addon) without a page reload
Cart pageWhole orderCustomers wrap everything together; quick review of the fee
Checkout pageWhole orderYou 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.

Gift Messages: Setup, Packing Slips and Fulfillment

The store collects the extra $4, but the message never reaches the person packing the order.

Someone paid for a card that says "Happy birthday, Grandma", and Grandma receives a plain box and an invoice.

where the gift message gets lost - how to get it to the person who packs the box fulfillment team
  • Make sure the message is saved with the order

The Additional Checkout Fields API handles this for block checkout. If you're using custom code, you'll need to save the order meta yourself.

Either way, place a real test order and open it in the WooCommerce admin.

You should be able to find the gift message immediately, without digging through fields to work out where it went.

  • Put it on the packing slip

Most PDF invoice and packing slip plugins let you display custom order fields.

Add _gift_message to the packing slip template, not the invoice. The invoice is for showing prices and payment details. A gift recipient shouldn't be seeing either.

  • Make wrapped orders easy to spot

If you use ShipStation or another fulfillment system, pass the wrapping status into an order note or custom field so the team can see which orders need attention.

Some gift wrap plugins handle this automatically.

If yours doesn't, a small snippet that adds an order note when wrapping is selected is usually enough.

  • Keep the invoice out of the box

If you're shipping directly to the gift recipient, include the packing slip but leave out the priced invoice.

It's an easy detail to miss, and plenty of stores end up fixing it during the holiday rush.

  • Write the card when you pack the order

Don't leave twenty gift messages sitting in a queue until Friday.

That's how a card gets matched with the wrong package.

It sounds obvious, but a simple fulfillment mistake can turn a $4 add-on into a refund and an apology email.

Troubleshooting: Why Your Gift Wrap Option Isn't Showing

If the gift wrap option isn't appearing or the fee isn't being applied, work through these checks in order.

Most problems come down to the checkout type, product rules, or how the fee is added.

1. You're using the block checkout, but the plugin only supports classic checkout

      This is by far the most common issue. Check the comparison table first, then look at the plugin's changelog or documentation for a specific block checkout compatibility note.

      2. The product isn't eligible for wrapping

      Many plugins exclude virtual, downloadable, and subscription products by default. Check the plugin's product rules, too.

      A category exclusion you set months ago can be surprisingly easy to forget.

      3. Your theme is interfering with the checkout hook

      If the plugin adds its field through woocommerce_after_order_notes and your theme has replaced or modified the checkout template, the option may never appear.

      Temporarily test with a default theme, with only WooCommerce and the gift wrap plugin active.

      If it works there, you know the theme or another plugin is getting in the way.

      4. The checkbox appears, but the total doesn't change

      On classic checkout, check that the update_checkout event is firing when the box is ticked.

      On block checkout, check the namespace your Store API callback uses.

      A mismatch there can prevent the fee from being recalculated.

      5. The option appears, but no fee is added

      On classic checkout, make sure the value saved in the session is actually being read by woocommerce_cart_calculate_fees.

      Also temporarily disable caching or cart-fragment optimization.

      A cached cart can make it look like the fee logic isn't working when the problem is actually the cache.

      6. It works for you but not for customers

      Check the plugin's user-role restrictions. Some plugins let you limit gift wrapping to specific roles, and administrators may bypass those rules during testing.

      7. It worked last week and suddenly stopped

      Check what changed. Compare the plugin and WooCommerce update dates with the day the problem started.

      If a checkout-related plugin updated within the last week, that's one of the first things we'd investigate.

      Frequently Asked Questions

      Is there a free WooCommerce gift wrap plugin?

      Yes. The Gift Wrapper and Gift Wrapping for WooCommerce are both free on the WordPress repository and handle a basic toggle with a message field.

      Image designs, per-product wrapping and conditional logic generally need a paid upgrade.

      Can I add gift wrapping without a plugin?

      Yes, on the classic shortcode checkout. The snippet in Method 3 adds a checkbox, a message field and a flat fee.

      It won’t work on block checkout, which needs the Additional Checkout Fields API instead.

      Should I just make it free to avoid annoying people?

      Free wrapping is a real strategy, but giving it away by default removes a margin line for no gain.

      Charging above a spend threshold and offering it free below does both jobs.

      Should gift wrapping be per product or per order?

      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.

      Is the gift wrapping fee taxable in WooCommerce?

      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.

      Can I add gift wrapping to subscription products?

      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.

      How do I get the gift message to my warehouse or dropshipper?

      Make sure it saves as order meta, then confirm it appears on the packing slip and in your order export.

      If a 3PL fulfills for you, the note has to be in the CSV or API feed, or it won’t travel with the shipment.

      What’s the difference between gift wrap and a gift card?

      Wrapping is a service added to a physical order. A gift card is a prepaid product the recipient redeems later.

      Different problems, different plugins, though plenty of stores offer both in December.

      Start Offering the WooCommerce Gift Wrap Option Today!

      Gift wrapping is one of those WooCommerce add-ons that can be surprisingly easy to make profitable.

      It costs relatively little to fulfill, doesn't require extra traffic, and can keep generating revenue year-round.

      You've already done the hard part by getting the customer to place an order. You're simply asking if they'd like you to wrap it for them.

      Choose the method that fits your store.

      Use a plugin for the simplest setup, the Additional Checkout Fields API for the block checkout, a snippet if you just need a single flat fee on classic checkout, or a one-click add-on if your main goal is to increase revenue per order.

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

      So click the button below and start earning more from every order you already get.

      Related Blogs
      woocommerce landing page - FunnelKit

      Editorial Team

      How to Create a WooCommerce Landing Page that Drives Conversions

      A WooCommerce landing page revolutionizes how you captivate and convert your audience. While attracting traffic through various marketing campaigns, such as email marketing and social media, is a step forward,...

      woocommerce dynamic pricing - FunnelKit

      Editorial Team

      WooCommerce Dynamic Pricing: How to Set Up Rules That Actually Work

      WooCommerce dynamic pricing works much like how a coffee wholesaler prices a pallet of beans. A café buying 40 bags gets a better price per bag than someone walking in...

      Best WooCommerce Related Products Plugins 

      Editorial Team

      8 Best WooCommerce Related Products Plugins 

      Want to boost sales and increase the average order value of your WooCommerce store? Using a reliable WooCommerce related product plugin is one of the simplest and most effective ways...

      Published by: Editorial Team
      The Editorial Team at FunnelKit (formerly WooFunnels) is a passionate group of writers and copy editors. We create well-researched posts on topics such as WordPress automation, sales funnels, online course creation, and more. We aim to deliver content that is interesting and actionable.
      Thank you for reading. Stay connected with us on the Facebook group, X (Twitter), LinkedIn and YouTube channel for more tips to help grow your business.
      Join Over 40,300+ Sellers Increasing Profits with FunnelKit! 🚀
      Join FunnelKit
      FunnelKit Checkout gives you beautiful, ready-to-use WooCommerce checkout templates, embed order forms, one-page checkouts, and more.
      Join FunnelKit
      Related Blogs
      woocommerce landing page - FunnelKit

      Editorial Team

      How to Create a WooCommerce Landing Page that Drives Conversions

      A WooCommerce landing page revolutionizes how you captivate and convert your audience. While attracting traffic through various marketing campaigns, such as email marketing and social media, is a step forward,...

      woocommerce dynamic pricing - FunnelKit

      Editorial Team

      WooCommerce Dynamic Pricing: How to Set Up Rules That Actually Work

      WooCommerce dynamic pricing works much like how a coffee wholesaler prices a pallet of beans. A café buying 40 bags gets a better price per bag than someone walking in...

      Best WooCommerce Related Products Plugins 

      Editorial Team

      8 Best WooCommerce Related Products Plugins 

      Want to boost sales and increase the average order value of your WooCommerce store? Using a reliable WooCommerce related product plugin is one of the simplest and most effective ways...

      Ready to Transform Your Store?
      Join 40,300+ successful store owners who trust FunnelKit to power their businesses.
      Conversion Optimized Checkout Pages
      Increase Revenue with Smart Upsells
      Capture Emails & Recover Abandoned Carts
      Automate Winbacks & Repeat Sales
      999+ 5 star reviews on WordPress.org
      Transform your store to power your business with FunnelKit
      🚀 Maximize Your Profit with FunnelKit – Highest Rated with 999+ 5-Star Reviews
      Get Started