00 / SEO Command Center
Technical control of indexing across a B2B catalogue
This panel gathers the indexing state of the LUMORA PRO catalogue, the health of the schema.org markup and the results of a technical audit of the whole platform. The figures are recomputed on every deploy and on every change to the catalogue structure, so they show where things stand now rather than a report from last month.
01 / Indexing
What the crawler sees
Google Search Console
0
Pages in the index
Product pages, categories, technical articles and project pages. The customer portal and the negotiation room are out of the index on purpose.
Structured data
0
Pages with valid schema
The 58 page difference is the quote-only range, which deliberately emits no Offer node. The Rich Results Test returns a Product without a price for those.
Audit
0
Critical errors
Three product pages imported from the PIM file without a gtin. The fix lands in the next synchronisation cycle.
Performance
0
Median TTFB
A 30 day median for catalogue pages, measured from the Warsaw edge server. Filtered pages: 212 ms.
02 / Structured data
The schema.org markup on this platform
All markup is generated server side as JSON-LD and injected into the document head. No field is assembled in the browser, so a crawler sees exactly what a signed-out visitor sees.
| Type | Where | Status | Note |
|---|---|---|---|
| Organization | Every page, global head | Active | Registration data, VAT ID, factory address, industry profiles in sameAs. |
| WebSite | Home page | Active | With a SearchAction pointing at the catalogue search. |
| Product | 1247 product pages | Active | Name, sku, mpn, brand, images, technical parameters as additionalProperty. |
| ProductGroup | Product families with variants | Active | Colour temperature, output and finish variants tied together by variesBy. One canonical URL per family. |
| BreadcrumbList | Catalogue, categories, product pages | Active | The trail mirrors the real catalogue hierarchy, not the click history. |
| Offer | Only products with a list price | Conditional | Quote-only products get no Offer node, because they have no public price. Contract prices never reach the schema, no matter who is signed in. That is a deliberate safeguard, not an unfinished feature. |
03 / Technical audit
Platform checklist
OK
Canonical on product variants
Every output, colour and finish variant points at the family URL. Variant parameters stay in the query string and are ignored during indexing.
OK
Hreflang PL / EN
Reciprocal references across both languages plus x-default on the English version. Every page has the full set, with no missing return links.
OK
Sitemap.xml split into indexes
Separate maps for products, categories, technical articles and case studies. The lastmod field takes the date the record actually changed, not the date the cache was rebuilt.
OK
Robots.txt: /portal/ and /live-deal-room/
Both paths are blocked for every crawler. A robots.txt rule is the first layer, not the only one: see the entry below.
OK
Noindex on pages behind the login
An X-Robots-Tag: noindex, nofollow header is sent server side for every route that requires a session. It holds even when somebody pastes the link in public.
Note
Core Web Vitals
LCP 1.9 s and CLS 0.04 on product pages are within range. The catalogue view with filters active sits at LCP 2.7 s because of the render gallery; swapping in lower resolution images is queued.
OK
Lazy loading images
A loading=”lazy” attribute everywhere below the first screen, AVIF with a WebP fallback, and hard-coded dimensions so nothing shifts.
Note
Font preload
Two variable faces served from our own host with font-display: swap. The third face, used in the operator panel, is not preloaded and costs 40 ms on first render.
04 / Risks
Indexing traps in B2B
A B2B catalogue carries different risks from a retail shop. Here are the three that most often blow up a rollout, and how this platform closes each one.
High risk
Contract prices leaking through the cache
The classic case: the cache layer stores a page generated for a signed-in distributor on a 34 percent discount, then serves it to an anonymous crawler. A contracted price ends up in the index and in browser caches.
The answer: page caching runs on the anonymous version only. Individual prices are fetched by a separate client-side request, after the session is checked, under Cache-Control: private, no-store. The crawler gets a page with no price field, and that is the only version that exists in the cache at all.
Medium risk
Duplicate content across variants
A linear fixture in 4 outputs, 3 colour temperatures and 5 finishes is 60 near-identical pages. Google indexes one, treats the rest as noise and marks down the whole section.
The answer: one URL per product family, variants as interface state in the query string, a ProductGroup node with variesBy, and a canonical back to the family. Instead of 60 weak pages, the index holds one strong page with the full parameter table.
Medium risk
Crawl budget eaten by filters
The catalogue has 11 filters. Their combinations produce tens of thousands of addresses that differ from one another in nothing but parameter order. The crawler spends its time there instead of on new product pages.
The answer: filter links render without an href for the crawler, parameters are normalised to a fixed order, and combinations beyond two filters are marked noindex, follow. Only filter sets with real search volume reach the index: 23 addresses at present.
05 / Visibility
Rankings on purchase intent terms
Only terms with wholesale and specification intent are tracked. Consumer queries were removed from the list, because they bring traffic that never ends in a request for quotation.
| Term | Position | Change | Monthly |
|---|---|---|---|
| architectural lighting wholesale | 4 | +2 | 390 |
| hotel wall lights manufacturer | 7 | no change | 210 |
| 48V magnetic track distributor | 11 | -1 | 170 |
| made to measure office linear fixtures | 3 | +5 | 140 |
| retail lighting design scheme | 9 | +3 | 260 |
| led fixture manufacturer for installers | 6 | -2 | 320 |
Demonstration data. Positions over 30 days, source: Search Console, devices combined, PL market. Volumes rounded to the nearest ten.