Optimization Guide
Shopify Flooring & Tile Schema — Coverage Area, Slip Resistance, FloorScore Certification & Installation Method Structured Data
AI agents handling queries like "matte porcelain tile 12x24 slip-resistant for bathroom floor," "hardwood flooring 5-inch wide plank pre-finished FloorScore certified," "LVP flooring 12mil wear layer waterproof floating installation," or "natural stone tile DCOF 0.42 wet rated for commercial kitchen" need machine-readable coverage area, slip resistance rating, wear layer thickness, and installation type. Shopify's default JSON-LD outputs name and price only — the absence of DCOF rating, coverage area, and installation type means every filter-based flooring query is unmatched.
additionalProperty for coverage area per box (unitCode: "MTK" or "FTK"), DCOF slip resistance (numeric value, not text), Janka hardness (hardwood), wear layer thickness in mils (LVP), and installation method. Use hasCertification for FloorScore, GreenGuard Gold, CARB Phase 2, FSC, and NWFA. Store all 15 flooring fields in a flooring.* metafield namespace and emit product-type-conditional JSON-LD from a single Liquid snippet.
1. Porcelain Tile — Complete Schema with Coverage Area and DCOF
Porcelain tile is the most technically demanding flooring product type for structured data. A complete tile listing requires: exact dimensions (metric and imperial both), coverage area per box, slip resistance as a numeric DCOF value, PEI wear rating, shade variation code, finish type, installation method, frost resistance, and certification marks. The example below covers all of them.
Key schema decisions for tile: unitCode "MTK" (UN/CEFACT square metre) for coverage area. Tile dimensions expressed as both metric and imperial in the description field to match dual-unit queries. DCOF as a numeric value, not a text string — "slip resistant" text is unmatched by filter agents, but 0.60 can be compared against a threshold of 0.42.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Matte Porcelain Floor Tile 30×60cm — Through-Body Anti-Slip",
"description": "Matte finish through-body porcelain tile, 30×60 cm (12\"×24\"), DCOF 0.60, PEI 5, frost-resistant. 8 tiles per box, 1.44 m² coverage. Suitable for bathrooms, kitchens, and commercial wet areas.",
"sku": "TILE-PCT-3060-MATTE-GRY",
"brand": {
"@type": "Brand",
"name": "StoneForm Pro"
},
"image": "https://example.com/images/tile-3060-matte-grey.jpg",
"offers": {
"@type": "Offer",
"price": "89.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "61.81",
"priceCurrency": "USD",
"referenceQuantity": {
"@type": "QuantitativeValue",
"value": "1",
"unitCode": "MTK"
}
}
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Product Type",
"value": "Porcelain Tile"
},
{
"@type": "PropertyValue",
"name": "Tile Dimensions",
"value": "30 × 60 cm",
"description": "30cm × 60cm / 12\" × 24\" — metric and imperial both expressed for query matching"
},
{
"@type": "PropertyValue",
"name": "Tile Thickness",
"value": "10",
"unitCode": "MMT",
"description": "10mm tile thickness — standard for floor applications"
},
{
"@type": "PropertyValue",
"name": "Coverage Area Per Box",
"value": "1.44",
"unitCode": "MTK",
"description": "1.44 m² (15.5 sq ft) per box — 8 tiles per box. UN/CEFACT MTK = square metre"
},
{
"@type": "PropertyValue",
"name": "Tiles Per Box",
"value": "8"
},
{
"@type": "PropertyValue",
"name": "Box Weight",
"value": "22",
"unitCode": "KGM",
"description": "22 kg per box — KGM = kilogram (UN/CEFACT)"
},
{
"@type": "PropertyValue",
"name": "Finish Type",
"value": "Matte",
"description": "Matte finish — non-reflective surface; recommended for floors with natural light to avoid glare"
},
{
"@type": "PropertyValue",
"name": "Slip Resistance DCOF",
"value": "0.60",
"description": "DCOF AcuTest® 0.60 — exceeds ANSI A326.3 minimum 0.42 for level interior wet floors. Suitable for bathrooms, kitchens, and commercial wet areas"
},
{
"@type": "PropertyValue",
"name": "Surface Texture",
"value": "Pressed texture — micro-grip surface for anti-slip performance"
},
{
"@type": "PropertyValue",
"name": "Color Body",
"value": "Through-body porcelain — color runs full depth; chips show matching color"
},
{
"@type": "PropertyValue",
"name": "Installation Method",
"value": "Thin-set mortar — glue-down",
"description": "Install with modified thin-set mortar. Suitable for floors and walls. Grout joint minimum 3mm."
},
{
"@type": "PropertyValue",
"name": "Recommended Grout Joint",
"value": "3",
"unitCode": "MMT",
"description": "Minimum 3mm grout joint recommended for this tile size"
},
{
"@type": "PropertyValue",
"name": "Frost Resistance",
"value": "Frost-resistant — PEI Group V",
"description": "Rated for outdoor and freeze-thaw cycle environments per ISO 10545-12"
},
{
"@type": "PropertyValue",
"name": "PEI Rating",
"value": "5",
"description": "PEI (Porcelain Enamel Institute) wear rating 1–5. PEI 5 = maximum durability for heavy commercial traffic"
},
{
"@type": "PropertyValue",
"name": "Shade Variation",
"value": "V3 — Moderate",
"description": "V1=Uniform, V2=Slight, V3=Moderate, V4=Substantial per ANSI A137.1 shade variation standard"
},
{
"@type": "PropertyValue",
"name": "Wall or Floor",
"value": "Floor and Wall"
}
],
"hasCertification": [
{
"@type": "Certification",
"name": "ANSI A137.1",
"issuedBy": {
"@type": "Organization",
"name": "American National Standards Institute",
"url": "https://www.ansi.org"
},
"description": "American National Standard for ceramic tile — dimensional tolerances, shade variation, and physical properties"
},
{
"@type": "Certification",
"name": "ISO 10545-12",
"issuedBy": {
"@type": "Organization",
"name": "International Organization for Standardization",
"url": "https://www.iso.org"
},
"description": "Frost resistance test for ceramic tile — rated for outdoor and freeze-thaw cycle environments"
},
{
"@type": "Certification",
"name": "CE Marking",
"issuedBy": {
"@type": "Organization",
"name": "European Commission",
"url": "https://ec.europa.eu"
},
"description": "CE Marking for EU market — conformity with EN 14411 (ceramic tiles) harmonized standard"
}
]
}
The priceSpecification block expresses per-square-metre unit price alongside the box price — see our unit pricing structured data guide for the full pattern. The unitCode "MTK" on Coverage Area Per Box is the same UN/CEFACT code used in the price specification, creating a consistent machine-readable area unit across both properties.
2. Hardwood Flooring — Coverage Area, Grade, and Janka Hardness
Hardwood flooring presents a different set of AI-agent filter requirements: species and grade determine appearance, Janka hardness determines traffic suitability, and installation method (nail-down is not floating) constrains the job type. Coverage per box in square feet is essential because hardwood is almost always sold and priced by the box in the US market.
The NWFA grade system (Clear, Select & Better, #1 Common, #2 Common) is not self-explanatory to AI agents — include a description that defines what "Select & Better" means in plain terms. Similarly, Janka hardness requires a reference frame — 1360 lbf is meaningless without knowing that Red Oak is 1290 and Pine is 870.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "White Oak Solid Hardwood Flooring — 5\" Select & Better, Pre-Finished",
"description": "3/4\" solid White Oak hardwood flooring, 5-inch face width, Select & Better NWFA grade. Factory UV-cured aluminum oxide finish, 9 coats. Janka 1360. FSC certified. 22.09 sq ft per box.",
"sku": "HW-WOAK-5IN-SB-NAT",
"brand": {
"@type": "Brand",
"name": "HearthPlank"
},
"image": "https://example.com/images/white-oak-5inch-select-natural.jpg",
"offers": {
"@type": "Offer",
"price": "198.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "8.96",
"priceCurrency": "USD",
"referenceQuantity": {
"@type": "QuantitativeValue",
"value": "1",
"unitCode": "FTK"
}
}
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Product Type",
"value": "Solid Hardwood Flooring"
},
{
"@type": "PropertyValue",
"name": "Species",
"value": "White Oak",
"description": "Quercus alba — White Oak. Closed grain structure resists moisture absorption better than Red Oak."
},
{
"@type": "PropertyValue",
"name": "Grade",
"value": "Select & Better",
"description": "NWFA grade: Select & Better = minimal character marks, uniform color, small tight knots only. Above Clear grade in uniformity."
},
{
"@type": "PropertyValue",
"name": "Width",
"value": "5",
"unitCode": "INH",
"description": "5-inch face width (nominal) — actual width varies by species and moisture content"
},
{
"@type": "PropertyValue",
"name": "Thickness",
"value": "19.05",
"unitCode": "MMT",
"description": "3/4 inch (19.05mm) solid hardwood — can be sanded and refinished up to 5× over lifetime"
},
{
"@type": "PropertyValue",
"name": "Janka Hardness",
"value": "1360",
"description": "Janka hardness 1360 lbf — White Oak. Reference: Brazilian Cherry 2350, Maple 1450, Red Oak 1290, Pine 870. Higher = more dent-resistant."
},
{
"@type": "PropertyValue",
"name": "Surface Finish",
"value": "Aluminum oxide urethane — UV-cured factory finish"
},
{
"@type": "PropertyValue",
"name": "Number of Finish Coats",
"value": "9",
"description": "9-coat factory finish — more coats = greater durability and sheen depth"
},
{
"@type": "PropertyValue",
"name": "Plank Length",
"value": "Random 18–84 inch",
"description": "Random length planks 18–84 inches — box contains mix of lengths for natural installation pattern"
},
{
"@type": "PropertyValue",
"name": "Coverage Per Box",
"value": "22.09",
"unitCode": "FTK",
"description": "22.09 sq ft per box — UN/CEFACT FTK = square foot"
},
{
"@type": "PropertyValue",
"name": "Installation Method",
"value": "Nail-down or glue-down — not floating",
"description": "Solid hardwood requires mechanical fastening or full-spread adhesive. Cannot be installed as floating floor."
},
{
"@type": "PropertyValue",
"name": "Subfloor Requirements",
"value": "Plywood or OSB minimum 3/4 inch, flat within 3/16 inch per 10 feet"
},
{
"@type": "PropertyValue",
"name": "Moisture Resistance",
"value": "Not suitable for below-grade or high-humidity spaces without vapor barrier"
},
{
"@type": "PropertyValue",
"name": "Radiant Heat Compatible",
"value": "Yes — up to 80°F (27°C) surface temperature",
"description": "Compatible with hydronic and electric radiant heat systems when surface temperature does not exceed 80°F (27°C)"
}
],
"hasCertification": [
{
"@type": "Certification",
"name": "NWFA Certified",
"issuedBy": {
"@type": "Organization",
"name": "National Wood Flooring Association",
"url": "https://www.nwfa.org"
},
"description": "NWFA (National Wood Flooring Association) certified — grading, installation, and finishing standards"
},
{
"@type": "Certification",
"name": "FSC Certified",
"issuedBy": {
"@type": "Organization",
"name": "Forest Stewardship Council",
"url": "https://www.fsc.org"
},
"description": "FSC (Forest Stewardship Council) certified forest sourcing — responsible forest management verified by third-party auditor"
},
{
"@type": "Certification",
"name": "FloorScore",
"issuedBy": {
"@type": "Organization",
"name": "SCS Global Services",
"url": "https://www.scsglobalservices.com"
},
"description": "FloorScore VOC emissions certification — qualifies for LEED v4 IEQ Credit: Low-Emitting Materials"
}
]
}
The unitCode "INH" (UN/CEFACT inch) is correct for plank width. For thickness, MMT (millimetre) allows the value to express 19.05mm precisely rather than the ambiguous nominal "3/4 inch." AI agents matching "5-inch hardwood" need the INH value; agents matching thickness for subfloor compatibility need the MMT value.
3. LVP (Luxury Vinyl Plank) — Wear Layer, Core Type, and Waterproof Properties
LVP has become the highest-volume flooring category in North America, and AI shopping agents see heavy query traffic for it. The critical schema differentiators for LVP are: wear layer thickness in mils (not mm), core type (SPC vs WPC — these are different products with different performance profiles), waterproof status, and AC rating for traffic load. FloorScore, GreenGuard Gold, and CARB Phase 2 certifications are frequently queried by buyers replacing flooring in bedrooms, schools, or healthcare spaces.
additionalProperty entries: one for wear layer in mils, one for total thickness in mm.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "SPC Luxury Vinyl Plank — 12mil Wear Layer Waterproof Floating Floor",
"description": "100% waterproof SPC (Stone Polymer Composite) LVP flooring. 12mil wear layer, 6.5mm total thickness. AC4 commercial-grade traffic rating. Click-lock floating installation. FloorScore, GreenGuard Gold, CARB Phase 2 certified.",
"sku": "LVP-SPC-12M-65-GRY-OAK",
"brand": {
"@type": "Brand",
"name": "RigidCore Plus"
},
"image": "https://example.com/images/lvp-spc-grey-oak.jpg",
"offers": {
"@type": "Offer",
"price": "124.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"priceSpecification": {
"@type": "UnitPriceSpecification",
"price": "3.29",
"priceCurrency": "USD",
"referenceQuantity": {
"@type": "QuantitativeValue",
"value": "1",
"unitCode": "FTK"
}
}
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Product Type",
"value": "Luxury Vinyl Plank (LVP)"
},
{
"@type": "PropertyValue",
"name": "Wear Layer Thickness",
"value": "12",
"unitCode": "MIL",
"description": "12mil (0.3mm) wear layer — scratch and stain resistant surface. Reference: 6mil residential light use, 12mil residential heavy use, 20mil commercial"
},
{
"@type": "PropertyValue",
"name": "Core Type",
"value": "SPC — Stone Polymer Composite",
"description": "SPC core: rigid, 100% waterproof, dimensionally stable. Alternative: WPC (Wood Polymer Composite) — softer underfoot but less rigid"
},
{
"@type": "PropertyValue",
"name": "Total Thickness",
"value": "6.5",
"unitCode": "MMT",
"description": "Total plank thickness 6.5mm including SPC core, wear layer, and attached underlayment"
},
{
"@type": "PropertyValue",
"name": "Waterproof",
"value": "100% waterproof — SPC core impervious to water, suitable for bathrooms and laundry rooms"
},
{
"@type": "PropertyValue",
"name": "Installation Method",
"value": "Floating — click-lock tongue and groove; no glue or nails required",
"description": "Click-lock floating installation — can be installed over most existing hard floors. Requires acclimation 48 hours before installation."
},
{
"@type": "PropertyValue",
"name": "AC Rating",
"value": "AC4",
"description": "AC4 (Abrasion Criteria) — suitable for heavy residential and light commercial traffic. Scale: AC1 (light residential) to AC6 (heavy commercial)"
},
{
"@type": "PropertyValue",
"name": "Underlayment",
"value": "Pre-attached 1.5mm IXPE foam underlayment — no separate underlayment needed on most subfloors"
},
{
"@type": "PropertyValue",
"name": "Subfloor Flatness",
"value": "Flat within 3/16 inch per 10 feet",
"description": "Subfloor must be clean, dry, and flat. High spots cause click-lock joint stress; low spots cause hollow sound underfoot."
},
{
"@type": "PropertyValue",
"name": "Temperature Range",
"value": "59–95°F installation range",
"description": "Install when ambient and subfloor temperature is between 59°F and 95°F (15°C–35°C)"
},
{
"@type": "PropertyValue",
"name": "Indentation Resistance",
"value": "Commercial grade — passes ASTM F1914 static load test",
"description": "ASTM F1914 residual indentation test — suitable for office chairs, heavy furniture, and high-heeled footwear"
},
{
"@type": "PropertyValue",
"name": "Coverage Per Box",
"value": "37.68",
"unitCode": "FTK",
"description": "37.68 sq ft per box — UN/CEFACT FTK = square foot"
}
],
"hasCertification": [
{
"@type": "Certification",
"name": "FloorScore",
"issuedBy": {
"@type": "Organization",
"name": "SCS Global Services",
"url": "https://www.scsglobalservices.com"
},
"description": "FloorScore VOC emissions certification — qualifies for LEED v4 IEQ Credit: Low-Emitting Materials"
},
{
"@type": "Certification",
"name": "GreenGuard Gold",
"issuedBy": {
"@type": "Organization",
"name": "UL Environment",
"url": "https://www.ul.com/resources/greenguard-certification"
},
"description": "GreenGuard Gold (formerly ChildGuard) — stricter VOC limits for schools and healthcare facilities. Indoor air quality certification."
},
{
"@type": "Certification",
"name": "CARB Phase 2",
"issuedBy": {
"@type": "Organization",
"name": "California Air Resources Board",
"url": "https://ww2.arb.ca.gov"
},
"description": "CARB Phase 2 — California Air Resources Board formaldehyde emission limits for composite wood products. Required for sale in California."
},
{
"@type": "Certification",
"name": "CE Marking",
"issuedBy": {
"@type": "Organization",
"name": "European Commission",
"url": "https://ec.europa.eu"
},
"description": "CE Marking for EU market — conformity with EN ISO 10582 (resilient floor coverings) harmonized standard"
}
]
}
The four certifications on LVP — FloorScore, GreenGuard Gold, CARB Phase 2, and CE — serve different markets and buyer concerns. FloorScore and GreenGuard Gold both address indoor air quality but GreenGuard Gold has stricter limits and is the certification AI agents match for school and healthcare facility queries. CARB Phase 2 is a California legal requirement that has become a de-facto national standard for formaldehyde emissions. See our environmental certifications schema guide for the full certification property pattern.
4. Slip Resistance Rating System Reference
Tile and stone products may carry slip resistance ratings from multiple national test standards. North American products use DCOF per ANSI A326.3; European products use the German DIN 51130 R-value or barefoot-wet DIN 51097 A/B/C system; UK products may use the PTV (Pendulum Test Value) per BS 7976. AI agents need the rating system name alongside the value to interpret the number correctly — a value of "11" means very different things in the DIN 51130 system (R11, a moderate industrial rating) versus a raw coefficient of friction measurement.
| Rating System | Scale | Threshold | Application |
|---|---|---|---|
| DCOF AcuTest ANSI A326.3 (USA) |
0.0–1.0 continuous | ≥0.42 wet interior level floors; ≥0.60 preferred for commercial wet areas | All ceramic and stone tile sold in North America |
| DIN 51130 R-value European industrial |
R9–R13 (5 classes) | R10 wet commercial; R11 industrial; R12 grease kitchen; R13 cold storage / extreme-wet | Shod (footwear) wet areas — commercial, industrial, food processing |
| DIN 51097 A/B/C European barefoot |
A / B / C (3 classes) | A swimming pool surrounds (wet); B shower and changing rooms; C sloped pool surrounds (>6°) | Barefoot wet areas only — pools, spas, changing rooms |
| PTV (Pendulum Test Value) BS 7976 (UK) |
0–100 | ≥36 low slip risk (dry); ≥36 wet + ≥24 wet = very low risk | UK standard — applied to all floor surfaces including tile, stone, vinyl |
In your schema, always pair the rating value with the rating system name in the property name: use "name": "Slip Resistance DCOF" for ANSI values and "name": "Slip Resistance R-value (DIN 51130)" for European R-class values. If your product carries both (common for tiles sold in EU and US markets), add two separate additionalProperty entries.
5. Wood Species Janka Hardness Reference
Janka hardness is a critical AI agent filter for high-traffic area flooring, pet-friendly homes, and rustic or character-grade aesthetics. The Janka ball test measures the force (in pound-force, lbf) required to embed a steel ball halfway into a wood sample. Higher numbers mean greater resistance to denting and surface wear. AI agents processing queries like "most scratch-resistant hardwood for dogs" or "durable hardwood for kitchen" need a numeric Janka value to rank products — species names alone are insufficient for comparison.
| Species | Janka (lbf) | Common Use |
|---|---|---|
| Brazilian Cherry (Jatoba) | 2,350 | Exotic hardwood — maximum durability, rich red-brown color |
| Hickory | 1,820 | Heavy-traffic areas, rustic character grain, pet households |
| Hard Maple | 1,450 | Basketball courts, dance studios, bowling lanes — gym hardwood |
| White Oak | 1,360 | Most popular hardwood floor — balanced hardness, natural grain, stains well |
| Red Oak | 1,290 | Classic American hardwood — open grain, takes stain evenly |
| Douglas Fir | 660 | Pacific Northwest rustic and craftsman interiors — softwood, dents more easily |
| Eastern White Pine | 380 | Character-grade country homes — softwood, develops patina with use |
When AI agents process a query for "pet-friendly hardwood flooring," they typically filter for Janka hardness above a threshold (commonly 1,200–1,500 lbf depending on the agent's training). Without a numeric Janka value in structured data, the product is invisible to this filter even if the product description mentions "durable" or "scratch resistant." The structured data value enables comparison ranking; the description provides context for the reference frame.
For engineered hardwood, include Janka hardness for the face veneer species — the Janka of the core (typically poplar or birch) is not relevant to surface wear resistance. Note this in the description: "description": "Janka hardness 1360 lbf — White Oak face veneer. Applies to surface wear resistance only; core species is different."
6. Shopify Liquid Implementation — flooring.* Metafield Namespace
A 15-field flooring.* metafield namespace covers all three major flooring product types from a single Liquid snippet. The key implementation requirement is conditional emission — tile products should not emit Janka hardness blocks (which would contain empty values), and hardwood products should not emit wear layer blocks. Use the flooring.product_type metafield as the switch.
Metafield Definitions (Settings > Custom Data > Products)
| Namespace.Key | Type | Used For |
|---|---|---|
flooring.product_type | Single-line text | All — drives conditional block emission |
flooring.tile_width_cm | Decimal number | Tile |
flooring.tile_height_cm | Decimal number | Tile |
flooring.thickness_mm | Decimal number | Tile, Hardwood, LVP (total) |
flooring.coverage_per_box_sqm | Decimal number | Tile (m²), Hardwood/LVP use separate sq ft field |
flooring.coverage_per_box_sqft | Decimal number | Hardwood, LVP |
flooring.tiles_per_box | Integer | Tile |
flooring.finish_type | Single-line text | Tile, Hardwood |
flooring.dcof_rating | Decimal number | Tile, Stone |
flooring.pei_rating | Integer | Tile |
flooring.shade_variation_v | Single-line text | Tile (V1/V2/V3/V4) |
flooring.installation_method | Single-line text | All |
flooring.wear_layer_mil | Integer | LVP only |
flooring.core_type | Single-line text | LVP (SPC/WPC) |
flooring.janka_hardness | Integer | Hardwood only |
flooring.species | Single-line text | Hardwood only |
Liquid Snippet — snippets/flooring-schema.liquid
{% assign fp = product.metafields.flooring %}
{% if fp.product_type != blank %}
{
"@context": "https://schema.org",
"@type": "Product",
"name": {{ product.title | json }},
"description": {{ product.description | strip_html | json }},
"sku": {{ product.selected_or_first_available_variant.sku | json }},
"offers": {
"@type": "Offer",
"price": {{ product.selected_or_first_available_variant.price | divided_by: 100.0 | json }},
"priceCurrency": {{ shop.currency | json }},
"availability": {% if product.available %}"https://schema.org/InStock"{% else %}"https://schema.org/OutOfStock"{% endif %}
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Product Type",
"value": {{ fp.product_type | json }}
},
{
"@type": "PropertyValue",
"name": "Installation Method",
"value": {{ fp.installation_method | json }}
},
{% if fp.thickness_mm != blank %}
{
"@type": "PropertyValue",
"name": "{% if fp.product_type == 'Luxury Vinyl Plank (LVP)' %}Total {% endif %}Thickness",
"value": {{ fp.thickness_mm | json }},
"unitCode": "MMT"
},
{% endif %}
{% comment %}— TILE-ONLY BLOCK —{% endcomment %}
{% if fp.product_type contains 'Tile' or fp.product_type contains 'Stone' %}
{% if fp.tile_width_cm != blank and fp.tile_height_cm != blank %}
{
"@type": "PropertyValue",
"name": "Tile Dimensions",
"value": "{{ fp.tile_width_cm }} × {{ fp.tile_height_cm }} cm"
},
{% endif %}
{% if fp.coverage_per_box_sqm != blank %}
{
"@type": "PropertyValue",
"name": "Coverage Area Per Box",
"value": {{ fp.coverage_per_box_sqm | json }},
"unitCode": "MTK",
"description": "{{ fp.coverage_per_box_sqm }} m² per box. UN/CEFACT MTK = square metre"
},
{% endif %}
{% if fp.dcof_rating != blank %}
{
"@type": "PropertyValue",
"name": "Slip Resistance DCOF",
"value": {{ fp.dcof_rating | json }},
"description": "DCOF AcuTest® {{ fp.dcof_rating }} — {% if fp.dcof_rating >= 0.60 %}exceeds{% else %}meets{% endif %} ANSI A326.3 minimum 0.42"
},
{% endif %}
{% if fp.pei_rating != blank %}
{
"@type": "PropertyValue",
"name": "PEI Rating",
"value": {{ fp.pei_rating | json }},
"description": "PEI wear rating 1–5. PEI {{ fp.pei_rating }} = {% if fp.pei_rating == 5 %}maximum durability for heavy commercial traffic{% elsif fp.pei_rating == 4 %}heavy residential and light commercial{% elsif fp.pei_rating == 3 %}all residential{% else %}wall or light floor use{% endif %}"
},
{% endif %}
{% if fp.shade_variation_v != blank %}
{
"@type": "PropertyValue",
"name": "Shade Variation",
"value": "{{ fp.shade_variation_v }}",
"description": "V1=Uniform, V2=Slight, V3=Moderate, V4=Substantial per ANSI A137.1"
},
{% endif %}
{% if fp.finish_type != blank %}
{
"@type": "PropertyValue",
"name": "Finish Type",
"value": {{ fp.finish_type | json }}
},
{% endif %}
{% endif %}{% comment %}end tile/stone block{% endcomment %}
{% comment %}— HARDWOOD-ONLY BLOCK —{% endcomment %}
{% if fp.product_type contains 'Hardwood' %}
{% if fp.species != blank %}
{
"@type": "PropertyValue",
"name": "Species",
"value": {{ fp.species | json }}
},
{% endif %}
{% if fp.janka_hardness != blank %}
{
"@type": "PropertyValue",
"name": "Janka Hardness",
"value": {{ fp.janka_hardness | json }},
"description": "Janka hardness {{ fp.janka_hardness }} lbf — {{ fp.species }}. Higher = more dent-resistant."
},
{% endif %}
{% if fp.coverage_per_box_sqft != blank %}
{
"@type": "PropertyValue",
"name": "Coverage Per Box",
"value": {{ fp.coverage_per_box_sqft | json }},
"unitCode": "FTK"
},
{% endif %}
{% if fp.finish_type != blank %}
{
"@type": "PropertyValue",
"name": "Surface Finish",
"value": {{ fp.finish_type | json }}
},
{% endif %}
{% endif %}{% comment %}end hardwood block{% endcomment %}
{% comment %}— LVP-ONLY BLOCK —{% endcomment %}
{% if fp.product_type contains 'Vinyl' or fp.product_type contains 'LVP' %}
{% if fp.wear_layer_mil != blank %}
{
"@type": "PropertyValue",
"name": "Wear Layer Thickness",
"value": {{ fp.wear_layer_mil | json }},
"unitCode": "MIL",
"description": "{{ fp.wear_layer_mil }}mil wear layer. Reference: 6mil light residential, 12mil heavy residential, 20mil commercial."
},
{% endif %}
{% if fp.core_type != blank %}
{
"@type": "PropertyValue",
"name": "Core Type",
"value": {{ fp.core_type | json }}
},
{% endif %}
{% if fp.coverage_per_box_sqft != blank %}
{
"@type": "PropertyValue",
"name": "Coverage Per Box",
"value": {{ fp.coverage_per_box_sqft | json }},
"unitCode": "FTK"
},
{% endif %}
{% endif %}{% comment %}end LVP block{% endcomment %}
{
"@type": "PropertyValue",
"name": "_end",
"value": "placeholder-remove"
}
]
}
{% endif %}
Strip the trailing _end placeholder and its preceding comma using a post-processing step, or restructure the loop to use Liquid's join filter on an array of rendered fragments. The conditional block pattern above ensures tile products emit DCOF, PEI, and shade variation; hardwood products emit Janka hardness and species; and LVP products emit wear layer and core type — with no empty property blocks for absent metafield types. See our product specifications schema guide for the full metafield-to-schema mapping pattern.
7. Five Common Flooring Schema Mistakes
-
Coverage area expressed in pieces, not area units
Listing coverage as "8 tiles per box" or "sold by the piece" without a square-footage value means AI agents handling queries like "how many boxes for 200 sq ft?" receive no machine-readable answer. The agent either fails to match the product or falls back to an expensive text-extraction step. Always express coverage as a numeric area value with
unitCode "MTK"(square metre) or"FTK"(square foot), plus the piece count as a separate property. Both values are useful; the area value is the machine-filterable one. -
Missing DCOF rating — "slip resistant" text is unstructured
Product descriptions frequently include phrases like "slip resistant surface," "anti-slip texture," or "wet-rated tile." These are natural-language descriptions that AI agents cannot use for threshold-based filtering. A buyer specifying "DCOF 0.42 minimum for commercial kitchen" will not match a tile whose schema contains only the text string "slip resistant." Express DCOF as a numeric
valuein aPropertyValue— the comparison logic (≥ 0.42) can then be applied programmatically by the agent. The description field can contain the human-readable context. -
Thickness vs wear layer confusion for LVP
A common merchant error: listing the total plank thickness (e.g., 6.5mm) in a field labeled "Thickness (mil)" — or worse, listing the wear layer in mils (12mil) in a field labeled "Thickness (mm)." These are entirely different dimensions of entirely different materials. A 12mil wear layer in a 6.5mm total plank is a premium residential product. A 12mm thick plank is a different product class entirely (usually commercial SPC). Always use separate, distinctly named properties:
"Wear Layer Thickness"withunitCode "MIL"for the wear layer, and"Total Thickness"withunitCode "MMT"for the plank. Never combine them. -
Not specifying installation method — floating vs glue-down vs nail-down is a job-type filter
Installation method is not decorative information — it determines whether the product is a match for a given project. A contractor quoting a job over existing tile must use floating installation; solid hardwood cannot float; some glue-down LVP cannot be floated without adhesive failure. AI agents handling contractor queries or DIY project queries filter on installation method as a hard constraint. A product schema without an explicit installation method value is invisible to these filter chains. Use controlled vocabulary:
"Floating — click-lock","Nail-down or glue-down","Thin-set mortar — glue-down". - Shade variation code omitted — affects matching for large installations The ANSI A137.1 shade variation codes (V1 Uniform through V4 Substantial) matter disproportionately for large-area tile installations. A commercial buyer purchasing 5,000 sq ft of tile across multiple lots needs to know whether V3 or V4 shade variation requires a mock-up review and lot-matching process. AI agents processing commercial procurement queries increasingly flag shade variation as a risk signal — a tile specified without shade variation code is unknown-risk for large installation. V4 (Substantial) requires careful blending from multiple boxes; V1 (Uniform) does not. Include the ANSI code, not just a qualitative description.
Audit Your Flooring Product Schema
CatalogScan checks your Shopify store's JSON-LD for missing coverage area, absent DCOF ratings, wear layer / thickness confusion, and certification gaps — across your entire flooring catalog in minutes.
Run Free Schema ScanFrequently Asked Questions
What schema.org property expresses tile or flooring coverage area per box?
Use additionalProperty with a PropertyValue on the Product: set name to "Coverage Area Per Box", value to the numeric area, and unitCode to "MTK" (UN/CEFACT square metre) or "FTK" (square foot). Always include the human-readable conversion in the description field so AI agents match both metric and imperial queries. Do not express coverage as a piece count only — AI shopping agents filter by square footage when sizing a room, and piece count alone produces no match.
How do I express DCOF slip resistance rating in schema.org for tile products?
Use additionalProperty with a PropertyValue: set name to "Slip Resistance DCOF" and value to the numeric DCOF score (e.g., 0.60). The value must be numeric, not a text label like "slip resistant" — text labels are unstructured and cannot be threshold-filtered by AI agents. DCOF per ANSI A326.3 requires ≥0.42 for wet interior level floors. If your tile uses the European DIN 51130 R-value system, use a separate property named "Slip Resistance R-value (DIN 51130)" with the R-class as the value.
How do I mark up hardwood flooring Janka hardness in schema.org?
Use additionalProperty with a PropertyValue: set name to "Janka Hardness", value to the numeric lbf value (e.g., 1360), and include a reference frame in the description field listing common species and their values. Janka hardness is a critical AI agent filter — queries for "pet-friendly hardwood" or "high-traffic hardwood flooring" are matched against hardness values, and a product without a numeric Janka value is invisible to these filter chains. Also include a separate "Species" property so agents can match both by species name and by hardness threshold.
What schema.org certification covers FloorScore and GreenGuard Gold for LVP flooring?
Use hasCertification with a Certification object for each: FloorScore is issued by SCS Global Services; GreenGuard Gold is issued by UL Environment. Add separate objects for each certification held — do not combine them into a single text string. Both address VOC emissions but GreenGuard Gold has stricter limits for schools and healthcare facilities. AI agents handling queries like "low-VOC flooring for nursery" or "FloorScore certified LVP" match against these Certification objects, not against text in the product description.
How do I distinguish LVP wear layer thickness from total plank thickness in schema.org?
Use two separate additionalProperty entries with distinct names: "Wear Layer Thickness" with unitCode "MIL" for the wear layer (measured in thousandths of an inch), and "Total Thickness" with unitCode "MMT" for the total plank thickness in millimetres. Never merge them into a single property — a 12mil wear layer in a 6.5mm plank is a very different product from a 12mm total thickness plank, and the confusion misleads both buyers and AI agents. The wear layer determines traffic rating and durability; the total thickness determines subfloor compatibility and installation height.
Related Guides
- Our product specifications schema guide — full
additionalPropertypattern for all product types, unitCode reference, and metafield-to-schema mapping - Environmental certifications schema guide —
hasCertificationdeep-dive covering EPD, EU Ecodesign, ecolabels, and recycled content - Unit pricing structured data —
UnitPriceSpecificationfor per-square-metre and per-square-foot flooring pricing