Schema markup cheat sheet with copy-paste JSON-LD for Canadian websites
Cheat sheet

Schema Cheat Sheet (2026): Copy-Paste JSON-LD for Canadian Sites

The 8 schema types that matter most for Canadian SEO in 2026 — copy-paste JSON-LD, with Canadian examples (CAD currency, Canadian addresses, hreflang considerations) and validation guidance.

9 min read
·
1,650 words
·
Updated April 30, 2026
·By Martin Vassilev

The template approach in one paragraph

Eight schema types cover ~95% of practical SEO use cases for Canadian sites in 2026: Organization, LocalBusiness, WebSite (with SearchAction), Article, FAQPage, BreadcrumbList, Product, and Service. Each block below is copy-paste ready, with Canadian examples (CAD currency, Canadian address format). Add to <head> as <script type='application/ld+json'>. Validate with Google's Rich Results Test before deploy. Don't over-implement: schema for templates that don't earn SERP features is overhead, not lift.

Organization (sitewide, in head)

Defines who the website belongs to. Goes in every page's <head>, sitewide. Use the same @id everywhere so other schema can reference it.

json
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://yourdomain.ca/#organization",
  "name": "Your Company Name",
  "url": "https://yourdomain.ca/",
  "logo": "https://yourdomain.ca/logo.png",
  "sameAs": [
    "https://www.linkedin.com/company/your-company",
    "https://twitter.com/yourhandle",
    "https://www.instagram.com/yourhandle"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1-416-555-0100",
    "contactType": "customer service",
    "areaServed": "CA",
    "availableLanguage": ["en", "fr"]
  }
}

LocalBusiness (homepage, contact page)

For businesses with a physical Canadian location or service area. Use the most specific subtype (Dentist, AttorneyLaw, Restaurant, etc.) where applicable.

json
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "@id": "https://yourdomain.ca/#business",
  "name": "Your Business Name",
  "image": "https://yourdomain.ca/storefront.jpg",
  "url": "https://yourdomain.ca/",
  "telephone": "+1-416-555-0100",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Yonge St",
    "addressLocality": "Toronto",
    "addressRegion": "ON",
    "postalCode": "M5B 1S5",
    "addressCountry": "CA"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 43.6532,
    "longitude": -79.3832
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
      "opens": "09:00",
      "closes": "17:00"
    }
  ]
}

WebSite + SearchAction (sitewide)

Lets Google show a sitelinks search box for your brand. Implement once sitewide.

json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "@id": "https://yourdomain.ca/#website",
  "url": "https://yourdomain.ca/",
  "name": "Your Site Name",
  "publisher": { "@id": "https://yourdomain.ca/#organization" },
  "potentialAction": {
    "@type": "SearchAction",
    "target": "https://yourdomain.ca/?s={search_term_string}",
    "query-input": "required name=search_term_string"
  }
}

Article (blog posts, guides)

For blog posts, long-form guides, news articles. Use Article (or BlogPosting / NewsArticle for stricter subtypes).

json
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Your Article Title",
  "description": "A 150-character meta-description-style summary.",
  "image": "https://yourdomain.ca/article-hero.jpg",
  "datePublished": "2026-04-30T09:00:00-04:00",
  "dateModified": "2026-04-30T09:00:00-04:00",
  "author": {
    "@type": "Person",
    "name": "Author Name",
    "url": "https://yourdomain.ca/about/author/"
  },
  "publisher": { "@id": "https://yourdomain.ca/#organization" },
  "mainEntityOfPage": "https://yourdomain.ca/blog/your-article-slug/"
}

FAQPage (any page with Q&A)

Apply only to pages that are genuinely FAQ-driven (not promotional pages with a tacked-on FAQ section). Google has tightened FAQ rich-result eligibility; use sparingly and accurately.

json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What does SEO cost in Canada in 2026?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Canadian SEO ranges from C$1,500 to C$25,000+/month depending on stage and competition. Typical mid-market: C$3,500–C$8,000/month."
      }
    },
    {
      "@type": "Question",
      "name": "How long until I see SEO results?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Plan for 6 months to evaluate trajectory. Some technical fixes show in 30–60 days; content programs typically compound from month 4 onward."
      }
    }
  ]
}

Product (Shopify/WooCommerce/custom)

For ecommerce product pages. Critical for shopping rich results. Always include priceCurrency: 'CAD' for Canadian sites.

json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Your Product Name",
  "image": ["https://yourdomain.ca/product1.jpg"],
  "description": "Detailed product description (150–500 chars).",
  "sku": "SKU-12345",
  "brand": { "@type": "Brand", "name": "Your Brand" },
  "offers": {
    "@type": "Offer",
    "url": "https://yourdomain.ca/products/your-product/",
    "priceCurrency": "CAD",
    "price": "149.00",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "84"
  }
}

Service (service-specific landing pages)

For pages selling a specific service (SEO retainer, dental cleaning, legal consult). Pair with Offer for pricing context.

json
{
  "@context": "https://schema.org",
  "@type": "Service",
  "serviceType": "SEO Consulting",
  "provider": { "@id": "https://yourdomain.ca/#organization" },
  "areaServed": { "@type": "Country", "name": "Canada" },
  "name": "Mid-Market SEO Retainer",
  "description": "Monthly SEO retainer for Canadian mid-market businesses (C$3,500–C$8,000/month range).",
  "offers": {
    "@type": "Offer",
    "priceCurrency": "CAD",
    "price": "3500",
    "unitText": "MONTH"
  }
}

Validation and common mistakes

  • Validate every block in Rich Results Test
    https://search.google.com/test/rich-results — paste your URL or markup. Fix every error before deploying.
  • Schema.org Validator catches structural issues
    https://validator.schema.org/ — covers more types than Google's tool but doesn't tell you about rich-result eligibility.
  • Don't repeat schema across types unnecessarily
    Organization on every page is fine; LocalBusiness only on relevant pages (homepage, contact, location pages).
  • Don't fake data
    AggregateRating with no real reviews, FAQPage with content not visible on the page — both can trigger Google manual actions. Schema must reflect content actually on the page.
  • Use @id consistently
    Same @id for the same entity across pages lets Google connect them (Organization → LocalBusiness → Service). Different @ids fragment your knowledge graph.
  • Watch for plugin schema collisions
    If your CMS plugin auto-injects schema and you also hand-craft it, you can end up with duplicate or conflicting blocks. Audit and consolidate.

Frequently Asked Questions

Implementation questions from Canadian operators.

Implementation help

Want us to implement this for you?

We'll review your current setup, deploy the template correctly for your platform, and verify it's working in production.