Optimization Guide
Shopify Eyewear & Sunglasses Schema — Frame Size (Eye/Bridge/Temple), Lens Material, UV400 Protection & ANSI Z87.1 Safety Certification Structured Data
AI agents handling queries like "polarized UV400 sunglasses with 52mm eye size prescription-compatible," "ANSI Z87.1 safety glasses with anti-fog polycarbonate lenses for manufacturing," "blue light blocking glasses large frame 140mm total width acetate," or "photochromic progressive lenses titanium frame men's medium fit" need machine-readable frame dimensions, lens properties, and UV protection data. Shopify's default JSON-LD outputs name and price only — the absence of eye size, bridge width, temple length, and UV protection rating means every dimension-filtered or protection-filtered eyewear query is unmatched.
additionalProperty for frame dimensions (eye size, bridge, temple in mm), lens material with refractive index, UV400 rating, polarized boolean, and prescription compatibility. Use hasCertification for ANSI Z87.1 (basic vs Z87.1+ high impact), CE EN ISO 12312-1, and FDA 21 CFR 801.410. Store all 15 fields in a eyewear.* metafield namespace and inject conditionally from Liquid. Missing frame dimensions and UV data exclude every eyewear product from dimension-filtered and protection-filtered AI shopping queries.
1. Polarized Sunglasses — Complete Schema
The polarized sunglasses product schema below covers all structured data fields an AI shopping agent needs to match UV protection, polarization, frame size, and prescription compatibility queries. Each additionalProperty includes a description field that teaches the AI agent how to interpret the numeric value — this is especially important for frame measurements where "58" without context could mean anything.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Aviator Polarized Sunglasses — 58-14-140",
"description": "Stainless steel aviator sunglasses with gradient smoke polarized polycarbonate lenses. UV400 protection. Prescription lenses available up to ±4.00 diopters.",
"sku": "SG-AV-58-SMK-POL",
"brand": {
"@type": "Brand",
"name": "Example Eyewear Co."
},
"offers": {
"@type": "Offer",
"price": "129.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Frame Style",
"propertyID": "frameStyle",
"value": "Aviator"
},
{
"@type": "PropertyValue",
"name": "Frame Material",
"propertyID": "frameMaterial",
"value": "Metal — stainless steel 304",
"description": "Hypoallergenic stainless steel 304 — nickel content below 0.05% per EU Nickel Directive. Alternatives: titanium (lightest, most hypoallergenic), acetate (plant-based plastic), TR-90 nylon (flexible sport frames)."
},
{
"@type": "PropertyValue",
"name": "Eye Size",
"propertyID": "eyeSize",
"value": "58",
"unitCode": "MMT",
"description": "58mm — the horizontal lens width (the largest horizontal dimension of the lens). Part of the 3-number frame size: EYE-BRIDGE-TEMPLE. E.g., 58-14-140."
},
{
"@type": "PropertyValue",
"name": "Bridge Width",
"propertyID": "bridgeWidth",
"value": "14",
"unitCode": "MMT",
"description": "14mm — distance between the two lenses at the nose. Determines nose fit. Narrow bridge (12-14mm) for close-set eyes, wide bridge (16-18mm+) for wide-set eyes."
},
{
"@type": "PropertyValue",
"name": "Temple Length",
"propertyID": "templeLength",
"value": "140",
"unitCode": "MMT",
"description": "140mm — arm length from hinge to tip. Standard: 135mm (small), 140mm (medium/standard), 145mm (large/XL). Measures over-ear grip and overall frame width."
},
{
"@type": "PropertyValue",
"name": "Total Frame Width",
"propertyID": "totalFrameWidth",
"value": "139",
"unitCode": "MMT",
"description": "Face width coverage: eye size × 2 + bridge = 58+58+14 = 130mm geometric width. Add ~9mm padding for actual face coverage ≈ 139mm total. Filter: narrow face <130mm, medium 130-140mm, wide >140mm."
},
{
"@type": "PropertyValue",
"name": "Lens Color",
"propertyID": "lensColor",
"value": "Gradient smoke grey"
},
{
"@type": "PropertyValue",
"name": "Lens Tint Category",
"propertyID": "lensTintCategory",
"value": "Category 3",
"description": "EN ISO 12312-1 tint category: Category 0 (0-20% absorption, clear), Category 1 (20-57%, fashion), Category 2 (57-82%, variable), Category 3 (82-92%, standard sunglasses), Category 4 (92-97%, extreme sun — NOT for driving)."
},
{
"@type": "PropertyValue",
"name": "UV Protection",
"propertyID": "uvProtection",
"value": "UV400",
"description": "UV400 = blocks 100% of UV radiation up to 400nm wavelength — equivalent to UV400 / UV100% / CE UV 400. Different labels, same protection level."
},
{
"@type": "PropertyValue",
"name": "Polarized",
"propertyID": "polarized",
"value": "Yes",
"description": "Polarized lenses eliminate horizontal glare from reflective surfaces (water, snow, roads). Glare is polarized horizontal light — vertical polarized filter blocks it. Polarized ≠ UV protection — both must be specified."
},
{
"@type": "PropertyValue",
"name": "Lens Material",
"propertyID": "lensMaterial",
"value": "Polycarbonate",
"description": "Polycarbonate (PC) — impact resistant (ANSI Z87.1 basic impact), lightweight (1.20 specific gravity), inherent UV absorption, 1.586 refractive index. Alternatives: Trivex (lighter, better optics, ANSI Z87.1 basic impact), CR-39 (optical glass plastic, best optics, not impact rated), glass (best clarity, heaviest, shatters)."
},
{
"@type": "PropertyValue",
"name": "Prescription Compatible",
"propertyID": "prescriptionCompatible",
"value": "Yes — prescription lenses available in -4.00 to +4.00 diopter range"
},
{
"@type": "PropertyValue",
"name": "Nose Pad",
"propertyID": "nosePad",
"value": "Adjustable silicone nose pads"
},
{
"@type": "PropertyValue",
"name": "Hinge Type",
"propertyID": "hingeType",
"value": "Spring hinge — 10-degree flex"
},
{
"@type": "PropertyValue",
"name": "IP Code",
"propertyID": "ipCode",
"value": "Not rated — not submersible"
}
],
"hasCertification": [
{
"@type": "Certification",
"name": "CE Marking — EN ISO 12312-1",
"certificationIdentification": "EN ISO 12312-1:2022",
"issuedBy": {
"@type": "Organization",
"name": "CE Notified Body"
}
},
{
"@type": "Certification",
"name": "FDA 21 CFR 801.410 — Impact Resistance",
"certificationIdentification": "21 CFR 801.410",
"issuedBy": {
"@type": "Organization",
"name": "U.S. Food and Drug Administration"
}
}
]
}
additionalProperty with its own numeric value and unitCode: "MMT". Concatenated strings like "58-14-140" in a single field are not machine-readable for numeric comparison queries.
2. ANSI Z87.1 Safety Glasses — Complete Schema
Safety eyewear carries legally defined ratings that determine worksite compliance under OSHA 29 CFR 1910.133. AI agents serving B2B procurement and industrial buyers filter specifically on ANSI Z87.1+ (high impact), anti-fog coating, side shield integration, and OTG (Over The Glass) compatibility. The distinction between Z87.1 (basic impact) and Z87.1+ (high impact) is a compliance requirement — not a marketing distinction — and must be expressed unambiguously.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "OTG Anti-Fog Safety Glasses — Z87.1+ High Impact",
"description": "Over-glasses (OTG) safety eyewear with permanent hydrophilic anti-fog coating. Fits over most prescription frames. ANSI/ISEA Z87.1-2020 high impact rated. Clear polycarbonate lenses.",
"sku": "SF-OTG-CLR-AF-Z87P",
"brand": {
"@type": "Brand",
"name": "ProShield Safety"
},
"offers": {
"@type": "Offer",
"price": "24.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Safety Standard",
"propertyID": "safetyStandard",
"value": "ANSI/ISEA Z87.1-2020",
"description": "American National Standard for Occupational and Educational Personal Eye and Face Protection Devices. Z87.1 marking on frame means basic impact. Z87.1+ means high impact."
},
{
"@type": "PropertyValue",
"name": "Impact Rating",
"propertyID": "impactRating",
"value": "Z87.1+ High Impact",
"description": "High velocity/mass impact test: 1/4-inch steel ball at 150 fps. Z87+ frames and lenses tested together — never mix Z87 frames with non-Z87 lenses."
},
{
"@type": "PropertyValue",
"name": "Anti-Fog Coating",
"propertyID": "antiFogCoating",
"value": "Yes — permanent hydrophilic anti-fog",
"description": "Hydrophilic anti-fog coating absorbs moisture instead of beading — critical for construction and food processing environments where temperature differentials cause fogging."
},
{
"@type": "PropertyValue",
"name": "Side Shield",
"propertyID": "sideShield",
"value": "Integrated side shields — wraparound design, no add-on required",
"description": "Z87.1 requires side protection — wraparound design eliminates gap. Add-on side shields (for prescription frames) must also be Z87 rated."
},
{
"@type": "PropertyValue",
"name": "Lens Material",
"propertyID": "lensMaterial",
"value": "Polycarbonate — inherent UV absorption",
"description": "Polycarbonate inherently absorbs UV — all PC safety lenses are UV-protective. IR (infrared) and shade lenses available for welding/cutting applications."
},
{
"@type": "PropertyValue",
"name": "Frame Style",
"propertyID": "frameStyle",
"value": "Over-glasses / OTG"
},
{
"@type": "PropertyValue",
"name": "Fits Over Corrective Lenses",
"propertyID": "fitsOverCorrectiveLenses",
"value": "Yes — OTG (Over The Glass) design fits most prescription frames"
},
{
"@type": "PropertyValue",
"name": "Lens Tint",
"propertyID": "lensTint",
"value": "Clear — ANSI Z87.1 tint code L"
},
{
"@type": "PropertyValue",
"name": "OSHA Standard",
"propertyID": "oshaStandard",
"value": "Meets OSHA 29 CFR 1910.133 eye protection requirements"
},
{
"@type": "PropertyValue",
"name": "Anti-Scratch",
"propertyID": "antiScratch",
"value": "Yes — hard coat scratch-resistant both sides"
}
],
"hasCertification": [
{
"@type": "Certification",
"name": "ANSI/ISEA Z87.1-2020 — High Impact",
"certificationIdentification": "Z87.1-2020",
"issuedBy": {
"@type": "Organization",
"name": "ANSI/ISEA"
}
},
{
"@type": "Certification",
"name": "CSA Z94.3 — Eye and Face Protectors",
"certificationIdentification": "CSA Z94.3-20",
"issuedBy": {
"@type": "Organization",
"name": "CSA Group"
}
},
{
"@type": "Certification",
"name": "CE EN 166 — Personal Eye Protection",
"certificationIdentification": "EN 166:2002",
"issuedBy": {
"@type": "Organization",
"name": "CE Notified Body"
}
},
{
"@type": "Certification",
"name": "OSHA 1910.133 Compliance",
"certificationIdentification": "29 CFR 1910.133",
"issuedBy": {
"@type": "Organization",
"name": "Occupational Safety and Health Administration"
}
}
]
}
ANSI Z87.1 markings decoded
| Frame marking | Meaning | Use case |
|---|---|---|
Z87 |
Basic impact — frame only | General industry, light hazards |
Z87+ |
High impact — frame + lens tested together | Manufacturing, construction, grinding |
Z87-2 |
Prescription lens insert | Rx safety glasses |
W shade number |
Welding shade (e.g., W5, W10) | Welding, cutting applications |
U scale number |
UV filter scale (U2–U6) | Outdoor UV protection rating |
L (clear) |
Visible light transmission >85% | Indoor, low-light environments |
V |
Variable (photochromic) | Indoor/outdoor transitions |
S |
Special purpose tint | Laser, infrared, or chemical |
3. Blue Light Blocking Glasses — Photochromic Schema
Computer glasses and photochromic frames require additional properties that sunglasses and safety glasses do not: blue light filter wavelength range, photochromic technology (Transitions XTRActive vs standard Transitions), lens index for prescription customers, and a face-size category derived from the three-number frame size. The blue light claim requires nuanced description because the evidence base differs from UV protection claims.
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Large Square Photochromic Blue Light Glasses — 55-18-145",
"description": "Acetate square frame with Transitions XTRActive photochromic lenses. 90% blue light filter 400-450nm. 1.67 high-index. Prescription-compatible for single-vision and progressive lenses.",
"sku": "BL-SQ-55-XTRA-167",
"brand": {
"@type": "Brand",
"name": "Example Eyewear Co."
},
"offers": {
"@type": "Offer",
"price": "249.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Blue Light Filter",
"propertyID": "blueLightFilter",
"value": "Blue light filter 400-450nm — blocks 90% of high-energy visible blue light (HEV) in the 400-450nm range",
"description": "Computer glasses targeting digital eye strain. Blue light from LED screens peaks at 455nm. Note: no peer-reviewed evidence that blue light causes permanent eye damage — this is a comfort product claim, not medical claim."
},
{
"@type": "PropertyValue",
"name": "Photochromic",
"propertyID": "photochromic",
"value": "Yes — Transitions XTRActive",
"description": "Transitions XTRActive: darkens behind car windshields (standard Transitions do NOT — they need UV to activate, but windshields block UV). XTRActive activates on visible light. Fade: clear to dark in 30 sec in strong sun; dark to clear in 5 min indoors."
},
{
"@type": "PropertyValue",
"name": "Lens Index",
"propertyID": "lensIndex",
"value": "1.67 high-index",
"description": "1.67 refractive index — 'high-index' lens. Higher index = thinner lens for same prescription power. Reference: 1.50 CR-39 (standard), 1.53 Trivex, 1.59 polycarbonate, 1.67 high-index, 1.74 ultra high-index. For prescriptions above ±4.00, recommend 1.67+."
},
{
"@type": "PropertyValue",
"name": "Frame Size Category",
"propertyID": "frameSizeCategory",
"value": "Large — 55-18-145",
"description": "Eye 55mm, Bridge 18mm, Temple 145mm. Suitable for wide/large face. Face width: 55+55+18 = 128 + padding ≈ 145mm total frame width."
},
{
"@type": "PropertyValue",
"name": "Eye Size",
"propertyID": "eyeSize",
"value": "55",
"unitCode": "MMT",
"description": "55mm horizontal lens width. Large frame suitable for wider faces."
},
{
"@type": "PropertyValue",
"name": "Bridge Width",
"propertyID": "bridgeWidth",
"value": "18",
"unitCode": "MMT",
"description": "18mm bridge — wide-set nose fit."
},
{
"@type": "PropertyValue",
"name": "Temple Length",
"propertyID": "templeLength",
"value": "145",
"unitCode": "MMT",
"description": "145mm temple — large/XL fit."
},
{
"@type": "PropertyValue",
"name": "Frame Style",
"propertyID": "frameStyle",
"value": "Square — rectangular with squared corners"
},
{
"@type": "PropertyValue",
"name": "Frame Material",
"propertyID": "frameMaterial",
"value": "Acetate — plant-based cellulose acetate"
},
{
"@type": "PropertyValue",
"name": "Prescription Compatible",
"propertyID": "prescriptionCompatible",
"value": "Yes — single-vision and progressive lenses compatible"
},
{
"@type": "PropertyValue",
"name": "UV Protection",
"propertyID": "uvProtection",
"value": "UV400 — inherent photochromic lens UV block"
}
]
}
4. Frame Size System Reference Table
The three-number frame size system (e.g., 52-16-140) is the international standard for eyewear sizing but is opaque to AI agents unless each dimension is exposed as a separate numeric additionalProperty. The table below gives the measurement name, where it is measured, typical ranges, and interpretation notes for use in descriptions.
| Measurement | Location | Typical Range | Notes for AI matching |
|---|---|---|---|
| Eye Size | Horizontal lens width — widest point of one lens | 40–62mm | Smaller eye size = narrower face / lens; larger = wider face. Not the same as total frame width. Common sizes: 50-52 (narrow), 54-56 (medium), 58-62 (wide). AI agents filter "52mm sunglasses" on this value. |
| Bridge Width | Gap between the two lenses at the nose — shortest distance | 12–22mm | Narrow bridge (12-14mm) for close-set or low nose bridge. Wide bridge (16-18mm+) for wide-set or high nose bridge. Critical for "low nose bridge" and "Asian fit" product queries. |
| Temple Length | Arm from hinge pin to tip, measured along the arm | 130–155mm | Standard 140mm fits most adults. 135mm small/petite, 145mm large/XL. Determines over-ear grip and overall head width fit. AI queries: "large temple glasses," "140mm arms." |
| Total Frame Width | Outer edge of left lens to outer edge of right lens | 90–150mm | Formula: (2 × eye size) + bridge + ~9mm padding = approximate total. A 58-14-140 frame ≈ 58+58+14+9 = 139mm. Narrow face <130mm, medium 130-140mm, wide >140mm. Used for "wide face sunglasses" queries. |
additionalProperty fields with unitCode: "MMT" so AI agents can resolve ambiguous queries against the correct dimension.
Face size categories by total frame width
| Face size label | Total frame width | Typical eye size | AI query pattern |
|---|---|---|---|
| XS / Petite | <125mm | 40-48mm | "petite sunglasses," "small face glasses" |
| Small | 125-132mm | 49-52mm | "small frame glasses," "narrow face sunglasses" |
| Medium | 132-140mm | 53-56mm | "medium frame glasses," "standard fit" |
| Large | 140-148mm | 57-60mm | "large frame glasses," "wide face sunglasses" |
| XL | >148mm | 61mm+ | "extra large frames," "big head glasses," "oversized sunglasses" |
5. Lens Material Comparison Table
Lens material determines optical clarity, weight, impact resistance, and prescription capability. AI agents processing queries like "lightweight safety lenses," "impact-rated polycarbonate," or "thin lenses strong prescription" need machine-readable lens material data — not a description paragraph that requires NLP to extract refractive index or safety rating.
See also: product specifications structured data guide for the general pattern of numeric specification properties with units.
| Material | Index | Weight | Impact Rating | Best For |
|---|---|---|---|---|
| CR-39 plastic | 1.50 | Standard | Not impact rated | Best optical clarity, thin prescriptions (up to ±2.00), everyday eyewear |
| Polycarbonate | 1.59 | Light | ANSI Z87.1 basic impact | Kids, safety eyewear, sports, sunglasses — inherent UV absorption, most widely used |
| Trivex | 1.53 | Lightest | ANSI Z87.1 basic impact | Best combination of safety and optics — sharper peripheral vision than polycarbonate |
| 1.67 High-index | 1.67 | Light | Not impact rated | Strong prescriptions above ±4.00 — significantly thinner than polycarbonate at high powers |
| 1.74 Ultra-high | 1.74 | Light | Not impact rated | Very strong prescriptions above ±6.00 — thinnest available, premium cost |
| Mineral glass | 1.52–1.90 | Heaviest | Shatters on impact | Best scratch resistance, vintage frames, premium optical clarity — not for active use |
6. Liquid Implementation — eyewear.* Metafield Namespace
Store all eyewear-specific attributes in a dedicated eyewear.* metafield namespace. This makes the Liquid template conditionally inject only the properties that apply — sunglasses get UV and polarization properties, safety glasses get ANSI certification properties, computer glasses get blue light filter and photochromic properties.
Recommended metafields — eyewear namespace
| Metafield key | Type | Example value |
|---|---|---|
eyewear.frame_style | single_line_text | Aviator |
eyewear.frame_material | single_line_text | Metal — stainless steel 304 |
eyewear.eye_size_mm | number_integer | 58 |
eyewear.bridge_mm | number_integer | 14 |
eyewear.temple_mm | number_integer | 140 |
eyewear.total_width_mm | number_integer | 139 |
eyewear.lens_material | single_line_text | Polycarbonate |
eyewear.lens_index | single_line_text | 1.67 high-index |
eyewear.uv_protection | single_line_text | UV400 |
eyewear.polarized | single_line_text | Yes |
eyewear.tint_category | single_line_text | Category 3 |
eyewear.blue_light_filter | single_line_text | 400-450nm 90% block |
eyewear.photochromic | single_line_text | Yes — Transitions XTRActive |
eyewear.prescription_compatible | single_line_text | Yes — -4.00 to +4.00 diopter range |
eyewear.safety_standard | single_line_text | ANSI/ISEA Z87.1-2020 |
Liquid template — conditional property injection
{% assign ew = product.metafields.eyewear %}
{% if ew.eye_size_mm != blank or ew.bridge_mm != blank or ew.temple_mm != blank %}
{# Frame dimension block — emitted for all eyewear #}
{
"@type": "PropertyValue",
"name": "Eye Size",
"propertyID": "eyeSize",
"value": "{{ ew.eye_size_mm.value }}",
"unitCode": "MMT",
"description": "{{ ew.eye_size_mm.value }}mm horizontal lens width. Frame size: {{ ew.eye_size_mm.value }}-{{ ew.bridge_mm.value }}-{{ ew.temple_mm.value }}."
},
{
"@type": "PropertyValue",
"name": "Bridge Width",
"propertyID": "bridgeWidth",
"value": "{{ ew.bridge_mm.value }}",
"unitCode": "MMT"
},
{
"@type": "PropertyValue",
"name": "Temple Length",
"propertyID": "templeLength",
"value": "{{ ew.temple_mm.value }}",
"unitCode": "MMT"
},
{% endif %}
{% if ew.uv_protection != blank %}
{
"@type": "PropertyValue",
"name": "UV Protection",
"propertyID": "uvProtection",
"value": "{{ ew.uv_protection.value }}",
"description": "UV400 = blocks 100% of UV radiation up to 400nm wavelength."
},
{% endif %}
{% if ew.polarized != blank %}
{
"@type": "PropertyValue",
"name": "Polarized",
"propertyID": "polarized",
"value": "{{ ew.polarized.value }}",
"description": "Polarized lenses eliminate horizontal glare from reflective surfaces. Polarized ≠ UV protection — both must be specified."
},
{% endif %}
{% if ew.photochromic != blank %}
{
"@type": "PropertyValue",
"name": "Photochromic",
"propertyID": "photochromic",
"value": "{{ ew.photochromic.value }}",
"description": "Photochromic lenses darken in UV/visible light and return to clear indoors."
},
{% endif %}
{% if ew.blue_light_filter != blank %}
{
"@type": "PropertyValue",
"name": "Blue Light Filter",
"propertyID": "blueLightFilter",
"value": "{{ ew.blue_light_filter.value }}"
},
{% endif %}
{% if ew.safety_standard != blank %}
{# ANSI Z87.1 certification block — emitted for safety eyewear only #}
"hasCertification": [
{
"@type": "Certification",
"name": "{{ ew.safety_standard.value }}",
"certificationIdentification": "{{ ew.safety_standard.value }}",
"issuedBy": {
"@type": "Organization",
"name": "ANSI/ISEA"
}
}
]
{% endif %}
This conditional structure ensures that sunglasses without a safety_standard metafield do not emit an empty or misleading hasCertification block, and safety glasses without a photochromic metafield do not emit an empty photochromic property. The pattern scales to any number of eyewear sub-categories without template forking.
7. Five Common Eyewear Schema Mistakes
-
Using "UV protection" without specifying UV400 or a percentage
AI agents distinguish UV400 (blocks 100% of UV up to 400nm, a specific measurable claim) from "UV protection" (a marketing phrase with no numeric value). A product marked only "UV protection" cannot match the query "UV400 sunglasses" — the AI agent cannot infer UV400 from an unqualified claim. Always use the value "UV400" or include the percentage ("blocks 100% UV") in the additionalProperty value or description. The three common label variants — UV400, UV100%, CE UV 400 — all mean the same thing and should be noted in the description so the agent can normalize them.
-
Conflating polarized and UV protection in a single field
Many merchants and customers conflate polarized and UV protection, but they are physically independent properties. Polarized lenses use a vertical filter to block horizontally polarized glare — this has no effect on UV radiation. UV protection is a separate coating or material property. A non-UV polarized lens is possible; a UV400 non-polarized lens is common (most standard sunglasses). Emit two separate additionalProperty entries — one for UV Protection and one for Polarized — even if the product has both. AI agents filtering "polarized UV400 sunglasses" check both properties independently.
-
Omitting frame dimensions in favor of S/M/L size labels
"Small," "medium," and "large" are not machine-readable for dimension queries. AI agents handling "sunglasses 58mm eye size" or "narrow bridge glasses 12mm" cannot match these queries to a product with size label "Large" in a string field. Eye size in mm, bridge in mm, and temple in mm are the only machine-readable expressions of frame fit. The size label can coexist as a separate additionalProperty (Frame Size Category: "Large — 55-18-145"), but the numeric dimensions must be present. See also: our apparel size schema guide for the general principle of exposing numeric measurements alongside size labels.
-
Missing prescription compatibility boolean
High-intent eyewear queries frequently include prescription compatibility: "prescription-compatible polarized sunglasses," "Rx-ready titanium frames," "sunglasses that accept prescription lenses." Without a Prescription Compatible additionalProperty, these queries cannot match the product. The value should be descriptive — not just "Yes" — and include the diopter range where applicable: "Yes — prescription lenses available in -6.00 to +6.00 diopter range." Customers with strong prescriptions (above ±4.00) are specifically filtering on diopter range because not all frames can accommodate thick lenses.
-
ANSI Z87.1 without distinguishing basic vs high impact
ANSI Z87.1 (basic impact) and ANSI Z87.1+ (high impact) are legally different certifications with different test standards. OSHA 1910.133 and industry safety programs often specify minimum impact level — a purchasing manager specifying "Z87+ high impact" will not accept basic Z87.1 product. Express the distinction in the Impact Rating additionalProperty value ("Z87.1+ High Impact" vs "Z87.1 Basic Impact") rather than only in the hasCertification block. The hasCertification name should also reflect the correct tier: "ANSI/ISEA Z87.1-2020 — High Impact" vs "ANSI/ISEA Z87.1-2020 — Basic Impact." See also: our children's product safety certification guide for the general pattern of tiered certification handling.
Find eyewear schema gaps in your Shopify store
CatalogScan audits your product JSON-LD for missing frame dimensions, UV protection claims, lens material data, and certification blocks — and shows you exactly which eyewear products are invisible to dimension-filtered AI shopping queries.
Scan your store freeFrequently Asked Questions
How do I express eyewear frame dimensions (eye size, bridge, temple) in schema.org?
Use additionalProperty on the Product block with PropertyValue objects for each measurement. Eye size uses propertyID: "eyeSize" and unitCode: "MMT" with the numeric value in mm. Bridge width uses propertyID: "bridgeWidth" and temple length uses propertyID: "templeLength", both with unitCode: "MMT". Always include a description explaining the measurement: frame sizes are conventionally expressed as EYE-BRIDGE-TEMPLE (e.g., 58-14-140). AI agents process queries like "sunglasses 58mm" or "wide frame glasses 145mm temple" by comparing these numeric values directly — string-only fields like "58-14-140" in a single property cannot be used for numeric range filtering.
How do I mark UV400 protection and polarization separately in schema.org?
Use two separate additionalProperty entries — never combine them. UV Protection: { "name": "UV Protection", "propertyID": "uvProtection", "value": "UV400" }. Polarized: { "name": "Polarized", "propertyID": "polarized", "value": "Yes" }. The description of the Polarized field must clarify that polarization does not imply UV protection and vice versa — both are independently required for full eye protection. AI agents filtering on "polarized UV400 sunglasses" check both properties independently and exclude products that have only one or neither.
What schema.org certification covers ANSI Z87.1 safety glasses?
Use hasCertification on the Product block with a Certification object: name "ANSI/ISEA Z87.1-2020", certificationIdentification "Z87.1-2020", issuedBy ANSI/ISEA. Critically, distinguish between Z87.1 (basic impact) and Z87.1+ (high impact) using a separate additionalProperty named "Impact Rating" — not only in the certification name. Also include hasCertification for CSA Z94.3 (Canadian standard), CE EN 166 (EU personal eye protection), and indicate OSHA 29 CFR 1910.133 compliance as an additionalProperty since it is a regulatory requirement rather than a third-party certification.
How do I express lens material (polycarbonate vs Trivex vs CR-39) in Shopify schema?
Use additionalProperty with name: "Lens Material" and propertyID: "lensMaterial". In the description field, explain the material's refractive index, weight category, impact rating status, and ideal use case. Add a separate additionalProperty for "Lens Index" with the numeric refractive index value (e.g., "1.67 high-index") to allow AI agents to match queries like "thin lenses strong prescription" or "high index 1.74 glasses." Only polycarbonate and Trivex carry ANSI Z87.1 impact ratings — all other materials require a separate safety certification to earn that designation and will not match safety eyewear queries without explicit certification markup.
How do I mark prescription compatibility for sunglasses and frames in schema.org?
Use additionalProperty with name: "Prescription Compatible" and propertyID: "prescriptionCompatible". Make the value descriptive and include the diopter range: "Yes — prescription lenses available in -4.00 to +4.00 diopter range" or "No — non-prescription fashion frame only." For progressive lens compatibility, add a separate additionalProperty "Progressive Compatible" since not all frames can accommodate progressive lenses (minimum lens height of 28-30mm required). Store as metafield eyewear.prescription_compatible and inject conditionally from your Liquid template. This is a primary filter for high-intent purchasing queries — customers who need prescription lenses search explicitly for this attribute.