JSON-LD is the structured-data format Google, Bing, and every major LLM expects. For SaaS, the right schemas are non-obvious: you're not an e-commerce store, you're not a publisher, but you're not nothing either. Here are the five schemas every SaaS site should ship, with copy-paste templates.
1. Organization — on every page (root layout)
This is your identity. Ship it once in the root layout. Use @type Organization with name, url, logo, and sameAs links to your Twitter, GitHub, and LinkedIn.
2. SoftwareApplication — on your product/home page
The correct type for SaaS — better than generic Product. Use applicationCategory BusinessApplication, operatingSystem Web, and an Offer with price and priceCurrency. Add aggregateRating only if you have real reviews.
3. Product or Service — on each pricing tier
If you sell distinct tiers (Starter, Growth, Enterprise), each is its own Product with its own Offer. This is what powers price citations in AI answers. Match the price exactly to what's visible on the page — Google deranks contradictions.
4. FAQPage — on the FAQ route
The schema that punches above its weight. Rich-results-eligible on Google, frequently cited by LLMs. Each Q&A pair is a Question with an acceptedAnswer Answer.
5. BreadcrumbList — on every deep route
Gives crawlers and LLMs your site hierarchy. Cheap, undervalued. Each ListItem has position, name, and item URL.
Mistakes that get your schema ignored
- Putting JSON-LD inside an HTML comment or escaping the quotes wrong
- Using @type values that aren't in schema.org
- Listing a price that contradicts your pricing page
- Shipping the same Organization block on a /not-found page with a different name
How to validate
Google Rich Results Test flags invalid blocks. Schema.org's validator is stricter and catches type mismatches. Run both before shipping.
Where these compound
Clean structured data is the difference between getting cited as "a tool" and getting cited as "Acme — $29/mo SaaS for X." LLMs need the entity, the category, the price, and the URL. JSON-LD hands them all four in one parse.