Use Cases
Bootstrap a demo/test store
Go to Seeder → Profiles → New profile. A profile bundles what to generate and how much:
- Customers — number of customers, whether to generate addresses.
- Products — number, category dataset, product mode, variants (min/max per product), pricing (min/max price, tier prices, attribute prices), stock (min/max), weight.
- Orders — number, order status code, payment method, currency, min/max items per order.
- Coupons, Gift cards, Catalog rules — number and value ranges (discount %, card value, etc.), and whether to include coupons/gift cards in generated orders.
- Wishlist — whether to add wishlist items for generated customers.
Give the profile a Name and Handle, save it, then click Generate to run it immediately, or Dry-run to preview counts without writing anything. Bulk generate runs several profiles back to back.
Refresh demo data automatically
On the profile, set a Cron expression and enable Auto-reset. Then either:
- Rely on Craft's own queue/cron trigger if the project already runs one, or
- Schedule
php craft seeder-cron/run(all due profiles) orphp craft seeder-cron/run <handle>(one profile) with the host's system cron — see Console Commands.
Use Seeder → Profiles → Reset (or php craft seeder/reset <handle>) to purge a
profile's previously generated records and regenerate from scratch. This is destructive when the
profile's purge options are enabled — confirm the profile's purge settings before running it
against anything but staging/local.
Generate data without a saved profile
For quick one-off data, the console generator commands work without creating a profile first:
php craft seeder/customers 25
php craft seeder/products 40 --category=food-and-drinks
php craft seeder/orders 15
php craft seeder/coupons 20
php craft seeder/gift-cards 20
Or run php craft seeder/wizard for an interactive prompt-driven flow, or
php craft seeder/status to see current counts of seeded products, customers, orders,
profiles, and enabled currencies. See Console Commands for the
full command list.
Import products, entries, categories, or customers from a file
Go to Seeder → Import → New profile. The import wizard has five steps:
- Details — name, handle, and the target element type (product, entry, category, or customer). For entries, pick the section and entry type.
- Source — upload a CSV/JSON/XML file, or configure a remote URL to fetch it from.
- Mapping — after Seeder detects the file's columns (or JSON/XML paths), map each source column to a target field, optionally applying a per-field transformer.
- Options — batch size, whether to enable debug tracing, and other row-processing options.
- Review — preview the first rows against the mapping before saving.
Save the profile, then use Run to import immediately, or Upload to replace the source file without changing the mapping. Every run produces an entry under Seeder → Import Logs with per-row status (imported / updated / skipped / failed) — open a log to see failures and, if debug mode was enabled, per-row debug traces.
Automate imports outside the CP
php craft seeder-import/run --profile=my-profile
php craft seeder-import/run --profile=my-profile --file=/path/to/data.csv
php craft seeder-import/run --profile=my-profile --queue
--queue dispatches the import as a Craft queue job instead of running it inline — use this for
large files so the request doesn't time out. php craft seeder-import/list lists saved import
profiles.
Troubleshooting
- Unable to resolve service/class — confirm the yStore (
yui/craft-plugin) package is installed, enabled, and up to date; generator profiles depend on its customer/product/order services. - Validation errors during generation — the CP/console output lists the field-level issue returned by the store models; adjust the profile config or fix required fields on the target section/entry type.
- Import row failures — check the import log's per-row detail; enable debug mode on the profile's Options step to capture the raw row and mapping output for failed rows.