Start free 14-day trial
WooCommerce

WooCommerce custom product pricing: charge for the design

A flat price lets simple orders subsidize complex ones. Here's how to price custom WooCommerce products by what customers design, with a worked margin example.

RafaelRafael
September 22, 202614 min read
Blog cover with a WooCommerce category chip and the headline Stop letting complex designs eat your margin, subtitled Price by text, coverage, colors, and print locations, framed by faint customizer UI cards, price tags, a t-shirt print area, and color swatches on a white background

Two customers buy the same custom t-shirt from your WooCommerce store on the same afternoon. One types a first name on the chest. The other uploads a photo that fills the whole front, adds a quote across the back, and drops a logo on the sleeve. Both pay $29. Only one of those orders made you real money.

That's the problem WooCommerce custom product pricing has to solve: the price should follow what the customer actually designs, not the blank it's printed on. WooCommerce doesn't do this on its own, and most "dynamic pricing" plugins solve a different problem entirely, because they're built for discounts.

This guide shows how to charge for the design itself. You'll see a worked margin example, the seven design properties Chamevo's pricing engine can charge for (read straight from the code that ships in the plugin), the one setting merchants most often get wrong, and a short playbook for rules that protect margin without scaring buyers off at checkout.

TL;DR

  • A flat price on a customizable product means simple orders quietly subsidize complex ones.
  • WooCommerce custom product pricing charges based on what the design contains: characters, lines, text size, print area coverage, number of elements, colors, and print locations.
  • Discount plugins key off who buys and how many. Customization pricing keys off the design. They're different tools.
  • Rule groups run in one of two modes. Any stops at the first match (use it for tiers). All adds every match (use it for stacking surcharges).
  • Show an itemized breakdown before checkout. On Baymard Institute's list, extra costs are the top abandonment reason among shoppers who weren't just browsing.

Why flat pricing breaks on customizable products

Flat pricing works when every unit costs you the same to make. Custom products break that assumption the moment a customer opens the customizer. A name on the chest uses a small transfer and one press. A full front, a back print, and a sleeve use three transfers, three presses, and a lot more film and ink.

The chart below puts numbers on it. It's a worked example, not research: the costs are assumptions for a direct-to-film (DTF) shirt shop, printed on the chart so you can swap in your own.

Worked example: margin per t-shirt order, flat price versus rule-based price Worked example with assumed costs, not research data. Flat $29 price: order A margin $19.50, order B margin $5.00. Rule-based price: order A margin $19.50 at $29.00, order B margin $22.00 at $46.00. WORKED EXAMPLE, ASSUMED COSTS. NOT RESEARCH DATA. Same shirt, same $29 flat price, very different margin Margin per order in USD, after blank, pressing and DTF transfer costs Order A: one line of text production cost $9.50 Flat price ($29) $19.50 Rule-based price ($29) $19.50 Order B: front, back and sleeve production cost $24.00 Flat price ($29) $5.00 Rule-based price ($46) $22.00 Assumptions: blank shirt $6.00; pressing $1.50 per print location; DTF transfer $2.00 small text, $6.50 full front, $5.50 full back, $1.50 sleeve. Coverage assumed: A 5%; B front 60%, back 55%, sleeve 20%. Rules: print locations (All): 2 or more +$5, 3 or more +$4. Coverage per print area (Any): over 50% +$4, over 25% +$2. Replace every number with your own costs. The point is the gap, not the exact dollars.

With a flat $29 price, order A leaves $19.50 and order B leaves $5.00. Now add two simple rules: a surcharge for each extra print location, and a surcharge when a print area is more than half full. Order A still costs $29, so your simple buyers pay exactly what they did before. Order B now costs $46 and leaves $22.00.

Notice what didn't happen. You didn't raise the price for everyone to cover the worst case. That's the usual fix, and it's the wrong one, because it makes your most common order (a name, a date, a short line of text) look expensive next to competitors.

There's a second cost that's easy to miss. The complex orders are the ones customers post, share, and reorder for their team or family. If each of those sells at a thin margin, your best marketing is also your least profitable work. We've listed flat pricing among the common customizable product mistakes for exactly this reason, and it's why margin math matters when you pick which customizable products to sell in the first place.

What WooCommerce custom product pricing actually means

WooCommerce custom product pricing is a set of rules that adds to a product's base price based on what the customer designs: how many characters they type, how much of the print area they fill, how many colors or print locations they use. The price updates live as the design changes, so the customer sees the cost before adding to cart.

That definition matters because the phrase "dynamic pricing" usually means something else in the WooCommerce world. Most plugins sold under that label handle discounts: quantity breaks, prices for wholesale customer roles, cart-total offers, buy one get one. They answer the question "who is buying, and how many?"

Customization pricing answers a different question: "what did they design?" The two don't compete. Plenty of stores run both.

Discount-style dynamic pricingCustomization pricing
Price moves because ofQuantity, user role, cart total, couponsCharacters, lines, coverage, colors, elements, print locations
DirectionUsually down (a discount)Usually up (a surcharge for extra work)
Calculated whenIn the cartLive, while the customer designs
Needs to knowThe customer and the cartThe design itself
Typical toolA dynamic pricing or discount pluginA product customizer with pricing rules

Native WooCommerce does neither. A simple product has one price. A variable product gives each variation (say "Blue, Large") its own price, which works for a fixed list of options. Design complexity isn't a fixed list, though. A text can be 4 characters or 40, and a print area can be 3% full or 90% full. You'd need a variation for every possible design.

The official Product Add-Ons extension gets closer. You can attach a price to a text field as a flat fee, a quantity-based fee, or a percentage of the product price. Its documentation doesn't cover charging per character, per color, or by how much of a print area is filled, because it can't see the design. It only sees the form fields.

Pricing by design needs the pricing logic to live where the design lives: inside the visual product customizer. That's the category covered in our comparison of the best WooCommerce product customizer plugins. On Shopify, Inkybay is known for this kind of calculator; on WooCommerce, the options are thinner, which is why we're walking through how Chamevo handles it in detail.

Seven properties you can price on

We went through the pricing engine that ships in the Chamevo customizer and counted what a rule can measure. There are exactly seven properties. Each one fits a specific kind of production cost, and each is evaluated at a specific level, which is the part most documentation leaves out.

Seven properties you can price on in Chamevo The seven properties a Chamevo pricing rule can price on: Text Length, characters in a text, spaces not counted, evaluated for each targeted text; Lines Length, lines in a text, evaluated for each targeted text; Text Size, font size of a text, evaluated for each targeted text; Print Area Coverage, percent of a print area filled, evaluated for each print area; Number of Elements, objects the customer placed, evaluated for each product view; Number of Colors Used, unique colors in the design, evaluated for whole design; Print Locations, print areas holding a design, evaluated for once per design. Upload zones never count. Seven properties a pricing rule can charge for Counted from the pricing types that ship in the Chamevo customizer, September 2026 Property (admin label) What it measures Evaluated for Typical use 1 Text Length Characters in a text, spaces not counted each targeted text Engraving, name drops 2 Lines Length Lines in a text each targeted text Address blocks, verses 3 Text Size Font size of a text each targeted text Large-format lettering, signs 4 Print Area Coverage Percent of a print area filled each print area DTF and DTG ink, sublimation 5 Number of Elements Objects the customer placed each product view Collages, extra logos 6 Number of Colors Used Unique colors in the design whole design Screen printing, embroidery 7 Print Locations Print areas holding a design once per design Front, back, sleeve upcharges Upload zones, the empty boxes where a shopper drops a photo, are never counted, and an empty upload zone does not mark a print location as used. Operators: equal, greater than, less than, and their or-equal forms.

Here's where each one earns its place:

  • Text Length counts characters without spaces, so "Happy Birthday" is 13, not 14. It's the natural fit for engraving, where machine time grows with every letter.
  • Lines Length counts lines in a text. Use it for return address stamps, wedding verses, and plaques where layout work jumps with each extra line.
  • Text Size reads the font size. It suits large-format lettering and vinyl signs, where bigger letters mean more material.
  • Print Area Coverage measures how much of a print area is filled, from 0 to 100 percent. It's the closest proxy for ink and film on DTF, direct-to-garment (DTG), and sublimation work.
  • Number of Elements counts the objects a customer places, such as photos in a collage or extra logos on a team shirt.
  • Number of Colors Used counts unique colors across the whole design. Screen printers need this, since every color is another screen and another setup.
  • Print Locations counts how many print areas hold a design across all product views. Front, back, and sleeve count as three, and the rule runs once per design.

The "evaluated for" column changes the math. A Text Length rule aimed at all texts checks each text separately, so a design with two long texts can trigger the surcharge twice. A coverage rule runs once per print area, which is how order B above paid a coverage surcharge on the front and on the back. Print Locations runs once for the whole design, no matter how many views the product has.

One detail protects you from charging for your own template: upload zones never count. An upload zone is the empty placeholder where a shopper drops a photo. It isn't counted as an element, and an empty upload zone doesn't mark a print location as used. So a shirt with a photo placeholder on the back won't charge a second-location fee until the customer actually puts something there.

Coverage is easier to price fairly when customers can see the print on the real product. If you sell mugs, tumblers, or apparel, pairing coverage rules with a WooCommerce 3D product customizer means the buyer sees exactly how much of the surface they're covering before the price moves.

Separately from rules, individual elements can carry their own price (a premium graphic, for example), and specific colors can carry a surcharge, like gold foil. Rules handle what the customer builds; element prices handle what they pick from your library.

How pricing rules evaluate: any vs all

Every pricing group has a match mode, and it's the WooCommerce custom product pricing setting we see merchants trip over most. The group holds a list of conditions (greater than 20 characters, add $5), and the mode decides what happens when more than one condition matches.

  • Any checks the conditions from top to bottom and stops at the first one that matches. It's built for tiered bands: one price for short texts, a higher one for long texts, never both.
  • All checks every condition and adds up every match. It's built for surcharges that should stack, like a fee for a second print location plus another for a third.

Here's the same input run three ways. The text has 25 characters, and there are two conditions: over 20 characters adds $5, over 10 characters adds $2.

Any versus All evaluation on the same input Same text of 25 characters, same two rules: over 20 characters add $5, over 10 characters add $2. Any mode stops at the first match and charges $5. All mode applies every match and charges $7. In Any mode with the rules in the wrong order, over 10 first, the same text charges only $2. Same text, same rules, three different totals Input: an engraving text with 25 characters (spaces not counted). Rules checked top to bottom. Match: Any, highest first 1. Over 20 characters matches, applied +$5 2. Over 10 characters would match, skipped (+$2 not added) Surcharge $5 First match wins, the rest is skipped. Right for tiered bands. Match: All 1. Over 20 characters matches, applied +$5 2. Over 10 characters matches, applied +$2 Surcharge $7 Every match is added. Right for stacking surcharges. Match: Any, wrong order 1. Over 10 characters matches, applied +$2 2. Over 20 characters would match, skipped (+$5 not added) Surcharge $2 The cheap rule matches first, so the top band never fires. Behavior of the Chamevo pricing engine as shipped: Any stops at the first matching rule, All adds every matching rule.

In Any mode with the highest band first, the 25-character text matches "over 20" and stops: $5. In All mode, it matches both: $7. Both are correct; they just express different pricing ideas. The third column is the mistake. In Any mode, order matters, and if the cheaper "over 10" condition sits on top, it matches first and the $5 band never fires. Your long engravings sell at the short-engraving price, and nothing looks broken.

Chamevo Pricing Rules Manager showing a pricing group with a Used Colours basis, whole design targeting, the Any and All match toggle, and the note that rules are evaluated top to bottom

The Pricing Rules Manager says it right above the rule list: conditions are evaluated top to bottom, and the first match wins. You can drag them into a new order. Our rule of thumb: in Any mode, sort conditions from the highest threshold to the lowest. In All mode, order doesn't change the total.

A quick way to pick the mode is to finish this sentence out loud. "Long texts cost $5 instead of $2" is a tier, so use Any. "Each extra print location adds $4" is a stack, so use All. If you can't say the rule in one sentence, it's probably two groups.

Showing the price breakdown before checkout

A price that climbs while someone designs can feel like a trap if it isn't explained. That's not a small risk. Baymard Institute puts the documented average cart abandonment rate at 70.22% across 50 studies. In its latest survey of abandonment reasons, once the shoppers who were just browsing are set aside, 40% said extra costs were too high, the most common reason on the list.

Customization surcharges are extra costs by definition, so any WooCommerce custom product pricing setup has to earn the customer's trust. The fix isn't to hide surcharges; it's to show where each one comes from while the customer is still designing, so nothing new appears at checkout.

Line-item price breakdown: product price plus matched rules equals total Price breakdown for worked order B: product price $29.00, surcharges +$17.00 made of Print locations 2 or more print areas +$5.00, Print locations 3 or more print areas +$4.00, Print area coverage over 50%, front +$4.00, Print area coverage over 50%, back +$4.00, total $46.00. A price that moves should show its work Layout of the customizer's price breakdown panel, filled with worked order B from the margin example Product price $29.00 Surcharges +$17.00 Print locations 2 or more print areas +$5.00 Print locations 3 or more print areas +$4.00 Print area coverage over 50%, front +$4.00 Print area coverage over 50%, back +$4.00 Total $46.00 WooCommerce product or variation price One line per matched rule: what was measured, the condition, and the amount Rows follow the shipped breakdown panel: product price, surcharges with one line per matched rule, then total (subtotal and quantity rows appear when quantity is above 1).

Chamevo's engine records a line item for every rule that matches. Each line carries what was measured (for example Print Locations), which elements it applied to, the condition that matched, and the amount. The price breakdown panel then lists the WooCommerce product or variation price, the surcharges one per line, a subtotal and quantity row when someone orders more than one, and the total.

On WooCommerce, you place that panel with the [chamevo_pricing_breakdown] shortcode or the Chamevo Pricing Breakdown widget in Elementor, so it can sit right next to the add-to-cart button. When the customer adds the product to the cart, the line item carries the full customized price. As a safeguard, the plugin never lets that cart price drop below the WooCommerce price you set for the product.

An itemized list changes how a $46 shirt reads. "$46" alone raises the question "why?" A list that says "+$5 second print location, +$4 third print location, +$4 front over 50% full, +$4 back over 50% full" answers it before it's asked, and it tells the buyer exactly which choice to change if they want a lower price.

Custom product pricing strategies that protect margin

The engine is only half the job. Good WooCommerce custom product pricing depends just as much on which rules you write. Here's the playbook we'd start with.

Engraving and embroidery workbench with an engraved wooden cutting board, an engraved steel tumbler, an embroidery hoop, and a folded custom t-shirt

Price in bands, not cents per unit

"$0.25 per character" sounds precise, but it makes every keystroke visibly cost money, and customers start trimming their text. Bands feel calmer: up to 12 characters included, 13 to 25 adds $4, over 25 adds $8. Build them as one Any group, highest band first.

Charge the setup, not the pixel

Your real cost jumps in steps: a new screen, a second press, another hooping. Price those steps. Number of Colors Used and Print Locations map directly to setup work, and they're far easier for a customer to understand than a coverage percentage.

Make the first personalization free

Fold the most common design into the base price, usually one print location with a short text. Customers see a clean starting price, and the surcharges only appear when they choose to do more. In the worked example, that's exactly why order A still costs $29.

Test where the threshold sits

Look at your last 100 orders before you set a band. If most names are under 12 characters, a threshold at 10 charges half your customers and feels like a tax. A threshold at 15 only touches the long ones. Move one threshold at a time and watch conversion for a few weeks.

Keep the rule count small

If you can't explain your pricing in one sentence per group, customers can't either. Three or four groups cover most shops. Each should map to a real production cost you could point to on the shop floor.

Once the price is right, the rest of the order has to hold up too. Surcharges only protect margin if the file your team receives prints without manual fixes, which is where print-ready file export comes in. The Chamevo WooCommerce product customizer handles both ends: it prices the design live on the product page and hands your team print-ready files after checkout.

WooCommerce custom product pricing FAQ

Does WooCommerce price per character natively?

No. Core WooCommerce prices a product or a variation, not the text a customer types. The official Product Add-Ons extension can attach a flat, quantity-based, or percentage-based fee to a text field, but per-character pricing needs a tool that reads the design, such as a product customizer with a Text Length rule.

Do I still need a dynamic pricing plugin?

Only if you also want discounts. Pricing rules in Chamevo add surcharges based on the design. They don't look at user roles, cart totals, or quantity breaks, so if you run wholesale pricing or bulk discounts, keep a discount plugin for that job. The two sit side by side without overlapping.

Can I price by how much of the print area is filled?

Yes. The Print Area Coverage property measures how full each print area is, from 0 to 100 percent, and runs once per print area. A rule like "over 50% adds $4" charges the front and the back separately if both are more than half full.

Does this work with variable products?

Yes. The WooCommerce product or variation price stays your starting point, and matched rules add to it. The price breakdown shows that price as its own line, so a customer choosing a larger size sees the size price and the design surcharges separately.

Which Chamevo plan includes pricing rules?

Advanced pricing rules are included on the Growth plan ($89 a month) and above, alongside 3D visualization. Every plan starts with a 14-day free trial, and you can compare plans on the Chamevo pricing page.

Does the surcharge show in the cart and on the order?

The cart line item carries the full customized price, surcharges included, and WooCommerce multiplies it by the quantity as usual. The itemized list of surcharges appears on the product page in the price breakdown panel, before the customer adds the product to the cart.

Price the design, not the blank

WooCommerce custom product pricing comes down to one shift: stop pricing the blank and start pricing the work. Here's what to take away:

  • Flat prices hide losses on your most complex, most shared orders.
  • Discount plugins and customization pricing solve different problems. You may need both.
  • Seven properties cover real production costs: characters, lines, text size, coverage, elements, colors, and print locations.
  • Use Any for tiers (highest band first) and All for stacking surcharges.
  • Show the breakdown before checkout, so extra costs never arrive as a surprise.

Start with one bestseller. Write down what its simplest and most complex orders cost you to make, set two or three rules that close the gap, and place a test order to check the breakdown. You can do all of that inside the Chamevo WooCommerce product customizer during the 14-day free trial, with no transaction fees added to your orders.

Share the Post:

Partner Program

Grow with Chamevo

Build product customization into your client projects — without developing it from scratch.

Become a Partner

Ready to automate your custom product workflow?

Join 20,000+ e-commerce stores using Chamevo to sell custom products with confidence.

14-day free trial • Cancel anytime