Lỗi hasMerchantReturnPolicy và shippingDetails xảy ra khi thiếu thông tin về chính sách đổi trả hoặc chi tiết vận chuyển trong dữ liệu có cấu trúc (Schema Markup) của sản phẩm.
Trong bài viết dưới đây, mình sẽ hướng dẫn bạn chi tiết 3 bước fix lỗi hasMerchantReturnPolicy & shippingDetails mà bạn không cần phải đụng vào code của website. Chỉ cần bạn tải plugin về. sửa thông tin trong đoạn code mình đưa và add nó lên website là lỗi sẽ được fix hoàn toàn vĩnh viễn.
Nội dung bài học
3 bước Fix lỗi hasMerchantReturnPolicy & shippingDetails không cần đụng code
Bước 1: Tải Plugin Code Snippet
Đầu tiên bạn vào phần Add Plugin của WordPress, tìm “code snippet”. Sau đó bạn tải Plugin Code Snippet về và Active lên.

Bước 2: Thêm code vào Plugin
Bạn vào plugin và Chọn Add New.

Trong giao diện, bạn sẽ:
- Đặt tên bất kỳ vào Title cho Snippet
- Chèn đoạn code dưới đây vào phần Snippet Content. Sau đó nhấn Save & Active
Đoạn Code mà bạn sẽ chèn:
add_filter( 'rank_math/snippet/rich_snippet_product_entity', function( $entity ) {
if ( empty( $entity['offers'] ) ) {
return $entity;
}
$entity['offers']['hasMerchantReturnPolicy'] = [
'@type' => 'MerchantReturnPolicy',
'applicableCountry' => 'VN',
'returnPolicyCountry' => 'VN',
'returnPolicyCategory' => 'https://schema.org/MerchantReturnFiniteReturnWindow',
'merchantReturnDays' => 7,
'returnMethod' => 'https://schema.org/ReturnInStore',
'returnFees' => 'https://schema.org/FreeReturn',
'refundType' => 'https://schema.org/FullRefund',
];
$entity['offers']['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',
],
],
];
return $entity;
} );PHPTuy nhiên bạn sẽ cần sửa một số thông tin sau để đồng bộ với thông tin doanh nghiệp trên website:
'merchantReturnDays' => 7,: Phần này là thời gian hoàn trả hàng. Nếu Website bạn công bố hoàn trả 15 ngày hoặc 30 ngày thì bạn sửa thành 15 hoặc 30.'@type' => 'MonetaryAmount', 'value' => 0,: Bạn sẽ sửa cái Value thôi nhé! Value này là phí vận chuyển. Nếu bạn Free ship thì bạn để 0. Nếu bạn tính phí vận chuyển là 15.000đ hoặc 30.000đ thì bạn sửa thành 15000 hoặc 30000'handlingTime' => [ '@type' => 'QuantitativeValue', 'minValue' => 0, 'maxValue' => 1, 'unitCode' => 'DAY', ],: Bạn sẽ sửa giá trị của minValue và maxValue nhé! Đây là thời gian chuẩn bị hàng. Như hiện tại mình chuẩn bị hàng trong vòng 1 ngày thì giá trị min và max là 0 và 1. Nếu bạn chuẩn bị hàng từ 1 đến 3 ngày thì giá trị min & max sẽ là 1 và 3.'transitTime' => [ '@type' => 'QuantitativeValue', 'minValue' => 1, 'maxValue' => 3, 'unitCode' => 'DAY', ],: Bạn sẽ sửa giá trị của minValue và maxValue nhé! Đây là thời gian giao hàng. Như hiện tại mình chuẩn bị hàng từ 1 đến 3 ngày thì giá trị min và max là 1 và 3. Nếu bạn giao hàng từ 1 đến 7 ngày thì giá trị min & max sẽ là 1 và 7.

Sau khi thêm Code, bạn check lại Google Search Console sẽ thấy lỗi đã được fix hoàn.



Bước 3: Validation lại 2 lỗi hasMerchantReturnPolicy & shippingDetails trong Google Search Console
Sau khi đã thực hiện xong, bạn vào trong Google Search Console, chọn phần Shipping -> Merchant Shipping và Validation lại 2 lỗi hasMerchantReturnPolicy & shippingDetails để Google duyệt lại cảnh báo nhé.

Với website không dùng WordPress thì có fix lỗi hasMerchantReturnPolicy & shippingDetails được không?
Nếu bạn không dùng WordPress mà web bạn code hoàn toàn bằng tay thì bạn có thể fix lỗi hasMerchantReturnPolicy & shippingDetails bằng cách chèn code vào functions.php.
Bạn vào trong Cpanel -> Chọn File Manager -> Mở folder Public_ HTML rồi tìm file functions.php.
Khi này bạn sẽ dán nguyên đoạn snippet dưới đây vào xuống cuối file, sau dấu ?> (nếu có ?> thì tốt nhất xoá ?> đi, chỉ để PHP thuần).
Như vậy là ok nhé!
<?php
add_filter( 'rank_math/snippet/rich_snippet_product_entity', function( $entity ) {
if ( empty( $entity['offers'] ) ) {
return $entity;
}
$entity['offers']['hasMerchantReturnPolicy'] = [
'@type' => 'MerchantReturnPolicy',
'applicableCountry' => 'VN',
'returnPolicyCountry' => 'VN',
'returnPolicyCategory' => 'https://schema.org/MerchantReturnFiniteReturnWindow',
'merchantReturnDays' => 7,
'returnMethod' => 'https://schema.org/ReturnInStore',
'returnFees' => 'https://schema.org/FreeReturn',
'refundType' => 'https://schema.org/FullRefund',
];
$entity['offers']['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',
],
],
];
return $entity;
} );PHPVì sao có lỗi hasMerchantReturnPolicy & shippingDetails?
Hai lỗi hasMerchantReturnPolicy và shippingDetails đều là các cảnh báo (Warnings) phổ biến xuất hiện trong báo cáo dữ liệu có cấu trúc (Schema Markup) của Google Search Console, đặc biệt trên các trang sản phẩm sử dụng Schema Product và Offer.
Nguyên nhân gốc rễ là do Google đã cập nhật tiêu chuẩn của họ để khuyến khích các trang Thương mại điện tử cung cấp thông tin minh bạch hơn về vận chuyển và đổi/trả hàng.
1. Lỗi hasMerchantReturnPolicy hay Chính sách hoàn trả
Lỗi này xảy ra khi bạn chưa khai báo hoặc khai báo không đầy đủ thông tin về chính sách hoàn trả sản phẩm.
Nguyên nhân:
- Thiếu thuộc tính: Bạn đã triển khai Schema Product và Offer, nhưng trong đối tượng Offer, bạn thiếu hoàn toàn thuộc tính hasMerchantReturnPolicy.
- Thiếu chi tiết bắt buộc: Ngay cả khi đã thêm thuộc tính, đối tượng MerchantReturnPolicy bên trong đó lại thiếu các trường quan trọng mà Google yêu cầu để hiểu rõ chính sách, như:
- merchantReturnDays: Số ngày được phép trả hàng (ví dụ: 30).
- returnPolicyCategory: Phân loại chính sách (ví dụ: MerchantReturnFiniteReturnWindow).
- returnMethod: Phương thức trả hàng (ví dụ: ReturnByMail).
- applicableCountry: Quốc gia áp dụng chính sách (ví dụ: “VN”).
Tác động: Việc thiếu thông tin này sẽ hạn chế khả năng trang sản phẩm của bạn hiển thị các huy hiệu hoặc thông tin nổi bật liên quan đến chính sách trả hàng trong kết quả tìm kiếm Rich Results của Google.
2. Lỗi shippingDetails hay Thông tin chi tiết vận chuyển
Lỗi này xảy ra khi bạn chưa khai báo hoặc khai báo không đầy đủ thông tin về chi phí và thời gian vận chuyển.
Nguyên nhân:
- Thiếu thuộc tính: Tương tự, trong đối tượng Offer của sản phẩm, bạn thiếu hoàn toàn thuộc tính shippingDetails.
- Thiếu chi tiết bắt buộc: Đối tượng con OfferShippingDetails bên trong đó thiếu các thông tin quan trọng:
- shippingRate: Chi phí vận chuyển (kể cả khi miễn phí, phải khai báo với giá trị 0 và đơn vị tiền tệ).
- deliveryTime: Chi tiết thời gian giao hàng.
- shippingDestination: Khu vực áp dụng vận chuyển.
Tác động: Việc thiếu thông tin này ngăn cản Google hiển thị thông tin vận chuyển quan trọng ngay trên kết quả tìm kiếm (ví dụ: “Miễn phí vận chuyển” hoặc “Giao hàng trong 3-5 ngày”), làm giảm khả năng thu hút nhấp chuột từ khách hàng.
2 lỗi hasMerchantReturnPolicy & shippingDetails có phải là lỗi nghiêm trọng không?
Hai lỗi hasMerchantReturnPolicy và shippingDetails không phải là lỗi nghiêm trọng (Errors) mà chỉ là Cảnh báo (Warnings) trong Google Search Console.
Mặc dù không phải lỗi nghiêm trọng nhưng tốt nhất là bạn nên thêm vào trong website vì với website thương mại điện tử, cchính sách giao hàng và chính sách vận chuyển được đánh giá là 1 trong những Entity quan trọng nhất, giúp cải thiện được E-E-A-T và giúp SEO sản phẩm tốt hơn.
Nếu không thể thêm code vào website để fix 2 lỗi hasMerchantReturnPolicy & shippingDetails thì sao?
Nếu bạn không thể thêm code mà mình chia sẻ vào trong website để fix 2 lỗi này thì bạn BẮT BUỘC phải làm chuẩn 2 điều sau:
- Tạo 2 trang chính sách vận chuyển và chính sách đổi trả và găn link 2 trang này bên dưới footer. Trong 2 trang này bắt buộc bạn phải giải thích rõ ràng thông tin về chính sách vận chuyển và giao hàng của thương hiệu của bạn.
- Trên Google Merchant Center, bạn phải điền đủ thông tin về chính sách vận chuyển và chính sách đổi trả.


Kết luận
Theo quan điểm của mình, hasMerchantReturnPolicy & shippingDetails là 2 cảnh báo bạn nên giải quyết để cung cấp cho Google đầy đủ thông tin về chính sách vận chuyển và hoàn trả. Việc này giúp sản phẩm của bạn xuất hiện một cách chuyên nghiệp và hấp dẫn hơn trên kết quả tìm kiếm, từ đó tăng tỷ lệ nhấp chuột và chuyển đổi.