LinkSentry: Let Readers Report Broken Links in WordPress

LinkSentry – Broken Content Reporter

WORDPRESS PLUGIN · FREE · GPLv2

Your Readers Already Found the Broken Link

Give them one click to tell you about it.

Free & GPLv2 · IP addresses hashed, never stored raw · No login required for visitors · Assets load only where used · Tested up to WordPress 7.0

Schematic WordPress article about a download, with the download row struck through as unavailable, a Something wrong on this page callout with a Report an issue button, and the open report dialog showing the issue type Download

The problem: nobody tells you

A download returns the wrong file. An image stopped loading after a migration. A link points to a site that closed last year. The reader notices within seconds — and then leaves, because reporting it would mean finding a contact page, opening a mail client and describing which page they were on. Almost nobody does that. The page stays broken for months.

The solution: make reporting a five-second job

LinkSentry adds a button right where the problem is. One click opens a small dialog, the visitor picks a type and hits send. The page URL travels with the report automatically, so you never have to ask “which page was that on?” Reports collect in your admin like posts — with an unread badge so you notice them.

No friction for the reader

No account, no login, no required email. Issue type is the only mandatory field — everything else is optional, so a report costs one click and a moment of goodwill.

Privacy by construction

IP addresses are hashed before they are stored, the email field is optional, and nothing is sent to an external service. Spam is handled with a honeypot and rate limiting, not with a tracking network.

Weightless where it isn’t used

Scripts and styles load only on the pages that actually contain the block or shortcode. The rest of your site carries nothing at all.

Plugin features

Everything needed to collect broken-content reports from real readers — and nothing that turns it into a support desk.

Block and shortcode

Insert the “Report Issue (LinkSentry)” block in the editor, or place [linksentry] in posts, pages, widgets and template parts. The prefixed alias [linkbrco] does the same thing.

Three display styles

A regular button with icon, a discreet text-link, or a full-width large-box callout with your own line of info text — so the invitation can be loud at the end of a download page and quiet under a blog post.

Accessible modal dialog

Keyboard navigation, ARIA labels and a focus-managed dialog. Since 1.0.1 element IDs stay unique even when several report boxes appear on the same page.

Four issue types

Download, Link, Image or Other. Enough structure to sort a backlog, few enough options that nobody has to think before choosing.

Reports live in your admin

Every report is stored as a custom post type with issue type, page URL, message and submission date as sortable columns, plus a details panel — reviewed exactly like posts, marked as read once opened.

An unread badge you notice

New reports show up as the native red WordPress bubble in the admin menu, on every screen — so feedback does not sit unseen in a submenu for a month.

Optional email notifications

Get an email whenever a report arrives, at an address of your choice or the site admin address. Leave the field empty and the admin email is used; an invalid entry is flagged rather than silently ignored.

Spam handled quietly

Nonce verification on every submission, a honeypot field, strict sanitisation and per-IP rate limiting — one report per 60 seconds by default, adjustable in the settings.

Your wording

The button label and the submit label are settings, not code. “Report an issue”, “Something wrong on this page?”, “Melde einen Fehler” — whatever suits your site’s voice.

Careful with your data

Reports are kept when you uninstall, so nothing is lost by accident. If you would rather they were removed, one checkbox in the settings makes deletion part of the uninstall.

Not a link checker — the other half of the job

A broken-link checker crawls your site and reports URLs that return an error. That is useful, and LinkSentry does not replace it. But a crawler only sees HTTP status codes — and a surprising share of broken content returns a perfectly healthy 200.

The download that delivers last year’s price list. The image that loads for you because it is cached and for nobody else. The link that now points at a parked domain full of ads. The PDF that opens but is missing pages. No crawler flags any of these. A reader spots every one of them in a second.

LinkSentry collects what only humans can see, and it does it while they are still on the page that disappointed them.

What people use it for

Download and resource pages

Manuals, forms, price lists, templates. The one place where a wrong file costs you a customer and where the visitor is most willing to say so.

Large blogs and archives

Hundreds of old posts full of outbound links nobody has checked since publication. Your readers check them for you, one article at a time.

Documentation and knowledge bases

Where an outdated screenshot or a moved page wastes real time, and the people reading are exactly the ones who can describe the problem precisely.

Sites after a migration

Relaunches break things in ways staging never shows. For the first weeks, a report button turns visitors into a free QA team.

Live in three steps

  1. Install and activate the plugin from the WordPress plugin directory.
  2. Add the “Report Issue (LinkSentry)” block where readers should see it — or [linksentry] in a widget or template part.
  3. Optionally open Settings → LinkSentry to set the notification address, the labels and the throttle window.

The settings are genuinely optional — the defaults work out of the box, and notifications fall back to your admin email address.

Technical details

Version1.0.1
WordPress6.0 or higher
Tested up to7.0
PHP7.4 or higher
BlockReport Issue (LinkSentry)
Shortcode[linksentry] · [linkbrco]
Throttle60 seconds per IP (default)
LicenseGPLv2 or later

Screenshots

What happens to the data

A report contains the issue type, the URL of the page it came from, an optional message and an optional email address. All of it is stored in your own WordPress database as a custom post type. Nothing is sent to an external service, and the plugin adds no tracking of any kind.

Rate limiting needs to recognise a repeat sender, so the visitor’s IP address is hashed before it is stored — the plugin can tell that two reports came from the same source without keeping the address itself. Everything else is entered voluntarily, and a reader who leaves the email field empty stays anonymous.

If visitors do submit their email address, that is personal data you are now holding. Mention the report form in your privacy policy, and delete reports once they are dealt with — the settings include a bulk delete for exactly that.

Frequently asked questions

How do I let visitors report broken links in WordPress?

Install LinkSentry and add the “Report Issue (LinkSentry)” block to a post or page — or place the shortcode [linksentry] in a widget or template part so it appears across a whole section of the site. Visitors then get a button that opens a short report dialog, and their reports arrive under “Reports” in your admin.

Can visitors report without an account?

Yes, and that is the point. No login is required. Submissions are protected by nonce verification, a honeypot field and per-IP throttling instead.

Is this a broken link checker?

No — it is the complement to one. A checker crawls your site and finds URLs that return an error. LinkSentry catches what returns no error at all: the wrong file behind a download, an image that fails only for visitors, a link that now leads to a parked domain. Running both is the sensible setup.

Where do the reports appear?

Under “Reports” in the WordPress admin sidebar, with a red badge showing how many are unread. Each report lists the issue type, the page URL, the message and the submission date, and the columns can be sorted.

How does spam protection work?

Every submission is checked against a nonce, a hidden honeypot field catches automated form fillers, all input is sanitised, and each IP address may submit one report per 60 seconds by default. The throttle window is adjustable under Settings → LinkSentry.

Are IP addresses stored?

Not in readable form. The address is hashed before storage, which is enough to recognise repeat submissions for the rate limit without keeping the address itself.

Can I change the button text?

Yes. The box title and the submit label are settings. The display style is chosen per placement — a plain button, a text link, or a full-width box with your own line of info text.

Does it slow down my site?

The scripts and styles load only on pages that actually contain the block or the shortcode. Everywhere else the plugin adds nothing to the front end.

Are my reports deleted when I uninstall the plugin?

No, not by default — reports are kept so nothing is lost by accident. If you want them removed on uninstall, enable that option under Data Management in the settings.

Is LinkSentry free?

Yes. It is published in the official WordPress plugin directory under GPLv2 or later, with no paid tier and no upsell inside the plugin.

Changelog

1.0.1
  • Fixed: fatal error when using the shortcode without attributes.
  • Fixed: wrong page URL on sub-directory installs, and duplicate element IDs when several report boxes share a page.
  • Fixed: block alignment from the editor is now applied on the front end; the block uses API version 3 for the WordPress 7.0 iframe editor.
  • Fixed: icon styles now load for logged-out visitors, and the unread badge uses the native red WordPress bubble on every admin screen.
  • Fixed: an invalid notification address no longer silently disables emails — it falls back to the admin address and shows a settings error.
  • Improved: lighter unread-count query, plain-text notification emails, debug logging removed. Tested up to WordPress 7.0.
1.0.0
  • Initial release: custom post type for reports, Gutenberg block and shortcode with three display styles.
  • AJAX submission with nonce, honeypot and per-IP throttling; email notifications to the administrator.
  • Settings screen, unread-count menu badge, report details panel, bulk delete and optional delete on uninstall.
  • Full internationalisation support.

Let your readers help you fix it

Free, GPL-licensed, and added to a page in three steps from the WordPress plugin directory.

Version 1.0.1 · GPLv2 or later · Desk9 Design