Optimization Guide
Shopify Medical Device & Health Product Schema — FDA Clearance, NDC Codes & OTC Markup
AI health shopping agents handling queries like "FDA-cleared continuous glucose monitor compatible with iPhone," "OTC antihistamine non-drowsy 24-hour," or "CE-marked pulse oximeter Class IIa medical device" need machine-readable regulatory signals — FDA clearance numbers, NDC codes, device class designations, and Rx/OTC status. Shopify's default JSON-LD outputs none of these. For medical devices and health products, missing regulatory structured data doesn't just cost traffic — it creates trust gaps that prevent health-focused AI agents from surfacing your products to buyers specifically searching for regulatory compliance.
Product @type enriched with hasCertification for FDA 510(k)/PMA/CE Medical/ISO 13485, additionalProperty for FDA device class (I/II/III), Rx/OTC status, HCPCS code, and active ingredients, identifier for NDC numbers, and safetyConsideration for required regulatory warnings. Store all values in a healthcare.* metafield namespace. Gate prescription-required offers behind appropriate access controls.
Why Medical Device Listings Need Specialized Structured Data
AI health shopping agents apply a fundamentally different evaluation framework than general shopping agents. For consumer health products, the primary filters are regulatory status (FDA-cleared or not), clinical indication (what the device treats or measures), Rx/OTC status (who can buy it without a prescription), and insurance/HCPCS billing compatibility. These signals are absent from standard e-commerce structured data vocabularies — they don't appear in the basic Product schema.
The stakes are higher in health commerce than in general commerce. AI agents trained on health query contexts apply conservative defaults: if regulatory status is unclear from structured data, the agent may either suppress the product recommendation (risk aversion) or qualify it with uncertainty statements ("I cannot confirm this device is FDA-cleared"). Adding structured regulatory signals removes this uncertainty and positions your product as a verified, compliant option for health queries.
FDA device classification overview
| Class | Regulatory pathway | Risk level | Examples |
|---|---|---|---|
| Class I | General controls, mostly exempt from 510(k) | Low risk | Bandages, manual wheelchairs, elastic bandages |
| Class II | 510(k) clearance required (most devices) | Moderate risk | Blood pressure monitors, pulse oximeters, CPAP machines |
| Class III | PMA (Pre-Market Approval) required | High risk / life-sustaining | Implantable devices, cochlear implants, certain diagnostic systems |
hasCertification for FDA Clearance and Medical CE Marking
The hasCertification property (from the schema.org Certification vocabulary) is the primary mechanism for encoding regulatory clearances and quality system certifications on medical device products. Include the certification identification number (K-number for 510(k), P-number for PMA, notified body registration for CE) to enable programmatic verification.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "BreathEasy Pro Pulse Oximeter — Fingertip, Bluetooth, FDA 510(k) Cleared",
"description": "Clinical-grade fingertip pulse oximeter measuring SpO2 (blood oxygen saturation) and pulse rate. Bluetooth connectivity for Apple Health and Google Fit. FDA 510(k) cleared for professional and home use. CE Medical certified (MDR 2017/745). ISO 13485 manufacturing certified.",
"sku": "OXI-BE-PRO-BT",
"mpn": "BEP-1000-BT",
"brand": { "@type": "Brand", "name": "BreathEasy Medical" },
"hasCertification": [
{
"@type": "Certification",
"name": "FDA 510(k) Clearance",
"issuedBy": {
"@type": "Organization",
"name": "U.S. Food and Drug Administration (FDA)",
"url": "https://www.fda.gov"
},
"certificationIdentification": "K221847",
"url": "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfpmn/pmn.cfm?ID=K221847",
"validFrom": "2022-08-15"
},
{
"@type": "Certification",
"name": "CE Medical Device Regulation (MDR 2017/745) — Class IIa",
"issuedBy": {
"@type": "Organization",
"name": "TÜV SÜD (Notified Body 0123)",
"url": "https://www.tuvsud.com"
},
"certificationIdentification": "CE-MDR-2022-BEP-1000",
"validFrom": "2022-09-01"
},
{
"@type": "Certification",
"name": "ISO 13485:2016 — Medical Device Quality Management System",
"issuedBy": {
"@type": "Organization",
"name": "BSI Group",
"url": "https://www.bsigroup.com"
},
"certificationIdentification": "FM 12345",
"validFrom": "2021-03-15",
"validUntil": "2024-03-14"
}
]
}
</script>
The certificationIdentification field carries the machine-verifiable identifier: the FDA K-number links directly to the FDA's CDRH database, and AI agents can cross-reference this to confirm clearance scope, indicated use, and device classification. Include url pointing directly to the FDA database entry or notified body registration page — this is the strongest trust signal available for medical device products.
additionalProperty for Device Class, Rx/OTC Status, and Clinical Indicators
Schema.org's additionalProperty with PropertyValue is the vehicle for structured device metadata that doesn't map to a standard schema.org property. For medical devices and health products, the most valuable additionalProperty fields are:
{
"@type": "Product",
"name": "BreathEasy Pro Pulse Oximeter",
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "FDA Device Class",
"value": "Class II",
"propertyID": "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfpcd/classification.cfm"
},
{
"@type": "PropertyValue",
"name": "FDA Product Code",
"value": "DQO",
"propertyID": "https://www.fda.gov/medical-devices/classify-your-medical-device/product-codes"
},
{
"@type": "PropertyValue",
"name": "Drug Status",
"value": "OTC"
},
{
"@type": "PropertyValue",
"name": "Prescription Required",
"value": "No"
},
{
"@type": "PropertyValue",
"name": "Intended Use",
"value": "Measurement of blood oxygen saturation (SpO2) and pulse rate in adult patients"
},
{
"@type": "PropertyValue",
"name": "Measurement Range SpO2",
"value": "70–100%",
"unitCode": "P1"
},
{
"@type": "PropertyValue",
"name": "Measurement Range Pulse Rate",
"value": "30–250 bpm"
},
{
"@type": "PropertyValue",
"name": "HCPCS Code",
"value": "A4614",
"propertyID": "https://www.cms.gov/Medicare/Coding/HCPCSReleaseCodeSets",
"description": "Peak flow rate meter; for diagnostic use"
},
{
"@type": "PropertyValue",
"name": "Latex Free",
"value": "Yes"
}
]
}
High-value additionalProperty fields for medical/health products
| Property name | Value examples | AI query use |
|---|---|---|
| FDA Device Class | Class I, Class II, Class III | "FDA Class II medical devices," "Class I exempt devices" |
| FDA Product Code | DQO, FPA, JXN | Direct database lookup by procurement agents |
| Drug Status | OTC, Rx, Behind-the-Counter (BTC) | "OTC antihistamine," "no prescription needed" |
| Prescription Required | Yes, No | Direct filter for prescription status |
| HCPCS Code | A4614, E0601, K0001 | Insurance billing code matching for procurement agents |
| Intended Use / Indication | "Measurement of SpO2…" | Clinical indication matching queries |
| Latex Free | Yes, No | "latex-free medical supplies," allergy-safe filters |
| Sterile | Sterile, Non-sterile | "sterile wound dressings," "sterile catheters" |
| Single Use | Yes, No | "single-use disposable," "reusable medical device" |
NDC Codes for OTC Drug Products
National Drug Code (NDC) is the FDA's unique identifier for human drug products, including OTC medications. The NDC format is a 10-digit number divided into three segments: labeler code - product code - package code (e.g., 49348-0006-23). For OTC drugs sold on Shopify, the NDC should appear in two places in structured data:
{
"@type": "Product",
"name": "AllerStop Non-Drowsy Antihistamine — Loratadine 10mg — 30 Tablets",
"description": "Loratadine 10mg tablets. Non-drowsy 24-hour allergy relief. Active ingredient: Loratadine 10mg. OTC use: relieves runny nose, sneezing, itchy/watery eyes, itchy throat/nose due to hay fever or other upper respiratory allergies.",
"sku": "ALLERSTOP-LOR-30CT",
"gtin12": "312547601234",
"identifier": [
{
"@type": "PropertyValue",
"name": "NDC",
"propertyID": "https://www.fda.gov/drugs/drug-approvals-and-databases/national-drug-code-directory",
"value": "49348-0006-23"
}
],
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Active Ingredient",
"value": "Loratadine 10mg"
},
{
"@type": "PropertyValue",
"name": "Drug Status",
"value": "OTC"
},
{
"@type": "PropertyValue",
"name": "Dosage Form",
"value": "Tablet"
},
{
"@type": "PropertyValue",
"name": "Route of Administration",
"value": "Oral"
},
{
"@type": "PropertyValue",
"name": "Strength",
"value": "10mg"
},
{
"@type": "PropertyValue",
"name": "Indication",
"value": "Temporary relief of symptoms due to hay fever or other upper respiratory allergies"
}
],
"safetyConsideration": "Do not use if you have ever had an allergic reaction to this product or any of its ingredients. Ask a doctor before use if you have liver or kidney disease. When using this product do not take more than directed. Stop use and ask a doctor if an allergic reaction occurs."
}
The safetyConsideration property carries the Drug Facts "Warnings" section text. AI health shopping agents trained on pharmaceutical safety content use this field to surface appropriate warnings when recommending OTC medications — answering "is this safe for people with kidney disease?" or "can I take this with other medications?" by referencing the structured warning text.
Dawn Liquid Snippet: Medical Device JSON-LD from Metafields
Save as snippets/healthcare-product-schema.liquid. Renders for products in the "medical-devices" or "otc-health" collections. Uses a healthcare.* metafield namespace.
{% comment %} healthcare-product-schema.liquid — medical device + OTC health product schema {% endcomment %}
{% assign is_medical = false %}
{% for collection in product.collections %}
{% if collection.handle == 'medical-devices' or collection.handle == 'otc-health' or collection.handle == 'health-supplements' %}
{% assign is_medical = true %}
{% endif %}
{% endfor %}
{% if product.tags contains 'fda-cleared' or product.tags contains 'ce-medical' or product.tags contains 'otc-drug' %}
{% assign is_medical = true %}
{% endif %}
{% if is_medical %}
{% assign fda_clearance_num = product.metafields.healthcare.fda_clearance_number %}
{% assign fda_device_class = product.metafields.healthcare.fda_device_class %}
{% assign fda_product_code = product.metafields.healthcare.fda_product_code %}
{% assign drug_status = product.metafields.healthcare.drug_status %}
{% assign ndc_code = product.metafields.healthcare.ndc_code %}
{% assign active_ingredient = product.metafields.healthcare.active_ingredient %}
{% assign hcpcs_code = product.metafields.healthcare.hcpcs_code %}
{% assign safety_warning = product.metafields.healthcare.safety_warning %}
{% assign iso_cert_number = product.metafields.healthcare.iso_13485_cert %}
{% assign ce_notified_body = product.metafields.healthcare.ce_notified_body %}
{% assign intended_use = product.metafields.healthcare.intended_use %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": {{ product.title | json }},
"description": {{ product.description | strip_html | truncatewords: 80 | json }},
"url": "{{ shop.url }}{{ product.url }}",
"sku": {{ product.selected_or_first_available_variant.sku | json }}
{% if product.selected_or_first_available_variant.barcode != blank %}
,"gtin": {{ product.selected_or_first_available_variant.barcode | json }}
{% endif %}
{% if product.vendor != blank %}
,"brand": { "@type": "Brand", "name": {{ product.vendor | json }} }
{% endif %}
{% assign has_certs = false %}
{% if fda_clearance_num != blank or iso_cert_number != blank %}{% assign has_certs = true %}{% endif %}
{% if has_certs %}
,"hasCertification": [
{% if fda_clearance_num != blank %}
{
"@type": "Certification",
"name": "FDA 510(k) Clearance",
"issuedBy": { "@type": "Organization", "name": "U.S. Food and Drug Administration", "url": "https://www.fda.gov" },
"certificationIdentification": {{ fda_clearance_num | json }},
"url": {{ "https://www.accessdata.fda.gov/scripts/cdrh/cfdocs/cfpmn/pmn.cfm?ID=" | append: fda_clearance_num | json }}
}
{% endif %}
{% if iso_cert_number != blank %}
{% if fda_clearance_num != blank %},{% endif %}
{
"@type": "Certification",
"name": "ISO 13485:2016 — Medical Device Quality Management",
"certificationIdentification": {{ iso_cert_number | json }}
}
{% endif %}
]
{% endif %}
,"additionalProperty": [
{% if fda_device_class != blank %}
{ "@type": "PropertyValue", "name": "FDA Device Class", "value": {{ fda_device_class | json }} }
{% endif %}
{% if fda_product_code != blank %}
,{ "@type": "PropertyValue", "name": "FDA Product Code", "value": {{ fda_product_code | json }} }
{% endif %}
{% if drug_status != blank %}
,{ "@type": "PropertyValue", "name": "Drug Status", "value": {{ drug_status | json }} }
,{ "@type": "PropertyValue", "name": "Prescription Required", "value": {% if drug_status == 'Rx' %}"Yes"{% else %}"No"{% endif %} }
{% endif %}
{% if active_ingredient != blank %}
,{ "@type": "PropertyValue", "name": "Active Ingredient", "value": {{ active_ingredient | json }} }
{% endif %}
{% if hcpcs_code != blank %}
,{ "@type": "PropertyValue", "name": "HCPCS Code", "value": {{ hcpcs_code | json }} }
{% endif %}
{% if intended_use != blank %}
,{ "@type": "PropertyValue", "name": "Intended Use", "value": {{ intended_use | json }} }
{% endif %}
]
{% if ndc_code != blank %}
,"identifier": [{
"@type": "PropertyValue",
"name": "NDC",
"propertyID": "https://www.fda.gov/drugs/drug-approvals-and-databases/national-drug-code-directory",
"value": {{ ndc_code | json }}
}]
{% endif %}
{% if safety_warning != blank %}
,"safetyConsideration": {{ safety_warning | json }}
{% endif %}
,"offers": {
"@type": "Offer",
"price": {{ product.selected_or_first_available_variant.price | money_without_currency | json }},
"priceCurrency": {{ cart.currency.iso_code | json }},
"availability": {% if product.available %}"https://schema.org/InStock"{% else %}"https://schema.org/OutOfStock"{% endif %},
"url": "{{ shop.url }}{{ product.url }}"
}
}
</script>
{% endif %}
healthcare.* metafield namespace
| Metafield | Type | Maps to |
|---|---|---|
healthcare.fda_clearance_number |
Single line text | hasCertification.certificationIdentification (FDA 510k K-number) |
healthcare.fda_device_class |
Single line text | additionalProperty FDA Device Class value |
healthcare.fda_product_code |
Single line text | additionalProperty FDA Product Code |
healthcare.drug_status |
Single line text | additionalProperty Drug Status (OTC / Rx) |
healthcare.ndc_code |
Single line text | identifier NDC PropertyValue |
healthcare.active_ingredient |
Single line text | additionalProperty Active Ingredient |
healthcare.hcpcs_code |
Single line text | additionalProperty HCPCS Code |
healthcare.safety_warning |
Multi-line text | safetyConsideration |
healthcare.intended_use |
Single line text | additionalProperty Intended Use |
healthcare.iso_13485_cert |
Single line text | hasCertification ISO 13485 cert number |
5 Common Medical Device Schema Mistakes
| # | Mistake | Impact | Fix |
|---|---|---|---|
| 1 | Claiming FDA clearance in product description text without machine-readable hasCertification |
AI health agents cannot verify claims made in free-text descriptions — they require structured certification data to assert "this device is FDA-cleared." Description-only claims are treated as unverified marketing text | Add hasCertification with the K-number, issuedBy FDA, and a url pointing to the FDA database entry. This enables programmatic verification and signals credibility to AI trust systems |
| 2 | Omitting FDA device class and product code | AI procurement agents filtering for specific device classes ("Class II blood pressure monitors") or specific FDA product codes cannot filter your catalog — even if you have the certification | Add additionalProperty for "FDA Device Class" (Class I/II/III) and "FDA Product Code" (the three-letter product code from the FDA device classification database) |
| 3 | No NDC code in structured data for OTC drug products | AI health agents cross-reference NDC numbers to validate active ingredients, check generic equivalents, and verify OTC monograph compliance. Without NDC in structured data, these verification steps cannot run and the product appears unverified | Add NDC using the identifier property with a PropertyValue specifying the official NDC format (labeler-product-package, e.g., "49348-0006-23") |
| 4 | Missing safetyConsideration for products with regulatory warning requirements |
AI health agents answering "is this safe for [condition]?" cannot surface the regulatory warning text if it's absent from structured data. This creates liability exposure and reduces agent confidence in recommending the product | Map the Drug Facts "Warnings" section or device Instructions for Use safety warnings to safetyConsideration on the Product entity |
| 5 | Using generic @type (Product) without any regulatory properties — relying on description keywords for medical device matching | Keyword-based matching in descriptions is unreliable for health queries — AI agents with health safety frameworks require structured signals to distinguish regulated devices from general consumer products claiming health benefits | Add at minimum: hasCertification (for FDA/CE-cleared devices), additionalProperty for Device Class and Rx/OTC status, and safetyConsideration for warnings. These three additions transform a generic product into a verifiably regulated health item in AI agent context |
Frequently Asked Questions
Should I use a special @type for medical devices on Shopify?
No — use Product @type enriched with medical-specific properties. Schema.org's health/clinical extension (health-lifesci.schema.org) has MedicalDevice and related types, but they're designed for clinical databases, not e-commerce product pages, and aren't processed by Google's Shopping systems. Stick with Product + hasCertification + additionalProperty + safetyConsideration for Shopify medical device listings.
How do I encode FDA 510(k) clearance in schema.org?
Use hasCertification with @type: "Certification", name: "FDA 510(k) Clearance", issuedBy: { '@type': 'Organization', 'name': 'U.S. Food and Drug Administration' }, certificationIdentification set to the K-number (e.g., "K221847"), and url pointing to the FDA CDRH database entry. For PMA devices, use "FDA PMA Approval" with the P-number. For CE Medical marking, see Shopify Toy Safety Schema for the hasCertification CE pattern.
Where do I put the NDC for OTC drug products?
Use the identifier property with a PropertyValue: { '@type': 'PropertyValue', 'name': 'NDC', 'propertyID': 'https://www.fda.gov/drugs/…', 'value': '49348-0006-23' }. The NDC format is labeler code - product code - package code. If the product UPC/EAN equals the NDC, also set it in the gtin field. For dietary supplements (not drugs), see Shopify Dietary Supplement Schema.
How do I signal Rx vs OTC status?
Use additionalProperty: { '@type': 'PropertyValue', 'name': 'Drug Status', 'value': 'OTC' } for over-the-counter products. For Rx, set value: 'Rx' and additionally { 'name': 'Prescription Required', 'value': 'Yes' }. This allows AI health agents to apply appropriate gating — surfacing OTC products freely while flagging Rx products with "requires prescription" qualifiers in their responses.
What hasCertification values matter most for medical devices?
Priority order: (1) FDA 510(k)/PMA clearance with K-number or P-number (US market); (2) CE MDR 2017/745 marking with notified body and certificate number (EU market); (3) ISO 13485 quality system certification; (4) UL/CSA for electrical devices; (5) FDA OTC monograph or NDA for drug products. Each certification is most valuable when it includes the certificationIdentification number — enabling programmatic verification against public regulatory databases. For product safety certifications across other categories, see Product Safety Certifications Schema.
Are your medical device regulatory signals invisible to AI health agents?
CatalogScan audits your Shopify store's structured data and identifies missing FDA clearance markup, absent NDC identifiers, unstructured safety warnings, and omitted device class signals — ensuring your health and medical products surface credibly in AI health shopping queries.
Run Free Scan