Skip to content
SeenLens

Organization schema: how to add Organization and WebSite JSON-LD

Organization schema is a JSON-LD block that states who runs the site: name, URL, logo and profile links. WebSite schema names the site itself. SeenLens fails a page with no Organization, WebSite, Person or LocalBusiness type, and warns when the type only sits inside another entity. Adding both to the home page takes about 20 minutes.

By SeenLens · Last updated

Run the free 43-check scan on your page

What does the entity markup check test?

SeenLens collects the top level types in the page's JSON-LD. Items in an @graph array count as top level. It passes when one of them is an entity type: Organization, WebSite, Person, LocalBusiness or a close subtype such as Corporation, NGO, OnlineStore, Store or Restaurant.

Entity markup check results
What SeenLens findsResult
An entity type at the top levelPass
An entity type only inside another type, for example Organization as the publisher of an ArticleWarn
JSON-LD types, but none is an entity typeFail
No JSON-LD typesFail

SeenLens scans one URL. If you scan an inner page that has Article markup only, the check fails for that page. Google recommends Organization markup on the home page or on one page that describes the organization, so an inner page does not need its own copy. Scan the home page to test this check.

The effect on AI answers is unproven. The Ahrefs schema study found no significant citation change after pages added JSON-LD. The practical gains are a clear statement of the entity and Google features such as logo and site name.

What does a real Organization and WebSite block look like?

This is a trimmed copy of the block on the SeenLens home page. The @id values let other nodes refer to the entities.

JSON-LD on https://seenlens.com/ (trimmed)
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://seenlens.com/#organization",
      "name": "SeenLens",
      "url": "https://seenlens.com/",
      "logo": {
        "@type": "ImageObject",
        "url": "https://seenlens.com/icon",
        "width": 512,
        "height": 512
      },
      "email": "support@seenlens.com",
      "sameAs": [
        "https://github.com/seenlens",
        "https://x.com/seenlens_com",
        "https://dev.to/seenlens",
        "https://www.indiehackers.com/seenlens",
        "https://peerlist.io/seenlens/project/seenlens"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://seenlens.com/#website",
      "url": "https://seenlens.com/",
      "name": "SeenLens",
      "inLanguage": "en",
      "publisher": { "@id": "https://seenlens.com/#organization" }
    }
  ]
}

Google's Organization documentation lists no required properties and recommends as many relevant ones as you can supply, such as name, url, logo, sameAs, address, telephone and email. The logo must be at least 112 by 112 pixels, crawlable and indexable, and it must look right on a white background. For the site name, Google's WebSite markup needs name and url on the home page, and accepts alternateName as a short form.

Add sameAs links only to profiles you control that represent the same person or organization.

How can I check my page?

Terminal
curl -s https://example.com/ | grep -oE '"@type": ?"[A-Za-z]+"' | sort | uniq -c

Look for Organization or WebSite in the list. Or run the scan and read the evidence line.

How do I add Organization and WebSite schema?

Put both entities in one @graph on the home page. Keep the name the same as the name in your title, logo and social profiles.

Next.js App Router

Render the graph in the home page component, or in the root layout if you want it on every page. Reuse the escape from the add JSON-LD guide.

app/page.tsx
const site = "https://example.com";

const graph = {
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": site + "/#organization",
      name: "Example Co",
      url: site + "/",
      logo: site + "/logo.png",
      sameAs: ["https://www.linkedin.com/company/example"],
    },
    {
      "@type": "WebSite",
      "@id": site + "/#website",
      name: "Example Co",
      url: site + "/",
      publisher: { "@id": site + "/#organization" },
    },
  ],
};

WordPress

Yoast SEO documents that it outputs Organization (or Person) and WebSite pieces on every page, linked in one graph. Open the plugin's settings and fill in the organization name and logo, then check the page source for the values. The Yoast page does not say which settings feed which field, so verify the output.

Shopify

Shopify has no filter for Organization. Add a script tag to layout/theme.liquid. Use the json filter for text values. Check that shop.url prints your primary domain.

layout/theme.liquid
{% if template == 'index' %}
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": {{ shop.name | json }},
  "url": {{ shop.url | json }},
  "logo": "https://example.com/logo.png"
}
</script>
{% endif %}

Static sites

Paste the graph into the home page template. Use absolute URLs for every url, logo and @id.

How do I verify the fix?

  1. Run the curl command on the home page and look for the types.
  2. Test the URL in the Rich Results Test or the Schema Markup Validator.
  3. Scan the home page with SeenLens. The evidence line lists the entity types.

When can I ignore this check?

Ignore a failure on an inner page when your home page has the markup. Skip LocalBusiness or Person types that do not describe you. Do not invent profiles or addresses. This check has weight 4 in the structured data dimension.

Scan your page with SeenLens

Should Organization schema be on every page?

Should Organization schema be on every page?

No. Google recommends it on your home page or on a single page that describes your organization, such as an about page. Putting it on every page is allowed and some SEO plugins do so by default.

Which properties does Organization schema need?

Google lists no required properties. It recommends adding as many relevant ones as you can, and highlights name or alternateName, address or telephone, and url or logo.

Sources