by Nate Holman on September 26, 2020
/ 0 comments leave a reply
Last Updated September 26, 2020
The world of SEO is a pretty unique place to live in as a digital professional, as our livelihoods are more or less dictated by
a single company ok, let’s just call them a monopoly – so that means staying up to speed with whatever Google says is important.
Fortunately, as long as the search giant and its parent company Alphabet are working towards a better end product (their search engine, not one of the many other products they own), this correlates with staying at the forefront of digital trends and technology in general. For its part, Google Search is still invested in making the web better and in what keeps you, the end user, Googling.
One trend that’s driven more by making things easier for search bots to find and interpret your web content, though – not human users – is Schema markup, or structured data. Moz has a nice article explaining what structured data (Schema) is (“a mutual handshake between Google, Microsoft, Yahoo, and Yandex,”); I won’t get into that and assume you’ve heard something about it already. The big-picture takeaway is that as part of the semantic web, it’s here to stay.
What I want to focus on here, as Schema markup grows into an SEO “sub-discipline” if you will and more of us in the digital space are spending more time on this stuff, is this revelation that you can make use of the @id field to unify different markup types for richer context (!) and make your job a little bit easier.
With the WordPress platform, a lot of the Schema markup you’ll see on any page, using Google’s Structured Data Testing Tool or Rich Results test, is added ‘out of the box’ by one theme/plugin or another. E-commerce platforms like Shopify will do this too to a lesser degree.
Out of the box is fantastic when all I have to do is install an app or plugin and the search engines instantly get better context around what my business, product, recipe or event is about (to list a few common Schema types). An issue – a missed opportunity, at least – arises though in the common situation where you have multiple Schema types on a page added by apps/plugins, or by your theme, and context is missing between them.
Here’s the example Google itself uses in its official documentation,
From this vantage point, it is obviously way more beneficial for us across the board to “nest” markup types so that Google gets the most complete picture of your content: in the above screenshot, the nested markup tells Google bot clearly that this is a page with recipe markup also containing reviews and a video.
The leading WordPress plugin developer Yoast SEO understands this well and has this article on the subject. https://yoast.com/schema-org-is-hard-yoast-seo-makes-it-easy/#yst-the-id-is-the-glue
In short, and I’ll use their words here: when you have multiple markup types that you need to unify, the “@id” is the glue. “Without this nesting, a search engine doesn’t know how all these pieces relate to each other, and what the most important piece on a page is.” Yoast has updated their plugin to change how their Schema markup gets generated as a result.
So why is it worth nerding out about this?
It actually has a LOT of potential for practical applications when, for example, you need to get markup on a page that provides better, fuller context and/or generates rich results. I’ll do my best to break down how this works with an example.
The following will unite any schema markups on the page that contain this same ‘@id’:
Why the hash? Use #, + any value after the URL, simply to distinguish it as a unique identifier from the URL address. Add ‘#product’, for example, if you are unifying markup pieces that all have to do with your Product markup. #organization is also common, because we commonly see different pieces refer to a single business entity.
The web-savviest of us are starting to figure out the implications of more robust, unified structured data left and right. It can help your SEO today – and it’s not too hard to imagine it mattering more in the years ahead.
Here’s a case in point where @ID glue has come in handy – to help get Path Digital’s e-commerce clients review star ratings visible in search for product pages with reviews.
For Shopify, I tend to recommend the app Judge.me as the best reviews solution for SEO (no, they aren’t paying me to say that 🙂 ) but even though it’s super easy to install and set up, the ‘aggregateRating’ markup the app adds in .liquid with the sole intention of getting you rich snippets….
Doesn’t play well with Shopify’s “default” Product markup, which is missing “@id” (you can see this when you test structured data on basically any Shopify product page).
Here’s what that Judge.me JSON-LD addition looks like in code:
This won’t generate stars on its own. It needs to be richer and is missing required fields. As we’ve seen here lately, you need both the review provider’s markup + correct product Schema in order for stars to show in Google and get that nice little conversion rate boost.
But there’s a solution in the form of @id. To your already valid Product markup in .liquid, add
Voilà! Beautiful, unified product Schema markup.
And resulting star results:
I get it if you don’t want to roll up your sleeves, get into the backend of Shopify and wrestle with this beast yourself. So allow me to shamelessly plug Path Digital’s SEO services…
We work in e-commerce SEO every day, and are up to speed with Schema of all types and also see firsthand what else is working for e-commerce businesses on a daily basis. We help out agencies, too. Just send me your inquiry and I’ll be glad to take a look!
Generally speaking, WordPress is easier to work with when it comes to adding the Schema you build yourself. At the page level in WP, you can easily add standalone JSON-LD markup OR markup that unifies with what exists there already.
Go to the page editor for any page in WP>Pages – just be sure as the screenshot below shows to use the plain-text editor, not a page builder tool – and paste in your JSON-LD markup, starting with <script type=”application/ld+json”> and ending with </script>, below the page content.
Hit “Publish,” and you can then verify it is valid without errors (and, if applicable, glued/nested with “@id”) using the Structured Data Test Tool (better than the Rich Results test in my opinion, so I hope Google doesn’t end up deprecating it.)
Questions/feedback? Let me know in the comments!