From version 3.0.2, the scanner automatically skips pages that fail twice in a row (one attempt + one retry). This can happen if:
The page takes too long to load (timeout)
The page returns a server error (500 error)
The page is too large to process
The server is temporarily overloaded
Skipped pages are shown in the scan log. You can try scanning again later when the server is less busy, or investigate why that particular page is problematic.
This warning appears when a page's HTML code exceeds 1 MB. Very large pages can:
Load slowly for visitors
Negatively affect SEO
Consume unnecessary server resources
Solution: Consider splitting the content across multiple pages, optimizing images, or removing unnecessary code from the page.
This means an email address on your site is displayed as plain text or as an incorrect link instead of a clickable mailto link. For example:
Solution: Add mailto: before the email address in the link so visitors can click and open their email client directly.
Yes. The plugin only reads and analyzes your site data during scans. File and settings fixes (Premium) always create a backup first and can be undone with one click. Database cleanups (spam, trash, revisions) permanently remove data - the plugin tells you this clearly before you run them.
No. Scans only run when you start them and do not affect visitor page loads. Optimizations you choose to activate register lightweight front-end hooks - that is their purpose.
Yes. WP Technical Site Auditor works with any WordPress theme. We also have specific optimizations for Elementor, Divi, and other page builders.
No! WP Technical Site Auditor is designed to work alongside Yoast, Rank Math, and other SEO plugins. We read your SEO settings and avoid conflicts.
Your plugin continues to work, but you won't receive updates or be able to use auto-fix features. You can renew anytime to restore full functionality.
The plugin includes 260+ checks across 26 checker modules. The free version includes over 215 of them.
SEO & Meta (21) - Titles, meta descriptions, Open Graph, Twitter Cards, canonical
Premium adds 45 WooCommerce checks for e-commerce sites.
The free version includes over 215 checks with unlimited scanning - you see every issue with fix guidance for each. Premium adds auto-fix with undo, backup & restore, scheduled scans, email reports, 45 WooCommerce checks, and the Redirects, Meta and Breadcrumbs modules. Try free first, upgrade when you want one-click fixes.
Scan duration depends on your site size: Small site (< 50 pages): 1-2 minutes. Medium site (100-500 pages): 5-10 minutes. Large site (1000+ pages): 15-30 minutes.
File and settings fixes are safe and reversible - a backup is created before each one and you can undo with a single click. .htaccess changes are also health-checked automatically and rolled back if anything goes wrong. Database cleanups, however, are permanent and cannot be undone - they are clearly marked before you run them.
Yes. Premium includes 45 checks specifically for WooCommerce stores - products, categories, shipping, payments, and store configuration.
No. All scanning and analysis happens locally on your server. The only external requests are: License validation (Premium), Update checks (to pihlfelt.se), and External link checking (if enabled).
WP Technical Site Auditor is a WordPress plugin that scans your website for technical SEO issues, performance problems, database bloat, and security vulnerabilities. It provides a prioritized list of issues with clear fix instructions, and the Premium version can automatically fix many common problems.
Unlike cloud-based tools, WP Technical Site Auditor runs entirely on your own server, so your data never leaves your site. It integrates with your existing WordPress setup, reading data from your SEO plugins and respecting your cache settings. It also checks WordPress-specific issues that external tools cannot see (database health, plugin conflicts, etc.).
WordPress 5.8 and higher. We recommend keeping WordPress updated to the latest version for security and compatibility.
PHP 7.4 and higher. We recommend PHP 8.1 or higher for best performance.
Yes. Scans run in the background and do not affect visitor experience. However, we recommend scheduling scans during low-traffic periods for large sites.
No. Both the free and premium versions scan an unlimited number of URLs. Very large sites are scanned in batches - by default up to 5,000 URLs are included per scan, adjustable via a filter. The difference between the versions is instead that Premium has auto-fixes for many common issues, plus the Redirect Manager, Meta Manager and Breadcrumbs modules.
We recommend: After making significant changes to your site. Weekly for active sites with frequent content. Monthly for stable sites. Immediately after plugin/theme updates.
Yes. Go to Site Auditor > Settings and add URL patterns to exclude (one per line). Useful for: Development/staging pages, large archive sections, paginated content beyond page 2.
Critical: Fix immediately. These issues significantly harm your site. Warning: Fix soon. These issues negatively impact performance or SEO. Notice: Consider addressing. These are optimization suggestions.
We check that your SEO plugin is configured correctly. If Yoast says to add a meta description but you have not, we will flag it. We are checking the output, not just whether a plugin is installed.
Yes. Click "Ignore" on any issue to hide it from your active list. Ignored issues are tracked separately and can be un-ignored at any time.
Yes (Premium). Group issues by type and use "Auto-Fix All" to apply the auto-fix to all affected pages.
Fix instructions are WordPress-general. Some theme-specific issues may require consulting your theme documentation. We provide the technical details; you may need to adapt them to your setup.
For file and settings fixes: click "Undo" next to the fix to instantly restore the original state - a backup is always created before the fix is applied and the undo data is kept for as long as the fix is active (cleaned no earlier than 90 days after it was applied). .htaccess changes are also health-checked automatically and rolled back immediately if the site becomes unreachable. Note that database cleanups (spam, trash, revisions, transients) are permanent and cannot be undone - they are clearly marked before you run them.
Some issues require: Server-level changes (PHP settings, SSL). Theme file modifications (templates). Content decisions (writing better meta descriptions). Manual review (choosing which plugins to keep). We provide detailed instructions for these issues.
There is no separate preview feature, but every fix has a description explaining exactly what it changes. File and settings fixes also automatically create a backup before they are applied and can be undone with one click, and .htaccess changes are health-checked automatically and rolled back if anything goes wrong.
Some fixes clear relevant caches automatically. If you notice stale content after a fix, clear your caching plugin cache manually.
Premium includes:
70+ one-click auto-fixes - resolve issues automatically, with backup and undo
Quick & full backup - with safe, atomic database restore
Scheduled scans - daily, weekly, biweekly, or monthly
Email reports - get a report after scheduled scans
45 WooCommerce checks + 10 WooCommerce auto-fixes
Redirect Manager - manage 301/302/307 redirects
Meta Manager - manage SEO metadata per post, page and term
Breadcrumbs - SEO-friendly breadcrumbs with schema.org markup
Priority support - fast email support
Unlimited scanning and CSV export are already included in the free version.
Your license key activates the plugin on your domains: Personal: 1 domain. Professional: Up to 5 domains. Agency: Unlimited domains. License keys renew annually.
Yes. Deactivate your license on the old site, then activate it on the new site.
Yes. We read Yoast SEO settings and use them when checking for issues. Our Meta Manager module automatically disables when Yoast is active.
Yes. Full integration with Rank Math, including reading meta settings and respecting sitemaps.
Yes. We detect WP Rocket and take it into account in our checks and fix recommendations, so you do not apply duplicate or conflicting optimizations.
Yes. We have specific checks for page builders and can optimize their settings automatically. We detect Elementor-built pages, check Elementor-specific settings, and can optimize Divi performance.
Currently, each site in a multisite network needs its own scan. Network-level administration may come in a future release.
No. The plugin does not collect any usage statistics or personal data - all scanning and analysis happens locally on your server. The only external requests are: WordPress update and core file integrity checks against api.wordpress.org (during scans), license and update checks to pihlfelt.se (Premium), and external link checking (if enabled).
Backups are stored in wp-content/tsa-backups/ with randomized, unguessable file names and protection against direct access on Apache, nginx, and IIS. Retention by type: undo data for auto-fixes is kept for as long as the fix is active and cleaned no earlier than 90 days after it was applied; full backups are cleaned automatically after 30 days; quick backups rotate so the 5 most recent are always kept.
Yes. We do not collect personal data. Backups contain only technical configuration data, not user information.
Redirect Manager is a premium module that lets you manage 301/302/307 redirects directly in WordPress. Features:
Create and manage redirects with a simple interface
Matching by exact URL, prefix, or regex
Automatic loop detection before a redirect is saved
Hit counting so you can see how often each redirect is used
Import/export redirects via CSV
Built-in test tool to verify your rules
Why is it important? Broken links hurt SEO and user experience. With Redirect Manager, you can quickly fix 404 errors and ensure old URLs point to the right content.
Meta Manager is a premium module for managing SEO metadata without a separate SEO plugin. Features:
Edit SEO title and meta description per post, page and term
Open Graph title, description and image for social media sharing
Canonical URL per page
Robots settings (noindex/nofollow) per page
Conflict detection - the module automatically disables itself if Yoast, Rank Math, All in One SEO, or SEOPress is active
Perfect for: Sites that want to manage SEO metadata without installing a full SEO plugin.
The Breadcrumbs module is a premium feature that adds SEO-friendly breadcrumbs to your WordPress site. Features:
Structured data (schema.org JSON-LD) for better SEO
Customizable separator
Support for posts, pages, archives, and WooCommerce products with category hierarchy
Shortcode [wtsa_breadcrumbs] and Gutenberg block
SEO benefits: Google shows breadcrumbs in search results, which increases click-through rates and helps users understand site structure.
Pihlfelt Image Assistant
Only the image you actively request metadata for, together with the context you have enabled (file name, page title, product data). Nothing is sent without your explicit consent, and images are never stored on our servers — they are processed in memory and discarded immediately.
The free version includes 10 AI-generated alt texts per month. The counter resets on the first of each month (UTC). The quota is tracked on our server, so reinstalling does not affect it.
AI features pause until the quota resets at the start of the next month. All manual features — editing, optimization, backups, CSV — keep working exactly as before.
Yes, always. Every destructive change takes a backup first. You can undo step by step or restore the original image directly, no matter how many actions have run since.
The free version optimizes with the tools available on your host (GD/Imagick). Pro sends images to our optimization server running mozjpeg, pngquant and cwebp — specialist tools most hosts lack — for better compression without loading your server.
No. The AI quota only applies to AI-generated metadata. Server-side optimization is unlimited within fair use (up to 1,000 images per day per site).
Yes, the quota is pooled. All sites on the license draw from the same monthly pool, so a busy site can use more and a quiet one less.
Absolutely. All manual metadata management, scaling, compression, WebP, backups and CSV work fully without AI ever being enabled — AI is strictly opt-in.
All of them. Alt text is generated in your site's language automatically — a German site gets German, an English site English. You can also choose a different language globally in the settings or per run.
No. The plugin serves WebP via picture tags in the page HTML, which works on every server (Apache, Nginx, LiteSpeed) without .htaccess rules or server configuration. Browsers without WebP support automatically get the original image.
Yes. Product images are handled like any other image, and in Pro the AI can additionally use the product name as context for more accurate alt text — perfect for stores with many product images.
Nothing is deleted by default — images, backups and settings are preserved so you can reinstall without losing anything. If you want a full cleanup, enable "Delete all data on uninstall" under Settings → Advanced.
Cost & Margin Pricing for WooCommerce
No — it builds on it. The plugin stores supplier, currency and rate details, and always writes the resulting cost to WooCommerce core's Cost of Goods Sold field. Woo's reports, exports and third-party integrations keep working exactly as before, and the data remains even if you uninstall.
Only if you explicitly enable scheduled automatic runs in the settings — and even then, changes above your confirmation threshold are never auto-applied, locked and manually re-priced products are never touched, and every run is journaled and undoable. With the feature off (the default), every rule run and import produces a preview that you apply yourself.
Markup is calculated on the cost (cost 100 + 50% markup = 150). Margin is calculated on the sale price (cost 100 at 50% margin = 200, because half the price should be profit). The plugin supports both — you choose per rule, and the preview always shows the real margin the final price yields.
A sale price can come from two places, and you always win. If you type a sale price into Woo's normal field yourself, the plugin leaves the whole product alone until you remove it. In Pro, the plugin sets margin-based sale prices: rules decide the sale margin, a per-product flag (checkbox or an on_sale column in the import file) decides which products, and Woo's normal date fields decide when. The Sales page lists everything and ends sales with one click.
Blank always means "leave unchanged". A file can never accidentally clear something by omitting a column. The only required columns are a cost column and one identifier (supplier SKU, GTIN or SKU). To explicitly clear a sale date, put a dash (-) in the cell.
All major currencies via the ECB daily reference rates (~31), and roughly 130 more via the automatic fallback source. You can also enter rates manually — manual rates always beat fetched ones, and the plugin works entirely without external calls if you only use manual rates or your store's own currency.
Yes. Every variation has its own cost fields and is priced individually, and imports match on the variation's own identifiers (SKU, GTIN or supplier SKU).
Most plugins in the category only track costs for reporting. Cost & Margin Pricing also calculates the actual sale prices: currency conversion, landed costs, margin rules, VAT and rounding — and keeps them updated as price lists and rates change. Think cost tracker plus pricing engine in one, built on top of Woo's own cost field instead of beside it.
Nothing. Every price the plugin wrote is a plain WooCommerce price in the database — there is no frontend code and no price filters. Uninstall the plugin and prices stay exactly as they were, with costs still in Woo's COGS field. The plugin's own data is preserved too, unless you actively choose to delete it on uninstall.
Paste the license key from your receipt email (or your account page) under WooCommerce → Cost & Margin → License and click Activate. The key can be moved between sites — deactivate on the old site first, or release the site from your account page on pihlfelt.se.
Yes. Decimal commas, semicolon-separated CSVs and ISO-8859-1 encoding are recognized automatically, as are title rows from Numbers exports. In Pro you can upload the supplier's .xlsx file directly without re-saving it as CSV.
Yes. The plugin logs every price change — including ones made outside the plugin, e.g. in the product editor or by other plugins — and computes the lowest price of the last 30 days per product: the reference value the EU Omnibus directive requires when a price cut is marketed. To show it to customers, use the [pihlcmp_lowest_price] shortcode; the plugin never adds anything to your storefront on its own. History starts when the plugin is activated.
Everything happens where you already are (Pro). On the product's Cost & Margin tab (or in the variation box): pick a supplier in the cost fields, enter its cost and save — the editor adds or updates that supplier's row, never a duplicate. A table lists every supplier with cost in both the supplier's and your store's currency, a preferred radio and per-row Remove. For many products at once: the products list has a supplier column and filter — filter, select all, and set the preferred supplier in bulk via Edit. The cost strategy in Settings (preferred/lowest/highest) decides which supplier's cost prices are calculated from.
It is safe by design. Undo restores each row only if the product's current value is still exactly what that run wrote — anything a later run or a person has changed is skipped and counted. Undoing an old run whose products have since been repriced therefore often results in "mostly skipped", e.g. "2 restored, 12 skipped" — an old undo can never overwrite newer work. The undo itself becomes a journaled run in the list, and an already-reverted run cannot be undone again — run a new preview to recalculate instead.
The plugin keeps working — including Pro features on your existing data; the plugin never reprices anything because a license lapsed. What stops is updates and support, and scheduled runs automatically fall back to monthly. Renew later and everything is back to normal.
Net sales (product sales excluding VAT, after discounts and refunds — the same figure and order statuses as WooCommerce Analytics → Revenue) minus what each order line cost when it was sold; WooCommerce stores that cost per line at checkout, so later price lists and rates never rewrite history. Order lines sold before the product had a cost are reported separately and never counted as profit. Shipping, payment fees and other overheads are not included.
Need more help?
Can't find your answer?
Our support team is here to help you with any questions.