SearchMaxx > Blog > Best of

The best schema markup types for SaaS websites, with copy-paste JSON-LD

A SaaS website needs five schema types: Organization on the homepage, SoftwareApplication with an Offer on the product or pricing page, BreadcrumbList on inner pages, BlogPosting on articles, and Person for the authors. FAQPage is now optional, because Google stopped showing FAQ rich results on May 7, 2026. Schema will not get you into AI answers by itself, but it states facts about your company in a form machines cannot misread.

What schema does and does not do

Be clear on this first, because a lot of advice overstates it. Google says you do not need special markup to appear in AI Overviews or AI Mode: "There's also no special schema.org structured data that you need to add." It does ask that your structured data match the visible text on the page. (Google: AI features and your website)

So why bother? Structured data makes rich results possible in Google, such as your logo and breadcrumbs. It also gives every crawler one unambiguous statement of your name, website, price and authors. That is cheap to add and hard to get wrong if you copy the examples below.

The types compared

Type Put it on Required by Google What it gets you Priority
Organization Homepage or About page Nothing required Logo and company details in Search and knowledge panels High
SoftwareApplication + Offer Product or pricing page name, offers.price, and a rating or review Software rich result with price and rating High
BreadcrumbList Every page below the homepage At least two ListItems Breadcrumb trail in results Medium
BlogPosting Each blog post Nothing required Better title, date and author display Medium
Person (in a ProfilePage) Author pages Not applicable Ties articles to a real author Medium
FAQPage FAQ sections Not applicable No Google rich result since May 2026 Low

Sources: Google's docs for Organization, software apps, breadcrumbs and articles.

The examples use Paidwick, a made-up invoicing app for freelancers at paidwick.com. Every value, including prices and ratings, is invented for the example. Replace them with your own. Paste each block into the page's HTML inside a <script type="application/ld+json"> tag.

Organization

What it is. The statement of who you are. Google has no required properties here, and recommends name, url, logo and sameAs. Put it on your homepage or About page, not every page. The logo must be at least 112×112 pixels and crawlable. (Google: Organization)

Best for. Every company. Do this one first.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://paidwick.com/#organization",
  "name": "Paidwick",
  "url": "https://paidwick.com/",
  "logo": "https://paidwick.com/logo-512.png",
  "description": "Paidwick is an invoicing app for freelancers. Send invoices, take card payments and chase late payers automatically.",
  "email": "hello@paidwick.com",
  "sameAs": [
    "https://www.linkedin.com/company/paidwick",
    "https://github.com/paidwick",
    "https://x.com/paidwick"
  ]
}

Downsides. None worth naming. Keep sameAs to profiles you control, and use the same name everywhere.

SoftwareApplication with an Offer

What it is. The description of your product. For Google's software rich result, name and offers.price are required, plus either aggregateRating or review. Use 0 as the price for a free plan. applicationCategory should be one of Google's listed values. For a SaaS product, that is usually BusinessApplication, FinanceApplication or DeveloperApplication. (Google: software apps)

Best for. Your product page or pricing page.

{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "Paidwick",
  "url": "https://paidwick.com/",
  "applicationCategory": "FinanceApplication",
  "operatingSystem": "Web, iOS, Android",
  "description": "Invoicing for freelancers. Create an invoice in under a minute, accept card payments, and send automatic reminders.",
  "publisher": { "@id": "https://paidwick.com/#organization" },
  "offers": [
    {
      "@type": "Offer",
      "name": "Free",
      "price": "0",
      "priceCurrency": "USD"
    },
    {
      "@type": "Offer",
      "name": "Pro",
      "price": "12",
      "priceCurrency": "USD",
      "url": "https://paidwick.com/pricing"
    }
  ]
}

That block is valid, but it will not earn the rich result on its own. You also need a rating or a review that visitors can see on the same page. Google's rule: "If you use AggregateRating, users should be able to see that aggregate rating on the page." (Google: review snippets) If your pricing page shows real ratings, add this inside the block above:

{
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "ratingCount": "128"
  }
}

Downsides. Never mark up ratings you do not show, or that you made up. Also note that reviews a company controls about itself are not eligible for stars when the type is Organization. (Google: review snippets)

Why not a standalone Product?

Google's product snippet guide covers physical products and product reviews, and points software to the separate software app guide. (Google: product snippets) For a SaaS product, put the Offer inside SoftwareApplication as above, instead of adding a separate Product.

BreadcrumbList

What it is. The path from your homepage to the current page. Google needs at least two ListItems, each with a name and an item URL. The last item can leave out item, and Google will use the page's own URL. (Google: breadcrumbs)

Best for. Every page below the homepage: docs, blog posts, feature pages.

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://paidwick.com/" },
    { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://paidwick.com/blog" },
    { "@type": "ListItem", "position": 3, "name": "How to write a late payment email" }
  ]
}

Downsides. Google's breadcrumb guide says the feature is available on desktop. It does not mention mobile.

BlogPosting

What it is. Article markup for blog posts. Google lists no required properties, and recommends headline, image, datePublished, dateModified and author. Use Person for people, put only the name in author.name, and point author.url at a page about that person. (Google: articles)

Best for. Every post on your blog.

{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How to write a late payment email",
  "image": "https://paidwick.com/blog/late-payment-email.png",
  "datePublished": "2026-10-01",
  "dateModified": "2026-10-08",
  "author": {
    "@type": "Person",
    "name": "Jordan Lee",
    "url": "https://paidwick.com/about/jordan-lee"
  },
  "publisher": { "@id": "https://paidwick.com/#organization" }
}

Downsides. List every author shown on the page, each in their own entry. Do not put "Team" or a job title in the name.

Person

What it is. The author's own page, marked up as a ProfilePage with a Person as its main subject. Google's article guide recommends profile page markup when author.url points to an internal profile page, and accepts sameAs for external profiles. (Google: articles)

Best for. Companies whose founders or staff write the blog. A real, named author is easier to trust than "Admin".

{
  "@context": "https://schema.org",
  "@type": "ProfilePage",
  "mainEntity": {
    "@type": "Person",
    "name": "Jordan Lee",
    "url": "https://paidwick.com/about/jordan-lee",
    "jobTitle": "Founder",
    "worksFor": { "@id": "https://paidwick.com/#organization" },
    "sameAs": [
      "https://www.linkedin.com/in/jordanlee-paidwick"
    ]
  }
}

Downsides. It only helps if the page shows a real bio. A profile with a name and nothing else adds little.

FAQPage

What it is. Markup for question-and-answer sections. In August 2023 Google limited FAQ rich results to "well-known, authoritative government and health websites". (Google Search Central blog, August 8, 2023) On May 7, 2026 it stopped showing them in Search entirely, and in June 2026 it removed the documentation. (Google Search Central updates)

Best for. Nothing in Google anymore. Keep it only if you already have it and the questions are visible on the page. It is still valid schema.org, so other tools can read it.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Does Paidwick charge a fee per invoice?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. The Free plan includes unlimited invoices. Card payments have a processing fee."
      }
    }
  ]
}

Downsides. No visible benefit in Google. The plain-text questions and answers on the page do more for AI engines than the markup does.

How to check your markup

  1. Paste a URL into Google's Rich Results Test at search.google.com/test/rich-results. It shows which types it found and any errors.
  2. Use the Schema Markup Validator at validator.schema.org for types Google does not use for rich results, like FAQPage.
  3. Check the server's HTML, not the browser view. Run curl -s https://yoursite.com/ | grep -c 'application/ld+json'. If the count is 0 but your browser shows the markup, it is being added by JavaScript. Many AI crawlers do not run JavaScript, so they never see it. Our guide on AI crawlers and JavaScript explains how to fix that.

Where to start

Add Organization to your homepage today and SoftwareApplication to your pricing page this week. Then add BreadcrumbList and BlogPosting to your templates so every new page gets them by default.

To see whether AI crawlers can read your pages and their markup, run the free check.

Want this done for your site?

Roshan, founder of SearchMaxx

Every day we make one change to your website that helps AI engines name you, and a person checks each one. Email me your website and the question your buyers ask AI.

Email Roshan to get started

More from the blog

  1. The SearchMaxx experiment, day 0: growing a new site in public

    Oct 18, 2026 - searchmaxx.link is a new domain. It has no Google traffic and no links. We will grow it with the same work we sell, and publish the numbers every week.

    searchmaxx.link/blog/searchmaxx-experiment-day-0 - Experiment - 2 min read

  2. Case study: 515 to 2,573 Google clicks a day in 12 weeks

    Oct 17, 2026 - Real Google Search Console numbers from an open-source AI company. In the top 1,000 queries, 66% of clicks came from searches without the brand name.

    searchmaxx.link/blog/case-study-5x-google-clicks - Case studies - 2 min read

  3. AI crawlers don't run JavaScript. Here's how to see what they see

    Oct 16, 2026 - ChatGPT's, Claude's and Perplexity's crawlers read the HTML your server sends and skip the JavaScript. If your words only appear after JavaScript runs, those engines see an empty page.

    searchmaxx.link/blog/ai-crawlers-javascript - Guides - 2 min read

  4. Which AI crawlers to allow in robots.txt, and which only collect training data

    Oct 15, 2026 - OpenAI, Anthropic, Perplexity and Google each run several bots. Some put you in AI search answers and some only collect training data. Here is which is which, and a robots.txt you can copy.

    searchmaxx.link/blog/ai-crawlers-robots-txt - Guides - 3 min read