Building a Link Report You Can Defend

A defensible link report is one that still holds up when someone opens a different tool, re-runs your export a month later, or asks “how do you know that.” Getting there requires four habits: label every number’s provenance, state every denominator, separate what you observed from what you inferred, and say what you don’t know.

None of it requires better data. It requires being explicit about the data you already have.

Habit one: every number carries its provenance

A number in a link report has three attributes and they belong next to it: what it is, where it came from, and when.

“Referring domains: 812” is not a fact anyone can check. “Referring domains, all link attributes, per [vendor], pulled 20 July: 812” is.

This matters most for scores. “Authority: 41” invites the reader to compare it to whatever authority number they last saw, possibly from a different vendor with a different formula. “Ahrefs DR, 20 July: 41” doesn’t. The reasoning is in Domain Rating versus Domain Authority.

The cost is a few words. The benefit is that the “but my tool says” conversation ends in ten seconds instead of taking the meeting.

Habit two: every percentage shows its denominator

Percentages are where link reports go wrong most reliably, because the denominator is usually a cap, a filter, or a sample nobody mentioned.

Two rules:

  • Give the count and the base, not just the ratio. “Exact-match commercial anchors: 14 of 400 referring domains (3.5%).”
  • Say if the base is a sample. “Percentages computed over a 10,000-row export of approximately 214,000 reported links, top-sorted by authority.”

The failure this prevents is the one in sampling, export caps, and missing rows: a percentage that shifts because the instrument changed, read as a change in the site.

Habit three: observation and inference are visually separate

This is the structural move, and it’s the one that makes a report feel different to read.

Observations are things you can point at in a tool: counts, scores, dates, lists, verified link presence. They are checkable and boring, and they belong in one section.

Inferences are your reading of those observations: what the gap means, what looks manufactured, what the constraint probably is. They are the valuable part and they are yours, not the data’s.

Putting them in separate sections has a useful side effect: it becomes obvious when a report has ten pages of observations and no inference, or three inferences resting on one observation. Both are common.

A minimal shape that works:

  1. What we measured — sources, dates, filters, denominators.
  2. What the data shows — observations only, no adjectives.
  3. What we think it means — inference, hedged proportionally.
  4. What we can’t tell from this — the unknowns, stated deliberately.
  5. What we’d do next — actions, each tied to a numbered observation.

Habit four: the unknowns get their own section

Most reports omit this, and it’s the section that buys the most credibility, because the alternative is having the unknowns raised by someone else in the room.

Standing entries for link reporting:

Written once, reused every month, edited when a specific instance applies.

The sentences to strike

Concrete, because these recur.

  • “Authority increased 12%.” Percentage change on an ordinal compressed scale. Report endpoints.
  • “We built 40 links, resulting in a 15% traffic increase.” Two facts and a causal word between them that the data doesn’t support. Say “over the same period.”
  • “Average link quality: DR 47.” Averaging a compressed scale. Give a distribution.
  • “812 backlinks.” Which attributes? Live or historical? Which index? Which date?
  • “71 toxic links.” Whose threshold, over what sample — see what a toxic-link score is actually measuring.
  • “Link building drove Q3 performance.” Unless you have a design that isolates it, this is a narrative.

Replacing each with the hedged version makes the report slightly less exciting and considerably harder to dismantle.

Hypothetically, six lines:

Sources: [Vendor A] link index, pulled 20 July; Search Console Links report, same date (capped at 1,000 rows per table). Referring domains: 812 all-attributes, 604 followed-only (up from 786 / 588 on 20 June, same vendor, same filters). Verified new citations this month: 7, listed below with source URL and target page. Three are from the outreach programme; four we didn’t ask for. Verified removals: 2, both from a template change on one publisher’s site. Index churn: 212 low-authority rows dropped, unverified, consistent with prior months. Not claimed: no attribution of ranking or traffic change to these links; the period also included a content refresh on two target pages.

(Illustrative figures.) It’s dry, it’s checkable, and nothing in it will be contradicted next month by a different export.

Why this is worth the discipline

Two reasons, one defensive and one not.

The defensive one: link data is unusually easy to challenge, because anyone with a different subscription can produce different numbers in thirty seconds. A labelled report survives that; an unlabelled one becomes a debate about tools.

The better one: the labelling forces you to notice what you actually know. Most of the bad conclusions in link reporting aren’t dishonest — they’re the result of a number losing its context somewhere between the export and the slide. Writing the context down is how you keep from fooling yourself first.