Aller au contenu
Articles
Méthodologie9 min de lecture

Schema.org pour le SaaS B2B : le minimum viable en JSON-LD

Les cinq types de schema dont toute entreprise SaaS B2B a besoin, avec des snippets JSON-LD prêts à coller : Organization, Service, FAQPage, BreadcrumbList et Article.

CTO

Photographie illustrant l’article « Schema.org pour le SaaS B2B : le minimum viable en JSON-LD »
Photo de Nangialai Stoman sur Unsplash

Pour une entreprise SaaS B2B, cinq types de schema valent plus que tous les autres réunis : Organization, Service, FAQPage, BreadcrumbList et Article. Implémentés en JSON-LD, avec des @id stables et des liens entre eux, ils constituent le minimum viable pour commencer à être citable par l'IA. Cet article donne le snippet de chacun, prêt à adapter.

L'essentiel
  • JSON-LD est la bonne sérialisation en 2026
  • cinq types couvrent 80 % du gain : Organization, Service, FAQPage, BreadcrumbList, Article
  • des @id stables transforment des entités isolées en graphe
  • valider sur validator.schema.org et dans le Rich Results Test
  • un schema hors sujet est pire que pas de schema du tout

Pourquoi le schema compte pour le GEO

Schema.org est le vocabulaire standard des données structurées. En HTML, décrire quelque chose comme une organisation est implicite (par des balises comme header, des classes CSS, le contexte). Dans le schema, c'est explicite : @type: Organization.

Pour les moteurs traditionnels, le schema ouvre l'accès aux résultats enrichis (étoiles, FAQ dépliée, fil d'Ariane visible). Pour les LLM, le schema est le seul moyen fiable de savoir, sans ambiguïté, ce qu'est chaque chose. Quand ChatGPT cite « Acme est un cabinet de conseil en cybersécurité à Lisbonne », il déduit trois choses (ce que c'est, ce que cela fait, où), et le schema réduit la marge d'erreur.

Les cinq types, un par onglet

La fondation. Une entité Organization par entreprise, avec un @id stable, référencée par toutes les autres entités comme provider, author, publisher.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://acme.com/#organization",
  "name": "Acme SaaS",
  "url": "https://acme.com",
  "logo": "https://acme.com/logo.png",
  "description": "Plateforme de gestion des stocks pour les distributeurs de l'UE.",
  "foundingDate": "2021",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Rua X, 42",
    "postalCode": "1234-567",
    "addressLocality": "Lisboa",
    "addressCountry": "PT"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "sales",
    "email": "contacto@acme.com",
    "availableLanguage": ["pt-PT", "en", "es"]
  },
  "sameAs": [
    "https://www.linkedin.com/company/acme-saas",
    "https://github.com/acme-saas"
  ],
  "knowsAbout": ["Inventory Management", "Retail Tech", "ERP"]
}

Trois champs critiques : sameAs (liens vers des profils externes cohérents : LinkedIn, GitHub, Wikipédia s'il existe), knowsAbout (3 à 10 sujets qui affirment l'expertise de l'entreprise) et contactPoint avec availableLanguage.

L'idée de @graph (et pourquoi elle compte)

Si vous avez plusieurs entités sur la même page, vous pouvez les regrouper dans un @graph au lieu de disperser plusieurs blocs de script application/ld+json :

{
  "@context": "https://schema.org",
  "@graph": [
    { "@type": "Organization", "@id": "https://acme.com/#organization", ... },
    { "@type": "WebSite",      "@id": "https://acme.com/#website",     ... },
    { "@type": "WebPage",      "@id": "https://acme.com/#webpage",     ... },
    { "@type": "Service",      "@id": "https://acme.com/#service-inv", ... },
    { "@type": "FAQPage",      "@id": "https://acme.com/#faq",         ... }
  ]
}

L'avantage : moins de parsing, un contexte partagé, des liens explicites par @id. Pour les LLM, un graphe cohérent est nettement plus lisible que cinq scripts isolés.

Comment les cinq se relient par @id
Type@idRelié à
Organization#organizationRéférencé par les autres comme provider, author, publisher
Service#service-inventoryprovider → #organization
FAQPage#faqisPartOf → #website
BreadcrumbList/product/inventory#breadcrumbAucun dans l'exemple
BlogPosting/blog/integrate-sap#articleauthor, publisher → #organization ; mainEntityOfPage → /blog/integrate-sap#webpage

Les @id des exemples Acme ci-dessus, sans le https://acme.com du début.

La validation n'est pas facultative

Un schema non validé est un piège. Avant de déployer, trois outils :

  • validator.schema.org, vérifie la conformité à la spécification.
  • Rich Results Test, indique quelle partie de votre schema est éligible aux résultats enrichis de Google.
  • Inspection manuelle dans les DevTools : copier le JSON, le parser, confirmer que les @id sont reliés.

Les erreurs que nous voyons souvent

  • Entités dupliquées. Organization redéclarée sur chaque page au lieu d'être référencée par @id.
  • @id absent. Le schema fonctionne, mais les LLM traitent chaque bloc comme une entité indépendante.
  • FAQPage aux questions fabriquées. L'équipe invente des questions pensées pour le SEO au lieu de reprendre les vraies. Résultat : tout perd sa crédibilité.
  • Article sans dateModified. Les modèles préfèrent citer des contenus récents ; sans dateModified, ils n'ont aucun signal de mise à jour.
Le minimum viable, avant de déployer
0 sur 9 effectués

Questions fréquentes

Sources