Free checklist

Backlink Monitoring Checklist

The eight checks that should run on every backlink, every monitoring cycle. Print it, paste it into your standard operating procedure, or use it as the specification for your own monitoring script.

Each check is explained in full below, along with what to do when it fails and how often to run the whole set.

We will email a PDF and a Notion import version. No spam, unsubscribe in one click.

Backlink monitoring dashboard showing a selected placement and eight verification checks marked pass, review, or issue

Definition

What backlink monitoring means

Backlink monitoring is the scheduled, repeated verification that links you have built are still present, still pointing at the right target, still passing authority, and still on a page search engines can index. The key word is repeated. A one off audit tells you the state of your link profile on the day you ran it, and every day after that the number decays quietly. Monitoring is what converts a link count from a claim into a measurement, and it is the only way to derive link lifetime, which is the input every ROI calculation depends on.

01

Audit versus monitoring

An audit is a snapshot. Monitoring is a cadence. Only the second one can tell you when something changed.

02

What it produces

A verified inventory, a detection timestamp for every loss, and a survival rate you can put in a report.

03

Why cadence matters

Recovery outreach works within weeks of removal and rarely after months. Detection speed is most of recovery success.

04

The minimum viable version

A spreadsheet with a last checked column and a recurring calendar block. Genuinely fine under roughly 50 links.

The eight checks

  1. 1HTTP status of the source page
  2. 2Link presence in the served HTML
  3. 3Anchor text against what you agreed
  4. 4Rel attribute
  5. 5Page level noindex directive
  6. 6Canonical URL of the source page
  7. 7Your own target URL still resolves
  8. 8Last checked timestamp, logged

Each one is explained in full below, with what to do when it fails. LinkSwapy runs all eight automatically on the cadence you set.

The checklist

Each check, and what it catches

Run them in this order. The early ones are cheap and catch the most, the later ones catch the problems that are hardest to see by eye.

HTTP status of the source page

A 200 means the page is served normally. A 404 or 410 means the placement went with the page. A 301 or 302 needs following, because a redirect into a relevant replacement that still carries your link is fine, while one landing on a homepage usually means your link was collateral damage in a migration.

Link presence in the served HTML

Is your target URL actually in the markup a crawler receives. Note the distinction from what you see in a browser: a link injected by JavaScript after load may never appear to a plain fetch, and may not be counted reliably.

Anchor text against what you agreed

Drift is common, especially with insertions, where an editor rewrites the surrounding sentence and your anchor becomes generic. Rarely fatal, easy to correct in the first month, awkward to raise in the sixth.

Rel attribute

dofollow, nofollow, sponsored, or ugc. A placement that quietly switched to nofollow is the most common form of value loss that looks like nothing happened, because the link is still visibly there.

Page level noindex directive

Check the meta robots tag and the X-Robots-Tag header. A noindexed page is excluded from the index, so your link passes nothing at all while appearing completely healthy to anyone eyeballing the page.

Canonical URL of the source page

If the page canonicals elsewhere, its signals consolidate at that other URL. Worth checking whether your link also exists on the canonical target, because sometimes it does and you are fine.

Your own target URL still resolves

The embarrassing one, and it fails more often than people admit. You restructured your site, the page a partner linked to now redirects twice or returns a 404, and you wasted a placement through your own housekeeping.

Last checked timestamp, logged

Not a check so much as the thing that turns checks into a record. Without it you cannot distinguish a link verified yesterday from one nobody has looked at since spring, and you cannot compute survival rate at all.

Cadence

How often is often enough

The right frequency is not one number, it is a function of what a placement is worth and how fast you would need to act. Treating every link identically is the most common mistake, and it produces either wasted effort on a long tail nobody cares about or dangerously slow detection on the links that matter.

Tier one is the handful of placements you would genuinely fight to keep: high authority, on trafficked pages, pointing at commercially important targets. These deserve daily checks and alerts that reach a named person rather than a shared inbox. If one of these disappears, you want to know today, because the recovery window is measured in weeks.

Tier two is the working majority of your inventory. Weekly is a sensible floor, every few days is better. This tier is where automation earns its keep, because the volume is too high for manual work and the individual links are not important enough to justify anyone's calendar.

Tier three is the long tail: old placements, low authority, links you would not chase if they vanished. Monthly is fine, and the reason to check them at all is aggregate reporting rather than recovery. You want the survival number to be accurate even for links you have no intention of defending.

One caveat on frequency worth stating plainly. Checking more often does not reduce link loss, it only reduces the time between loss and knowing. That distinction matters when you are deciding whether to pay for a tighter cadence: what you are buying is a shorter detection gap, and the value of that gap depends entirely on whether you actually act on the alerts.

A workable tiering

  • Tier one: daily, alerts to a named owner
  • Tier two: weekly or every few days, automated
  • Tier three: monthly, for reporting accuracy
  • New placements: verify once on publication, then normal cadence
  • After any of your own site migrations: full sweep of targets
  • Before any client report: confirm the numbers you are about to send
Three tier backlink monitoring cadence with daily, weekly, and monthly check schedules
Match the check frequency to how quickly your team would act if the placement changed.

Manual process

Running the checklist by hand

If you are under about 50 placements, this is genuinely the right approach and there is no need to pay for anything. Past that, the checks run on a schedule. Here is how to do it without it eating a day.

  1. 1

    Sort by last checked, oldest first

    This single habit corrects the main bias in manual monitoring. Left to instinct you check recent links, which are the least likely to have died. Working oldest first sends you where the problems actually are.

  2. 2

    Open the source page and search for your target

    Use find on page for your domain rather than scanning visually. Faster and it catches links buried in places you would not look, like an author bio or a footnote.

  3. 3

    View source for the parts you cannot see

    The rel attribute, the meta robots tag, and the canonical are not visible on the rendered page, and what each attribute actually does is worth knowing before you react to one. This is the step people skip, and it is where the silent failures hide.

  4. 4

    Record the outcome including passes

    Update the last checked date on every row you touch, not just the failures. A row with no timestamp is a row you cannot trust, and the whole value of the record is knowing which links have genuinely been verified.

  5. 5

    Batch the failures into one outreach session

    Do not stop to write emails as you go. Finish the sweep, group the failures by cause, then write the outreach in one sitting. Context switching between checking and writing is what makes this take three hours instead of one.

  6. 6

    Diagnose before you contact anyone

    Match the cause to the ask, using the lost backlink recovery email template. A moved page needs a different email from a deliberate removal, and a nofollow switch usually needs no email at all. Sending the wrong one wastes the single approach you get.

Six step manual backlink check workflow from sorting old records through diagnosing failures
Work oldest checked first, record passes as well as issues, then group failures before outreach.

Building it yourself

If you would rather write the script

The eight checks are simple enough that scripting them is a legitimate option, and we would rather you did that than kept guessing about your inventory. A few notes from having built this.

Fetching and parsing is the easy part. An HTTP client and an HTML parser will get you link presence, anchor text, rel attribute, meta robots, and canonical in maybe fifty lines. The traps are elsewhere.

A broken monitor looks exactly like a clean bill of health. Alert on the check not running, not only on what it finds.

Follow redirects deliberately rather than letting your client do it silently. You need to know both that a redirect happened and where it landed, because a 301 into a relevant page that still contains your link is a pass, while a 301 to a homepage is a loss. A client that transparently follows redirects will report a 200 and hide the thing you needed to see.

Set a real user agent and respect robots directives. Also expect to be blocked sometimes: bot protection will refuse some fetches regardless of how politely you behave, and your script needs a third state beyond pass and fail. Recording could not check is honest. Recording it as a failure will have you emailing editors about links that are perfectly fine.

Store results as a time series rather than overwriting a status column. This is the decision that determines whether you can answer the interesting questions later: when did this link die, what is our survival rate at twelve months, which publishers have the worst retention. Overwriting gives you a current state and destroys the history that makes monitoring worth doing.

Then diff and alert on changes only. Nobody reads a report that lists every passing link every week. The output that gets acted on is a short list of what changed since last run, which means storing the previous state and comparing rather than re-reporting the world.

Where a homegrown script tends to break down is not capability, it is maintenance. It runs fine for four months, then a dependency changes or the cron job silently stops, and because a broken monitor looks exactly like a clean bill of health, nobody notices for weeks. Build in a heartbeat that tells you the check ran, not just that it found nothing.

Terminology

Fields and terms

Plain definitions for everything the checklist references.

HTTP status
The response code from the source page. 200 healthy, 404 and 410 gone, 301 and 302 need following to see where they land.
Link presence
Whether the target URL appears in the served HTML. The core check, complicated by JavaScript injected links.
Rel attribute
dofollow, nofollow, sponsored, or ugc. Determines whether ranking authority passes, and it changes without notice.
Meta robots
The page level directive controlling indexing. A noindex value means the page and your link carry no ranking signal.
Canonical URL
The version of a page a site declares primary. If it points elsewhere, that is where the page's signals consolidate.
Redirect chain
Multiple hops between the requested URL and the final destination. Follow it fully before deciding a link survived.
Soft 404
A page returning a 200 status while displaying a not found message. Passes a naive status check and fails everything meaningful.
Survival rate
Share of a cohort of links still live after a given period. The output a monitoring record exists to produce.

Questions

Frequently asked questions

How often should I run these checks?

Weekly as a floor for anything you care about, daily for placements you would actively fight to keep. Tier your inventory rather than treating it uniformly: a handful of high value links deserve tight cadence, and a long tail can run monthly. Manual weekly runs across a hundred or more links is not sustainable, which is the honest argument for automating it.

Can I script this myself?

Yes, and it is a reasonable weekend project. The eight checks are well defined and a Node script with an HTML parser covers most of them. The hard part is not the fetch. It is scheduling, storing results over time, diffing against the previous run, surfacing only what changed, and not producing a 500 line CSV that nobody reads on Monday morning.

Which check catches the most problems?

Link presence catches the most outright losses, and rel attribute catches the most silent value loss. If you only had time for two, those are the two. The canonical check catches the fewest problems but the ones it catches are the most invisible, since the page looks perfect when you visit it.

Should I check links I built years ago?

Especially those. The instinct is to check recent placements because they are top of mind, and it is backwards. Links mostly die well after publication, during redesigns, content audits, and editor changes. Sorting your inventory by last checked date, oldest first, corrects for that bias automatically.

What is a reasonable failure rate to expect?

We are not going to invent a number for that, because it depends heavily on the kind of sites you build on and how old your inventory is. What is consistent is that teams running a full check for the first time on a mature link set find more problems than they expected, and most of those problems are rel attribute changes and noindexed pages rather than outright removals.

Does a redirect mean the link is lost?

Not necessarily, and this is worth handling carefully in any script. Follow the chain. If the final destination is a relevant page that still contains your link, the placement survives with a little friction. If it lands on a homepage, a category page, or an unrelated URL, treat it as a loss and diagnose it as a migration casualty.

How do I turn this into a team process?

Assign an owner, put a recurring block on their calendar, and work the list oldest checked first. Record the outcome of every check including passes, because a check with no record is indistinguishable from a check you skipped. Then set a rule for what triggers outreach, so a detected loss becomes an action rather than a note.

Run all eight checks automatically

LinkSwapy runs the full checklist on every placement, keeps the history so survival rate is measurable, and alerts on changes rather than re-reporting everything.