PHPackages                             woocommerce/wc-smooth-generator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. woocommerce/wc-smooth-generator

ActiveWordpress-plugin[Utility &amp; Helpers](/categories/utility)

woocommerce/wc-smooth-generator
===============================

A smooth product, order, customer, and coupon generator for WooCommerce.

1.3.0(2mo ago)37418.8k↓33.3%55[8 PRs](https://github.com/woocommerce/wc-smooth-generator/pulls)GPL-3.0-or-laterPHPPHP &gt;=7.4CI passing

Since Nov 7Pushed 2mo ago87 watchersCompare

[ Source](https://github.com/woocommerce/wc-smooth-generator)[ Packagist](https://packagist.org/packages/woocommerce/wc-smooth-generator)[ Docs](https://woocommerce.com/)[ RSS](/packages/woocommerce-wc-smooth-generator/feed)WikiDiscussions trunk Synced 1mo ago

READMEChangelog (8)Dependencies (10)Versions (44)Used By (0)

WooCommerce Smooth Generator
============================

[](#woocommerce-smooth-generator)

A super-smooth generator for products, orders, coupons, customers, and terms. WP-CLI is the preferred interface for using the plugin. There is also a WP Admin UI at Dashboard &gt; Tools &gt; WooCommerce Smooth Generator with (for now) more limited functionality.

Installation
------------

[](#installation)

1. Download the latest release as a zip file from
2. Install in your WordPress site as you would any other plugin zip file.

WP-CLI Commands
---------------

[](#wp-cli-commands)

You can see a summary of all available commands by running `wp help wc generate`, and more detailed guidance for each individual command is available by running `wp help wc generate `.

### Products

[](#products)

Generate products based on the number of products parameter.

- `wp wc generate products `

Generate products of the specified type. `simple` or `variable`.

- `wp wc generate products  --type=simple`

### Orders

[](#orders)

Generate orders from existing products based on the number of orders parameter, customers will also be generated to mimic guest checkout.

Generate orders for the current date

- `wp wc generate orders `

Generate orders with random dates between `--date-start` and the current date.

- `wp wc generate orders  --date-start=2018-04-01`

Generate orders with random dates between `--date-start` and `--date-end`.

- `wp wc generate orders  --date-start=2018-04-01 --date-end=2018-04-24`

Generate orders with a specific status.

- `wp wc generate orders  --status=completed`

Apply coupons to a percentage of generated orders (0.0-1.0). If no coupons exist, 6 will be created automatically (3 fixed cart, 3 percentage). Note: `--coupons` flag is equivalent to `--coupon-ratio=1.0`.

**Deterministic Distribution (Batch Mode):** When generating multiple orders, the exact number of orders with coupons is calculated dynamically using selection without replacement (e.g., 100 orders at 0.5 ratio = exactly 50 with coupons). For odd numbers, `round()` is used (e.g., 11 orders at 0.5 = 6 with coupons). Single order generation uses probabilistic distribution.

- `wp wc generate orders  --coupon-ratio=0.5`

Refund a percentage of completed orders (0.0-1.0). Refunds are distributed as: 50% full refunds, 25% single partial refunds, and 25% multi-partial refunds (two partial refunds).

**Deterministic Distribution (Batch Mode):** When generating multiple orders, the exact number and type of refunds is calculated dynamically using weighted selection without replacement (e.g., 100 orders at 0.4 ratio = exactly 20 full, 10 partial, 10 multi-partial). For odd numbers, remainders go to multi-partial refunds. Single order generation uses probabilistic distribution.

- `wp wc generate orders  --status=completed --refund-ratio=0.3`

#### Order Attribution

[](#order-attribution)

Order Attribution represents the origin of data for an order. By default, random values are generated and assigned to the order. Orders with a creation date before 2024-01-09 will not have attribution metadata added, as the feature was not available in WooCommerce at that time.

Skip order attribution meta data genereation.

- `wp wc generate orders  --skip-order-attribution`

### Coupons

[](#coupons)

Generate coupons based on the number of coupons parameter.

- `wp wc generate coupons `

Generate coupons with a minimum discount amount.

- `wp wc generate coupons  --min=5`

Generate coupons with a maximum discount amount.

- `wp wc generate coupons  --max=50`

Generate coupons with a specific discount type. Options are `fixed_cart` or `percent`. If not specified, defaults to WooCommerce default (fixed\_cart).

- `wp wc generate coupons  --discount_type=percent --min=5 --max=25`

### Customers

[](#customers)

Generate customers based on the number of customers parameter.

- `wp wc generate customers `

### Terms

[](#terms)

Generate terms in the Product Categories taxonomy based on the number of terms parameter.

- `wp wc generate terms product_cat `

Generate hierarchical product categories with a maximum number of sub-levels.

- `wp wc generate terms product_cat  --max-depth=5`

Generate product categories that are all child terms of an existing product category term.

- `wp wc generate terms product_cat  --parent=123`

Generate terms in the Product Tags taxonomy based on the number of terms parameter.

- `wp wc generate terms product_tag `

Development
-----------

[](#development)

Requirements

- Node.js v16
- Composer v2+

1. If you use [Node Version Manager](https://github.com/nvm-sh/nvm) (nvm) you can run `nvm use` to ensure your current Node version is compatible.
2. Run `npm run setup` to get started. This will install a pre-commit Git hook that will lint changes to PHP files before they are committed. It uses the same phpcs ruleset that's used by WooCommerce Core.

### Releasing a new version

[](#releasing-a-new-version)

1. Create a new branch with a name like `release-x.x.x`.
2. Add a new entry to the **changelog.txt** file with all the changes since the last release. Follow the conventions of previous changelog entries.
3. If necessary, update the `Tested up to` and `WC tested up to` values in the plugin header in **wc-smooth-generator.php**.
4. Update the plugin version with the new value in the **wc-smooth-generator.php** and **package.json** files.
5. Run `npm run build` to generate a production-ready zip file.
6. Test the zip file by installing it in a WordPress instance and ensuring it has the expected version number and changes.
7. Commit the changes to your release branch, and push to the repository. Create a pull request from the release branch.
8. Merge the pull request.
9. In GitHub, go to the Releases screen and click "Draft a new release".
10. Set the release title as "Version x.x.x" (but with the actual version number). In the release description, add a brief summary of highlights, and then paste the new changelog entry below that. From the "Choose a tag" dropdown, type the new version number and then click "Create a new tag". Ensure the target is trunk.
11. Upload the new zip file to the release where it says "Attach binaries".
12. Publish the release!

After finishing the release, you may want to run `npm run setup` again, because the `build` script removes dev dependencies.

###  Health Score

62

—

FairBetter than 99% of packages

Maintenance85

Actively maintained with recent releases

Popularity45

Moderate usage in the ecosystem

Community33

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor4

4 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~333 days

Recently: every ~268 days

Total

9

Last Release

78d ago

PHP version history (2 changes)1.1.0PHP ^7.4 || ^8.0

1.3.0PHP &gt;=7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/d1f9b32f9677791fbef38b00c9225e05800f525b3b13872b118fd344a58350a0?d=identicon)[woocommerce](/maintainers/woocommerce)

---

Top Contributors

[![coreymckrill](https://avatars.githubusercontent.com/u/916023?v=4)](https://github.com/coreymckrill "coreymckrill (92 commits)")[![rodrigoprimo](https://avatars.githubusercontent.com/u/77215?v=4)](https://github.com/rodrigoprimo "rodrigoprimo (32 commits)")[![rrennick](https://avatars.githubusercontent.com/u/343847?v=4)](https://github.com/rrennick "rrennick (31 commits)")[![kloon](https://avatars.githubusercontent.com/u/271630?v=4)](https://github.com/kloon "kloon (30 commits)")[![mikejolley](https://avatars.githubusercontent.com/u/90977?v=4)](https://github.com/mikejolley "mikejolley (22 commits)")[![budzanowski](https://avatars.githubusercontent.com/u/17271089?v=4)](https://github.com/budzanowski "budzanowski (22 commits)")[![rawdreeg](https://avatars.githubusercontent.com/u/4209011?v=4)](https://github.com/rawdreeg "rawdreeg (17 commits)")[![ovidiul](https://avatars.githubusercontent.com/u/537751?v=4)](https://github.com/ovidiul "ovidiul (15 commits)")[![layoutd](https://avatars.githubusercontent.com/u/228780?v=4)](https://github.com/layoutd "layoutd (15 commits)")[![michi-dev](https://avatars.githubusercontent.com/u/60227869?v=4)](https://github.com/michi-dev "michi-dev (10 commits)")[![zhongruige](https://avatars.githubusercontent.com/u/71906536?v=4)](https://github.com/zhongruige "zhongruige (8 commits)")[![shiki](https://avatars.githubusercontent.com/u/198826?v=4)](https://github.com/shiki "shiki (7 commits)")[![masteradhoc](https://avatars.githubusercontent.com/u/6242098?v=4)](https://github.com/masteradhoc "masteradhoc (6 commits)")[![Luc45](https://avatars.githubusercontent.com/u/9341686?v=4)](https://github.com/Luc45 "Luc45 (5 commits)")[![chihsuan](https://avatars.githubusercontent.com/u/4344253?v=4)](https://github.com/chihsuan "chihsuan (5 commits)")[![louwie17](https://avatars.githubusercontent.com/u/2240960?v=4)](https://github.com/louwie17 "louwie17 (4 commits)")[![jrfnl](https://avatars.githubusercontent.com/u/663378?v=4)](https://github.com/jrfnl "jrfnl (4 commits)")[![jonathansadowski](https://avatars.githubusercontent.com/u/363749?v=4)](https://github.com/jonathansadowski "jonathansadowski (4 commits)")[![tammullen](https://avatars.githubusercontent.com/u/24649833?v=4)](https://github.com/tammullen "tammullen (3 commits)")[![Biont](https://avatars.githubusercontent.com/u/4208996?v=4)](https://github.com/Biont "Biont (2 commits)")

---

Tags

woocommercewp-cli

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/woocommerce-wc-smooth-generator/health.svg)

```
[![Health](https://phpackages.com/badges/woocommerce-wc-smooth-generator/health.svg)](https://phpackages.com/packages/woocommerce-wc-smooth-generator)
```

###  Alternatives

[symfony/dependency-injection

Allows you to standardize and centralize the way objects are constructed in your application

4.2k431.1M7.4k](/packages/symfony-dependency-injection)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

728272.9k17](/packages/civicrm-civicrm-core)[api-platform/state

API Platform state interfaces

223.4M57](/packages/api-platform-state)[rainlab/blog-plugin

Blog plugin for October CMS

17257.7k](/packages/rainlab-blog-plugin)[symfony/object-mapper

Provides a way to map an object to another object

34885.7k18](/packages/symfony-object-mapper)[spomky-labs/pwa-bundle

Progressive Web App Manifest Generator Bundle for Symfony.

6144.4k1](/packages/spomky-labs-pwa-bundle)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
