Homepage schema markup best practices

Your homepage is one of your most visited webpages on your website – both from humans as well as crawlers.

This makes the homepage the most important page on a website for schema markup.

In this article, you will learn how you should be marking up you or your client’s homepage.

🎓 If you’re new to schema markup and semantic SEO, I highly recommend you read my three-part series starting with ‘Schema markup guide: Everything you’ll need to know to be prepared for the future of semantic search’. For example, it’ll cover foundational concepts such as what schema markup is, what the JSON-LD syntax is, and what schema.org vocabulary refers to.

What schema markup should a homepage have?

Each homepage should have 3 schema.org Types marked up with schema.org vocabulary:

  • WebPage
  • WebSite
  • Organization (or a subtype of Organization)

Each of these represent individual entities but the correct way to mark up these entities is to connect them to each other.

Doing so will tell Google how they’re related to each other. That is, your homepage is a webpage which is part of a website that is owned, managed, and published by a type of business entity.

To do this, you’ll be joining WebPage, WebSite and Organization schema together using a variety of schema.org properties.

But before we do so, let’s first get the schema markup correct for each of these entities individually.

If you already have schema markup for WebPage, WebSite and Organization, click here to skip to the part where you’ll join them together to form a page-level knowledge graph.

How to mark up WebPage schema for your homepage

First of all, you will declare the entity as WebPage Type using the following JSON-LD:

"@type":"WebPage"

Now you can describe the basic information of the homepage, namely its name (page title) and its url, like so.

"@type":"WebPage",
"name":"ANZ Personal – Bank accounts, home loans, credit cards & more | ANZ",
"url":"https://www.anz.com.au/personal/"

You may also add the description property if you like but I generally find this information redundant.

For example, I’ve taken the ANZ homepage’s meta description and used it as the value for the description property for the entity.

"@type":"WebPage",
"name":"ANZ Personal – Bank accounts, home loans, credit cards & more | ANZ",
"url":"https://www.anz.com.au/personal/"
"description":"ANZ offers a range of personal banking services such as internet banking, bank accounts, credit cards, home loans, personal loans, travel and international, investment and insurance. Learn about easy and secure ways to manage your money."

And for now, that’s all you need to mark up.

We’ll return to the WebPage entity later on to make it more context-rich, but for now, let’s move onto WebSite schema.

How to mark up WebSite schema

Did you know that Google uses the values you provide in WebSite schema markup to populate the site name in its SERPs (source: Google Search Central).

This is why I recommend adding the WebSite entity to your homepage markup.

To do so, you’ll be using the WebSite schema.org Type, like so:

"@type":"WebSite"

Now you can describe the basic information of the website such as its name and URL.

"@type":"WebSite",
"name":"ANZ",
"url":"https://www.anz.com.au/personal/"

Next, let’s use schema markup to describe the brand, business, or organization the website represents.

How to mark up Organization schema on your homepage

Start with the Organization schema.org Type.

"@type":"Organization"

If you like, you can use a more specific schema.org Type that reflects the type of business you’re marking up.

For example, you can choose from:

  • OnlineBusiness
  • LocalBusiness
  • Corporation
  • MedicalOrganization

Next, use the properties available for your chosen Organization schema.org Type to describe unique facts about the business.

As a start, I recommend using the following properties:

  • name
  • legalName
  • url
  • @id
  • sameAs

For a list of recommended schema properties to use, read my guide ‘How to use Organization schema correctly’.

"@type":"Organization",
"name":"ANZ",
"legalName":"Australia And New Zealand Banking Group Limited",
"url":"https://www.anz.com.au/personal/",
"@id":"https://www.anz.com.au/",
"sameAs"[
"https://abr.business.gov.au/ABN/View/11005357522",
"https://www.facebook.com/ANZAustralia"]

How to join WebPage, WebSite and Organization schema together

So far, you have three individual entities described with schema markup.

WebPage:

{
"@type":"WebPage",
"name":"ANZ Personal – Bank accounts, home loans, credit cards & more | ANZ",
"url":"https://www.anz.com.au/personal/",
"description":"ANZ offers a range of personal banking services such as internet banking, bank accounts, credit cards, home loans, personal loans, travel and international, investment and insurance. Learn about easy and secure ways to manage your money."
}

WebSite:

{
"@type":"WebSite",
"name":"ANZ",
"url":"https://www.anz.com.au/personal/"
}

Organization:

{
"@type":"Organization",
"name":"ANZ",
"legalName":"Australia And New Zealand Banking Group Limited",
"url":"https://www.anz.com.au/personal/",
"@id":"https://www.anz.com.au/",
"sameAs":[
"https://abr.business.gov.au/ABN/View/11005357522",
"https://www.facebook.com/ANZAustralia"]
}

The job to be done is to connect them together so that Google sees all three entities as being related to each other.

To join WebPage to WebSite schema, use the isPartOf property like so:

{
"@type":"WebPage",
"name":"ANZ Personal – Bank accounts, home loans, credit cards & more | ANZ",
"url":"https://www.anz.com.au/personal/",
"description":"ANZ offers a range of personal banking services such as internet banking, bank accounts, credit cards, home loans, personal loans, travel and international, investment and insurance. Learn about easy and secure ways to manage your money.",
"isPartOf":{
"@type":"WebSite",
"name":"ANZ",
"url":"https://www.anz.com.au/personal/"
}
}

In order to connect Organization schema with the other 2 entities, use the publisher property to nest Organization within WebSite schema, like so:

{
"@type":"WebPage",
"name":"ANZ Personal – Bank accounts, home loans, credit cards & more | ANZ",
"url":"https://www.anz.com.au/personal/",
"description":"ANZ offers a range of personal banking services such as internet banking, bank accounts, credit cards, home loans, personal loans, travel and international, investment and insurance. Learn about easy and secure ways to manage your money.",
"isPartOf":{
"@type":"WebSite",
"name":"ANZ",
"url":"https://www.anz.com.au/personal/",
"publisher":{
"@type":"Organization",
"name":"ANZ",
"legalName":"Australia And New Zealand Banking Group Limited",
"url":"https://www.anz.com.au/personal/",
"@id":"https://www.anz.com.au/",
"sameAs":[
"https://abr.business.gov.au/ABN/View/11005357522",
"https://www.facebook.com/ANZAustralia"]
}
}
}

This will create a relationship between the webpage (the homepage), the website itself, and the business behind the website and homepage.

Now that you’ve successfully created a knowledge graph of these 3 entities, let’s return to the WebPage schema to make it even more descriptive because what you’ve done so far, Yoast or Rankmath can do easily.

Let’s get into the advanced stuff which will help Google understand your homepage even better.

How to describe important homepage elements with schema markup

Schema markup is an efficient way to turn unstructured data such as text, images and embedded videos into structured data.

The benefit of structured data such as the JSON-LD syntax is that machines understand structured data far easily than unstructured data.

Your homepage is one of your most visited webpages on your website – both from humans as well as crawlers. And this is why it is so important to get your homepage structured data on point.

First of all, determine what things are the important elements of your homepage.

As a rule of thumb, I recommend picking things, products, internal links, and services that are core to your business.

You could, in theory, describe everything and anything but this takes up way too much time for very little reward.

So stick to the core things that make your business revenue.

Once you’ve decided what these core things are, you can use the about or mentions properties to reference what these things, products, concepts, or services are by tying them to both Wikipedia and Wikidata sources.

💡 I’ve covered how to use Wikipedia and Wikidata for the about and mentions properties over at ‘How to implement semantic SEO with JSON-LD’.

For example, when I look at the ANZ homepage, a few key things jump out to me as being core to their business.

Personal banking is definitely core to their business, as is B2B banking, and Commercial banking.

But given personal banking is their homepage and ANZ has listed 9 solutions above-the-fold, this tells me these 9 things are important to their line of business. Therefore, I will be marking up a total of 9 entities and adding them as properties nested within WebPage schema.

The 9 entities will comprise of:

  1. Bank accounts
  2. Credit cards
  3. Home loans
  4. Business
  5. Personal loans
  6. Insurance
  7. Investing and super
  8. Travel and international
  9. Financial Wellbeing

To do this, I’ll add the mentions item property to WebPage schema and list all 9 WebPages that are linked from the homepage.

Then within each of these WebPages, I can also nest mentions and/or about property to provide further context as to what each of these WebPage entities are about.

{
"@type":"WebPage",
"name":"ANZ Personal – Bank accounts, home loans, credit cards & more | ANZ",
"url":"https://www.anz.com.au/personal/",
"description":"ANZ offers a range of personal banking services such as internet banking, bank accounts, credit cards, home loans, personal loans, travel and international, investment and insurance. Learn about easy and secure ways to manage your money.",
"mentions":[
{
"@type":"WebPage",
"url":"https://www.anz.com.au/personal/bank-accounts/",
"@id":"https://www.anz.com.au/personal/bank-accounts/",
"about":{
"@type":"Thing",
"name":"Bank account",
"@id":"https://www.wikidata.org/entity/Q676459",
"sameAs":"https://en.wikipedia.org/wiki/Bank_account"
},
"mentions":[
{
"@type":"Thing",
"name":"Transaction account",
"@id":"https://www.wikidata.org/entity/Q695430",
"sameAs":"https://en.wikipedia.org/wiki/Transaction_account"
},
{
"@type":"Thing",
"name":"Time deposit",
"@id":"https://www.wikidata.org/entity/Q640285",
"sameAs":"https://en.wikipedia.org/wiki/Time_deposit",
"alternateName":"Term deposit"
}
]
}
],
"isPartOf":{
"@type":"WebSite",
"name":"ANZ",
"url":"https://www.anz.com.au/personal/",
"publisher":{
"@type":"Organization",
"name":"ANZ",
"legalName":"Australia And New Zealand Banking Group Limited",
"url":"https://www.anz.com.au/personal/",
"@id":"https://www.anz.com.au/",
"sameAs":[
"https://abr.business.gov.au/ABN/View/11005357522",
"https://www.facebook.com/ANZAustralia"]
}
}
}

When done, a knowledge graph of interconnected entities are formed, looking like so:

This sure beats the original knowledge graph!

Or god-forbid! No schema markup on a homepage.

Don’t want to write JSON-LD from scratch?

No stress! I’ve got you!

Check out my editable ad 100% customizable structured data templates for homepages – now available for $30 on Gumroad.

Similar Posts