{"id":3021,"date":"2015-05-28T11:00:00","date_gmt":"2015-05-28T11:00:00","guid":{"rendered":"https:\/\/wpmudev.whitespark.ca\/the-json-ld-markup-guide-to-local-business-schema\/"},"modified":"2024-10-28T16:06:16","modified_gmt":"2024-10-28T22:06:16","slug":"the-json-ld-markup-guide-to-local-business-schema","status":"publish","type":"post","link":"https:\/\/whitespark.ca\/blog\/the-json-ld-markup-guide-to-local-business-schema\/","title":{"rendered":"The JSON-LD Markup Guide To Local Business Schema"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/JSONLD2.jpg\" alt=\"The JSON-LD Markup Guide to Local Business Schema\" width=\"636\" height=\"400\" \/><\/p>\n<p>Schema.org\u2026<\/p>\n<p>Love it or hate it, schema is an essential part of optimizing your website for local search. For me, it\u2019s a love-hate relationship.<\/p>\n<ul>\n<li><strong>Love it <\/strong>\u2013 because it takes messy data and displays beautiful rich snippets;<\/li>\n<li><strong>Hate it<\/strong> \u2013 because sometimes it\u2019s just a huge mess! At least I find that to be the case quite often with Microdata markup. Even once I get the markup right, I have to spend a lot of time formatting it so it looks decent on the client\u2019s site.<\/li>\n<\/ul>\n<h2>What is Microdata?<\/h2>\n<p>Microdata is an HTML specification, a form of semantic mark-up used to encode data through vocabularies such as schema.org and is a great method for communicating metadata to search engines. Search engines such as Google and Bing use this mark-up to extract information from web pages. The specification is often used to create a \u201cricher\u201d experience for web users via nifty rich snippets and interactive elements.<\/p>\n<h3>Example of Local Business Microdata formatting:<\/h3>\n<pre><code class=\"language-markup\">&lt;div itemscope=\"\" itemtype=\"http:\/\/schema.org\/LocalBusiness\"&gt;\n\t&lt;span itemprop=\"name\"&gt;Gene's Delicious Donuts&lt;\/span&gt;&lt;br&gt;\n\t&lt;link itemprop=\"url\" href=\"http:\/\/www.example.com\"&gt;\n\t&lt;span itemprop=\"address\" itemscope=\"\" itemtype=\"http:\/\/schema.org\/PostalAddress\"&gt;\n\t\t&lt;span itemprop=\"streetAddress\"&gt;123 Happy Lane&lt;\/span&gt;&lt;br&gt;\n\t\t&lt;span itemprop=\"addressLocality\"&gt;Irvine&lt;\/span&gt;, &lt;span itemprop=\"addressRegion\"&gt;CA&lt;\/span&gt; \n\t\t&lt;span itemprop=\"postalCode\"&gt;92618&lt;\/span&gt;\n\t&lt;\/span&gt;&lt;br&gt;\t\n\t&lt;a itemprop=\"telephone\" href=\"tel:+15551112345\"&gt;(555) 111-2345&lt;\/a&gt;&lt;br&gt;\n\t&lt;span itemprop=\"faxNumber\"&gt;(555) 111-2345&lt;\/span&gt;&lt;br&gt;\n\t&lt;span itemprop=\"email\"&gt;you@domain.com&lt;\/span&gt;\n\t&lt;link itemprop=\"logo\" href=\"image\/path\/file-name.jpg\"&gt;I \n\t&lt;link itemprop=\"sameAs\" href=\"https:\/\/plus.google.com\/your-google-url\"&gt;\n\t&lt;link itemprop=\"hasMap\" href=\"https:\/\/www.google.com\/maps\/place\/link-to-your-business\"&gt;\n\t&lt;span itemprop=\"geo\" itemscope=\"\" itemtype=\"http:\/\/schema.org\/GeoCoordinates\"&gt;\n\t\t&lt;meta itemprop=\"latitude\" content=\"111.00000\"&gt;\n\t\t&lt;meta itemprop=\"longitude\" content=\"-96.012345\"&gt;\n\t&lt;\/span&gt;&lt;br&gt;\n\t&lt;time itemprop=\"openingHours\" datetime=\"Mo, Tu, We, Th, Fr 09:00-17:00\"&gt;9AM - 5PM&lt;\/time&gt; \n&lt;\/div&gt;<\/code><\/pre>\n<h4>Example of Google\u2019s Knowledge Graph extracting information from Microdata:<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/markup-example.jpg\" alt=\"Markup Example\" width=\"636\" height=\"400\" \/><\/p>\n<h3>Difficulties with Microdata<\/h3>\n<p>Since Microdata often uses visual markup to style actual elements on the page, I often find myself messing with CSS and HTML in an effort to make everything look visually appealing on a client\u2019s website. The unnecessary layout problems created by Microdata result in unproductive use of time that could be spent on other important tweaks.<\/p>\n<h2>What is JSON-LD?<\/h2>\n<p><a href=\"http:\/\/www.w3.org\/TR\/json-ld\/\">JSON-LD<\/a> is a markup data-linking format that allows for easy embedding of data in a <em>script<\/em> tag. Unlike Microdata, JSON-LD data runs in the background so to speak. There\u2019s no need to tweak actual HTML elements which creates a <strong>much faster experience<\/strong> for marketing professionals. With <em>scripts<\/em>, there\u2019s no need to worry about a missing opening <em>span<\/em> or a closing <em>div <\/em>\u2013 everything just works. Think of JSON-LD as a <strong>faster, cleaner, more simple<\/strong> delivery vehicle for schema. Search engines love it as they are able to crawl the code with ease to understand the data more quickly.<\/p>\n<h3>Benefits of Using JSON-LD<\/h3>\n<ul>\n<li><strong>Nested values <\/strong>\u2013 allows for display of complex information in an easy to understand fashion.<\/li>\n<li><strong>Variable-based<\/strong> \u2013 to mark up a new element, simply add a variable.<\/li>\n<li><strong>Saves a lot of time<\/strong> \u2013 visual markup is easy to mess up and difficult to troubleshoot unless you\u2019re experienced with visual editors.<\/li>\n<li><strong>Easy to mark up reviews<\/strong> \u2013 keep the styling on your current reviews without having to make changes to your CSS file.<\/li>\n<\/ul>\n<h3>Types of Useful Local Business Data Available for Markup<\/h3>\n<p>For most local businesses, the typical NAP, business hours, and geo-location information are the most important elements. A savvy developer may utilize <a href=\"https:\/\/developers.google.com\/structured-data\/\">structured data<\/a> to include:<\/p>\n<ul>\n<li>Business Name<\/li>\n<li>Address<\/li>\n<li>Phone Number<\/li>\n<li>Email Address<\/li>\n<li>Business Hours<\/li>\n<li>Geo-location Information (coordinates and map)<\/li>\n<li>Reviews<\/li>\n<li>Logo<\/li>\n<li>Business Description<\/li>\n<li>Social Profile Links via <em>sameAs <\/em>property.<\/li>\n<li>Site Name<\/li>\n<\/ul>\n<p>Additional useful local markup types include:<\/p>\n<ul>\n<li>Products<\/li>\n<li>Media (images and videos)<\/li>\n<li>Events<\/li>\n<li>Corporate Contacts<\/li>\n<li>Sitelinks Search Box<\/li>\n<\/ul>\n<h3>A Basic Schema.org Example using JSON-LD for a Local Business<\/h3>\n<p>In this basic <em>LocalBusiness<\/em> example, we are including the business type, PostalAddress, description, business name, telephone, opening hours, geo coordinates and social profile links:<\/p>\n<pre><code class=\"language-markup\">&lt;script type=\"application\/ld+json\"&gt;\n\t{\n  \t\"@context\": \"http:\/\/schema.org\",\n  \t\"@type\": \"LocalBusiness\",\n  \t\"address\": {\n    \"@type\": \"PostalAddress\",\n    \"addressLocality\": \"Irvine\",\n    \"addressRegion\": \"CA\",\n    \"postalCode\":\"92618\",\n    \"streetAddress\": \"123 Happy Lane\"\n  \t},\n  \t\"description\": \"This is your business description.\",\n  \t\"name\": \"Gene\u2019s Delicious Donuts\",\n  \t\"telephone\": \"555-111-2345\",\n  \t\"openingHours\": \"Mo,Tu,We,Th,Fr 09:00-17:00\",\n  \t\"geo\": {\n    \"@type\": \"GeoCoordinates\",\n    \"latitude\": \"40.75\",\n    \"longitude\": \"73.98\"\n \t\t}, \t\t\t\n  \t\"sameAs\" : [ \"http:\/\/www.facebook.com\/your-profile\",\n    \"http:\/\/www.twitter.com\/your-profile\",\n    \"http:\/\/plus.google.com\/your-profile\"]\n\t}\n&lt;\/script&gt;<\/code><\/pre>\n<h2>How to Implement schema.org Markup Using JSON-LD for a Local Business<\/h2>\n<p>Before I dive right into it, a brief disclaimer:<\/p>\n<p>I am not an expert on schema or JSON-LD and have no affiliation with Google. This article is intended to show you how I personally implement schema in my projects, in hopes that this information will be helpful to you. Please read all of <a href=\"https:\/\/developers.google.com\/structured-data\/policies\">Google\u2019s guidelines<\/a> carefully prior to implementing similar code. Don\u2019t forget to test, test, test!<\/p>\n<p>It\u2019s also worth pointing out a few helpful links and tools:<\/p>\n<ul>\n<li><a href=\"https:\/\/developers.google.com\/structured-data\/testing-tool\/\">Structured Data Testing Tool<\/a> \u2013 Google\u2019s own tool to help you troubleshoot your code. Use it to test your code before publishing it to your website. I can\u2019t recommend it enough, it\u2019ll make your life so much easier.<\/li>\n<li><a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1Ed6RmI01rx4UdW40ciWgz2oS_Kx37_-sPi7sba_jC3w\/edit?usp=sharing\">Schema Types Spreadsheet<\/a> \u2013 this amazing resource put together by <a href=\"http:\/\/www.localvisibilitysystem.com\/about\/\">Phil Rozek<\/a> and <a href=\"https:\/\/plus.google.com\/u\/0\/+DavidDeering\/about\">David Deering<\/a> will <a href=\"https:\/\/whitespark.ca\/blog\/post\/50-how-to-make-your-local-business-schema-better\">pump up your schema<\/a>. Instead of specifying a LocalBusiness, use this spreadsheet to find your <strong>schema type<\/strong> to replace the <em>\u201c@type\u201d: \u201cLocalBusiness\u201d,<\/em> line. Not sure how to pick the right type? No worries, Phil and David wrote <a href=\"http:\/\/www.localvisibilitysystem.com\/2014\/06\/30\/how-to-pick-or-improvise-the-right-schema-org-markup-for-your-local-business\/\">a post to help with this task<\/a>.<\/li>\n<li><a href=\"https:\/\/developers.google.com\/structured-data\/\">Structured Data<\/a> examples by Google \u2013 this resource has many explanations and examples of the types of data available for markup.<\/li>\n<li><a href=\"http:\/\/www.google.com\/webmasters\/tools\">Google Webmaster Tools<\/a> \u2013 a properly embedded code will be crawled and displayed in your GWT dashboard. <a href=\"http:\/\/www.seoskeptic.com\/aaron-bradley\/\">Aaron Bradley<\/a>, the author of SEOSkeptic <a href=\"https:\/\/plus.google.com\/106943062990152739506\/posts\/Tyyn8QfA2rc\">confirmed that GWT understands JSON-LD<\/a>. You can find this section in GWT under <em>Search Appearance &gt; Structured Data.<\/em><\/li>\n<li><a href=\"http:\/\/www.seoskeptic.com\/structured-data-markup-validation-testing-tools\/\">A list of structured data markup visualization, validation and testing tools<\/a> may also come in handy.<\/li>\n<\/ul>\n<h3>Step 1: Determine Your Schema Type<\/h3>\n<p><a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1Ed6RmI01rx4UdW40ciWgz2oS_Kx37_-sPi7sba_jC3w\/edit?usp=sharing\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/determine-the-right-schema-type.jpg\" alt=\"determine schema type\" width=\"636\" height=\"300\" \/><\/a><\/p>\n<p>Use Phil and David\u2019s <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1Ed6RmI01rx4UdW40ciWgz2oS_Kx37_-sPi7sba_jC3w\/edit?usp=sharing\">handy spreadsheet<\/a> to determine which schema type describes your business most accurately &#8211; instead of using the generic \u201cLocalBusiness\u201d schema.<\/p>\n<h3>Step 2: Customize and Add Your Code Anywhere<\/h3>\n<p>Customize our basic example (below) with your own information, including the schema type picked in step 1, then add the code anywhere on your website. It doesn\u2019t matter if you place it in the &lt;head&gt; or the &lt;body&gt; section, Google will have no problem reading the code. Since JSON-LD is a data linking format, there are no additional requests to the server, therefore it doesn\u2019t matter if the script is loaded at the top or bottom of the page \u2013 there is no render delaying whatsoever.<\/p>\n<h4>Customize your Schema Type:<\/h4>\n<pre> <code class=\"language-markup\">\"@type\": \"LocalBusiness\",<\/code>\n<\/pre>\n<p>For example, your <em>@type<\/em> may read:<\/p>\n<pre><code class=\"language-markup\">\"@type\": \"HVACBusiness\",\n\"@type\": \"Attorney\",\n\"@type\": \"Physician\",\n\"@type\": \"RealEstateAgent\",\n\"@type\": \"Dentist\",<\/code><\/pre>\n<h4>Customize Your Geo Coordinates:<\/h4>\n<p>To find your business geo-coordinates search for your business in Google Maps and look at the URL to find the latitude and the longitude. Alternatively, you could use <a href=\"http:\/\/www.latlong.net\/\">http:\/\/www.latlong.net\/<\/a> to search your business address:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/grab-geo-coordinates.jpg\" alt=\"Grab Geo Coordinates for Your Business from Google Maps\" width=\"636\" height=\"400\" \/><\/p>\n<h4><\/h4>\n<h4>Add a URL:<\/h4>\n<pre>  <code class=\"language-markup\">\"url\": \"http:\/\/www.example.com\",<\/code>\n<\/pre>\n<h4><\/h4>\n<h4>Add a Logo:<\/h4>\n<pre>  <code class=\"language-markup\">\"logo\": \"http:\/\/www.example.com\/images\/logo.png\",<\/code>\n<\/pre>\n<h4><\/h4>\n<h4>Add Email Contact Info:<\/h4>\n<pre>  <code class=\"language-markup\">\"email\":\"mailto:you@example.com\",<\/code>\n<\/pre>\n<h4><\/h4>\n<h4>Add Social Profiles:<\/h4>\n<p>At this time Google supports Facebook, Twitter, Google+, Instagram, YouTube, LinkedIn and Myspace. To add a new profile, place the URL in quotes and separate by a comma.<\/p>\n<pre><code class=\"language-markup\">\n\"sameAs\" : [ \"http:\/\/www.facebook.com\/your-profile\",\n    \"http:\/\/www.twitter.com\/yourProfile\",\n    \"http:\/\/plus.google.com\/your_profile\"]\n <\/code>\n<\/pre>\n<h4><\/h4>\n<h4>Link to a Map<\/h4>\n<pre><code class=\"language-markup\">\"hasMap\": \"https:\/\/www.google.com\/maps\/place\/Sushi+Imari\/@33.664141,-117.879423,17z\/data=!3m1!4b1!4m2!3m1!1s0x80dcdfaa9f9de2a5:0x48ad2abe6bb60a3b?hl=en\",<\/code><\/pre>\n<p>To get the link to your map, find your business in <a href=\"https:\/\/www.google.com\/maps\">Google Maps<\/a>, and grab the code from the bottom right <em>gear icon &gt; Share or Embed Map<\/em>.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/map-settings-area.jpg\" alt=\"Find the map settings area in Google Maps\" width=\"636\" height=\"400\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/copy-paste-map-link.jpg\" alt=\"Copy and paste the map link to your hasMap property.\" width=\"636\" height=\"400\" \/><\/p>\n<h4><\/h4>\n<h4>Include Additional Type:<\/h4>\n<p>As an optional step for those who would like to include Product Ontology values in their code, include <em>additionalType<\/em> like so:<\/p>\n<pre><code class=\"language-markup\">\"additionalType\": \"http:\/\/www.productontology.org\/id\/Personal_injury_lawyer\",<\/code><\/pre>\n<p>See the <a href=\"http:\/\/www.localvisibilitysystem.com\/2014\/06\/30\/how-to-pick-or-improvise-the-right-schema-org-markup-for-your-local-business\/\">post on LocalVisibilitySystem<\/a> on how to pick Product Ontology categories and why you\u2019d include it in your schema.<\/p>\n<h4><\/h4>\n<h4>Add Aggregate Rating:<\/h4>\n<pre><code class=\"language-markup\">\"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4\",\n    \"reviewCount\": \"250\"\n },<\/code><\/pre>\n<h4><\/h4>\n<h4>Include Reviews with Aggregate Rating<\/h4>\n<p>To add more reviews, simply copy and paste the review item and adjust the aggregate <em>reviewCount<\/em> and <em>ratingValues<\/em>. Note that each review has 2 curly brackets and is separated by a comma.<\/p>\n<pre><code class=\"language-markup\">&lt;script type=\"application\/ld+json\"&gt;\n\t{\n  \t\"@context\": \"http:\/\/schema.org\",\n  \t\"@type\": \"Dentist\",    \n  \t\"name\": \"Family Dentistry\",\n    \"aggregateRating\": {\n    \"@type\": \"AggregateRating\",\n    \"ratingValue\": \"4\",\n    \"reviewCount\": \"2\"\n \t },  \t\n    \"review\": [\n    {\n      \"@type\": \"Review\",\n      \"author\": \"Ellie\",\n      \"datePublished\": \"2011-04-01\",\n      \"description\": \"I'm not entirely upset with this office, but the staff at the front desk could have been nicer in letting me know they have nothing available for the next 2 months.\",\n      \"name\": \"Good services, poor communication\",\n      \"reviewRating\": {\n        \"@type\": \"Rating\",\n        \"bestRating\": \"5\",\n        \"ratingValue\": \"3\",\n        \"worstRating\": \"1\"\n      \t}\n    },\n    {\n      \"@type\": \"Review\",\n      \"author\": \"Lucas\",\n      \"datePublished\": \"2011-03-25\",\n      \"description\": \"I was finally able to get my old crown replaced with a new, porcelain one at a cost that doesn't break the bank.\",\n      \"name\": \"Affordable Crowns\",\n      \"reviewRating\": {\n        \"@type\": \"Rating\",\n        \"bestRating\": \"5\",\n        \"ratingValue\": \"5\",\n        \"worstRating\": \"1\"\n      }\n    }\n  ]\n}\n&lt;\/script&gt;<\/code><\/pre>\n<h3><\/h3>\n<h3>Step 3: Test Your Code<\/h3>\n<p>Once you have your code, unless you\u2019re already tweaking in <a href=\"https:\/\/developers.google.com\/structured-data\/testing-tool\/\">Structured Data Testing Tool<\/a>, go ahead and test it by copying and pasting the code and clicking on <em>Validate<\/em>.<\/p>\n<p>A green checkmark and the text \u201cAll good\u201d will show if the code validates without errors. If for some reason you seen an error, carefully check the syntax to make sure you didn\u2019t miss a comma, a curly bracket or quotations.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/whitespark.ca\/wp-content\/uploads\/2024\/06\/test-your-markup.jpg\" alt=\"Test your Markup in Structured Data Testing Tool\" width=\"636\" height=\"400\" \/><\/p>\n<h3><\/h3>\n<h3>Extended Properties JSON-LD Example for a Local Business<\/h3>\n<p>To add to our basic example, we\u2019ve included an <em>email address<\/em>, <em>addtionalType<\/em>, <em>hasMap<\/em>, website <em>URL<\/em> and a <em>logo<\/em> image link:<\/p>\n<pre data-line=\"5-9\"><code class=\"language-markup\">&lt;script type=\"application\/ld+json\"&gt;\n\t{\n  \t\"@context\": \"http:\/\/schema.org\",\n  \t\"@type\": \"LocalBusiness\",\n\t\"additionalType\": \"http:\/\/www.productontology.org\/id\/Genes_Donuts\",\n\t\"url\": \"http:\/\/example.com\/\",\n\t\"logo\": \"http:\/\/www.example.com\/images\/logo.png\",\n\t\"hasMap\": \"https:\/\/www.google.com\/maps\/place\/link-to-your-business\",\n\t\"email\": \"mailto:you@example.com\",\n  \t\"address\": {\n    \t\"@type\": \"PostalAddress\",\n    \t\"addressLocality\": \"Irvine\",\n    \t\"addressRegion\": \"CA\",\n    \t\"postalCode\":\"92618\",\n    \t\"streetAddress\": \"123 Happy Lane\"\n  \t},\n  \t\"description\": \"This is your business description.\",\n  \t\"name\": \"Gene\u2019s Delicious Donuts\",\n  \t\"telephone\": \"555-111-2345\",\n  \t\"openingHours\": \"Mo,Tu,We,Th,Fr 09:00-17:00\",\n  \t\"geo\": {\n    \t\"@type\": \"GeoCoordinates\",\n   \t\"latitude\": \"40.75\",\n    \t\"longitude\": \"73.98\"\n \t\t}, \t\t\t\n  \t\"sameAs\" : [ \"http:\/\/www.facebook.com\/your-profile\",\n    \t\"http:\/\/www.twitter.com\/yourProfile\",\n    \t\"http:\/\/plus.google.com\/your_profile\"]\n\t}\n&lt;\/script&gt;<\/code><\/pre>\n<p><strong>Note:<\/strong> In this example, the product ontology category is completely made up for demonstration purposes. If this were <a href=\"https:\/\/en.wikipedia.org\/wiki\/Randy%27s_Donuts\">Randy\u2019s Donuts<\/a>, they could include their name as <em>additionalType<\/em>!<\/p>\n<h3>A Few Tips to Avoid Errors<\/h3>\n<p>If you have little or no web development experience, it\u2019s easy to run into an error when trying to customize the code examples with your own variables. I put together a few tips to help you validate your code without issues:<\/p>\n<ol>\n<li>Each<em> item<\/em> is declared in quotes: \u201ctelephone\u201d:<\/li>\n<li>Each <em>item type<\/em> is declared in the following format: \u201c@type\u201d:<\/li>\n<li>Compounded entries such as the values within an address will always be placed in curly brackets: \u201caddress\u201d: { address values }<\/li>\n<li>Each item is separated by a comma \u201caddressLocality\u201d: \u201cIrvine\u201d<strong>, \u201c<\/strong>addressRegion\u201d: \u201cCA\u201d<\/li>\n<li>Repetitive properties such as multiple openingHours or social media links (sameAs property) are placed in brackets [].<\/li>\n<li>Don\u2019t use Microsoft Word to format your code, as this will create formatting errors. I recommend notepad or making the edits in Google\u2019s Testing Tool itself.<\/li>\n<\/ol>\n<h3>JSON-LD Markup Guidelines<\/h3>\n<p>Before you get excited and start making up data that is not visually present on your website, be aware that Google doesn\u2019t joke around with Rich Snippet spam. Algorithmic and manual penalties are a possibility when it comes to marking up data that your visitors can\u2019t see.<\/p>\n<h4>Guidelines Summary Concerning Local Business Markup<\/h4>\n<ul>\n<li>Data must not deceive or mislead experience for search users.<\/li>\n<li>Use only the most specific types and property names defined by <a href=\"http:\/\/schema.org\/docs\/schemas.html\">schema.org<\/a>.<\/li>\n<li>Marked-up content must be visible on the page where the <em>script <\/em>is added.<\/li>\n<\/ul>\n<p>See Google\u2019s <a href=\"https:\/\/developers.google.com\/structured-data\/policies\">Structured Data Policies<\/a> for a full list of technical and quality guidelines if you are uncertain of permissible use.<\/p>\n<p>Generally speaking, to stay in the clear \u2013 make sure you mark up only the content that\u2019s already visible on your website. For example, if the page contains no reviews, don\u2019t add a script that marks up reviews.<\/p>\n<h3>A Couple of FAQs<\/h3>\n<p>A few frequently asked questions and answers about implementing schema with JSON-LD:<\/p>\n<ul>\n<li><strong>Can I include data that is not shown on my website?<\/strong> No, however there are some exceptions. Google typically will not show any data that is not visibly present on your page. In fact, it\u2019s against their <a href=\"https:\/\/developers.google.com\/structured-data\/policies\">guidelines<\/a>. See the link for more details of permissible uses and exceptions.<\/li>\n<li><strong>My rich snippets aren\u2019t showing up, how come? <\/strong>Google makes no guarantees that your rich snippets will be displayed.<\/li>\n<li><strong>Can I use your code examples in my site-wide footer?<\/strong> Yes, as long as you don\u2019t forget to customize your values and each element is actually present visually. Does the footer contain all of the information? Is there a logo link to the same image file?<\/li>\n<li><strong>How do I format varying openingHours?<\/strong> If your business has different hours for different days, you can specify multiple openingHours on an individual line within enclosed in brackets. For a brief overview of openingHours, see the <a href=\"https:\/\/schema.org\/openingHours\">schema.org specification<\/a>. \u00a0Here\u2019s a quick example of a business that\u2019s open most of the week from 9-5 but takes a half day off on Friday:<\/li>\n<\/ul>\n<pre><code class=\"language-markup\">\"openingHours\": [ \"Mo-Th 09:00-17:00\", \"Fr 09:00-12:00\" ],<\/code>\n<\/pre>\n<ul>\n<li><strong>Can I use this code in WordPress or some other content management system?<\/strong> Yes, the script works anywhere. To insert the code site-wide (to show across all pages) add it to your custom scripts section in the Settings (some themes may not have this). If your theme doesn\u2019t have a scripts area, find the header.php or footer.php file and insert it there.<\/li>\n<li><strong>Does JSON-LD<\/strong> <strong>delay CSS rendering? <\/strong>No. Unlike javascript there is no render delay with a data linking format. This means you can place the code anywhere you like without having to worry about slow loading times. The code will increase your HTML content size, but only by a tiny bit \u2013 completely negligible when it comes to page load times.<\/li>\n<\/ul>\n<p>You just spent way longer reading about JSON-LD than it will actually take you to put it to work for your business. You\u2019ll be way ahead of the curve.<\/p>\n<p>If you work with multiple clients, bookmark this page for quick reference.<\/p>\n<p><strong>Update:<\/strong> Big thanks to <a href=\"https:\/\/twitter.com\/aaranged\">Aaron Bradley<\/a> for his feedback on this post! It appears I got some terminology wrong and missed a couple of things. The article has been updated accordingly.<\/p>\n<p><strong>Any questions? Have you used JSON-LD? Let me know in the comments.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Schema.org\u2026 Love it or hate it, schema is an essential part of optimizing your website for local search. For me, it\u2019s a love-hate relationship. Love it \u2013 because it takes messy data and displays beautiful rich snippets; Hate it \u2013 because sometimes it\u2019s just a huge mess! At least I find that to be the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3006,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_robots_primary_cat":"none","_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","footnotes":""},"categories":[1],"tags":[],"classification":[],"class_list":["post-3021","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"acf":[],"_links":{"self":[{"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/posts\/3021","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/comments?post=3021"}],"version-history":[{"count":3,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/posts\/3021\/revisions"}],"predecessor-version":[{"id":6141,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/posts\/3021\/revisions\/6141"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/media\/3006"}],"wp:attachment":[{"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/media?parent=3021"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/categories?post=3021"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/tags?post=3021"},{"taxonomy":"classification","embeddable":true,"href":"https:\/\/whitespark.ca\/wp-json\/wp\/v2\/classification?post=3021"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}