Optimization Guide

Shopify Specialty Coffee & Tea Schema — Origin Terroir, Processing Method, SCA Cupping Score, Roast Date & Certification Structured Data

AI shopping agents handling queries like "single-origin Ethiopian natural process light roast under $30," "Panamá Geisha washed whole bean," "SCA 87+ score Colombian Huila," or "USDA Organic direct trade Guatemalan pour-over" need machine-readable origin, process, varietal, cupping score, and roast date data. Shopify's default JSON-LD for a specialty coffee bag outputs name and price only — the absence of terroir, process method, and freshness signals makes every quality-filtered or origin-filtered coffee query unmatched.

TL;DR Use Product @type with additionalProperty for originCountry (ISO 3166-1 alpha-2), originRegion, originFarm, altitudeGrownMAL (unitCode: MTR), processMethod, coffeeVarietal, roastLevel, roastDate (ISO 8601), scaCuppingScore, and grindType. Add hasCertification for USDA Organic (with certifier + cert number), Fair Trade USA or Fairtrade International (distinct organizations), and Rainforest Alliance. Encode Direct Trade as additionalProperty Trade Relationship — not a certification. Use ProductGroup with variesBy grind type for whole bean vs pre-ground variants. Store all values in a coffee.* metafield namespace.

Why Specialty Coffee Demands Structured Data

A 12oz bag of "single-origin Ethiopian natural process washed light roast" retails at $25 or more. A bag of commodity Folgers instant retails for less than $10. When an AI shopping agent returns commodity results for a specialty query — because it cannot distinguish the two from unstructured text — that is a 100% conversion failure on a high-margin SKU.

Specialty coffee buyers search with seven specific attributes that commodity products cannot satisfy. Every one of these must be machine-readable in your structured data:

Without all seven attributes in structured data, an AI agent presented with "Ethiopia Yirgacheffe natural light roast 87 points" cannot determine whether your $28 bag is meaningfully different from a $12 grocery store bag — because the data required to make that determination does not exist in any machine-readable form on your product page.

JSON-LD Example 1: Ethiopian Yirgacheffe Natural Light Roast (250g, Whole Bean)

This example demonstrates the full set of origin terroir, processing, varietal, freshness, certification, and offer properties for a core specialty coffee SKU.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Dumerso Natural — Ethiopia Yirgacheffe Natural Light Roast, Whole Bean, 250g",
  "description": "Single-origin Ethiopia Yirgacheffe natural process light roast. Dumerso Washing Station, Gedeo Zone, SNNPR. Heirloom varieties. 1,900–2,200 MASL. SCA cupping score 87.5. Flavor notes: blueberry, jasmine, dark chocolate, stone fruit. USDA Organic. Rainforest Alliance Certified. Roasted to order — ships within 48 hours of roast.",
  "sku": "ETH-YRGA-NAT-LT-250-WB",
  "mpn": "ETH-YRGA-NAT-LT-250-WB",
  "brand": { "@type": "Brand", "name": "Example Roasters" },
  "hasMeasurement": {
    "@type": "QuantitativeValue",
    "name": "Net Weight",
    "value": "250",
    "unitCode": "GRM",
    "description": "250g net weight. At a 1:15 brew ratio with a 12g dose, yields approximately 20 cups."
  },
  "hasCertification": [
    {
      "@type": "Certification",
      "name": "USDA Organic",
      "issuedBy": {
        "@type": "Organization",
        "name": "Oregon Tilth Certified Organic (OTCO)",
        "url": "https://tilth.org"
      },
      "certificationIdentification": "OTCO-2024-00341",
      "description": "USDA National Organic Program (NOP) certified. Certifier: Oregon Tilth Certified Organic. Certificate number OTCO-2024-00341. No synthetic pesticides, herbicides, or fertilizers."
    },
    {
      "@type": "Certification",
      "name": "Rainforest Alliance Certified",
      "issuedBy": {
        "@type": "Organization",
        "name": "Rainforest Alliance",
        "url": "https://www.rainforest-alliance.org"
      },
      "description": "Rainforest Alliance Certified (green frog seal). Sustainability standards for biodiversity conservation, worker welfare, and farm management."
    },
    {
      "@type": "Certification",
      "name": "SCA Specialty Grade",
      "issuedBy": {
        "@type": "Organization",
        "name": "Specialty Coffee Association (SCA)",
        "url": "https://sca.coffee"
      },
      "certificationIdentification": "Q Grader License #42817 — Maria Santos — scored 2025-10-12",
      "description": "SCA cupping score 87.5/100. Scored by SCA-certified Q Grader Maria Santos (License #42817) on 2025-10-12. Score of 80+ = SCA Specialty Grade designation. 87.5 = Very Good tier (85–89 range)."
    }
  ],
  "additionalProperty": [
    {
      "@type": "PropertyValue",
      "name": "originCountry",
      "value": "ET",
      "description": "Ethiopia (ISO 3166-1 alpha-2: ET). East Africa. World's genetic birthplace of Arabica coffee."
    },
    {
      "@type": "PropertyValue",
      "name": "originRegion",
      "value": "Yirgacheffe",
      "description": "Yirgacheffe, Gedeo Zone, SNNPR, Ethiopia. One of the world's most celebrated coffee-growing micro-regions, known for floral and citrus characteristics in washed coffees and intense fruit in naturals."
    },
    {
      "@type": "PropertyValue",
      "name": "originFarm",
      "value": "Dumerso Washing Station",
      "description": "Dumerso Washing Station, Yirgacheffe, Ethiopia. Aggregates cherries from over 500 smallholder farmers in the surrounding Gedeo Zone."
    },
    {
      "@type": "PropertyValue",
      "name": "producer",
      "value": "Dumerso Farmers Cooperative",
      "description": "Producer cooperative operating the Dumerso Washing Station. Member of the Yirgacheffe Coffee Farmers Cooperative Union (YCFCU)."
    },
    {
      "@type": "PropertyValue",
      "name": "altitudeGrownMAL",
      "value": "1900–2200",
      "unitCode": "MTR",
      "description": "1,900–2,200 meters above sea level (MASL). High altitude slows cherry maturation, concentrating sugars and producing higher acidity and more complex flavor development compared to lower-altitude lots."
    },
    {
      "@type": "PropertyValue",
      "name": "processMethod",
      "value": "Natural (Dry Process)",
      "description": "Natural (Dry) process: coffee cherries dried whole with fruit intact on raised beds for 15–25 days before hulling. Imparts intense fruit, wine-like complexity, and syrupy body characteristic of Ethiopian naturals. Fermentation occurs during drying."
    },
    {
      "@type": "PropertyValue",
      "name": "coffeeVarietal",
      "value": "Ethiopian Heirloom",
      "description": "Ethiopian Heirloom (indigenous landrace varieties). Ethiopia harbors thousands of native Coffea arabica varieties — most are uncharacterized at the genetic level and collectively termed 'heirloom' or 'indigenous varieties.' Distinct from Geisha, Bourbon, or Typica."
    },
    {
      "@type": "PropertyValue",
      "name": "roastLevel",
      "value": "Light",
      "description": "Light roast. Internal bean temperature approximately 385–400°F (196–204°C) at drop. First crack complete. No second crack. Retains origin character, high perceived acidity, fruity and floral notes."
    },
    {
      "@type": "PropertyValue",
      "name": "roastDate",
      "value": "2026-06-01",
      "description": "Roasted 2026-06-01. Optimal freshness: 4–14 days post-roast for pour-over/filter; 7–21 days for espresso. CO2 degassing slows significantly after 30 days. Best consumed within 45 days of roast date."
    },
    {
      "@type": "PropertyValue",
      "name": "scaCuppingScore",
      "value": "87.5",
      "description": "SCA cupping score 87.5 / 100. Specialty Grade (80+). Very Good tier (85–89). Scored by Q Grader Maria Santos, License #42817. Any coffee scoring below 80 on the SCA protocol is not specialty grade by definition."
    },
    {
      "@type": "PropertyValue",
      "name": "grindType",
      "value": "Whole Bean",
      "description": "Whole bean — grind fresh before brewing for optimal flavor. Recommended grind settings: Medium-coarse (20–24 clicks on Comandante C40) for pour-over; Fine (8–10 clicks) for espresso."
    },
    {
      "@type": "PropertyValue",
      "name": "flavorNotes",
      "value": "Blueberry, Jasmine, Dark Chocolate, Stone Fruit",
      "description": "Tasting notes: blueberry, jasmine, dark chocolate, stone fruit. SCA flavor wheel descriptors. Notes are guide descriptors — individual perception varies."
    },
    {
      "@type": "PropertyValue",
      "name": "Trade Relationship",
      "value": "Direct Trade",
      "description": "Sourced directly from Dumerso Farmers Cooperative. Roaster pays $0.75/lb above Fairtrade floor price. No intermediary importers. Relationship established 2021. Note: Direct Trade is a trade relationship claim, not a third-party certification — there is no issuing body or audit standard."
    }
  ],
  "offers": {
    "@type": "Offer",
    "price": "26.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "url": "https://example-roasters.myshopify.com/products/dumerso-natural-yirgacheffe-250g",
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "US"
      },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": {
          "@type": "QuantitativeValue",
          "minValue": 1,
          "maxValue": 2,
          "unitCode": "DAY",
          "description": "Ships within 48 hours of roast date"
        },
        "transitTime": {
          "@type": "QuantitativeValue",
          "minValue": 2,
          "maxValue": 5,
          "unitCode": "DAY"
        }
      }
    }
  }
}
</script>

JSON-LD Example 2: Panamá Geisha Washed — ProductGroup with Grind Variants (100g)

Panamá Geisha is the most economically significant varietal distinction in specialty coffee. At $50–$100+ per 100g, it must be encoded separately from Ethiopian Gesha (a related but distinct variety) to prevent false matching. This example shows the ProductGroup pattern for whole bean vs ground variants and demonstrates the certificationIdentification Q Grader markup for a high-cupping-score lot.

{
  "@context": "https://schema.org",
  "@type": "ProductGroup",
  "name": "La Esmeralda Geisha — Panamá Boquete Washed, 100g",
  "description": "Panamá Geisha (Gesha variety, Chiriqui Province, Boquete). Hacienda La Esmeralda. Washed process. 1,850–1,950 MASL. SCA cupping score 92.5. Notes: bergamot, jasmine, peach, black tea, lychee. Available whole bean or ground for pour-over.",
  "brand": { "@type": "Brand", "name": "Example Roasters" },
  "variesBy": ["additionalProperty/grindType"],
  "hasVariant": [
    {
      "@type": "Product",
      "name": "La Esmeralda Geisha — Washed, 100g, Whole Bean",
      "sku": "PAN-GEIS-WA-LT-100-WB",
      "mpn": "PAN-GEIS-WA-LT-100-WB",
      "brand": { "@type": "Brand", "name": "Example Roasters" },
      "hasMeasurement": {
        "@type": "QuantitativeValue",
        "name": "Net Weight",
        "value": "100",
        "unitCode": "GRM",
        "description": "100g net weight. At 1:15 brew ratio with 12g dose, yields approximately 8 cups. Recommended for single-cup pour-over or AeroPress to preserve varietal clarity."
      },
      "hasCertification": [
        {
          "@type": "Certification",
          "name": "SCA Specialty Grade — Outstanding",
          "issuedBy": {
            "@type": "Organization",
            "name": "Specialty Coffee Association (SCA)",
            "url": "https://sca.coffee"
          },
          "certificationIdentification": "Q Grader License #38204 — Carlos Mendez — scored 2025-09-03",
          "description": "SCA cupping score 92.5/100. Scored by SCA-certified Q Grader Carlos Mendez (License #38204) on 2025-09-03. Score of 90–94 = Outstanding tier. Exceptional transparency and complexity characteristic of high-altitude Geisha."
        },
        {
          "@type": "Certification",
          "name": "Fairtrade International",
          "issuedBy": {
            "@type": "Organization",
            "name": "Fairtrade International (FLO)",
            "url": "https://www.fairtrade.net"
          },
          "certificationIdentification": "FLO-CERT-PA-00918",
          "description": "Fairtrade International certified (blue-and-green Fairtrade mark). Issued by FLO-CERT GmbH on behalf of Fairtrade International. Distinct from Fair Trade USA — FLO certification is recognized in Europe, Canada, Australia, and most non-US markets."
        }
      ],
      "additionalProperty": [
        {
          "@type": "PropertyValue",
          "name": "originCountry",
          "value": "PA",
          "description": "Panama (ISO 3166-1 alpha-2: PA). Chiriqui Province. Panamá produces some of the world's highest-scoring and highest-priced specialty coffees, led by the Geisha variety."
        },
        {
          "@type": "PropertyValue",
          "name": "originRegion",
          "value": "Boquete, Chiriqui",
          "description": "Boquete, Chiriqui Province, Panamá. High-altitude cloud forest micro-climate. Boquete and Volcan Baru are the two primary Geisha-producing regions in Panamá."
        },
        {
          "@type": "PropertyValue",
          "name": "originFarm",
          "value": "Hacienda La Esmeralda",
          "description": "Hacienda La Esmeralda, Boquete, Panamá. The Peterson family farm credited with popularizing the Geisha variety after their 2004 Best of Panamá competition win. Multiple Best of Panamá champion lots."
        },
        {
          "@type": "PropertyValue",
          "name": "producer",
          "value": "Peterson Family — Hacienda La Esmeralda",
          "description": "Peterson family, owners and operators of Hacienda La Esmeralda. Third-generation farm management. Direct relationship — no intermediary importers."
        },
        {
          "@type": "PropertyValue",
          "name": "altitudeGrownMAL",
          "value": "1850–1950",
          "unitCode": "MTR",
          "description": "1,850–1,950 meters above sea level (MASL). Among the highest commercial coffee-growing elevations in Panamá. Extreme altitude slows cherry maturation significantly, producing the bergamot and jasmine aromatics that define high-altitude Geisha."
        },
        {
          "@type": "PropertyValue",
          "name": "processMethod",
          "value": "Washed (Wet Process)",
          "description": "Washed (Wet) process: fruit pulped and mucilage fermented off before drying on raised beds for 12–18 days. Produces a clean, transparent cup with maximum origin clarity — the preferred process for Geisha to showcase its distinctive floral and tea-like character without fruit interference."
        },
        {
          "@type": "PropertyValue",
          "name": "coffeeVarietal",
          "value": "Geisha (Panamá)",
          "description": "Geisha variety as grown in Panamá (sometimes spelled 'Gesha' in Ethiopian context — the Panamanian cultivar descends from an Ethiopian wild accession via CATIE Costa Rica). Panamá Geisha is distinct from Ethiopian Gesha and commands a significantly different price tier ($50–$100+/100g vs $15–$25/100g). Must not be conflated with Gesha coffees from other origins."
        },
        {
          "@type": "PropertyValue",
          "name": "roastLevel",
          "value": "Light",
          "description": "Light roast. Roasted to first crack completion, approximately 385–400°F (196–204°C). Light roast is industry standard for Geisha to preserve the bergamot, jasmine, and tea-like varietal characteristics that define this cultivar's premium value."
        },
        {
          "@type": "PropertyValue",
          "name": "roastDate",
          "value": "2026-06-08",
          "description": "Roasted 2026-06-08. Optimal freshness window: 4–12 days post-roast for pour-over; 10–18 days for espresso. For a delicate Geisha at this price point, brewing within the peak window is essential to capture the bergamot and floral notes."
        },
        {
          "@type": "PropertyValue",
          "name": "scaCuppingScore",
          "value": "92.5",
          "description": "SCA cupping score 92.5 / 100. Outstanding tier (90–94). Scored by Q Grader Carlos Mendez (License #38204). Top 1% of specialty coffee by SCA scoring standards."
        },
        {
          "@type": "PropertyValue",
          "name": "grindType",
          "value": "Whole Bean",
          "description": "Whole bean. For pour-over, recommend medium grind: 20–22 clicks on Comandante C40 or 18–20 on Porlex Mini. For AeroPress, 15–17 clicks on Comandante C40."
        },
        {
          "@type": "PropertyValue",
          "name": "flavorNotes",
          "value": "Bergamot, Jasmine, Peach, Black Tea, Lychee",
          "description": "SCA flavor wheel descriptors: bergamot, jasmine, peach, black tea, lychee. These notes represent the signature aromatic profile of high-altitude washed Geisha."
        }
      ],
      "offers": {
        "@type": "Offer",
        "price": "58.00",
        "priceCurrency": "USD",
        "availability": "https://schema.org/LimitedAvailability",
        "url": "https://example-roasters.myshopify.com/products/la-esmeralda-geisha-100g-whole-bean",
        "description": "Limited micro-lot. Seasonal availability. 2025/26 harvest."
      }
    },
    {
      "@type": "Product",
      "name": "La Esmeralda Geisha — Washed, 100g, Ground Pour Over (Medium)",
      "sku": "PAN-GEIS-WA-LT-100-GPO",
      "mpn": "PAN-GEIS-WA-LT-100-GPO",
      "brand": { "@type": "Brand", "name": "Example Roasters" },
      "hasMeasurement": {
        "@type": "QuantitativeValue",
        "name": "Net Weight",
        "value": "100",
        "unitCode": "GRM"
      },
      "additionalProperty": [
        {
          "@type": "PropertyValue",
          "name": "grindType",
          "value": "Ground — Pour Over/Drip (Medium)",
          "description": "Pre-ground for pour-over and drip. Medium grind size, approximately equivalent to 20 clicks on Comandante C40 (18–22 clicks range). Ground-to-order at time of roast. Note: pre-ground coffee loses freshness faster than whole bean — consume within 10 days of roast date."
        },
        {
          "@type": "PropertyValue",
          "name": "originCountry", "value": "PA",
          "description": "Panama (ISO 3166-1 alpha-2: PA)"
        },
        {
          "@type": "PropertyValue",
          "name": "coffeeVarietal", "value": "Geisha (Panamá)",
          "description": "Geisha variety as grown in Panamá. Same lot as whole bean variant."
        },
        {
          "@type": "PropertyValue",
          "name": "processMethod", "value": "Washed (Wet Process)",
          "description": "Washed process. Same lot as whole bean variant."
        },
        {
          "@type": "PropertyValue",
          "name": "scaCuppingScore", "value": "92.5",
          "description": "SCA cupping score 92.5/100. Outstanding tier."
        },
        {
          "@type": "PropertyValue",
          "name": "roastDate", "value": "2026-06-08",
          "description": "Roasted 2026-06-08. Pre-ground: consume within 10 days of roast date for optimal flavor."
        }
      ],
      "offers": {
        "@type": "Offer",
        "price": "58.00",
        "priceCurrency": "USD",
        "availability": "https://schema.org/LimitedAvailability",
        "url": "https://example-roasters.myshopify.com/products/la-esmeralda-geisha-100g-ground-pour-over"
      }
    }
  ]
}

Origin Terroir additionalProperty Reference

Origin properties use the additionalProperty pattern with PropertyValue. Country of origin uses ISO 3166-1 alpha-2 as the value — include the full country name and region in description for human readability. Altitude uses UN/CEFACT unit code MTR (metre).

Property name Value format unitCode Notes
originCountryISO 3166-1 alpha-2 (e.g., ET, CO, GT, KE, PA)Include full country name + region in description. AI agents may query by country name, not ISO code.
originRegionFree text (e.g., Yirgacheffe, Huila, Antigua, Nyeri, Boquete)Sub-country growing region. May be a zone, department, county, or district name.
originFarmFree text (e.g., Dumerso Washing Station, Finca El Paraíso)Specific farm, estate, or washing station. Cooperatives should use cooperative name.
producerFree text (farmer, cooperative, or estate name)Can also encode via manufacturer on the Product for cooperatives that function as producers.
altitudeGrownMALRange string: 1800–2200MTRUN/CEFACT MTR = metre. Use range when lot spans multiple farms or elevations. Higher MASL = slower maturation, more complex acids, denser bean.

Major Growing Regions Reference

Country (ISO) Key regions Typical process Flavor signature
Ethiopia (ET)Yirgacheffe, Sidama, Guji, Jimma, HarrarWashed (Yirgacheffe/Sidama), Natural (Harrar, Guji)Floral, blueberry, jasmine, citrus (washed); wine, dark fruit, chocolate (natural)
Colombia (CO)Huila, Nariño, Cauca, Antioquia, Sierra NevadaWashedCaramel, red apple, orange, brown sugar, balanced acidity
Guatemala (GT)Antigua, Huehuetenango, Acatenango, AtitlánWashedDark chocolate, spice, brown sugar, mild fruit (Antigua); citrus, complex (Huehue)
Kenya (KE)Nyeri, Kirinyaga, Murang'a, Embu, KiambuWashed (double-fermented Kenyan wet process)Blackcurrant, tomato, grapefruit, wine-like, intense acidity
Panama (PA)Boquete, Volcán Barú, RenacimientoWashed (Geisha), Natural (Geisha)Bergamot, jasmine, peach, black tea, lychee (Geisha washed); tropical fruit, floral (Geisha natural)
Costa Rica (CR)Tarrazú, West Valley, Central Valley, BruncaHoney (all honey variants), Washed, NaturalOrange, peach, caramel, brown sugar; honey process amplifies sweetness and body
Indonesia (ID)Sumatra (Aceh, Mandheling), Sulawesi (Toraja), FloresWet-Hulled (Giling Basah)Earthy, cedar, tobacco, low acidity, full body, dark chocolate
Yemen (YE)Haraaz, Bani Matar, HaymaNatural (traditional dry on rooftops)Wine, tamarind, blueberry, cardamom, jammy — intense and complex

Processing Method: The Most-Searched Specialty Coffee Attribute

After origin country, processing method is the most common specialty coffee purchase filter. A buyer searching for "Ethiopian natural" is explicitly seeking the fruit-forward, wine-like cup produced by the natural process — returning a washed Ethiopian is a partial match at best. Every specialty coffee SKU must encode its process method in structured data.

Method Flavor profile Acidity Body Sweetness
Washed (Wet) Clean, transparent, bright. Origin character dominates. Citrus, floral, stone fruit. High Light to medium Medium
Natural (Dry) Intense fruit (blueberry, strawberry, tropical). Wine-like. Syrupy. Fermented complexity. Low to medium Full, syrupy High
Yellow Honey Moderate fruit, clean sweetness, slightly fuller than washed. ~25% mucilage retained. Medium-high Light-medium Medium-high
Red Honey Fruit-forward sweetness, peach, caramel. ~50% mucilage retained. Brown sugar. Medium Medium High
Black Honey Near-natural intensity. Jammy, dark fruit, wine, very sweet. ~75–100% mucilage retained. Low-medium Full Very high
Anaerobic Intense, fermented, tropical fruit, funky complexity. Sealed tank fermentation before or after pulping. Low-medium Full High
Carbonic Maceration Tropical fruit, candy-like, bubblegum. CO2-pressurized fermentation inspired by Beaujolais Nouveau winemaking. Low Medium-full Very high
Wet-Hulled (Giling Basah) Earthy, cedar, tobacco, mushroom. Indonesian-specific. Low acidity, heavy body. Very low Very full Low-medium

Encode the value using the exact process name above (e.g., "Natural (Dry Process)", "Washed (Wet Process)", "Red Honey", "Anaerobic Natural") as the processMethod additionalProperty value, with a full description of the flavor implication.

SCA Cupping Score Tiers

The Specialty Coffee Association's 100-point cupping protocol is the industry-standard quality certification for green and roasted coffee. An SCA cupping score is only valid when produced by an SCA-certified Q Grader — include the Q Grader's license number and scoring date in certificationIdentification.

Score range Grade Designation Typical descriptor
95–100ExceptionalGrand Cru tier — rare, auction-gradeDefect-free, extraordinary complexity, landmark cup
90–94OutstandingTop competition lotsHighly complex, distinctive terroir, exceptional clarity
85–89Very GoodPremium specialtyPronounced positive attributes, clean, well-balanced
80–84GoodSpecialty Grade (minimum)One or more outstanding attributes, clean cup
Below 80Below Specialty GradeCommercial grade — NOT specialty coffeeCup defects present; commodity or commercial classification

The 80-point threshold is a hard designation boundary. Encode scaCuppingScore only for coffees that have been formally cupped by a Q Grader. Do not estimate or self-assign scores. Encoding a score below 80 using the SCA Specialty Grade hasCertification markup is factually incorrect and conflicts with SCA's official protocol.

Roast Date vs Roast Level — A Critical Distinction

Roast date and roast level are two different properties that are frequently conflated in unstructured product descriptions. They must be encoded as separate additionalProperty entries.

Peak freshness windows by brew method:

In your Liquid snippet, populate roastDate dynamically from product.metafields.coffee.roast_date so it reflects the actual most recent roast batch, not a static placeholder.

Coffee Varietal — The Geisha Price Tier Problem

The coffeeVarietal property is the most commercially consequential distinction in specialty coffee structured data. Panamá Geisha (also spelled Gesha) commands $50–$100+ per 100g at retail. Ethiopian Heirloom commands $20–$28 per 250g. An AI agent that conflates "Geisha" with "Gesha" or returns any "Ethiopia Yirgacheffe" for a "Panamá Geisha" query fails on both price tier and origin simultaneously.

Varietal / Cultivar Origin Flavor characteristic Price tier
Geisha (Panamá)Chiriqui, PanamáBergamot, jasmine, black tea, lychee, peachPremium — $50–$100+/100g
Ethiopian Heirloom (Gesha/indigenous)EthiopiaFloral, fruity, varies by region — ancestral Geisha stockSpecialty — $20–$28/250g
SL28KenyaBlackcurrant, grapefruit, wine — Kenyan signaturePremium specialty
SL34KenyaBlackcurrant, grape, softer than SL28Premium specialty
BourbonRéunion origin; widely grown in Central America, EthiopiaCaramel, stone fruit, chocolate, round sweetnessMid-specialty
TypicaYemen via India; widely grownClean, sweet, mild acidity — classic Arabica baseMid-specialty
CaturraBrazil (Bourbon mutation)Bright acidity, medium body, citrusAccessible specialty
CatuaiBrazil (Caturra × Mundo Novo)Citrus, chocolate, mild — high yielderAccessible specialty
PacamaraEl Salvador (Pacas × Maragogype)Herbal, floral, tropical fruit, complexPremium specialty
MaragogypeBrazil (Typica mutation)Mild, low density, light body — "elephant bean"Novelty premium
ObatãBrazilChocolate, mild acidity, high yield — nematode resistantCommodity-specialty crossover
Mundo NovoBrazil (Bourbon × Typica)Chocolate, caramel, full bodyCommodity-specialty crossover

Certification Encoding: USDA Organic, Fair Trade, and Direct Trade

USDA Organic — certifier and cert number are mandatory

USDA Organic certification requires an NOP-accredited certifier. The certifier name and certificate number must appear in certificationIdentification — "Organic" alone is not a verifiable claim. Major NOP-accredited coffee certifiers include Oregon Tilth Certified Organic (OTCO), California Certified Organic Farmers (CCOF), and OCIA International.

Fair Trade USA vs Fairtrade International — different organizations

Fair Trade USA (fairtradeusa.org) and Fairtrade International (fairtrade.net) are independent organizations with different standards, logos, and certification fees. Fair Trade USA operates only in the United States. Fairtrade International (governed by FLO — Fairtrade Labelling Organizations International) operates in Europe, Canada, Australia, and most non-US markets. Encode them as separate hasCertification entries with distinct issuedBy organizations — never merge them into a generic "Fair Trade" entry.

Rainforest Alliance

Rainforest Alliance certification (the green frog seal) covers biodiversity conservation, sustainable farm management, and worker welfare. Encode with issuedBy.name: "Rainforest Alliance" and issuedBy.url: "https://www.rainforest-alliance.org".

Direct Trade — additionalProperty, not hasCertification

Direct Trade is a trade relationship claim made by a roaster about its sourcing practices. There is no third-party certification body, no universal standard, and no audit mechanism. Do not encode it as hasCertification. Instead, use additionalProperty with name: "Trade Relationship" and value: "Direct Trade", and document the specific relationship terms (farm name, premium paid above floor price, relationship duration, visit frequency) in the description field. This allows AI agents to accurately represent the claim without implying third-party verification that does not exist.

Organic Transitional — not the same as Certified Organic

A farm in the 3-year transition to USDA Organic certification cannot label its products "Certified Organic." Encode Organic Transitional as additionalProperty with name: "Farming Practice" and value: "Transitional Organic" plus a description noting the expected certification date. Using hasCertification with "USDA Organic" for a transitional farm is factually incorrect and may violate NOP labeling rules.

Grind Type and Package Weight

Grind type is a mandatory variant dimension for specialty coffee because the correct grind is brew-method-specific and cannot be recovered after grinding. Use ProductGroup with variesBy: ["additionalProperty/grindType"] to group whole bean and pre-ground variants as separate products.

grindType value Brew method Grind setting note
Whole BeanAny — grind fresh before brewingInclude recommended grinder settings for key grinders (Comandante C40, Baratza Encore) in description
Ground — Espresso (Fine)Espresso machine, Moka Pot, AeroPress (short)Fine grind — approximately 8–12 clicks on Comandante C40
Ground — Pour Over/Drip (Medium)Pour-over (V60, Chemex, Kalita), drip machineMedium — approximately 18–22 clicks on Comandante C40
Ground — French Press/Cold Brew (Coarse)French press, cold brew, percolatorCoarse — approximately 30–35 clicks on Comandante C40

Package weight uses hasMeasurement with a QuantitativeValue and unitCode: "GRM" (UN/CEFACT code for grams). Standard specialty coffee retail weights:

Include the yield calculation in the hasMeasurement description to answer "how many cups will I get?" queries that AI shopping agents commonly field.

Tea-Specific Schema Additions

Tea merchants use the same additionalProperty pattern with tea-specific property names. The key tea properties that differentiate premium tea (single-estate Darjeeling first flush, high-grade matcha, aged puerh) from commodity tea bags are type, oxidation level, harvest flush, and grade.

Property name Value format Example
teaTypeControlled vocabularyWhite, Green, Oolong, Black, Puerh (Sheng), Puerh (Shou), Herbal
oxidationLevelPercentage string0% (white/green), 30–70% (oolong), 100% (black), varies (puerh)
flushOrHarvestFree text + descriptionDarjeeling: First Flush (Spring), Second Flush (Summer), Autumn Flush; Chinese green: Pre-Qingming (Ming Qian), Qingming, Post-Qingming
teaGradeIndustry grade codeFTGFOP1 (Finest Tippy Golden Flowery Orange Pekoe Grade 1 — Darjeeling peak), OP (Orange Pekoe), BOP (Broken Orange Pekoe), Gyokuro, Matcha — Ceremonial Grade
brewingTemperatureQuantitativeValue with unitCode{ "value": "80", "unitCode": "CEL" } (green tea); { "value": "100", "unitCode": "CEL" } (black tea/puerh). Use FAH for Fahrenheit.
steepTimeSECInteger (seconds)120 (green, 2 min), 180 (black, 3 min), 45 (gyokuro, 45 sec)
originRegionFree textDarjeeling, West Bengal, Uji, Kyoto, Alishan, Taiwan, Yunnan

First Flush Darjeeling FTGFOP1 and ceremonial-grade matcha are the premium tea equivalents of Panamá Geisha — they command dramatically higher prices than commodity tea grades and must be encoded with full terroir and grade data for AI agents to match quality-filtered tea queries accurately.

Dawn Liquid Snippet: coffee.* Metafield Namespace

Save as snippets/coffee-product-schema.liquid. Activates for products tagged coffee, specialty-coffee, tea, or in the coffee or tea collections.

{% comment %} coffee-product-schema.liquid — specialty coffee and tea structured data {% endcomment %}
{% assign is_coffee = false %}
{% if product.tags contains 'coffee' or product.tags contains 'specialty-coffee' or product.tags contains 'tea' or product.tags contains 'single-origin' %}
  {% assign is_coffee = true %}
{% endif %}
{% for collection in product.collections %}
  {% if collection.handle == 'coffee' or collection.handle == 'tea' or collection.handle == 'specialty-coffee' %}
    {% assign is_coffee = true %}
  {% endif %}
{% endfor %}

{% if is_coffee %}
{% assign origin_country   = product.metafields.coffee.origin_country %}
{% assign origin_region    = product.metafields.coffee.origin_region %}
{% assign origin_farm      = product.metafields.coffee.origin_farm %}
{% assign altitude_masl    = product.metafields.coffee.altitude_masl %}
{% assign process_method   = product.metafields.coffee.process_method %}
{% assign varietal         = product.metafields.coffee.varietal %}
{% assign roast_level      = product.metafields.coffee.roast_level %}
{% assign roast_date       = product.metafields.coffee.roast_date %}
{% assign cupping_score    = product.metafields.coffee.cupping_score %}
{% assign grind_type       = product.metafields.coffee.grind_type %}
{% assign net_weight_grams = product.metafields.coffee.net_weight_grams %}
{% assign flavor_notes     = product.metafields.coffee.flavor_notes %}
{% assign certifications   = product.metafields.coffee.certifications %}
{% assign producer         = product.metafields.coffee.producer %}
{% assign sca_grade        = product.metafields.coffee.sca_grade %}

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": {{ product.title | json }},
  "description": {{ product.description | strip_html | truncatewords: 80 | json }},
  "url": "{{ shop.url }}{{ product.url }}",
  "sku": {{ product.selected_or_first_available_variant.sku | json }}
  {% if product.selected_or_first_available_variant.barcode != blank %}
  ,"gtin": {{ product.selected_or_first_available_variant.barcode | json }}
  {% endif %}
  {% if product.vendor != blank %}
  ,"brand": { "@type": "Brand", "name": {{ product.vendor | json }} }
  {% endif %}
  {% if net_weight_grams != blank %}
  ,"hasMeasurement": {
    "@type": "QuantitativeValue",
    "name": "Net Weight",
    "value": {{ net_weight_grams | json }},
    "unitCode": "GRM"
  }
  {% endif %}
  {% comment %} Certifications — check individual flags from certifications metafield (comma-separated list) {% endcomment %}
  {% assign cert_array = certifications | split: "," %}
  {% assign has_certs = false %}
  {% for cert in cert_array %}
    {% assign cert_trimmed = cert | strip %}
    {% if cert_trimmed == "usda-organic" or cert_trimmed == "fair-trade-usa" or cert_trimmed == "fairtrade-international" or cert_trimmed == "rainforest-alliance" or cert_trimmed == "sca-specialty-grade" %}
      {% assign has_certs = true %}
    {% endif %}
  {% endfor %}
  {% if has_certs %}
  ,"hasCertification": [
    {% assign cert_sep = false %}
    {% for cert in cert_array %}
      {% assign cert_trimmed = cert | strip %}
      {% if cert_trimmed == "usda-organic" %}
        {% if cert_sep %},{% endif %}
        { "@type": "Certification", "name": "USDA Organic", "issuedBy": { "@type": "Organization", "name": "USDA National Organic Program", "url": "https://www.ams.usda.gov/organic" } }
        {% assign cert_sep = true %}
      {% endif %}
      {% if cert_trimmed == "fair-trade-usa" %}
        {% if cert_sep %},{% endif %}
        { "@type": "Certification", "name": "Fair Trade Certified", "issuedBy": { "@type": "Organization", "name": "Fair Trade USA", "url": "https://www.fairtradeusa.org" } }
        {% assign cert_sep = true %}
      {% endif %}
      {% if cert_trimmed == "fairtrade-international" %}
        {% if cert_sep %},{% endif %}
        { "@type": "Certification", "name": "Fairtrade International", "issuedBy": { "@type": "Organization", "name": "Fairtrade International (FLO)", "url": "https://www.fairtrade.net" } }
        {% assign cert_sep = true %}
      {% endif %}
      {% if cert_trimmed == "rainforest-alliance" %}
        {% if cert_sep %},{% endif %}
        { "@type": "Certification", "name": "Rainforest Alliance Certified", "issuedBy": { "@type": "Organization", "name": "Rainforest Alliance", "url": "https://www.rainforest-alliance.org" } }
        {% assign cert_sep = true %}
      {% endif %}
      {% if cert_trimmed == "sca-specialty-grade" and sca_grade != blank %}
        {% if cert_sep %},{% endif %}
        { "@type": "Certification", "name": "SCA Specialty Grade", "issuedBy": { "@type": "Organization", "name": "Specialty Coffee Association (SCA)", "url": "https://sca.coffee" }, "description": {{ "SCA cupping score " | append: cupping_score | append: "/100. " | append: sca_grade | json }} }
        {% assign cert_sep = true %}
      {% endif %}
    {% endfor %}
  ]
  {% endif %}
  ,"additionalProperty": [
    {% assign ap_sep = false %}
    {% if origin_country != blank %}
    { "@type": "PropertyValue", "name": "originCountry", "value": {{ origin_country | json }} }
    {% assign ap_sep = true %}
    {% endif %}
    {% if origin_region != blank %}
    {% if ap_sep %},{% endif %}{ "@type": "PropertyValue", "name": "originRegion", "value": {{ origin_region | json }} }
    {% assign ap_sep = true %}
    {% endif %}
    {% if origin_farm != blank %}
    ,{ "@type": "PropertyValue", "name": "originFarm", "value": {{ origin_farm | json }} }
    {% endif %}
    {% if producer != blank %}
    ,{ "@type": "PropertyValue", "name": "producer", "value": {{ producer | json }} }
    {% endif %}
    {% if altitude_masl != blank %}
    ,{ "@type": "PropertyValue", "name": "altitudeGrownMAL", "value": {{ altitude_masl | json }}, "unitCode": "MTR" }
    {% endif %}
    {% if process_method != blank %}
    ,{ "@type": "PropertyValue", "name": "processMethod", "value": {{ process_method | json }} }
    {% endif %}
    {% if varietal != blank %}
    ,{ "@type": "PropertyValue", "name": "coffeeVarietal", "value": {{ varietal | json }} }
    {% endif %}
    {% if roast_level != blank %}
    ,{ "@type": "PropertyValue", "name": "roastLevel", "value": {{ roast_level | json }} }
    {% endif %}
    {% if roast_date != blank %}
    ,{ "@type": "PropertyValue", "name": "roastDate", "value": {{ roast_date | json }}, "description": {{ "Roasted " | append: roast_date | append: ". Optimal: 4–14 days post-roast for filter, 7–21 days for espresso." | json }} }
    {% endif %}
    {% if cupping_score != blank %}
    ,{ "@type": "PropertyValue", "name": "scaCuppingScore", "value": {{ cupping_score | json }} }
    {% endif %}
    {% if grind_type != blank %}
    ,{ "@type": "PropertyValue", "name": "grindType", "value": {{ grind_type | json }} }
    {% endif %}
    {% if flavor_notes != blank %}
    ,{ "@type": "PropertyValue", "name": "flavorNotes", "value": {{ flavor_notes | json }} }
    {% endif %}
  ]
  ,"offers": {
    "@type": "Offer",
    "price": {{ product.selected_or_first_available_variant.price | money_without_currency | json }},
    "priceCurrency": {{ cart.currency.iso_code | json }},
    "availability": {% if product.available %}"https://schema.org/InStock"{% else %}"https://schema.org/OutOfStock"{% endif %},
    "url": "{{ shop.url }}{{ product.url }}"
  }
}
</script>
{% endif %}

coffee.* metafield namespace — 15 fields

Metafield Type Example values
coffee.origin_countrySingle line textET, CO, GT, KE, PA, CR, ID, YE
coffee.origin_regionSingle line textYirgacheffe, Huila, Antigua, Nyeri, Boquete
coffee.origin_farmSingle line textDumerso Washing Station, Finca El Paraíso, Hacienda La Esmeralda
coffee.altitude_maslSingle line text1800–2200, 1500–1700, 1900–1950
coffee.process_methodSingle line textWashed (Wet Process), Natural (Dry Process), Red Honey, Anaerobic Natural
coffee.varietalSingle line textGeisha (Panamá), Ethiopian Heirloom, SL28, Bourbon, Caturra
coffee.roast_levelSingle line textLight, Medium-Light, Medium, Medium-Dark, Dark
coffee.roast_dateDate (ISO 8601)2026-06-01, 2026-06-08
coffee.cupping_scoreDecimal87.25, 92.5, 83.0
coffee.grind_typeSingle line textWhole Bean, Ground — Espresso (Fine), Ground — Pour Over/Drip (Medium), Ground — French Press/Cold Brew (Coarse)
coffee.net_weight_gramsInteger100, 250, 340, 454
coffee.flavor_notesSingle line textBlueberry, Jasmine, Dark Chocolate, Stone Fruit
coffee.certificationsSingle line text (comma-separated)usda-organic, rainforest-alliance, fair-trade-usa, sca-specialty-grade
coffee.producerSingle line textDumerso Farmers Cooperative, Peterson Family, Gatura Farmers Cooperative
coffee.sca_gradeSingle line textSpecialty Grade — Very Good (87.25), Specialty Grade — Outstanding (92.5)

5 Common Specialty Coffee Schema Mistakes

# Mistake Impact Fix
1 No roast date in structured data Roast freshness is the number one specialty coffee purchase filter for informed buyers. "Freshly roasted" in the product title is unstructured text — AI agents cannot calculate days-since-roast, cannot determine if the coffee is in its peak window, and cannot answer "what's the freshest Ethiopian available?" without a machine-readable roast date. Add additionalProperty roastDate with an ISO 8601 date value. Populate dynamically from product.metafields.coffee.roast_date in your Liquid snippet so it reflects the actual most recent roast batch.
2 "Organic" without certifier name and certificate number USDA Organic certification requires an NOP-accredited certifier — the certifier name and cert number are not optional. An hasCertification entry with just "name": "USDA Organic" cannot be verified and may be dismissed by AI agents performing certification validation. The certifier distinction also matters to buyers: Oregon Tilth and CCOF have different reputations and regional focuses. Add certificationIdentification with the certifier's certificate number and encode issuedBy with the NOP-accredited certifier name (Oregon Tilth, CCOF, OCIA, etc.) and URL.
3 Direct Trade encoded as hasCertification Direct Trade is a trade relationship claim with no issuing body, no audit standard, and no verification mechanism. Encoding it in hasCertification implies third-party verification that does not exist and can create a false equivalence with USDA Organic or Fairtrade International on the same product page — potentially triggering misrepresentation flags in AI-powered product evaluation systems. Remove Direct Trade from hasCertification. Encode it as additionalProperty with name: "Trade Relationship" and value: "Direct Trade", documenting the specific farm relationship, premium paid, and relationship duration in the description.
4 Missing varietal — especially for Geisha lots Panamá Geisha at $80/100g and Colombian Typica at $15/250g are not the same product. Without coffeeVarietal in structured data, an AI agent has no basis for distinguishing them beyond price — and price is not a reliable signal when a buyer queries "Geisha coffee." The omission costs conversion on the highest-margin SKU category in specialty coffee retail. Add additionalProperty coffeeVarietal with the full varietal name including origin disambiguation where needed: "Geisha (Panamá)", "Ethiopian Heirloom", "SL28", "Bourbon". Never leave varietal as a blank field for any premium or limited-release coffee.
5 No processing method in structured data Natural vs washed is the primary flavor differentiation axis in specialty coffee — more so than roast level for many buyers. A buyer searching "Ethiopian natural" explicitly wants the fruit-forward, wine-like cup profile produced by the dry process. Returning a washed Ethiopian because the processing method is not encoded is a flavor-profile mismatch that produces negative reviews and returns regardless of the coffee's quality. Add additionalProperty processMethod using the controlled vocabulary: Washed (Wet Process), Natural (Dry Process), Yellow/Red/Black Honey, Anaerobic, Carbonic Maceration, or Wet-Hulled (Giling Basah). Include flavor implication in the description field.

Frequently Asked Questions

How do I encode roast date (not roast level) in schema.org?

Use additionalProperty with a PropertyValue named roastDate and an ISO 8601 date string as the value (e.g., "2026-06-01"). This is a dynamic value — populate it from product.metafields.coffee.roast_date in your Liquid snippet, not as a static hardcoded date. Include the freshness window in the description: "Optimal 4–14 days post-roast for pour-over/filter; 7–21 days for espresso. Best consumed within 45 days of roast date." Do not confuse this with roast level (Light, Medium, Dark), which is a separate stable property describing the degree of roast — not the timestamp of when roasting occurred.

What is the difference between Fair Trade USA and Fairtrade International in schema.org?

Fair Trade USA (fairtradeusa.org) and Fairtrade International (fairtrade.net / FLO) are legally separate organizations with different certification standards, logos, and market coverage. Fair Trade USA operates in the United States only and applies its own certification framework that differs from FLO's in several areas including supply chain traceability. Fairtrade International (FLO) is recognized in Europe, Canada, Australia, and most non-US markets. Encode each with its own hasCertification entry and distinct issuedBy organization. If your coffee carries the blue-and-green Fairtrade mark common in Europe, encode it as Fairtrade International; if it carries the Fair Trade USA green-and-white label, encode it as Fair Trade USA. Never merge them into a single "Fair Trade" entry.

How do I distinguish Direct Trade from certified Fair Trade in schema.org?

Direct Trade is a sourcing relationship claim, not a third-party certification — there is no issuing body, no audit, and no certificate number. Use additionalProperty with name: "Trade Relationship" and value: "Direct Trade" and document the relationship in the description field: which farm, what premium above floor price, how many years the relationship has existed. Certified Fair Trade (whether Fair Trade USA or Fairtrade International) belongs in hasCertification with the issuing body named explicitly. A product can simultaneously carry a Fairtrade International certification and a Direct Trade designation — encode both, using hasCertification for the formal certification and additionalProperty for the trade relationship claim.

Should I use ProductGroup for whole bean vs pre-ground coffee variants?

Yes — use ProductGroup with variesBy: ["additionalProperty/grindType"] whenever you sell the same coffee in multiple grind formats. Each grind format is a separate product with its own SKU: whole bean, ground espresso (fine), ground pour-over (medium), ground French press/cold brew (coarse). The ProductGroup allows AI agents to surface the correct variant for format-specific queries ("pre-ground pour-over Colombian" vs "whole bean Ethiopian for espresso"). Each variant's grindType additionalProperty must also include a description noting the specific grind setting equivalent on common hand grinders, since specialty coffee buyers frequently search by grinder model compatibility.

How do I encode an SCA cupping score in schema.org?

Use additionalProperty with PropertyValue: set name: "scaCuppingScore", value as a decimal string (e.g., "87.25"), and include the Q Grader's name, license number, and scoring date in the description. There is no schema.org unitCode for SCA cupping score — it is a dimensionless 100-point scale. Additionally, add a hasCertification entry with name: "SCA Specialty Grade" for coffees scoring 80 or above, with the Q Grader identification in certificationIdentification. Do not encode a cupping score for coffees that have not been formally evaluated by an SCA-certified Q Grader — self-assigned scores are not valid uses of this property and misrepresent the SCA's protocol.

Are your coffee origin, process method, and roast date invisible to AI shopping agents?

CatalogScan audits your Shopify store for missing origin terroir, absent processing method data, unstructured roast date claims, and invalid certification markup — the top AI agent visibility gaps for specialty coffee and tea pages.

Run Free Scan

Related Resources