Description
A link checker asks one question: does this URL answer? That question misses the way affiliate revenue usually breaks.
The link opens. The merchant answers 200 OK. The product page loads. And the affiliate ID that tells the merchant whose account to credit is no longer in the URL that arrives — so every click from that page earns nothing, and no monitoring tool says a word about it.
HUBLO Revenue Integrity Monitor audits your site for that class of failure.
The failure this exists to catch
HTTP status: 200 OK
Merchant reachable: YES
Affiliate tracking ID: MISSING
Result: REVENUE AT RISK
What it checks
Each monetized link is treated as a protected revenue path — the page, the link element, the redirect chain, the tracking that has to survive it, and the merchant at the end. Eight detectors compare the current state against a recorded good state:
- Revenue Element Missing — the CTA or affiliate link is no longer on the page.
- Destination Drift — the link now ends up somewhere else, including the classic case where a discontinued product page silently becomes the merchant home page.
- Tracking Parameter Integrity — the affiliate ID that reaches the merchant went missing, or changed to a different account.
- Redirect Chain Drift — the redirect loops, or never resolves.
- Revenue Destination Failure — the destination is genuinely gone or erroring.
- Indexability Failure — a money page picked up a noindex.
- Canonical Drift — the canonical URL changed or now points at another domain.
- Revenue Element Drift — the link’s wording or its sponsored markup changed.
Alerts you can actually trust
Most link monitoring becomes useless the same way: it reports every 403, every rate limit and every timeout as “broken”, the real failures get buried, and people stop reading the alerts.
This plugin keeps those cases separate on purpose.
- A bot filter or WAF answering 403 is reported as automated verification was blocked — not as a broken link.
- A 429 rate limit causes a backoff, not an alert.
- A timeout is retried, and a timeout that clears leaves no red incident behind.
- An affiliate network adding a fresh click ID on every request is normal behaviour, not a change.
- Query parameter order, percent-encoding, trailing slashes and http to https are all normalized before anything is compared.
Only two internal states are ever allowed to reach you as Revenue At Risk, and both of them require a reachable destination, a known-good baseline and a consistent result across retries.
Auto Discovery
You do not configure selectors, redirect hops or parameter policies to get started. Discovery reads your published content and picks out what looks monetized — links managed by PrettyLinks or ThirstyAffiliates, links marked rel="sponsored", links carrying known affiliate parameters, links through affiliate networks, and calls to action on review and comparison pages.
It is tuned for precision rather than coverage. High-confidence paths are recommended; everything else is kept as a candidate and stays out of your way.
Fix the safe ones in one click
Finding a broken revenue path and then leaving you to hunt for it is only half a job. Where the plugin can prove — from a recorded good state, not from a guess — exactly what a link used to be, it offers to put it back.
You see the change before it happens: what will be edited, what it is now, what it will become, where the value came from, and that you can undo it. Then it is applied, the path is checked again immediately, and you are told which of three things happened: fixed and verified, applied but still failing, or failed with nothing changed. There is no fourth outcome where something quietly went wrong.
The undo covers the repair this plugin most recently made to a path. If a newer repair has since been applied to the same path, the older one is no longer undone automatically, because restoring it would discard the newer change.
There is no cap. One issue at a time, as many times as you need.
Three repairs are offered, and only three:
- an affiliate parameter that vanished from a link in your content;
- the destination recorded inside PrettyLinks or ThirstyAffiliates, written back through the plugin that owns it;
- disclosure attributes such as
rel="sponsored"that were dropped from a link.
Everything else is a guided fix — the plugin tells you where the setting lives and which plugin owns it — or needs review, and says why. An affiliate ID that changed rather than vanished is left alone, because that is usually somebody moving accounts on purpose. Two links on a page pointing at the same place are left alone, because there is no way to tell which one you meant. A link your theme renders is left alone, because it is not in your content. A check that was blocked or rate limited never produces a repair at all.
Issues explained in plain language
Every issue answers, on one screen: what happened, why it can cost you money, what it was before, what it is now, when it was last known good, when it first failed, and what to do next. Response codes, redirect hops and resolution scores are all there, under Technical Details, for when you want them.
Works with
- PrettyLinks — cloaked links are matched to the link they manage, so an incident can say the configured target changed rather than just “a link changed”.
- ThirstyAffiliates — the same, using the managed link’s own post ID as identity.
- Neither is required. Plain affiliate links in your content are supported on their own.
Built for large sites
Discovery reads stored content and makes no outbound requests, so it runs at the size of a real content site. Audits are chunked and resumable: closing the tab costs you one step, not the run. Outbound requests are spaced out per destination and capped per run, so an audit can never turn into a flood at a merchant.
Privacy
No account, no API key, no telemetry, no external service. Requests go to your own pages and to the destinations your links already point at. Your content, your findings and your affiliate IDs stay inside your own WordPress installation.
Safety
Addresses inside your own network — loopback, private ranges, link-local and cloud metadata endpoints — are refused, and every redirect hop is validated again, so a link in a post cannot be used to make your server reach something it should not.
Auditing and monitoring are read-only: Discovery, the eight detectors and every scheduled or on-demand check only read your pages and store findings. Nothing is written, deleted or rewritten by the audit itself.
The one exception is Quick Fix, described above, and it only runs when you click it. Quick Fix never runs on its own: you always see the exact before/after change first, you press Apply yourself, and you can press Undo afterwards to put the previous value back. It can write to three kinds of target, and only these three: the affiliate parameter or disclosure attribute inside a link in your post content, or the destination URL stored by PrettyLinks or ThirstyAffiliates for a link they manage. It never touches anything else — no other post fields, no theme files, no other plugin’s settings, and no site outside your own.
Free and Pro
This download is the complete Revenue Integrity Audit. All eight detectors, unlimited revenue paths, every finding visible with its evidence, Recheck, Accept New Baseline, Mark Expected, and CSV export. Nothing expires, nothing is capped, and no feature is switched off waiting for a licence.
A separately distributed Pro edition does a different job — Continuous Protection: scheduled monitoring, automatic re-checks of the affected paths straight after a WordPress, plugin or theme update, correlation of what changed around the time a path broke, long incident history, advanced tracking and merchant policies, bulk actions and notifications. It is not bundled inside this plugin, and this plugin works fully without it.
Languages
Every user-facing string goes through WordPress’s translation functions, so the plugin can be translated into any locale without a code change. Translations are hosted on translate.wordpress.org and installed as language packs; none are bundled in this download.
Screenshots



Installation
- Upload the plugin to
/wp-content/plugins/, or install it from the Plugins screen. - Activate it.
- Open Revenue Integrity in the admin menu.
- Press Scan for revenue paths, review the recommendations, then run the audit.
FAQ
-
Is this just another broken link checker?
-
No. A broken link checker asks whether a URL answers. This asks whether the commercial conditions attached to that URL still hold — whether your affiliate ID still arrives, whether the destination is still the page you chose, whether the merchant at the end is still the merchant you recorded, and whether the page carrying the link is still indexable. All of those can break while the link returns a perfectly healthy 200.
-
Will it flood me with false alarms about my affiliate links?
-
That is the specific failure this product is designed around. Bot filters, WAF challenges, rate limits and timeouts are classified as verification problems, not as broken links, and are never reported as confirmed failures. Rotating click IDs, parameter reordering, encoding differences and http to https moves are normalized away before anything is compared.
-
Does it change anything on my site?
-
The audit itself does not: it reads your pages, follows your links and stores its findings.
This download also includes Quick Fix, which does write to your site, but only for three specific things (a vanished affiliate parameter, a dropped disclosure attribute such as
rel="sponsored", or the destination stored inside PrettyLinks/ThirstyAffiliates), and only when you explicitly trigger it. You always see the before/after change first, nothing is applied until you press Apply, and you can press Undo afterwards. Outside of Quick Fix, nothing on your site is edited, deleted, merged or redirected. -
How many requests will it make to a merchant?
-
Requests are spaced out per destination, capped per destination, and capped per run — and the run ceiling is a setting you control. A 429 response causes a backoff for that destination rather than a retry.
-
Will it work on a site with tens of thousands of posts?
-
Discovery makes no outbound requests at all, so it scales with your content rather than with network time. Audits run in short chunks with a stored cursor, so they can be paused, resumed and interrupted without losing progress or duplicating findings.
-
What happens if I change a link on purpose?
-
The audit reports it, shows you exactly which semantic fields changed, and offers Accept New Baseline. Accepting creates a new baseline version and closes the issue. The previous baseline is kept, so the record of what it used to be does not disappear.
-
Does it need PrettyLinks or ThirstyAffiliates?
-
No. Both are supported as first-class sources when present, because they know the stable identity behind a cloaked link. Plain affiliate links work without either.
-
Does it send anything anywhere?
-
No. There is no account, no API key, no analytics and no telemetry. The only outbound requests are to your own pages and to the destinations your own links point at.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“HUBLO Revenue Integrity Monitor” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “HUBLO Revenue Integrity Monitor” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.1.3
- Removed unused repair-history and baseline-history query code that had no screen in this edition. The free edition never called it, and code that cannot be reached from the interface does not belong in the download.
- Quick Fix Undo now states its scope in the engine rather than only in the interface: it undoes the repair most recently made to a path. If a newer repair has since been applied to that path, the older one is refused with a reason instead of silently discarding the newer change.
1.1.2
- Fixed: Quick Fix Undo could refuse to restore a repair when the value being restored was legitimately empty (for example, undoing a repair that had put back a disclosure attribute such as
rel="sponsored"that had been stripped entirely, so the value to restore on undo was “no attribute”). Undo now restores that state correctly instead of reporting “The repair could not be undone automatically.” No other behavior changes.
1.1.1
- README clarity fix: the Safety section and FAQ now describe Quick Fix explicitly, instead of reading as if the whole plugin never writes anything. Auditing and monitoring stay read-only; Quick Fix is the one explicit, previewed, undoable exception, and only for the three repairs this plugin has always offered.
- Screenshots section corrected to list only the three screenshots actually shipped with this listing.
- No functional code changes to detection, scanning or repair logic in this release.
1.1.0
- Revenue Repair. An issue the audit can prove it knows how to undo now offers a Quick Fix: you see the exact change first, it is applied, the path is checked again immediately, and you can undo it.
- Three repairs, and only three: putting back an affiliate parameter that vanished from a link, restoring the destination recorded inside PrettyLinks or ThirstyAffiliates, and restoring disclosure attributes that were dropped.
- Every issue is now classed as safe to repair, a guided fix, or one that needs review — and a guided fix says where the setting lives and which plugin owns it, rather than only that nothing can be done.
- Ten conditions must all hold before anything is offered as safe. An affiliate ID that changed rather than vanished, two links to the same place, a link the theme renders, a block that stores the URL in its own settings, or a check that was blocked or rate limited: each of those is refused, with the reason stated.
- No cap on repairs. One at a time, as many times as you need.
1.0.0
- First release.
- Auto Discovery with high, medium and low confidence, tuned for precision.
- Eight revenue detectors with machine-testable confirmation conditions.
- Alert Trust classification separating bot filters, rate limits and timeouts from confirmed revenue failures.
- Versioned baselines with Accept New Baseline, keeping previous versions.
- Chunked, resumable, idempotent discovery and audit jobs.
- SSRF protection with per-hop revalidation, per-domain throttling and a per-run request budget.
- PrettyLinks and ThirstyAffiliates adapters.
- CSV export of paths, issues and candidates.
