{
  "version": "1.0",
  "schema": "https://entitymap.org/spec/v1.0",
  "profile": "core",
  "publisher": {
    "name": "CanonicalTag.com",
    "url": "https://www.canonicaltag.com/"
  },
  "generated": "2026-09-11T00:00:00Z",
  "verificationStatus": "self-declared",
  "entities": [
    {
      "entityId": "e_duplicate_without_user_selected_canonical",
      "@type": "Concept",
      "name": "Duplicate Without User-Selected Canonical",
      "alternateName": "Duplicate Without User-Selected Canonical",
      "description": "The Search Console status that appears when Google finds a duplicate page but you haven't declared a canonical, so Google chooses one for you.",
      "hasChunks": [
        {
          "chunkId": "c_duplicate-without-user-selected-canonical",
          "text": "\"Duplicate without user-selected canonical\" is a status inside the Page indexing report in Google Search Console (the report Google renamed from \"Index Coverage\" around mid-2022, when the \"Coverage\" navigation item became \"Pages\" under Indexing).",
          "sourceUrl": "https://www.canonicaltag.com/duplicate-without-user-selected-canonical/",
          "pageTitle": "Duplicate Without User-Selected Canonical | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_gsc",
          "targetName": "Google Search Console Statuses",
          "targetId": "e_grp_gsc",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_google_search_console",
          "targetName": "Google Search Console",
          "targetId": "e_google_search_console",
          "targetUri": "https://en.wikipedia.org/wiki/Google_Search_Console",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_duplicate_content",
          "targetName": "Duplicate content",
          "targetId": "e_duplicate_content",
          "targetUri": "https://en.wikipedia.org/wiki/Duplicate_content",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_wordpress",
      "@type": "Concept",
      "name": "Canonical Tags in WordPress",
      "alternateName": "WordPress",
      "description": "How WordPress core handles canonicals on singular content, what it leaves out, and how to add or override them with or without a plugin.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-wordpress",
          "text": "Yes, and it has for a long time. WordPress core has emitted a self-referencing rel=canonical tag on singular views since version 2.9.0, through a function called rel_canonical() that's hooked to the wp_head action ( add_action('wp_head', 'rel_canonical') ). If you're running stock WordPress with no SEO plugin and you view source on a single post, you will see a canonical link tag pointing back at that post's own URL. You didn't configure it; core put it there.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-wordpress/",
          "pageTitle": "Canonical Tags in WordPress | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_wordpress",
          "targetName": "WordPress",
          "targetId": "e_wordpress",
          "targetUri": "https://en.wikipedia.org/wiki/WordPress",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_alternate_page_with_proper_canonical_tag",
      "@type": "Concept",
      "name": "Alternate Page With Proper Canonical Tag",
      "alternateName": "Alternate Page With Proper Canonical Tag",
      "description": "The reassuring Search Console status: your page correctly points to another canonical, and Google is consolidating it exactly as intended.",
      "hasChunks": [
        {
          "chunkId": "c_alternate-page-with-proper-canonical-tag",
          "text": "Google's own definition of this Page indexing report status reads: \"This page is marked as an alternate of another page and correctly points to the canonical page.\" In plain terms, the flagged page carries a rel=canonical tag that points to a different URL, Google has accepted that declaration, and that other URL is the one being indexed. Google deliberately does not index the alternate itself, because the alternate has told Google, correctly, that it is not the version meant to appear in search results.",
          "sourceUrl": "https://www.canonicaltag.com/alternate-page-with-proper-canonical-tag/",
          "pageTitle": "Alternate Page With Proper Canonical Tag | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_gsc",
          "targetName": "Google Search Console Statuses",
          "targetId": "e_grp_gsc",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_google_search_console",
          "targetName": "Google Search Console",
          "targetId": "e_google_search_console",
          "targetUri": "https://en.wikipedia.org/wiki/Google_Search_Console",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_canonical_link_element",
          "targetName": "Canonical link element",
          "targetId": "e_canonical_link_element",
          "targetUri": "https://en.wikipedia.org/wiki/Canonical_link_element",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_shopify",
      "@type": "Concept",
      "name": "Canonical Tags in Shopify",
      "alternateName": "Shopify",
      "description": "How Shopify auto-generates canonicals, the collection-versus-product URL behavior, and how to customize the tag in theme.liquid.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-shopify",
          "text": "Yes. Shopify auto-generates canonical tags on products, collections, pages, and blog articles without any setup on your part. The mechanism is a Liquid object, canonical_url , that Shopify populates for every page and that themes reference in the document head — typically in theme.liquid , sometimes broken out into a separate meta-tags.liquid snippet that theme.liquid includes.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-shopify/",
          "pageTitle": "Canonical Tags in Shopify | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_ecommerce",
          "targetName": "Ecommerce Platforms",
          "targetId": "e_grp_ecommerce",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_shopify",
          "targetName": "Shopify",
          "targetId": "e_shopify",
          "targetUri": "https://en.wikipedia.org/wiki/Shopify",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_self_referencing_canonical_tag",
      "@type": "Concept",
      "name": "Self-Referencing Canonical Tags",
      "alternateName": "Self-Referencing Canonicals",
      "description": "A canonical tag that points a page at its own URL, the recommended baseline that removes ambiguity from parameter and variant URLs.",
      "hasChunks": [
        {
          "chunkId": "c_self-referencing-canonical-tag",
          "text": "A self-referencing canonical tag is recommended on every indexable page, but Google does not require it. It is a rel=canonical link element on a page that names that page's own preferred URL, and it removes ambiguity about which URL variant should be treated as the indexable one. Most pages are reachable through more than one URL. A tracking parameter from an email campaign, a session ID, different capitalization in the path, or a trailing slash added or dropped by an outside link can each produce a technically different URL that loads the same content.",
          "sourceUrl": "https://www.canonicaltag.com/self-referencing-canonical-tag/",
          "pageTitle": "Self-Referencing Canonical Tags | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_conflicts",
          "targetName": "Conflicts & Edge Cases",
          "targetId": "e_grp_conflicts",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_canonical_link_element",
          "targetName": "Canonical link element",
          "targetId": "e_canonical_link_element",
          "targetUri": "https://en.wikipedia.org/wiki/Canonical_link_element",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_yoast_seo_canonical_urls",
      "@type": "Concept",
      "name": "Canonical URLs in Yoast SEO",
      "alternateName": "Yoast SEO",
      "description": "How Yoast SEO adds self-referencing canonicals across your whole WordPress site, where to override them, and how to fix a wrong canonical.",
      "hasChunks": [
        {
          "chunkId": "c_yoast-seo-canonical-urls",
          "text": "Where WordPress core only self-canonicalizes singular content, Yoast SEO extends that behavior to essentially every indexable page type on the site: single posts and pages, the homepage, category, tag, and other taxonomy archives, custom post type archives, author and date archives, and each individual paginated page within a series. In practice, this closes the gap left by core — Yoast is doing the work that plain WordPress doesn't. There is one deliberate exception. A page or post that's set to noindex gets no canonical tag from Yoast at all.",
          "sourceUrl": "https://www.canonicaltag.com/yoast-seo-canonical-urls/",
          "pageTitle": "Canonical URLs in Yoast SEO | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_yoast",
          "targetName": "Yoast SEO",
          "targetId": "e_yoast",
          "targetUri": "https://en.wikipedia.org/wiki/Yoast",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_wordpress",
          "targetName": "WordPress",
          "targetId": "e_wordpress",
          "targetUri": "https://en.wikipedia.org/wiki/WordPress",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_duplicate_google_chose_different_canonical",
      "@type": "Concept",
      "name": "Duplicate, Google Chose Different Canonical Than User",
      "alternateName": "Google Chose a Different Canonical",
      "description": "You declared a canonical, but Google overrode it and selected a different URL, the clearest proof that rel=canonical is a hint and not a directive.",
      "hasChunks": [
        {
          "chunkId": "c_duplicate-google-chose-different-canonical",
          "text": "\"Duplicate, Google chose different canonical than user\" is a status in the Page indexing report of Google Search Console. Google's own definition: \"This page is marked as canonical for a set of pages, but Google thinks another URL makes a better canonical.\" This is a fundamentally different situation from \"duplicate without user-selected canonical.\" There, you declared nothing and Google filled the gap.",
          "sourceUrl": "https://www.canonicaltag.com/duplicate-google-chose-different-canonical/",
          "pageTitle": "Duplicate, Google Chose Different Canonical Than User",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_gsc",
          "targetName": "Google Search Console Statuses",
          "targetId": "e_grp_gsc",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_google_search_console",
          "targetName": "Google Search Console",
          "targetId": "e_google_search_console",
          "targetUri": "https://en.wikipedia.org/wiki/Google_Search_Console",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_canonical_link_element",
          "targetName": "Canonical link element",
          "targetId": "e_canonical_link_element",
          "targetUri": "https://en.wikipedia.org/wiki/Canonical_link_element",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_duplicate_submitted_url_not_selected_as_canonical",
      "@type": "Concept",
      "name": "Duplicate, Submitted URL Not Selected as Canonical",
      "alternateName": "Submitted URL Not Selected as Canonical",
      "description": "A URL you submitted in your sitemap was not chosen as canonical because Google treats it as a duplicate of another page.",
      "hasChunks": [
        {
          "chunkId": "c_duplicate-submitted-url-not-selected-as-canonical",
          "text": "In the Page indexing report in Google Search Console, this label appears next to a URL that you actively submitted for indexing, most often by listing it in an XML sitemap. Google evaluated that URL alongside a cluster of duplicate or near-duplicate pages and chose a different URL as the canonical, or representative, version. The submitted URL still exists and Google can still crawl it, but Google indexes the other URL and folds this one's ranking signals into that other page instead.",
          "sourceUrl": "https://www.canonicaltag.com/duplicate-submitted-url-not-selected-as-canonical/",
          "pageTitle": "Duplicate, Submitted URL Not Selected as Canonical | CanonicalTag",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_gsc",
          "targetName": "Google Search Console Statuses",
          "targetId": "e_grp_gsc",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_google_search_console",
          "targetName": "Google Search Console",
          "targetId": "e_google_search_console",
          "targetUri": "https://en.wikipedia.org/wiki/Google_Search_Console",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_duplicate_content",
          "targetName": "Duplicate content",
          "targetId": "e_duplicate_content",
          "targetUri": "https://en.wikipedia.org/wiki/Duplicate_content",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_user_declared_vs_google_selected_canonical",
      "@type": "Concept",
      "name": "User-Declared vs Google-Selected Canonical",
      "alternateName": "User-Declared vs Google-Selected",
      "description": "The two labels in Search Console's URL Inspection tool: the canonical you declared, and the one Google actually chose to index.",
      "hasChunks": [
        {
          "chunkId": "c_user-declared-vs-google-selected-canonical",
          "text": "Open the URL Inspection tool in Google Search Console on almost any indexed page and you will see two separate fields: User-declared canonical and Google-selected canonical . They are not always the same URL, and the gap between them is one of the most misunderstood parts of technical SEO. I get asked about this constantly, so let's define both terms precisely. The user-declared canonical is the URL you told Google to treat as the master copy.",
          "sourceUrl": "https://www.canonicaltag.com/user-declared-vs-google-selected-canonical/",
          "pageTitle": "User-Declared vs Google-Selected Canonical | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_gsc",
          "targetName": "Google Search Console Statuses",
          "targetId": "e_grp_gsc",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_google_search_console",
          "targetName": "Google Search Console",
          "targetId": "e_google_search_console",
          "targetUri": "https://en.wikipedia.org/wiki/Google_Search_Console",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_canonical_link_element",
          "targetName": "Canonical link element",
          "targetId": "e_canonical_link_element",
          "targetUri": "https://en.wikipedia.org/wiki/Canonical_link_element",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_and_noindex",
      "@type": "Concept",
      "name": "Canonical Tag and Noindex Together",
      "alternateName": "Canonical and Noindex",
      "description": "Combining rel=canonical and a noindex tag on the same page sends Google contradictory instructions. Why to avoid it and what to do instead.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-and-noindex",
          "text": "Pick one: do not put a noindex rule and a rel=canonical that points to a different URL on the same page. The two signals ask for opposite outcomes, so the result depends on which one Google decides governs, and that is not something a site owner can control. If the goal is to consolidate a duplicate into a preferred URL, use the canonical alone. If the goal is to keep the page out of search results, use noindex alone.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-and-noindex/",
          "pageTitle": "Canonical Tag and Noindex Together | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_conflicts",
          "targetName": "Conflicts & Edge Cases",
          "targetId": "e_grp_conflicts",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_noindex",
          "targetName": "Noindex",
          "targetId": "e_noindex",
          "targetUri": "https://en.wikipedia.org/wiki/Noindex",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_meta_element",
          "targetName": "Meta element",
          "targetId": "e_meta_element",
          "targetUri": "https://en.wikipedia.org/wiki/Meta_element",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_and_pagination",
      "@type": "Concept",
      "name": "Canonical Tags and Pagination",
      "alternateName": "Canonicals and Pagination",
      "description": "How to canonicalize a paginated series correctly, with each page self-referencing, and why canonicalizing everything to page one backfires.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-and-pagination",
          "text": "A paginated series is a set of pages that splits a single collection of content into sequential chunks (page 1, 2, 3 and so on) of a category listing, a search results set, or a long article broken into parts. The correct canonicalization approach is simple and often gets over-thought: each URL in the series should carry a self-referencing rel=canonical, meaning page 2 canonicalizes to its own URL, page 3 to its own, and so forth. There is no cross-page canonicalization within a normal paginated series.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-and-pagination/",
          "pageTitle": "Canonical Tags and Pagination | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_conflicts",
          "targetName": "Conflicts & Edge Cases",
          "targetId": "e_grp_conflicts",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_canonical_link_element",
          "targetName": "Canonical link element",
          "targetId": "e_canonical_link_element",
          "targetUri": "https://en.wikipedia.org/wiki/Canonical_link_element",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_cross_domain_canonical",
      "@type": "Concept",
      "name": "Cross-Domain Canonical Tags",
      "alternateName": "Cross-Domain Canonicals",
      "description": "Pointing a canonical to a URL on another domain, the content-syndication technique Google now de-emphasizes in favor of noindex.",
      "hasChunks": [
        {
          "chunkId": "c_cross-domain-canonical",
          "text": "Yes, as a hint: Google accepts a rel=canonical that points to a URL on another domain and weighs it the way it weighs any canonical. For syndicated articles, though, Google now prefers that the partner site noindex its copy rather than rely on a cross-domain canonical. A cross-domain canonical is a rel=canonical tag whose target sits on a different domain from the page carrying it.",
          "sourceUrl": "https://www.canonicaltag.com/cross-domain-canonical/",
          "pageTitle": "Cross-Domain Canonical Tags | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_conflicts",
          "targetName": "Conflicts & Edge Cases",
          "targetId": "e_grp_conflicts",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_duplicate_content",
          "targetName": "Duplicate content",
          "targetId": "e_duplicate_content",
          "targetUri": "https://en.wikipedia.org/wiki/Duplicate_content",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_multiple_canonical_tags",
      "@type": "Concept",
      "name": "Multiple and Conflicting Canonical Tags",
      "alternateName": "Multiple Canonical Tags",
      "description": "When a page outputs more than one rel=canonical, Google may ignore them all. How duplicate tags happen and how to resolve them.",
      "hasChunks": [
        {
          "chunkId": "c_multiple-canonical-tags",
          "text": "A page should carry exactly one rel=canonical tag. When it carries more than one, and those tags point to different target URLs, you have a conflicting-canonicals situation. The widely-cited behavior is that when Google encounters multiple conflicting canonical signals on a single page, it will likely ignore all of them and fall back to selecting its own canonical URL using its own signals instead.",
          "sourceUrl": "https://www.canonicaltag.com/multiple-canonical-tags/",
          "pageTitle": "Multiple and Conflicting Canonical Tags | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_conflicts",
          "targetName": "Conflicts & Edge Cases",
          "targetId": "e_grp_conflicts",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_canonical_link_element",
          "targetName": "Canonical link element",
          "targetId": "e_canonical_link_element",
          "targetUri": "https://en.wikipedia.org/wiki/Canonical_link_element",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_pointing_to_non_canonical_url",
      "@type": "Concept",
      "name": "Canonical Pointing to a Redirect, 404, or Noindexed Page",
      "alternateName": "Canonical to a Bad Target",
      "description": "A canonical only works if its target is a clean, indexable 200 URL. Pointing at redirects, errors, or noindexed pages wastes the signal.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-pointing-to-non-canonical-url",
          "text": "A rel=canonical tag is an instruction to consolidate ranking and indexing signals onto a specific target URL. For that instruction to be usable, the target has to actually be something Google can index: a URL that returns a normal 200 OK status, is not blocked from crawling, does not carry a noindex directive, and is not itself canonicalized somewhere else.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-pointing-to-non-canonical-url/",
          "pageTitle": "Canonical Pointing to a Redirect, 404, or Noindexed Page",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_conflicts",
          "targetName": "Conflicts & Edge Cases",
          "targetId": "e_grp_conflicts",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_http_301",
          "targetName": "URL redirection",
          "targetId": "e_http_301",
          "targetUri": "https://en.wikipedia.org/wiki/URL_redirection",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_wix",
      "@type": "Concept",
      "name": "Canonical Tags in Wix",
      "alternateName": "Wix",
      "description": "How Wix sets a default canonical for every page, how to override it, and the sitemap side effect you need to watch for.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-wix",
          "text": "Yes. On Wix, a self-referencing canonical tag ships by default on every page you publish -- standard pages, Wix Stores product pages, and Wix Blog posts all get one without you doing anything. A self-referencing canonical means the tag's URL matches the page it sits on, which is the correct baseline signal for search engines: it tells crawlers this exact URL is the version you want indexed and credited, even when the same content could theoretically be reached through more than one path. For most Wix site owners, this is good news.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-wix/",
          "pageTitle": "Canonical Tags in Wix | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_wix",
          "targetName": "Wix",
          "targetId": "e_wix",
          "targetUri": "https://en.wikipedia.org/wiki/Wix.com",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_squarespace",
      "@type": "Concept",
      "name": "Canonical Tags in Squarespace",
      "alternateName": "Squarespace",
      "description": "Squarespace auto-manages a self-referencing canonical you cannot natively edit, and injected canonicals can create duplicates if you are not careful.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-squarespace",
          "text": "Squarespace automatically injects a self-referencing canonical tag into the <head> of every page it renders. There is no setup step, no toggle to find, and no configuration screen involved -- the tag is simply present in the rendered HTML from the moment a page is published, and it points back at that page's own URL. The important framing here is that the platform, not the site owner, owns the canonical tag on Squarespace.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-squarespace/",
          "pageTitle": "Canonical Tags in Squarespace | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_squarespace",
          "targetName": "Squarespace",
          "targetId": "e_squarespace",
          "targetUri": "https://en.wikipedia.org/wiki/Squarespace",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_webflow",
      "@type": "Concept",
      "name": "Canonical Tags in Webflow",
      "alternateName": "Webflow",
      "description": "Unlike most platforms, Webflow does not add a canonical by default. How to set the global and per-page canonical, and the CMS limitation to know.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-webflow",
          "text": "This is the detail that separates Webflow from nearly every other platform covered on this site: Webflow does not automatically output a self-referencing canonical tag. Where other platforms ship a canonical on every page with zero configuration, Webflow's default state is silence. If the global canonical field is left empty, no rel=canonical tag is emitted on your pages at all. This is worth pausing on because Webflow's own Help Center language can be misread.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-webflow/",
          "pageTitle": "Canonical Tags in Webflow | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_webflow",
          "targetName": "Webflow",
          "targetId": "e_webflow",
          "targetUri": "https://en.wikipedia.org/wiki/Webflow",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_magento",
      "@type": "Concept",
      "name": "Canonical Tags in Magento (Adobe Commerce)",
      "alternateName": "Magento / Adobe Commerce",
      "description": "How to switch on canonical tags for Magento products and categories, and why the built-in setting does not fix layered navigation.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-magento",
          "text": "In Magento and Adobe Commerce, canonical tags are not something you get out of the box on catalog pages. Community consensus among Magento developers — this isn't a single documented Adobe statement so much as the near-universal, hands-on-the-admin-panel experience — is that both canonical settings ship set to No . A fresh Magento install, or a store nobody has revisited since setup, is very likely serving product and category pages with no rel=canonical tag in the head at all.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-magento/",
          "pageTitle": "Canonical Tags in Magento (Adobe Commerce) | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_ecommerce",
          "targetName": "Ecommerce Platforms",
          "targetId": "e_grp_ecommerce",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_magento",
          "targetName": "Magento",
          "targetId": "e_magento",
          "targetUri": "https://en.wikipedia.org/wiki/Magento",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_nextjs",
      "@type": "Concept",
      "name": "Canonical Tags in Next.js",
      "alternateName": "Next.js",
      "description": "Setting canonicals in Next.js with the App Router Metadata API, the Pages Router, next-seo, and the metadataBase gotcha to avoid.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-nextjs",
          "text": "Next.js, in both the App Router and the Pages Router, does not emit a rel=canonical tag for you. There's no default behavior to discover in the rendered HTML — if you haven't explicitly set one, there isn't one. This puts Next.js in the same category as a bare React app rather than a platform like Yoast SEO or Wix that self-references by default: every canonical in a Next.js site is something a developer opted into.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-nextjs/",
          "pageTitle": "Canonical Tags in Next.js | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_frameworks",
          "targetName": "Code & JavaScript Frameworks",
          "targetId": "e_grp_frameworks",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_nextjs",
          "targetName": "Next.js",
          "targetId": "e_nextjs",
          "targetUri": "https://en.wikipedia.org/wiki/Next.js",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_react",
      "@type": "Concept",
      "name": "Canonical Tags in React",
      "alternateName": "React",
      "description": "Adding canonical tags to a React app with react-helmet-async, and why a client-only canonical is risky without server-side rendering.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-react",
          "text": "A React application — whether built with Create React App, Vite, or hand-rolled — outputs no rel=canonical tag by default, for the same reason a bare Next.js project doesn't: nothing in React's rendering model concerns itself with document head metadata unless you tell it to. Inspect the HTML of an unmodified React single-page app and there's no canonical link element anywhere, because React only knows how to render into a div — the head isn't part of the component tree it manages.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-react/",
          "pageTitle": "Canonical Tags in React | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_frameworks",
          "targetName": "Code & JavaScript Frameworks",
          "targetId": "e_grp_frameworks",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_react",
          "targetName": "React",
          "targetId": "e_react",
          "targetUri": "https://en.wikipedia.org/wiki/React_(software)",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_rank_math_canonical_urls",
      "@type": "Concept",
      "name": "Canonical URLs in Rank Math",
      "alternateName": "Rank Math",
      "description": "How Rank Math sets self-referencing canonicals across WordPress, where to override them, and the filter for programmatic control.",
      "hasChunks": [
        {
          "chunkId": "c_rank-math-canonical-urls",
          "text": "A canonical tag is the line of code, <link rel='canonical' href='...'> , that appears in a page's HTML head and tells search engines which URL is the master version when duplicate or near-duplicate versions exist elsewhere. Rank Math ships with this turned on. Rank Math's own support documentation states plainly that Rank Math adds the canonical tag to all the indexable URLs on a site, and that it uses the current post or page URL as the canonical URL by default, meaning you would only touch the setting if you want to point a page somewhere else.",
          "sourceUrl": "https://www.canonicaltag.com/rank-math-canonical-urls/",
          "pageTitle": "Canonical URLs in Rank Math | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_wordpress",
          "targetName": "WordPress",
          "targetId": "e_wordpress",
          "targetUri": "https://en.wikipedia.org/wiki/WordPress",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_all_in_one_seo_canonical_urls",
      "@type": "Concept",
      "name": "Canonical URLs in All in One SEO",
      "alternateName": "All in One SEO",
      "description": "How All in One SEO (AIOSEO) supplements WordPress core with self-referencing canonicals, and where to override them.",
      "hasChunks": [
        {
          "chunkId": "c_all-in-one-seo-canonical-urls",
          "text": "All in One SEO, usually shortened to AIOSEO, is refreshingly candid about this in its own documentation: WordPress does a great job of outputting the canonical URL for your content, and All in One SEO just supplements WordPress by adding some advanced features. That's an important starting point, because the canonical tag on a site running the plugin isn't purely the plugin's invention, it's a layered system.",
          "sourceUrl": "https://www.canonicaltag.com/all-in-one-seo-canonical-urls/",
          "pageTitle": "Canonical URLs in All in One SEO | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_wordpress",
          "targetName": "WordPress",
          "targetId": "e_wordpress",
          "targetUri": "https://en.wikipedia.org/wiki/WordPress",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_woocommerce",
      "@type": "Concept",
      "name": "Canonical Tags in WooCommerce",
      "alternateName": "WooCommerce",
      "description": "WooCommerce adds no canonical layer of its own; it relies on WordPress and your SEO plugin. The real work is taming filter, sort, and pagination URLs.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-woocommerce",
          "text": "No, and WooCommerce doesn't try to hide that fact. WooCommerce is a plugin layered on top of WordPress, and it does not implement its own rel=canonical system. Whatever canonical tag appears on a WooCommerce page comes from one of two sources underneath it.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-woocommerce/",
          "pageTitle": "Canonical Tags in WooCommerce | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_ecommerce",
          "targetName": "Ecommerce Platforms",
          "targetId": "e_grp_ecommerce",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_woocommerce",
          "targetName": "WooCommerce",
          "targetId": "e_woocommerce",
          "targetUri": "https://en.wikipedia.org/wiki/WooCommerce",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_wordpress",
          "targetName": "WordPress",
          "targetId": "e_wordpress",
          "targetUri": "https://en.wikipedia.org/wiki/WordPress",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_bigcommerce",
      "@type": "Concept",
      "name": "Canonical Tags in BigCommerce",
      "alternateName": "BigCommerce",
      "description": "BigCommerce adds self-referencing canonicals automatically and folds a product's multiple category URLs to one canonical product URL.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-bigcommerce",
          "text": "Yes, on the page types that matter most. BigCommerce automatically inserts a rel=\"canonical\" link element into the <head> of storefront pages built on modern Stencil themes, and it does so on product pages, category pages, web pages (content pages), and blog posts. In each case the canonical is self-referencing: it points at the URL currently displayed in the browser's address bar, which is the platform's default behavior rather than something a store owner has to type in page by page.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-bigcommerce/",
          "pageTitle": "Canonical Tags in BigCommerce | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_ecommerce",
          "targetName": "Ecommerce Platforms",
          "targetId": "e_grp_ecommerce",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_bigcommerce",
          "targetName": "BigCommerce",
          "targetId": "e_bigcommerce",
          "targetUri": "https://en.wikipedia.org/wiki/BigCommerce",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_drupal",
      "@type": "Concept",
      "name": "Canonical Tags in Drupal",
      "alternateName": "Drupal",
      "description": "Drupal core adds self-referencing canonicals on entity pages; the Metatag module controls and overrides them.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-drupal",
          "text": "Yes, on modern Drupal. Drupal 8, 9, and 10 core automatically emits a self-referencing rel=\"canonical\" link in the <head> of every canonical entity route, most importantly node (content) pages, and also taxonomy term pages and user pages. Core builds this as an attachment on the page's build array, pointing at the entity's canonical URL, which is its clean path alias if you're running Pathauto, or the raw /node/123 path if you aren't.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-drupal/",
          "pageTitle": "Canonical Tags in Drupal | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_drupal",
          "targetName": "Drupal",
          "targetId": "e_drupal",
          "targetUri": "https://en.wikipedia.org/wiki/Drupal",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_joomla",
      "@type": "Concept",
      "name": "Canonical Tags in Joomla",
      "alternateName": "Joomla",
      "description": "Joomla's built-in canonical support is weak by design; SEF and non-SEF URLs create duplicates that an extension resolves.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-joomla",
          "text": "Partially, and this is a genuine, long-standing weak point that deserves heavy hedging rather than a confident yes or no. Joomla 2.5 did essentially nothing with canonicals. Joomla 3.x and 4.x/5.x do add canonical link tags in many cases, with the routing and SEF layer setting a canonical that usually points to itself for a correctly resolved preferred URL.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-joomla/",
          "pageTitle": "Canonical Tags in Joomla | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_joomla",
          "targetName": "Joomla",
          "targetId": "e_joomla",
          "targetUri": "https://en.wikipedia.org/wiki/Joomla",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_ghost",
      "@type": "Concept",
      "name": "Canonical Tags in Ghost",
      "alternateName": "Ghost",
      "description": "Ghost adds self-referencing canonicals automatically and offers a per-post Canonical URL field for republished content.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-ghost",
          "text": "Yes. Ghost adds a self-referencing canonical to posts and pages automatically, and each post and page has a Canonical URL field for pointing the tag at a different address. The tag is rendered through the theme's {{ghost_head}} helper, which Ghost's default themes, including Casper, place in the <head> , so any theme that includes that helper gets correct self-referencing canonicals with no configuration.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-ghost/",
          "pageTitle": "Canonical Tags in Ghost | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_ghost",
          "targetName": "Ghost",
          "targetId": "e_ghost",
          "targetUri": "https://en.wikipedia.org/wiki/Ghost_(blogging_platform)",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_hubspot",
      "@type": "Concept",
      "name": "Canonical Tags in HubSpot CMS",
      "alternateName": "HubSpot CMS",
      "description": "HubSpot generates self-referencing canonicals by default, with a page-level override and domain-level canonicalization.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-hubspot",
          "text": "Yes. HubSpot's Knowledge Base states it plainly: by default, when you create a new page or blog post, its own URL is set as the canonical for that content. That means website pages, landing pages, and individual blog posts all receive a self-referencing canonical automatically, with no manual setup required for the common case. There is one documented and important exception: blog listing pages do not have a canonical URL set by default.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-hubspot/",
          "pageTitle": "Canonical Tags in HubSpot CMS | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_hubspot",
          "targetName": "HubSpot",
          "targetId": "e_hubspot",
          "targetUri": "https://en.wikipedia.org/wiki/HubSpot",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_redirects",
      "@type": "Concept",
      "name": "Canonical Redirects",
      "alternateName": "Canonical Redirects",
      "description": "The single-hop 301 from every URL variant to the canonical URL, why Google rates it a strong signal, and what WordPress's redirect_canonical() does.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-redirects",
          "text": "A canonical redirect is a server-side permanent redirect, a 301 or a 308, that sends a non-canonical variant of a URL to the single address you want indexed. Enforce it with one hop from every variant: Google counts a permanent redirect as a strong canonicalization signal, and it works best when it is permanent, direct, and backed by matching canonical tags, internal links and sitemap entries.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-redirects/",
          "pageTitle": "Canonical Redirects | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_variants",
          "targetName": "URL Variants & Duplicate URLs",
          "targetId": "e_grp_variants",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_url_redirection",
          "targetName": "URL redirection",
          "targetId": "e_url_redirection",
          "targetUri": "https://en.wikipedia.org/wiki/URL_redirection",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_url_normalization",
          "targetName": "URL canonicalization",
          "targetId": "e_url_normalization",
          "targetUri": "https://en.wikipedia.org/wiki/URI_normalization",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_domain",
      "@type": "Concept",
      "name": "Canonical Domain: www, Non-www, HTTP and HTTPS",
      "alternateName": "Canonical Domain",
      "description": "Choosing one host and protocol, enforcing it with redirects, and keeping canonicals, links and sitemaps on that host now that Search Console's preferred domain setting is gone.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-domain",
          "text": "The canonical domain is the single combination of scheme and hostname that every public URL on a site uses, such as https://www.example.com . Choose one host on HTTPS and redirect everything else to it: Google has no ranking preference between www and the bare domain, it does prefer HTTPS, and the old Search Console setting that once recorded this choice no longer exists. Without that choice, every page exists at four addresses, the http:// and https:// forms of both example.com and www.example.com , and a crawler sees four URLs.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-domain/",
          "pageTitle": "Canonical Domain: www, Non-www, HTTP and HTTPS | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_variants",
          "targetName": "URL Variants & Duplicate URLs",
          "targetId": "e_grp_variants",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_url_normalization",
          "targetName": "URL canonicalization",
          "targetId": "e_url_normalization",
          "targetUri": "https://en.wikipedia.org/wiki/URI_normalization",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_hsts",
          "targetName": "HTTP Strict Transport Security",
          "targetId": "e_hsts",
          "targetUri": "https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_non_canonical_url",
      "@type": "Concept",
      "name": "Non-Canonical URLs",
      "alternateName": "Non-Canonical URLs",
      "description": "What a non-canonical URL is, why every site has them, and why audit tools flag them in sitemaps, internal links and canonical targets.",
      "hasChunks": [
        {
          "chunkId": "c_non-canonical-url",
          "text": "A non-canonical URL is an address that serves duplicate or near-duplicate content but is not the version chosen to represent that content in search. Having them is normal and usually intended; review them only to keep them out of your XML sitemaps, internal links, hreflang annotations and other pages' canonical tags. Google describes canonicalization as \"the process of selecting the representative –canonical– URL of a piece of content\" ( Google Search Central ). A URL ends up on the other side of that selection in one of three ways: It redirects.",
          "sourceUrl": "https://www.canonicaltag.com/non-canonical-url/",
          "pageTitle": "Non-Canonical URLs | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_variants",
          "targetName": "URL Variants & Duplicate URLs",
          "targetId": "e_grp_variants",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_canonical_link_element",
          "targetName": "Canonical link element",
          "targetId": "e_canonical_link_element",
          "targetUri": "https://en.wikipedia.org/wiki/Canonical_link_element",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_duplicate_content",
          "targetName": "Duplicate content",
          "targetId": "e_duplicate_content",
          "targetUri": "https://en.wikipedia.org/wiki/Duplicate_content",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_http_header",
      "@type": "Concept",
      "name": "Canonical in the HTTP Header",
      "alternateName": "Canonical HTTP Header",
      "description": "Sending rel=canonical as an HTTP Link header for PDFs and other files with no HTML head, with Apache and nginx examples and how to verify it.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-http-header",
          "text": "A canonical HTTP header is a rel=\"canonical\" annotation sent in the HTTP Link response header rather than written as an HTML <link> element. Google supports it for web search, and it is the right tool for PDFs, Word documents and other non-HTML files, which have no <head> to hold a tag. Link: <https://www.example.com/downloads/white-paper.pdf>; rel=\"canonical\" Two standards sit behind that line. RFC 6596, published in April 2012 by M. Ohye and J. Kupke, defines the canonical link relation, and its own example is already in header form.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-http-header/",
          "pageTitle": "Canonical in the HTTP Header | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_variants",
          "targetName": "URL Variants & Duplicate URLs",
          "targetId": "e_grp_variants",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_canonical_link_element",
          "targetName": "Canonical link element",
          "targetId": "e_canonical_link_element",
          "targetUri": "https://en.wikipedia.org/wiki/Canonical_link_element",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_and_url_parameters",
      "@type": "Concept",
      "name": "Canonical Tags and URL Parameters",
      "alternateName": "URL Parameters",
      "description": "How canonical tags handle tracking, sort and filter parameters, why they do not stop crawling, and what Google now recommends for faceted navigation.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-and-url-parameters",
          "text": "A canonical tag consolidates duplicate parameter URLs into one indexed version, but it does not stop Google from crawling them. For tracking codes and a few sort orders that is usually all a site needs; for faceted navigation, where filter combinations multiply into thousands or millions of addresses, Google's own guidance rates robots.txt rules and URL fragments as more effective than rel=\"canonical\" . URL parameters (also called query parameters or the query string) are the ?key=value&key2=value2 portion of an address.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-and-url-parameters/",
          "pageTitle": "Canonical Tags and URL Parameters | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_variants",
          "targetName": "URL Variants & Duplicate URLs",
          "targetId": "e_grp_variants",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_query_string",
          "targetName": "Query string",
          "targetId": "e_query_string",
          "targetUri": "https://en.wikipedia.org/wiki/Query_string",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_faceted_search",
          "targetName": "Faceted search",
          "targetId": "e_faceted_search",
          "targetUri": "https://en.wikipedia.org/wiki/Faceted_search",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_and_product_variants",
      "@type": "Concept",
      "name": "Canonical Tags for Product Variants",
      "alternateName": "Product Variants",
      "description": "When color and size variants should self-canonicalize, when they should consolidate to a base URL, and how to handle products that live in several categories.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-and-product-variants",
          "text": "Google documents two valid ways to canonicalize product variants: keep all variants on one page and canonicalize every variant URL to the parameter-free base URL, or give each variant its own page that stays its own canonical. Neither is wrong; what breaks is a site that mixes them, with some color URLs consolidating, others self-canonical, and internal links and sitemaps pointing at a third set. A product variant is one purchasable combination of a product's attributes, such as a t-shirt in green, size M.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-and-product-variants/",
          "pageTitle": "Canonical Tags for Product Variants | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_variants",
          "targetName": "URL Variants & Duplicate URLs",
          "targetId": "e_grp_variants",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_duplicate_content",
          "targetName": "Duplicate content",
          "targetId": "e_duplicate_content",
          "targetUri": "https://en.wikipedia.org/wiki/Duplicate_content",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_and_amp_mobile_urls",
      "@type": "Concept",
      "name": "Canonical Tags for AMP and Mobile URLs",
      "alternateName": "AMP and Mobile URLs",
      "description": "The paired annotations AMP pages and separate m-dot mobile sites need, and what mobile-first indexing did and did not change about the canonical.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-and-amp-mobile-urls",
          "text": "AMP pages and separate mobile (m-dot) URLs only work when the annotations are paired in both directions: the main page points out to its alternate, and the alternate points its canonical back. Leave out either half and Google has no confirmed pair to act on: an AMP page with no rel=\"amphtml\" link from its twin may never be discovered or paired, and a one-way mobile annotation leaves Google to sort the two URLs out as ordinary duplicates rather than device versions. The two configurations share a shape.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-and-amp-mobile-urls/",
          "pageTitle": "Canonical Tags for AMP and Mobile URLs | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_variants",
          "targetName": "URL Variants & Duplicate URLs",
          "targetId": "e_grp_variants",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_amp",
          "targetName": "Accelerated Mobile Pages",
          "targetId": "e_amp",
          "targetUri": "https://en.wikipedia.org/wiki/Accelerated_Mobile_Pages",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_php",
      "@type": "Concept",
      "name": "Canonical Tags in PHP",
      "alternateName": "PHP",
      "description": "Building a canonical URL safely in plain PHP and Laravel, in the head or as a Link header, without reflecting the Host header or query strings.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-php",
          "text": "PHP has no canonical tag of its own: it is a programming language, not a content management system, so a page built in plain PHP carries a <link rel=\"canonical\"> element only if your template prints one. The version found in countless snippets, which glues $_SERVER['HTTP_HOST'] to the raw request URI, is worse than having none, because it copies attacker-controlled input straight into the page head. Frameworks do not change the starting point much.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-php/",
          "pageTitle": "Canonical Tags in PHP | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_frameworks",
          "targetName": "Code & JavaScript Frameworks",
          "targetId": "e_grp_frameworks",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_php",
          "targetName": "PHP",
          "targetId": "e_php",
          "targetUri": "https://en.wikipedia.org/wiki/PHP",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_blogger",
      "@type": "Concept",
      "name": "Canonical Tags in Blogger",
      "alternateName": "Blogger",
      "description": "How Blogger's all-head-content include writes the canonical, how it handles ?m=1 mobile URLs, and where custom themes break it.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-blogger",
          "text": "Blogger, Google's hosted blogging service on blogspot.com and custom domains, writes a self-referencing canonical on standard themes without any setup, and it drops parameters such as ?m=1 from the URL it names. The part worth checking is the custom or third-party theme, because that is where a second, conflicting canonical usually gets added. Blogger themes are XML templates written in the platform's own layout language: <b:include> and <b:if> tags, data: values, and expr: attributes that evaluate them.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-blogger/",
          "pageTitle": "Canonical Tags in Blogger | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_blogger",
          "targetName": "Blogger",
          "targetId": "e_blogger",
          "targetUri": "https://en.wikipedia.org/wiki/Blogger_(service)",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_nuxt",
      "@type": "Concept",
      "name": "Canonical Tags in Nuxt",
      "alternateName": "Nuxt",
      "description": "Setting canonical tags in Nuxt with useHead or the Nuxt SEO modules, and the SSR, trailing-slash and query-whitelist defaults to audit.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-nuxt",
          "text": "Nuxt, the Vue framework formerly called Nuxt.js, puts no canonical tag in the page on its own: according to the Nuxt SEO and meta docs , its only default head tags are charset and viewport . Install the Nuxt SEO module family, either @nuxtjs/seo or nuxt-seo-utils alone, and a canonical is generated automatically from the configured site URL and the current route. Which starting point applies changes the job entirely. On bare Nuxt, you write the tag and are responsible for everything it contains.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-nuxt/",
          "pageTitle": "Canonical Tags in Nuxt | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_frameworks",
          "targetName": "Code & JavaScript Frameworks",
          "targetId": "e_grp_frameworks",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_nuxt",
          "targetName": "Nuxt",
          "targetId": "e_nuxt",
          "targetUri": "https://en.wikipedia.org/wiki/Nuxt",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_canonical_tags_in_framer",
      "@type": "Concept",
      "name": "Canonical Tags in Framer",
      "alternateName": "Framer",
      "description": "Framer's automatic canonical on connected domains, the site-level Canonical URL field for reverse proxies, and the missing per-page override.",
      "hasChunks": [
        {
          "chunkId": "c_canonical-tags-in-framer",
          "text": "Framer, the hosted website builder, adds a self-referencing canonical to every published page on its own once your domain is connected and managed through Framer. What it does not offer is a per-page override: the only canonical control is a single site-level Canonical URL field, intended for sites Framer serves through a reverse proxy or a subdirectory.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-framer/",
          "pageTitle": "Canonical Tags in Framer | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "PART_OF",
          "target": "e_grp_cms",
          "targetName": "CMS & Website Platforms",
          "targetId": "e_grp_cms",
          "confidence": "declared"
        },
        {
          "predicate": "RELATES_TO",
          "target": "e_canonical_link_element",
          "targetName": "Canonical link element",
          "targetId": "e_canonical_link_element",
          "targetUri": "https://en.wikipedia.org/wiki/Canonical_link_element",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_guide_what_is_a_canonical_tag",
      "@type": "Concept",
      "name": "What Is a Canonical Tag?",
      "description": "A canonical tag (rel=canonical) tells Google which URL you prefer among duplicates. Learn its syntax, placement, and why Google treats it as a hint.",
      "hasChunks": [
        {
          "chunkId": "c_g_what-is-a-canonical-tag",
          "text": "A canonical tag is a piece of HTML markup, written as <link rel=\"canonical\" href=\"...\"> , that you place in the <head> of a web page to tell search engines which URL you consider the preferred, authoritative version of that page's content. The term comes from computer science, where \"canonical\" describes the standard, simplified form of something when multiple equivalent forms exist.",
          "sourceUrl": "https://www.canonicaltag.com/guides/what-is-a-canonical-tag/",
          "pageTitle": "What Is a Canonical Tag? Definition, Syntax & How It Works",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_what_is_a_canonical_url",
      "@type": "Concept",
      "name": "What Is a Canonical URL?",
      "description": "A canonical URL is the one preferred version of a page among duplicates. Learn how Google selects it, and how it differs from the canonical tag itself.",
      "hasChunks": [
        {
          "chunkId": "c_g_what-is-a-canonical-url",
          "text": "A canonical URL is the single, preferred web address that a search engine treats as the authoritative version of a page when multiple URLs lead to the same or substantially similar content. It's a concept, not a piece of markup — the canonical tag (rel=canonical) is one of the tools used to declare a canonical URL, but the canonical URL itself is the outcome: the actual URL that ends up representing a set of duplicates in search results and in ranking calculations.",
          "sourceUrl": "https://www.canonicaltag.com/guides/what-is-a-canonical-url/",
          "pageTitle": "What Is a Canonical URL? How Google Picks the Preferred URL",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_canonicalization_in_seo",
      "@type": "Concept",
      "name": "Canonicalization in SEO",
      "description": "What canonicalization means in SEO, why duplicate URLs happen, and the signals Google actually uses to pick one URL from a set of duplicates.",
      "hasChunks": [
        {
          "chunkId": "c_g_canonicalization-in-seo",
          "text": "URL canonicalization, sometimes called URL normalization, is the process of identifying one authoritative URL from a group of URLs that return the same or substantially similar content, and then treating that one URL as the version that gets indexed and ranked. The word comes from \"canon\" - an accepted, authoritative standard. A canonical URL is the version a search engine treats as the real one. In practice, canonicalization is broader than the rel=canonical tag alone.",
          "sourceUrl": "https://www.canonicaltag.com/guides/canonicalization-in-seo/",
          "pageTitle": "Canonicalization in SEO: How Search Engines Pick a URL",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_how_to_add_a_canonical_tag_in_html",
      "@type": "Concept",
      "name": "Add a Canonical Tag in HTML",
      "description": "How to add a canonical tag in HTML and HTTP headers: head placement, attributes to avoid, JavaScript caveats, server config, and how to test the result.",
      "hasChunks": [
        {
          "chunkId": "c_g_how-to-add-a-canonical-tag-in-html",
          "text": "Add a canonical tag by placing one <link rel=\"canonical\" href=\"...\"> element inside the page's <head> , with the absolute URL of the version you want indexed. Google accepts the element only in the <head> ; a canonical placed in the <body> is ignored. Each page should carry exactly one canonical. Google's guidance is not to declare different canonicals through different techniques on the same page, for example one URL in the HTML head and another in an HTTP header.",
          "sourceUrl": "https://www.canonicaltag.com/guides/how-to-add-a-canonical-tag-in-html/",
          "pageTitle": "How to Add a Canonical Tag in HTML (With Examples) | CanonicalTag",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_rel_canonical_syntax",
      "@type": "Concept",
      "name": "rel=canonical Syntax",
      "description": "The exact syntax for rel=canonical: HTML link element, HTTP header form, placement rules, what Google ignores, and valid vs invalid examples.",
      "hasChunks": [
        {
          "chunkId": "c_g_rel-canonical-syntax",
          "text": "The canonical tag is a single HTML link element placed in the head of a page. Its job is to tell search engines which URL is the preferred, indexable version when the same or substantially similar content is reachable at more than one address. The exact syntax is: <link rel=\"canonical\" href=\"https://www.example.com/page.html\"> Three things make this element work correctly. First, rel=\"canonical\" is the fixed keyword that identifies the relationship type — it does not vary.",
          "sourceUrl": "https://www.canonicaltag.com/guides/rel-canonical-syntax/",
          "pageTitle": "rel=canonical Syntax: The Complete Reference | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_canonical_tag_vs_301_redirect",
      "@type": "Concept",
      "name": "Canonical Tag vs 301 Redirect",
      "description": "Canonical tag or 301 redirect? The core difference, when to use each, why signal strength matters, and the mistakes that undermine both.",
      "hasChunks": [
        {
          "chunkId": "c_g_canonical-tag-vs-301-redirect",
          "text": "A 301 redirect is a server-level instruction that moves both users and search engine bots from one URL to another, permanently. When a browser or crawler requests the old URL, the server responds with a 301 status code and sends them straight to the new one — the old URL becomes inaccessible as a destination in its own right.",
          "sourceUrl": "https://www.canonicaltag.com/guides/canonical-tag-vs-301-redirect/",
          "pageTitle": "Canonical Tag vs 301 Redirect: When to Use Each | CanonicalTag",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_canonical_tags_vs_hreflang",
      "@type": "Concept",
      "name": "Canonical Tags and Hreflang",
      "description": "Canonical tags and hreflang solve different problems. Learn why mixing them causes conflicts and the rule for using both correctly.",
      "hasChunks": [
        {
          "chunkId": "c_g_canonical-tags-vs-hreflang",
          "text": "Canonical tags and hreflang attributes solve two different problems, and confusing them causes some of the most persistent multilingual and multi-regional indexing failures on the web. A canonical tag (rel=\"canonical\") is a hint you place in a page's head — or in an HTTP header for non-HTML files — that tells Google \"if you find near-duplicate versions of this content, treat this specific URL as the one to index and consolidate ranking signals onto.\" It answers the question: which single URL represents this content? Hreflang is a different attribute —",
          "sourceUrl": "https://www.canonicaltag.com/guides/canonical-tags-vs-hreflang/",
          "pageTitle": "Canonical Tags and Hreflang: How to Use Them Together",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_canonical_tag_best_practices",
      "@type": "Concept",
      "name": "Canonical Tag Best Practices",
      "description": "A practical, evidence-based checklist for implementing canonical tags correctly: self-referencing URLs, absolute paths, one tag per page, and more.",
      "hasChunks": [
        {
          "chunkId": "c_g_canonical-tag-best-practices",
          "text": "The single most reliable default for any indexable page is a canonical tag that points to itself. Google recommends including a self-referential rel=canonical on the canonical page itself, and while John Mueller has described this as \"not critical\" — a site won't break without one — it removes ambiguity the moment a page becomes reachable through more than one URL. That ambiguity shows up constantly: tracking parameters (?utm_source=), session IDs, inconsistent casing, or a trailing slash appended by one internal link but not another.",
          "sourceUrl": "https://www.canonicaltag.com/guides/canonical-tag-best-practices/",
          "pageTitle": "Canonical Tag Best Practices: A Practical Checklist",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_common_canonical_tag_mistakes",
      "@type": "Concept",
      "name": "Common Canonical Mistakes",
      "description": "The most common canonical tag mistakes, from canonicalizing everything to the homepage to combining canonical with noindex, and how to fix each one.",
      "hasChunks": [
        {
          "chunkId": "c_g_common-canonical-tag-mistakes",
          "text": "A surprisingly common template bug canonicalizes every URL in a section — every paginated results page, every filtered listing, sometimes an entire site — back to a single \"master\" URL such as the homepage or page 1 of a series. The mistake is treating pages that aren't duplicates as if they were. Page 2 of a paginated archive contains different items than page 1; a filtered product listing shows a different subset than the unfiltered category.",
          "sourceUrl": "https://www.canonicaltag.com/guides/common-canonical-tag-mistakes/",
          "pageTitle": "Common Canonical Tag Mistakes (and How to Fix Them)",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_canonicalization_meaning",
      "@type": "Concept",
      "name": "What 'Canonicalized' Means",
      "description": "Canonicalized means a URL defers to a different canonical. What the word and the \"Canonicalised\" audit label mean, and how to tell intended from broken.",
      "hasChunks": [
        {
          "chunkId": "c_g_canonicalization-meaning",
          "text": "A canonicalized URL is an address whose rel=\"canonical\" tag names a different address as the preferred version, or one that a search engine grouped with duplicates and chose another address to represent. The word describes a relationship between two addresses, not a verdict on the page, so an address marked canonicalized is not broken, penalized or removed by that fact alone. Most readers meet the word as a label rather than in a sentence.",
          "sourceUrl": "https://www.canonicaltag.com/guides/canonicalization-meaning/",
          "pageTitle": "What Does 'Canonicalized' Mean? The Label Explained",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_duplicate_content_and_canonical_tags",
      "@type": "Concept",
      "name": "Duplicate Content",
      "description": "How canonical tags fix duplicate content: causes, when to use rel=canonical vs a redirect or noindex, common mistakes, and a practical checklist.",
      "hasChunks": [
        {
          "chunkId": "c_g_duplicate-content-and-canonical-tags",
          "text": "Duplicate content is simply the same, or substantially similar, content that is accessible at more than one URL. It is extremely common, and it is not, despite a persistent myth, a 'duplicate content penalty' in the sense of Google punishing a site for having it. Google has been explicit that ordinary duplicate content is not treated as spam or manipulation unless it appears deliberately designed to deceive, such as content scraped or copied wholesale from elsewhere.",
          "sourceUrl": "https://www.canonicaltag.com/guides/duplicate-content-and-canonical-tags/",
          "pageTitle": "Duplicate Content and Canonical Tags: How to Fix It",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_keyword_cannibalization",
      "@type": "Concept",
      "name": "Keyword Cannibalization",
      "description": "Keyword cannibalization is not a Google penalty. How to tell real same-intent overlap from noise, why a 301 beats a canonical, and when to leave pages alone.",
      "hasChunks": [
        {
          "chunkId": "c_g_keyword-cannibalization",
          "text": "Keyword cannibalization is an SEO-industry label for two or more URLs on one site that target, or rank for, the same query, on the theory that they compete with each other. Google does not penalize it, and the usual right response is to do nothing; the exception is a set of pages serving the same search intent that split the clicks, which are better merged into one URL with a 301 redirect than tied together with a canonical tag. The term has no standing in Google's documentation.",
          "sourceUrl": "https://www.canonicaltag.com/guides/keyword-cannibalization/",
          "pageTitle": "Keyword Cannibalization: When to Act and How to Fix It",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_meta_robots_and_x_robots_tag",
      "@type": "Concept",
      "name": "Meta Robots and X-Robots-Tag",
      "description": "How the robots meta tag and X-Robots-Tag header work, which rules Google still supports, why robots.txt hides them, and why noindex and a canonical don't mix.",
      "hasChunks": [
        {
          "chunkId": "c_g_meta-robots-and-x-robots-tag",
          "text": "The robots meta tag and the X-Robots-Tag HTTP header deliver page-level indexing and display rules, and Google obeys a noindex once it has crawled the page, while rel=canonical is only a hint and a robots.txt block hides both from Google. Use noindex or a canonical pointing to another URL, never both, and keep any noindexed URL crawlable. The robots meta tag is an HTML element, <meta name=\"robots\" content=\"...\"> .",
          "sourceUrl": "https://www.canonicaltag.com/guides/meta-robots-and-x-robots-tag/",
          "pageTitle": "Robots Meta Tag and X-Robots-Tag vs Canonical | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_hreflang_tags",
      "@type": "Concept",
      "name": "Hreflang Tags",
      "description": "How hreflang works: HTML, header and sitemap syntax, valid language-region codes, return links, x-default, and how each locale's canonical fits in.",
      "hasChunks": [
        {
          "chunkId": "c_g_hreflang-tags",
          "text": "hreflang is an attribute on rel=\"alternate\" links that declares a URL's equivalents in other languages or regions, so Google can show each searcher the version meant for them. It selects which locale URL appears; it does not rank pages or override canonicalization, so every locale needs its own self-referencing canonical, a full set of reciprocal links, and valid ISO codes. The annotation does not name an original. It describes a set of alternates that are all legitimate, each aimed at a different audience.",
          "sourceUrl": "https://www.canonicaltag.com/guides/hreflang-tags/",
          "pageTitle": "hreflang Tags: Implementation Rules and Canonicals | CanonicalTag",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_link_rel_attribute_values",
      "@type": "Concept",
      "name": "The HTML rel Attribute",
      "description": "Which HTML rel attribute values change search behavior: canonical, alternate, amphtml and the nofollow, ugc and sponsored hints, plus the ones Google dropped.",
      "hasChunks": [
        {
          "chunkId": "c_g_link-rel-attribute-values",
          "text": "Of all the values the HTML rel attribute (the link relation) can carry, only a handful change what search engines do: canonical , alternate when paired with hreflang or media , amphtml , icon , and the link qualifiers nofollow , ugc and sponsored , which Google reads as hints. Two values that once carried weight in Google, next / prev and author , no longer do anything there, and everything else is an instruction to the browser. The attribute itself names the relationship between the current document and whatever an element points at.",
          "sourceUrl": "https://www.canonicaltag.com/guides/link-rel-attribute-values/",
          "pageTitle": "HTML rel Attribute Values: What Search Engines Use | CanonicalTag",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_how_to_check_canonical_tags",
      "@type": "Concept",
      "name": "How to Check Canonical Tags",
      "description": "Check a canonical tag with View Source, curl, DevTools and URL Inspection, and see why only the indexed Search Console result shows the URL Google chose.",
      "hasChunks": [
        {
          "chunkId": "c_g_how-to-check-canonical-tags",
          "text": "Checking a canonical tag means answering two different questions with different tools: View Source and curl show what the server declares, the DevTools Elements panel shows what JavaScript leaves in the page, and only the indexed result in Search Console's URL Inspection shows which URL Google actually chose. Each method is trustworthy only for the question it can answer. The first question is what the site declared.",
          "sourceUrl": "https://www.canonicaltag.com/guides/how-to-check-canonical-tags/",
          "pageTitle": "How to Check a Canonical Tag and Google's Choice | CanonicalTag",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_canonical_tag_fundamentals",
      "@type": "Concept",
      "name": "Canonical Tag Fundamentals",
      "description": "How canonical tags fit into Google's canonicalization: why duplicate URLs are inevitable, which signals pick the winner, and what rel=canonical cannot do.",
      "hasChunks": [
        {
          "chunkId": "c_g_canonical-tag-fundamentals",
          "text": "A canonical tag is a vote, not a verdict: it names the URL you want Google to treat as the representative of a set of duplicates, and Google weighs that vote alongside other evidence before choosing. Everything else about canonical SEO follows from two facts, that duplicates are unavoidable and that Google makes the final selection. Start with the first fact. The same content nearly always answers at more than one address.",
          "sourceUrl": "https://www.canonicaltag.com/guides/canonical-tag-fundamentals/",
          "pageTitle": "Canonical Tag Fundamentals: How Canonical SEO Works",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_implementing_canonical_tags",
      "@type": "Concept",
      "name": "Implementing Canonical Tags",
      "description": "Implementing canonical tags in order: set the URL policy, emit one absolute canonical per page, align redirects and links, then verify what Google chose.",
      "hasChunks": [
        {
          "chunkId": "c_g_implementing-canonical-tags",
          "text": "Implementing canonical tags well is a sequencing problem more than a markup problem: decide what the canonical URLs are, publish exactly one canonical per page, bring every other signal into line, and then check what Google actually selected. The tag itself is a single line that every CMS and framework can produce. What fails is the process around it. Sites add canonicals before deciding what the canonical URLs are, let several systems write them, and never confirm that Google agreed. The result is a tag that is present, valid and overridden.",
          "sourceUrl": "https://www.canonicaltag.com/guides/implementing-canonical-tags/",
          "pageTitle": "Implementing Canonical Tags: Order, Pitfalls, Checks",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_guide_duplicate_content_and_indexing_signals",
      "@type": "Concept",
      "name": "Duplicate Content and Indexing Signals",
      "description": "Redirects, canonicals, noindex, robots.txt and hreflang each do a different job. See what each controls, which pairs conflict, and which fits each duplicate.",
      "hasChunks": [
        {
          "chunkId": "c_g_duplicate-content-and-indexing-signals",
          "text": "Duplicate content is controlled with five main signals, and they do not compete to do the same job: a 301 redirect removes a duplicate, rel=canonical consolidates it, noindex excludes a page from Search, robots.txt controls crawling rather than indexing, and hreflang chooses which language or regional version to show. Teaching them one tag at a time hides that division of labor, which is the most useful thing to know about them.",
          "sourceUrl": "https://www.canonicaltag.com/guides/duplicate-content-and-indexing-signals/",
          "pageTitle": "Duplicate Content and Indexing Signals: Which to Use",
          "publisher": "CanonicalTag.com",
          "contentType": "explanation"
        }
      ]
    },
    {
      "entityId": "e_canonical_link_element",
      "@type": "Concept",
      "name": "Canonical link element",
      "description": "The HTML link element rel=canonical, used to specify the preferred (canonical) URL for a page when the same or similar content is available at multiple URLs.",
      "sameAs": "https://en.wikipedia.org/wiki/Canonical_link_element",
      "hasChunks": [
        {
          "chunkId": "c_e_canonical_link_element",
          "text": "The HTML link element rel=canonical, used to specify the preferred (canonical) URL for a page when the same or similar content is available at multiple URLs.",
          "sourceUrl": "https://www.canonicaltag.com/guides/what-is-a-canonical-tag/",
          "pageTitle": "What Is a Canonical Tag? | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_url_normalization",
      "@type": "Concept",
      "name": "URL canonicalization",
      "description": "The process of selecting and standardizing a single preferred URL from a set of URLs that return the same or similar content, also known as URL normalization.",
      "sameAs": "https://en.wikipedia.org/wiki/URI_normalization",
      "hasChunks": [
        {
          "chunkId": "c_e_url_normalization",
          "text": "The process of selecting and standardizing a single preferred URL from a set of URLs that return the same or similar content, also known as URL normalization.",
          "sourceUrl": "https://www.canonicaltag.com/guides/canonicalization-in-seo/",
          "pageTitle": "Canonicalization in SEO | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_duplicate_content",
      "@type": "Concept",
      "name": "Duplicate content",
      "description": "Substantive blocks of content that appear on more than one URL, which search engines consolidate to a single canonical URL for indexing.",
      "sameAs": "https://en.wikipedia.org/wiki/Duplicate_content",
      "hasChunks": [
        {
          "chunkId": "c_e_duplicate_content",
          "text": "Substantive blocks of content that appear on more than one URL, which search engines consolidate to a single canonical URL for indexing.",
          "sourceUrl": "https://www.canonicaltag.com/guides/canonicalization-in-seo/",
          "pageTitle": "Canonicalization in SEO | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_seo",
      "@type": "Concept",
      "name": "Search engine optimization",
      "description": "The practice of improving a website's visibility in organic search results, of which correct canonicalization is a core technical component.",
      "sameAs": "https://en.wikipedia.org/wiki/Search_engine_optimization",
      "hasChunks": [
        {
          "chunkId": "c_e_seo",
          "text": "The practice of improving a website's visibility in organic search results, of which correct canonicalization is a core technical component.",
          "sourceUrl": "https://www.canonicaltag.com/guides/what-is-a-canonical-tag/",
          "pageTitle": "What Is a Canonical Tag? | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_google_search_console",
      "@type": "Concept",
      "name": "Google Search Console",
      "description": "Google's free service for monitoring a site's presence in Search results; its Page indexing report surfaces canonical statuses such as duplicate without user-selected canonical.",
      "sameAs": "https://en.wikipedia.org/wiki/Google_Search_Console",
      "hasChunks": [
        {
          "chunkId": "c_e_google_search_console",
          "text": "Google's free service for monitoring a site's presence in Search results; its Page indexing report surfaces canonical statuses such as duplicate without user-selected canonical.",
          "sourceUrl": "https://www.canonicaltag.com/duplicate-without-user-selected-canonical/",
          "pageTitle": "Duplicate Without User-Selected Canonical | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_hreflang",
      "@type": "Concept",
      "name": "Hreflang",
      "description": "An HTML attribute and HTTP mechanism that specifies the language and regional targeting of a page, which must be kept consistent with self-referencing canonical tags.",
      "sameAs": "https://en.wikipedia.org/wiki/Hreflang",
      "hasChunks": [
        {
          "chunkId": "c_e_hreflang",
          "text": "An HTML attribute and HTTP mechanism that specifies the language and regional targeting of a page, which must be kept consistent with self-referencing canonical tags.",
          "sourceUrl": "https://www.canonicaltag.com/guides/canonical-tags-vs-hreflang/",
          "pageTitle": "Canonical Tags vs Hreflang | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_http_301",
      "@type": "Concept",
      "name": "URL redirection",
      "description": "The technique of sending a URL to a different location, including the HTTP 301 permanent redirect, a strong canonicalization signal that consolidates a URL to its destination, unlike the advisory canonical tag.",
      "sameAs": "https://en.wikipedia.org/wiki/URL_redirection",
      "hasChunks": [
        {
          "chunkId": "c_e_http_301",
          "text": "The technique of sending a URL to a different location, including the HTTP 301 permanent redirect, a strong canonicalization signal that consolidates a URL to its destination, unlike the advisory canonical tag.",
          "sourceUrl": "https://www.canonicaltag.com/guides/canonical-tag-vs-301-redirect/",
          "pageTitle": "Canonical Tag vs 301 Redirect | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_meta_element",
      "@type": "Concept",
      "name": "Meta element",
      "description": "HTML elements placed in the document head that provide metadata about a web page, the family of tags that includes the canonical link and the robots meta tag.",
      "sameAs": "https://en.wikipedia.org/wiki/Meta_element",
      "hasChunks": [
        {
          "chunkId": "c_e_meta_element",
          "text": "HTML elements placed in the document head that provide metadata about a web page, the family of tags that includes the canonical link and the robots meta tag.",
          "sourceUrl": "https://www.canonicaltag.com/guides/rel-canonical-syntax/",
          "pageTitle": "rel=canonical Syntax Reference | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_noindex",
      "@type": "Concept",
      "name": "Noindex",
      "description": "A robots directive instructing search engines not to index a page, which conflicts with a canonical tag when both are applied to the same URL.",
      "sameAs": "https://en.wikipedia.org/wiki/Noindex",
      "hasChunks": [
        {
          "chunkId": "c_e_noindex",
          "text": "A robots directive instructing search engines not to index a page, which conflicts with a canonical tag when both are applied to the same URL.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-and-noindex/",
          "pageTitle": "Canonical Tag and Noindex Together | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_wordpress",
      "@type": "Concept",
      "name": "WordPress",
      "description": "The open-source content management system that outputs self-referencing canonical tags on singular content and exposes filters to override them.",
      "sameAs": "https://en.wikipedia.org/wiki/WordPress",
      "hasChunks": [
        {
          "chunkId": "c_e_wordpress",
          "text": "The open-source content management system that outputs self-referencing canonical tags on singular content and exposes filters to override them.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-wordpress/",
          "pageTitle": "Canonical Tags in WordPress | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_yoast",
      "@type": "Concept",
      "name": "Yoast SEO",
      "description": "A widely used WordPress SEO plugin that adds self-referencing canonical tags across a site and provides a per-page canonical override field.",
      "sameAs": "https://en.wikipedia.org/wiki/Yoast",
      "hasChunks": [
        {
          "chunkId": "c_e_yoast",
          "text": "A widely used WordPress SEO plugin that adds self-referencing canonical tags across a site and provides a per-page canonical override field.",
          "sourceUrl": "https://www.canonicaltag.com/yoast-seo-canonical-urls/",
          "pageTitle": "Canonical URLs in Yoast SEO | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_shopify",
      "@type": "Concept",
      "name": "Shopify",
      "description": "A hosted ecommerce platform that automatically generates canonical tags, folding collection-scoped product URLs to a single canonical product URL.",
      "sameAs": "https://en.wikipedia.org/wiki/Shopify",
      "hasChunks": [
        {
          "chunkId": "c_e_shopify",
          "text": "A hosted ecommerce platform that automatically generates canonical tags, folding collection-scoped product URLs to a single canonical product URL.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-shopify/",
          "pageTitle": "Canonical Tags in Shopify | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_wix",
      "@type": "Concept",
      "name": "Wix",
      "description": "A hosted website builder that creates a default self-referencing canonical for every page and allows overrides through its advanced SEO settings.",
      "sameAs": "https://en.wikipedia.org/wiki/Wix.com",
      "hasChunks": [
        {
          "chunkId": "c_e_wix",
          "text": "A hosted website builder that creates a default self-referencing canonical for every page and allows overrides through its advanced SEO settings.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-wix/",
          "pageTitle": "Canonical Tags in Wix | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_squarespace",
      "@type": "Concept",
      "name": "Squarespace",
      "description": "A hosted website builder that auto-manages self-referencing canonical tags, which cannot be natively edited or removed.",
      "sameAs": "https://en.wikipedia.org/wiki/Squarespace",
      "hasChunks": [
        {
          "chunkId": "c_e_squarespace",
          "text": "A hosted website builder that auto-manages self-referencing canonical tags, which cannot be natively edited or removed.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-squarespace/",
          "pageTitle": "Canonical Tags in Squarespace | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_webflow",
      "@type": "Concept",
      "name": "Webflow",
      "description": "A hosted visual web design platform that does not output a canonical tag by default until a global canonical URL is configured.",
      "sameAs": "https://en.wikipedia.org/wiki/Webflow",
      "hasChunks": [
        {
          "chunkId": "c_e_webflow",
          "text": "A hosted visual web design platform that does not output a canonical tag by default until a global canonical URL is configured.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-webflow/",
          "pageTitle": "Canonical Tags in Webflow | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_magento",
      "@type": "Concept",
      "name": "Magento",
      "description": "An open-source ecommerce platform (Adobe Commerce) whose canonical link meta tag for products and categories is controlled by SEO configuration settings.",
      "sameAs": "https://en.wikipedia.org/wiki/Magento",
      "hasChunks": [
        {
          "chunkId": "c_e_magento",
          "text": "An open-source ecommerce platform (Adobe Commerce) whose canonical link meta tag for products and categories is controlled by SEO configuration settings.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-magento/",
          "pageTitle": "Canonical Tags in Magento | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_nextjs",
      "@type": "Concept",
      "name": "Next.js",
      "description": "A React framework that sets canonical tags through its Metadata API (alternates.canonical) or the Pages Router head, rendered into the server HTML.",
      "sameAs": "https://en.wikipedia.org/wiki/Next.js",
      "hasChunks": [
        {
          "chunkId": "c_e_nextjs",
          "text": "A React framework that sets canonical tags through its Metadata API (alternates.canonical) or the Pages Router head, rendered into the server HTML.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-nextjs/",
          "pageTitle": "Canonical Tags in Next.js | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_react",
      "@type": "Concept",
      "name": "React",
      "description": "A JavaScript library for building user interfaces; canonical tags are typically managed with react-helmet-async and are most reliable when server-rendered.",
      "sameAs": "https://en.wikipedia.org/wiki/React_(software)",
      "hasChunks": [
        {
          "chunkId": "c_e_react",
          "text": "A JavaScript library for building user interfaces; canonical tags are typically managed with react-helmet-async and are most reliable when server-rendered.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-react/",
          "pageTitle": "Canonical Tags in React | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_woocommerce",
      "@type": "Concept",
      "name": "WooCommerce",
      "description": "The open-source ecommerce plugin for WordPress; it relies on WordPress core and the active SEO plugin for canonicals, so filter and sort URLs are the main duplicate-content concern.",
      "sameAs": "https://en.wikipedia.org/wiki/WooCommerce",
      "hasChunks": [
        {
          "chunkId": "c_e_woocommerce",
          "text": "The open-source ecommerce plugin for WordPress; it relies on WordPress core and the active SEO plugin for canonicals, so filter and sort URLs are the main duplicate-content concern.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-woocommerce/",
          "pageTitle": "Canonical Tags in WooCommerce | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_bigcommerce",
      "@type": "Concept",
      "name": "BigCommerce",
      "description": "A hosted ecommerce platform that automatically outputs self-referencing canonical tags and folds a product's multiple category URLs to a single canonical product URL.",
      "sameAs": "https://en.wikipedia.org/wiki/BigCommerce",
      "hasChunks": [
        {
          "chunkId": "c_e_bigcommerce",
          "text": "A hosted ecommerce platform that automatically outputs self-referencing canonical tags and folds a product's multiple category URLs to a single canonical product URL.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-bigcommerce/",
          "pageTitle": "Canonical Tags in BigCommerce | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_drupal",
      "@type": "Concept",
      "name": "Drupal",
      "description": "An open-source content management system whose modern core emits self-referencing canonical tags on entity pages, with the Metatag module used to control and override them.",
      "sameAs": "https://en.wikipedia.org/wiki/Drupal",
      "hasChunks": [
        {
          "chunkId": "c_e_drupal",
          "text": "An open-source content management system whose modern core emits self-referencing canonical tags on entity pages, with the Metatag module used to control and override them.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-drupal/",
          "pageTitle": "Canonical Tags in Drupal | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_joomla",
      "@type": "Concept",
      "name": "Joomla",
      "description": "An open-source content management system whose built-in canonical support is limited, so SEF and non-SEF URLs create duplicates that a third-party extension resolves.",
      "sameAs": "https://en.wikipedia.org/wiki/Joomla",
      "hasChunks": [
        {
          "chunkId": "c_e_joomla",
          "text": "An open-source content management system whose built-in canonical support is limited, so SEF and non-SEF URLs create duplicates that a third-party extension resolves.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-joomla/",
          "pageTitle": "Canonical Tags in Joomla | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_ghost",
      "@type": "Concept",
      "name": "Ghost",
      "description": "An open-source publishing platform that outputs self-referencing canonical tags automatically and provides a per-post canonical URL field for republished content.",
      "sameAs": "https://en.wikipedia.org/wiki/Ghost_(blogging_platform)",
      "hasChunks": [
        {
          "chunkId": "c_e_ghost",
          "text": "An open-source publishing platform that outputs self-referencing canonical tags automatically and provides a per-post canonical URL field for republished content.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-ghost/",
          "pageTitle": "Canonical Tags in Ghost | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_hubspot",
      "@type": "Concept",
      "name": "HubSpot",
      "description": "A hosted CMS and marketing platform that generates self-referencing canonical URLs by default, with page-level overrides and domain-level canonicalization.",
      "sameAs": "https://en.wikipedia.org/wiki/HubSpot",
      "hasChunks": [
        {
          "chunkId": "c_e_hubspot",
          "text": "A hosted CMS and marketing platform that generates self-referencing canonical URLs by default, with page-level overrides and domain-level canonicalization.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-hubspot/",
          "pageTitle": "Canonical Tags in HubSpot CMS | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_url_redirection",
      "@type": "Concept",
      "name": "URL redirection",
      "description": "Forwarding one URL to another with an HTTP status code; a permanent (301 or 308) redirect is a strong signal that the target should become canonical.",
      "sameAs": "https://en.wikipedia.org/wiki/URL_redirection",
      "hasChunks": [
        {
          "chunkId": "c_e_url_redirection",
          "text": "Forwarding one URL to another with an HTTP status code; a permanent (301 or 308) redirect is a strong signal that the target should become canonical.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-redirects/",
          "pageTitle": "Canonical Redirects | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_hsts",
      "@type": "Concept",
      "name": "HTTP Strict Transport Security",
      "description": "A response header that tells browsers to use HTTPS only for a host, which complements a server-side HTTP-to-HTTPS canonical redirect.",
      "sameAs": "https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security",
      "hasChunks": [
        {
          "chunkId": "c_e_hsts",
          "text": "A response header that tells browsers to use HTTPS only for a host, which complements a server-side HTTP-to-HTTPS canonical redirect.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-domain/",
          "pageTitle": "Canonical Domain | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_query_string",
      "@type": "Concept",
      "name": "Query string",
      "description": "The parameter portion of a URL after the question mark; tracking, sort and filter parameters are a leading source of duplicate URLs.",
      "sameAs": "https://en.wikipedia.org/wiki/Query_string",
      "hasChunks": [
        {
          "chunkId": "c_e_query_string",
          "text": "The parameter portion of a URL after the question mark; tracking, sort and filter parameters are a leading source of duplicate URLs.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-and-url-parameters/",
          "pageTitle": "Canonical Tags and URL Parameters | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_faceted_search",
      "@type": "Concept",
      "name": "Faceted search",
      "description": "Filtering a catalog by attributes such as color or size, which on ecommerce sites can generate very large numbers of parameter URLs.",
      "sameAs": "https://en.wikipedia.org/wiki/Faceted_search",
      "hasChunks": [
        {
          "chunkId": "c_e_faceted_search",
          "text": "Filtering a catalog by attributes such as color or size, which on ecommerce sites can generate very large numbers of parameter URLs.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-and-url-parameters/",
          "pageTitle": "Canonical Tags and URL Parameters | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_amp",
      "@type": "Concept",
      "name": "Accelerated Mobile Pages",
      "description": "A web component framework for fast mobile pages; an AMP page points rel=canonical back to the regular page, which links to it with rel=amphtml.",
      "sameAs": "https://en.wikipedia.org/wiki/Accelerated_Mobile_Pages",
      "hasChunks": [
        {
          "chunkId": "c_e_amp",
          "text": "A web component framework for fast mobile pages; an AMP page points rel=canonical back to the regular page, which links to it with rel=amphtml.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-and-amp-mobile-urls/",
          "pageTitle": "Canonical Tags for AMP and Mobile URLs | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_link_relation",
      "@type": "Concept",
      "name": "Link relation",
      "description": "A typed relationship between two resources expressed with the rel attribute, such as canonical, alternate, nofollow or amphtml.",
      "sameAs": "https://en.wikipedia.org/wiki/Link_relation",
      "hasChunks": [
        {
          "chunkId": "c_e_link_relation",
          "text": "A typed relationship between two resources expressed with the rel attribute, such as canonical, alternate, nofollow or amphtml.",
          "sourceUrl": "https://www.canonicaltag.com/guides/link-rel-attribute-values/",
          "pageTitle": "The HTML rel Attribute | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_php",
      "@type": "Concept",
      "name": "PHP",
      "description": "A server-side scripting language; a PHP site emits no canonical unless its templates build one, ideally from a hardcoded host rather than request headers.",
      "sameAs": "https://en.wikipedia.org/wiki/PHP",
      "hasChunks": [
        {
          "chunkId": "c_e_php",
          "text": "A server-side scripting language; a PHP site emits no canonical unless its templates build one, ideally from a hardcoded host rather than request headers.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-php/",
          "pageTitle": "Canonical Tags in PHP | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_blogger",
      "@type": "Concept",
      "name": "Blogger",
      "description": "Google's hosted blogging service, whose standard themes output a self-referencing canonical through the all-head-content include.",
      "sameAs": "https://en.wikipedia.org/wiki/Blogger_(service)",
      "hasChunks": [
        {
          "chunkId": "c_e_blogger",
          "text": "Google's hosted blogging service, whose standard themes output a self-referencing canonical through the all-head-content include.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-blogger/",
          "pageTitle": "Canonical Tags in Blogger | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_nuxt",
      "@type": "Concept",
      "name": "Nuxt",
      "description": "A Vue-based web framework; Nuxt core emits no canonical, while the Nuxt SEO module family generates one from the site URL and route.",
      "sameAs": "https://en.wikipedia.org/wiki/Nuxt",
      "hasChunks": [
        {
          "chunkId": "c_e_nuxt",
          "text": "A Vue-based web framework; Nuxt core emits no canonical, while the Nuxt SEO module family generates one from the site URL and route.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-tags-in-nuxt/",
          "pageTitle": "Canonical Tags in Nuxt | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ]
    },
    {
      "entityId": "e_grp_gsc",
      "@type": "Taxonomy",
      "name": "Google Search Console Statuses",
      "description": "The canonical states you see in the GSC Page indexing report, what each one means, and how to respond.",
      "hasChunks": [
        {
          "chunkId": "c_grp_gsc",
          "text": "The canonical states you see in the GSC Page indexing report, what each one means, and how to respond.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-issues/",
          "pageTitle": "Canonical Tag Issues and Fixes | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "INCLUDES",
          "target": "e_duplicate_without_user_selected_canonical",
          "targetName": "Duplicate Without User-Selected Canonical",
          "targetId": "e_duplicate_without_user_selected_canonical",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_alternate_page_with_proper_canonical_tag",
          "targetName": "Alternate Page With Proper Canonical Tag",
          "targetId": "e_alternate_page_with_proper_canonical_tag",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_duplicate_google_chose_different_canonical",
          "targetName": "Duplicate, Google Chose Different Canonical Than User",
          "targetId": "e_duplicate_google_chose_different_canonical",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_duplicate_submitted_url_not_selected_as_canonical",
          "targetName": "Duplicate, Submitted URL Not Selected as Canonical",
          "targetId": "e_duplicate_submitted_url_not_selected_as_canonical",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_user_declared_vs_google_selected_canonical",
          "targetName": "User-Declared vs Google-Selected Canonical",
          "targetId": "e_user_declared_vs_google_selected_canonical",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_grp_conflicts",
      "@type": "Taxonomy",
      "name": "Conflicts & Edge Cases",
      "description": "How the canonical tag interacts with noindex, pagination, hreflang, redirects, and other signals.",
      "hasChunks": [
        {
          "chunkId": "c_grp_conflicts",
          "text": "How the canonical tag interacts with noindex, pagination, hreflang, redirects, and other signals.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-issues/",
          "pageTitle": "Canonical Tag Issues and Fixes | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "INCLUDES",
          "target": "e_self_referencing_canonical_tag",
          "targetName": "Self-Referencing Canonical Tags",
          "targetId": "e_self_referencing_canonical_tag",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_and_noindex",
          "targetName": "Canonical Tag and Noindex Together",
          "targetId": "e_canonical_and_noindex",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_and_pagination",
          "targetName": "Canonical Tags and Pagination",
          "targetId": "e_canonical_and_pagination",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_cross_domain_canonical",
          "targetName": "Cross-Domain Canonical Tags",
          "targetId": "e_cross_domain_canonical",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_multiple_canonical_tags",
          "targetName": "Multiple and Conflicting Canonical Tags",
          "targetId": "e_multiple_canonical_tags",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_pointing_to_non_canonical_url",
          "targetName": "Canonical Pointing to a Redirect, 404, or Noindexed Page",
          "targetId": "e_canonical_pointing_to_non_canonical_url",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_grp_cms",
      "@type": "Taxonomy",
      "name": "CMS & Website Platforms",
      "description": "Setting and controlling the canonical tag in the major content management systems, site builders, and SEO plugins.",
      "hasChunks": [
        {
          "chunkId": "c_grp_cms",
          "text": "Setting and controlling the canonical tag in the major content management systems, site builders, and SEO plugins.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-setup/",
          "pageTitle": "Canonical Tags by Platform | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_wordpress",
          "targetName": "Canonical Tags in WordPress",
          "targetId": "e_canonical_tags_in_wordpress",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_yoast_seo_canonical_urls",
          "targetName": "Canonical URLs in Yoast SEO",
          "targetId": "e_yoast_seo_canonical_urls",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_wix",
          "targetName": "Canonical Tags in Wix",
          "targetId": "e_canonical_tags_in_wix",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_squarespace",
          "targetName": "Canonical Tags in Squarespace",
          "targetId": "e_canonical_tags_in_squarespace",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_webflow",
          "targetName": "Canonical Tags in Webflow",
          "targetId": "e_canonical_tags_in_webflow",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_rank_math_canonical_urls",
          "targetName": "Canonical URLs in Rank Math",
          "targetId": "e_rank_math_canonical_urls",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_all_in_one_seo_canonical_urls",
          "targetName": "Canonical URLs in All in One SEO",
          "targetId": "e_all_in_one_seo_canonical_urls",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_drupal",
          "targetName": "Canonical Tags in Drupal",
          "targetId": "e_canonical_tags_in_drupal",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_joomla",
          "targetName": "Canonical Tags in Joomla",
          "targetId": "e_canonical_tags_in_joomla",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_ghost",
          "targetName": "Canonical Tags in Ghost",
          "targetId": "e_canonical_tags_in_ghost",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_hubspot",
          "targetName": "Canonical Tags in HubSpot CMS",
          "targetId": "e_canonical_tags_in_hubspot",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_blogger",
          "targetName": "Canonical Tags in Blogger",
          "targetId": "e_canonical_tags_in_blogger",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_framer",
          "targetName": "Canonical Tags in Framer",
          "targetId": "e_canonical_tags_in_framer",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_grp_ecommerce",
      "@type": "Taxonomy",
      "name": "Ecommerce Platforms",
      "description": "Canonical tags on hosted and self-hosted ecommerce platforms, where product and category URLs multiply.",
      "hasChunks": [
        {
          "chunkId": "c_grp_ecommerce",
          "text": "Canonical tags on hosted and self-hosted ecommerce platforms, where product and category URLs multiply.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-setup/",
          "pageTitle": "Canonical Tags by Platform | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_shopify",
          "targetName": "Canonical Tags in Shopify",
          "targetId": "e_canonical_tags_in_shopify",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_magento",
          "targetName": "Canonical Tags in Magento (Adobe Commerce)",
          "targetId": "e_canonical_tags_in_magento",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_woocommerce",
          "targetName": "Canonical Tags in WooCommerce",
          "targetId": "e_canonical_tags_in_woocommerce",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_bigcommerce",
          "targetName": "Canonical Tags in BigCommerce",
          "targetId": "e_canonical_tags_in_bigcommerce",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_grp_variants",
      "@type": "Taxonomy",
      "name": "URL Variants & Duplicate URLs",
      "description": "Where duplicate URLs come from in the first place: host and protocol variants, redirects, parameters, product variants, AMP and mobile URLs, and non-HTML files.",
      "hasChunks": [
        {
          "chunkId": "c_grp_variants",
          "text": "Where duplicate URLs come from in the first place: host and protocol variants, redirects, parameters, product variants, AMP and mobile URLs, and non-HTML files.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-issues/",
          "pageTitle": "Canonical Tag Issues and Fixes | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_redirects",
          "targetName": "Canonical Redirects",
          "targetId": "e_canonical_redirects",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_domain",
          "targetName": "Canonical Domain: www, Non-www, HTTP and HTTPS",
          "targetId": "e_canonical_domain",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_non_canonical_url",
          "targetName": "Non-Canonical URLs",
          "targetId": "e_non_canonical_url",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_http_header",
          "targetName": "Canonical in the HTTP Header",
          "targetId": "e_canonical_http_header",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_and_url_parameters",
          "targetName": "Canonical Tags and URL Parameters",
          "targetId": "e_canonical_and_url_parameters",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_and_product_variants",
          "targetName": "Canonical Tags for Product Variants",
          "targetId": "e_canonical_and_product_variants",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_and_amp_mobile_urls",
          "targetName": "Canonical Tags for AMP and Mobile URLs",
          "targetId": "e_canonical_and_amp_mobile_urls",
          "confidence": "declared"
        }
      ]
    },
    {
      "entityId": "e_grp_frameworks",
      "@type": "Taxonomy",
      "name": "Code & JavaScript Frameworks",
      "description": "Emitting canonical tags from your own code: plain PHP, Next.js, React, Nuxt, and other frameworks where nothing is automatic.",
      "hasChunks": [
        {
          "chunkId": "c_grp_frameworks",
          "text": "Emitting canonical tags from your own code: plain PHP, Next.js, React, Nuxt, and other frameworks where nothing is automatic.",
          "sourceUrl": "https://www.canonicaltag.com/canonical-setup/",
          "pageTitle": "Canonical Tags by Platform | CanonicalTag.com",
          "publisher": "CanonicalTag.com",
          "contentType": "definition"
        }
      ],
      "relations": [
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_nextjs",
          "targetName": "Canonical Tags in Next.js",
          "targetId": "e_canonical_tags_in_nextjs",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_react",
          "targetName": "Canonical Tags in React",
          "targetId": "e_canonical_tags_in_react",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_php",
          "targetName": "Canonical Tags in PHP",
          "targetId": "e_canonical_tags_in_php",
          "confidence": "declared"
        },
        {
          "predicate": "INCLUDES",
          "target": "e_canonical_tags_in_nuxt",
          "targetName": "Canonical Tags in Nuxt",
          "targetId": "e_canonical_tags_in_nuxt",
          "confidence": "declared"
        }
      ]
    }
  ]
}