Optimization Guide
Shopify Wine, Beer & Spirits Schema — Beverage Structured Data for Alcohol DTC Stores
There is no Wine, Beer, or Spirits type in Schema.org. Alcohol DTC brands on Shopify must express every meaningful attribute — ABV, vintage, varietal, IBU, age statement, appellation — through additionalProperty. Without these signals, your products are invisible to the AI agent queries that drive DTC alcohol discovery: "bold Napa Cab under $100," "low-carb session IPA," "12-year single malt Scotch for gifting."
@type: Product with an additionalProperty array for all beverage-specific attributes (ABV, vintage, varietal, IBU, style, appellation, age statement). Add NutritionInformation for calorie and carbohydrate queries. Declare age-gating via audience.requiredMinAge: 21 and legalDisclaimer on the Product. Use areaServed on the Offer to enumerate DTC-eligible US states. Store everything in a beverage.* metafield namespace and inject via Liquid with conditional blocks per beverage type.
Why Alcohol DTC Brands Are Invisible to AI Agent Queries
AI shopping agents answering "recommend a dry Napa Valley Cabernet Sauvignon under $100" need four structured signals: Varietal: Cabernet Sauvignon, Appellation: Napa Valley AVA, Style: Dry, and an Offer.price below $100. Every one of those four is a structured attribute, not a keyword. If any is missing from your JSON-LD and exists only in your product title or description text, your product will not appear in filtered recommendation queries.
The same applies to beer ("West Coast IPA with IBU over 60") and spirits ("Speyside single malt aged 12 years, under $80"). Shopify's default product JSON-LD outputs name, description, price, and availability — none of the beverage-specific attributes that AI agents use for filtering and recommendation. The result is that wineries, breweries, and distilleries investing in DTC have technically correct Shopify stores that are structurally invisible to the fastest-growing channel in alcohol discovery.
AI agent query types requiring beverage structured data
| Query type | Example query | Required structured signal |
|---|---|---|
| Varietal + region filter | "bold Napa Valley Cabernet under $100" | Varietal: Cabernet Sauvignon + Appellation: Napa Valley AVA + Offer.price |
| Vintage year filter | "2019 Bordeaux Cabernet" | Vintage Year: 2019 + Varietal: Cabernet Sauvignon or Appellation: Bordeaux |
| ABV / session filter | "session IPA under 5% ABV" | ABV: "4.2%" + Style: Session IPA |
| IBU / bitterness filter | "West Coast IPA with at least 60 IBU" | IBU: "65" + Style: West Coast IPA |
| Spirits age statement | "12-year Speyside single malt under $80" | Age Statement: 12 Year + Distillery Region: Speyside |
| Organic / biodynamic certification | "USDA Organic natural wine" | hasCertification: USDA Organic |
| Low-calorie / keto filter | "keto-friendly low-carb wine" | NutritionInformation.carbohydrateContent |
| Gifting / occasion | "gift-worthy single malt for whisky enthusiast" | Tasting Notes + Age Statement + Cask Type |
Shopify default vs. beverage-schema JSON-LD
{
"@type": "Product",
"name": "2021 Napa Valley
Cabernet Sauvignon 750ml",
"description": "Bold Cab, 13.5% ABV,
18 months French oak...",
// varietal: in title text only
// ABV: in description text only
// vintage: in title text only
// invisible to AI attribute filters
}
{
"@type": "Product",
"additionalProperty": [
{ "name": "Varietal",
"value": "Cabernet Sauvignon" },
{ "name": "Alcohol By Volume (ABV)",
"value": "13.5%" },
{ "name": "Vintage Year",
"value": "2021" },
{ "name": "Appellation / Region",
"value": "Napa Valley AVA" }
]
}
additionalProperty Reference Tables
Declare all beverage attributes as PropertyValue objects in the additionalProperty array. Each entry needs @type: "PropertyValue", a name (human-readable label), and a value (string). The tables below show the recommended property names for each beverage category.
Wine additionalProperty attributes
| PropertyValue name | Example value | AI query use case |
|---|---|---|
| Alcohol By Volume (ABV) | "13.5%" | Low-alcohol wine queries; alcohol content filtering |
| Vintage Year | "2021" | Specific vintage year queries; cellar aging recommendations |
| Appellation / Region | "Napa Valley AVA" | Region-specific queries ("Sonoma Coast Pinot Noir") |
| Varietal | "Cabernet Sauvignon" | Grape variety filtering; the most common AI wine query dimension |
| Style | "Dry" | Dry vs. off-dry vs. sweet wine preference filtering |
| Color | "Red" | Red / white / rosé / orange category filtering |
| Serving Temperature | "60–65°F (15–18°C)" | Sommelier-style query responses; serving guidance |
| Suggested Pairing | "Grilled ribeye, aged cheddar" | Food pairing queries ("wine to pair with steak") |
| Winemaker | "Maria Santos" | Winemaker-specific queries; provenance and craft signals |
| Aging | "18 months in French oak" | Oak-aged / unoaked wine filter; tannin and flavor profile queries |
| Country of Origin | "United States" | Country-of-origin filtering; wine region disambiguation |
| Volume | "750ml" | Format queries (magnum, half-bottle, standard); gifting size selection |
Beer additionalProperty attributes
| PropertyValue name | Example value | AI query use case |
|---|---|---|
| Alcohol By Volume (ABV) | "6.8%" | Session beer / high-ABV filtering; "under 5%" queries |
| International Bitterness Units (IBU) | "65" | Hop-forward / bitter beer filtering; IPA bitterness level queries |
| Style | "West Coast IPA" | Beer style discovery — the primary AI beer query dimension |
| Fermentation | "Ale" | Ale vs. lager category filtering; fermentation character queries |
| Hops | "Citra, Mosaic, Simcoe" | Hop variety queries ("Citra-forward IPA"); craft beer geek filters |
| Malt | "Pale malt, Crystal 40L" | Malt bill queries; gluten-related ingredient transparency |
| Serving Temperature | "38–45°F" | Serving guidance; sommelier-style beer pairing queries |
| Volume | "12 fl oz" | Can / bottle / growler format filtering |
| Country of Origin | "United States" | Domestic vs. imported filtering; regional craft brewery signals |
Spirits additionalProperty attributes
| PropertyValue name | Example value | AI query use case |
|---|---|---|
| Alcohol By Volume (ABV) | "46%" | Cask-strength vs. diluted filtering; proof-level queries |
| Spirit Type | "Single Malt Scotch Whisky" | Category-level filtering — bourbon, gin, mezcal, rum, etc. |
| Age Statement | "12 Year" | Aged spirits queries; premium tier filtering by maturation |
| Cask Type | "Ex-Bourbon, Sherry Cask Finish" | Sherry bomb / ex-bourbon character queries; cask-specific filtering |
| Distillery Region | "Speyside, Scotland" | Scotch region filtering (Islay, Speyside, Highlands, Lowlands) |
| Grain / Base | "100% Malted Barley" | Single malt vs. blended; gluten transparency; grain-forward queries |
| Tasting Notes | "Dried fruit, vanilla, gentle smoke" | Flavor profile queries ("peaty Scotch", "vanilla bourbon"); gifting recommendations |
| Volume | "750ml" | Standard / miniature / magnum format filtering |
| Country of Origin | "Scotland" | Country / region of origin filtering |
Complete Wine Product JSON-LD Example
The following is a production-ready JSON-LD block for a 2021 Napa Valley Cabernet Sauvignon. It combines the Product type with NutritionInformation, a full additionalProperty array, hasCertification for organic status, a brand object with knowledge graph linking, an age-gating audience block, a legalDisclaimer, and a state-restricted Offer with areaServed:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "2021 Napa Valley Cabernet Sauvignon — Estate Reserve",
"description": "A bold, full-bodied Cabernet Sauvignon from our estate vineyard in the heart of Napa Valley. 18 months in French and American oak. Aromas of dark cherry, cassis, cedar, and a hint of vanilla.",
"sku": "NVC-CAB-2021-750",
"image": "https://example-winery.com/products/2021-napa-cab.jpg",
"brand": {
"@type": "Brand",
"name": "Silver Creek Cellars",
"url": "https://example-winery.com",
"sameAs": "https://en.wikipedia.org/wiki/Example_Winery"
},
"audience": {
"@type": "PeopleAudience",
"requiredMinAge": 21
},
"legalDisclaimer": "Please drink responsibly. Must be 21 or older to purchase. Not available in all states. Void where prohibited by law.",
"nutrition": {
"@type": "NutritionInformation",
"servingSize": "5 fl oz (148 ml)",
"calories": "120 Cal",
"carbohydrateContent": "3.8 g",
"sugarContent": "1.2 g",
"fatContent": "0 g",
"proteinContent": "0.1 g",
"sodiumContent": "6 mg"
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Alcohol By Volume (ABV)",
"value": "13.5%"
},
{
"@type": "PropertyValue",
"name": "Vintage Year",
"value": "2021"
},
{
"@type": "PropertyValue",
"name": "Appellation / Region",
"value": "Napa Valley AVA"
},
{
"@type": "PropertyValue",
"name": "Varietal",
"value": "Cabernet Sauvignon"
},
{
"@type": "PropertyValue",
"name": "Style",
"value": "Dry"
},
{
"@type": "PropertyValue",
"name": "Color",
"value": "Red"
},
{
"@type": "PropertyValue",
"name": "Serving Temperature",
"value": "60–65°F (15–18°C)"
},
{
"@type": "PropertyValue",
"name": "Suggested Pairing",
"value": "Grilled ribeye, aged cheddar, roasted lamb"
},
{
"@type": "PropertyValue",
"name": "Aging",
"value": "18 months in French and American oak"
},
{
"@type": "PropertyValue",
"name": "Winemaker",
"value": "Maria Santos"
},
{
"@type": "PropertyValue",
"name": "Country of Origin",
"value": "United States"
},
{
"@type": "PropertyValue",
"name": "Volume",
"value": "750ml"
},
{
"@type": "PropertyValue",
"propertyID": "ageRestrictionType",
"name": "Age Restriction",
"value": "Alcohol"
}
],
"hasCertification": {
"@type": "Certification",
"name": "USDA Organic",
"certificationIdentification": "USDA-ORG-2024-91832",
"certificationStatus": "https://schema.org/CertificationActive",
"issuedBy": {
"@type": "Organization",
"name": "Oregon Tilth Certified Organic",
"url": "https://tilth.org"
}
},
"offers": {
"@type": "Offer",
"price": "89.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://example-winery.com/products/2021-napa-cab",
"eligibleCustomerType": "https://schema.org/Adult",
"description": "Must be 21 or older to purchase. Age verification required at delivery.",
"areaServed": [
{"@type": "State", "name": "California"},
{"@type": "State", "name": "New York"},
{"@type": "State", "name": "Texas"},
{"@type": "State", "name": "Florida"},
{"@type": "State", "name": "Oregon"},
{"@type": "State", "name": "Washington"},
{"@type": "State", "name": "Illinois"},
{"@type": "State", "name": "Colorado"},
{"@type": "State", "name": "Nevada"},
{"@type": "State", "name": "Arizona"}
],
"shippingDetails": {
"@type": "OfferShippingDetails",
"shippingRate": {
"@type": "MonetaryAmount",
"value": "12.00",
"currency": "USD"
},
"deliveryTime": {
"@type": "ShippingDeliveryTime",
"businessDays": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
},
"cutoffTime": "15:00:00-07:00",
"handlingTime": {
"@type": "QuantitativeValue",
"minValue": 1,
"maxValue": 2,
"unitCode": "DAY"
},
"transitTime": {
"@type": "QuantitativeValue",
"minValue": 3,
"maxValue": 5,
"unitCode": "DAY"
}
}
}
}
}
State-Level DTC Shipping with areaServed
DTC alcohol shipping in the United States is regulated at the state level. As of 2026, fewer than half of US states permit direct-to-consumer wine shipping from out-of-state wineries, and spirits DTC is even more restricted. Without areaServed on your Offer, an AI shopping agent has no way to know that your Napa Valley Cabernet is unavailable to buyers in Alabama or Mississippi — and may recommend it to shoppers who will hit a hard stop at checkout.
areaServed on the Offer object accepts an array of State objects or ISO 3166-2 codes. Enumerate every US state where your DTC license is active. Update this list whenever your compliance program expands to new states:
"offers": {
"@type": "Offer",
"price": "89.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"areaServed": [
{"@type": "State", "name": "California"},
{"@type": "State", "name": "New York"},
{"@type": "State", "name": "Texas"},
{"@type": "State", "name": "Florida"},
{"@type": "State", "name": "Oregon"},
{"@type": "State", "name": "Washington"},
{"@type": "State", "name": "Illinois"},
{"@type": "State", "name": "Colorado"}
]
}
For stores that ship internationally, combine State objects for US state-level restrictions with Country objects for international markets where your export license is valid. See the geo-restricted product schema guide for the full eligibleRegion and ineligibleRegion pattern for country-level exclusions.
Age-Gating and Legal Disclaimer Signals
Alcohol products require explicit age-gating signals in structured data. Without them, conservative AI agents omit alcohol products from recommendations entirely rather than risk surfacing them in ambiguous contexts. Two complementary signals ensure correct AI agent handling:
audience.requiredMinAge on Product
The audience property on Product accepts a PeopleAudience object. Set requiredMinAge: 21 for US alcohol products. This is the semantically authoritative signal for age restriction — the same field Google Merchant Center uses for Shopping eligibility:
"audience": {
"@type": "PeopleAudience",
"requiredMinAge": 21
}
eligibleCustomerType on Offer
Reinforce the age signal on the Offer object using eligibleCustomerType. The https://schema.org/Adult value is the schema.org canonical adult customer type signal:
"offers": {
"@type": "Offer",
"eligibleCustomerType": "https://schema.org/Adult",
"description": "Must be 21+ to purchase. Valid government-issued ID required at delivery."
}
legalDisclaimer on Product
Add legalDisclaimer to the Product to express responsible drinking and regulatory compliance context. AI agents generating product recommendations for alcohol products use this text when forming response disclaimers:
"legalDisclaimer": "Please drink responsibly. Must be 21 or older to purchase. Not available in all states. Void where prohibited by law."
For a deeper treatment of age verification structured data patterns across alcohol, tobacco, and vaping categories, see the age verification structured data guide.
NutritionInformation for Beverages
AI health agents increasingly incorporate calorie and macronutrient data into product recommendations. Queries like "low-calorie wine under 100 calories per glass," "keto-friendly spirits with zero carbs," and "low-carb light beer" all require structured NutritionInformation. Spirits are especially well-positioned for keto and low-carb queries — most have near-zero carbohydrates and no sugar — but only when that data is declared structurally.
Standard serving sizes for structured data reporting:
| Beverage type | Standard serving size | Typical calorie range |
|---|---|---|
| Wine (red / white) | 5 fl oz (148 ml) | 100–130 Cal per serving |
| Wine (dessert / fortified) | 2 fl oz (59 ml) | 60–95 Cal per serving |
| Beer (standard) | 12 fl oz (355 ml) | 100–200 Cal per serving |
| Beer (light) | 12 fl oz (355 ml) | 50–110 Cal per serving |
| Spirits (distilled) | 1.5 fl oz (44 ml) | 95–110 Cal per serving |
// Wine NutritionInformation
"nutrition": {
"@type": "NutritionInformation",
"servingSize": "5 fl oz (148 ml)",
"calories": "120 Cal",
"carbohydrateContent": "3.8 g",
"sugarContent": "1.2 g",
"fatContent": "0 g",
"proteinContent": "0.1 g",
"sodiumContent": "6 mg"
}
// Spirits NutritionInformation (zero-carb)
"nutrition": {
"@type": "NutritionInformation",
"servingSize": "1.5 fl oz (44 ml)",
"calories": "105 Cal",
"carbohydrateContent": "0 g",
"sugarContent": "0 g",
"fatContent": "0 g",
"proteinContent": "0 g",
"sodiumContent": "0 mg"
}
For a complete guide to nutrition structured data including food certification and allergen patterns, see the food and beverage nutrition schema guide.
brand with Knowledge Graph Linking
Winery, brewery, and distillery brand entities often have Wikipedia pages, Wikidata entries, or other knowledge graph nodes. Linking your brand object to these authoritative sources enables AI agents to resolve your brand to a known entity — which improves the confidence of attribute-based recommendations and enables factual queries ("wines from Silver Oak Cellars") to correctly surface your products.
"brand": {
"@type": "Brand",
"name": "Silver Oak Cellars",
"url": "https://silveroak.com",
"sameAs": [
"https://en.wikipedia.org/wiki/Silver_Oak_Cellars",
"https://www.wikidata.org/wiki/Q7520309"
]
}
At minimum, include name and url. Add sameAs with Wikipedia or Wikidata URLs when available — this is the single highest-leverage entity linking signal for DTC beverage brands in AI knowledge graphs.
hasCertification for Organic, Biodynamic, and Sustainable Wines
The natural wine and sustainable spirits segment increasingly depends on certification signals for AI discovery. Queries like "USDA Organic red wine," "biodynamic Burgundy," and "Demeter-certified Pinot Noir" require hasCertification with a recognized issuing body to match. A text mention of "organic" in your product description does not qualify — the certification must be declared as a structured Certification object with an issuedBy Organization:
"hasCertification": [
{
"@type": "Certification",
"name": "USDA Organic",
"certificationIdentification": "USDA-ORG-2024-91832",
"certificationStatus": "https://schema.org/CertificationActive",
"issuedBy": {
"@type": "Organization",
"name": "Oregon Tilth Certified Organic",
"url": "https://tilth.org"
}
},
{
"@type": "Certification",
"name": "Demeter Biodynamic",
"certificationStatus": "https://schema.org/CertificationActive",
"issuedBy": {
"@type": "Organization",
"name": "Demeter USA",
"url": "https://www.demeter-usa.org"
}
}
]
Shopify Liquid Template with Beverage-Type Conditionals
Store all beverage attributes in a beverage metafield namespace. Use the beverage.type metafield (Single-line text: "Wine", "Beer", or "Spirits") to conditionally inject the correct property set for each beverage category. This single Liquid snippet handles all three product types from one template file:
{% assign bev = product.metafields.beverage %}
{% if bev.type %}
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": {{ product.title | json }},
"description": {{ product.description | strip_html | truncatewords: 60 | json }},
"sku": {{ product.selected_or_first_available_variant.sku | json }},
"brand": {
"@type": "Brand",
"name": {{ product.vendor | json }},
"url": {{ shop.url | json }}
},
"audience": {
"@type": "PeopleAudience",
"requiredMinAge": 21
},
"legalDisclaimer": "Please drink responsibly. Must be 21 or older to purchase. Not available in all states.",
"nutrition": {
"@type": "NutritionInformation",
"servingSize": {{ bev.serving_size.value | default: "1 serving" | json }},
"calories": "{{ bev.calories.value }} Cal",
"carbohydrateContent": "{{ bev.carbs_g.value | default: '0' }} g",
"sugarContent": "{{ bev.sugar_g.value | default: '0' }} g",
"fatContent": "0 g",
"proteinContent": "0 g",
"sodiumContent": "{{ bev.sodium_mg.value | default: '0' }} mg"
},
"additionalProperty": [
{
"@type": "PropertyValue",
"name": "Alcohol By Volume (ABV)",
"value": "{{ bev.abv.value }}%"
},
{
"@type": "PropertyValue",
"name": "Style",
"value": {{ bev.style.value | json }}
},
{
"@type": "PropertyValue",
"name": "Volume",
"value": "{{ bev.volume_ml.value }}ml"
},
{
"@type": "PropertyValue",
"name": "Serving Temperature",
"value": {{ bev.serving_temp.value | json }}
},
{% if bev.pairing.value %}
{
"@type": "PropertyValue",
"name": "Suggested Pairing",
"value": {{ bev.pairing.value | json }}
},
{% endif %}
{% comment %}Wine-specific properties{% endcomment %}
{% if bev.type.value == "Wine" %}
{
"@type": "PropertyValue",
"name": "Vintage Year",
"value": "{{ bev.vintage.value }}"
},
{
"@type": "PropertyValue",
"name": "Appellation / Region",
"value": {{ bev.appellation.value | json }}
},
{
"@type": "PropertyValue",
"name": "Varietal",
"value": {{ bev.varietal.value | json }}
},
{% endif %}
{% comment %}Beer-specific properties{% endcomment %}
{% if bev.type.value == "Beer" %}
{% if bev.ibu.value %}
{
"@type": "PropertyValue",
"name": "International Bitterness Units (IBU)",
"value": "{{ bev.ibu.value }}"
},
{% endif %}
{% endif %}
{% comment %}Spirits-specific properties{% endcomment %}
{% if bev.type.value == "Spirits" %}
{% if bev.age_statement.value %}
{
"@type": "PropertyValue",
"name": "Age Statement",
"value": {{ bev.age_statement.value | json }}
},
{% endif %}
{% if bev.cask_type.value %}
{
"@type": "PropertyValue",
"name": "Cask Type",
"value": {{ bev.cask_type.value | json }}
},
{% endif %}
{% endif %}
{
"@type": "PropertyValue",
"propertyID": "ageRestrictionType",
"name": "Age Restriction",
"value": "Alcohol"
}
],
{% if bev.is_organic.value == true %}
"hasCertification": {
"@type": "Certification",
"name": "USDA Organic",
"certificationStatus": "https://schema.org/CertificationActive",
"issuedBy": {
"@type": "Organization",
"name": "USDA Agricultural Marketing Service"
}
},
{% endif %}
"offers": {
"@type": "Offer",
"price": {{ product.selected_or_first_available_variant.price | money_without_currency | json }},
"priceCurrency": {{ shop.currency | json }},
"availability": {% if product.available %}"https://schema.org/InStock"{% else %}"https://schema.org/OutOfStock"{% endif %},
"url": {{ canonical_url | json }},
"eligibleCustomerType": "https://schema.org/Adult",
"areaServed": {{ shop.metafields.beverage.dtc_states.value | json }}
}
}
</script>
{% endif %}
Metafield namespace reference
| Metafield key | Shopify type | Applies to | Example value |
|---|---|---|---|
beverage.type |
Single-line text | All | "Wine", "Beer", "Spirits" |
beverage.abv |
Decimal | All | 13.5 |
beverage.style |
Single-line text | All | "Dry", "West Coast IPA", "Single Malt" |
beverage.volume_ml |
Integer | All | 750 |
beverage.serving_temp |
Single-line text | All | "60–65°F (15–18°C)" |
beverage.pairing |
Multi-line text | All | "Grilled ribeye, aged cheddar" |
beverage.calories |
Integer | All | 120 |
beverage.serving_size |
Single-line text | All | "5 fl oz (148 ml)" |
beverage.vintage |
Integer | Wine only | 2021 |
beverage.appellation |
Single-line text | Wine only | "Napa Valley AVA" |
beverage.varietal |
Single-line text | Wine only | "Cabernet Sauvignon" |
beverage.ibu |
Integer | Beer only | 65 |
beverage.age_statement |
Single-line text | Spirits only | "12 Year" |
beverage.cask_type |
Single-line text | Spirits only | "Ex-Bourbon, Sherry Cask Finish" |
beverage.is_organic |
Boolean | All | true / false |
shop.beverage.dtc_states |
JSON (shop metafield) | All (shop-level) | JSON array of State objects |
Common Mistakes
| Mistake | Problem | Fix |
|---|---|---|
Using Product alone with no beverage additionalProperty |
ABV, vintage, varietal, style, and region data are absent from structured data. AI agents cannot surface this product in any attribute-filtered recommendation query — the most common query type for alcohol DTC. | Add an additionalProperty array with at minimum ABV, varietal (wine), or style (beer/spirits). Each beverage-specific attribute is a PropertyValue entry. |
Putting varietal, vintage, and ABV in the product title but not in additionalProperty |
AI agents filter by structured attributes, not by parsing title strings. "2021 Napa Valley Cabernet Sauvignon 13.5% ABV" in a product title does not match a structured query for Varietal: Cabernet Sauvignon. |
Declare every filterworthy attribute as a discrete PropertyValue in additionalProperty, even if it duplicates information in the title. Structured beats textual for AI filtering every time. |
| Omitting age-gating signals on alcohol products | Without audience.requiredMinAge: 21 and eligibleCustomerType: Adult, conservative AI agents skip alcohol products entirely rather than recommend them without a confirmed age restriction signal. |
Add audience.requiredMinAge: 21 to the Product and eligibleCustomerType: "https://schema.org/Adult" to the Offer. Also add legalDisclaimer to the Product with responsible drinking language. |
Setting brand as a string or a plain name with no url or sameAs |
A brand declared as "brand": "Silver Oak Cellars" (string) or as a Brand object with only a name fails to link the winery entity to any knowledge graph node. AI agents cannot resolve the brand to a known winery entity, losing all the factual associations (region, style, reputation) that drive "best wines from X" queries. |
Always declare brand as a Brand object with name, url, and sameAs linking to a Wikipedia or Wikidata URL for the winery, brewery, or distillery. |
Omitting legalDisclaimer on alcohol products |
Responsible drinking and state restriction disclaimers are expected context for alcohol products in AI-generated recommendations. Without them, an AI agent may either add its own generic disclaimer (which may not match your specific situation) or omit the product from recommendation sets out of compliance caution. | Add legalDisclaimer to the Product with language covering: minimum age, responsible drinking, state availability restrictions, and any void-where-prohibited language relevant to your DTC license. |
Implementation Checklist
- Create
beverage.*metafield namespace in Shopify Admin with type, ABV, style, and volume fields - Add wine-specific metafields: vintage, appellation, varietal
- Add beer-specific metafields: IBU, fermentation type, hops, malt
- Add spirits-specific metafields: age statement, cask type, distillery region, grain/base
- Add
additionalPropertyarray to product JSON-LD with all beverage attributes as PropertyValue entries - Add
NutritionInformationwith servingSize, calories, carbohydrateContent, and sugarContent - Add
audience.requiredMinAge: 21andeligibleCustomerType: Adulton the Offer - Add
legalDisclaimerto the Product with responsible drinking and state restriction language - Add
areaServedon the Offer enumerating all DTC-eligible US states - Set
brandas a Brand object with name, url, and sameAs (Wikipedia/Wikidata) for the winery/brewery/distillery - Add
hasCertificationwith issuedBy Organization for any organic, biodynamic, or sustainable certifications - Use Liquid
if bev.type == "Wine"/"Beer"/"Spirits"conditionals to inject only the relevant property set per product - Validate JSON-LD with Google's Rich Results Test and CatalogScan after template changes
Frequently Asked Questions
Is there a Wine or Beer @type in Schema.org for alcohol products?
No. Schema.org does not define a Wine, Beer, or Spirits type. Use @type: Product and declare all beverage-specific attributes — ABV, vintage, varietal, IBU, age statement, cask type — as additionalProperty PropertyValue entries. This is the same pattern used for other specialty product categories without a dedicated schema.org type. AI shopping agents read and filter on PropertyValue entries directly.
How do I express ABV (alcohol content) in structured data for AI agents?
Add ABV as an additionalProperty entry: { "@type": "PropertyValue", "name": "Alcohol By Volume (ABV)", "value": "13.5%" }. Use a consistent name label so AI agents can identify the property. This enables queries like "low-alcohol wine under 12% ABV," "cask-strength bourbon over 55%," and "session IPA under 5%." Without this structured signal, ABV in product descriptions or titles is invisible to AI attribute filtering.
How does state-level DTC shipping eligibility work in structured data?
Use areaServed on your Offer object, listing each state where your DTC alcohol license is active as a State object: { "@type": "State", "name": "California" }. AI shopping agents read areaServed to determine purchase eligibility before recommending a product. Without it, agents may recommend your wine or spirits to shoppers in states where you cannot legally ship — leading to checkout failures and a poor customer experience. For country-level restrictions, use eligibleRegion per the geo-restricted product schema guide.
How does beverage structured data help AI agents answer wine recommendation queries?
AI agents answering "bold Napa Cab under $100" need structured signals for Varietal, Appellation, Style, and Price — not a product title that contains those words. Without additionalProperty entries for Varietal: "Cabernet Sauvignon" and Appellation: "Napa Valley AVA," your product does not match the structured filter even if both words appear in your title. Structured attributes are also required for category-level queries ("all Napa Valley red wines under $80") where the agent must enumerate a set of products rather than rank a single result.
Should I include nutrition information for wine and beer products?
Yes. AI health agents factor calorie and carbohydrate data into recommendations for queries like "low-calorie wine under 100 calories per glass" or "keto-friendly spirits." Wine, beer, and spirits have well-defined serving sizes and caloric content. Add NutritionInformation with servingSize, calories, carbohydrateContent, and sugarContent. Spirits in particular benefit from declaring near-zero carbohydrates — a strong signal for keto and low-carb lifestyle queries. Shopify outputs no nutrition data by default and this must be added via Liquid. See the food and beverage nutrition schema guide for the full NutritionInformation pattern.
Related Resources
- Shopify Food & Beverage Nutrition Schema — NutritionInformation, containsAllergen, and dietary certification patterns for all food products.
- Shopify Schema Markup Guide — full JSON-LD implementation guide for Product and Offer blocks in Shopify Liquid.
- Ecommerce Product Schema Markup — complete Product type reference with all core and extended properties.
- Geo-Restricted Product Schema — eligibleRegion and ineligibleRegion patterns for country-level shipping restrictions.
- Shopify Age Verification Structured Data — full treatment of age restriction signals for alcohol, tobacco, and vaping categories.
- CatalogScan Blog — latest guides on AI shopping agent optimization for Shopify stores.