# Structured data (JSON-LD)

SEO and AI visibility

Structured data is a machine-readable summary of a page, in the schema.org vocabulary, embedded as JSON-LD. Search engines use it for rich results (price, stock, stars under a link, Merchant listings), and AI assistants use it to understand exactly what you sell and on what terms. GrandNode generates it automatically; your part is to keep the data behind it complete.

### The store

Every page carries an `Organization` (name, URL, logo, social profiles from the general settings) and a `WebSite` with a search action, so search engines can show a search box for your store. When merchandise returns are enabled, the organization also has a `MerchantReturnPolicy`: the return window from the sales settings, the countries you ship to, and optionally who pays and how items are sent back.

### Products

Each product page carries a `Product` with an `Offer`. A real example from the demo store:

```
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Aurora Room Portable Speaker",
  "url": "https://your-store/aurora-room-portable-speaker",
  "description": "A splash-proof, 20-hour portable speaker ...",
  "image": [ "https://your-store/assets/images/thumbs/..._aurora-room-portable-speaker.jpeg" ],
  "sku": "TA-003",
  "brand": { "@type": "Brand", "name": "Aurora Audio" },
  "offers": {
    "@type": "Offer",
    "price": "179",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock"
  },
  "aggregateRating": { "@type": "AggregateRating", "ratingValue": "5", "reviewCount": 1 }
}
```

| Property | Comes from |
|---|---|
| name, description, image | Product name, meta description, pictures. |
| sku, gtin, mpn | The product's SKU, GTIN and manufacturer part number (Inventory and General tabs). Fill in GTIN - Google matches products by it. |
| brand | The product's brand. |
| price, priceCurrency, availability | The current price and stock status. Omitted for products with hidden prices, "call for price", customer-entered prices and auctions. |
| aggregateRating | Approved product reviews. |
| shippingDetails | The shipping details for search engines (below). |
| hasMerchantReturnPolicy | The return settings; products marked "not returnable" say so. |

### Shipping details for search engines

Search engines show delivery cost and time only if you publish them. In **Configuration → Shipping → Shipping settings**, section **Shipping details for search engines**, enter the **Default shipping rate** and the **handling** and **transit** times in business days. These values are only published - checkout never uses them. Leave them empty to publish nothing.

![Shipping settings with the section Shipping details for search engines: default shipping rate, handling time minimum and maximum days, transit time minimum and maximum days](https://grandnode.com/Plugins/Theme.GrandNodeCom/Content/kb/seo/shipping-structured-data.webp)

Shipping details for search engines.

Products with free shipping (or over the free shipping threshold) are published as free.

### Return policy

In **Settings → Sales settings**, tab **Merchandise returns**, the **Return fees** (free or paid by the customer) and **Return method** (by mail, in store) complete the return policy that is published. They are optional and, like the shipping details, informational only.

![The Merchandise returns tab with Enable Returns System, number of days, Return fees and Return method set to Not specified](https://grandnode.com/Plugins/Theme.GrandNodeCom/Content/kb/seo/returns-structured-data.webp)

Return fees and return method.

### Test it

Paste a product URL into Google's Rich Results Test or the Schema Markup Validator. Fix warnings by filling in the missing data, not by editing the theme.

### Related

- [Visibility in AI assistants](https://grandnode.com/seo-ai-visibility)
- [Shipping](https://grandnode.com/configuration-shipping)
- [Merchandise returns](https://grandnode.com/sales-merchandise-returns)

- [Web page](https://grandnode.com/seo-structured-data)
