% of variable products (type=variable) with all required attributes filled across variations. Missing attrs break checkout selection.
At a glance
The percentage of your variable products whose variations have every variation-defining attribute set. On WooCommerce a variable product exposes a set of attributes (size, colour, material) marked “Used for variations”; each variation must specify a value for every such attribute or the customer cannot complete the dropdown selection and the Add to Cart button stays disabled. This card finds the products where that is broken.
| What it counts | COUNT(variable products with all required attributes filled across all variations) / COUNT(variable products) x 100. A variable product is “complete” only when every variation has a value for every attribute flagged variation = true. Any “Any …” placeholder or blank on a required attribute marks the product incomplete. |
| REST API endpoints | GET /wp-json/wc/v3/products?type=variable to find variable products and their attributes array (each attribute carries a variation flag). Then GET /wp-json/wc/v3/products/{id}/variations to read each variation’s attributes and check every required attribute has a non-empty value. The card walks both. |
| What “required” means | Only attributes with the “Used for variations” box ticked count. Global descriptive attributes that are not used for variations (e.g. a “Care instructions” attribute) do not affect completeness. |
| Product type | Only type = variable products are evaluated. simple, grouped, and external products have no variations and are excluded from both numerator and denominator. |
| Status filter | By default evaluates publish variable products. Drafts are excluded so work-in-progress products do not depress the score. |
| Why it matters | A variation missing a required attribute value renders an un-selectable option on the product page. The customer picks “Red”, finds no matching size, and bounces. It is a silent conversion leak that never appears in your orders data because the order is never placed. |
| Self-hosted vs managed-Woo | Same definition everywhere. Self-hosted stores using a bulk variation-generator plugin (e.g. one that auto-creates the full attribute matrix) tend to score higher; manually built variations tend to have gaps. Host type does not change the calculation. |
| Time window | RT (real-time snapshot, refreshed on the standard data refresh) |
| Alert trigger | <90%, driven by sentiment_key: wc_variable_product_completeness |
| Roles | owner, operations |
Calculation
Calculated automatically from your WooCommerce data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.Worked example
A UK apparel brand on managed-Woo (WP Engine), WooCommerce 8.6. They sell mostly variable products (size x colour). Catalogue snapshot taken 12 Apr 26. They have 286 published variable products.| Variable product | Attributes used for variations | Variations | All required values filled? | Complete? |
|---|---|---|---|---|
| Classic Tee | Size (S/M/L), Colour (Red/Blue) | 6 | Yes, all 6 variations have both | Yes |
| Lounge Hoodie | Size (S/M/L/XL), Colour (Grey) | 4 | Yes | Yes |
| Summer Dress | Size (8/10/12), Colour (Floral/Plain) | 6 | One variation left Size = “Any” | No |
| Wool Scarf | Colour (Charcoal/Camel) | 2 | One variation has blank Colour | No |
| Kids Cap | Size (One Size), Colour (5 colours) | 5 | Yes | Yes |
| … 281 more | 259 complete, 22 incomplete | |||
| Totals | 259 / 286 complete |
- 90.6% sits just above the
<90%alert line. One more incomplete product and the card crosses the threshold and Nerve Centre fires. The 27 incomplete products (286 minus 259) are the worklist; each one has at least one variation a customer cannot buy. - “Any …” is the most common trap. The Summer Dress variation left Size as “Any size”, which WooCommerce treats as a wildcard. A wildcard variation is technically valid to WooCommerce but means the product page cannot resolve a unique variation for that combination, so the customer sees no price and no Add to Cart. The card flags it as incomplete because a required attribute has no concrete value.
- A single blank attribute fails the whole product. The Wool Scarf has two variations; one has a blank Colour. That one gap marks the entire product incomplete in this card, the score is product-level, not variation-level, because a customer hitting that one broken option still cannot buy.
- Bulk variation generators raise the score. Brands that build the full attribute matrix with a generator plugin rarely leave gaps. Manually created variations, especially when a colour or size was added to the attribute list after the variations were built, are where gaps creep in. After adding a new attribute term, re-generate or re-check variations.
Sibling cards merchants should reference together
| Card | Why pair it with Attribute Completeness |
|---|---|
| WC Total Products | The catalogue total. Pair to see what fraction of your catalogue is variable and therefore exposed to this risk. |
| WC Products Missing Image | The other half of a broken product page. A complete attribute set on an image-less product still converts poorly. |
| WC Products Missing SKU | Variations carry their own SKUs. Missing variation SKUs break marketplace and ad-feed joins even when attributes are complete. |
| WC Conversion Rate | Incomplete variations are a silent conversion leak. A dip in conversion alongside a drop here points at un-selectable options. |
| WC Checkout Error Rate 24h | Some incomplete variations throw errors at the add-to-cart step rather than silently disabling the button. |
| WC Out of Stock Products | An OOS variation is a different problem from an incomplete one; pair to separate “cannot buy because no stock” from “cannot buy because broken setup”. |
Reconciling against WooCommerce
Where to look in WooCommerce Admin: WP Admin → Products, set the Product type filter to Variable product to list only the products this card evaluates. Open any flagged product, go to the Attributes tab to see which attributes have “Used for variations” ticked, then the Variations tab to check each variation has a concrete value (not “Any …”) for every such attribute. WooCommerce itself shows a notice on the Variations tab when a variation is missing a required value. WP Admin → WooCommerce → Status does not surface attribute completeness directly, this is a catalogue-quality signal WooCommerce does not report natively, which is part of why the card exists. Why our number may legitimately differ from a manual spot-check:| Reason | Direction of divergence |
|---|---|
Status filter. This card counts publish variable products only; if you tally drafts and pending products by hand you will get a different denominator. | Variable |
| ”Any …” treatment. WooCommerce accepts a wildcard “Any” value as valid; this card treats a required attribute set to “Any” as incomplete because the product page cannot resolve it. A manual check that accepts “Any” will count more products as complete. | Ours lower |
| Which attributes are “required”. Only attributes ticked “Used for variations” count. A manual check that also inspects descriptive (non-variation) attributes will see gaps the card ignores. | Either |
| Product-level vs variation-level. This card scores per product (one broken variation fails the product). A variation-level tally will report a different percentage. | Variation-level usually reads higher |
| Sync lag. A just-fixed variation appears in WP Admin immediately but updates here on the next refresh. | Ours temporarily lower; self-resolves |
Plugin behaviour. Variation-swatch and bulk-variation plugins can store attribute data in custom meta. The card reads the canonical variation attributes array; an unusual plugin shape may need engine support. | Investigate per-merchant |
Known limitations / merchant FAQs
What exactly makes a variable product “incomplete” here? At least one of its variations is missing a concrete value for an attribute that is ticked “Used for variations”. A blank value, or a wildcard “Any …” value, both mark the variation, and therefore the whole product, as incomplete because the customer cannot resolve a unique purchasable variation. Does a descriptive attribute that is not used for variations affect the score? No. Only attributes with the “Used for variations” box ticked count. A “Care instructions” or “Country of origin” attribute that is purely descriptive does not affect completeness. Why is one broken variation enough to fail the whole product? Because a customer who selects the broken combination on the product page hits a dead end, no price, no Add to Cart. The card scores at the product level so the worklist matches the real customer-facing failure. If you need a variation-level breakdown, drill into the flagged product in WP Admin. Is “Any …” really a problem? Often, yes. “Any” is a valid wildcard in WooCommerce, but it only works when there is also a fully-specified fallback variation. Used carelessly it leaves the product page unable to resolve a price for certain combinations. The card treats a required attribute set to “Any” as incomplete by design. Why did the score drop after I added a new colour or size? Adding a term to an attribute list does not auto-create the matching variations. The existing variations now do not cover the new term, and any variation you forgot to set a value for is flagged. After adding an attribute term, re-generate variations or set values on the new ones. My store is all simple products, why is this card empty or 100%? The card only evaluatestype = variable products. If you have no variable products the denominator is zero and the card has nothing to score. Simple products have no variations and are out of scope.
Can I change the 90% alert threshold?
Yes, the threshold is configurable per profile in the Sensitivity tab. Set it to your own baseline rather than relying on the generic <90% default.