DEV Community

Cover image for Organization Schema Markup: The Complete Guide to Structured Data for Business Identity
Roman Popovych
Roman Popovych

Posted on

Organization Schema Markup: The Complete Guide to Structured Data for Business Identity

Search your company name on Google. If a knowledge panel shows up on the right — logo, description, social links, founding date — that's Google's entity understanding of your organization. If it doesn't, or if it shows wrong information, structured data is one of the main ways to influence it.

Organization schema is different from most other schema types because it doesn't produce a rich result in the traditional sense. No stars, no accordion, no price display. What it does instead is establish your organization as a known, verified entity in Google's knowledge graph. That's less flashy but arguably more durable — it affects brand search appearance, trust signals, and how Google interprets everything else on your site.

What's covered here: the right subtype to use, the sameAs field which most implementations skip, how to link your organization to your website entity, and code for Next.js, React, and WordPress.


What Is Organization Schema Markup?

Organization is a schema.org type that describes a legal or recognized entity — a company, nonprofit, educational institution, government body, or any structured group. You implement it as JSON-LD in the <head> of your site, typically on the homepage or a dedicated About page.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Acme Corp",
  "url": "https://acmecorp.com"
}
Enter fullscreen mode Exit fullscreen mode

Unlike most schema types that describe individual pages, Organization schema describes the entity behind the site. You implement it once — usually on the homepage — and it applies globally to your brand's presence in Google's understanding.


Organization Subtypes: Which One to Use

Organization is the base type with many subtypes. Choosing the most specific applicable subtype signals more accurately what kind of entity you are:

Type Use when
Organization General catch-all — holding companies, nonprofits, clubs
Corporation Incorporated for-profit companies (LLC, Inc., Ltd.)
LocalBusiness Physical location open to customers — has its own rich results (separate guide)
EducationalOrganization Schools, universities, online education platforms
GovernmentOrganization Government agencies and bodies
MedicalOrganization Hospitals, clinics, healthcare providers
NGO Non-governmental organizations
NewsMediaOrganization News publishers and media companies
SportsOrganization Sports teams, leagues, clubs

For most software companies, SaaS products, and agencies: use Corporation.

For physical service businesses (restaurant, plumber, dentist): use LocalBusiness — it has dedicated rich results and its own field set covered in the next guide in this series.

When unsure: Organization is always valid. It's the safe choice.


What Organization Schema Actually Does

It doesn't generate a rich result. No visual enhancement in the snippet, no expanded display in search. If you're expecting something to show up differently in search after adding it — that's not how this one works.

The effect is more structural. When Google has consistent entity signals about your organization — from your website's schema, your social profiles, directories, press coverage — it builds a knowledge graph entry for you. That feeds into knowledge panel generation for branded searches, how your logo gets attributed in article results, and the trust layer that affects YMYL content evaluation.

The sameAs field specifically is the mechanism Google uses to merge separate web signals into a single entity. Without it, "Acme Dev on LinkedIn" and "acmedev.com" might as well be different things to the crawler. With sameAs linking them, they're confirmed as the same entity — and that confidence accumulates.

For sites in finance, health, legal, or any other area where E-E-A-T matters, a well-structured Organization schema is one of the few direct ways to communicate organizational trustworthiness through structured data rather than just hoping Google infers it from content signals.


The Complete Organization Schema

{
  "@context": "https://schema.org",
  "@type": "Corporation",
  "name": "Acme Development Ltd.",
  "legalName": "Acme Development Limited",
  "alternateName": "AcmeDev",
  "description": "We build fast, accessible web applications for scale-up teams. Specializing in React, Next.js, and Node.js architecture.",
  "url": "https://acmedev.com",
  "logo": {
    "@type": "ImageObject",
    "url": "https://acmedev.com/logo.png",
    "width": 400,
    "height": 100,
    "caption": "Acme Development logo"
  },
  "image": "https://acmedev.com/seo/og.jpg",
  "email": "hello@acmedev.com",
  "telephone": "+1-555-000-1234",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Tech Street",
    "addressLocality": "San Francisco",
    "addressRegion": "CA",
    "postalCode": "94105",
    "addressCountry": "US"
  },
  "foundingDate": "2019",
  "numberOfEmployees": {
    "@type": "QuantitativeValue",
    "value": 12
  },
  "areaServed": "Worldwide",
  "slogan": "Ship faster, break less.",
  "contactPoint": [
    {
      "@type": "ContactPoint",
      "telephone": "+1-555-000-1234",
      "contactType": "customer support",
      "availableLanguage": ["English"],
      "hoursAvailable": {
        "@type": "OpeningHoursSpecification",
        "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
        "opens": "09:00",
        "closes": "18:00"
      }
    }
  ],
  "sameAs": [
    "https://linkedin.com/company/acmedev",
    "https://github.com/acmedev",
    "https://twitter.com/acmedev",
    "https://www.crunchbase.com/organization/acmedev",
    "https://www.wikidata.org/wiki/Q12345678"
  ]
}
Enter fullscreen mode Exit fullscreen mode

Field Reference: Required, Recommended, and Optional

Field Type Priority Notes
name Text Required Legal or widely-known trading name
url URL Required Your canonical homepage URL
logo ImageObject Strongly recommended PNG/SVG, min 112×112px for knowledge panel
sameAs Array of URLs Strongly recommended Social and directory profiles — key for entity disambiguation
description Text Recommended 100–300 characters, what you do and for whom
email Text Recommended Public contact email
telephone Text Recommended E.164 format: "+15550001234"
address PostalAddress Recommended Required for LocalBusiness; optional for fully remote orgs
foundingDate Date or Year Recommended Year as "2019" or full date "2019-03-15"
legalName Text Optional Full registered legal name if different from trading name
alternateName Text Optional Common abbreviations or alternative names
contactPoint ContactPoint Optional Structured contact info with type and hours
numberOfEmployees QuantitativeValue Optional Signals company size
areaServed Text or Place Optional Geographic scope of service
slogan Text Optional Brand tagline — appears in some knowledge panel layouts

The sameAs Array: The Most Important Field You're Probably Skipping

sameAs is where most Organization schema implementations fall short. It's also where most of the SEO value lives.

The purpose of sameAs is entity disambiguation. When Google finds "Acme Development" mentioned on five different websites, it needs to know these all refer to the same organization. sameAs links your entity to its established profiles, giving Google a confidence map of your identity across the web.

Profiles to include (in priority order):

"sameAs": [
  "https://www.linkedin.com/company/your-company",
  "https://github.com/your-org",
  "https://twitter.com/your-handle",
  "https://www.crunchbase.com/organization/your-company",
  "https://www.youtube.com/@your-channel",
  "https://www.facebook.com/your-page",
  "https://www.wikidata.org/wiki/Q12345678",
  "https://en.wikipedia.org/wiki/Your_Company"
]
Enter fullscreen mode Exit fullscreen mode

The last two — Wikidata and Wikipedia — are the strongest authority signals Google uses for knowledge panel generation. If your organization has a Wikipedia or Wikidata entry, always include it. If it doesn't, focus on the professional directories (LinkedIn, Crunchbase) first.

Rules for sameAs URLs:

  • Use the profile's canonical URL, not a redirect or shortened link
  • All URLs must be publicly accessible
  • Don't include URLs that require login to view the profile
  • Each URL should point to a page that clearly and primarily represents your organization

Linking Organization to Your Site: WebSite Schema

Organization schema is most effective when combined with WebSite schema on the same page. Together they create a complete brand entity: what the organization is, and what website represents it.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Acme Development",
  "url": "https://acmedev.com",
  "potentialAction": {
    "@type": "SearchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "https://acmedev.com/search?q={search_term_string}"
    },
    "query-input": "required name=search_term_string"
  }
}
</script>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Corporation",
  "name": "Acme Development Ltd.",
  "url": "https://acmedev.com",
  "logo": {
    "@type": "ImageObject",
    "url": "https://acmedev.com/logo.png"
  },
  "sameAs": [...]
}
</script>
Enter fullscreen mode Exit fullscreen mode

Two separate script blocks on the same page — one for the site entity, one for the organization entity. Include both on your homepage.


Implementation in Next.js (App Router)

Organization schema belongs on the homepage and/or About page. In Next.js App Router, add it to the root layout.tsx if you want it site-wide, or to app/page.tsx for homepage-only:

// app/page.tsx (or app/layout.tsx for site-wide)

export default function HomePage() {
  const organizationSchema = {
    '@context': 'https://schema.org',
    '@type': 'Corporation',
    name: 'Acme Development Ltd.',
    url: 'https://acmedev.com',
    logo: {
      '@type': 'ImageObject',
      url: 'https://acmedev.com/logo.png',
      width: 400,
      height: 100,
    },
    description: 'We build fast, accessible web applications for scale-up teams.',
    email: 'hello@acmedev.com',
    foundingDate: '2019',
    sameAs: [
      'https://linkedin.com/company/acmedev',
      'https://github.com/acmedev',
      'https://twitter.com/acmedev',
    ],
  }

  const websiteSchema = {
    '@context': 'https://schema.org',
    '@type': 'WebSite',
    name: 'Acme Development',
    url: 'https://acmedev.com',
  }

  return (
    <>
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(organizationSchema) }}
      />
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(websiteSchema) }}
      />
      {/* page content */}
    </>
  )
}
Enter fullscreen mode Exit fullscreen mode

Place Organization schema in layout.tsx only if you want it present on every page. For most sites, it's more appropriate on the homepage and About page specifically — those are the pages Google associates most strongly with organizational identity.


Implementation in React (with react-helmet-async)

import { Helmet } from 'react-helmet-async'

const ORGANIZATION_SCHEMA = {
  '@context': 'https://schema.org',
  '@type': 'Corporation',
  name: 'Acme Development Ltd.',
  url: 'https://acmedev.com',
  logo: {
    '@type': 'ImageObject',
    url: 'https://acmedev.com/logo.png',
    width: 400,
    height: 100,
  },
  description: 'We build fast, accessible web applications for scale-up teams.',
  foundingDate: '2019',
  sameAs: [
    'https://linkedin.com/company/acmedev',
    'https://github.com/acmedev',
  ],
}

function HomePage() {
  return (
    <>
      <Helmet>
        <script type="application/ld+json">
          {JSON.stringify(ORGANIZATION_SCHEMA)}
        </script>
      </Helmet>
      {/* page content */}
    </>
  )
}
Enter fullscreen mode Exit fullscreen mode

Define ORGANIZATION_SCHEMA as a module-level constant — it doesn't change between renders and doesn't need to be inside the component function.


Implementation in WordPress

Add to functions.php, targeting the homepage and About page:

function add_organization_schema() {
  if ( ! is_front_page() && ! is_page( 'about' ) ) return;

  $schema = [
    '@context'     => 'https://schema.org',
    '@type'        => 'Corporation',
    'name'         => get_bloginfo( 'name' ),
    'description'  => get_bloginfo( 'description' ),
    'url'          => home_url( '/' ),
    'logo'         => [
      '@type' => 'ImageObject',
      'url'   => get_site_icon_url( 512 ) ?: get_header_image(),
    ],
    'email'        => 'hello@yoursite.com',
    'foundingDate' => '2020',
    'sameAs'       => [
      'https://linkedin.com/company/yourcompany',
      'https://github.com/yourorg',
      'https://twitter.com/yourhandle',
    ],
  ];

  echo '<script type="application/ld+json">' . wp_json_encode( $schema ) . '</script>';
}
add_action( 'wp_head', 'add_organization_schema' );
Enter fullscreen mode Exit fullscreen mode

Logo Requirements for Knowledge Panel

Google has specific requirements for the organization logo image. Using an undersized or incorrectly formatted logo won't cause errors, but it reduces the chance of your logo appearing in search results and knowledge panels:

Requirement Value
Minimum size 112×112 pixels
Maximum size 1000×1000 pixels recommended
Aspect ratio Ideally square (1:1) for knowledge panel; rectangular accepted
Format PNG, JPG, SVG
Background Must be visible on white background — avoid transparent PNG with dark logo only
Crawlable Must be accessible without auth

The image should show the logo clearly, with minimal padding. Google uses this as the brand image in knowledge panels, so a tight crop on the actual logo mark works better than a wide banner image.


The 5 Most Common Organization Schema Mistakes

1. Missing or incomplete sameAs

The most common omission. Without sameAs, Google has no cross-reference to verify your entity. Even linking just LinkedIn and GitHub is significantly better than no sameAs at all.

2. Using Organization when LocalBusiness is more appropriate

If you have a physical location where customers visit — a store, office, clinic, restaurant — LocalBusiness is the correct type. It enables dedicated rich results (address, hours, map pin) that Organization does not. Using the wrong type means leaving those rich results on the table.

3. name mismatch across pages and profiles

Your name in Organization schema should match exactly what's on your LinkedIn Company Page, Crunchbase, Google Business Profile, and other authoritative sources. Variations ("Acme Dev" vs "Acme Development" vs "Acme Development Ltd.") confuse Google's entity matching. Pick one canonical name and use it consistently everywhere.

4. Putting Organization schema on every page

Organization schema describes the entity behind the site. It belongs on the homepage and About page. Adding it to every product page, blog post, and tool page isn't harmful per se, but it's redundant and dilutes the clarity of what each page is about.

5. telephone not in E.164 format

// Wrong  Google may not parse these correctly
"telephone": "555-000-1234"
"telephone": "(555) 000-1234"

// Correct  E.164 international format
"telephone": "+15550001234"
Enter fullscreen mode Exit fullscreen mode

How to Get (or Influence) a Google Knowledge Panel

A Knowledge Panel is not something you directly request or create — Google generates it based on entity signals it collects from across the web. Organization schema is one of those signals. Others include:

  • Google Business Profile — the most direct signal for local organizations
  • Wikipedia / Wikidata entry — the strongest authority signal; if you're eligible, create one
  • Crunchbase profile — for companies and startups
  • Consistent NAP (Name, Address, Phone) across directory sites
  • Press mentions — third-party editorial coverage linking to your site
  • Verified social profiles — LinkedIn Company Page, Twitter/X, YouTube channel

Organization schema with a complete sameAs array is how you connect all of these existing signals to your website. It tells Google: "These profiles are all the same entity as the site you're crawling right now."

Timeline: after implementing well-structured Organization schema with a complete sameAs array, knowledge panel signals can take 4–12 weeks to be reflected in search results. There's no manual trigger — it depends on Google's crawl frequency and entity processing pipeline.


Summary

Organization Schema is the foundation of your brand's presence in Google's knowledge graph. It doesn't produce a flashy rich result, but it does something more durable: it establishes your entity as a known, verified thing with verified connections to trusted platforms.

The practical checklist:

  • Use the most specific subtype: Corporation, LocalBusiness, NGO, etc.
  • Always include sameAs with every public profile your organization maintains
  • logo should be at least 112×112px, visible on white background
  • Define once — on homepage and About page — not on every page
  • Combine with WebSite schema on the same page for complete brand entity coverage
  • Use E.164 format for telephone: "+15550001234"

If you want to generate Organization schema through a form interface with live preview and field validation, there's a free generator here: Organization Schema Generator. No signup, no backend, runs locally in the browser.


Implementing Organization schema for a multi-location business or a brand with several sub-brands? Drop a comment — the entity hierarchy cases are genuinely complex and worth unpacking.

Top comments (0)