Tan Phat Media

Product Schema Là Gì? Triển Khai Schema Sản Phẩm Chuẩn

22 tháng 5, 2026
5.217
product schema markup
product schema
structured data sản phẩm
schema ecommerce
schema markup seo
cách triển khai product schema
structured data cho sản phẩm
product schema google
schema markup cho website bán hàng
Product Schema Là Gì? Triển Khai Schema Sản Phẩm Chuẩn - Tấn Phát Digital

Hãy thử tìm một sản phẩm trên Google. Kết quả từ các sàn lớn hiển thị sao đánh giá, giá, tình trạng còn hàng ngay trên trang tìm kiếm. Còn kết quả từ shop nhỏ chỉ là một dòng tiêu đề và đoạn mô tả khô khan. Bạn sẽ click vào cái nào?

Đó chính là lợi thế của Product Schema — và cũng là lý do phần lớn shop online Việt Nam đang bỏ lỡ một cơ hội lớn, vì họ nghĩ schema "kỹ thuật quá", không biết bắt đầu từ đâu, hoặc sợ làm sai.

Bài viết này giải mã toàn bộ Product Schema, kèm code mẫu sẵn dùng cho shop Việt. Bài dành cho: chủ shop online, developer triển khai schema, SEO specialist chuyên ecommerce, và marketing manager cần hiểu để giao việc.

Phần 1: Product Schema là gì?

Theo Google, khi bạn thêm structured data cho trang sản phẩm, thông tin sản phẩm có thể xuất hiện phong phú hơn trong kết quả tìm kiếm (kể cả Google Images và Google Lens) — người dùng có thể thấy giá, tình trạng hàng, đánh giá, thông tin vận chuyển và nhiều thứ khác ngay trong kết quả tìm kiếm.

Lợi ích cụ thể: rich snippet (tăng tỷ lệ nhấp), hiển thị giá (lọc đúng người có ý định mua), tình trạng còn hàng (tăng niềm tin), thông tin ship và chính sách đổi trả (giảm ma sát), số lượng đánh giá (social proof), xuất hiện trên Google Shopping và Google Lens — và ngày càng quan trọng: sản phẩm có cơ hội xuất hiện trong các câu trả lời AI.

Phần 2: Hai loại Product Schema — phân biệt quan trọng

Google phân biệt rõ hai lớp structured data cho sản phẩm. Hãy chọn loại phù hợp nhất với trường hợp của bạn.

Tiêu chí

Product Snippet

Merchant Listing

Dành cho

Trang mà người dùng KHÔNG mua trực tiếp được (blog review, so sánh, affiliate)

Trang mà người dùng CÓ THỂ mua trực tiếp (trang sản phẩm ecommerce)

Trọng tâm

Thông tin đánh giá

Thông tin sản phẩm chi tiết

Pros/Cons (positiveNotes/negativeNotes)

Không

Giá

Tình trạng hàng (availability)

Không cần

Bắt buộc

Thông tin vận chuyển

Không

Chính sách đổi trả

Không

Size quần áo

Không

Google lưu ý có sự chồng lấn giữa hai loại: nhìn chung, nếu bạn khai báo đầy đủ các thuộc tính bắt buộc cho merchant listing, trang sản phẩm của bạn cũng đủ điều kiện cho cả product snippet.

Khuyến nghị: shop ecommerce → dùng Merchant Listing (được hưởng cả hai). Blog review → dùng Product Snippet. Site lai → chọn theo từng trang.

Phần 3: Thuộc tính BẮT BUỘC

Tối thiểu để schema được chấp nhận:

json

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Áo thun nam cotton trắng",
  "image": "https://shop.com/ao-trang.jpg",
  "offers": {
    "@type": "Offer",
    "price": "299000",
    "priceCurrency": "VND",
    "availability": "https://schema.org/InStock"
  }
}

Giá trị hợp lệ cho availability:

https://schema.org/InStock              // Còn hàng
https://schema.org/OutOfStock           // Hết hàng
https://schema.org/PreOrder             // Đặt trước
https://schema.org/BackOrder            // Đặt hàng, chờ về
https://schema.org/SoldOut              // Đã bán hết
https://schema.org/Discontinued         // Ngừng kinh doanh
https://schema.org/LimitedAvailability  // Số lượng có hạn

Phần 4: Schema đầy đủ cho Merchant Listing

Càng nhiều thuộc tính → càng nhiều cơ hội xuất hiện trong rich result:

json

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Áo Thun Nam Cotton Trắng Dáng Regular",
  "image": [
    "https://shop.com/photos/1x1/ao-trang.jpg",
    "https://shop.com/photos/4x3/ao-trang.jpg",
    "https://shop.com/photos/16x9/ao-trang.jpg"
  ],
  "description": "Áo thun nam cotton 100% chất liệu cao cấp, dáng regular fit.",
  "sku": "AT-001-WHITE-M",
  "gtin13": "8938503001234",
  "brand": { "@type": "Brand", "name": "Shop XYZ" },
  "offers": {
    "@type": "Offer",
    "url": "https://shop.com/ao-thun-nam-cotton-trang",
    "priceCurrency": "VND",
    "price": "299000",
    "priceValidUntil": "2026-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "VN",
      "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": "VND" },
      "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "VN" },
      "deliveryTime": {
        "@type": "ShippingDeliveryTime",
        "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
        "transitTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 3, "unitCode": "DAY" }
      }
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "reviewCount": "127",
    "bestRating": "5",
    "worstRating": "1"
  }
}

Với Product Snippet (blog review), điểm khác biệt lớn nhất là có thể khai báo ưu/nhược điểm:

json

{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "iPhone 16 Pro Max 256GB",
  "image": "https://blog.com/iphone-16-review.jpg",
  "brand": { "@type": "Brand", "name": "Apple" },
  "review": {
    "@type": "Review",
    "reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" },
    "author": { "@type": "Person", "name": "Tấn Phát Digital" },
    "datePublished": "2026-05-19",
    "reviewBody": "Sau 30 ngày sử dụng...",
    "positiveNotes": {
      "@type": "ItemList",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Pin tốt hơn thế hệ trước" },
        { "@type": "ListItem", "position": 2, "name": "Camera telephoto ấn tượng" }
      ]
    },
    "negativeNotes": {
      "@type": "ItemList",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Giá cao" }
      ]
    }
  }
}

Phần 5: Product Identifiers — GTIN, MPN, SKU

Identifier giúp Google khớp sản phẩm của bạn với cơ sở dữ liệu sản phẩm toàn cầu, hiển thị trong Shopping Knowledge Panel và so sánh giá với người bán khác.

Loại

Là gì

Ví dụ

GTIN

Mã barcode quốc tế (UPC, EAN, ISBN). Có gtin8, gtin12, gtin13 (EAN — phổ biến ở VN), gtin14

"gtin13": "8938503001234"

MPN

Mã linh kiện của nhà sản xuất

"mpn": "A2784"

SKU

Mã quản lý nội bộ của shop bạn

"sku": "AT-001-WHITE-M"

Dùng cái nào? Sản phẩm có thương hiệu (iPhone, Adidas...) → GTIN + MPN + SKU. Sản phẩm OEM/no-brand → MPN + SKU. Sản phẩm tự sản xuất → SKU.

Phần 6: Kết hợp với Organization Markup

Google khuyến nghị: ngoài structured data cho từng sản phẩm, hãy khai báo thêm structured data mô tả chính sách của doanh nghiệp ecommerce, lồng dưới Organization markup. Đặt ở trang chủ hoặc toàn site:

json

{
  "@context": "https://schema.org/",
  "@type": "OnlineStore",
  "name": "Shop XYZ",
  "url": "https://shop.com",
  "logo": "https://shop.com/logo.png",
  "sameAs": [
    "https://facebook.com/shopxyz",
    "https://instagram.com/shopxyz"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+84-901-234-567",
    "contactType": "customer service",
    "areaServed": "VN",
    "availableLanguage": ["Vietnamese", "English"]
  },
  "hasMerchantReturnPolicy": {
    "@type": "MerchantReturnPolicy",
    "applicableCountry": "VN",
    "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
    "merchantReturnDays": 30,
    "returnMethod": "https://schema.org/ReturnByMail",
    "returnFees": "https://schema.org/FreeReturn"
  },
  "hasMemberProgram": {
    "@type": "MemberProgram",
    "name": "Shop XYZ Rewards",
    "description": "Tích điểm với mỗi đơn hàng, đổi voucher giảm giá",
    "url": "https://shop.com/rewards"
  }
}

Giá trị returnPolicyCategory: MerchantReturnFiniteReturnWindow (có thời hạn), MerchantReturnUnlimitedWindow (không giới hạn), MerchantReturnNotPermitted (không đổi trả). Giá trị returnFees: FreeReturn, ReturnFeesCustomerResponsibility, OriginalShippingFees.

Phần 7: Triển khai theo nền tảng

JSON-LD là định dạng khuyến nghị — đặt trong <head>:

html

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": "Áo Thun Nam Cotton Trắng",
  "image": "https://shop.com/ao-trang.jpg",
  "offers": {
    "@type": "Offer",
    "price": "299000",
    "priceCurrency": "VND",
    "availability": "https://schema.org/InStock"
  }
}
</script>

WordPress + WooCommerce (plugin: Yoast, Rank Math, Schema Pro — hoặc tự code):

php

add_action('wp_head', function() {
    if (!is_product()) return;
    global $product;

    $schema = [
        '@context' => 'https://schema.org/',
        '@type'    => 'Product',
        'name'     => $product->get_name(),
        'image'    => wp_get_attachment_url($product->get_image_id()),
        'sku'      => $product->get_sku(),
        'offers'   => [
            '@type'         => 'Offer',
            'url'           => get_permalink($product->get_id()),
            'price'         => $product->get_price(),
            'priceCurrency' => get_woocommerce_currency(),
            'availability'  => $product->is_in_stock()
                ? 'https://schema.org/InStock'
                : 'https://schema.org/OutOfStock'
        ]
    ];

    echo '<script type="application/ld+json">' .
         json_encode($schema, JSON_UNESCAPED_UNICODE) .
         '</script>';
});

Shopify (product.liquid):

liquid

<script type="application/ld+json">
{
  "@context": "https://schema.org/",
  "@type": "Product",
  "name": {{ product.title | json }},
  "image": [
    {% for image in product.images %}
      {{ image | img_url: '1024x' | prepend: 'https:' | json }}
      {% unless forloop.last %},{% endunless %}
    {% endfor %}
  ],
  "sku": {{ product.selected_or_first_available_variant.sku | json }},
  "brand": { "@type": "Brand", "name": {{ product.vendor | json }} },
  "offers": {
    "@type": "Offer",
    "url": {{ shop.url | append: product.url | json }},
    "priceCurrency": {{ cart.currency.iso_code | json }},
    "price": {{ product.selected_or_first_available_variant.price | divided_by: 100.00 | json }},
    "availability": "{% if product.available %}https://schema.org/InStock{% else %}https://schema.org/OutOfStock{% endif %}"
  }
}
</script>

Next.js / React:

javascript

import Head from 'next/head';

export default function ProductPage({ product }) {
  const schema = {
    "@context": "https://schema.org/",
    "@type": "Product",
    "name": product.name,
    "image": product.images,
    "sku": product.sku,
    "offers": {
      "@type": "Offer",
      "price": product.price,
      "priceCurrency": "VND",
      "availability": product.inStock
        ? "https://schema.org/InStock"
        : "https://schema.org/OutOfStock"
    }
  };

  return (
    <Head>
      <script type="application/ld+json"
              dangerouslySetInnerHTML={{ __html: JSON.stringify(schema) }} />
    </Head>
  );
}

Phần 8: Schema cho biến thể (Product Variants)

Nếu sản phẩm có biến thể (màu, size), dùng ProductGroup để Google hiểu chúng thuộc cùng một sản phẩm:

json

{
  "@context": "https://schema.org/",
  "@type": "ProductGroup",
  "name": "Áo Thun Nam Cotton",
  "productGroupID": "AT-001",
  "variesBy": ["color", "size"],
  "hasVariant": [
    {
      "@type": "Product",
      "sku": "AT-001-WHITE-M",
      "name": "Áo Thun Nam Cotton Trắng - Size M",
      "color": "Trắng",
      "size": "M",
      "image": "https://shop.com/photos/at-001-white-m.jpg",
      "offers": {
        "@type": "Offer", "price": "299000", "priceCurrency": "VND",
        "availability": "https://schema.org/InStock"
      }
    },
    {
      "@type": "Product",
      "sku": "AT-001-BLACK-M",
      "name": "Áo Thun Nam Cotton Đen - Size M",
      "color": "Đen",
      "size": "M",
      "image": "https://shop.com/photos/at-001-black-m.jpg",
      "offers": {
        "@type": "Offer", "price": "299000", "priceCurrency": "VND",
        "availability": "https://schema.org/InStock"
      }
    }
  ]
}

Lợi ích: Google hiểu các biến thể là cùng một sản phẩm, hiển thị tùy chọn trong Shopping, và cho phép giá/tình trạng hàng riêng theo từng biến thể. Việc này cần đi kèm chiến lược URL và canonical hợp lý để tránh trùng lặp.

Phần 9: Kiểm tra và lỗi thường gặp

Công cụ: Rich Results Test (dán URL → xem Valid / Warning / Error), Schema Markup Validator (kiểm tra cấu trúc), và Search Console → Enhancements → Products (theo dõi sau khi deploy).

Lỗi

Nguyên nhân

Cách sửa

Missing field image

Không có hình

Thêm image với URL tuyệt đối

Missing field offers / price

Thiếu thông tin giá

Thêm object offers đầy đủ

Invalid value availability

Sai định dạng

Dùng đúng URL schema.org

Missing aggregateRating fields

Thiếu reviewCount

Bổ sung số lượng đánh giá

Giá không khớp

Schema khác giá hiển thị

Sinh schema động từ database

Phần 10: 8 sai lầm cần tránh

Sai lầm

Vì sao nguy hiểm

Cách đúng

Review giả

Vi phạm chính sách, có thể bị manual action

Chỉ dùng review thật từ khách hàng

Schema không khớp nội dung hiển thị

Google bỏ qua schema, có thể cảnh báo

Sinh động từ database, giá schema = giá user thấy

aggregateRating khi chưa có review nào (reviewCount: 0)

Dữ liệu sai lệch

Chỉ thêm khi review thật (≥ 1)

Chỉ gắn schema cho 1–2 trang

Bỏ lỡ hàng nghìn sản phẩm

Gắn schema cho tất cả trang sản phẩm

Quên cập nhật khi giá thay đổi

Khách click vào thấy giá khác → mất niềm tin

Sinh schema động, cập nhật real-time

priceValidUntil đã quá hạn

Google cảnh báo offer hết hiệu lực

Cập nhật thường xuyên

Thiếu priceCurrency

Google không biết VND hay USD

Luôn khai báo priceCurrency

URL ảnh tương đối (/photos/ao.jpg)

Google không tìm được ảnh

Dùng URL tuyệt đối https://...

Phần 11: Checklist triển khai

Nhóm

Cần kiểm tra

Bắt buộc

@context, @type, name, image (URL tuyệt đối), offers, price (chỉ số), priceCurrency, availability dùng URL schema.org

Khuyến nghị

description, sku, brand, gtin13/mpn, aggregateRating (nếu có review thật), priceValidUntil

Merchant Listing

hasMerchantReturnPolicy, shippingDetails, nhiều tỷ lệ ảnh (1:1, 4:3, 16:9), itemCondition

Biến thể

ProductGroup, variesBy, mỗi biến thể có URL + SKU riêng, canonical đúng

Kiểm thử

Rich Results Test, Schema Validator, không còn error

Triển khai

Schema trên mọi trang sản phẩm, sinh động từ database, khớp nội dung hiển thị

Giám sát

Theo dõi Enhancements report hàng tuần, sửa lỗi ngay khi phát hiện

Kết luận

Trong các kỹ thuật SEO Ecommerce, Product Schema là một trong những hạng mục có ROI cao nhất: chi phí thấp (chỉ cần triển khai code), hiệu quả tương đối nhanh, tác động rõ tới tỷ lệ nhấp, và bền vững.

Năm thông điệp cốt lõi: (1) schema không còn là tùy chọn với ecommerce; (2) schema phải khớp với nội dung hiển thị; (3) biến thể cần ProductGroup; (4) validate trước khi deploy; và (5) giám sát liên tục qua Search Console.

Product Schema là một phần quan trọng của chiến lược SEO Ecommerce hiện đại. Nếu bạn muốn tối ưu website bán hàng chuẩn SEO và triển khai structured data đúng cách, hãy liên hệ Tấn Phát Digital để được tư vấn.

Biên soạn và Việt hóa từ tài liệu Google Search Central về Product structured data. Code mẫu và checklist thuộc về Tấn Phát Digital.

Câu hỏi thường gặp

Product Schema là gì?

Product Schema là dữ liệu có cấu trúc dùng để mô tả thông tin sản phẩm cho công cụ tìm kiếm như tên, giá, tình trạng còn hàng, đánh giá và thương hiệu. Nó thường được khai báo theo chuẩn Schema.org bằng JSON-LD để Google hiểu nội dung trang rõ hơn.

Triển khai Product Schema mang lại lợi ích gì cho website bán hàng?

Product Schema giúp công cụ tìm kiếm đọc đúng thông tin sản phẩm và có thể hiển thị rich results như giá, đánh giá sao, tình trạng kho. Điều này giúp kết quả tìm kiếm nổi bật hơn, tăng khả năng được nhấp và hỗ trợ SEO tốt hơn.

Product Schema có giúp tăng thứ hạng SEO không?

Product Schema không phải yếu tố xếp hạng trực tiếp, nhưng nó giúp Google hiểu trang sản phẩm chính xác hơn và cải thiện cách hiển thị trên kết quả tìm kiếm. Nếu snippet hấp dẫn hơn, tỷ lệ nhấp có thể tăng và hỗ trợ hiệu quả SEO tổng thể.

Những thuộc tính quan trọng nhất trong Product Schema là gì?

Các thuộc tính quan trọng thường gồm name, image, description, brand, sku, offers, price, priceCurrency, availability và aggregateRating nếu có đánh giá. Thiếu các trường cốt lõi, schema có thể không đủ điều kiện hiển thị rich results hoặc bị Google bỏ qua.

Nên dùng JSON-LD hay Microdata để khai báo Schema sản phẩm?

JSON-LD thường là lựa chọn ưu tiên vì dễ triển khai, dễ bảo trì và được Google khuyến nghị. Bạn có thể thêm mã vào trang mà không cần chỉnh sửa cấu trúc HTML quá nhiều, đồng thời giảm rủi ro sai markup khi cập nhật giao diện.

Product Schema có bắt buộc phải có giá và tình trạng còn hàng không?

Nếu muốn tối ưu khả năng hiển thị thông tin sản phẩm trên Google, giá và tình trạng còn hàng là hai trường rất quan trọng trong phần offers. Ngoài việc khai báo trong schema, nội dung hiển thị thực tế trên trang cũng cần khớp để tránh lỗi không hợp lệ.

Có thể thêm đánh giá sao vào Product Schema như thế nào?

Bạn có thể dùng aggregateRating để khai báo điểm đánh giá trung bình và số lượng review, nhưng chỉ nên thêm khi website thật sự có dữ liệu đánh giá hiển thị công khai trên trang. Nếu tự thêm dữ liệu không có thật, schema có thể bị xem là spam.

Những lỗi thường gặp khi triển khai Schema sản phẩm là gì?

Các lỗi phổ biến gồm khai báo giá không khớp với nội dung trang, thiếu thuộc tính bắt buộc, dùng sai kiểu dữ liệu, đánh dấu nhiều sản phẩm trên một trang không đúng cấu trúc hoặc thêm rating giả. Những lỗi này có thể khiến Google không hiển thị rich results.

Làm sao kiểm tra Product Schema đã triển khai đúng hay chưa?

Bạn nên dùng Rich Results Test và Schema Markup Validator để kiểm tra cú pháp, trường dữ liệu và khả năng đủ điều kiện hiển thị. Sau đó theo dõi Search Console để phát hiện cảnh báo, lỗi và xem Google có đang đọc schema đúng như mong muốn hay không.

Khi nào nên cập nhật lại Product Schema trên trang sản phẩm?

Bạn nên cập nhật ngay khi có thay đổi về giá, tồn kho, chương trình khuyến mãi, biến thể sản phẩm hoặc đánh giá mới. Schema cũ không khớp với nội dung trang có thể làm giảm độ tin cậy, gây lỗi trong Search Console và ảnh hưởng đến rich results.

Bài viết liên quan

Bài cùng chuyên mục

Bài trụ cột của chủ đề

Hình ảnh đại diện của bài viết: Nghiên Cứu Từ Khóa SEO 2026: Tìm Từ Khóa "Hái Ra Tiền"
Bài trụ cột

Nghiên Cứu Từ Khóa SEO 2026: Tìm Từ Khóa "Hái Ra Tiền"

Nghiên cứu từ khóa SEO cho người mới 2026: phân biệt từ khóa thông tin vs "hái ra tiền", chọn theo ý định tìm kiếm, công cụ miễn phí và lập bản đồ từ khóa.

Bài mới nhất cùng chuyên mục

Zalo
Facebook
Tấn Phát Digital
Zalo
Facebook