Skip to main content
Metrics type: Supporting MetricsCategory: Ecommerce Platform
Draft Products >30d Old for the selected period.

At a glance

The count of products sitting in draft status whose last modification is more than 30 days ago. These are listings someone started, photographed, or half-described and never finished. Each one is revenue that exists in your catalogue but is invisible to customers, the quiet backlog of unpublished work.

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 lighting brand on self-hosted WooCommerce 8.6 with a product-import plugin (WP All Import) feeding a supplier catalogue. The catalogue was reviewed on 20 Jun 26 (the real-time snapshot date). The card reads 13 draft products older than 30 days, above the >10 threshold, so Vortex IQ Nerve Centre raises an alert. Four things to notice:
  1. A bulk import created most of them. WP All Import brought in 13 supplier products as drafts in early March so the team could review pricing before publishing. The review never happened. This is the most common cause of an aging-draft pile: a bulk import that stalled at the review step.
  2. “Walnut Desk Lamp” is correctly excluded. It is a draft, but it was edited six days ago, so the 30-day aging filter (on date_modified) leaves it out. The card targets abandoned work, not work in progress. This is why aging runs off date_modified rather than date_created.
  3. “Copper Wall Sconce” is pending, not draft. Pending means submitted for editorial review, a different workflow state. It does not count here. If your team uses the pending workflow, those items need a separate eye; this card is draft-specific.
  4. Each draft is dormant revenue. Thirteen finished-but-unpublished products is thirteen listings customers cannot buy. The fix is operational: triage the list in WP Admin, publish the ready ones, and delete the abandoned ones. Pair with Products Missing Image and Products Missing SKU, drafts often stall precisely because they are missing those fields.

Sibling cards merchants should reference together

Reconciling against WooCommerce

Where to look in WooCommerce Admin: WP Admin > Products > All Products filtered to the Draft status link above the product table. WordPress shows a “Draft (N)” count there. To match this card’s aging, sort the list by Date (the modified column) and count only those last edited more than 30 days ago, WP Admin’s status filter shows all drafts regardless of age, so its number will be equal to or higher than this card. Other WP Admin views that look related but are not:
  • Products list “All (N)” count: includes every status. Far higher than the draft-only number.
  • WooCommerce > Status > Logs: import logs show how many drafts a feed created, but not their current age.
  • The Bin (trash): trashed products are not drafts. Deleting a draft moves it out of this count entirely.
Why our number may legitimately differ from WP Admin: The cleanest reconciliation is the Products list filtered to Draft and sorted by modified date, then count the rows older than 30 days by hand. WP Admin has no native “aging draft” report, which is why this card exists.

Known limitations / merchant FAQs

Why does it use date_modified instead of date_created? Because a product created long ago but edited recently is active work, not a stalled draft. Aging on date_modified catches the genuinely abandoned items and ignores ones the team is still touching. The trade-off: an import plugin that re-saves every draft on each run will reset the clock and hide real stalls, see the import question below. Does this include pending or private products? No. It targets draft only. pending means submitted for editorial review (a different workflow), and private means published but hidden from the public catalogue. Each is a separate state with its own implications. If your team relies on the pending-review workflow, those items are not surfaced here. My import plugin created hundreds of drafts, is that a problem? It depends. Many feed plugins (WP All Import, product CSV importers) deliberately land new products as drafts so a human can review pricing and imagery before publishing. That is fine if the review happens. It becomes a problem when the review never happens and the drafts age out, which is exactly what this card detects. If your importer re-touches drafts on every run, the aging clock resets and the card under-reports, check the importer’s “skip unchanged” setting. What about auto-drafts? WordPress creates an auto-draft placeholder whenever someone opens “Add Product” and abandons it. These are noise, not real catalogue work. The REST API status=draft filter excludes auto-draft, so this card ignores them. A raw database count would include them and read higher. Does a draft variable product count its variations? No. The card counts the parent draft product as one, regardless of how many variations it has. A draft variable product with twenty colour variations is a single entry here. For the completeness of variations themselves, see Variable Product Attribute Completeness. Is this real-time or refreshed on a schedule? It is a real-time snapshot of catalogue state, refreshed on the standard data refresh (typically every 30 to 60 minutes for live integrations). On self-hosted stores a host outage can delay the refresh; force a manual refresh if you have just published a batch and want the count to update immediately.

Tracked live in Vortex IQ Nerve Centre

Draft Products >30d Old is one of hundreds of KPI pulses Vortex IQ tracks across WooCommerce and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English. Start for free or book a demo to see this metric running on your own data.