Everything Personal Data Scanner checks on your WordPress site
Eight data sources, nine detector types, and a Pro tier that acts on what it finds. Run from your own WordPress admin or via WP-CLI.
Where it looks
Every source is scanned in resumable batches, so scanning never loads a whole table into memory or locks up a busy site.
| Source | What's covered | Tier |
|---|---|---|
| Users & user meta | Every account, including WooCommerce billing/shipping fields and any custom meta another plugin attaches. | Free |
| Comments & comment meta | Author name, email, IP address, URL, content — every status including spam and trash, and WooCommerce order notes (stored as comments). | Free |
| Posts, pages & revisions | Title, content, excerpt and meta, across every status including drafts, private posts, and the revision history most sites never clear. | Free |
| Options table | Serialized and JSON option values, which is where many third-party plugins quietly store personal data. | Free |
| WooCommerce orders | Both High-Performance Order Storage (HPOS) and legacy post-based orders, detected automatically — addresses, notes, meta. | Free |
| WooCommerce customers | The dedicated customer lookup table WooCommerce maintains, independent of WordPress user accounts. | Free |
| Contact Form 7 (via Flamingo) | Every stored submission, field by field, including sender metadata. | Free |
| WPForms entries | Full entry data matched back to the original field labels. Requires WPForms Pro, which is the tier that stores entries. | Free |
| Custom post type + specific fields | Point the scanner at any custom post type from another plugin and list exactly which fields to check. | Pro |
What it recognizes
Every detector reports a confidence score. Validated formats (IBAN, card, several national IDs) score high because they pass a real checksum, not just a plausible shape.
| Detector | How it works |
|---|---|
| Email address | Pattern matching with format validation; documentation domains like example.com score low. |
| Phone number | International and common national formats. Unformatted digit runs count only in a field whose name says it's a phone number, to avoid flagging order numbers. |
| IP address | IPv4 and IPv6. Private and loopback ranges are reported at low confidence since they rarely identify a specific person. |
| IBAN | Validated against the real ISO 13616 mod-97 checksum, so false positives are rare. |
| Payment card number | Luhn-validated and matched against known issuer prefix ranges (Visa, Mastercard, Amex, Discover, JCB, Diners, Maestro, UnionPay). |
| National ID number | Germany (Steuer-ID), United Kingdom (National Insurance number), United States (SSN), Georgia (personal number), Italy (codice fiscale), Spain (DNI/NIE), and the Netherlands (BSN) — each validated with its own checksum where one exists. |
| Date of birth | Recognized in a labelled field, or next to a birth-related keyword in free text. |
| Name | Only in fields whose name says it's a name (first_name, billing_last_name, comment author, and similar) — deliberately not in free text, to avoid noisy false positives. |
| Health keywords | An optional special-category signal for the HIPAA angle: medical vocabulary and ICD-10 codes. Off by default. |
| Custom detector Pro | Your own regular expression, with its own confidence, masking style and optional field-name restriction. |
Free: see it. Pro: fix it.
Dashboard
Total items found, broken down by type and by source, with a live progress bar while a scan runs.
Findings table
Filter by source, type, confidence and status; search; open the exact record in its own edit screen.
Bulk Ignore
Free. A finding you've reviewed stays ignored on every future scan until you reopen it.
Printable report
Free. On-screen inventory with a source-by-type matrix and the records holding the most personal data.
Delete & Anonymize Pro
Remove or anonymize findings in bulk, straight from the table, with a confirmation step and a full audit log.
Bulk cleanup rules Pro
Act immediately on everything matching a source, a type, or a saved rule — separate from scheduled retention.
Retention rules Pro
"Anonymize orders older than 3 years." Runs on a schedule, in the background, and logs every action.
Data subject requests Pro
Look up everything held about one email address across every source, then export or erase it.
Custom sources Pro
Add a custom post type and its specific fields as a source the scanner checks by name.
Scheduled scans Pro
Daily or weekly scans with an email summary — no manual "Scan now" required.
CSV export Pro
Every finding, exported for your own records or an auditor.
WP-CLI
Free. wp pdscan scan, status, findings and info for automation and large sites.