Shopify sports nutrition schema for AI agents: NSF Certified for Sport vs Informed Sport, protein per serving, and DSHEA compliance
AI shopping agents apply conservative exclusion rules to health products: when allergen status, certification, or regulatory compliance cannot be verified from structured data, the product gets dropped from recommendations. For supplement Shopify stores, this means the 78% of stores with no third-party testing certification in their JSON-LD are invisible to every athlete asking "does this have a clean label certificate?"
Contents
- Why certification schema is the primary AI filter for supplement recommendations
- NSF Certified for Sport vs Informed Sport vs Informed Choice: three programs, different scope
- Encoding certifications:
hasCertificationwith certifying organization and batch-test scope - Protein per serving: why the serving size pairing is non-negotiable
- Amino acid profile: leucine threshold and complete protein status encoding
- DSHEA
legalDisclaimer: the required text and why AI agents look for it - Supplement form, protein source, and sweetener type controlled vocabulary
- Complete JSON-LD example: a whey protein isolate with NSF Certified for Sport
- Liquid snippet:
supp.*metafields → JSON-LD output in Dawn - Supplement metafield reference table
- 5 common mistakes
- FAQ
Why certification schema is the primary AI filter for supplement recommendations
When an AI shopping agent receives a query like "best whey protein for a drug-tested powerlifter," it does not start with price or reviews. It starts with a safety filter: can I verify that this product has been tested for prohibited substances by a recognized program? The consequence of a false positive here is severe — a competitive athlete testing positive for a prohibited substance may face a suspension measured in years. Agents trained on sports nutrition community data apply a hard exclusion: if third-party batch testing cannot be confirmed from structured data, the product is not recommended to anyone who mentions competitive athletics, drug testing, or specific certifications by name.
The same logic applies to the broader supplement consumer base. A parent buying supplements for a teenage athlete, a CrossFit competitor who signed a drug-testing agreement with their employer, or a recreational lifter who simply wants quality assurance — all of these users benefit from certification schema. AI agents handling these queries treat hasCertification with a recognized certifying organization as a trust signal that moves the product from the "unverifiable" pile to the "recommendable" pile.
Beyond drug-tested athletes, AI agents are increasingly used by general supplement consumers who ask questions like "protein powder without artificial sweeteners," "creatine that's third-party tested," or "pre-workout without proprietary blends." Each of these queries requires machine-readable supplement attributes — form, sweetener type, blend transparency, and amino acid breakdown — that most Shopify supplement stores have never encoded as structured data.
NSF Certified for Sport vs Informed Sport vs Informed Choice: three programs, different scope
The supplement certification landscape has three major batch-testing programs that AI shopping agents recognize as legitimate prohibited-substance verification. They are not interchangeable. Using the wrong program name in structured data — or collapsing all three into a generic "third-party tested" label — prevents agents from matching products to queries that name a specific program or sport organization.
| Program | Certifying body | Substances tested | Testing cadence | Accepted by |
|---|---|---|---|---|
| NSF Certified for Sport | NSF International (Ann Arbor, MI, US) | 280+ prohibited substances — WADA list + MLB/NFL/NBA/NHL/NCAA additions | Every production batch before release | MLB, NFL, NBA, NHL, NCAA, PGA, LPGA, ATP |
| Informed Sport | LGC Group (Teddington, UK) | WADA prohibited list (250+ substances) | Every production batch before release | FIFA, IOC, UFC, IPF, UK Anti-Doping, WADA signatories |
| Informed Choice | LGC Group (Teddington, UK) | WADA prohibited list (250+ substances) | Spot-testing (NOT every batch) | General quality assurance; NOT accepted by most competitive sport governing bodies |
The Informed Sport vs Informed Choice distinction is commercially critical
Both programs carry the LGC Group brand but they are not equivalent for competitive athletes. Informed Sport requires batch-level screening — every production lot is tested before it can display the Informed Sport mark. A lot that fails cannot ship under the mark. Informed Choice uses periodic spot-testing, which means a given bottle in a given batch may or may not have been tested before it reached the shelf. For athletes subject to drug testing with zero-tolerance, only Informed Sport provides batch-level assurance. An agent handling a query from a drug-tested athlete will distinguish between these two.
hasCertification with name "Labdoor Tested" and the certifying organization, but distinguish it from NSF Certified for Sport and Informed Sport in the description — Labdoor is a label accuracy signal, not a banned-substance clearance signal. Conflating them causes agents to recommend Labdoor-tested products to drug-tested athletes, which is incorrect.
Encoding certifications: hasCertification with certifying organization and batch-test scope
Schema.org's hasCertification property accepts a Certification object. For supplement certifications, include: the program name, the certifying organization with its website URL, and optionally a certificationIdentification (the product's certificate or license number, which allows verification via the certifying body's public registry). The url field on the Certification object should point directly to the product's certificate page on the certifying body's registry, not the brand's marketing page.
"hasCertification": [
{
"@type": "Certification",
"name": "NSF Certified for Sport",
"certificationIdentification": "NSF-SPORT-68423",
"issuedBy": {
"@type": "Organization",
"name": "NSF International",
"url": "https://www.nsf.org"
},
"url": "https://www.nsf.org/certified-product/68423/",
"description": "Batch-tested for 280+ prohibited substances. Every production lot tested before release. Accepted by MLB, NFL, NBA, NHL, NCAA."
}
]
If a product holds both NSF Certified for Sport AND Informed Sport certifications (uncommon but exists), encode both as separate objects in the hasCertification array. Do not merge them into a single object — each has a distinct certifying body and a distinct sport organization acceptance list. An agent matching "does this have NSF for Sport?" needs to resolve against the NSF entry specifically.
url pointing to the specific product's registry listing, AI agents can follow it to verify the certificate programmatically. A url pointing to your brand's "third-party tested" marketing page is not a verifiable reference.
Protein per serving: why the serving size pairing is non-negotiable
The single most common structured data failure for protein powders is encoding protein per serving as a standalone gram figure without the serving size (scoop weight). The gram count alone is not a quality metric — it is the denominator in the quality calculation.
Consider two products both encoding "25g protein per serving":
- Product A: 25g protein from a 30g scoop = 83.3% protein by weight. Whey protein isolate-grade.
- Product B: 25g protein from a 40g scoop = 62.5% protein by weight. Whey protein concentrate-grade — the remaining 10g is carbohydrate, fat, and other ingredients.
An AI agent handling a query for "highest protein efficiency powder" or "cleanest macro ratio" needs the denominator. Without it, both products appear equivalent from the structured data, and the agent may resort to ranking by price, reviews, or brand recognition instead of the metric the user actually cares about.
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Protein Per Serving",
"value": "25",
"unitCode": "GRM",
"description": "25g protein per 30g serving. Protein density: 83.3% by weight (isolate-grade)."
},
{
"@type": "PropertyValue",
"name": "Serving Size",
"value": "30",
"unitCode": "GRM",
"description": "One level scoop (approximately 30g). Protein-to-serving ratio: 83.3%."
},
{
"@type": "PropertyValue",
"name": "Servings Per Container",
"value": "74",
"description": "74 servings per 5 lb (2.27 kg) container."
}
]
Calories Per Serving (unitCode: CAL) alongside protein grams allows AI agents to compute protein-per-calorie, a key metric for lean-gain and weight-loss queries. A 120-calorie serving with 25g protein is a 0.83g/calorie protein density — highly efficient. Calories without protein, or protein without calories, leaves the ratio calculation incomplete.
Amino acid profile: leucine threshold and complete protein status encoding
The leucine threshold (~2.5g per serving) is the first machine-readable quality signal for muscle protein synthesis queries. Leucine is the rate-limiting amino acid for MPS signaling via the mTORC1 pathway. A protein powder meeting the leucine threshold is signaling adequacy for the primary use case of most protein supplement buyers; one that falls short — particularly common in plant-based blends where leucine fraction is lower than in whey — is a materially different product for that use case.
Encode the BCAA breakdown and leucine per serving as separate additionalProperty entries:
{
"@type": "PropertyValue",
"name": "Leucine Per Serving",
"value": "2.7",
"unitCode": "GRM",
"description": "2.7g leucine per 30g serving. Exceeds the ~2.5g threshold associated with maximal muscle protein synthesis stimulation in dose-response research."
},
{
"@type": "PropertyValue",
"name": "BCAA Per Serving",
"value": "5.5g — Leucine 2.7g / Isoleucine 1.4g / Valine 1.4g",
"description": "Branched-chain amino acids per serving. Leucine:Isoleucine:Valine ratio approximately 1.9:1:1."
},
{
"@type": "PropertyValue",
"name": "Complete Protein",
"value": "Yes",
"description": "Contains all 9 essential amino acids: leucine, isoleucine, valine, histidine, lysine, methionine, phenylalanine, threonine, tryptophan. No limiting amino acid at this serving size."
}
Proprietary blends: the disclosure requirement
A proprietary blend is a mixture of ingredients where individual amounts are hidden under a collective total weight. Under DSHEA, proprietary blends must list the total weight of the blend and name each ingredient, but individual ingredient amounts are not required. This means a product with "Amino Blend 5g" could contain 4.9g of glutamine and 0.1g of leucine — or any other split — without disclosing it.
Encoding isPropietaryBlend: true as an additionalProperty is not just compliance transparency — it is a critical signal for AI agents answering amino acid threshold queries. An agent that cannot verify the leucine content from structured data will not recommend the product for leucine-threshold-dependent queries:
{
"@type": "PropertyValue",
"name": "Proprietary Blend",
"value": "No",
"description": "Full amino acid profile disclosed. No proprietary blends. All ingredient amounts per serving are listed on the Supplement Facts panel."
}
DSHEA legalDisclaimer: the required text and why AI agents look for it
The Dietary Supplement Health and Education Act (DSHEA, 1994) requires that any structure/function claim on a dietary supplement product be accompanied by the following disclaimer, displayed "clearly and prominently" on the label:
These statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure, or prevent any disease.
Encode this in the legalDisclaimer field on the Product schema object. This serves two purposes:
- Machine-readable regulatory signal: AI agents trained on consumer health content recognize DSHEA disclaimers as indicators that a product is in the dietary supplement category — subject to DSHEA but not FDA drug approval. This helps the agent correctly categorize the product and apply appropriate recommendation caveats.
- Claim boundary enforcement: AI agents are increasingly cautious about recommending health products with therapeutic claims. A product page with "cures muscle fatigue" as product copy but a DSHEA legalDisclaimer in the JSON-LD creates a signal conflict. Encoding the correct disclaimer helps the agent understand the permitted claim category and produce appropriate recommendation language.
"legalDisclaimer": "These statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure, or prevent any disease. DSHEA Notice: This product is a dietary supplement, not a drug."
additionalProperty with a description citing the regulation and article number. Generic claims not on the EU authorized list cannot be made — this is distinct from the US DSHEA structure/function claim framework.
Supplement form, protein source, and sweetener type controlled vocabulary
Supplement-specific attributes that are frequent AI query filters — form, protein source, sweetener type — should use consistent controlled vocabulary in additionalProperty values. Inconsistent strings ("Unflavored / Unsweetened / No sweetener") for the same concept degrade AI agent matching across product catalogs.
Supplement form
| Value | Use for |
|---|---|
| Powder | Protein powders, pre-workouts, creatine monohydrate, BCAAs in powder form |
| Capsule | Hard-shell two-piece capsules (gelatin or vegetarian) |
| Softgel | Soft gelatin capsules — fish oil, CLA, fat-soluble vitamins |
| Tablet | Compressed tablets — creatine tabs, multivitamins |
| Gummy | Gummy supplements — melatonin, vitamins, collagen gummies |
| Liquid | Liquid aminos, liquid fish oil, collagen shots |
| Bar | Protein bars, meal replacement bars |
| Ready-to-Drink | RTD protein shakes, pre-mixed pre-workouts |
Protein source
| Value | Leucine fraction | Key characteristic |
|---|---|---|
| Whey Isolate | ~11–12% | Highest protein density (90%+); low lactose; fast digestion |
| Whey Concentrate | ~10–11% | 60–80% protein by weight; higher fat and lactose than isolate |
| Whey Hydrolysate | ~11% | Pre-digested; fastest absorption; may be bitter; premium cost |
| Casein | ~9% | Slow-digesting; micellar casein preferred for overnight use |
| Egg White | ~8.5% | Complete protein; dairy-free; moderate absorption rate |
| Pea Isolate | ~8% | Vegan; hypoallergenic; lower leucine than whey — often blended with rice |
| Brown Rice | ~7% | Vegan; hypoallergenic; lower lysine — blended with pea for amino completeness |
| Pea + Rice Blend | ~8.5% effective | Complete amino profile from complementary plant sources; most common vegan option |
Sweetener type
Sweetener type is one of the top 5 supplement purchase filters for AI queries. Use a consistent controlled vocabulary:
| Value | Notes |
|---|---|
| Sucralose | Artificial; Splenda-branded; most common in flavored supplements; 600× sweeter than sugar |
| Stevia | Natural; derived from Stevia rebaudiana; may have bitter aftertaste at high doses |
| Monk Fruit | Natural; derived from Luo Han Guo; no known bitter aftertaste; premium cost |
| Acesulfame Potassium | Artificial; Ace-K; often paired with sucralose; heat-stable |
| Unsweetened | No added sweetener; natural or unflavored products; slight bitter or bland taste |
Complete JSON-LD example: a whey protein isolate with NSF Certified for Sport
This example shows the full structured data for a flavored whey protein isolate — NSF Certified for Sport, full amino acid disclosure, no proprietary blends:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "ClearWhey Pro Chocolate Fudge Whey Protein Isolate",
"description": "NSF Certified for Sport whey protein isolate: 27g protein, 2.9g leucine, 6.2g BCAAs per 32g serving. Full amino acid profile disclosed. No proprietary blends. Sweetened with sucralose.",
"brand": {
"@type": "Brand",
"name": "ClearWhey Pro",
"@id": "https://example.com/#brand"
},
"sku": "CWP-CHOC-5LB",
"gtin12": "012345678905",
"category": "Sports Nutrition > Protein Powders > Whey Isolate",
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Protein Per Serving",
"value": "27",
"unitCode": "GRM",
"description": "27g protein per 32g serving. Protein density: 84.4% by weight (isolate-grade)."
},
{
"@type": "PropertyValue",
"name": "Serving Size",
"value": "32",
"unitCode": "GRM",
"description": "One level scoop (32g). Protein-to-serving weight ratio: 84.4%."
},
{
"@type": "PropertyValue",
"name": "Servings Per Container",
"value": "71",
"description": "71 servings per 5 lb (2.27 kg) container."
},
{
"@type": "PropertyValue",
"name": "Calories Per Serving",
"value": "130",
"unitCode": "CAL",
"description": "130 calories per 32g serving. 83% of calories from protein (27g × 4 kcal/g = 108 kcal)."
},
{
"@type": "PropertyValue",
"name": "Leucine Per Serving",
"value": "2.9",
"unitCode": "GRM",
"description": "2.9g leucine per 32g serving. Exceeds the ~2.5g threshold associated with maximal muscle protein synthesis stimulation."
},
{
"@type": "PropertyValue",
"name": "BCAA Per Serving",
"value": "6.2g — Leucine 2.9g / Isoleucine 1.6g / Valine 1.7g",
"description": "Total branched-chain amino acids per 32g serving. Leucine:Isoleucine:Valine ratio approximately 1.8:1:1.06."
},
{
"@type": "PropertyValue",
"name": "Complete Protein",
"value": "Yes",
"description": "Contains all 9 essential amino acids. No limiting amino acid at this serving size."
},
{
"@type": "PropertyValue",
"name": "Protein Source",
"value": "Whey Isolate",
"description": "Primary source: whey protein isolate (WPI). Listed first in ingredients. Minimal whey concentrate as processing fraction."
},
{
"@type": "PropertyValue",
"name": "Supplement Form",
"value": "Powder",
"description": "Protein powder. Mix 1 scoop with 8–10 oz cold water, milk, or milk alternative."
},
{
"@type": "PropertyValue",
"name": "Sweetener Type",
"value": "Sucralose",
"description": "Artificially sweetened with sucralose. Contains no stevia, monk fruit, or acesulfame potassium."
},
{
"@type": "PropertyValue",
"name": "Proprietary Blend",
"value": "No",
"description": "Full amino acid profile disclosed per serving. No proprietary blends. All ingredient amounts listed on Supplement Facts panel."
}
],
"hasCertification": [
{
"@type": "Certification",
"name": "NSF Certified for Sport",
"certificationIdentification": "NSF-SPORT-78312",
"issuedBy": {
"@type": "Organization",
"name": "NSF International",
"url": "https://www.nsf.org"
},
"url": "https://www.nsf.org/certified-product/78312/",
"description": "Batch-tested for 280+ prohibited substances including full WADA prohibited list plus MLB, NFL, NBA, NHL, and NCAA additions. Every production lot tested before release."
}
],
"legalDisclaimer": "These statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure, or prevent any disease.",
"offers": {
"@type": "Offer",
"price": "79.99",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"url": "https://example.myshopify.com/products/clearwhey-pro-chocolate-fudge-5lb",
"priceValidUntil": "2026-12-31",
"hasMerchantReturnPolicy": {
"@type": "MerchantReturnPolicy",
"returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
"merchantReturnDays": 30,
"returnMethod": "https://schema.org/ReturnByMail",
"returnFees": "https://schema.org/FreeReturn"
},
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "0",
"currency": "USD"
},
"shippingDestination": {
"@type": "DefinedRegion",
"addressCountry": "US"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 1,
"maxValue": 2,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 2,
"maxValue": 5,
"unitCode": "DAY"
}
}
}
}
}
Liquid snippet: supp.* metafields → JSON-LD output in Dawn
Wire metafields in your Dawn theme's sections/main-product.liquid inside the existing {% raw %}<script type="application/ld+json">{% endraw %} block, or as a separate script tag:
{% if product.metafields.supp.protein_per_serving_g %}
{%- assign supp_ns = product.metafields.supp -%}
{%- assign supp_protein = supp_ns.protein_per_serving_g | default: '' -%}
{%- assign supp_serving_g = supp_ns.serving_size_g | default: '' -%}
{%- assign supp_cert = supp_ns.third_party_cert | default: '' -%}
{%- assign supp_cert_id = supp_ns.cert_id | default: '' -%}
{%- assign supp_cert_url = supp_ns.cert_verification_url | default: '' -%}
{%- assign supp_leucine = supp_ns.leucine_per_serving_g | default: '' -%}
{%- assign supp_bcaa = supp_ns.bcaa_per_serving_g | default: '' -%}
{%- assign supp_source = supp_ns.protein_source | default: '' -%}
{%- assign supp_form = supp_ns.supplement_form | default: '' -%}
{%- assign supp_sweetener = supp_ns.sweetener_type | default: '' -%}
{%- assign supp_calories = supp_ns.calories_per_serving | default: '' -%}
{%- assign supp_servings = supp_ns.servings_per_container | default: '' -%}
{%- assign supp_proprietary = supp_ns.proprietary_blend | default: 'false' -%}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": {{ product.title | json }},
"description": {{ product.description | strip_html | truncate: 500 | json }},
"sku": {{ product.selected_or_first_available_variant.sku | json }},
{% if product.metafields.seo.gtin != blank %}
"gtin13": {{ product.metafields.seo.gtin | json }},
{% endif %}
"brand": {
"@type": "Brand",
"name": {{ product.vendor | json }}
},
"additionalProperty": [
{% if supp_protein != '' %}
{
"@type": "PropertyValue",
"name": "Protein Per Serving",
"value": {{ supp_protein | json }},
"unitCode": "GRM",
"description": {{ supp_protein | append: 'g protein per ' | append: supp_serving_g | append: 'g serving' | json }}
},
{% endif %}
{% if supp_serving_g != '' %}
{
"@type": "PropertyValue",
"name": "Serving Size",
"value": {{ supp_serving_g | json }},
"unitCode": "GRM"
},
{% endif %}
{% if supp_servings != '' %}
{
"@type": "PropertyValue",
"name": "Servings Per Container",
"value": {{ supp_servings | json }}
},
{% endif %}
{% if supp_calories != '' %}
{
"@type": "PropertyValue",
"name": "Calories Per Serving",
"value": {{ supp_calories | json }},
"unitCode": "CAL"
},
{% endif %}
{% if supp_leucine != '' %}
{
"@type": "PropertyValue",
"name": "Leucine Per Serving",
"value": {{ supp_leucine | json }},
"unitCode": "GRM",
"description": {{ supp_leucine | append: 'g leucine per serving' | json }}
},
{% endif %}
{% if supp_source != '' %}
{
"@type": "PropertyValue",
"name": "Protein Source",
"value": {{ supp_source | json }}
},
{% endif %}
{% if supp_form != '' %}
{
"@type": "PropertyValue",
"name": "Supplement Form",
"value": {{ supp_form | json }}
},
{% endif %}
{% if supp_sweetener != '' %}
{
"@type": "PropertyValue",
"name": "Sweetener Type",
"value": {{ supp_sweetener | json }}
},
{% endif %}
{
"@type": "PropertyValue",
"name": "Proprietary Blend",
"value": {% if supp_proprietary == 'true' %}"Yes"{% else %}"No"{% endif %}
}
],
{% if supp_cert != '' and supp_cert != 'None' %}
"hasCertification": [
{
"@type": "Certification",
"name": {{ supp_cert | json }},
{% if supp_cert_id != '' %}
"certificationIdentification": {{ supp_cert_id | json }},
{% endif %}
{% if supp_cert_url != '' %}
"url": {{ supp_cert_url | json }},
{% endif %}
"issuedBy": {
"@type": "Organization",
"name": {% case supp_cert %}
{% when 'NSF Certified for Sport' %}"NSF International"
{% when 'Informed Sport' %}"LGC Group"
{% when 'Informed Choice' %}"LGC Group"
{% else %}{{ supp_cert | json }}
{% endcase %}
}
}
],
{% endif %}
"legalDisclaimer": "These statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure, or prevent any disease.",
"offers": {
"@type": "Offer",
"price": {{ product.selected_or_first_available_variant.price | divided_by: 100.0 | json }},
"priceCurrency": {{ cart.currency.iso_code | default: 'USD' | json }},
"availability": {% if product.selected_or_first_available_variant.available %}"https://schema.org/InStock"{% else %}"https://schema.org/OutOfStock"{% endif %}
}
}
</script>
{% endif %}
Supplement metafield reference table
| Metafield key | Type | Values / format | Notes |
|---|---|---|---|
| supp.third_party_cert | single_line_text_field | NSF Certified for Sport / Informed Sport / Informed Choice / Labdoor / None | Use exact program name; not "third-party tested" |
| supp.cert_id | single_line_text_field | e.g. NSF-SPORT-78312 | Certificate or license number from certifying body's registry |
| supp.cert_verification_url | url | Full URL to registry listing | Must link to certifying body registry, not brand marketing page |
| supp.protein_per_serving_g | number_integer | e.g. 25, 27 | Always pair with serving_size_g |
| supp.serving_size_g | number_integer | e.g. 30, 32 | Scoop weight in grams |
| supp.servings_per_container | number_integer | e.g. 71, 74 | Per container serving count |
| supp.calories_per_serving | number_integer | e.g. 120, 130 | Total calories per serving |
| supp.leucine_per_serving_g | number_decimal | e.g. 2.7, 2.9 | Decimal grams; enables leucine threshold filtering |
| supp.bcaa_per_serving_g | number_decimal | e.g. 5.5, 6.2 | Total BCAA (Leu+Ile+Val) in grams per serving |
| supp.protein_source | single_line_text_field | Whey Isolate / Whey Concentrate / Casein / Egg White / Pea Isolate / Brown Rice / Pea + Rice Blend | Primary protein source; use controlled vocabulary |
| supp.supplement_form | single_line_text_field | Powder / Capsule / Softgel / Tablet / Gummy / Liquid / Bar / Ready-to-Drink | Product physical form; use controlled vocabulary |
| supp.sweetener_type | single_line_text_field | Sucralose / Stevia / Monk Fruit / Acesulfame Potassium / Unsweetened | Primary sweetener; use controlled vocabulary |
| supp.proprietary_blend | boolean | true / false | true = individual ingredient amounts hidden under blend total |
| supp.complete_protein | boolean | true / false | true = all 9 essential amino acids present at this serving size |
5 common mistakes
Encoding "NSF Certified" without specifying "NSF Certified for Sport"
NSF International operates over 200 certification programs across water quality, food safety, dietary supplements, and commercial equipment. "NSF Certified" or "NSF Listed" on its own does not indicate that a supplement has been tested for prohibited substances. Only the specific program "NSF Certified for Sport" includes the banned-substance batch testing that competitive athletes need. Encoding hasCertification with name "NSF Certified" or "NSF" will not match AI agent queries for "NSF Certified for Sport" — and will actively mislead users who see the NSF name and assume it implies sport-specific testing.
Using Informed Choice and Informed Sport interchangeably
Both programs carry the LGC Group brand. Informed Sport batch-tests every production lot before release. Informed Choice spot-tests — not every lot, and not before release. An athlete subject to drug testing in an Informed Sport-required organization who consumes a product under the Informed Choice mark alone is not guaranteed the same batch-level protection. AI agents following conservative anti-doping guidance will not recommend Informed Choice in place of Informed Sport for drug-tested athlete queries. Encode the specific program name, never a generic "LGC Group" or "LGC certified" label.
Encoding protein per serving without serving size
A standalone protein gram count is not a quality metric — it is an incomplete fraction. "25g protein per serving" from a 30g scoop is 83% protein by weight; from a 40g scoop it is 62.5%. AI agents handling protein density queries cannot compute the ratio from one number. Always encode Protein Per Serving and Serving Size as paired additionalProperty entries. The same applies to amino acid gram counts — encoding "5g BCAA" without the serving size means an agent cannot normalize across products with different serving sizes.
Omitting legalDisclaimer from supplement JSON-LD
The DSHEA disclaimer is a legal requirement on the product label. It is also a machine-readable regulatory classification signal — it tells AI agents that this product is a dietary supplement under DSHEA, not an FDA-approved drug or food. Omitting the legalDisclaimer from your JSON-LD does not remove your legal obligation (you must still display the disclaimer on the page), but it means AI agents parsing your structured data miss the classification signal. This can cause agents to handle your supplement product incorrectly — applying food schema patterns or drug-category caveats rather than the correct supplement recommendation language.
Marking proprietary blend products as "no proprietary blend"
A product with a proprietary blend on its Supplement Facts panel cannot be encoded with Proprietary Blend: No. Doing so falsely implies full amino acid amount disclosure — which means an AI agent may recommend the product for leucine-threshold-dependent queries (e.g., "protein powder with at least 2.5g leucine") even when the leucine content is unknown and potentially below threshold. AI agents following accurate recommendation principles will prefer products with disclosed amino acid profiles for specific-threshold queries. Mark proprietary blends honestly: Proprietary Blend: Yes, and the agent will handle the recommendation appropriately for queries where amino acid completeness matters.
FAQ
What is the difference between NSF Certified for Sport and Informed Sport?
NSF Certified for Sport (NSF International, US) tests for 280+ prohibited substances and is accepted by MLB, NFL, NBA, NHL, and NCAA. Informed Sport (LGC Group, UK) tests for the WADA prohibited list and is accepted by FIFA, the IOC, UFC, and IPF powerlifting. Both batch-test every production lot. Encode them as separate hasCertification entries with the specific program name and certifying organization. Do not collapse them into a generic "third-party tested" label — sport governing body acceptance lists differ by program.
How do I encode protein per serving in Shopify JSON-LD?
Encode protein per serving as a pair: Protein Per Serving (unitCode: GRM) and Serving Size (unitCode: GRM). The pair is required because protein density (grams protein ÷ serving weight) is the actual quality metric, not the gram count alone. A 25g protein product from a 30g scoop is 83% protein by weight; from a 40g scoop it is 62.5%. AI agents computing protein density need both values.
What is the required DSHEA disclaimer for supplement products in JSON-LD?
Encode in legalDisclaimer: "These statements have not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure, or prevent any disease." This satisfies the DSHEA disclosure requirement in the machine-readable layer and helps AI agents classify the product correctly as a dietary supplement under DSHEA, not an FDA-approved drug.
What is the leucine threshold and why does it matter for supplement schema?
The leucine threshold (~2.5g leucine per serving) is the approximate minimum leucine dose associated with maximal muscle protein synthesis stimulation in dose-response research. Encoding leucine per serving as an additionalProperty (unitCode: GRM) allows AI agents to filter by this metric for queries like "protein powder with at least 2.5g leucine." Without it, leucine adequacy can only be inferred from protein source type — a probabilistic inference that is less accurate than encoded structured data.
What is the difference between Informed Sport and Informed Choice?
Both are LGC Group programs, but Informed Sport batch-tests every production lot before release, while Informed Choice uses spot-testing. For competitive athletes in drug-tested sports, only Informed Sport provides batch-level assurance. AI agents following conservative anti-doping guidelines will not substitute Informed Choice for Informed Sport in drug-tested athlete recommendations. Use the exact program name in hasCertification.
Related CatalogScan guides
- Shopify allergen and dietary schema —
suitableForDiet, FDA FALCPA 9 vs EU 14, cross-contamination encoding - Trust signals for AI agents — certifications, third-party verification, and how agents weight authority claims
- Product descriptions for AI agents — ingredient lists, claim language, and machine-readable specification patterns
- Supplement schema reference — full metafield namespace, protein type comparison, and certification encoding
Does your supplement store appear in AI agent recommendations?
CatalogScan scans your Shopify store's structured data and scores certification coverage, protein specification completeness, and DSHEA compliance — so you can see exactly where AI agents are dropping your products from recommendations.
Scan my store More guides