Check B2 is worth five points and asks one question in two halves. Does the site say who it is, with an Organization or a WebSite block? And does it say what it is, with markup that matches the kind of site it is: Product and Offer for a shop, Article, FAQPage or SoftwareApplication for a SaaS or content site? Two points for the first half, three for the second. Most sites that fail it fail the second half, usually because they have the wrong kind of markup for the type of site the scanner decided they are.
This post is the decision table: which types earn the points for each site type, how the engine works out your site type, and the two ways a site with good schema still ends up with two out of five. It assumes your blocks already parse; if they might not, read JSON-LD that parses first, because B2 only sees blocks that got through B1's parser.
What B2 is looking for
The scan fetches the homepage and up to five more pages. For every page that returned a 200, the engine parses each application/ld+json block and collects every @type value it finds. The walk is recursive: it descends into @graph, arrays and nested objects, and accepts @type as a string or an array of strings. The result is one set of type names for the whole crawl, recorded in the evidence as typesFound.
The two sitewide points are awarded if that set contains Organization or WebSite. The rubric text says "sitewide"; as of v1.0.1 the engine is satisfied if either type appears on any crawled page, because coverage across pages is B1's job. Because the walk is recursive, an Organization that only exists as the publisher of an Article still counts here. It will not count for much elsewhere, since D2 wants sameAs links and D5 wants its name to agree with your title, so emit it properly once.
The three type-specific points are awarded if the set contains at least one type from a short list chosen by site type. Here it is exactly as the engine has it.
| Site type (as labelled on the report) | Types that earn the three points |
|---|---|
| e-commerce | Product, Offer |
| SaaS | SoftwareApplication, Article, FAQPage, Service |
| content | Article, BlogPosting, FAQPage |
| general | Article, FAQPage, Service, SoftwareApplication |
One match is enough. The evidence records which wanted types were found under matched and names the absent half under missing, so the report tells you whether you lost the two points, the three, or both.
How the engine decides what kind of site you are
Site type is detected once, from the raw HTML of the homepage, before any check runs. It drives B2, decides whether C5 applies at all, and is the category you appear under on the leaderboard. The detection is a short ordered list of tests, and the first that fires wins.
- If the homepage's JSON-LD contains
Product,OfferorOnlineStore, the site is e-commerce. - Otherwise, if the homepage HTML contains a
/cartpath, the phrase "add to cart" or "add to bag", or the word "shopify" or "woocommerce", the site is e-commerce. - Otherwise, if the JSON-LD contains
SoftwareApplication, the site is SaaS. - Otherwise, if the HTML contains "free trial", "start free", or the word "pricing" followed on the same line by "per month", the site is SaaS.
- Otherwise, if the JSON-LD contains
ArticleorBlogPosting, the site is content. - Otherwise, the site is general.
Three things follow. Structured data is tested before prose at each step, so the cleanest way to be typed correctly is to say what you are in the homepage's JSON-LD. It is the homepage only: a shop whose homepage is a brand page with no cart link and no product markup is typed general, and is then asked for an Article or FAQPage rather than a Product. And the prose tests are deliberately coarse: a consultancy whose footer offers a "free trial" of a newsletter is typed SaaS. The detected type is printed at the top of the report and in the B2 evidence as siteType, so a wrong type is visible rather than silent, and the fix is almost always to make the homepage more explicit rather than to argue with the heuristic.
The decision table
Every site type starts the same way. Emit an Organization on every page, with name, url, sameAs and a contact route, and a WebSite on the homepage at least. Between them they satisfy B2's first half, most of D2 and the schema side of D5. Then add the type-specific markup.
E-commerce
Add a Product on every product page, each with an offers value that is an Offer carrying price, priceCurrency and availability. Either type alone satisfies B2, but C5 separately looks for the Offer on the product page and an agent looking for a price looks there too, so emit both. If the homepage is a storefront, an OnlineStore alongside the Organization is the most direct way to be typed as a shop. Note that OnlineStore triggers the e-commerce detection but does not itself count as Organization or WebSite for the two sitewide points, so keep the Organization. Tomorrow's post covers price and availability in detail.
SaaS
Add a SoftwareApplication on the homepage or product page, with applicationCategory, operatingSystem and, where you have a public price, an offers block. That single type both tells the detector you are SaaS and earns the three points. A FAQPage on pricing and support pages and an Article on docs and blog posts also score, and are worth emitting anyway, because an agent answering a question about your product reads those pages.
Content
Add an Article or BlogPosting on every article, with headline, datePublished, dateModified, author and publisher. That is the whole requirement, and dateModified does double duty for D4. The content type is only detected when the homepage itself carries Article or BlogPosting markup; a homepage that is a list of articles with no schema is typed general, where Article still scores, so the points are safe either way.
General
Agencies, firms, clinics, institutions. The engine accepts Article, FAQPage, Service or SoftwareApplication. For most of these sites the natural fit is a Service per service page and a FAQPage wherever there is a list of questions, both of which describe what you do rather than merely that you exist. A LocalBusiness is right for a business with premises and hours, and is a subtype of Organization in the vocabulary, but the engine matches type names literally, so a LocalBusiness alone does not earn the sitewide points; make @type an array, ["Organization", "LocalBusiness"], and both are found.
Two ways to lose the three points with good schema
The first is that the page carrying the type is not among the six crawled. Candidates come from the sitemap and from the homepage's links, ranked so that pricing, product, documentation, about, contact and cart routes are fetched first. A shop whose product pages are neither in the sitemap nor linked from the homepage, only from collection pages, has Product markup the scan never reads. Make sure the sitemap lists product pages and the homepage links at least one.
The second is that the markup is right for what the site is and wrong for what it was detected as. A shop typed general, because its homepage carries neither Product markup nor a cart link, is asked for Article, FAQPage, Service or SoftwareApplication, and its Product pages earn nothing. When the detected type and the markup disagree, fix the detection by making the homepage explicit, and the markup falls into place.
Our own pages carry an Organization and a WebSite on every page, a Service on each service page, a FAQPage where there is one, an Article on every post and a BreadcrumbList on interior pages, in one @graph per page. The result, including the type the engine assigned us, is on our live report.
Check your own site
The free scan reports the detected site type, every type it found across the crawl, and which of the wanted types matched, so a B2 result of two out of five tells you in one line which half is missing. The definition of B2 and the rest of the understanding pillar is on the methodology page.