---
title: Run Your First Catalog Scan
description: "Running a catalog scan is a single click from the dashboard of [Catalog Health Scanner for WooCommerce Pro](https://wpfactory.com/item/catalog-health-scanner-for-woocommerce/): pick a scan profile, press **Run Scan**, and watch the progress bar. On most catalogs the first scan finishes in seconds, because…"
url: "https://wpfactory.com/docs/run-your-first-scan/"
updated: "2026-10-05"
category: How to
tags:
  - Catalog Audit
---

# Run Your First Catalog Scan

Running a catalog scan is a single click from the dashboard of [Catalog Health Scanner for WooCommerce Pro](https://wpfactory.com/item/catalog-health-scanner-for-woocommerce/): pick a scan profile, press **Run Scan**, and watch the progress bar. On most catalogs the first scan finishes in seconds, because the profile it uses by default deliberately looks for the small number of things that are costing you money right now.

## Before you start

Nothing is required beyond an active install. The setup wizard is optional, and a scan works whether you answered it or skipped it. If you have not seen it, read [install Catalog Health Scanner and run the setup wizard](https://wpfactory.com/docs/install-catalog-health-scanner/) first, because the answers decide which checks run at all.

## Step-by-step

1. Go to **WPFactory > Catalog Health**. Before your first scan the dashboard shows an empty state with a single **Scan my catalog now** button.
2. Choose a profile in the **Scan profile** dropdown, or leave it on the preselected one.
3. Click **Run Scan**.
4. Watch the progress bar. The text reads *Scanning: X of Y products* and updates as each batch completes.
5. When the scan finishes, the page reloads by itself and the dashboard fills in: score, category cards, quick wins and top issues.

Only one scan runs at a time. Starting a second while one is in flight returns "A scan is already running" rather than queueing.

## The first scan runs Revenue Blockers, on purpose

Out of the box the default profile is **Revenue Blockers**: every Critical-severity check, across all ten categories, and nothing else.

This is a deliberate choice rather than a limitation. A Full Scan on a neglected catalog can return thousands of findings, most of them Low and Medium, and a wall of four thousand issues is not a starting point anyone acts on. Revenue Blockers returns the short list of products that genuinely cannot be bought, sell at a loss, or hand customers a broken download. You fix those, then widen the net.

When you are ready for the full picture, switch the dropdown to **Full Scan** or one of the situational profiles. The dropdown remembers the last profile you ran manually and preselects it next time. See [scan profiles](https://wpfactory.com/docs/scan-profiles/).

## How the batch engine works

A scan is started once and then advanced in short, resumable steps, so it never tries to finish inside one PHP request and never times out on a large catalog.

- **Products are walked by ID.** The engine asks for the next 25 published products with an ID higher than the last one it saw. That is stable even if products are added or deleted mid-scan, and it is what makes resuming exact rather than approximate.
- **Each step has a time budget.** A manual scan spends about 8 seconds per request and then hands control back to the browser, which immediately requests the next step. A scheduled scan gets a 20 second budget and re-queues itself 30 seconds later through the `wpfchs_scan_step_event` cron event until it is done.
- **Progress is persisted after every step.** The last product ID, the number scanned, the issues found and the per-check counters are written to the scan row, so nothing is lost if the browser tab closes or the connection drops.
- **Catalog-wide checks run once, at the end.** Duplicate SKUs, near-duplicate SKUs, duplicate titles and orphaned variations cannot be judged one product at a time, so they run as a single pass after the per-product walk finishes.

Both the batch size and the step budget are filterable: `wpfchs_scan_batch_size` (default 25) and `wpfchs_ajax_step_budget` (default 8.0 seconds). Lower them on a very constrained host, raise them on a fast one.

## Progress, pause, resume and cancel

While a scan is running, the profile dropdown is disabled and the buttons change to **Pause** and **Cancel**.

| Action | What happens |
| --- | --- |
| **Pause** | The scan stops after the current step and its status becomes paused. Everything scanned so far is kept. |
| **Resume Scan** | Replaces the Run Scan button while a scan is paused. Stepping restarts from the exact product it stopped at. |
| **Cancel** | Asks for confirmation ("Cancel this scan? Progress so far is kept."), then marks the scan cancelled. Issues already recorded stay, but the scan never completes, so it produces no score and never appears in History. |

You do not have to sit on the page. Leaving the dashboard stops the browser driving the steps, but the scan stays in its running state, and reopening the dashboard picks the stepping straight back up from where it left off.

## What happens when a scan completes

1. **Stale issues are resolved.** Any open issue that was not seen again in this scan is marked resolved, which is how a fix you made outside the plugin gets reflected. There is one important exception, below.
2. **The score is computed** from the per-check counters: how many products each check examined and how many failed, weighted by severity. Category scores are stored alongside the total.
3. **The scan row is closed** with its completion time, products scanned, issues found and score, and it becomes the scan the dashboard and History read from.
4. **Applicability detection is refreshed**, so a group that changed state during the scan is re-evaluated for the next one.
5. **Per-product issue counts are rebuilt** into the `_wpfchs_open_issues` postmeta, which powers the sortable Health column on the products list.
6. **The `wpfchs_scan_completed` action fires**, which is what triggers the email digest, immediate critical alerts and optional auto-fix if you have enabled them.

## Skipped products and the grace period

A scanned product and a skipped product are not the same thing, and Catalog Health Scanner is deliberate about the difference. A product can be skipped for two reasons.

### Excluded categories

**Settings > Scan scope** lets you exclude product categories from scanning. Products in an excluded category are counted as skipped and never examined.

### The grace period, which is off by default

The **Grace period for new products (days)** threshold (`grace_period_days`) can hold back products published since the last scan so that a genuine work-in-progress product does not drag your score down. **Its default is 0, which means off.**

That default is intentional. Most people install a catalog scanner right after an import, a migration or a bulk edit, and those are precisely the products a grace window would hide. Scanning everything and telling you the truth is more useful than a flattering number. If your store adds one product at a time and you want breathing room, set it to a few days in **Settings > Thresholds**.

Two rules keep the grace period honest:

- **It never applies to your first scan.** With no previous scan to compare against, the whole catalog counts. Otherwise a freshly imported store would scan zero products and report a meaningless 100%.
- **A skipped product is never counted as scanned.** Skipped products are tallied separately and shown on their own. They do count toward the progress bar, because they have been dealt with, but they never appear in the "products scanned" figure.

### If anything was skipped, nothing is auto-resolved

Stale resolution works from "not seen in this scan", and a skipped product satisfies that too. Marking a still-broken product as fixed is the worst mistake this plugin could make, so whenever a scan skips even one product, the resolution step is left to the next complete pass. Nothing is lost: those issues stay open and are resolved by the first scan that covers the whole catalog.

The dashboard says so out loud. If the last scan skipped anything, a warning strip reports how many products were not checked, why (grace period, excluded category, or both), and links to **Change what gets scanned**.

## Troubleshooting

- **"A scan is already running."** Only one scan can be active. Open the dashboard, then pause, resume or cancel the scan in progress.
- **"No applicable checks in this profile."** Every check in the chosen profile is either disabled in **Settings > Individual checks** or belongs to a group you marked not applicable. Widen the profile, or re-enable the group.
- **The scan stalls or reports it could not continue.** Progress is saved after every step, so reopen the dashboard and resume. If it stalls repeatedly on a constrained host, lower `wpfchs_scan_batch_size` and `wpfchs_ajax_step_budget`.
- **Scheduled scans never finish.** They advance through WP-Cron. On a site with cron disabled or with very little traffic, set up a real system cron for `wp-cron.php`. See [scheduled scans, digest and alerts](https://wpfactory.com/docs/scheduled-scans-email-digest/).
- **The product count looks low.** Only products with the published status are scanned. Drafts, private and pending products are not, and neither are products in excluded categories.

## Where to go next

- [The dashboard and health score](https://wpfactory.com/docs/catalog-health-dashboard/)
- [Scan profiles](https://wpfactory.com/docs/scan-profiles/)
- [Triage issues in the category tabs](https://wpfactory.com/docs/triage-catalog-issues/)
- [Fix issues safely: preview, undo, log](https://wpfactory.com/docs/fix-catalog-issues/)
- [Scan history and comparison](https://wpfactory.com/docs/scan-history-compare/)

Need a hand? Our team answers every ticket on the [Catalog Health Scanner support forum](https://wpfactory.com/support/).

Related articles

- [What Catalog Health Scanner Does (and What It Does Not)](https://wpfactory.com/docs/catalog-health-scanner-overview/)
- [How the Catalog Health Score Is Calculated](https://wpfactory.com/docs/catalog-health-score/)
- [Check Library: All 70 Catalog Health Checks](https://wpfactory.com/docs/catalog-health-checks-reference/)
- [Catalog Health Scanner Settings Reference](https://wpfactory.com/docs/catalog-health-settings/)
- [Catalog Health Scanner FAQ and Troubleshooting](https://wpfactory.com/docs/catalog-health-faq/)
