Skip to contentSkip to main navigation Skip to footer

JSON-LD Structured Data

Squirrly SEO JSON-LD Structured Data screen on a laptop

Squirrly SEO adds JSON-LD structured data to every page from the settings in Squirrly > Technical SEO > Rich Snippets, and picks the schema type of each page from Automation. This guide covers the Rich Snippets tabs, the schema type per post type, validation and custom JSON-LD.

The screenshots and the code come from demo.squirrly.co, a test store for cat food, with Squirrly SEO 14.2.10 and the Advanced Pack 2.5.12.

What Squirrly adds to the page

Squirrly writes one <script type="application/ld+json"> block in the page head, with the schemas of that page in an @graph. Google reads it for rich results like breadcrumbs, product prices and article data.

This is the block Squirrly added to the demo product “Chicken Chunks in Gravy Wet Cat Food, 85 g”, with nothing typed by hand:

{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Product",
      "@id": "https://demo.squirrly.co/product/chicken-chunks-in-gravy-wet-cat-food-85g/#Product",
      "url": "https://demo.squirrly.co/product/chicken-chunks-in-gravy-wet-cat-food-85g/",
      "name": "Chicken Chunks in Gravy Wet Cat Food, 85 g",
      "description": "Bite-sized chicken chunks in a pourable gravy, in a single 85 g tear-open pouch. Squeeze into a bowl and serve at room temperature.",
      "sku": "DEMO-002",
      "offers": {
        "@type": "Offer",
        "url": "https://demo.squirrly.co/product/chicken-chunks-in-gravy-wet-cat-food-85g/",
        "priceSpecification": {
          "@type": "UnitPriceSpecification",
          "price": "1.99",
          "priceCurrency": "RON",
          "valueAddedTaxIncluded": false
        },
        "availability": "https://schema.org/InStock",
        "priceValidUntil": "2027-11-02"
      },
      "image": {
        "@type": "ImageObject",
        "@id": "https://demo.squirrly.co/product/chicken-chunks-in-gravy-wet-cat-food-85g/#5d5865ae75",
        "url": "https://demo.squirrly.co/storage/2026/11/DEMO-002.jpg",
        "width": 1080,
        "height": 720
      }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://demo.squirrly.co/product/chicken-chunks-in-gravy-wet-cat-food-85g/#breadcrumblist",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "item": {
            "@id": "https://demo.squirrly.co",
            "name": "Whisker Bowl Demo | Cat food, recipes and feeding guides"
          }
        },
        {
          "@type": "ListItem",
          "position": 2,
          "item": {
            "@id": "https://demo.squirrly.co/product-category/wet-food/",
            "name": "Wet Food"
          }
        },
        {
          "@type": "ListItem",
          "position": 3,
          "item": {
            "@id": "https://demo.squirrly.co/product/chicken-chunks-in-gravy-wet-cat-food-85g/",
            "name": "Chicken Chunks in Gravy Wet Cat Food, 85 g"
          }
        }
      ]
    }
  ]
}

The price, the SKU and the stock status come from WooCommerce. The breadcrumb follows the product category, Wet Food. A blog post on the same site, “How to feed multiple cats with different diets”, gets an Article schema with the headline, the dates, the featured image and the author instead.

The Rich Snippets screen puts it this way: once the JSON-LD validator says all is good, it’s up to Google to decide if it shows rich snippets for your URLs.

Where to find it

The settings live in Squirrly > Technical SEO > Rich Snippets. The menu item shows only when JSON-LD Structured Data is on in Squirrly > All Features. The SEO Recommended Mode and SEO Expert Mode of the onboarding turn it on.

Squirrly SEO All Features cards for JSON-LD Structured Data, Personal Brand Rich Snippets and Local SEO
On the demo, JSON-LD Structured Data is on, while Personal Brand Rich Snippets and Local SEO are off.

Some tabs appear only when the switch or the plugin they belong to is on:

TabShows when
CompanyAlways
Personal Brand / AuthorPersonal Brand Rich Snippets is on in All Features
WooCommerceWooCommerce is active
Local SEO, GEO Location, Opening Hours, Local RestaurantLocal SEO is on in All Features
More Json-LD SettingsAlways
AdvancedSEO Expert is selected in the Squirrly top bar

Company

The Company tab builds the Organization schema for the whole site. The screen warns “ONLY use this if you have a company”.

  1. Go to Squirrly > Technical SEO > Rich Snippets and open Company.
  2. Type Your Organization Name, for example the legal name of the business.
  3. Leave Company URL empty if it’s the website URL.
  4. Click Select Image next to Logo URL and pick the logo from the Media Library.
  5. Write a Short Description. The field asks for 20 to 50 words.
  6. Click Save Settings.
Squirrly SEO Rich Snippets Company tab with organization name, URL, logo and description
The Company tab on the demo store, filled in with the store name, URL, logo and a short description.

With the Advanced Pack installed, the Organization schema isn’t published while the name is empty. That’s why the demo home page has only a WebSite schema. Without the Pack, Squirrly uses your WordPress Site Title as the name.

The profiles from Social Media Accounts go into the sameAs list of the same schema.

Personal Brand / Author

This tab builds a Person schema for a personal site. You can use it next to the Company tab.

  1. Go to Squirrly > All Features and turn on Personal Brand Rich Snippets.
  2. Open Squirrly > Technical SEO > Rich Snippets > Personal Brand / Author.
  3. Fill in Your Name, Job Title, Contact Phone and Short Description.
  4. Pick the photo with Select Image next to Logo URL.
  5. Click Save Settings.

If the switch is on and Your Name is empty, the tab says so. With the Pack, no Person schema goes out. Without it, the Person schema uses the Site Title.

Set this person as a global author

Turn on Set this person as a global author to “Overwrite the posts/pages author(s) with this author in Json-LD.” Every article then names this person as its author in the schema.

Leave it off on a site where each writer signs their own posts. On the demo it’s off, so the Article schema of each post names the WordPress user who wrote it, “calin”.

Local SEO

Turn on Local SEO in Squirrly > All Features to get four more tabs. They add the address, the map position and the opening hours to the Organization schema.

  1. Open Squirrly > Technical SEO > Rich Snippets > Local SEO.
  2. Fill in Address, City, County, Country and Postal Code.
  3. Add the Contact Phone and pick the Contact Type, for example Customer Service, Sales or Reservations.
  4. Click Save Settings.

Squirrly turns the country into a two-letter ISO code for addressCountry. Special features for Local SEO lists the rest.

GEO Location

The GEO Location tab takes the latitude and longitude of the store under GEO Settings. The link under the label opens latlong.net, which turns an address into coordinates.

The tab also links the file /locations.kml on your domain, which you can import into Google Earth. On the demo, where Local SEO is off, the file has no location in it.

Opening Hours

Each day of the week has an Opens and a Closes field, in the 24-hour format the placeholders show (08:00 and 23:00).

Local Restaurant

The screen says “ONLY use this if you have a restaurant, pizza place, bar, pub, etc. Otherwise, leave blank.”

FieldWhat it adds
Price RangeThe price level of the menu
Serves CuisineThe type of food, as text
Menu LinkThe URL of your online menu
Accept ReservationsNo or Yes

WooCommerce

The WooCommerce tab shows only on a site with WooCommerce. It controls the Product schema of every product page.

OptionWhat it doesDefault
Add Support For WoocommerceAdds the product and order data to the schemaOn
Include Product Searches In SitemapThe same switch as Automation > Search > Include In Sitemap. Shows only when the sitemap is onFollows Automation
Add Custom Data for WooCommerce ProductsIncludes extra product data in the schema: MPN, ISBN, EAN, UPC, GTIN, Brand and ReviewOn
Add Default Data for Woocommerce ProductsFills Offers, Sku and MPN when a product doesn’t have them. A product with no reviews gets no rating, because Google doesn’t allow made-up onesOff

The product brand comes from WooCommerce Brands, part of WooCommerce since version 9.6, when the product has one. How to Add WooCommerce Product Brands in JSON-LD has the full order.

With custom data on, the product editor gets five fields on the Inventory tab: MPN, GTIN, EAN (GTIN-13), UPC (GTIN-12) and ISBN. Brand Name goes on the Advanced tab. How to add WooCommerce product brands in JSON-LD covers brands from other plugins.

The More Json-LD Settings tab has two switches. Add Breadcrumbs in Json-LD is on by default and adds a BreadcrumbList with all the parent categories of the page.

The trail follows the Primary Category of the post. Set it in the SEO Snippet box of the post, on the Rich Snippets tab, where the field says “Set the Primary Category for Breadcrumbs.” On the demo product above, the trail is the home page, Wet Food, then the product.

Remove other Json-LD from page

Remove other Json-LD from page is off by default. Turn it on to “Clear the Json-LD from other plugins and theme to avoid duplicate schemas.”

The demo product page shows why it exists. With the switch off, the page has Squirrly’s block plus a second JSON-LD script in the footer, added by another plugin, with a second Product and a second BreadcrumbList.

Before you turn it on, check that no other plugin adds a schema you want to keep, such as reviews or events. Once it’s on, only Squirrly’s JSON-LD stays on the page. Squirrly SEO and Schema Pro answers the question for that plugin.

Advanced: title and description lengths

Switch to SEO Expert in the Squirrly top bar to see the Advanced tab.

FieldWhat it doesDefault
JSON-LD Title LengthCuts the headline and name in the schema at this many characters75
JSON-LD Description LengthCuts the description in the schema at this many characters320

Squirrly cuts at the last full word before the limit. Set a field to -1 and the text goes into the schema whole.

Set the schema type for each post type

The Rich Snippets tabs hold the data about you. The type of schema each page gets is set per post type, in Automation.

  1. Go to Squirrly > Optimize > Automation.
  2. In Automation – Configurations, click the post type, for example Post or Product.
  3. Check that Load JSON-LD Structured Data is on.
  4. Pick one or more types in JSON-LD Type.
  5. Click Save Settings.
Squirrly SEO Automation Load JSON-LD Structured Data switch and JSON-LD Type field
The JSON-LD settings of the Home post type in Automation.
Post typeDefault JSON-LD Type
HomeWebsite
PostArticle
PageWebsite
ProductProduct
Categories, tags and the other post typesWebsite (JSON-LD is off for categories and tags)

The free plugin lists 30 types, from about page and article to video game and website. Pick Video for a post type where every page has a video (see JSON-LD Video Schema).

To change the type of one page only, open its SEO Snippet in the editor or in Bulk SEO and go to Rich Snippets. Without the Advanced Pack you pick the types in Schema Types. With the Pack you get Add New Schema and a form for every field, described in Reusable Schemas.

Validate the JSON-LD

  1. Open the post in the editor, or find it in Squirrly > Optimize > Bulk SEO.
  2. In the SEO Snippet box, open Rich Snippets. With the Advanced Pack, open the JSON-LD Code tab inside it.
  3. Click Validate JSON-LD.

The button sends the code to the Google Rich Results Test in a new tab. To test everything on the page, the code from other plugins included, paste the page URL in the same tool. Bulk SEO shows the button in the snippet.

Custom JSON-LD for one page

When the automatic schema doesn’t fit a page, replace it with your own code.

  1. Open the SEO Snippet of the page and go to Rich Snippets.
  2. Open the Custom Schema tab and pick Custom Code instead of (Auto).
  3. Paste the code in Custom JSON-LD Code and click Save.

While custom code is active, the snippet shows “This page uses a Custom Schema.” and the other types of the page are ignored. Code that isn’t valid JSON isn’t printed on the page. Add Custom JSON-LD Structured Data has the steps and the developer hooks.

Advanced Custom Fields integration

With the Advanced Custom Fields plugin active, Squirrly reads two field names on each post:

ACF field nameWhat Squirrly does with it
_sq_jsonld_customUses the value as the custom JSON-LD of that post
_sq_videoUses the URL as the video of the Video schema

A custom code saved in the SEO Snippet comes before the ACF field. With the Advanced Pack you can also fill any schema field from ACF, as Use ACF fields in Squirrly SEO schemas explains.

See the result on your page

After you save the Company tab, every page gets an Organization in its JSON-LD, and posts link to it as their publisher. Check it in the page source or in the Rich Results Test. This is the schema of a demo post after the Company tab was saved:

Squirrly SEO JSON-LD with Article, Organization and BreadcrumbList on a demo post
The JSON-LD of a demo post: the Article, the Organization from the Company tab and the BreadcrumbList (page source, formatted for reading).

Troubleshooting

“The Organization schema is not published while the company name is empty.”

The Company tab shows this with the Advanced Pack installed. Type Your Organization Name and click Save Settings.

“JSON-LD is disable for this Post Type”

The SEO Snippet shows this when Load JSON-LD Structured Data is off for that post type. Turn it on in Squirrly > Optimize > Automation for the post type named in the message.

“Not published yet – Google needs: …”

The Advanced Pack leaves a schema out of the page until the fields Google requires are filled. The message names them. Fill them in the schema form and save.

Google shows two Product schemas for one page

Another plugin or the theme adds its own JSON-LD. Turn on Remove other Json-LD from page, or turn off the schema in the other plugin.

The Rich Snippets menu item is missing

Turn on JSON-LD Structured Data in Squirrly > All Features.

Frequently asked questions

Does Squirrly guarantee rich snippets in Google?

No, Google decides when to show them, and a valid schema only makes the page eligible.

Can a page have more than one schema type?

Yes, JSON-LD Type in Automation takes several types, and the Advanced Pack lets you add more on each page.

Where do I change the author shown in the Article schema?

Turn on Set this person as a global author in Personal Brand / Author, or change the post author in WordPress.

Is the KML file public?

Yes, /locations.kml on your domain is a public file with the coordinates from GEO Location.

Was This Article Helpful?

Before you leave

Future of AEO GEO and AI Search!

Free Now. Free Forever.

It’s time to stop orbiting SaaS.

Be the Meteor.

10 Elite Tools. 1 Stack.