Premium feature. This is part of SmartStore Import Export for WooCommerce, the premium plugin. The free plugins on WordPress.org do not include it.
A scheduled job runs an import or an export on its own, on a repeating schedule. Set one up and a supplier stock feed refreshes overnight, or a monthly order report arrives without anyone opening WordPress.
Creating a job #
Open the Scheduled Jobs tab and click New Job. A panel slides in from the side.
Job Name #
Something you will recognise in six months. Nightly supplier stock feed beats Job 1. The name appears in the jobs table and in notification emails.
Job Type #
Import or Export. The rest of the form changes to match, so set this before filling anything else in.
Module #
Products, Orders, Customers, Coupons, Product Reviews, Product Categories, Product Tags, or Bundle for all of them.
Frequency #
Hourly, Daily, Weekly or Monthly.
- Hourly suits fast-moving stock where being an hour out of date costs you sales. It also puts real load on the server, so keep the file small.
- Daily covers most supplier feeds and most reporting.
- Weekly asks for a day of the week as well.
- Monthly asks for a day of the month, from 1 to 28. The range stops at 28 so a job set for the 31st does not skip February.
Time #
The hour and minute the job should start, shown alongside the timezone it will use. That comes from your log timezone setting if you have set one, otherwise from the site timezone. Check it rather than assuming, since a job set for 2 AM in the wrong timezone runs in the middle of your trading day.
Pick a quiet hour for anything heavy. Between 2 AM and 5 AM local time is usually safe.
Import source #
Import jobs need somewhere to read from:
- From URL. Downloaded fresh on every run, so the job always sees the current file.
- Upload file. Stored on the server and imported unchanged every run. Use it for a fixed dataset, not for a feed that changes.
- FTP / FTPS and SFTP. Credentials are encrypted before storage. Leave the password or key blank when editing to keep the saved one.
- From Google Sheet for bundle imports.
If Item Already Exists #
Skip or Update, matched by ID or SKU. Create as new is deliberately not offered here, because a nightly job that duplicates its input would fill the store within a week.
Export format #
Export jobs choose CSV, TSV, XML, XLSX or Google Sheets.
Notification Email #
Where the run summary goes. Leave it blank for no email. Fill it in for anything you rely on, because a silent job that has been failing for three weeks is worse than no job at all.
The jobs table #
Each row shows job name, type, module, schedule, next run, last run and status, with actions to run immediately, edit, pause or delete.
Run now is how you test a job without waiting for its schedule. Build the job, run it once by hand, check the History record, then leave it to run on its own.
Pause keeps the job and its settings but stops it firing. Better than deleting when you are troubleshooting or pausing over a holiday.
Making the schedule actually reliable #
WordPress cron is not a real scheduler. It only fires when somebody visits your site. On a quiet store, a job set for 3 AM may not run until the first visitor arrives at 8 AM.
The fix is a real server cron. Add this to your server’s crontab, replacing the path with the one shown on the Scheduled Jobs tab:
* * * * * php /path/to/your/site/wp-cron.php
Most managed hosts offer a cron manager in their control panel, and many will set this up on request. While you are there, define DISABLE_WP_CRON as true in wp-config.php so WordPress stops trying to run cron on page loads as well.
The plugin also relies on Action Scheduler, which WooCommerce bundles, for background execution. A warning appears on the tab if it cannot find it. If WooCommerce is active, it is there.
What happens on each run #
Every run creates a History record, so you can see what a job did last Tuesday. Failures are recorded with an error message rather than passing silently. Turn on import logging while you are setting a job up, then turn it off once it is stable to keep the history table lean.
Jobs worth setting up #
- Nightly supplier stock. Daily, 4 AM, Products, SFTP source, Update, notification on.
- Weekly order report. Weekly, Monday 6 AM, Orders, XLSX, notification to whoever does the books.
- Monthly catalogue snapshot. Monthly, day 1, Bundle export. A portable record of the store as it stood.
- Hourly price feed. Only where prices genuinely move that fast, and only with a narrow file.
When a job does not run #
- Nothing happens at all. Set up the server cron above. This is the cause the overwhelming majority of the time.
- It runs late. Same cause.
- It runs but imports nothing. The source file did not change and your rule is Skip, or the file is empty. Check the History record’s counts.
- It fails on the source. Credentials or path. Test them in the import wizard, which gives clearer errors than a background run.
- It times out on large files. Lower the import batch size under Settings, or split the source file.