{
  "slug": "incoming-internal-links",
  "name": "Incoming internal links",
  "aliases": [
    "Inlinks",
    "Internal links to a page",
    "Orphan test"
  ],
  "definition": "How many internal links point at a URL, and, where that count is zero, the test that marks the page an orphan.",
  "category": "Crawl and logs",
  "type": "raw measure",
  "unit": "internal links",
  "direction": "higher-better",
  "verification": "inferred",
  "aggregation": "A per-URL attribute from the crawl graph. The orphan list is the same field filtered to exactly zero; the link-distribution list sorts by it, least-linked first by default.",
  "grain": "One value per crawled URL.",
  "dimensions": [
    "url"
  ],
  "requiredFilters": [],
  "sources": [
    "site-crawl"
  ],
  "reports": [
    "ai-bot-activity-report",
    "crawl-log-report",
    "internal-linking-report",
    "technical-seo-audit-report"
  ],
  "skills": [
    "linking-opportunity-review",
    "technical-health-audit",
    "ai-crawler-readiness"
  ],
  "verbs": [
    "orphan_pages",
    "internal_link_flow"
  ],
  "rungs": [
    "R1",
    "R2"
  ],
  "levers": [
    "L4"
  ],
  "questions": [
    "Which pages have no internal links?",
    "Which important pages are under-linked?"
  ],
  "interpretation": "The cheapest lever's measurement. A page with few incoming links and real search value is a linking opportunity; a page with none is an orphan, hard for crawlers and people to reach. Link counts are graph facts as of the last recompute, so they do not move day to day.",
  "caveats": [
    "The count is a passthrough of a crawler-produced column; the crawler's rules for what counts as a link are not readable in the semantic layer.",
    "The orphan test is an exact zero on this field, so a page reachable only through a redirect or a script-driven link may be counted as an orphan or missed, depending on the crawler's rules.",
    "Both lists are capped, so they are the top or bottom of the distribution rather than the whole graph.",
    "A crawl is a snapshot on its own schedule; do not narrate day-level link changes.",
    "An orphan is not automatically a problem, an intentionally unlinked page is a different case from a starved one."
  ],
  "freshness": "per crawl schedule, cadence is set per site; the card names the crawl it read.",
  "failureModes": [
    "Treating every orphan as a defect worth fixing.",
    "Reading the capped list as the complete orphan set.",
    "Reporting a link-count change between two crawls run at different cadences as a trend."
  ],
  "notSameAs": [
    {
      "slug": "outgoing-internal-links",
      "why": "One counts links arriving at a page, the other counts links leaving it. Both come from the crawl graph and they move for entirely different reasons."
    },
    {
      "slug": "crawler-readiness",
      "why": "Orphan status is one input to readiness, not readiness itself. No tool crosses it with log hits and indexability, so the composed judgment does not exist."
    }
  ],
  "related": [
    "outgoing-internal-links",
    "crawl-depth",
    "indexability-flags",
    "crawler-readiness"
  ],
  "workflows": [],
  "lastVerified": "2026-08-04"
}