Title: Error Sniffing Pug &#8211; Tells you what broke
Author: Service2Client LLC
Published: <strong>August 17, 2026</strong>
Last modified: August 17, 2026

---

Search plugins

![](https://ps.w.org/error-sniffing-pug/assets/banner-772X250.png?rev=3653182)

![](https://ps.w.org/error-sniffing-pug/assets/icon-256x256.png?rev=3653182)

# Error Sniffing Pug – Tells you what broke

 By [Service2Client LLC](https://profiles.wordpress.org/service2client/)

[Download](https://downloads.wordpress.org/plugin/error-sniffing-pug.0.4.4.zip)

 * [Details](https://mlt.wordpress.org/plugins/error-sniffing-pug/#description)
 * [Reviews](https://mlt.wordpress.org/plugins/error-sniffing-pug/#reviews)
 *  [Installation](https://mlt.wordpress.org/plugins/error-sniffing-pug/#installation)
 * [Development](https://mlt.wordpress.org/plugins/error-sniffing-pug/#developers)

 [Support](https://wordpress.org/support/plugin/error-sniffing-pug/)

## Description

When WordPress hits a fatal error, the usual result is a blank “There has been a
critical error on this website” page and a cryptic line buried in a log file you
have to go find. Pug catches that moment and turns it into something you can act
on.

**What you get**

 * **A plain-language diagnosis.** Pug recognizes common fatal patterns — an undefined
   function or method, calling a method on null, a class that can’t be found, “cannot
   redeclare”, out of memory, max execution time, parse errors, a missing file, 
   a type error, and more — and explains in one sentence what actually went wrong.
   When it doesn’t recognize the pattern, it says so honestly rather than guessing.
 * **The culprit, named.** Pug maps the crash back to the specific plugin, must-
   use plugin, or theme whose code was running, so you’re not guessing which of 
   thirty plugins to suspect.
 * **A crash-notification email.** Point Pug at an address and it emails you when
   a new fatal is captured — the plugin involved, the plain-language reason, and
   where it happened — so you learn about problems without watching a dashboard.
   Email is sent shortly after the crash from a safe context, never during the crash
   itself.
 * **A privacy-safe bug report.** For any crash, Pug produces a copy-ready report
   for the responsible plugin’s support forum, with absolute paths, your home directory,
   and your site’s address stripped out. Pug never transmits it — you copy and paste
   it yourself.
 * **An after-crash admin notice.** The next time you open wp-admin after a fatal
   is captured, Pug shows a dismissible notice linking straight to the report — 
   so you find out even if you aren’t watching a dashboard, and even if email isn’t
   configured.
 * **A conflict scanner.** On demand, Pug scans your active plugins for functions
   or classes declared by more than one of them — the “cannot redeclare” landmine—
   and names both sides before it bites you.

**How Pug captures fatals**

Pug uses WordPress’ own drop-in mechanism. On activation it installs `wp-content/
fatal-error-handler.php`, which core loads earlier than any plugin — that is what
lets Pug see a fatal that happens before normal plugins have even loaded. It subclasses
core’s handler and then hands control straight back to WordPress, so Recovery Mode
and the recovery email keep working exactly as they do without Pug. Deactivating
the plugin removes the drop-in and stops capture; deleting the plugin removes everything.

**What Pug does not do**

 * It does not send your crash details to us or to any third party. Diagnosis happens
   on your own server, and the bug report is copy-and-paste, not an automatic upload.
 * It does not modify or delete your posts, pages, or any content. It reads nothing
   from your database except its own settings.
 * It does not run its analysis during a crash beyond recording the incident — no
   network calls, no heavy work on the error path.

### External services

This plugin connects to one external service, described below. No crash contents
are ever sent anywhere.

**WordPress.org plugin API (api.wordpress.org)**

When a crash is attributed to a plugin, Pug asks the WordPress.org plugin API whether
that plugin is listed there, so it can offer a link to the plugin’s page and support
forum. The only data sent is the plugin’s slug (folder name). This happens on demand
while you view a crash report, is cached, and never runs during a crash. WordPress.
org is operated by the WordPress Foundation; see https://wordpress.org/about/privacy/.

## Screenshots

[⌊Scan for conflicts before they crash, allows the admin to submit reports to the
plugin builder.⌉⌊Scan for conflicts before they crash, allows the admin to submit
reports to the plugin builder.⌉[

Scan for conflicts before they crash, allows the admin to submit reports to the 
plugin builder.

[⌊Customize error messages to be user friendly, and per plugin instructions of what
to do.⌉⌊Customize error messages to be user friendly, and per plugin instructions
of what to do.⌉[

Customize error messages to be user friendly, and per plugin instructions of what
to do.

[⌊Connects the Admin to the plugin authors Github page.⌉⌊Connects the Admin to the
plugin authors Github page.⌉[

Connects the Admin to the plugin authors Github page.

## Installation

 1. Upload the `error-sniffing-pug` folder to `/wp-content/plugins/`, or install the
    ZIP through Plugins  Add New  Upload.
 2. Activate the plugin. On activation Pug installs its capture drop-in at `wp-content/
    fatal-error-handler.php`.
 3. Visit **Tools  Pug Crash Reports** to see captured fatals, and **Tools  Pug Settings**
    to set a notification email, write custom messages, or run the conflict scanner.

Pug needs `wp-content` to be writable so it can install its drop-in. If it can’t,
it will tell you in the admin and fall back to WordPress’ default behavior.

## FAQ

### Will this slow down my site?

No. Pug does its work on the admin side and on the error path only. On a normal 
page load it does almost nothing; the diagnosis, help links, and reports are all
generated when you open a crash report, not on every request.

### What are the extra files in wp-content?

fatal-error-handler.php is Pug’s capture drop-in, installed on activation. It is
a standard WordPress drop-in location — the only path from which core will load 
a custom fatal handler. Pug installs, updates, and removes it for you, and will 
never overwrite one that belongs to another plugin.

### What if another plugin already uses the fatal-error-handler drop-in?

Only one `fatal-error-handler.php` can exist. If another plugin got there first,
Pug will not overwrite it, and Pug’s capture will not run. Pug tells you this in
the admin so you can decide which one to keep.

### Does it work on older PHP?

Pug supports PHP 7.0 and newer. On PHP older than 7.0 it deactivates its own code
quietly rather than causing errors.

### Is my crash data sent anywhere automatically?

No. Diagnosis is done locally. The bug report for a plugin author is copy-and-paste—
you send it, Pug doesn’t. The notification email goes only to the address you configure,
through your own site’s mail.

### How do I find out when a crash happens?

Two ways, both private to you: point Pug at a notification email and it writes to
you shortly after a fatal is captured, and the next time you open wp-admin Pug shows
a dismissible notice linking to the report. Nothing is ever shown to your visitors.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Error Sniffing Pug – Tells you what broke” is open source software. The following
people have contributed to this plugin.

Contributors

 *   [ Service2Client LLC ](https://profiles.wordpress.org/service2client/)

[Translate “Error Sniffing Pug – Tells you what broke” into your language.](https://translate.wordpress.org/projects/wp-plugins/error-sniffing-pug)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/error-sniffing-pug/),
check out the [SVN repository](https://plugins.svn.wordpress.org/error-sniffing-pug/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/error-sniffing-pug/)
by [RSS](https://plugins.trac.wordpress.org/log/error-sniffing-pug/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.4.2

 * Removed the “Hosting provider list” (managed messages) feature and the external
   call it made to the vendor API. Per-plugin crash notes are managed through the
   built-in Custom Messages, which already export and import as JSON.
 * Fixed the Custom Messages export action, which pointed at an outdated hook name.

#### 0.4.1

 * Removed the optional custom crash screen (and its `php-error.php` drop-in). You
   now learn about a captured fatal through the crash-notification email and a new
   dismissible admin notice that links to the report.
 * Incident data is stored under `wp_upload_dir()` (protected from direct access)
   instead of a folder in `wp-content`.
 * All internal names use the `esniff` prefix; the admin script is enqueued through
   the standard API; local file reads go through `WP_Filesystem`; theme paths resolve
   via `get_theme_root()`.

#### 0.3.0

 * Custom public crash screen with an admin-authored message, the plugin(s) involved(
   by display name), and your per-plugin note. Installed as a `php-error.php` drop-
   in only while enabled.
 * Optional `{plugins}` token to weave plugin names into your message inline.
 * Plain-language diagnosis engine and privacy-safe author bug report.
 * Crash-notification email with the diagnosis and location.
 * Function/class conflict scanner.
 * Proper plugin lifecycle: drop-in installed on activation, removed on deactivation,
   full cleanup on uninstall, and daily incident retention.

## Meta

 *  Version **0.4.4**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 5.2 or higher **
 *  Tested up to **7.0.4**
 *  PHP version ** 7.0 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/error-sniffing-pug/)
 * Tags
 * [crash](https://mlt.wordpress.org/plugins/tags/crash/)[debugging](https://mlt.wordpress.org/plugins/tags/debugging/)
   [error-handler](https://mlt.wordpress.org/plugins/tags/error-handler/)[fatal error](https://mlt.wordpress.org/plugins/tags/fatal-error/)
   [troubleshooting](https://mlt.wordpress.org/plugins/tags/troubleshooting/)
 *  [Advanced View](https://mlt.wordpress.org/plugins/error-sniffing-pug/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/error-sniffing-pug/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/error-sniffing-pug/reviews/)

## Contributors

 *   [ Service2Client LLC ](https://profiles.wordpress.org/service2client/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/error-sniffing-pug/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://www.service2client.com/dynamic-post-donation)