modern seo

Organization sameAs

MetricSpot counts the `sameAs` URLs in your Organization JSON-LD. Each link merges your brand entity in Google's Knowledge Graph and AI agent indexes.

What this check does

Parses Organization (or LocalBusiness, Corporation) JSON-LD on the page and counts the entries in its sameAs array. sameAs is a list of canonical URLs that refer to the same real-world entity — your LinkedIn company page, your X / Twitter profile, your Wikipedia page, your Crunchbase profile, your YouTube channel. The check expects at least three entries and ideally five-plus.

Why it matters

Google’s Knowledge Graph is an entity database, not a page database. When it sees sameAs: ["https://www.linkedin.com/company/acme", "https://x.com/acme", "https://en.wikipedia.org/wiki/Acme"], it merges all of those profiles + your site into a single entity node — which is what powers Knowledge Panels, brand carousels, and “Acme” autocompletes. Without sameAs, your brand is fragmented: Google sees a website, LinkedIn sees a company page, X sees a handle, and nothing connects them.

AI agents use the same scaffolding for citation provenance. When Perplexity or ChatGPT cite a source, they prefer entities they can resolve — a site whose Organization schema reconciles cleanly with LinkedIn, Wikipedia, and Crunchbase gets cited as a known brand. A site with no sameAs is treated as anonymous.

How to fix it

Add an Organization JSON-LD block to your home page (and ideally every page, via a shared layout) with a populated sameAs array. Each URL must be the canonical profile, not a shortened or tracking-laden link.

Minimal Organization with sameAs:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Acme Corp",
  "url": "https://acme.example",
  "logo": "https://acme.example/logo.png",
  "sameAs": [
    "https://www.linkedin.com/company/acme-corp",
    "https://x.com/acmecorp",
    "https://www.youtube.com/@acmecorp",
    "https://github.com/acme",
    "https://www.crunchbase.com/organization/acme"
  ]
}
</script>

Fuller version with founder, contact point, and additional sameAs targets:

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Acme Corp",
  "alternateName": "Acme",
  "url": "https://acme.example",
  "logo": "https://acme.example/logo.png",
  "description": "Acme builds developer tools for distributed systems.",
  "foundingDate": "2019-04-01",
  "founder": {
    "@type": "Person",
    "name": "Jane Doe",
    "url": "https://acme.example/about/jane"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "email": "hello@acme.example",
    "contactType": "customer support"
  },
  "sameAs": [
    "https://www.linkedin.com/company/acme-corp",
    "https://x.com/acmecorp",
    "https://www.facebook.com/acmecorp",
    "https://www.youtube.com/@acmecorp",
    "https://github.com/acme",
    "https://www.crunchbase.com/organization/acme",
    "https://en.wikipedia.org/wiki/Acme_Corp"
  ]
}

Which profiles to include. Prioritize, in rough order: Wikipedia (single biggest entity signal), LinkedIn company page, X / Twitter, YouTube, Crunchbase, GitHub (for dev-tools brands), Bloomberg / Reuters profile, Wikidata entry. Skip dead profiles — an empty Facebook page hurts more than the link helps.

Next.js — inject in the root layout:

import Script from "next/script";

export default function RootLayout({ children }) {
  const org = {
    "@context": "https://schema.org",
    "@type": "Organization",
    name: "Acme Corp",
    url: "https://acme.example",
    logo: "https://acme.example/logo.png",
    sameAs: [
      "https://www.linkedin.com/company/acme-corp",
      "https://x.com/acmecorp",
      "https://github.com/acme"
    ]
  };
  return (
    <html>
      <head>
        <Script id="ld-org" type="application/ld+json">
          {JSON.stringify(org)}
        </Script>
      </head>
      <body>{children}</body>
    </html>
  );
}

Astro — emit from BaseLayout.astro:

---
const org = { "@context": "https://schema.org", "@type": "Organization", /* … */ };
---
<script type="application/ld+json" set:html={JSON.stringify(org)} />

WordPress — Yoast SEO → Settings → Site representation → “Organization”, then fill the social-profile fields under General → Site info. Yoast emits the full Organization schema with sameAs automatically. Rank Math has the same flow under Titles & Meta → Local SEO.

After shipping, validate with Schema Markup Validator and confirm Google has picked it up in Search Console’s Enhancements → Sitelinks searchbox / Logos report. See also: organization schema, trust pages.

Frequently asked questions

Does the order of sameAs URLs matter?

No. It’s a set, not an ordered list. Google and AI agents treat the array as unordered — what matters is that each URL resolves to a canonical profile that confirms the entity.

Should I include personal social profiles for the founder?

Not in the Organization’s sameAs. Put founder profiles in a separate Person schema (or on the about page) and link Organization → founder → Person. Mixing personal LinkedIn into an Organization sameAs confuses entity resolution.

What if my brand doesn’t have a Wikipedia page yet?

Skip it — including a non-existent or low-quality Wikipedia URL is worse than omitting it. The Wikipedia signal is huge when you qualify (notable, sourced), but you can’t game it; focus on the profiles you do control. Once you cross the notability threshold, a Wikipedia page tends to appear organically and you can add it then.

Sources

Last updated 2026-05-11