Back to blog
5 min read SEO

Structured data and Open Graph: rich results and share cards

Why some search results show stars, prices and opening hours, and why your link in WhatsApp is sometimes no more than a bare blue line.

Structured data and Open Graph: rich results and share cards

Some search results look richer than others. Stars with a rating, a price, opening hours, a recipe photo, a row of expandable questions. Those are not adverts and you cannot buy them. They appear because that site wrote down, literally in its source, what the data on the page means.

The same goes for the card that appears when someone pastes your link into WhatsApp or LinkedIn. That is no accident either. This article covers the two kinds of markup behind it: structured data for the search results, and Open Graph for sharing. They are the checks a report lists under “Structured data”.

Structured data: explaining your page in machine language

A search engine reads your page as text and then has to guess what is what. If it says “450 euro”, is that a price, a discount or a fine? If it says “4.8”, is that a rating or a version number?

With structured data there is no guessing. In a block of JSON-LD at the bottom of your page you state that this is a LocalBusiness, with this name, this address, these opening hours and this rating. Google reads that literally, and it is the condition for being eligible for a rich result.

Note the word “eligible”. Markup is not a guarantee: Google decides for itself whether to show it. What is certain is the reverse: without markup you never get it.

Use JSON-LD rather than microdata. Microdata is the older approach, with the data woven through your HTML. It still works, but it breaks with every change to your layout, and Google says clearly in its documentation on structured data that JSON-LD is preferred. Our report therefore treats microdata as half a solution.

Which types you need

Start with the type that describes your business. For a shop, a practice or a builder that is LocalBusiness, with address, phone number and opening hours. For a service provider with no public premises, Organization is enough. Get that right once on your homepage and you have the foundation.

After that, per kind of page. A webshop puts Product on every product page, with price and availability, and that is what produces the price in the search result. A blog puts Article on each post. If your site has several levels, BreadcrumbList is worth the effort: your breadcrumb trail then appears in the result instead of a bare URL.

Two warnings. You may only mark up ratings that genuinely appear on the page and come from real customers; invented stars are grounds for a manual action. And FAQ markup has done almost nothing since 2023: Google now shows those expandable questions for only a handful of authoritative sites. You may leave it in place, but expect nothing from it.

Invalid is the same as absent

A block of structured data is JSON, and JSON is strict. One comma too many, one quotation mark left open, and Google ignores the entire block. Not partially: entirely.

That happens more often than you would think, usually because a company name with an apostrophe was not escaped properly, or because two plugins each add their own block and something ends up duplicated. Check it after every big change with Google’s Rich Results Test. Our report flags it too: a block that cannot be read is counted as a fault, not as present.

Open Graph: what your link looks like when shared

Paste a link into WhatsApp, LinkedIn, Facebook or Slack and a card appears: an image, a title and a line of text. That card comes from three tags in your <head>:

  • og:title, the headline on the card. Often shorter than your page title, because your company name does not need to trail it here.
  • og:description, one sentence that earns the click.
  • og:image, the picture. Use 1200 by 630 pixels; anything smaller becomes a little square beside the text instead of a wide image.

With those missing, the platform scrapes together whatever it can find. Usually that is your logo or the first image on the page, and sometimes nothing at all: a bare blue link among posts that do have a picture. The difference in click-through is large and the fix takes fifteen minutes.

Think of that image as the cover of your page. A photo with a face in it performs better than a screenshot, and text inside the image is often too small to read on a phone.

Twitter Card

X has its own set of tags, of which twitter:card is the main one. Without them X falls back on your Open Graph tags, and that usually works out. So this is a refinement rather than a problem. If you have an active account and share your own pages there, summary_large_image is the setting you want: it gives the wide image instead of the small thumbnail.

What you can do today

  • Paste your homepage link into a WhatsApp conversation with yourself and see what card appears.
  • Run your most important page through Google’s Rich Results Test and see whether it reports errors.
  • Check that your homepage carries an Organization or LocalBusiness block with the right address and opening hours.
  • Make one sharing image of 1200 by 630 and attach it as og:image to your most important pages.
  • If your markup contains stars, confirm those ratings genuinely appear on the page.

Want all of this checked in one go? The free SEO check shows you which types were found and which tags are missing.

Newsletter Signup

Get the latest insights on web development, AI, and digital marketing delivered to your inbox.