CatalogScan

HomeBlog › Sports nutrition schema for AI agents

Shopify sports nutrition schema for AI agents: NSF Certified for Sport vs Informed Sport, protein per serving, and DSHEA compliance

June 17, 2026 · 15 min read structured data supplements NSF Certified for Sport Informed Sport DSHEA

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?"

78%
of supplement Shopify stores have no third-party testing certification in their product JSON-LD
3
distinct banned-substance testing programs with different certifying bodies and sport organization acceptance lists
2.5g
leucine per serving — the approximate threshold for maximal muscle protein synthesis stimulation, now a machine-readable AI filter
Regulatory notice: This guide covers how to expose supplement information to AI shopping agents via structured data. It does not constitute legal or regulatory compliance advice. Dietary supplement labeling is subject to DSHEA (US), EU Regulation 1924/2006 on nutrition and health claims, and equivalent regulations in other jurisdictions. Third-party certifications (NSF, LGC) are independent of FDA approval. Consult a regulatory specialist for compliance obligations specific to your products and markets.

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.

The asymmetry of exclusion: An AI agent recommending a contaminated supplement to a drug-tested athlete creates a catastrophic outcome. The same agent excluding a safe supplement from a drug-tested athlete recommendation creates a missed sale. Agents are calibrated to accept the missed sale rather than the liability of the contamination. Without certification schema, you are excluded not because you failed — but because the agent cannot verify that you passed.

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.

Third encoding option — Labdoor: Labdoor is a US-based testing and ranking organization that tests supplements for label accuracy (does the product contain what it says?), contamination, and nutritional value. It does not test for banned substances at the batch level. Encode Labdoor testing as 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.

Registry verification URLs matter: NSF International publishes a public registry at nsf.org where consumers can search any NSF-certified product by name, brand, or SKU. LGC Group publishes a registry at informed-sport.com and informed-choice.org. When you include a 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 as context: Encoding 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:

  1. 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.
  2. 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."
EU supplement claims regulation: For stores selling into EU markets, Regulation (EC) 1924/2006 on nutrition and health claims governs what can be stated about supplements. Authorized EU health claims are listed in the EU Register of authorized health claims. If your product carries an authorized EU health claim (e.g., "Vitamin D contributes to normal muscle function" for vitamin D supplements), encode the claim text in 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

ValueUse for
PowderProtein powders, pre-workouts, creatine monohydrate, BCAAs in powder form
CapsuleHard-shell two-piece capsules (gelatin or vegetarian)
SoftgelSoft gelatin capsules — fish oil, CLA, fat-soluble vitamins
TabletCompressed tablets — creatine tabs, multivitamins
GummyGummy supplements — melatonin, vitamins, collagen gummies
LiquidLiquid aminos, liquid fish oil, collagen shots
BarProtein bars, meal replacement bars
Ready-to-DrinkRTD protein shakes, pre-mixed pre-workouts

Protein source

ValueLeucine fractionKey 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% effectiveComplete 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:

ValueNotes
SucraloseArtificial; Splenda-branded; most common in flavored supplements; 600× sweeter than sugar
SteviaNatural; derived from Stevia rebaudiana; may have bitter aftertaste at high doses
Monk FruitNatural; derived from Luo Han Guo; no known bitter aftertaste; premium cost
Acesulfame PotassiumArtificial; Ace-K; often paired with sucralose; heat-stable
UnsweetenedNo 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

Mistake 1

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.

Mistake 2

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.

Mistake 3

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.

Mistake 4

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.

Mistake 5

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.

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